@azure/storage-blob-changefeed 12.0.0-alpha.20250407.1 → 12.0.0-alpha.20250516.2

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 (467) hide show
  1. package/README.md +82 -37
  2. package/{types/latest/storage-blob-changefeed/src → dist/browser}/AvroReaderFactory.d.ts +2 -2
  3. package/dist/browser/AvroReaderFactory.d.ts.map +1 -0
  4. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/AvroReaderFactory.js +1 -1
  5. package/dist/browser/AvroReaderFactory.js.map +1 -0
  6. package/{types/latest/storage-blob-changefeed/src → dist/browser}/BlobChangeFeedClient.d.ts +74 -56
  7. package/dist/browser/BlobChangeFeedClient.d.ts.map +1 -0
  8. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/BlobChangeFeedClient.js +52 -44
  9. package/dist/browser/BlobChangeFeedClient.js.map +1 -0
  10. package/{types/latest/storage-blob-changefeed/src → dist/browser}/ChangeFeed.d.ts +4 -4
  11. package/dist/browser/ChangeFeed.d.ts.map +1 -0
  12. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/ChangeFeed.js +2 -2
  13. package/dist/browser/ChangeFeed.js.map +1 -0
  14. package/{types/latest/storage-blob-changefeed/src → dist/browser}/ChangeFeedFactory.d.ts +3 -3
  15. package/dist/browser/ChangeFeedFactory.d.ts.map +1 -0
  16. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/ChangeFeedFactory.js +14 -11
  17. package/dist/browser/ChangeFeedFactory.js.map +1 -0
  18. package/{types/latest/storage-blob-changefeed/src → dist/browser}/Chunk.d.ts +2 -3
  19. package/dist/browser/Chunk.d.ts.map +1 -0
  20. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/Chunk.js +1 -1
  21. package/dist/browser/Chunk.js.map +1 -0
  22. package/{types/latest/storage-blob-changefeed/src → dist/browser}/ChunkFactory.d.ts +3 -3
  23. package/dist/browser/ChunkFactory.d.ts.map +1 -0
  24. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/ChunkFactory.js +3 -3
  25. package/dist/browser/ChunkFactory.js.map +1 -0
  26. package/{types/latest/storage-blob-changefeed/src → dist/browser}/LazyLoadingBlobStream.d.ts +2 -2
  27. package/dist/browser/LazyLoadingBlobStream.d.ts.map +1 -0
  28. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/LazyLoadingBlobStream.js +2 -2
  29. package/dist/browser/LazyLoadingBlobStream.js.map +1 -0
  30. package/{types/latest/storage-blob-changefeed/src → dist/browser}/LazyLoadingBlobStreamFactory.d.ts +2 -2
  31. package/dist/browser/LazyLoadingBlobStreamFactory.d.ts.map +1 -0
  32. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/LazyLoadingBlobStreamFactory.js +1 -1
  33. package/dist/browser/LazyLoadingBlobStreamFactory.js.map +1 -0
  34. package/{types/latest/storage-blob-changefeed/src → dist/browser}/Segment.d.ts +3 -3
  35. package/dist/browser/Segment.d.ts.map +1 -0
  36. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/Segment.js +1 -1
  37. package/dist/browser/Segment.js.map +1 -0
  38. package/{types/latest/storage-blob-changefeed/src → dist/browser}/SegmentFactory.d.ts +3 -3
  39. package/dist/browser/SegmentFactory.d.ts.map +1 -0
  40. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/SegmentFactory.js +5 -5
  41. package/dist/browser/SegmentFactory.js.map +1 -0
  42. package/{types/latest/storage-blob-changefeed/src → dist/browser}/Shard.d.ts +4 -4
  43. package/dist/browser/Shard.d.ts.map +1 -0
  44. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/Shard.js +1 -1
  45. package/dist/browser/Shard.js.map +1 -0
  46. package/{types/latest/storage-blob-changefeed/src → dist/browser}/ShardFactory.d.ts +3 -3
  47. package/dist/browser/ShardFactory.d.ts.map +1 -0
  48. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/ShardFactory.js +2 -2
  49. package/dist/browser/ShardFactory.js.map +1 -0
  50. package/dist/browser/index.d.ts +4 -0
  51. package/dist/browser/index.d.ts.map +1 -0
  52. package/dist/browser/index.js +6 -0
  53. package/dist/browser/index.js.map +1 -0
  54. package/dist/browser/log.d.ts.map +1 -0
  55. package/dist/browser/log.js.map +1 -0
  56. package/dist/browser/models/BlobChangeFeedEvent.d.ts.map +1 -0
  57. package/dist/browser/models/BlobChangeFeedEvent.js.map +1 -0
  58. package/dist/browser/models/ChangeFeedCursor.d.ts.map +1 -0
  59. package/dist/browser/models/ChangeFeedCursor.js.map +1 -0
  60. package/dist/browser/models/models.d.ts.map +1 -0
  61. package/dist/browser/models/models.js.map +1 -0
  62. package/dist/browser/package.json +3 -0
  63. package/dist/browser/utils/constants.d.ts.map +1 -0
  64. package/dist/browser/utils/constants.js.map +1 -0
  65. package/dist/browser/utils/tracing.d.ts.map +1 -0
  66. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/utils/tracing.js +1 -1
  67. package/dist/browser/utils/tracing.js.map +1 -0
  68. package/dist/browser/utils/utils.browser.d.ts.map +1 -0
  69. package/dist/browser/utils/utils.browser.js.map +1 -0
  70. package/{types/latest/storage-blob-changefeed/src → dist/browser}/utils/utils.common.d.ts +1 -1
  71. package/dist/browser/utils/utils.common.d.ts.map +1 -0
  72. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/utils/utils.common.js +2 -2
  73. package/dist/browser/utils/utils.common.js.map +1 -0
  74. package/{types/latest/storage-blob-changefeed/src → dist/browser}/utils/utils.node.d.ts +1 -1
  75. package/dist/browser/utils/utils.node.d.ts.map +1 -0
  76. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/utils/utils.node.js +1 -1
  77. package/dist/browser/utils/utils.node.js.map +1 -0
  78. package/dist/commonjs/AvroReaderFactory.d.ts +10 -0
  79. package/dist/commonjs/AvroReaderFactory.d.ts.map +1 -0
  80. package/dist/commonjs/AvroReaderFactory.js +21 -0
  81. package/dist/commonjs/AvroReaderFactory.js.map +1 -0
  82. package/dist/commonjs/BlobChangeFeedClient.d.ts +201 -0
  83. package/dist/commonjs/BlobChangeFeedClient.d.ts.map +1 -0
  84. package/dist/commonjs/BlobChangeFeedClient.js +239 -0
  85. package/dist/commonjs/BlobChangeFeedClient.js.map +1 -0
  86. package/dist/commonjs/ChangeFeed.d.ts +37 -0
  87. package/dist/commonjs/ChangeFeed.d.ts.map +1 -0
  88. package/dist/commonjs/ChangeFeed.js +97 -0
  89. package/dist/commonjs/ChangeFeed.js.map +1 -0
  90. package/dist/commonjs/ChangeFeedFactory.d.ts +13 -0
  91. package/dist/commonjs/ChangeFeedFactory.d.ts.map +1 -0
  92. package/dist/commonjs/ChangeFeedFactory.js +124 -0
  93. package/dist/commonjs/ChangeFeedFactory.js.map +1 -0
  94. package/dist/commonjs/Chunk.d.ts +27 -0
  95. package/dist/commonjs/Chunk.d.ts.map +1 -0
  96. package/dist/commonjs/Chunk.js +44 -0
  97. package/dist/commonjs/Chunk.js.map +1 -0
  98. package/dist/commonjs/ChunkFactory.d.ts +23 -0
  99. package/dist/commonjs/ChunkFactory.d.ts.map +1 -0
  100. package/dist/commonjs/ChunkFactory.js +34 -0
  101. package/dist/commonjs/ChunkFactory.js.map +1 -0
  102. package/dist/commonjs/LazyLoadingBlobStream.d.ts +46 -0
  103. package/dist/commonjs/LazyLoadingBlobStream.d.ts.map +1 -0
  104. package/dist/commonjs/LazyLoadingBlobStream.js +85 -0
  105. package/dist/commonjs/LazyLoadingBlobStream.js.map +1 -0
  106. package/dist/commonjs/LazyLoadingBlobStreamFactory.d.ts +7 -0
  107. package/dist/commonjs/LazyLoadingBlobStreamFactory.d.ts.map +1 -0
  108. package/dist/commonjs/LazyLoadingBlobStreamFactory.js +13 -0
  109. package/dist/commonjs/LazyLoadingBlobStreamFactory.js.map +1 -0
  110. package/dist/commonjs/Segment.d.ts +29 -0
  111. package/dist/commonjs/Segment.d.ts.map +1 -0
  112. package/dist/commonjs/Segment.js +64 -0
  113. package/dist/commonjs/Segment.js.map +1 -0
  114. package/dist/commonjs/SegmentFactory.d.ts +29 -0
  115. package/dist/commonjs/SegmentFactory.d.ts.map +1 -0
  116. package/dist/commonjs/SegmentFactory.js +50 -0
  117. package/dist/commonjs/SegmentFactory.js.map +1 -0
  118. package/dist/commonjs/Shard.d.ts +28 -0
  119. package/dist/commonjs/Shard.d.ts.map +1 -0
  120. package/dist/commonjs/Shard.js +45 -0
  121. package/dist/commonjs/Shard.js.map +1 -0
  122. package/dist/commonjs/ShardFactory.d.ts +21 -0
  123. package/dist/commonjs/ShardFactory.d.ts.map +1 -0
  124. package/dist/commonjs/ShardFactory.js +72 -0
  125. package/dist/commonjs/ShardFactory.js.map +1 -0
  126. package/dist/commonjs/index.d.ts +4 -0
  127. package/dist/commonjs/index.d.ts.map +1 -0
  128. package/dist/commonjs/index.js +9 -0
  129. package/dist/commonjs/index.js.map +1 -0
  130. package/dist/commonjs/log.d.ts +5 -0
  131. package/dist/commonjs/log.d.ts.map +1 -0
  132. package/dist/commonjs/log.js +11 -0
  133. package/dist/commonjs/log.js.map +1 -0
  134. package/dist/commonjs/models/BlobChangeFeedEvent.d.ts +233 -0
  135. package/dist/commonjs/models/BlobChangeFeedEvent.d.ts.map +1 -0
  136. package/dist/commonjs/models/BlobChangeFeedEvent.js +5 -0
  137. package/dist/commonjs/models/BlobChangeFeedEvent.js.map +1 -0
  138. package/dist/commonjs/models/ChangeFeedCursor.d.ts +17 -0
  139. package/dist/commonjs/models/ChangeFeedCursor.d.ts.map +1 -0
  140. package/dist/commonjs/models/ChangeFeedCursor.js +5 -0
  141. package/dist/commonjs/models/ChangeFeedCursor.js.map +1 -0
  142. package/dist/commonjs/models/models.d.ts +23 -0
  143. package/dist/commonjs/models/models.d.ts.map +1 -0
  144. package/dist/commonjs/models/models.js +5 -0
  145. package/dist/commonjs/models/models.js.map +1 -0
  146. package/dist/commonjs/package.json +3 -0
  147. package/{types/latest → dist/commonjs}/tsdoc-metadata.json +1 -1
  148. package/dist/commonjs/utils/constants.d.ts +9 -0
  149. package/dist/commonjs/utils/constants.d.ts.map +1 -0
  150. package/dist/commonjs/utils/constants.js +14 -0
  151. package/dist/commonjs/utils/constants.js.map +1 -0
  152. package/dist/commonjs/utils/tracing.d.ts +6 -0
  153. package/dist/commonjs/utils/tracing.d.ts.map +1 -0
  154. package/dist/commonjs/utils/tracing.js +17 -0
  155. package/dist/commonjs/utils/tracing.js.map +1 -0
  156. package/dist/commonjs/utils/utils.browser.d.ts +14 -0
  157. package/dist/commonjs/utils/utils.browser.d.ts.map +1 -0
  158. package/dist/commonjs/utils/utils.browser.js +34 -0
  159. package/dist/commonjs/utils/utils.browser.js.map +1 -0
  160. package/dist/commonjs/utils/utils.common.d.ts +37 -0
  161. package/dist/commonjs/utils/utils.common.d.ts.map +1 -0
  162. package/dist/commonjs/utils/utils.common.js +207 -0
  163. package/dist/commonjs/utils/utils.common.js.map +1 -0
  164. package/dist/commonjs/utils/utils.node.d.ts +14 -0
  165. package/dist/commonjs/utils/utils.node.d.ts.map +1 -0
  166. package/dist/commonjs/utils/utils.node.js +32 -0
  167. package/dist/commonjs/utils/utils.node.js.map +1 -0
  168. package/dist/esm/AvroReaderFactory.d.ts +10 -0
  169. package/dist/esm/AvroReaderFactory.d.ts.map +1 -0
  170. package/dist/esm/AvroReaderFactory.js +17 -0
  171. package/dist/esm/AvroReaderFactory.js.map +1 -0
  172. package/dist/esm/BlobChangeFeedClient.d.ts +201 -0
  173. package/dist/esm/BlobChangeFeedClient.d.ts.map +1 -0
  174. package/dist/esm/BlobChangeFeedClient.js +233 -0
  175. package/dist/esm/BlobChangeFeedClient.js.map +1 -0
  176. package/dist/esm/ChangeFeed.d.ts +37 -0
  177. package/dist/esm/ChangeFeed.d.ts.map +1 -0
  178. package/dist/esm/ChangeFeed.js +93 -0
  179. package/dist/esm/ChangeFeed.js.map +1 -0
  180. package/dist/esm/ChangeFeedFactory.d.ts +13 -0
  181. package/dist/esm/ChangeFeedFactory.d.ts.map +1 -0
  182. package/dist/esm/ChangeFeedFactory.js +120 -0
  183. package/dist/esm/ChangeFeedFactory.js.map +1 -0
  184. package/dist/esm/Chunk.d.ts +27 -0
  185. package/dist/esm/Chunk.d.ts.map +1 -0
  186. package/dist/esm/Chunk.js +40 -0
  187. package/dist/esm/Chunk.js.map +1 -0
  188. package/dist/esm/ChunkFactory.d.ts +23 -0
  189. package/dist/esm/ChunkFactory.d.ts.map +1 -0
  190. package/dist/esm/ChunkFactory.js +30 -0
  191. package/dist/esm/ChunkFactory.js.map +1 -0
  192. package/dist/esm/LazyLoadingBlobStream.d.ts +46 -0
  193. package/dist/esm/LazyLoadingBlobStream.d.ts.map +1 -0
  194. package/dist/esm/LazyLoadingBlobStream.js +81 -0
  195. package/dist/esm/LazyLoadingBlobStream.js.map +1 -0
  196. package/dist/esm/LazyLoadingBlobStreamFactory.d.ts +7 -0
  197. package/dist/esm/LazyLoadingBlobStreamFactory.d.ts.map +1 -0
  198. package/dist/esm/LazyLoadingBlobStreamFactory.js +9 -0
  199. package/dist/esm/LazyLoadingBlobStreamFactory.js.map +1 -0
  200. package/dist/esm/Segment.d.ts +29 -0
  201. package/dist/esm/Segment.d.ts.map +1 -0
  202. package/dist/esm/Segment.js +60 -0
  203. package/dist/esm/Segment.js.map +1 -0
  204. package/dist/esm/SegmentFactory.d.ts +29 -0
  205. package/dist/esm/SegmentFactory.d.ts.map +1 -0
  206. package/dist/esm/SegmentFactory.js +46 -0
  207. package/dist/esm/SegmentFactory.js.map +1 -0
  208. package/dist/esm/Shard.d.ts +28 -0
  209. package/dist/esm/Shard.d.ts.map +1 -0
  210. package/dist/esm/Shard.js +41 -0
  211. package/dist/esm/Shard.js.map +1 -0
  212. package/dist/esm/ShardFactory.d.ts +21 -0
  213. package/dist/esm/ShardFactory.d.ts.map +1 -0
  214. package/dist/esm/ShardFactory.js +68 -0
  215. package/dist/esm/ShardFactory.js.map +1 -0
  216. package/dist/esm/index.d.ts +4 -0
  217. package/dist/esm/index.d.ts.map +1 -0
  218. package/dist/esm/index.js +6 -0
  219. package/dist/esm/index.js.map +1 -0
  220. package/dist/esm/log.d.ts +5 -0
  221. package/dist/esm/log.d.ts.map +1 -0
  222. package/dist/esm/log.js +8 -0
  223. package/dist/esm/log.js.map +1 -0
  224. package/dist/esm/models/BlobChangeFeedEvent.d.ts +233 -0
  225. package/dist/esm/models/BlobChangeFeedEvent.d.ts.map +1 -0
  226. package/{dist-esm/storage-internal-avro/src/AvroReadable.js → dist/esm/models/BlobChangeFeedEvent.js} +2 -3
  227. package/dist/esm/models/BlobChangeFeedEvent.js.map +1 -0
  228. package/dist/esm/models/ChangeFeedCursor.d.ts +17 -0
  229. package/dist/esm/models/ChangeFeedCursor.d.ts.map +1 -0
  230. package/dist/esm/models/ChangeFeedCursor.js +4 -0
  231. package/dist/esm/models/ChangeFeedCursor.js.map +1 -0
  232. package/dist/esm/models/models.d.ts +23 -0
  233. package/dist/esm/models/models.d.ts.map +1 -0
  234. package/dist/esm/models/models.js +4 -0
  235. package/dist/esm/models/models.js.map +1 -0
  236. package/dist/esm/package.json +3 -0
  237. package/dist/esm/utils/constants.d.ts +9 -0
  238. package/dist/esm/utils/constants.d.ts.map +1 -0
  239. package/dist/esm/utils/constants.js +11 -0
  240. package/dist/esm/utils/constants.js.map +1 -0
  241. package/dist/esm/utils/tracing.d.ts +6 -0
  242. package/dist/esm/utils/tracing.d.ts.map +1 -0
  243. package/dist/esm/utils/tracing.js +14 -0
  244. package/dist/esm/utils/tracing.js.map +1 -0
  245. package/dist/esm/utils/utils.browser.d.ts +14 -0
  246. package/dist/esm/utils/utils.browser.d.ts.map +1 -0
  247. package/dist/esm/utils/utils.browser.js +29 -0
  248. package/dist/esm/utils/utils.browser.js.map +1 -0
  249. package/dist/esm/utils/utils.common.d.ts +37 -0
  250. package/dist/esm/utils/utils.common.d.ts.map +1 -0
  251. package/dist/esm/utils/utils.common.js +197 -0
  252. package/dist/esm/utils/utils.common.js.map +1 -0
  253. package/dist/esm/utils/utils.node.d.ts +14 -0
  254. package/dist/esm/utils/utils.node.d.ts.map +1 -0
  255. package/dist/esm/utils/utils.node.js +28 -0
  256. package/dist/esm/utils/utils.node.js.map +1 -0
  257. package/dist/react-native/AvroReaderFactory.d.ts +10 -0
  258. package/dist/react-native/AvroReaderFactory.d.ts.map +1 -0
  259. package/dist/react-native/AvroReaderFactory.js +17 -0
  260. package/dist/react-native/AvroReaderFactory.js.map +1 -0
  261. package/dist/react-native/BlobChangeFeedClient.d.ts +201 -0
  262. package/dist/react-native/BlobChangeFeedClient.d.ts.map +1 -0
  263. package/dist/react-native/BlobChangeFeedClient.js +233 -0
  264. package/dist/react-native/BlobChangeFeedClient.js.map +1 -0
  265. package/dist/react-native/ChangeFeed.d.ts +37 -0
  266. package/dist/react-native/ChangeFeed.d.ts.map +1 -0
  267. package/dist/react-native/ChangeFeed.js +93 -0
  268. package/dist/react-native/ChangeFeed.js.map +1 -0
  269. package/dist/react-native/ChangeFeedFactory.d.ts +13 -0
  270. package/dist/react-native/ChangeFeedFactory.d.ts.map +1 -0
  271. package/dist/react-native/ChangeFeedFactory.js +120 -0
  272. package/dist/react-native/ChangeFeedFactory.js.map +1 -0
  273. package/dist/react-native/Chunk.d.ts +27 -0
  274. package/dist/react-native/Chunk.d.ts.map +1 -0
  275. package/dist/react-native/Chunk.js +40 -0
  276. package/dist/react-native/Chunk.js.map +1 -0
  277. package/dist/react-native/ChunkFactory.d.ts +23 -0
  278. package/dist/react-native/ChunkFactory.d.ts.map +1 -0
  279. package/dist/react-native/ChunkFactory.js +30 -0
  280. package/dist/react-native/ChunkFactory.js.map +1 -0
  281. package/dist/react-native/LazyLoadingBlobStream.d.ts +46 -0
  282. package/dist/react-native/LazyLoadingBlobStream.d.ts.map +1 -0
  283. package/dist/react-native/LazyLoadingBlobStream.js +81 -0
  284. package/dist/react-native/LazyLoadingBlobStream.js.map +1 -0
  285. package/dist/react-native/LazyLoadingBlobStreamFactory.d.ts +7 -0
  286. package/dist/react-native/LazyLoadingBlobStreamFactory.d.ts.map +1 -0
  287. package/dist/react-native/LazyLoadingBlobStreamFactory.js +9 -0
  288. package/dist/react-native/LazyLoadingBlobStreamFactory.js.map +1 -0
  289. package/dist/react-native/Segment.d.ts +29 -0
  290. package/dist/react-native/Segment.d.ts.map +1 -0
  291. package/dist/react-native/Segment.js +60 -0
  292. package/dist/react-native/Segment.js.map +1 -0
  293. package/dist/react-native/SegmentFactory.d.ts +29 -0
  294. package/dist/react-native/SegmentFactory.d.ts.map +1 -0
  295. package/dist/react-native/SegmentFactory.js +46 -0
  296. package/dist/react-native/SegmentFactory.js.map +1 -0
  297. package/dist/react-native/Shard.d.ts +28 -0
  298. package/dist/react-native/Shard.d.ts.map +1 -0
  299. package/dist/react-native/Shard.js +41 -0
  300. package/dist/react-native/Shard.js.map +1 -0
  301. package/dist/react-native/ShardFactory.d.ts +21 -0
  302. package/dist/react-native/ShardFactory.d.ts.map +1 -0
  303. package/dist/react-native/ShardFactory.js +68 -0
  304. package/dist/react-native/ShardFactory.js.map +1 -0
  305. package/dist/react-native/index.d.ts +4 -0
  306. package/dist/react-native/index.d.ts.map +1 -0
  307. package/dist/react-native/index.js +6 -0
  308. package/dist/react-native/index.js.map +1 -0
  309. package/dist/react-native/log.d.ts +5 -0
  310. package/dist/react-native/log.d.ts.map +1 -0
  311. package/dist/react-native/log.js +8 -0
  312. package/dist/react-native/log.js.map +1 -0
  313. package/dist/react-native/models/BlobChangeFeedEvent.d.ts +233 -0
  314. package/dist/react-native/models/BlobChangeFeedEvent.d.ts.map +1 -0
  315. package/dist/react-native/models/BlobChangeFeedEvent.js +4 -0
  316. package/dist/react-native/models/BlobChangeFeedEvent.js.map +1 -0
  317. package/dist/react-native/models/ChangeFeedCursor.d.ts +17 -0
  318. package/dist/react-native/models/ChangeFeedCursor.d.ts.map +1 -0
  319. package/dist/react-native/models/ChangeFeedCursor.js +4 -0
  320. package/dist/react-native/models/ChangeFeedCursor.js.map +1 -0
  321. package/dist/react-native/models/models.d.ts +23 -0
  322. package/dist/react-native/models/models.d.ts.map +1 -0
  323. package/dist/react-native/models/models.js +4 -0
  324. package/dist/react-native/models/models.js.map +1 -0
  325. package/dist/react-native/package.json +3 -0
  326. package/dist/react-native/utils/constants.d.ts +9 -0
  327. package/dist/react-native/utils/constants.d.ts.map +1 -0
  328. package/dist/react-native/utils/constants.js +11 -0
  329. package/dist/react-native/utils/constants.js.map +1 -0
  330. package/dist/react-native/utils/tracing.d.ts +6 -0
  331. package/dist/react-native/utils/tracing.d.ts.map +1 -0
  332. package/dist/react-native/utils/tracing.js +14 -0
  333. package/dist/react-native/utils/tracing.js.map +1 -0
  334. package/dist/react-native/utils/utils.browser.d.ts +14 -0
  335. package/dist/react-native/utils/utils.browser.d.ts.map +1 -0
  336. package/dist/react-native/utils/utils.browser.js +29 -0
  337. package/dist/react-native/utils/utils.browser.js.map +1 -0
  338. package/dist/react-native/utils/utils.common.d.ts +37 -0
  339. package/dist/react-native/utils/utils.common.d.ts.map +1 -0
  340. package/dist/react-native/utils/utils.common.js +197 -0
  341. package/dist/react-native/utils/utils.common.js.map +1 -0
  342. package/dist/react-native/utils/utils.node.d.ts +14 -0
  343. package/dist/react-native/utils/utils.node.d.ts.map +1 -0
  344. package/dist/react-native/utils/utils.node.js +28 -0
  345. package/dist/react-native/utils/utils.node.js.map +1 -0
  346. package/package.json +69 -68
  347. package/dist/index.js +0 -1577
  348. package/dist/index.js.map +0 -1
  349. package/dist-esm/storage-blob-changefeed/src/AvroReaderFactory.js.map +0 -1
  350. package/dist-esm/storage-blob-changefeed/src/BlobChangeFeedClient.js.map +0 -1
  351. package/dist-esm/storage-blob-changefeed/src/ChangeFeed.js.map +0 -1
  352. package/dist-esm/storage-blob-changefeed/src/ChangeFeedFactory.js.map +0 -1
  353. package/dist-esm/storage-blob-changefeed/src/Chunk.js.map +0 -1
  354. package/dist-esm/storage-blob-changefeed/src/ChunkFactory.js.map +0 -1
  355. package/dist-esm/storage-blob-changefeed/src/LazyLoadingBlobStream.js.map +0 -1
  356. package/dist-esm/storage-blob-changefeed/src/LazyLoadingBlobStreamFactory.js.map +0 -1
  357. package/dist-esm/storage-blob-changefeed/src/Segment.js.map +0 -1
  358. package/dist-esm/storage-blob-changefeed/src/SegmentFactory.js.map +0 -1
  359. package/dist-esm/storage-blob-changefeed/src/Shard.js.map +0 -1
  360. package/dist-esm/storage-blob-changefeed/src/ShardFactory.js.map +0 -1
  361. package/dist-esm/storage-blob-changefeed/src/index.js +0 -6
  362. package/dist-esm/storage-blob-changefeed/src/index.js.map +0 -1
  363. package/dist-esm/storage-blob-changefeed/src/log.js.map +0 -1
  364. package/dist-esm/storage-blob-changefeed/src/models/BlobChangeFeedEvent.js.map +0 -1
  365. package/dist-esm/storage-blob-changefeed/src/models/ChangeFeedCursor.js.map +0 -1
  366. package/dist-esm/storage-blob-changefeed/src/models/models.js.map +0 -1
  367. package/dist-esm/storage-blob-changefeed/src/utils/constants.js.map +0 -1
  368. package/dist-esm/storage-blob-changefeed/src/utils/tracing.js.map +0 -1
  369. package/dist-esm/storage-blob-changefeed/src/utils/utils.browser.js.map +0 -1
  370. package/dist-esm/storage-blob-changefeed/src/utils/utils.common.js.map +0 -1
  371. package/dist-esm/storage-blob-changefeed/src/utils/utils.node.js.map +0 -1
  372. package/dist-esm/storage-internal-avro/src/AvroConstants.js +0 -7
  373. package/dist-esm/storage-internal-avro/src/AvroConstants.js.map +0 -1
  374. package/dist-esm/storage-internal-avro/src/AvroParser.js +0 -317
  375. package/dist-esm/storage-internal-avro/src/AvroParser.js.map +0 -1
  376. package/dist-esm/storage-internal-avro/src/AvroReadable.js.map +0 -1
  377. package/dist-esm/storage-internal-avro/src/AvroReadableFromBlob.js +0 -47
  378. package/dist-esm/storage-internal-avro/src/AvroReadableFromBlob.js.map +0 -1
  379. package/dist-esm/storage-internal-avro/src/AvroReadableFromStream.js +0 -84
  380. package/dist-esm/storage-internal-avro/src/AvroReadableFromStream.js.map +0 -1
  381. package/dist-esm/storage-internal-avro/src/AvroReader.js +0 -106
  382. package/dist-esm/storage-internal-avro/src/AvroReader.js.map +0 -1
  383. package/dist-esm/storage-internal-avro/src/index.browser.js +0 -6
  384. package/dist-esm/storage-internal-avro/src/index.browser.js.map +0 -1
  385. package/dist-esm/storage-internal-avro/src/index.js +0 -6
  386. package/dist-esm/storage-internal-avro/src/index.js.map +0 -1
  387. package/dist-esm/storage-internal-avro/src/utils/utils.common.js +0 -16
  388. package/dist-esm/storage-internal-avro/src/utils/utils.common.js.map +0 -1
  389. package/types/latest/storage-blob-changefeed/samples-dev/blobChangeFeedClient.d.ts +0 -2
  390. package/types/latest/storage-blob-changefeed/samples-dev/blobChangeFeedClient.d.ts.map +0 -1
  391. package/types/latest/storage-blob-changefeed/samples-dev/resumeListChanges.d.ts +0 -2
  392. package/types/latest/storage-blob-changefeed/samples-dev/resumeListChanges.d.ts.map +0 -1
  393. package/types/latest/storage-blob-changefeed/src/AvroReaderFactory.d.ts.map +0 -1
  394. package/types/latest/storage-blob-changefeed/src/BlobChangeFeedClient.d.ts.map +0 -1
  395. package/types/latest/storage-blob-changefeed/src/ChangeFeed.d.ts.map +0 -1
  396. package/types/latest/storage-blob-changefeed/src/ChangeFeedFactory.d.ts.map +0 -1
  397. package/types/latest/storage-blob-changefeed/src/Chunk.d.ts.map +0 -1
  398. package/types/latest/storage-blob-changefeed/src/ChunkFactory.d.ts.map +0 -1
  399. package/types/latest/storage-blob-changefeed/src/LazyLoadingBlobStream.d.ts.map +0 -1
  400. package/types/latest/storage-blob-changefeed/src/LazyLoadingBlobStreamFactory.d.ts.map +0 -1
  401. package/types/latest/storage-blob-changefeed/src/Segment.d.ts.map +0 -1
  402. package/types/latest/storage-blob-changefeed/src/SegmentFactory.d.ts.map +0 -1
  403. package/types/latest/storage-blob-changefeed/src/Shard.d.ts.map +0 -1
  404. package/types/latest/storage-blob-changefeed/src/ShardFactory.d.ts.map +0 -1
  405. package/types/latest/storage-blob-changefeed/src/index.d.ts +0 -4
  406. package/types/latest/storage-blob-changefeed/src/index.d.ts.map +0 -1
  407. package/types/latest/storage-blob-changefeed/src/log.d.ts.map +0 -1
  408. package/types/latest/storage-blob-changefeed/src/models/BlobChangeFeedEvent.d.ts.map +0 -1
  409. package/types/latest/storage-blob-changefeed/src/models/ChangeFeedCursor.d.ts.map +0 -1
  410. package/types/latest/storage-blob-changefeed/src/models/models.d.ts.map +0 -1
  411. package/types/latest/storage-blob-changefeed/src/utils/constants.d.ts.map +0 -1
  412. package/types/latest/storage-blob-changefeed/src/utils/tracing.d.ts.map +0 -1
  413. package/types/latest/storage-blob-changefeed/src/utils/utils.browser.d.ts.map +0 -1
  414. package/types/latest/storage-blob-changefeed/src/utils/utils.common.d.ts.map +0 -1
  415. package/types/latest/storage-blob-changefeed/src/utils/utils.node.d.ts.map +0 -1
  416. package/types/latest/storage-blob-changefeed/test/blobchangefeedclient.spec.d.ts +0 -2
  417. package/types/latest/storage-blob-changefeed/test/blobchangefeedclient.spec.d.ts.map +0 -1
  418. package/types/latest/storage-blob-changefeed/test/changefeed.spec.d.ts +0 -2
  419. package/types/latest/storage-blob-changefeed/test/changefeed.spec.d.ts.map +0 -1
  420. package/types/latest/storage-blob-changefeed/test/chunk.spec.d.ts +0 -2
  421. package/types/latest/storage-blob-changefeed/test/chunk.spec.d.ts.map +0 -1
  422. package/types/latest/storage-blob-changefeed/test/segment.spec.d.ts +0 -2
  423. package/types/latest/storage-blob-changefeed/test/segment.spec.d.ts.map +0 -1
  424. package/types/latest/storage-blob-changefeed/test/shard.spec.d.ts +0 -2
  425. package/types/latest/storage-blob-changefeed/test/shard.spec.d.ts.map +0 -1
  426. package/types/latest/storage-blob-changefeed/test/utils/index.d.ts +0 -15
  427. package/types/latest/storage-blob-changefeed/test/utils/index.d.ts.map +0 -1
  428. package/types/latest/storage-blob-changefeed/test/utils/testutils.common.d.ts +0 -67
  429. package/types/latest/storage-blob-changefeed/test/utils/testutils.common.d.ts.map +0 -1
  430. package/types/latest/storage-blob-changefeed.d.ts +0 -453
  431. package/types/latest/storage-internal-avro/src/AvroConstants.d.ts +0 -5
  432. package/types/latest/storage-internal-avro/src/AvroConstants.d.ts.map +0 -1
  433. package/types/latest/storage-internal-avro/src/AvroParser.d.ts +0 -57
  434. package/types/latest/storage-internal-avro/src/AvroParser.d.ts.map +0 -1
  435. package/types/latest/storage-internal-avro/src/AvroReadable.d.ts +0 -16
  436. package/types/latest/storage-internal-avro/src/AvroReadable.d.ts.map +0 -1
  437. package/types/latest/storage-internal-avro/src/AvroReadableFromBlob.d.ts +0 -10
  438. package/types/latest/storage-internal-avro/src/AvroReadableFromBlob.d.ts.map +0 -1
  439. package/types/latest/storage-internal-avro/src/AvroReadableFromStream.d.ts +0 -11
  440. package/types/latest/storage-internal-avro/src/AvroReadableFromStream.d.ts.map +0 -1
  441. package/types/latest/storage-internal-avro/src/AvroReader.d.ts +0 -32
  442. package/types/latest/storage-internal-avro/src/AvroReader.d.ts.map +0 -1
  443. package/types/latest/storage-internal-avro/src/index.browser.d.ts +0 -4
  444. package/types/latest/storage-internal-avro/src/index.browser.d.ts.map +0 -1
  445. package/types/latest/storage-internal-avro/src/index.d.ts +0 -4
  446. package/types/latest/storage-internal-avro/src/index.d.ts.map +0 -1
  447. package/types/latest/storage-internal-avro/src/utils/utils.common.d.ts +0 -6
  448. package/types/latest/storage-internal-avro/src/utils/utils.common.d.ts.map +0 -1
  449. package/types/latest/storage-internal-avro/test/browser/avroreadable.spec.d.ts +0 -2
  450. package/types/latest/storage-internal-avro/test/browser/avroreadable.spec.d.ts.map +0 -1
  451. package/types/latest/storage-internal-avro/test/node/avroreadable.spec.d.ts +0 -2
  452. package/types/latest/storage-internal-avro/test/node/avroreadable.spec.d.ts.map +0 -1
  453. package/types/latest/storage-internal-avro/test/node/avroreader.spec.d.ts +0 -2
  454. package/types/latest/storage-internal-avro/test/node/avroreader.spec.d.ts.map +0 -1
  455. /package/{types/latest/storage-blob-changefeed/src → dist/browser}/log.d.ts +0 -0
  456. /package/{dist-esm/storage-blob-changefeed/src → dist/browser}/log.js +0 -0
  457. /package/{types/latest/storage-blob-changefeed/src → dist/browser}/models/BlobChangeFeedEvent.d.ts +0 -0
  458. /package/{dist-esm/storage-blob-changefeed/src → dist/browser}/models/BlobChangeFeedEvent.js +0 -0
  459. /package/{types/latest/storage-blob-changefeed/src → dist/browser}/models/ChangeFeedCursor.d.ts +0 -0
  460. /package/{dist-esm/storage-blob-changefeed/src → dist/browser}/models/ChangeFeedCursor.js +0 -0
  461. /package/{types/latest/storage-blob-changefeed/src → dist/browser}/models/models.d.ts +0 -0
  462. /package/{dist-esm/storage-blob-changefeed/src → dist/browser}/models/models.js +0 -0
  463. /package/{types/latest/storage-blob-changefeed/src → dist/browser}/utils/constants.d.ts +0 -0
  464. /package/{dist-esm/storage-blob-changefeed/src → dist/browser}/utils/constants.js +0 -0
  465. /package/{types/latest/storage-blob-changefeed/src → dist/browser}/utils/tracing.d.ts +0 -0
  466. /package/{types/latest/storage-blob-changefeed/src → dist/browser}/utils/utils.browser.d.ts +0 -0
  467. /package/{dist-esm/storage-blob-changefeed/src → dist/browser}/utils/utils.browser.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LazyLoadingBlobStreamFactory.js","sourceRoot":"","sources":["../../src/LazyLoadingBlobStreamFactory.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAIlC,yEAAmE;AAEnE,MAAa,4BAA4B;IAChC,MAAM,CACX,UAAsB,EACtB,MAAc,EACd,SAAiB,EACjB,OAAsC;QAEtC,OAAO,IAAI,gDAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;CACF;AATD,oEASC","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 @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"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.Segment = void 0;
6
+ const tracing_js_1 = require("./utils/tracing.js");
7
+ class Segment {
8
+ get dateTime() {
9
+ return this._dateTime;
10
+ }
11
+ constructor(shards, shardIndex, dateTime, manifestPath) {
12
+ this.manifestPath = manifestPath;
13
+ this.shards = shards;
14
+ this.shardIndex = shardIndex;
15
+ this._dateTime = dateTime;
16
+ this.shardDone = Array(shards.length).fill(false);
17
+ this.shardDoneCount = 0;
18
+ }
19
+ hasNext() {
20
+ return this.shards.length > this.shardDoneCount;
21
+ }
22
+ async getChange(options = {}) {
23
+ return tracing_js_1.tracingClient.withSpan("Segment-getChange", options, async (updatedOptions) => {
24
+ if (this.shardIndex >= this.shards.length || this.shardIndex < 0) {
25
+ throw new Error("shardIndex invalid.");
26
+ }
27
+ let event = undefined;
28
+ while (event === undefined && this.hasNext()) {
29
+ if (this.shardDone[this.shardIndex]) {
30
+ this.shardIndex = (this.shardIndex + 1) % this.shards.length; // find next available shard
31
+ continue;
32
+ }
33
+ const currentShard = this.shards[this.shardIndex];
34
+ event = await currentShard.getChange({
35
+ abortSignal: options.abortSignal,
36
+ tracingOptions: updatedOptions.tracingOptions,
37
+ });
38
+ if (!currentShard.hasNext()) {
39
+ this.shardDone[this.shardIndex] = true;
40
+ this.shardDoneCount++;
41
+ }
42
+ // Round robin with shards
43
+ this.shardIndex = (this.shardIndex + 1) % this.shards.length;
44
+ }
45
+ return event;
46
+ });
47
+ }
48
+ getCursor() {
49
+ const shardCursors = [];
50
+ for (const shard of this.shards) {
51
+ const shardCursor = shard.getCursor();
52
+ if (shardCursor) {
53
+ shardCursors.push(shardCursor);
54
+ }
55
+ }
56
+ return {
57
+ SegmentPath: this.manifestPath,
58
+ ShardCursors: shardCursors,
59
+ CurrentShardPath: this.shards[this.shardIndex].shardPath,
60
+ };
61
+ }
62
+ }
63
+ exports.Segment = Segment;
64
+ //# sourceMappingURL=Segment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Segment.js","sourceRoot":"","sources":["../../src/Segment.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAOlC,mDAAmD;AAanD,MAAa,OAAO;IAYlB,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,YACE,MAAe,EACf,UAAkB,EAClB,QAAc,EACG,YAAoB;QAApB,iBAAY,GAAZ,YAAY,CAAQ;QAErC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IAC1B,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC;IAClD,CAAC;IAEM,KAAK,CAAC,SAAS,CACpB,UAAmC,EAAE;QAErC,OAAO,0BAAa,CAAC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;YACnF,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;gBACjE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACzC,CAAC;YAED,IAAI,KAAK,GAAoC,SAAS,CAAC;YACvD,OAAO,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC7C,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;oBACpC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,4BAA4B;oBAC1F,SAAS;gBACX,CAAC;gBAED,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAClD,KAAK,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC;oBACnC,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,cAAc,EAAE,cAAc,CAAC,cAAc;iBAC9C,CAAC,CAAC;gBAEH,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;oBAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;oBACvC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACxB,CAAC;gBACD,0BAA0B;gBAC1B,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAC/D,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,SAAS;QACd,MAAM,YAAY,GAAkB,EAAE,CAAC;QACvC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,WAAW,EAAE,CAAC;gBAChB,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,YAAY,EAAE,YAAY;YAC1B,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS;SACzD,CAAC;IACJ,CAAC;CACF;AAjFD,0BAiFC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { BlobChangeFeedEvent } from \"./models/BlobChangeFeedEvent.js\";\nimport type { Shard } from \"./Shard.js\";\nimport type { SegmentCursor, ShardCursor } from \"./models/ChangeFeedCursor.js\";\nimport type { CommonOptions } from \"@azure/storage-blob\";\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { tracingClient } from \"./utils/tracing.js\";\n\n/**\n * Options to configure {@link Segment.getChange} operation.\n */\nexport interface SegmentGetChangeOptions 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 Segment {\n private readonly shards: Shard[];\n\n // Track shards that we have finished reading from.\n private shardDone: boolean[];\n private shardDoneCount: number;\n\n private shardIndex: number;\n\n // Assuming the dateTime of segments is rounded to hour. If not, our logic for fetching\n // change events between a time range would be incorrect.\n private _dateTime: Date;\n public get dateTime(): Date {\n return this._dateTime;\n }\n\n constructor(\n shards: Shard[],\n shardIndex: number,\n dateTime: Date,\n private readonly manifestPath: string,\n ) {\n this.shards = shards;\n this.shardIndex = shardIndex;\n this._dateTime = dateTime;\n\n this.shardDone = Array(shards.length).fill(false);\n this.shardDoneCount = 0;\n }\n\n public hasNext(): boolean {\n return this.shards.length > this.shardDoneCount;\n }\n\n public async getChange(\n options: SegmentGetChangeOptions = {},\n ): Promise<BlobChangeFeedEvent | undefined> {\n return tracingClient.withSpan(\"Segment-getChange\", options, async (updatedOptions) => {\n if (this.shardIndex >= this.shards.length || this.shardIndex < 0) {\n throw new Error(\"shardIndex invalid.\");\n }\n\n let event: BlobChangeFeedEvent | undefined = undefined;\n while (event === undefined && this.hasNext()) {\n if (this.shardDone[this.shardIndex]) {\n this.shardIndex = (this.shardIndex + 1) % this.shards.length; // find next available shard\n continue;\n }\n\n const currentShard = this.shards[this.shardIndex];\n event = await currentShard.getChange({\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n });\n\n if (!currentShard.hasNext()) {\n this.shardDone[this.shardIndex] = true;\n this.shardDoneCount++;\n }\n // Round robin with shards\n this.shardIndex = (this.shardIndex + 1) % this.shards.length;\n }\n return event;\n });\n }\n\n public getCursor(): SegmentCursor {\n const shardCursors: ShardCursor[] = [];\n for (const shard of this.shards) {\n const shardCursor = shard.getCursor();\n if (shardCursor) {\n shardCursors.push(shardCursor);\n }\n }\n\n return {\n SegmentPath: this.manifestPath,\n ShardCursors: shardCursors,\n CurrentShardPath: this.shards[this.shardIndex].shardPath,\n };\n }\n}\n"]}
@@ -0,0 +1,29 @@
1
+ import type { ShardFactory } from "./ShardFactory.js";
2
+ import type { ContainerClient, CommonOptions } from "@azure/storage-blob";
3
+ import { Segment } from "./Segment.js";
4
+ import type { SegmentCursor } from "./models/ChangeFeedCursor.js";
5
+ import type { AbortSignalLike } from "@azure/abort-controller";
6
+ export interface SegmentManifest {
7
+ version?: number;
8
+ begin?: Date;
9
+ intervalSecs?: number;
10
+ status: string;
11
+ config?: any;
12
+ chunkFilePaths: string[];
13
+ }
14
+ /**
15
+ * Options to configure {@link SegmentFactory.create} operation.
16
+ */
17
+ export interface CreateSegmentOptions extends CommonOptions {
18
+ /**
19
+ * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
20
+ * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
21
+ */
22
+ abortSignal?: AbortSignalLike;
23
+ }
24
+ export declare class SegmentFactory {
25
+ private readonly shardFactory;
26
+ constructor(shardFactory: ShardFactory);
27
+ create(containerClient: ContainerClient, manifestPath: string, cursor?: SegmentCursor, options?: CreateSegmentOptions): Promise<Segment>;
28
+ }
29
+ //# sourceMappingURL=SegmentFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SegmentFactory.d.ts","sourceRoot":"","sources":["../../src/SegmentFactory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAG1E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGlE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD;;;OAGG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;gBAEhC,YAAY,EAAE,YAAY;IAIzB,MAAM,CACjB,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,aAAa,EACtB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,OAAO,CAAC;CA4CpB"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.SegmentFactory = void 0;
6
+ const constants_js_1 = require("./utils/constants.js");
7
+ const Segment_js_1 = require("./Segment.js");
8
+ const utils_node_js_1 = require("./utils/utils.node.js");
9
+ const utils_common_js_1 = require("./utils/utils.common.js");
10
+ const tracing_js_1 = require("./utils/tracing.js");
11
+ class SegmentFactory {
12
+ constructor(shardFactory) {
13
+ this.shardFactory = shardFactory;
14
+ }
15
+ async create(containerClient, manifestPath, cursor, options = {}) {
16
+ return tracing_js_1.tracingClient.withSpan("SegmentFactory-create", options, async (updatedOptions) => {
17
+ const shards = [];
18
+ const dateTime = (0, utils_common_js_1.parseDateFromSegmentPath)(manifestPath);
19
+ const blobClient = containerClient.getBlobClient(manifestPath);
20
+ const blobDownloadRes = await blobClient.download(undefined, undefined, {
21
+ abortSignal: options.abortSignal,
22
+ tracingOptions: updatedOptions.tracingOptions,
23
+ });
24
+ const blobContent = await (0, utils_node_js_1.bodyToString)(blobDownloadRes);
25
+ const segmentManifest = JSON.parse(blobContent);
26
+ const containerPrefixLength = constants_js_1.CHANGE_FEED_CONTAINER_NAME.length + 1; // "$blobchangefeed/"
27
+ for (const shardPath of segmentManifest.chunkFilePaths) {
28
+ const shardPathSubStr = shardPath.substring(containerPrefixLength);
29
+ const shardCursor = cursor === null || cursor === void 0 ? void 0 : cursor.ShardCursors.find((x) => x.CurrentChunkPath.startsWith(shardPathSubStr));
30
+ const shard = await this.shardFactory.create(containerClient, shardPathSubStr, shardCursor, {
31
+ abortSignal: options.abortSignal,
32
+ tracingOptions: updatedOptions.tracingOptions,
33
+ });
34
+ if (shard.hasNext()) {
35
+ shards.push(shard);
36
+ }
37
+ }
38
+ let shardIndex = 0;
39
+ if (cursor === null || cursor === void 0 ? void 0 : cursor.CurrentShardPath) {
40
+ shardIndex = shards.findIndex((s) => s.shardPath === (cursor === null || cursor === void 0 ? void 0 : cursor.CurrentShardPath));
41
+ if (shardIndex === -1) {
42
+ shardIndex = 0;
43
+ }
44
+ }
45
+ return new Segment_js_1.Segment(shards, shardIndex, dateTime, manifestPath);
46
+ });
47
+ }
48
+ }
49
+ exports.SegmentFactory = SegmentFactory;
50
+ //# sourceMappingURL=SegmentFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SegmentFactory.js","sourceRoot":"","sources":["../../src/SegmentFactory.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAIlC,uDAAkE;AAElE,6CAAuC;AAEvC,yDAAqD;AACrD,6DAAmE;AAEnE,mDAAmD;AAsBnD,MAAa,cAAc;IAGzB,YAAY,YAA0B;QACpC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,eAAgC,EAChC,YAAoB,EACpB,MAAsB,EACtB,UAAgC,EAAE;QAElC,OAAO,0BAAa,CAAC,QAAQ,CAAC,uBAAuB,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;YACvF,MAAM,MAAM,GAAY,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAS,IAAA,0CAAwB,EAAC,YAAY,CAAC,CAAC;YAE9D,MAAM,UAAU,GAAG,eAAe,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YAC/D,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE;gBACtE,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,cAAc,EAAE,cAAc,CAAC,cAAc;aAC9C,CAAC,CAAC;YACH,MAAM,WAAW,GAAW,MAAM,IAAA,4BAAY,EAAC,eAAe,CAAC,CAAC;YAEhE,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAoB,CAAC;YAEnE,MAAM,qBAAqB,GAAG,yCAA0B,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,qBAAqB;YAC1F,KAAK,MAAM,SAAS,IAAI,eAAe,CAAC,cAAc,EAAE,CAAC;gBACvD,MAAM,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;gBACnE,MAAM,WAAW,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAClD,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,eAAe,CAAC,CAC/C,CAAC;gBACF,MAAM,KAAK,GAAU,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CACjD,eAAe,EACf,eAAe,EACf,WAAW,EACX;oBACE,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,cAAc,EAAE,cAAc,CAAC,cAAc;iBAC9C,CACF,CAAC;gBACF,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;oBACpB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;YAED,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,EAAE,CAAC;gBAC7B,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,MAAK,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,CAAA,CAAC,CAAC;gBAC/E,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;oBACtB,UAAU,GAAG,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;YACD,OAAO,IAAI,oBAAO,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAxDD,wCAwDC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ShardFactory } from \"./ShardFactory.js\";\nimport type { ContainerClient, CommonOptions } from \"@azure/storage-blob\";\nimport { CHANGE_FEED_CONTAINER_NAME } from \"./utils/constants.js\";\nimport type { Shard } from \"./Shard.js\";\nimport { Segment } from \"./Segment.js\";\nimport type { SegmentCursor } from \"./models/ChangeFeedCursor.js\";\nimport { bodyToString } from \"./utils/utils.node.js\";\nimport { parseDateFromSegmentPath } from \"./utils/utils.common.js\";\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { tracingClient } from \"./utils/tracing.js\";\n\nexport interface SegmentManifest {\n version?: number;\n begin?: Date;\n intervalSecs?: number;\n status: string;\n config?: any;\n chunkFilePaths: string[];\n}\n\n/**\n * Options to configure {@link SegmentFactory.create} operation.\n */\nexport interface CreateSegmentOptions 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 SegmentFactory {\n private readonly shardFactory: ShardFactory;\n\n constructor(shardFactory: ShardFactory) {\n this.shardFactory = shardFactory;\n }\n\n public async create(\n containerClient: ContainerClient,\n manifestPath: string,\n cursor?: SegmentCursor,\n options: CreateSegmentOptions = {},\n ): Promise<Segment> {\n return tracingClient.withSpan(\"SegmentFactory-create\", options, async (updatedOptions) => {\n const shards: Shard[] = [];\n const dateTime: Date = parseDateFromSegmentPath(manifestPath);\n\n const blobClient = containerClient.getBlobClient(manifestPath);\n const blobDownloadRes = await blobClient.download(undefined, undefined, {\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n });\n const blobContent: string = await bodyToString(blobDownloadRes);\n\n const segmentManifest = JSON.parse(blobContent) as SegmentManifest;\n\n const containerPrefixLength = CHANGE_FEED_CONTAINER_NAME.length + 1; // \"$blobchangefeed/\"\n for (const shardPath of segmentManifest.chunkFilePaths) {\n const shardPathSubStr = shardPath.substring(containerPrefixLength);\n const shardCursor = cursor?.ShardCursors.find((x) =>\n x.CurrentChunkPath.startsWith(shardPathSubStr),\n );\n const shard: Shard = await this.shardFactory.create(\n containerClient,\n shardPathSubStr,\n shardCursor,\n {\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n },\n );\n if (shard.hasNext()) {\n shards.push(shard);\n }\n }\n\n let shardIndex = 0;\n if (cursor?.CurrentShardPath) {\n shardIndex = shards.findIndex((s) => s.shardPath === cursor?.CurrentShardPath);\n if (shardIndex === -1) {\n shardIndex = 0;\n }\n }\n return new Segment(shards, shardIndex, dateTime, manifestPath);\n });\n }\n}\n"]}
@@ -0,0 +1,28 @@
1
+ import type { ContainerClient, CommonOptions } from "@azure/storage-blob";
2
+ import type { ChunkFactory } from "./ChunkFactory.js";
3
+ import type { Chunk } from "./Chunk.js";
4
+ import type { BlobChangeFeedEvent } from "./models/BlobChangeFeedEvent.js";
5
+ import type { ShardCursor } from "./models/ChangeFeedCursor.js";
6
+ import type { AbortSignalLike } from "@azure/abort-controller";
7
+ /**
8
+ * Options to configure {@link Shard.getChange} operation.
9
+ */
10
+ export interface ShardGetChangeOptions extends CommonOptions {
11
+ /**
12
+ * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
13
+ * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
14
+ */
15
+ abortSignal?: AbortSignalLike;
16
+ }
17
+ export declare class Shard {
18
+ readonly shardPath: string;
19
+ private readonly containerClient;
20
+ private readonly chunkFactory;
21
+ private readonly chunks;
22
+ private currentChunk;
23
+ constructor(containerClient: ContainerClient, chunkFactory: ChunkFactory, chunks: string[], currentChunk: Chunk | undefined, shardPath: string);
24
+ hasNext(): boolean;
25
+ getChange(options?: ShardGetChangeOptions): Promise<BlobChangeFeedEvent | undefined>;
26
+ getCursor(): ShardCursor | undefined;
27
+ }
28
+ //# sourceMappingURL=Shard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Shard.d.ts","sourceRoot":"","sources":["../../src/Shard.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,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;aAcE,SAAS,EAAE,MAAM;IAbnC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAElD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAE5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAElC,OAAO,CAAC,YAAY,CAAoB;gBAGtC,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,EAAE,EAChB,YAAY,EAAE,KAAK,GAAG,SAAS,EACf,SAAS,EAAE,MAAM;IAQ5B,OAAO,IAAI,OAAO;IAMZ,SAAS,CACpB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAwBpC,SAAS,IAAI,WAAW,GAAG,SAAS;CAS5C"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.Shard = void 0;
6
+ const tracing_js_1 = require("./utils/tracing.js");
7
+ class Shard {
8
+ constructor(containerClient, chunkFactory, chunks, currentChunk, shardPath) {
9
+ this.shardPath = shardPath;
10
+ this.containerClient = containerClient;
11
+ this.chunkFactory = chunkFactory;
12
+ this.chunks = chunks;
13
+ this.currentChunk = currentChunk;
14
+ }
15
+ hasNext() {
16
+ return (this.chunks.length > 0 || (this.currentChunk !== undefined && this.currentChunk.hasNext()));
17
+ }
18
+ async getChange(options = {}) {
19
+ return tracing_js_1.tracingClient.withSpan("Shard-getChange", options, async (updatedOptions) => {
20
+ let event = undefined;
21
+ while (event === undefined && this.hasNext()) {
22
+ event = await this.currentChunk.getChange();
23
+ // Remove currentChunk if it doesn't have more events.
24
+ if (!this.currentChunk.hasNext() && this.chunks.length > 0) {
25
+ this.currentChunk = await this.chunkFactory.create(this.containerClient, this.chunks.shift(), undefined, undefined, {
26
+ abortSignal: options.abortSignal,
27
+ tracingOptions: updatedOptions.tracingOptions,
28
+ });
29
+ }
30
+ }
31
+ return event;
32
+ });
33
+ }
34
+ getCursor() {
35
+ return this.currentChunk === undefined
36
+ ? undefined
37
+ : {
38
+ CurrentChunkPath: this.currentChunk.chunkPath,
39
+ BlockOffset: this.currentChunk.blockOffset,
40
+ EventIndex: this.currentChunk.eventIndex,
41
+ };
42
+ }
43
+ }
44
+ exports.Shard = Shard;
45
+ //# sourceMappingURL=Shard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Shard.js","sourceRoot":"","sources":["../../src/Shard.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAQlC,mDAAmD;AAanD,MAAa,KAAK;IAShB,YACE,eAAgC,EAChC,YAA0B,EAC1B,MAAgB,EAChB,YAA+B,EACf,SAAiB;QAAjB,cAAS,GAAT,SAAS,CAAQ;QAEjC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAEM,OAAO;QACZ,OAAO,CACL,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAC3F,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,SAAS,CACpB,UAAiC,EAAE;QAEnC,OAAO,0BAAa,CAAC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;YACjF,IAAI,KAAK,GAAoC,SAAS,CAAC;YACvD,OAAO,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC7C,KAAK,GAAG,MAAM,IAAI,CAAC,YAAa,CAAC,SAAS,EAAE,CAAC;gBAE7C,sDAAsD;gBACtD,IAAI,CAAC,IAAI,CAAC,YAAa,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5D,IAAI,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAChD,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAG,EACpB,SAAS,EACT,SAAS,EACT;wBACE,WAAW,EAAE,OAAO,CAAC,WAAW;wBAChC,cAAc,EAAE,cAAc,CAAC,cAAc;qBAC9C,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,YAAY,KAAK,SAAS;YACpC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC;gBACE,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS;gBAC7C,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW;gBAC1C,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU;aACzC,CAAC;IACR,CAAC;CACF;AA/DD,sBA+DC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ContainerClient, CommonOptions } from \"@azure/storage-blob\";\nimport type { ChunkFactory } from \"./ChunkFactory.js\";\nimport type { Chunk } from \"./Chunk.js\";\nimport type { BlobChangeFeedEvent } from \"./models/BlobChangeFeedEvent.js\";\nimport type { ShardCursor } from \"./models/ChangeFeedCursor.js\";\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { tracingClient } from \"./utils/tracing.js\";\n\n/**\n * Options to configure {@link Shard.getChange} operation.\n */\nexport interface ShardGetChangeOptions 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 Shard {\n private readonly containerClient: ContainerClient;\n\n private readonly chunkFactory: ChunkFactory;\n\n private readonly chunks: string[];\n\n private currentChunk: Chunk | undefined;\n\n constructor(\n containerClient: ContainerClient,\n chunkFactory: ChunkFactory,\n chunks: string[],\n currentChunk: Chunk | undefined,\n public readonly shardPath: string,\n ) {\n this.containerClient = containerClient;\n this.chunkFactory = chunkFactory;\n this.chunks = chunks;\n this.currentChunk = currentChunk;\n }\n\n public hasNext(): boolean {\n return (\n this.chunks.length > 0 || (this.currentChunk !== undefined && this.currentChunk.hasNext())\n );\n }\n\n public async getChange(\n options: ShardGetChangeOptions = {},\n ): Promise<BlobChangeFeedEvent | undefined> {\n return tracingClient.withSpan(\"Shard-getChange\", options, async (updatedOptions) => {\n let event: BlobChangeFeedEvent | undefined = undefined;\n while (event === undefined && this.hasNext()) {\n event = await this.currentChunk!.getChange();\n\n // Remove currentChunk if it doesn't have more events.\n if (!this.currentChunk!.hasNext() && this.chunks.length > 0) {\n this.currentChunk = await this.chunkFactory.create(\n this.containerClient,\n this.chunks.shift()!,\n undefined,\n undefined,\n {\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n },\n );\n }\n }\n return event;\n });\n }\n\n public getCursor(): ShardCursor | undefined {\n return this.currentChunk === undefined\n ? undefined\n : {\n CurrentChunkPath: this.currentChunk.chunkPath,\n BlockOffset: this.currentChunk.blockOffset,\n EventIndex: this.currentChunk.eventIndex,\n };\n }\n}\n"]}
@@ -0,0 +1,21 @@
1
+ import type { ChunkFactory } from "./ChunkFactory.js";
2
+ import type { ShardCursor } from "./models/ChangeFeedCursor.js";
3
+ import { Shard } from "./Shard.js";
4
+ import type { ContainerClient, CommonOptions } from "@azure/storage-blob";
5
+ import type { AbortSignalLike } from "@azure/abort-controller";
6
+ /**
7
+ * Options to configure {@link ShardFactory.create} operation.
8
+ */
9
+ export interface CreateShardOptions 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 ShardFactory {
17
+ private readonly chunkFactory;
18
+ constructor(chunkFactory: ChunkFactory);
19
+ create(containerClient: ContainerClient, shardPath: string, shardCursor?: ShardCursor, options?: CreateShardOptions): Promise<Shard>;
20
+ }
21
+ //# sourceMappingURL=ShardFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShardFactory.d.ts","sourceRoot":"","sources":["../../src/ShardFactory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D;;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,YAAY,CAAe;gBAEhC,YAAY,EAAE,YAAY;IAIzB,MAAM,CACjB,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,WAAW,EACzB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,KAAK,CAAC;CAsDlB"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.ShardFactory = void 0;
6
+ const tslib_1 = require("tslib");
7
+ const Shard_js_1 = require("./Shard.js");
8
+ const tracing_js_1 = require("./utils/tracing.js");
9
+ class ShardFactory {
10
+ constructor(chunkFactory) {
11
+ this.chunkFactory = chunkFactory;
12
+ }
13
+ async create(containerClient, shardPath, shardCursor, options = {}) {
14
+ return tracing_js_1.tracingClient.withSpan("ShardFactory-create", options, async (updatedOptions) => {
15
+ var _a, e_1, _b, _c;
16
+ const chunks = [];
17
+ const blockOffset = (shardCursor === null || shardCursor === void 0 ? void 0 : shardCursor.BlockOffset) || 0;
18
+ const eventIndex = (shardCursor === null || shardCursor === void 0 ? void 0 : shardCursor.EventIndex) || 0;
19
+ try {
20
+ for (var _d = true, _e = tslib_1.__asyncValues(containerClient.listBlobsFlat({
21
+ prefix: shardPath,
22
+ abortSignal: options.abortSignal,
23
+ tracingOptions: updatedOptions.tracingOptions,
24
+ })), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) {
25
+ _c = _f.value;
26
+ _d = false;
27
+ const blobItem = _c;
28
+ chunks.push(blobItem.name);
29
+ }
30
+ }
31
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
32
+ finally {
33
+ try {
34
+ if (!_d && !_a && (_b = _e.return)) await _b.call(_e);
35
+ }
36
+ finally { if (e_1) throw e_1.error; }
37
+ }
38
+ const currentChunkPath = shardCursor === null || shardCursor === void 0 ? void 0 : shardCursor.CurrentChunkPath;
39
+ let chunkIndex = -1;
40
+ let currentChunk = undefined;
41
+ // Chunks can be empty right after hour flips.
42
+ if (chunks.length !== 0) {
43
+ // Fast forward to current Chunk
44
+ if (currentChunkPath) {
45
+ for (let i = 0; i < chunks.length; i++) {
46
+ if (chunks[i] === currentChunkPath) {
47
+ chunkIndex = i;
48
+ break;
49
+ }
50
+ }
51
+ if (chunkIndex === -1) {
52
+ throw new Error(`Chunk ${currentChunkPath} not found.`);
53
+ }
54
+ }
55
+ else {
56
+ chunkIndex = 0;
57
+ }
58
+ // Fast forward to current Chunk.
59
+ if (chunkIndex > 0) {
60
+ chunks.splice(0, chunkIndex);
61
+ }
62
+ currentChunk = await this.chunkFactory.create(containerClient, chunks.shift(), blockOffset, eventIndex, {
63
+ abortSignal: options.abortSignal,
64
+ tracingOptions: updatedOptions.tracingOptions,
65
+ });
66
+ }
67
+ return new Shard_js_1.Shard(containerClient, this.chunkFactory, chunks, currentChunk, shardPath);
68
+ });
69
+ }
70
+ }
71
+ exports.ShardFactory = ShardFactory;
72
+ //# sourceMappingURL=ShardFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShardFactory.js","sourceRoot":"","sources":["../../src/ShardFactory.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;AAIlC,yCAAmC;AAInC,mDAAmD;AAanD,MAAa,YAAY;IAGvB,YAAY,YAA0B;QACpC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,eAAgC,EAChC,SAAiB,EACjB,WAAyB,EACzB,UAA8B,EAAE;QAEhC,OAAO,0BAAa,CAAC,QAAQ,CAAC,qBAAqB,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;;YACrF,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,MAAM,WAAW,GAAW,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,KAAI,CAAC,CAAC;YAC1D,MAAM,UAAU,GAAW,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,KAAI,CAAC,CAAC;;gBAExD,KAA6B,eAAA,KAAA,sBAAA,eAAe,CAAC,aAAa,CAAC;oBACzD,MAAM,EAAE,SAAS;oBACjB,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,cAAc,EAAE,cAAc,CAAC,cAAc;iBAC9C,CAAC,CAAA,IAAA,sDAAE,CAAC;oBAJwB,cAI3B;oBAJ2B,WAI3B;oBAJS,MAAM,QAAQ,KAAA,CAAA;oBAKvB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC;;;;;;;;;YAED,MAAM,gBAAgB,GAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,gBAAgB,CAAC;YACvD,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;YACpB,IAAI,YAAY,GAAsB,SAAS,CAAC;YAChD,8CAA8C;YAC9C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,gCAAgC;gBAChC,IAAI,gBAAgB,EAAE,CAAC;oBACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACvC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,gBAAgB,EAAE,CAAC;4BACnC,UAAU,GAAG,CAAC,CAAC;4BACf,MAAM;wBACR,CAAC;oBACH,CAAC;oBACD,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;wBACtB,MAAM,IAAI,KAAK,CAAC,SAAS,gBAAgB,aAAa,CAAC,CAAC;oBAC1D,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,UAAU,GAAG,CAAC,CAAC;gBACjB,CAAC;gBAED,iCAAiC;gBACjC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;oBACnB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gBAC/B,CAAC;gBAED,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAC3C,eAAe,EACf,MAAM,CAAC,KAAK,EAAG,EACf,WAAW,EACX,UAAU,EACV;oBACE,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,cAAc,EAAE,cAAc,CAAC,cAAc;iBAC9C,CACF,CAAC;YACJ,CAAC;YAED,OAAO,IAAI,gBAAK,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAlED,oCAkEC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ChunkFactory } from \"./ChunkFactory.js\";\nimport type { ShardCursor } from \"./models/ChangeFeedCursor.js\";\nimport { Shard } from \"./Shard.js\";\nimport type { ContainerClient, CommonOptions } from \"@azure/storage-blob\";\nimport type { Chunk } from \"./Chunk.js\";\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { tracingClient } from \"./utils/tracing.js\";\n\n/**\n * Options to configure {@link ShardFactory.create} operation.\n */\nexport interface CreateShardOptions 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 ShardFactory {\n private readonly chunkFactory: ChunkFactory;\n\n constructor(chunkFactory: ChunkFactory) {\n this.chunkFactory = chunkFactory;\n }\n\n public async create(\n containerClient: ContainerClient,\n shardPath: string,\n shardCursor?: ShardCursor,\n options: CreateShardOptions = {},\n ): Promise<Shard> {\n return tracingClient.withSpan(\"ShardFactory-create\", options, async (updatedOptions) => {\n const chunks: string[] = [];\n const blockOffset: number = shardCursor?.BlockOffset || 0;\n const eventIndex: number = shardCursor?.EventIndex || 0;\n\n for await (const blobItem of containerClient.listBlobsFlat({\n prefix: shardPath,\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n })) {\n chunks.push(blobItem.name);\n }\n\n const currentChunkPath = shardCursor?.CurrentChunkPath;\n let chunkIndex = -1;\n let currentChunk: Chunk | undefined = undefined;\n // Chunks can be empty right after hour flips.\n if (chunks.length !== 0) {\n // Fast forward to current Chunk\n if (currentChunkPath) {\n for (let i = 0; i < chunks.length; i++) {\n if (chunks[i] === currentChunkPath) {\n chunkIndex = i;\n break;\n }\n }\n if (chunkIndex === -1) {\n throw new Error(`Chunk ${currentChunkPath} not found.`);\n }\n } else {\n chunkIndex = 0;\n }\n\n // Fast forward to current Chunk.\n if (chunkIndex > 0) {\n chunks.splice(0, chunkIndex);\n }\n\n currentChunk = await this.chunkFactory.create(\n containerClient,\n chunks.shift()!,\n blockOffset,\n eventIndex,\n {\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n },\n );\n }\n\n return new Shard(containerClient, this.chunkFactory, chunks, currentChunk, shardPath);\n });\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ export * from "./BlobChangeFeedClient.js";
2
+ export * from "./models/BlobChangeFeedEvent.js";
3
+ export * from "./models/models.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ const tslib_1 = require("tslib");
6
+ tslib_1.__exportStar(require("./BlobChangeFeedClient.js"), exports);
7
+ tslib_1.__exportStar(require("./models/BlobChangeFeedEvent.js"), exports);
8
+ tslib_1.__exportStar(require("./models/models.js"), exports);
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,oEAA0C;AAC1C,0EAAgD;AAChD,6DAAmC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport * from \"./BlobChangeFeedClient.js\";\nexport * from \"./models/BlobChangeFeedEvent.js\";\nexport * from \"./models/models.js\";\n"]}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * The `@azure/logger` configuration for this package.
3
+ */
4
+ export declare const logger: import("@azure/logger").AzureLogger;
5
+ //# sourceMappingURL=log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,MAAM,qCAAgD,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.logger = void 0;
6
+ const logger_1 = require("@azure/logger");
7
+ /**
8
+ * The `@azure/logger` configuration for this package.
9
+ */
10
+ exports.logger = (0, logger_1.createClientLogger)("storage-blob-changefeed");
11
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,0CAAmD;AAEnD;;GAEG;AACU,QAAA,MAAM,GAAG,IAAA,2BAAkB,EAAC,yBAAyB,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createClientLogger } from \"@azure/logger\";\n\n/**\n * The `@azure/logger` configuration for this package.\n */\nexport const logger = createClientLogger(\"storage-blob-changefeed\");\n"]}