@azure/storage-blob-changefeed 12.0.0-preview.4 → 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 (501) 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/{types/3.1/storage-blob-changefeed/src → dist/browser}/BlobChangeFeedClient.d.ts +201 -182
  8. package/dist/browser/BlobChangeFeedClient.d.ts.map +1 -0
  9. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/BlobChangeFeedClient.js +117 -100
  10. package/dist/browser/BlobChangeFeedClient.js.map +1 -0
  11. package/{types/latest/storage-blob-changefeed/src → dist/browser}/ChangeFeed.d.ts +6 -6
  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/{types/3.1/storage-blob-changefeed/src → dist/browser}/ChangeFeedFactory.d.ts +13 -13
  16. package/dist/browser/ChangeFeedFactory.d.ts.map +1 -0
  17. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/ChangeFeedFactory.js +20 -27
  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 +5 -5
  24. package/dist/browser/ChunkFactory.d.ts.map +1 -0
  25. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/ChunkFactory.js +7 -4
  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/{types/latest/storage-blob-changefeed/src → dist/commonjs}/BlobChangeFeedClient.d.ts +79 -60
  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/3.1/storage-blob-changefeed/src → dist/commonjs}/ChangeFeed.d.ts +37 -37
  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/{types/latest/storage-blob-changefeed/src → dist/commonjs}/ChangeFeedFactory.d.ts +4 -4
  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 -23
  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/dist/index.js +0 -1670
  359. package/dist/index.js.map +0 -1
  360. package/dist-esm/storage-blob-changefeed/src/AvroReaderFactory.js.map +0 -1
  361. package/dist-esm/storage-blob-changefeed/src/BlobChangeFeedClient.js.map +0 -1
  362. package/dist-esm/storage-blob-changefeed/src/ChangeFeed.js.map +0 -1
  363. package/dist-esm/storage-blob-changefeed/src/ChangeFeedFactory.js.map +0 -1
  364. package/dist-esm/storage-blob-changefeed/src/Chunk.js.map +0 -1
  365. package/dist-esm/storage-blob-changefeed/src/ChunkFactory.js.map +0 -1
  366. package/dist-esm/storage-blob-changefeed/src/LazyLoadingBlobStream.js.map +0 -1
  367. package/dist-esm/storage-blob-changefeed/src/LazyLoadingBlobStreamFactory.js.map +0 -1
  368. package/dist-esm/storage-blob-changefeed/src/Segment.js.map +0 -1
  369. package/dist-esm/storage-blob-changefeed/src/SegmentFactory.js.map +0 -1
  370. package/dist-esm/storage-blob-changefeed/src/Shard.js.map +0 -1
  371. package/dist-esm/storage-blob-changefeed/src/ShardFactory.js +0 -78
  372. package/dist-esm/storage-blob-changefeed/src/ShardFactory.js.map +0 -1
  373. package/dist-esm/storage-blob-changefeed/src/index.js +0 -6
  374. package/dist-esm/storage-blob-changefeed/src/index.js.map +0 -1
  375. package/dist-esm/storage-blob-changefeed/src/log.js.map +0 -1
  376. package/dist-esm/storage-blob-changefeed/src/models/BlobChangeFeedEvent.js +0 -4
  377. package/dist-esm/storage-blob-changefeed/src/models/BlobChangeFeedEvent.js.map +0 -1
  378. package/dist-esm/storage-blob-changefeed/src/models/ChangeFeedCursor.js +0 -4
  379. package/dist-esm/storage-blob-changefeed/src/models/ChangeFeedCursor.js.map +0 -1
  380. package/dist-esm/storage-blob-changefeed/src/models/models.js +0 -4
  381. package/dist-esm/storage-blob-changefeed/src/models/models.js.map +0 -1
  382. package/dist-esm/storage-blob-changefeed/src/utils/constants.js.map +0 -1
  383. package/dist-esm/storage-blob-changefeed/src/utils/tracing.js +0 -12
  384. package/dist-esm/storage-blob-changefeed/src/utils/tracing.js.map +0 -1
  385. package/dist-esm/storage-blob-changefeed/src/utils/utils.browser.js.map +0 -1
  386. package/dist-esm/storage-blob-changefeed/src/utils/utils.common.js.map +0 -1
  387. package/dist-esm/storage-blob-changefeed/src/utils/utils.node.js.map +0 -1
  388. package/dist-esm/storage-internal-avro/src/AvroConstants.js +0 -7
  389. package/dist-esm/storage-internal-avro/src/AvroConstants.js.map +0 -1
  390. package/dist-esm/storage-internal-avro/src/AvroParser.js +0 -311
  391. package/dist-esm/storage-internal-avro/src/AvroParser.js.map +0 -1
  392. package/dist-esm/storage-internal-avro/src/AvroReadable.js +0 -5
  393. package/dist-esm/storage-internal-avro/src/AvroReadable.js.map +0 -1
  394. package/dist-esm/storage-internal-avro/src/AvroReadableFromBlob.js +0 -47
  395. package/dist-esm/storage-internal-avro/src/AvroReadableFromBlob.js.map +0 -1
  396. package/dist-esm/storage-internal-avro/src/AvroReadableFromStream.js +0 -84
  397. package/dist-esm/storage-internal-avro/src/AvroReadableFromStream.js.map +0 -1
  398. package/dist-esm/storage-internal-avro/src/AvroReader.js +0 -107
  399. package/dist-esm/storage-internal-avro/src/AvroReader.js.map +0 -1
  400. package/dist-esm/storage-internal-avro/src/index.browser.js +0 -6
  401. package/dist-esm/storage-internal-avro/src/index.browser.js.map +0 -1
  402. package/dist-esm/storage-internal-avro/src/index.js +0 -6
  403. package/dist-esm/storage-internal-avro/src/index.js.map +0 -1
  404. package/dist-esm/storage-internal-avro/src/utils/utils.common.js +0 -17
  405. package/dist-esm/storage-internal-avro/src/utils/utils.common.js.map +0 -1
  406. package/types/3.1/storage-blob-changefeed/samples-dev/blobChangeFeedClient.d.ts +0 -2
  407. package/types/3.1/storage-blob-changefeed/samples-dev/resumeListChanges.d.ts +0 -2
  408. package/types/3.1/storage-blob-changefeed/src/LazyLoadingBlobStreamFactory.d.ts +0 -6
  409. package/types/3.1/storage-blob-changefeed/src/index.d.ts +0 -4
  410. package/types/3.1/storage-blob-changefeed/src/utils/tracing.d.ts +0 -11
  411. package/types/3.1/storage-blob-changefeed/test/blobchangefeedclient.spec.d.ts +0 -2
  412. package/types/3.1/storage-blob-changefeed/test/changefeed.spec.d.ts +0 -2
  413. package/types/3.1/storage-blob-changefeed/test/chunk.spec.d.ts +0 -2
  414. package/types/3.1/storage-blob-changefeed/test/segment.spec.d.ts +0 -2
  415. package/types/3.1/storage-blob-changefeed/test/shard.spec.d.ts +0 -2
  416. package/types/3.1/storage-blob-changefeed/test/utils/index.d.ts +0 -13
  417. package/types/3.1/storage-blob-changefeed/test/utils/testutils.common.d.ts +0 -64
  418. package/types/3.1/storage-blob-changefeed.d.ts +0 -437
  419. package/types/3.1/storage-internal-avro/src/AvroConstants.d.ts +0 -5
  420. package/types/3.1/storage-internal-avro/src/AvroParser.d.ts +0 -57
  421. package/types/3.1/storage-internal-avro/src/AvroReadable.d.ts +0 -16
  422. package/types/3.1/storage-internal-avro/src/AvroReadableFromBlob.d.ts +0 -9
  423. package/types/3.1/storage-internal-avro/src/AvroReadableFromStream.d.ts +0 -11
  424. package/types/3.1/storage-internal-avro/src/AvroReader.d.ts +0 -33
  425. package/types/3.1/storage-internal-avro/src/index.browser.d.ts +0 -4
  426. package/types/3.1/storage-internal-avro/src/index.d.ts +0 -4
  427. package/types/3.1/storage-internal-avro/src/utils/utils.common.d.ts +0 -6
  428. package/types/3.1/storage-internal-avro/test/browser/avroreadable.spec.d.ts +0 -2
  429. package/types/3.1/storage-internal-avro/test/node/avroreadable.spec.d.ts +0 -2
  430. package/types/3.1/storage-internal-avro/test/node/avroreader.spec.d.ts +0 -2
  431. package/types/latest/storage-blob-changefeed/samples-dev/blobChangeFeedClient.d.ts +0 -2
  432. package/types/latest/storage-blob-changefeed/samples-dev/blobChangeFeedClient.d.ts.map +0 -1
  433. package/types/latest/storage-blob-changefeed/samples-dev/resumeListChanges.d.ts +0 -2
  434. package/types/latest/storage-blob-changefeed/samples-dev/resumeListChanges.d.ts.map +0 -1
  435. package/types/latest/storage-blob-changefeed/src/AvroReaderFactory.d.ts.map +0 -1
  436. package/types/latest/storage-blob-changefeed/src/BlobChangeFeedClient.d.ts.map +0 -1
  437. package/types/latest/storage-blob-changefeed/src/ChangeFeed.d.ts.map +0 -1
  438. package/types/latest/storage-blob-changefeed/src/ChangeFeedFactory.d.ts.map +0 -1
  439. package/types/latest/storage-blob-changefeed/src/Chunk.d.ts.map +0 -1
  440. package/types/latest/storage-blob-changefeed/src/ChunkFactory.d.ts.map +0 -1
  441. package/types/latest/storage-blob-changefeed/src/LazyLoadingBlobStream.d.ts.map +0 -1
  442. package/types/latest/storage-blob-changefeed/src/LazyLoadingBlobStreamFactory.d.ts +0 -6
  443. package/types/latest/storage-blob-changefeed/src/LazyLoadingBlobStreamFactory.d.ts.map +0 -1
  444. package/types/latest/storage-blob-changefeed/src/Segment.d.ts.map +0 -1
  445. package/types/latest/storage-blob-changefeed/src/SegmentFactory.d.ts.map +0 -1
  446. package/types/latest/storage-blob-changefeed/src/Shard.d.ts.map +0 -1
  447. package/types/latest/storage-blob-changefeed/src/ShardFactory.d.ts.map +0 -1
  448. package/types/latest/storage-blob-changefeed/src/index.d.ts +0 -4
  449. package/types/latest/storage-blob-changefeed/src/index.d.ts.map +0 -1
  450. package/types/latest/storage-blob-changefeed/src/log.d.ts.map +0 -1
  451. package/types/latest/storage-blob-changefeed/src/models/BlobChangeFeedEvent.d.ts.map +0 -1
  452. package/types/latest/storage-blob-changefeed/src/models/ChangeFeedCursor.d.ts.map +0 -1
  453. package/types/latest/storage-blob-changefeed/src/models/models.d.ts.map +0 -1
  454. package/types/latest/storage-blob-changefeed/src/utils/constants.d.ts.map +0 -1
  455. package/types/latest/storage-blob-changefeed/src/utils/tracing.d.ts +0 -11
  456. package/types/latest/storage-blob-changefeed/src/utils/tracing.d.ts.map +0 -1
  457. package/types/latest/storage-blob-changefeed/src/utils/utils.browser.d.ts.map +0 -1
  458. package/types/latest/storage-blob-changefeed/src/utils/utils.common.d.ts.map +0 -1
  459. package/types/latest/storage-blob-changefeed/src/utils/utils.node.d.ts.map +0 -1
  460. package/types/latest/storage-blob-changefeed/test/blobchangefeedclient.spec.d.ts +0 -2
  461. package/types/latest/storage-blob-changefeed/test/blobchangefeedclient.spec.d.ts.map +0 -1
  462. package/types/latest/storage-blob-changefeed/test/changefeed.spec.d.ts +0 -2
  463. package/types/latest/storage-blob-changefeed/test/changefeed.spec.d.ts.map +0 -1
  464. package/types/latest/storage-blob-changefeed/test/chunk.spec.d.ts +0 -2
  465. package/types/latest/storage-blob-changefeed/test/chunk.spec.d.ts.map +0 -1
  466. package/types/latest/storage-blob-changefeed/test/segment.spec.d.ts +0 -2
  467. package/types/latest/storage-blob-changefeed/test/segment.spec.d.ts.map +0 -1
  468. package/types/latest/storage-blob-changefeed/test/shard.spec.d.ts +0 -2
  469. package/types/latest/storage-blob-changefeed/test/shard.spec.d.ts.map +0 -1
  470. package/types/latest/storage-blob-changefeed/test/utils/index.d.ts +0 -13
  471. package/types/latest/storage-blob-changefeed/test/utils/index.d.ts.map +0 -1
  472. package/types/latest/storage-blob-changefeed/test/utils/testutils.common.d.ts +0 -64
  473. package/types/latest/storage-blob-changefeed/test/utils/testutils.common.d.ts.map +0 -1
  474. package/types/latest/storage-blob-changefeed.d.ts +0 -453
  475. package/types/latest/storage-internal-avro/src/AvroConstants.d.ts +0 -5
  476. package/types/latest/storage-internal-avro/src/AvroConstants.d.ts.map +0 -1
  477. package/types/latest/storage-internal-avro/src/AvroParser.d.ts +0 -57
  478. package/types/latest/storage-internal-avro/src/AvroParser.d.ts.map +0 -1
  479. package/types/latest/storage-internal-avro/src/AvroReadable.d.ts +0 -16
  480. package/types/latest/storage-internal-avro/src/AvroReadable.d.ts.map +0 -1
  481. package/types/latest/storage-internal-avro/src/AvroReadableFromBlob.d.ts +0 -9
  482. package/types/latest/storage-internal-avro/src/AvroReadableFromBlob.d.ts.map +0 -1
  483. package/types/latest/storage-internal-avro/src/AvroReadableFromStream.d.ts +0 -11
  484. package/types/latest/storage-internal-avro/src/AvroReadableFromStream.d.ts.map +0 -1
  485. package/types/latest/storage-internal-avro/src/AvroReader.d.ts +0 -33
  486. package/types/latest/storage-internal-avro/src/AvroReader.d.ts.map +0 -1
  487. package/types/latest/storage-internal-avro/src/index.browser.d.ts +0 -4
  488. package/types/latest/storage-internal-avro/src/index.browser.d.ts.map +0 -1
  489. package/types/latest/storage-internal-avro/src/index.d.ts +0 -4
  490. package/types/latest/storage-internal-avro/src/index.d.ts.map +0 -1
  491. package/types/latest/storage-internal-avro/src/utils/utils.common.d.ts +0 -6
  492. package/types/latest/storage-internal-avro/src/utils/utils.common.d.ts.map +0 -1
  493. package/types/latest/storage-internal-avro/test/browser/avroreadable.spec.d.ts +0 -2
  494. package/types/latest/storage-internal-avro/test/browser/avroreadable.spec.d.ts.map +0 -1
  495. package/types/latest/storage-internal-avro/test/node/avroreadable.spec.d.ts +0 -2
  496. package/types/latest/storage-internal-avro/test/node/avroreadable.spec.d.ts.map +0 -1
  497. package/types/latest/storage-internal-avro/test/node/avroreader.spec.d.ts +0 -2
  498. package/types/latest/storage-internal-avro/test/node/avroreader.spec.d.ts.map +0 -1
  499. /package/{types/latest/storage-blob-changefeed/src → dist/browser}/log.d.ts +0 -0
  500. /package/{types/latest/storage-blob-changefeed/src → dist/browser}/models/ChangeFeedCursor.d.ts +0 -0
  501. /package/{types/latest/storage-blob-changefeed/src → dist/browser}/utils/constants.d.ts +0 -0
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.ChangeFeed = void 0;
6
+ const utils_common_js_1 = require("./utils/utils.common.js");
7
+ const tracing_js_1 = require("./utils/tracing.js");
8
+ class ChangeFeed {
9
+ /**
10
+ * BlobContainerClient for making List Blob requests and creating Segments.
11
+ */
12
+ containerClient;
13
+ segmentFactory;
14
+ years;
15
+ segments;
16
+ currentSegment;
17
+ lastConsumable;
18
+ startTime;
19
+ endTime;
20
+ end;
21
+ constructor(containerClient, segmentFactory, years, segments, currentSegment, lastConsumable, startTime, endTime) {
22
+ this.containerClient = containerClient;
23
+ this.segmentFactory = segmentFactory;
24
+ this.years = years || [];
25
+ this.segments = segments || [];
26
+ this.currentSegment = currentSegment;
27
+ this.lastConsumable = lastConsumable;
28
+ this.startTime = startTime;
29
+ this.endTime = endTime;
30
+ if (this.lastConsumable) {
31
+ this.end = (0, utils_common_js_1.minDate)(this.lastConsumable, this.endTime);
32
+ }
33
+ }
34
+ async advanceSegmentIfNecessary(options = {}) {
35
+ return tracing_js_1.tracingClient.withSpan("ChangeFeed-advanceSegmentIfNecessary", options, async (updatedOptions) => {
36
+ if (!this.currentSegment) {
37
+ throw new Error("Empty Change Feed shouldn't call this function.");
38
+ }
39
+ // If the current segment has more Events, we don't need to do anything.
40
+ if (this.currentSegment.hasNext()) {
41
+ return;
42
+ }
43
+ // If the current segment is completed, remove it
44
+ if (this.segments.length > 0) {
45
+ this.currentSegment = await this.segmentFactory.create(this.containerClient, this.segments.shift(), undefined, {
46
+ abortSignal: options.abortSignal,
47
+ tracingOptions: updatedOptions.tracingOptions,
48
+ });
49
+ }
50
+ // If segments is empty, refill it
51
+ else if (this.segments.length === 0 && this.years.length > 0) {
52
+ const year = this.years.shift();
53
+ this.segments = await (0, utils_common_js_1.getSegmentsInYear)(this.containerClient, year, this.startTime, this.end, {
54
+ abortSignal: options.abortSignal,
55
+ tracingOptions: updatedOptions.tracingOptions,
56
+ });
57
+ if (this.segments.length > 0) {
58
+ this.currentSegment = await this.segmentFactory.create(this.containerClient, this.segments.shift(), undefined, {
59
+ abortSignal: options.abortSignal,
60
+ tracingOptions: updatedOptions.tracingOptions,
61
+ });
62
+ }
63
+ else {
64
+ this.currentSegment = undefined;
65
+ }
66
+ }
67
+ });
68
+ }
69
+ hasNext() {
70
+ // Empty ChangeFeed, using currentSegment as the indicator.
71
+ if (!this.currentSegment) {
72
+ return false;
73
+ }
74
+ if (this.segments.length === 0 && this.years.length === 0 && !this.currentSegment.hasNext()) {
75
+ return false;
76
+ }
77
+ return this.currentSegment.dateTime < this.end;
78
+ }
79
+ async getChange(options = {}) {
80
+ return tracing_js_1.tracingClient.withSpan("ChangeFeed-getChange", options, async (updatedOptions) => {
81
+ let event = undefined;
82
+ while (event === undefined && this.hasNext()) {
83
+ event = await this.currentSegment.getChange({
84
+ abortSignal: options.abortSignal,
85
+ tracingOptions: updatedOptions.tracingOptions,
86
+ });
87
+ await this.advanceSegmentIfNecessary({
88
+ abortSignal: options.abortSignal,
89
+ tracingOptions: updatedOptions.tracingOptions,
90
+ });
91
+ }
92
+ return event;
93
+ });
94
+ }
95
+ getCursor() {
96
+ if (!this.currentSegment) {
97
+ throw new Error("Empty Change Feed shouldn't call this function.");
98
+ }
99
+ return {
100
+ CursorVersion: 1,
101
+ UrlHost: (0, utils_common_js_1.getHost)(this.containerClient.url),
102
+ EndTime: this.endTime?.toJSON(),
103
+ CurrentSegmentCursor: this.currentSegment.getCursor(),
104
+ };
105
+ }
106
+ }
107
+ exports.ChangeFeed = ChangeFeed;
108
+ //# sourceMappingURL=ChangeFeed.js.map
@@ -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"]}
@@ -1,7 +1,7 @@
1
- import { BlobServiceClient } from "@azure/storage-blob";
2
- import { ChangeFeed } from "./ChangeFeed";
3
- import { SegmentFactory } from "./SegmentFactory";
4
- import { BlobChangeFeedListChangesOptions } from "./models/models";
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
5
  export declare class ChangeFeedFactory {
6
6
  private readonly segmentFactory;
7
7
  private readonly maxTransferSize?;
@@ -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,126 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.ChangeFeedFactory = void 0;
6
+ const ChangeFeed_js_1 = require("./ChangeFeed.js");
7
+ const constants_js_1 = require("./utils/constants.js");
8
+ const utils_common_js_1 = require("./utils/utils.common.js");
9
+ const utils_node_js_1 = require("./utils/utils.node.js");
10
+ const SegmentFactory_js_1 = require("./SegmentFactory.js");
11
+ const ShardFactory_js_1 = require("./ShardFactory.js");
12
+ const ChunkFactory_js_1 = require("./ChunkFactory.js");
13
+ const AvroReaderFactory_js_1 = require("./AvroReaderFactory.js");
14
+ const tracing_js_1 = require("./utils/tracing.js");
15
+ const LazyLoadingBlobStreamFactory_js_1 = require("./LazyLoadingBlobStreamFactory.js");
16
+ function isSegmentFactory(segmentFactoryOrMaxTransferSize) {
17
+ return segmentFactoryOrMaxTransferSize.create !== undefined;
18
+ }
19
+ class ChangeFeedFactory {
20
+ segmentFactory;
21
+ maxTransferSize;
22
+ constructor(segmentFactoryOrMaxTransferSize) {
23
+ let segmentFactory;
24
+ if (segmentFactoryOrMaxTransferSize) {
25
+ if (Number.isFinite(segmentFactoryOrMaxTransferSize)) {
26
+ this.maxTransferSize = segmentFactoryOrMaxTransferSize;
27
+ }
28
+ else if (isSegmentFactory(segmentFactoryOrMaxTransferSize)) {
29
+ segmentFactory = segmentFactoryOrMaxTransferSize;
30
+ }
31
+ }
32
+ if (segmentFactory) {
33
+ this.segmentFactory = segmentFactory;
34
+ }
35
+ else {
36
+ this.segmentFactory = new SegmentFactory_js_1.SegmentFactory(new ShardFactory_js_1.ShardFactory(new ChunkFactory_js_1.ChunkFactory(new AvroReaderFactory_js_1.AvroReaderFactory(), new LazyLoadingBlobStreamFactory_js_1.LazyLoadingBlobStreamFactory(), this.maxTransferSize)));
37
+ }
38
+ }
39
+ static validateCursor(containerClient, cursor) {
40
+ if ((0, utils_common_js_1.getHost)(containerClient.url) !== cursor.UrlHost) {
41
+ throw new Error("Cursor URL host does not match container URL host.");
42
+ }
43
+ if (cursor.CursorVersion !== 1) {
44
+ throw new Error("Unsupported cursor version.");
45
+ }
46
+ }
47
+ async create(blobServiceClient, continuationToken, options = {}) {
48
+ return tracing_js_1.tracingClient.withSpan("ChangeFeedFactory-create", options, async (updatedOptions) => {
49
+ const containerClient = blobServiceClient.getContainerClient(constants_js_1.CHANGE_FEED_CONTAINER_NAME);
50
+ let cursor = undefined;
51
+ // Create cursor.
52
+ if (continuationToken) {
53
+ cursor = JSON.parse(continuationToken);
54
+ ChangeFeedFactory.validateCursor(containerClient, cursor);
55
+ options.start = (0, utils_common_js_1.parseDateFromSegmentPath)(cursor.CurrentSegmentCursor.SegmentPath);
56
+ options.end = new Date(cursor.EndTime);
57
+ }
58
+ // Round start and end time if we are not using the cursor.
59
+ else {
60
+ options.start = (0, utils_common_js_1.floorToNearestHour)(options.start);
61
+ options.end = (0, utils_common_js_1.ceilToNearestHour)(options.end);
62
+ }
63
+ // Check if Change Feed has been enabled for this account.
64
+ const changeFeedContainerExists = await containerClient.exists({
65
+ abortSignal: options.abortSignal,
66
+ tracingOptions: updatedOptions.tracingOptions,
67
+ });
68
+ if (!changeFeedContainerExists) {
69
+ throw new Error("Change Feed hasn't been enabled on this account, or is currently being enabled.");
70
+ }
71
+ if (options.start && options.end && options.start >= options.end) {
72
+ return new ChangeFeed_js_1.ChangeFeed();
73
+ }
74
+ // Get last consumable.
75
+ const blobClient = containerClient.getBlobClient(constants_js_1.CHANGE_FEED_META_SEGMENT_PATH);
76
+ let blobDownloadRes;
77
+ try {
78
+ blobDownloadRes = await blobClient.download(undefined, undefined, {
79
+ abortSignal: options.abortSignal,
80
+ tracingOptions: updatedOptions.tracingOptions,
81
+ });
82
+ }
83
+ catch (err) {
84
+ if (err.statusCode === 404) {
85
+ return new ChangeFeed_js_1.ChangeFeed();
86
+ }
87
+ else {
88
+ throw err;
89
+ }
90
+ }
91
+ const lastConsumable = new Date(JSON.parse(await (0, utils_node_js_1.bodyToString)(blobDownloadRes)).lastConsumable);
92
+ // Get year paths
93
+ const years = await (0, utils_common_js_1.getYearsPaths)(containerClient, {
94
+ abortSignal: options.abortSignal,
95
+ tracingOptions: updatedOptions.tracingOptions,
96
+ });
97
+ // Dequeue any years that occur before start time.
98
+ if (options.start) {
99
+ const startYear = options.start.getUTCFullYear();
100
+ while (years.length > 0 && years[0] < startYear) {
101
+ years.shift();
102
+ }
103
+ }
104
+ if (years.length === 0) {
105
+ return new ChangeFeed_js_1.ChangeFeed();
106
+ }
107
+ let segments = [];
108
+ while (segments.length === 0 && years.length !== 0) {
109
+ segments = await (0, utils_common_js_1.getSegmentsInYear)(containerClient, years.shift(), options.start, (0, utils_common_js_1.minDate)(lastConsumable, options.end), {
110
+ abortSignal: options.abortSignal,
111
+ tracingOptions: updatedOptions.tracingOptions,
112
+ });
113
+ }
114
+ if (segments.length === 0) {
115
+ return new ChangeFeed_js_1.ChangeFeed();
116
+ }
117
+ const currentSegment = await this.segmentFactory.create(containerClient, segments.shift(), cursor?.CurrentSegmentCursor, {
118
+ abortSignal: options.abortSignal,
119
+ tracingOptions: updatedOptions.tracingOptions,
120
+ });
121
+ return new ChangeFeed_js_1.ChangeFeed(containerClient, this.segmentFactory, years, segments, currentSegment, lastConsumable, options.start, options.end);
122
+ });
123
+ }
124
+ }
125
+ exports.ChangeFeedFactory = ChangeFeedFactory;
126
+ //# 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"]}
@@ -1,28 +1,27 @@
1
- import { AvroReader } from "../../storage-internal-avro/src";
2
- import { BlobChangeFeedEvent } from "./models/BlobChangeFeedEvent";
3
- import { CommonOptions } from "@azure/storage-blob";
4
- import { AbortSignalLike } from "@azure/core-http";
5
- import { AvroParseOptions } from "../../storage-internal-avro/src/AvroReader";
6
- /**
7
- * Options to configure {@link Chunk.getChange} operation.
8
- */
9
- export interface ChunkGetChangeOptions 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 Chunk {
17
- readonly chunkPath: string;
18
- private readonly avroReader;
19
- private readonly iter;
20
- private _blockOffset;
21
- readonly blockOffset: number;
22
- private _eventIndex;
23
- readonly eventIndex: number;
24
- constructor(avroReader: AvroReader, blockOffset: number, eventIndex: number, chunkPath: string, avroOptions?: AvroParseOptions);
25
- hasNext(): boolean;
26
- getChange(): Promise<BlobChangeFeedEvent | undefined>;
27
- }
28
- //# sourceMappingURL=Chunk.d.ts.map
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,49 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.Chunk = void 0;
6
+ const utils_common_js_1 = require("./utils/utils.common.js");
7
+ class Chunk {
8
+ chunkPath;
9
+ avroReader;
10
+ iter;
11
+ _blockOffset;
12
+ get blockOffset() {
13
+ return this._blockOffset;
14
+ }
15
+ _eventIndex;
16
+ get eventIndex() {
17
+ return this._eventIndex;
18
+ }
19
+ constructor(avroReader, blockOffset, eventIndex, chunkPath, avroOptions = {}) {
20
+ this.chunkPath = chunkPath;
21
+ this.avroReader = avroReader;
22
+ this._blockOffset = blockOffset;
23
+ this._eventIndex = eventIndex;
24
+ this.iter = this.avroReader.parseObjects(avroOptions);
25
+ }
26
+ hasNext() {
27
+ return this.avroReader.hasNext();
28
+ }
29
+ async getChange() {
30
+ if (!this.hasNext()) {
31
+ return undefined;
32
+ }
33
+ const next = await this.iter.next();
34
+ this._eventIndex = this.avroReader.objectIndex;
35
+ this._blockOffset = this.avroReader.blockOffset;
36
+ if (next.done) {
37
+ return undefined;
38
+ }
39
+ else {
40
+ const eventRaw = next.value;
41
+ if (eventRaw === null) {
42
+ return undefined;
43
+ }
44
+ return (0, utils_common_js_1.rawEventToBlobChangeFeedEvent)(eventRaw);
45
+ }
46
+ }
47
+ }
48
+ exports.Chunk = Chunk;
49
+ //# 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,6DAAwE;AAaxE,MAAa,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,IAAA,+CAA6B,EAAC,QAAQ,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;CACF;AAnDD,sBAmDC","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"]}
@@ -1,23 +1,23 @@
1
- import { AvroReaderFactory } from "./AvroReaderFactory";
2
- import { ContainerClient, CommonOptions } from "@azure/storage-blob";
3
- import { Chunk } from "./Chunk";
4
- import { AbortSignalLike } from "@azure/core-http";
5
- import { LazyLoadingBlobStreamFactory } from "./LazyLoadingBlobStreamFactory";
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
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,37 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.ChunkFactory = void 0;
6
+ const Chunk_js_1 = require("./Chunk.js");
7
+ const utils_node_js_1 = require("./utils/utils.node.js");
8
+ const constants_js_1 = require("./utils/constants.js");
9
+ class ChunkFactory {
10
+ avroReaderFactory;
11
+ lazyLoadingBlobStreamFactory;
12
+ maxTransferSize;
13
+ constructor(avroReaderFactory, lazyLoadingBlobStreamFactory, maxTransferSize) {
14
+ this.avroReaderFactory = avroReaderFactory;
15
+ this.lazyLoadingBlobStreamFactory = lazyLoadingBlobStreamFactory;
16
+ this.maxTransferSize = maxTransferSize;
17
+ }
18
+ async create(containerClient, chunkPath, blockOffset, eventIndex, options = {}) {
19
+ const blobClient = containerClient.getBlobClient(chunkPath);
20
+ blockOffset = blockOffset || 0;
21
+ eventIndex = eventIndex || 0;
22
+ const dataStream = (0, utils_node_js_1.streamToAvroReadable)(this.lazyLoadingBlobStreamFactory.create(blobClient, blockOffset, this.maxTransferSize ? this.maxTransferSize : constants_js_1.CHANGE_FEED_CHUNK_BLOCK_DOWNLOAD_SIZE, options));
23
+ let avroReader;
24
+ if (blockOffset !== 0) {
25
+ const headerStream = (0, utils_node_js_1.streamToAvroReadable)(this.lazyLoadingBlobStreamFactory.create(blobClient, 0, this.maxTransferSize ? this.maxTransferSize : constants_js_1.CHANGE_FEED_CHUNK_BLOCK_DOWNLOAD_SIZE, options));
26
+ avroReader = this.avroReaderFactory.create(dataStream, headerStream, blockOffset, eventIndex);
27
+ }
28
+ else {
29
+ avroReader = this.avroReaderFactory.create(dataStream);
30
+ }
31
+ return new Chunk_js_1.Chunk(avroReader, blockOffset, eventIndex, chunkPath, {
32
+ abortSignal: options.abortSignal,
33
+ });
34
+ }
35
+ }
36
+ exports.ChunkFactory = ChunkFactory;
37
+ //# 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,yCAAmC;AACnC,yDAA6D;AAG7D,uDAA6E;AAc7E,MAAa,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,IAAA,oCAAoB,EACrC,IAAI,CAAC,4BAA4B,CAAC,MAAM,CACtC,UAAU,EACV,WAAW,EACX,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,oDAAqC,EACnF,OAAO,CACR,CACF,CAAC;QAEF,IAAI,UAAsB,CAAC;QAC3B,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,YAAY,GAAG,IAAA,oCAAoB,EACvC,IAAI,CAAC,4BAA4B,CAAC,MAAM,CACtC,UAAU,EACV,CAAC,EACD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,oDAAqC,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,gBAAK,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE;YAC/D,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC,CAAC;IACL,CAAC;CACF;AAtDD,oCAsDC","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"]}
@@ -1,46 +1,46 @@
1
- /// <reference types="node" />
2
- import { Readable, ReadableOptions } from "stream";
3
- import { BlobClient, CommonOptions } from "@azure/storage-blob";
4
- import { AbortSignalLike } from "@azure/core-http";
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
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"}