@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.
- package/README.md +82 -37
- package/{types/latest/storage-blob-changefeed/src → dist/browser}/AvroReaderFactory.d.ts +2 -2
- package/dist/browser/AvroReaderFactory.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/AvroReaderFactory.js +1 -1
- package/dist/browser/AvroReaderFactory.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/browser}/BlobChangeFeedClient.d.ts +74 -56
- package/dist/browser/BlobChangeFeedClient.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/BlobChangeFeedClient.js +52 -44
- package/dist/browser/BlobChangeFeedClient.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/browser}/ChangeFeed.d.ts +4 -4
- package/dist/browser/ChangeFeed.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/ChangeFeed.js +2 -2
- package/dist/browser/ChangeFeed.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/browser}/ChangeFeedFactory.d.ts +3 -3
- package/dist/browser/ChangeFeedFactory.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/ChangeFeedFactory.js +14 -11
- package/dist/browser/ChangeFeedFactory.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/browser}/Chunk.d.ts +2 -3
- package/dist/browser/Chunk.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/Chunk.js +1 -1
- package/dist/browser/Chunk.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/browser}/ChunkFactory.d.ts +3 -3
- package/dist/browser/ChunkFactory.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/ChunkFactory.js +3 -3
- package/dist/browser/ChunkFactory.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/browser}/LazyLoadingBlobStream.d.ts +2 -2
- package/dist/browser/LazyLoadingBlobStream.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/LazyLoadingBlobStream.js +2 -2
- package/dist/browser/LazyLoadingBlobStream.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/browser}/LazyLoadingBlobStreamFactory.d.ts +2 -2
- package/dist/browser/LazyLoadingBlobStreamFactory.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/LazyLoadingBlobStreamFactory.js +1 -1
- package/dist/browser/LazyLoadingBlobStreamFactory.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/browser}/Segment.d.ts +3 -3
- package/dist/browser/Segment.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/Segment.js +1 -1
- package/dist/browser/Segment.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/browser}/SegmentFactory.d.ts +3 -3
- package/dist/browser/SegmentFactory.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/SegmentFactory.js +5 -5
- package/dist/browser/SegmentFactory.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/browser}/Shard.d.ts +4 -4
- package/dist/browser/Shard.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/Shard.js +1 -1
- package/dist/browser/Shard.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/browser}/ShardFactory.d.ts +3 -3
- package/dist/browser/ShardFactory.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/ShardFactory.js +2 -2
- package/dist/browser/ShardFactory.js.map +1 -0
- package/dist/browser/index.d.ts +4 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +6 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/log.d.ts.map +1 -0
- package/dist/browser/log.js.map +1 -0
- package/dist/browser/models/BlobChangeFeedEvent.d.ts.map +1 -0
- package/dist/browser/models/BlobChangeFeedEvent.js.map +1 -0
- package/dist/browser/models/ChangeFeedCursor.d.ts.map +1 -0
- package/dist/browser/models/ChangeFeedCursor.js.map +1 -0
- package/dist/browser/models/models.d.ts.map +1 -0
- package/dist/browser/models/models.js.map +1 -0
- package/dist/browser/package.json +3 -0
- package/dist/browser/utils/constants.d.ts.map +1 -0
- package/dist/browser/utils/constants.js.map +1 -0
- package/dist/browser/utils/tracing.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/utils/tracing.js +1 -1
- package/dist/browser/utils/tracing.js.map +1 -0
- package/dist/browser/utils/utils.browser.d.ts.map +1 -0
- package/dist/browser/utils/utils.browser.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/browser}/utils/utils.common.d.ts +1 -1
- package/dist/browser/utils/utils.common.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/utils/utils.common.js +2 -2
- package/dist/browser/utils/utils.common.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/browser}/utils/utils.node.d.ts +1 -1
- package/dist/browser/utils/utils.node.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/utils/utils.node.js +1 -1
- package/dist/browser/utils/utils.node.js.map +1 -0
- package/dist/commonjs/AvroReaderFactory.d.ts +10 -0
- package/dist/commonjs/AvroReaderFactory.d.ts.map +1 -0
- package/dist/commonjs/AvroReaderFactory.js +21 -0
- package/dist/commonjs/AvroReaderFactory.js.map +1 -0
- package/dist/commonjs/BlobChangeFeedClient.d.ts +201 -0
- package/dist/commonjs/BlobChangeFeedClient.d.ts.map +1 -0
- package/dist/commonjs/BlobChangeFeedClient.js +239 -0
- package/dist/commonjs/BlobChangeFeedClient.js.map +1 -0
- package/dist/commonjs/ChangeFeed.d.ts +37 -0
- package/dist/commonjs/ChangeFeed.d.ts.map +1 -0
- package/dist/commonjs/ChangeFeed.js +97 -0
- package/dist/commonjs/ChangeFeed.js.map +1 -0
- package/dist/commonjs/ChangeFeedFactory.d.ts +13 -0
- package/dist/commonjs/ChangeFeedFactory.d.ts.map +1 -0
- package/dist/commonjs/ChangeFeedFactory.js +124 -0
- package/dist/commonjs/ChangeFeedFactory.js.map +1 -0
- package/dist/commonjs/Chunk.d.ts +27 -0
- package/dist/commonjs/Chunk.d.ts.map +1 -0
- package/dist/commonjs/Chunk.js +44 -0
- package/dist/commonjs/Chunk.js.map +1 -0
- package/dist/commonjs/ChunkFactory.d.ts +23 -0
- package/dist/commonjs/ChunkFactory.d.ts.map +1 -0
- package/dist/commonjs/ChunkFactory.js +34 -0
- package/dist/commonjs/ChunkFactory.js.map +1 -0
- package/dist/commonjs/LazyLoadingBlobStream.d.ts +46 -0
- package/dist/commonjs/LazyLoadingBlobStream.d.ts.map +1 -0
- package/dist/commonjs/LazyLoadingBlobStream.js +85 -0
- package/dist/commonjs/LazyLoadingBlobStream.js.map +1 -0
- package/dist/commonjs/LazyLoadingBlobStreamFactory.d.ts +7 -0
- package/dist/commonjs/LazyLoadingBlobStreamFactory.d.ts.map +1 -0
- package/dist/commonjs/LazyLoadingBlobStreamFactory.js +13 -0
- package/dist/commonjs/LazyLoadingBlobStreamFactory.js.map +1 -0
- package/dist/commonjs/Segment.d.ts +29 -0
- package/dist/commonjs/Segment.d.ts.map +1 -0
- package/dist/commonjs/Segment.js +64 -0
- package/dist/commonjs/Segment.js.map +1 -0
- package/dist/commonjs/SegmentFactory.d.ts +29 -0
- package/dist/commonjs/SegmentFactory.d.ts.map +1 -0
- package/dist/commonjs/SegmentFactory.js +50 -0
- package/dist/commonjs/SegmentFactory.js.map +1 -0
- package/dist/commonjs/Shard.d.ts +28 -0
- package/dist/commonjs/Shard.d.ts.map +1 -0
- package/dist/commonjs/Shard.js +45 -0
- package/dist/commonjs/Shard.js.map +1 -0
- package/dist/commonjs/ShardFactory.d.ts +21 -0
- package/dist/commonjs/ShardFactory.d.ts.map +1 -0
- package/dist/commonjs/ShardFactory.js +72 -0
- package/dist/commonjs/ShardFactory.js.map +1 -0
- package/dist/commonjs/index.d.ts +4 -0
- package/dist/commonjs/index.d.ts.map +1 -0
- package/dist/commonjs/index.js +9 -0
- package/dist/commonjs/index.js.map +1 -0
- package/dist/commonjs/log.d.ts +5 -0
- package/dist/commonjs/log.d.ts.map +1 -0
- package/dist/commonjs/log.js +11 -0
- package/dist/commonjs/log.js.map +1 -0
- package/dist/commonjs/models/BlobChangeFeedEvent.d.ts +233 -0
- package/dist/commonjs/models/BlobChangeFeedEvent.d.ts.map +1 -0
- package/dist/commonjs/models/BlobChangeFeedEvent.js +5 -0
- package/dist/commonjs/models/BlobChangeFeedEvent.js.map +1 -0
- package/dist/commonjs/models/ChangeFeedCursor.d.ts +17 -0
- package/dist/commonjs/models/ChangeFeedCursor.d.ts.map +1 -0
- package/dist/commonjs/models/ChangeFeedCursor.js +5 -0
- package/dist/commonjs/models/ChangeFeedCursor.js.map +1 -0
- package/dist/commonjs/models/models.d.ts +23 -0
- package/dist/commonjs/models/models.d.ts.map +1 -0
- package/dist/commonjs/models/models.js +5 -0
- package/dist/commonjs/models/models.js.map +1 -0
- package/dist/commonjs/package.json +3 -0
- package/{types/latest → dist/commonjs}/tsdoc-metadata.json +1 -1
- package/dist/commonjs/utils/constants.d.ts +9 -0
- package/dist/commonjs/utils/constants.d.ts.map +1 -0
- package/dist/commonjs/utils/constants.js +14 -0
- package/dist/commonjs/utils/constants.js.map +1 -0
- package/dist/commonjs/utils/tracing.d.ts +6 -0
- package/dist/commonjs/utils/tracing.d.ts.map +1 -0
- package/dist/commonjs/utils/tracing.js +17 -0
- package/dist/commonjs/utils/tracing.js.map +1 -0
- package/dist/commonjs/utils/utils.browser.d.ts +14 -0
- package/dist/commonjs/utils/utils.browser.d.ts.map +1 -0
- package/dist/commonjs/utils/utils.browser.js +34 -0
- package/dist/commonjs/utils/utils.browser.js.map +1 -0
- package/dist/commonjs/utils/utils.common.d.ts +37 -0
- package/dist/commonjs/utils/utils.common.d.ts.map +1 -0
- package/dist/commonjs/utils/utils.common.js +207 -0
- package/dist/commonjs/utils/utils.common.js.map +1 -0
- package/dist/commonjs/utils/utils.node.d.ts +14 -0
- package/dist/commonjs/utils/utils.node.d.ts.map +1 -0
- package/dist/commonjs/utils/utils.node.js +32 -0
- package/dist/commonjs/utils/utils.node.js.map +1 -0
- package/dist/esm/AvroReaderFactory.d.ts +10 -0
- package/dist/esm/AvroReaderFactory.d.ts.map +1 -0
- package/dist/esm/AvroReaderFactory.js +17 -0
- package/dist/esm/AvroReaderFactory.js.map +1 -0
- package/dist/esm/BlobChangeFeedClient.d.ts +201 -0
- package/dist/esm/BlobChangeFeedClient.d.ts.map +1 -0
- package/dist/esm/BlobChangeFeedClient.js +233 -0
- package/dist/esm/BlobChangeFeedClient.js.map +1 -0
- package/dist/esm/ChangeFeed.d.ts +37 -0
- package/dist/esm/ChangeFeed.d.ts.map +1 -0
- package/dist/esm/ChangeFeed.js +93 -0
- package/dist/esm/ChangeFeed.js.map +1 -0
- package/dist/esm/ChangeFeedFactory.d.ts +13 -0
- package/dist/esm/ChangeFeedFactory.d.ts.map +1 -0
- package/dist/esm/ChangeFeedFactory.js +120 -0
- package/dist/esm/ChangeFeedFactory.js.map +1 -0
- package/dist/esm/Chunk.d.ts +27 -0
- package/dist/esm/Chunk.d.ts.map +1 -0
- package/dist/esm/Chunk.js +40 -0
- package/dist/esm/Chunk.js.map +1 -0
- package/dist/esm/ChunkFactory.d.ts +23 -0
- package/dist/esm/ChunkFactory.d.ts.map +1 -0
- package/dist/esm/ChunkFactory.js +30 -0
- package/dist/esm/ChunkFactory.js.map +1 -0
- package/dist/esm/LazyLoadingBlobStream.d.ts +46 -0
- package/dist/esm/LazyLoadingBlobStream.d.ts.map +1 -0
- package/dist/esm/LazyLoadingBlobStream.js +81 -0
- package/dist/esm/LazyLoadingBlobStream.js.map +1 -0
- package/dist/esm/LazyLoadingBlobStreamFactory.d.ts +7 -0
- package/dist/esm/LazyLoadingBlobStreamFactory.d.ts.map +1 -0
- package/dist/esm/LazyLoadingBlobStreamFactory.js +9 -0
- package/dist/esm/LazyLoadingBlobStreamFactory.js.map +1 -0
- package/dist/esm/Segment.d.ts +29 -0
- package/dist/esm/Segment.d.ts.map +1 -0
- package/dist/esm/Segment.js +60 -0
- package/dist/esm/Segment.js.map +1 -0
- package/dist/esm/SegmentFactory.d.ts +29 -0
- package/dist/esm/SegmentFactory.d.ts.map +1 -0
- package/dist/esm/SegmentFactory.js +46 -0
- package/dist/esm/SegmentFactory.js.map +1 -0
- package/dist/esm/Shard.d.ts +28 -0
- package/dist/esm/Shard.d.ts.map +1 -0
- package/dist/esm/Shard.js +41 -0
- package/dist/esm/Shard.js.map +1 -0
- package/dist/esm/ShardFactory.d.ts +21 -0
- package/dist/esm/ShardFactory.d.ts.map +1 -0
- package/dist/esm/ShardFactory.js +68 -0
- package/dist/esm/ShardFactory.js.map +1 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +6 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/log.d.ts +5 -0
- package/dist/esm/log.d.ts.map +1 -0
- package/dist/esm/log.js +8 -0
- package/dist/esm/log.js.map +1 -0
- package/dist/esm/models/BlobChangeFeedEvent.d.ts +233 -0
- package/dist/esm/models/BlobChangeFeedEvent.d.ts.map +1 -0
- package/{dist-esm/storage-internal-avro/src/AvroReadable.js → dist/esm/models/BlobChangeFeedEvent.js} +2 -3
- package/dist/esm/models/BlobChangeFeedEvent.js.map +1 -0
- package/dist/esm/models/ChangeFeedCursor.d.ts +17 -0
- package/dist/esm/models/ChangeFeedCursor.d.ts.map +1 -0
- package/dist/esm/models/ChangeFeedCursor.js +4 -0
- package/dist/esm/models/ChangeFeedCursor.js.map +1 -0
- package/dist/esm/models/models.d.ts +23 -0
- package/dist/esm/models/models.d.ts.map +1 -0
- package/dist/esm/models/models.js +4 -0
- package/dist/esm/models/models.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/utils/constants.d.ts +9 -0
- package/dist/esm/utils/constants.d.ts.map +1 -0
- package/dist/esm/utils/constants.js +11 -0
- package/dist/esm/utils/constants.js.map +1 -0
- package/dist/esm/utils/tracing.d.ts +6 -0
- package/dist/esm/utils/tracing.d.ts.map +1 -0
- package/dist/esm/utils/tracing.js +14 -0
- package/dist/esm/utils/tracing.js.map +1 -0
- package/dist/esm/utils/utils.browser.d.ts +14 -0
- package/dist/esm/utils/utils.browser.d.ts.map +1 -0
- package/dist/esm/utils/utils.browser.js +29 -0
- package/dist/esm/utils/utils.browser.js.map +1 -0
- package/dist/esm/utils/utils.common.d.ts +37 -0
- package/dist/esm/utils/utils.common.d.ts.map +1 -0
- package/dist/esm/utils/utils.common.js +197 -0
- package/dist/esm/utils/utils.common.js.map +1 -0
- package/dist/esm/utils/utils.node.d.ts +14 -0
- package/dist/esm/utils/utils.node.d.ts.map +1 -0
- package/dist/esm/utils/utils.node.js +28 -0
- package/dist/esm/utils/utils.node.js.map +1 -0
- package/dist/react-native/AvroReaderFactory.d.ts +10 -0
- package/dist/react-native/AvroReaderFactory.d.ts.map +1 -0
- package/dist/react-native/AvroReaderFactory.js +17 -0
- package/dist/react-native/AvroReaderFactory.js.map +1 -0
- package/dist/react-native/BlobChangeFeedClient.d.ts +201 -0
- package/dist/react-native/BlobChangeFeedClient.d.ts.map +1 -0
- package/dist/react-native/BlobChangeFeedClient.js +233 -0
- package/dist/react-native/BlobChangeFeedClient.js.map +1 -0
- package/dist/react-native/ChangeFeed.d.ts +37 -0
- package/dist/react-native/ChangeFeed.d.ts.map +1 -0
- package/dist/react-native/ChangeFeed.js +93 -0
- package/dist/react-native/ChangeFeed.js.map +1 -0
- package/dist/react-native/ChangeFeedFactory.d.ts +13 -0
- package/dist/react-native/ChangeFeedFactory.d.ts.map +1 -0
- package/dist/react-native/ChangeFeedFactory.js +120 -0
- package/dist/react-native/ChangeFeedFactory.js.map +1 -0
- package/dist/react-native/Chunk.d.ts +27 -0
- package/dist/react-native/Chunk.d.ts.map +1 -0
- package/dist/react-native/Chunk.js +40 -0
- package/dist/react-native/Chunk.js.map +1 -0
- package/dist/react-native/ChunkFactory.d.ts +23 -0
- package/dist/react-native/ChunkFactory.d.ts.map +1 -0
- package/dist/react-native/ChunkFactory.js +30 -0
- package/dist/react-native/ChunkFactory.js.map +1 -0
- package/dist/react-native/LazyLoadingBlobStream.d.ts +46 -0
- package/dist/react-native/LazyLoadingBlobStream.d.ts.map +1 -0
- package/dist/react-native/LazyLoadingBlobStream.js +81 -0
- package/dist/react-native/LazyLoadingBlobStream.js.map +1 -0
- package/dist/react-native/LazyLoadingBlobStreamFactory.d.ts +7 -0
- package/dist/react-native/LazyLoadingBlobStreamFactory.d.ts.map +1 -0
- package/dist/react-native/LazyLoadingBlobStreamFactory.js +9 -0
- package/dist/react-native/LazyLoadingBlobStreamFactory.js.map +1 -0
- package/dist/react-native/Segment.d.ts +29 -0
- package/dist/react-native/Segment.d.ts.map +1 -0
- package/dist/react-native/Segment.js +60 -0
- package/dist/react-native/Segment.js.map +1 -0
- package/dist/react-native/SegmentFactory.d.ts +29 -0
- package/dist/react-native/SegmentFactory.d.ts.map +1 -0
- package/dist/react-native/SegmentFactory.js +46 -0
- package/dist/react-native/SegmentFactory.js.map +1 -0
- package/dist/react-native/Shard.d.ts +28 -0
- package/dist/react-native/Shard.d.ts.map +1 -0
- package/dist/react-native/Shard.js +41 -0
- package/dist/react-native/Shard.js.map +1 -0
- package/dist/react-native/ShardFactory.d.ts +21 -0
- package/dist/react-native/ShardFactory.d.ts.map +1 -0
- package/dist/react-native/ShardFactory.js +68 -0
- package/dist/react-native/ShardFactory.js.map +1 -0
- package/dist/react-native/index.d.ts +4 -0
- package/dist/react-native/index.d.ts.map +1 -0
- package/dist/react-native/index.js +6 -0
- package/dist/react-native/index.js.map +1 -0
- package/dist/react-native/log.d.ts +5 -0
- package/dist/react-native/log.d.ts.map +1 -0
- package/dist/react-native/log.js +8 -0
- package/dist/react-native/log.js.map +1 -0
- package/dist/react-native/models/BlobChangeFeedEvent.d.ts +233 -0
- package/dist/react-native/models/BlobChangeFeedEvent.d.ts.map +1 -0
- package/dist/react-native/models/BlobChangeFeedEvent.js +4 -0
- package/dist/react-native/models/BlobChangeFeedEvent.js.map +1 -0
- package/dist/react-native/models/ChangeFeedCursor.d.ts +17 -0
- package/dist/react-native/models/ChangeFeedCursor.d.ts.map +1 -0
- package/dist/react-native/models/ChangeFeedCursor.js +4 -0
- package/dist/react-native/models/ChangeFeedCursor.js.map +1 -0
- package/dist/react-native/models/models.d.ts +23 -0
- package/dist/react-native/models/models.d.ts.map +1 -0
- package/dist/react-native/models/models.js +4 -0
- package/dist/react-native/models/models.js.map +1 -0
- package/dist/react-native/package.json +3 -0
- package/dist/react-native/utils/constants.d.ts +9 -0
- package/dist/react-native/utils/constants.d.ts.map +1 -0
- package/dist/react-native/utils/constants.js +11 -0
- package/dist/react-native/utils/constants.js.map +1 -0
- package/dist/react-native/utils/tracing.d.ts +6 -0
- package/dist/react-native/utils/tracing.d.ts.map +1 -0
- package/dist/react-native/utils/tracing.js +14 -0
- package/dist/react-native/utils/tracing.js.map +1 -0
- package/dist/react-native/utils/utils.browser.d.ts +14 -0
- package/dist/react-native/utils/utils.browser.d.ts.map +1 -0
- package/dist/react-native/utils/utils.browser.js +29 -0
- package/dist/react-native/utils/utils.browser.js.map +1 -0
- package/dist/react-native/utils/utils.common.d.ts +37 -0
- package/dist/react-native/utils/utils.common.d.ts.map +1 -0
- package/dist/react-native/utils/utils.common.js +197 -0
- package/dist/react-native/utils/utils.common.js.map +1 -0
- package/dist/react-native/utils/utils.node.d.ts +14 -0
- package/dist/react-native/utils/utils.node.d.ts.map +1 -0
- package/dist/react-native/utils/utils.node.js +28 -0
- package/dist/react-native/utils/utils.node.js.map +1 -0
- package/package.json +69 -68
- package/dist/index.js +0 -1577
- package/dist/index.js.map +0 -1
- package/dist-esm/storage-blob-changefeed/src/AvroReaderFactory.js.map +0 -1
- package/dist-esm/storage-blob-changefeed/src/BlobChangeFeedClient.js.map +0 -1
- package/dist-esm/storage-blob-changefeed/src/ChangeFeed.js.map +0 -1
- package/dist-esm/storage-blob-changefeed/src/ChangeFeedFactory.js.map +0 -1
- package/dist-esm/storage-blob-changefeed/src/Chunk.js.map +0 -1
- package/dist-esm/storage-blob-changefeed/src/ChunkFactory.js.map +0 -1
- package/dist-esm/storage-blob-changefeed/src/LazyLoadingBlobStream.js.map +0 -1
- package/dist-esm/storage-blob-changefeed/src/LazyLoadingBlobStreamFactory.js.map +0 -1
- package/dist-esm/storage-blob-changefeed/src/Segment.js.map +0 -1
- package/dist-esm/storage-blob-changefeed/src/SegmentFactory.js.map +0 -1
- package/dist-esm/storage-blob-changefeed/src/Shard.js.map +0 -1
- package/dist-esm/storage-blob-changefeed/src/ShardFactory.js.map +0 -1
- package/dist-esm/storage-blob-changefeed/src/index.js +0 -6
- package/dist-esm/storage-blob-changefeed/src/index.js.map +0 -1
- package/dist-esm/storage-blob-changefeed/src/log.js.map +0 -1
- package/dist-esm/storage-blob-changefeed/src/models/BlobChangeFeedEvent.js.map +0 -1
- package/dist-esm/storage-blob-changefeed/src/models/ChangeFeedCursor.js.map +0 -1
- package/dist-esm/storage-blob-changefeed/src/models/models.js.map +0 -1
- package/dist-esm/storage-blob-changefeed/src/utils/constants.js.map +0 -1
- package/dist-esm/storage-blob-changefeed/src/utils/tracing.js.map +0 -1
- package/dist-esm/storage-blob-changefeed/src/utils/utils.browser.js.map +0 -1
- package/dist-esm/storage-blob-changefeed/src/utils/utils.common.js.map +0 -1
- package/dist-esm/storage-blob-changefeed/src/utils/utils.node.js.map +0 -1
- package/dist-esm/storage-internal-avro/src/AvroConstants.js +0 -7
- package/dist-esm/storage-internal-avro/src/AvroConstants.js.map +0 -1
- package/dist-esm/storage-internal-avro/src/AvroParser.js +0 -317
- package/dist-esm/storage-internal-avro/src/AvroParser.js.map +0 -1
- package/dist-esm/storage-internal-avro/src/AvroReadable.js.map +0 -1
- package/dist-esm/storage-internal-avro/src/AvroReadableFromBlob.js +0 -47
- package/dist-esm/storage-internal-avro/src/AvroReadableFromBlob.js.map +0 -1
- package/dist-esm/storage-internal-avro/src/AvroReadableFromStream.js +0 -84
- package/dist-esm/storage-internal-avro/src/AvroReadableFromStream.js.map +0 -1
- package/dist-esm/storage-internal-avro/src/AvroReader.js +0 -106
- package/dist-esm/storage-internal-avro/src/AvroReader.js.map +0 -1
- package/dist-esm/storage-internal-avro/src/index.browser.js +0 -6
- package/dist-esm/storage-internal-avro/src/index.browser.js.map +0 -1
- package/dist-esm/storage-internal-avro/src/index.js +0 -6
- package/dist-esm/storage-internal-avro/src/index.js.map +0 -1
- package/dist-esm/storage-internal-avro/src/utils/utils.common.js +0 -16
- package/dist-esm/storage-internal-avro/src/utils/utils.common.js.map +0 -1
- package/types/latest/storage-blob-changefeed/samples-dev/blobChangeFeedClient.d.ts +0 -2
- package/types/latest/storage-blob-changefeed/samples-dev/blobChangeFeedClient.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/samples-dev/resumeListChanges.d.ts +0 -2
- package/types/latest/storage-blob-changefeed/samples-dev/resumeListChanges.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/src/AvroReaderFactory.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/src/BlobChangeFeedClient.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/src/ChangeFeed.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/src/ChangeFeedFactory.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/src/Chunk.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/src/ChunkFactory.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/src/LazyLoadingBlobStream.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/src/LazyLoadingBlobStreamFactory.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/src/Segment.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/src/SegmentFactory.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/src/Shard.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/src/ShardFactory.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/src/index.d.ts +0 -4
- package/types/latest/storage-blob-changefeed/src/index.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/src/log.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/src/models/BlobChangeFeedEvent.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/src/models/ChangeFeedCursor.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/src/models/models.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/src/utils/constants.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/src/utils/tracing.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/src/utils/utils.browser.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/src/utils/utils.common.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/src/utils/utils.node.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/test/blobchangefeedclient.spec.d.ts +0 -2
- package/types/latest/storage-blob-changefeed/test/blobchangefeedclient.spec.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/test/changefeed.spec.d.ts +0 -2
- package/types/latest/storage-blob-changefeed/test/changefeed.spec.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/test/chunk.spec.d.ts +0 -2
- package/types/latest/storage-blob-changefeed/test/chunk.spec.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/test/segment.spec.d.ts +0 -2
- package/types/latest/storage-blob-changefeed/test/segment.spec.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/test/shard.spec.d.ts +0 -2
- package/types/latest/storage-blob-changefeed/test/shard.spec.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/test/utils/index.d.ts +0 -15
- package/types/latest/storage-blob-changefeed/test/utils/index.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed/test/utils/testutils.common.d.ts +0 -67
- package/types/latest/storage-blob-changefeed/test/utils/testutils.common.d.ts.map +0 -1
- package/types/latest/storage-blob-changefeed.d.ts +0 -453
- package/types/latest/storage-internal-avro/src/AvroConstants.d.ts +0 -5
- package/types/latest/storage-internal-avro/src/AvroConstants.d.ts.map +0 -1
- package/types/latest/storage-internal-avro/src/AvroParser.d.ts +0 -57
- package/types/latest/storage-internal-avro/src/AvroParser.d.ts.map +0 -1
- package/types/latest/storage-internal-avro/src/AvroReadable.d.ts +0 -16
- package/types/latest/storage-internal-avro/src/AvroReadable.d.ts.map +0 -1
- package/types/latest/storage-internal-avro/src/AvroReadableFromBlob.d.ts +0 -10
- package/types/latest/storage-internal-avro/src/AvroReadableFromBlob.d.ts.map +0 -1
- package/types/latest/storage-internal-avro/src/AvroReadableFromStream.d.ts +0 -11
- package/types/latest/storage-internal-avro/src/AvroReadableFromStream.d.ts.map +0 -1
- package/types/latest/storage-internal-avro/src/AvroReader.d.ts +0 -32
- package/types/latest/storage-internal-avro/src/AvroReader.d.ts.map +0 -1
- package/types/latest/storage-internal-avro/src/index.browser.d.ts +0 -4
- package/types/latest/storage-internal-avro/src/index.browser.d.ts.map +0 -1
- package/types/latest/storage-internal-avro/src/index.d.ts +0 -4
- package/types/latest/storage-internal-avro/src/index.d.ts.map +0 -1
- package/types/latest/storage-internal-avro/src/utils/utils.common.d.ts +0 -6
- package/types/latest/storage-internal-avro/src/utils/utils.common.d.ts.map +0 -1
- package/types/latest/storage-internal-avro/test/browser/avroreadable.spec.d.ts +0 -2
- package/types/latest/storage-internal-avro/test/browser/avroreadable.spec.d.ts.map +0 -1
- package/types/latest/storage-internal-avro/test/node/avroreadable.spec.d.ts +0 -2
- package/types/latest/storage-internal-avro/test/node/avroreadable.spec.d.ts.map +0 -1
- package/types/latest/storage-internal-avro/test/node/avroreader.spec.d.ts +0 -2
- package/types/latest/storage-internal-avro/test/node/avroreader.spec.d.ts.map +0 -1
- /package/{types/latest/storage-blob-changefeed/src → dist/browser}/log.d.ts +0 -0
- /package/{dist-esm/storage-blob-changefeed/src → dist/browser}/log.js +0 -0
- /package/{types/latest/storage-blob-changefeed/src → dist/browser}/models/BlobChangeFeedEvent.d.ts +0 -0
- /package/{dist-esm/storage-blob-changefeed/src → dist/browser}/models/BlobChangeFeedEvent.js +0 -0
- /package/{types/latest/storage-blob-changefeed/src → dist/browser}/models/ChangeFeedCursor.d.ts +0 -0
- /package/{dist-esm/storage-blob-changefeed/src → dist/browser}/models/ChangeFeedCursor.js +0 -0
- /package/{types/latest/storage-blob-changefeed/src → dist/browser}/models/models.d.ts +0 -0
- /package/{dist-esm/storage-blob-changefeed/src → dist/browser}/models/models.js +0 -0
- /package/{types/latest/storage-blob-changefeed/src → dist/browser}/utils/constants.d.ts +0 -0
- /package/{dist-esm/storage-blob-changefeed/src → dist/browser}/utils/constants.js +0 -0
- /package/{types/latest/storage-blob-changefeed/src → dist/browser}/utils/tracing.d.ts +0 -0
- /package/{types/latest/storage-blob-changefeed/src → dist/browser}/utils/utils.browser.d.ts +0 -0
- /package/{dist-esm/storage-blob-changefeed/src → dist/browser}/utils/utils.browser.js +0 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { rawEventToBlobChangeFeedEvent } from "./utils/utils.common.js";
|
|
4
|
+
export class Chunk {
|
|
5
|
+
get blockOffset() {
|
|
6
|
+
return this._blockOffset;
|
|
7
|
+
}
|
|
8
|
+
get eventIndex() {
|
|
9
|
+
return this._eventIndex;
|
|
10
|
+
}
|
|
11
|
+
constructor(avroReader, blockOffset, eventIndex, chunkPath, avroOptions = {}) {
|
|
12
|
+
this.chunkPath = chunkPath;
|
|
13
|
+
this.avroReader = avroReader;
|
|
14
|
+
this._blockOffset = blockOffset;
|
|
15
|
+
this._eventIndex = eventIndex;
|
|
16
|
+
this.iter = this.avroReader.parseObjects(avroOptions);
|
|
17
|
+
}
|
|
18
|
+
hasNext() {
|
|
19
|
+
return this.avroReader.hasNext();
|
|
20
|
+
}
|
|
21
|
+
async getChange() {
|
|
22
|
+
if (!this.hasNext()) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
const next = await this.iter.next();
|
|
26
|
+
this._eventIndex = this.avroReader.objectIndex;
|
|
27
|
+
this._blockOffset = this.avroReader.blockOffset;
|
|
28
|
+
if (next.done) {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
const eventRaw = next.value;
|
|
33
|
+
if (eventRaw === null) {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
return rawEventToBlobChangeFeedEvent(eventRaw);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=Chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Chunk.js","sourceRoot":"","sources":["../../src/Chunk.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAMlC,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAaxE,MAAM,OAAO,KAAK;IAKhB,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAGD,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,YACE,UAAsB,EACtB,WAAmB,EACnB,UAAkB,EACF,SAAiB,EACjC,cAAgC,EAAE;QADlB,cAAS,GAAT,SAAS,CAAQ;QAGjC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAE9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IACxD,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,SAAS;QACpB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACpB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAChD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,SAAS,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;YAC5B,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,OAAO,6BAA6B,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AvroReader, AvroParseOptions } from \"@azure/storage-internal-avro\";\nimport type { BlobChangeFeedEvent } from \"./models/BlobChangeFeedEvent.js\";\nimport type { CommonOptions } from \"@azure/storage-blob\";\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { rawEventToBlobChangeFeedEvent } from \"./utils/utils.common.js\";\n\n/**\n * Options to configure {@link Chunk.getChange} operation.\n */\nexport interface ChunkGetChangeOptions extends CommonOptions {\n /**\n * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.\n * For example, use the @azure/abort-controller to create an `AbortSignal`.\n */\n abortSignal?: AbortSignalLike;\n}\n\nexport class Chunk {\n private readonly avroReader: AvroReader;\n private readonly iter: AsyncIterableIterator<Record<string, any> | null>;\n\n private _blockOffset: number;\n public get blockOffset(): number {\n return this._blockOffset;\n }\n\n private _eventIndex: number;\n public get eventIndex(): number {\n return this._eventIndex;\n }\n\n constructor(\n avroReader: AvroReader,\n blockOffset: number,\n eventIndex: number,\n public readonly chunkPath: string,\n avroOptions: AvroParseOptions = {},\n ) {\n this.avroReader = avroReader;\n this._blockOffset = blockOffset;\n this._eventIndex = eventIndex;\n\n this.iter = this.avroReader.parseObjects(avroOptions);\n }\n\n public hasNext(): boolean {\n return this.avroReader.hasNext();\n }\n\n public async getChange(): Promise<BlobChangeFeedEvent | undefined> {\n if (!this.hasNext()) {\n return undefined;\n }\n\n const next = await this.iter.next();\n this._eventIndex = this.avroReader.objectIndex;\n this._blockOffset = this.avroReader.blockOffset;\n if (next.done) {\n return undefined;\n } else {\n const eventRaw = next.value;\n if (eventRaw === null) {\n return undefined;\n }\n\n return rawEventToBlobChangeFeedEvent(eventRaw);\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { AvroReaderFactory } from "./AvroReaderFactory.js";
|
|
2
|
+
import type { ContainerClient, CommonOptions } from "@azure/storage-blob";
|
|
3
|
+
import { Chunk } from "./Chunk.js";
|
|
4
|
+
import type { AbortSignalLike } from "@azure/abort-controller";
|
|
5
|
+
import type { LazyLoadingBlobStreamFactory } from "./LazyLoadingBlobStreamFactory.js";
|
|
6
|
+
/**
|
|
7
|
+
* Options to configure {@link ChunkFactory.create} operation.
|
|
8
|
+
*/
|
|
9
|
+
export interface CreateChunkOptions extends CommonOptions {
|
|
10
|
+
/**
|
|
11
|
+
* An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
|
|
12
|
+
* For example, use the @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,30 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { Chunk } from "./Chunk.js";
|
|
4
|
+
import { streamToAvroReadable } from "./utils/utils.node.js";
|
|
5
|
+
import { CHANGE_FEED_CHUNK_BLOCK_DOWNLOAD_SIZE } from "./utils/constants.js";
|
|
6
|
+
export class ChunkFactory {
|
|
7
|
+
constructor(avroReaderFactory, lazyLoadingBlobStreamFactory, maxTransferSize) {
|
|
8
|
+
this.avroReaderFactory = avroReaderFactory;
|
|
9
|
+
this.lazyLoadingBlobStreamFactory = lazyLoadingBlobStreamFactory;
|
|
10
|
+
this.maxTransferSize = maxTransferSize;
|
|
11
|
+
}
|
|
12
|
+
async create(containerClient, chunkPath, blockOffset, eventIndex, options = {}) {
|
|
13
|
+
const blobClient = containerClient.getBlobClient(chunkPath);
|
|
14
|
+
blockOffset = blockOffset || 0;
|
|
15
|
+
eventIndex = eventIndex || 0;
|
|
16
|
+
const dataStream = streamToAvroReadable(this.lazyLoadingBlobStreamFactory.create(blobClient, blockOffset, this.maxTransferSize ? this.maxTransferSize : CHANGE_FEED_CHUNK_BLOCK_DOWNLOAD_SIZE, options));
|
|
17
|
+
let avroReader;
|
|
18
|
+
if (blockOffset !== 0) {
|
|
19
|
+
const headerStream = streamToAvroReadable(this.lazyLoadingBlobStreamFactory.create(blobClient, 0, this.maxTransferSize ? this.maxTransferSize : CHANGE_FEED_CHUNK_BLOCK_DOWNLOAD_SIZE, options));
|
|
20
|
+
avroReader = this.avroReaderFactory.create(dataStream, headerStream, blockOffset, eventIndex);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
avroReader = this.avroReaderFactory.create(dataStream);
|
|
24
|
+
}
|
|
25
|
+
return new Chunk(avroReader, blockOffset, eventIndex, chunkPath, {
|
|
26
|
+
abortSignal: options.abortSignal,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=ChunkFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChunkFactory.js","sourceRoot":"","sources":["../../src/ChunkFactory.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAG7D,OAAO,EAAE,qCAAqC,EAAE,MAAM,sBAAsB,CAAC;AAc7E,MAAM,OAAO,YAAY;IAKvB,YACE,iBAAoC,EACpC,4BAA0D,EAC1D,eAAwB;QAExB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,4BAA4B,GAAG,4BAA4B,CAAC;QACjE,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,eAAgC,EAChC,SAAiB,EACjB,WAAoB,EACpB,UAAmB,EACnB,UAA8B,EAAE;QAEhC,MAAM,UAAU,GAAG,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC5D,WAAW,GAAG,WAAW,IAAI,CAAC,CAAC;QAC/B,UAAU,GAAG,UAAU,IAAI,CAAC,CAAC;QAE7B,MAAM,UAAU,GAAG,oBAAoB,CACrC,IAAI,CAAC,4BAA4B,CAAC,MAAM,CACtC,UAAU,EACV,WAAW,EACX,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,qCAAqC,EACnF,OAAO,CACR,CACF,CAAC;QAEF,IAAI,UAAsB,CAAC;QAC3B,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,YAAY,GAAG,oBAAoB,CACvC,IAAI,CAAC,4BAA4B,CAAC,MAAM,CACtC,UAAU,EACV,CAAC,EACD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,qCAAqC,EACnF,OAAO,CACR,CACF,CAAC;YACF,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QAChG,CAAC;aAAM,CAAC;YACN,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE;YAC/D,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AvroReaderFactory } from \"./AvroReaderFactory.js\";\nimport type { ContainerClient, CommonOptions } from \"@azure/storage-blob\";\nimport { Chunk } from \"./Chunk.js\";\nimport { streamToAvroReadable } from \"./utils/utils.node.js\";\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport type { LazyLoadingBlobStreamFactory } from \"./LazyLoadingBlobStreamFactory.js\";\nimport { CHANGE_FEED_CHUNK_BLOCK_DOWNLOAD_SIZE } from \"./utils/constants.js\";\nimport type { AvroReader } from \"@azure/storage-internal-avro\";\n\n/**\n * Options to configure {@link ChunkFactory.create} operation.\n */\nexport interface CreateChunkOptions extends CommonOptions {\n /**\n * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.\n * For example, use the @azure/abort-controller to create an `AbortSignal`.\n */\n abortSignal?: AbortSignalLike;\n}\n\nexport class ChunkFactory {\n private readonly avroReaderFactory: AvroReaderFactory;\n private readonly lazyLoadingBlobStreamFactory: LazyLoadingBlobStreamFactory;\n private readonly maxTransferSize?: number;\n\n constructor(\n avroReaderFactory: AvroReaderFactory,\n lazyLoadingBlobStreamFactory: LazyLoadingBlobStreamFactory,\n maxTransferSize?: number,\n ) {\n this.avroReaderFactory = avroReaderFactory;\n this.lazyLoadingBlobStreamFactory = lazyLoadingBlobStreamFactory;\n this.maxTransferSize = maxTransferSize;\n }\n\n public async create(\n containerClient: ContainerClient,\n chunkPath: string,\n blockOffset?: number,\n eventIndex?: number,\n options: CreateChunkOptions = {},\n ): Promise<Chunk> {\n const blobClient = containerClient.getBlobClient(chunkPath);\n blockOffset = blockOffset || 0;\n eventIndex = eventIndex || 0;\n\n const dataStream = streamToAvroReadable(\n this.lazyLoadingBlobStreamFactory.create(\n blobClient,\n blockOffset,\n this.maxTransferSize ? this.maxTransferSize : CHANGE_FEED_CHUNK_BLOCK_DOWNLOAD_SIZE,\n options,\n ),\n );\n\n let avroReader: AvroReader;\n if (blockOffset !== 0) {\n const headerStream = streamToAvroReadable(\n this.lazyLoadingBlobStreamFactory.create(\n blobClient,\n 0,\n this.maxTransferSize ? this.maxTransferSize : CHANGE_FEED_CHUNK_BLOCK_DOWNLOAD_SIZE,\n options,\n ),\n );\n avroReader = this.avroReaderFactory.create(dataStream, headerStream, blockOffset, eventIndex);\n } else {\n avroReader = this.avroReaderFactory.create(dataStream);\n }\n\n return new Chunk(avroReader, blockOffset, eventIndex, chunkPath, {\n abortSignal: options.abortSignal,\n });\n }\n}\n"]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { ReadableOptions } from "node:stream";
|
|
2
|
+
import { Readable } from "node:stream";
|
|
3
|
+
import type { BlobClient, CommonOptions } from "@azure/storage-blob";
|
|
4
|
+
import type { AbortSignalLike } from "@azure/abort-controller";
|
|
5
|
+
/**
|
|
6
|
+
* Options to configure the LazyLoadingBlobStream.
|
|
7
|
+
*/
|
|
8
|
+
export interface LazyLoadingBlobStreamOptions extends ReadableOptions, CommonOptions {
|
|
9
|
+
/**
|
|
10
|
+
* An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
|
|
11
|
+
* For example, use the @azure/abort-controller to create an `AbortSignal`.
|
|
12
|
+
*/
|
|
13
|
+
abortSignal?: AbortSignalLike;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* This class generates a readable stream from a blobClient's data.
|
|
17
|
+
*/
|
|
18
|
+
export declare class LazyLoadingBlobStream extends Readable {
|
|
19
|
+
/**
|
|
20
|
+
* BlobClient to make download calls with.
|
|
21
|
+
*/
|
|
22
|
+
private readonly blobClient;
|
|
23
|
+
/**
|
|
24
|
+
* The offset within the blob of the next block we will download.
|
|
25
|
+
*/
|
|
26
|
+
private offset;
|
|
27
|
+
private readonly blockSize;
|
|
28
|
+
private lastDownloadBytes;
|
|
29
|
+
private lastDownloadData?;
|
|
30
|
+
private blobLength;
|
|
31
|
+
private options?;
|
|
32
|
+
/**
|
|
33
|
+
* Creates an instance of LazyLoadingBlobStream.
|
|
34
|
+
*
|
|
35
|
+
* @param byteLength - The total length of data contained in the buffers
|
|
36
|
+
*/
|
|
37
|
+
constructor(blobClient: BlobClient, offset: number, blockSize: number, options?: LazyLoadingBlobStreamOptions);
|
|
38
|
+
private downloadBlock;
|
|
39
|
+
/**
|
|
40
|
+
* Internal _read() that will be called when the stream wants to pull more data in.
|
|
41
|
+
*
|
|
42
|
+
* @param size - Optional. The size of data to be read
|
|
43
|
+
*/
|
|
44
|
+
_read(size?: number): Promise<void>;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=LazyLoadingBlobStream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LazyLoadingBlobStream.d.ts","sourceRoot":"","sources":["../../src/LazyLoadingBlobStream.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D;;GAEG;AACH,MAAM,WAAW,4BAA6B,SAAQ,eAAe,EAAE,aAAa;IAClF;;;OAGG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAUD;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,QAAQ;IACjD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAExC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,OAAO,CAAC,iBAAiB,CAAS;IAElC,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAElC,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,OAAO,CAAC,CAA+B;IAE/C;;;;OAIG;gBAED,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,4BAA4B;YAW1B,aAAa;IA8B3B;;;;OAIG;IACU,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAoCjD"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { Readable } from "node:stream";
|
|
4
|
+
import { tracingClient } from "./utils/tracing.js";
|
|
5
|
+
/**
|
|
6
|
+
* This class generates a readable stream from a blobClient's data.
|
|
7
|
+
*/
|
|
8
|
+
export class LazyLoadingBlobStream extends Readable {
|
|
9
|
+
/**
|
|
10
|
+
* Creates an instance of LazyLoadingBlobStream.
|
|
11
|
+
*
|
|
12
|
+
* @param byteLength - The total length of data contained in the buffers
|
|
13
|
+
*/
|
|
14
|
+
constructor(blobClient, offset, blockSize, options) {
|
|
15
|
+
super(options);
|
|
16
|
+
this.blobClient = blobClient;
|
|
17
|
+
this.offset = offset;
|
|
18
|
+
this.blockSize = blockSize;
|
|
19
|
+
this.lastDownloadBytes = -1;
|
|
20
|
+
this.blobLength = -1;
|
|
21
|
+
this.options = options;
|
|
22
|
+
}
|
|
23
|
+
async downloadBlock(options = {}) {
|
|
24
|
+
return tracingClient.withSpan("LazyLoadingBlobStream-downloadBlock", options, async (updatedOptions) => {
|
|
25
|
+
const properties = await this.blobClient.getProperties({
|
|
26
|
+
abortSignal: options.abortSignal,
|
|
27
|
+
tracingOptions: updatedOptions.tracingOptions,
|
|
28
|
+
});
|
|
29
|
+
this.blobLength = properties.contentLength;
|
|
30
|
+
this.lastDownloadBytes = Math.min(this.blockSize, this.blobLength - this.offset);
|
|
31
|
+
if (this.lastDownloadBytes === 0) {
|
|
32
|
+
this.lastDownloadData = undefined;
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
this.lastDownloadData = await this.blobClient.downloadToBuffer(this.offset, this.lastDownloadBytes, {
|
|
36
|
+
abortSignal: options.abortSignal,
|
|
37
|
+
tracingOptions: updatedOptions.tracingOptions,
|
|
38
|
+
});
|
|
39
|
+
this.offset += this.lastDownloadBytes;
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Internal _read() that will be called when the stream wants to pull more data in.
|
|
44
|
+
*
|
|
45
|
+
* @param size - Optional. The size of data to be read
|
|
46
|
+
*/
|
|
47
|
+
async _read(size) {
|
|
48
|
+
var _a;
|
|
49
|
+
return tracingClient.withSpan("LazyLoadingBlobStream-read", (_a = this.options) !== null && _a !== void 0 ? _a : {}, async (updatedOptions) => {
|
|
50
|
+
var _a, _b, _c, _d;
|
|
51
|
+
if (!size) {
|
|
52
|
+
size = this.readableHighWaterMark;
|
|
53
|
+
}
|
|
54
|
+
let count = 0;
|
|
55
|
+
let chunkSize = 0;
|
|
56
|
+
const chunksToPush = [];
|
|
57
|
+
do {
|
|
58
|
+
if (this.lastDownloadData === undefined || ((_a = this.lastDownloadData) === null || _a === void 0 ? void 0 : _a.byteLength) === 0) {
|
|
59
|
+
await this.downloadBlock({
|
|
60
|
+
abortSignal: (_b = this.options) === null || _b === void 0 ? void 0 : _b.abortSignal,
|
|
61
|
+
tracingOptions: updatedOptions === null || updatedOptions === void 0 ? void 0 : updatedOptions.tracingOptions,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
if ((_c = this.lastDownloadData) === null || _c === void 0 ? void 0 : _c.byteLength) {
|
|
65
|
+
chunkSize = Math.min(size - count, (_d = this.lastDownloadData) === null || _d === void 0 ? void 0 : _d.byteLength);
|
|
66
|
+
chunksToPush.push(this.lastDownloadData.slice(0, chunkSize));
|
|
67
|
+
this.lastDownloadData = this.lastDownloadData.slice(chunkSize);
|
|
68
|
+
count += chunkSize;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
chunkSize = 0;
|
|
72
|
+
}
|
|
73
|
+
} while (chunkSize > 0 && count < size);
|
|
74
|
+
this.push(Buffer.concat(chunksToPush));
|
|
75
|
+
if (count < size) {
|
|
76
|
+
this.push(null);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=LazyLoadingBlobStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LazyLoadingBlobStream.js","sourceRoot":"","sources":["../../src/LazyLoadingBlobStream.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAqBnD;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,QAAQ;IAqBjD;;;;OAIG;IACH,YACE,UAAsB,EACtB,MAAc,EACd,SAAiB,EACjB,OAAsC;QAEtC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,UAAqD,EAAE;QACjF,OAAO,aAAa,CAAC,QAAQ,CAC3B,qCAAqC,EACrC,OAAO,EACP,KAAK,EAAE,cAAc,EAAE,EAAE;YACvB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;gBACrD,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,cAAc,EAAE,cAAc,CAAC,cAAc;aAC9C,CAAC,CAAC;YACH,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,aAAc,CAAC;YAE5C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YACjF,IAAI,IAAI,CAAC,iBAAiB,KAAK,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;gBAClC,OAAO;YACT,CAAC;YAED,IAAI,CAAC,gBAAgB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAC5D,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,iBAAiB,EACtB;gBACE,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,cAAc,EAAE,cAAc,CAAC,cAAc;aAC9C,CACF,CAAC;YACF,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,iBAAiB,CAAC;QACxC,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,KAAK,CAAC,IAAa;;QAC9B,OAAO,aAAa,CAAC,QAAQ,CAC3B,4BAA4B,EAC5B,MAAA,IAAI,CAAC,OAAO,mCAAI,EAAE,EAClB,KAAK,EAAE,cAAc,EAAE,EAAE;;YACvB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC;YACpC,CAAC;YACD,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,MAAM,YAAY,GAAG,EAAE,CAAC;YACxB,GAAG,CAAC;gBACF,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,IAAI,CAAA,MAAA,IAAI,CAAC,gBAAgB,0CAAE,UAAU,MAAK,CAAC,EAAE,CAAC;oBACnF,MAAM,IAAI,CAAC,aAAa,CAAC;wBACvB,WAAW,EAAE,MAAA,IAAI,CAAC,OAAO,0CAAE,WAAW;wBACtC,cAAc,EAAE,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,cAAc;qBAC/C,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,MAAA,IAAI,CAAC,gBAAgB,0CAAE,UAAU,EAAE,CAAC;oBACtC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,EAAE,MAAA,IAAI,CAAC,gBAAgB,0CAAE,UAAU,CAAC,CAAC;oBACtE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;oBAC7D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBAC/D,KAAK,IAAI,SAAS,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACN,SAAS,GAAG,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,QAAQ,SAAS,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE;YAExC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;YAEvC,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ReadableOptions } from \"node:stream\";\nimport { Readable } from \"node:stream\";\nimport type { BlobClient, CommonOptions } from \"@azure/storage-blob\";\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { tracingClient } from \"./utils/tracing.js\";\n\n/**\n * Options to configure the LazyLoadingBlobStream.\n */\nexport interface LazyLoadingBlobStreamOptions extends ReadableOptions, CommonOptions {\n /**\n * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.\n * For example, use the @azure/abort-controller to create an `AbortSignal`.\n */\n abortSignal?: AbortSignalLike;\n}\n\ninterface LazyLoadingBlobStreamDownloadBlockOptions extends CommonOptions {\n /**\n * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.\n * For example, use the @azure/abort-controller to create an `AbortSignal`.\n */\n abortSignal?: AbortSignalLike;\n}\n\n/**\n * This class generates a readable stream from a blobClient's data.\n */\nexport class LazyLoadingBlobStream extends Readable {\n /**\n * BlobClient to make download calls with.\n */\n private readonly blobClient: BlobClient;\n\n /**\n * The offset within the blob of the next block we will download.\n */\n private offset: number;\n\n private readonly blockSize: number;\n\n private lastDownloadBytes: number;\n\n private lastDownloadData?: Buffer;\n\n private blobLength: number;\n\n private options?: LazyLoadingBlobStreamOptions;\n\n /**\n * Creates an instance of LazyLoadingBlobStream.\n *\n * @param byteLength - The total length of data contained in the buffers\n */\n constructor(\n blobClient: BlobClient,\n offset: number,\n blockSize: number,\n options?: LazyLoadingBlobStreamOptions,\n ) {\n super(options);\n this.blobClient = blobClient;\n this.offset = offset;\n this.blockSize = blockSize;\n this.lastDownloadBytes = -1;\n this.blobLength = -1;\n this.options = options;\n }\n\n private async downloadBlock(options: LazyLoadingBlobStreamDownloadBlockOptions = {}) {\n return tracingClient.withSpan(\n \"LazyLoadingBlobStream-downloadBlock\",\n options,\n async (updatedOptions) => {\n const properties = await this.blobClient.getProperties({\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n });\n this.blobLength = properties.contentLength!;\n\n this.lastDownloadBytes = Math.min(this.blockSize, this.blobLength - this.offset);\n if (this.lastDownloadBytes === 0) {\n this.lastDownloadData = undefined;\n return;\n }\n\n this.lastDownloadData = await this.blobClient.downloadToBuffer(\n this.offset,\n this.lastDownloadBytes,\n {\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n },\n );\n this.offset += this.lastDownloadBytes;\n },\n );\n }\n\n /**\n * Internal _read() that will be called when the stream wants to pull more data in.\n *\n * @param size - Optional. The size of data to be read\n */\n public async _read(size?: number): Promise<void> {\n return tracingClient.withSpan(\n \"LazyLoadingBlobStream-read\",\n this.options ?? {},\n async (updatedOptions) => {\n if (!size) {\n size = this.readableHighWaterMark;\n }\n let count = 0;\n let chunkSize = 0;\n const chunksToPush = [];\n do {\n if (this.lastDownloadData === undefined || this.lastDownloadData?.byteLength === 0) {\n await this.downloadBlock({\n abortSignal: this.options?.abortSignal,\n tracingOptions: updatedOptions?.tracingOptions,\n });\n }\n if (this.lastDownloadData?.byteLength) {\n chunkSize = Math.min(size - count, this.lastDownloadData?.byteLength);\n chunksToPush.push(this.lastDownloadData.slice(0, chunkSize));\n this.lastDownloadData = this.lastDownloadData.slice(chunkSize);\n count += chunkSize;\n } else {\n chunkSize = 0;\n }\n } while (chunkSize > 0 && count < size);\n\n this.push(Buffer.concat(chunksToPush));\n\n if (count < size) {\n this.push(null);\n }\n },\n );\n }\n}\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { BlobClient } from "@azure/storage-blob";
|
|
2
|
+
import type { LazyLoadingBlobStreamOptions } from "./LazyLoadingBlobStream.js";
|
|
3
|
+
import { LazyLoadingBlobStream } from "./LazyLoadingBlobStream.js";
|
|
4
|
+
export declare class LazyLoadingBlobStreamFactory {
|
|
5
|
+
create(blobClient: BlobClient, offset: number, blockSize: number, options?: LazyLoadingBlobStreamOptions): LazyLoadingBlobStream;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=LazyLoadingBlobStreamFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LazyLoadingBlobStreamFactory.d.ts","sourceRoot":"","sources":["../../src/LazyLoadingBlobStreamFactory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,qBAAa,4BAA4B;IAChC,MAAM,CACX,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,4BAA4B,GACrC,qBAAqB;CAGzB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { LazyLoadingBlobStream } from "./LazyLoadingBlobStream.js";
|
|
4
|
+
export class LazyLoadingBlobStreamFactory {
|
|
5
|
+
create(blobClient, offset, blockSize, options) {
|
|
6
|
+
return new LazyLoadingBlobStream(blobClient, offset, blockSize, options);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=LazyLoadingBlobStreamFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LazyLoadingBlobStreamFactory.js","sourceRoot":"","sources":["../../src/LazyLoadingBlobStreamFactory.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,OAAO,4BAA4B;IAChC,MAAM,CACX,UAAsB,EACtB,MAAc,EACd,SAAiB,EACjB,OAAsC;QAEtC,OAAO,IAAI,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { BlobClient } from \"@azure/storage-blob\";\nimport type { LazyLoadingBlobStreamOptions } from \"./LazyLoadingBlobStream.js\";\nimport { LazyLoadingBlobStream } from \"./LazyLoadingBlobStream.js\";\n\nexport class LazyLoadingBlobStreamFactory {\n public create(\n blobClient: BlobClient,\n offset: number,\n blockSize: number,\n options?: LazyLoadingBlobStreamOptions,\n ): LazyLoadingBlobStream {\n return new LazyLoadingBlobStream(blobClient, offset, blockSize, options);\n }\n}\n"]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { BlobChangeFeedEvent } from "./models/BlobChangeFeedEvent.js";
|
|
2
|
+
import type { Shard } from "./Shard.js";
|
|
3
|
+
import type { SegmentCursor } from "./models/ChangeFeedCursor.js";
|
|
4
|
+
import type { CommonOptions } from "@azure/storage-blob";
|
|
5
|
+
import type { AbortSignalLike } from "@azure/abort-controller";
|
|
6
|
+
/**
|
|
7
|
+
* Options to configure {@link Segment.getChange} operation.
|
|
8
|
+
*/
|
|
9
|
+
export interface SegmentGetChangeOptions extends CommonOptions {
|
|
10
|
+
/**
|
|
11
|
+
* An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
|
|
12
|
+
* For example, use the @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,60 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { tracingClient } from "./utils/tracing.js";
|
|
4
|
+
export class Segment {
|
|
5
|
+
get dateTime() {
|
|
6
|
+
return this._dateTime;
|
|
7
|
+
}
|
|
8
|
+
constructor(shards, shardIndex, dateTime, manifestPath) {
|
|
9
|
+
this.manifestPath = manifestPath;
|
|
10
|
+
this.shards = shards;
|
|
11
|
+
this.shardIndex = shardIndex;
|
|
12
|
+
this._dateTime = dateTime;
|
|
13
|
+
this.shardDone = Array(shards.length).fill(false);
|
|
14
|
+
this.shardDoneCount = 0;
|
|
15
|
+
}
|
|
16
|
+
hasNext() {
|
|
17
|
+
return this.shards.length > this.shardDoneCount;
|
|
18
|
+
}
|
|
19
|
+
async getChange(options = {}) {
|
|
20
|
+
return tracingClient.withSpan("Segment-getChange", options, async (updatedOptions) => {
|
|
21
|
+
if (this.shardIndex >= this.shards.length || this.shardIndex < 0) {
|
|
22
|
+
throw new Error("shardIndex invalid.");
|
|
23
|
+
}
|
|
24
|
+
let event = undefined;
|
|
25
|
+
while (event === undefined && this.hasNext()) {
|
|
26
|
+
if (this.shardDone[this.shardIndex]) {
|
|
27
|
+
this.shardIndex = (this.shardIndex + 1) % this.shards.length; // find next available shard
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
const currentShard = this.shards[this.shardIndex];
|
|
31
|
+
event = await currentShard.getChange({
|
|
32
|
+
abortSignal: options.abortSignal,
|
|
33
|
+
tracingOptions: updatedOptions.tracingOptions,
|
|
34
|
+
});
|
|
35
|
+
if (!currentShard.hasNext()) {
|
|
36
|
+
this.shardDone[this.shardIndex] = true;
|
|
37
|
+
this.shardDoneCount++;
|
|
38
|
+
}
|
|
39
|
+
// Round robin with shards
|
|
40
|
+
this.shardIndex = (this.shardIndex + 1) % this.shards.length;
|
|
41
|
+
}
|
|
42
|
+
return event;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
getCursor() {
|
|
46
|
+
const shardCursors = [];
|
|
47
|
+
for (const shard of this.shards) {
|
|
48
|
+
const shardCursor = shard.getCursor();
|
|
49
|
+
if (shardCursor) {
|
|
50
|
+
shardCursors.push(shardCursor);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
SegmentPath: this.manifestPath,
|
|
55
|
+
ShardCursors: shardCursors,
|
|
56
|
+
CurrentShardPath: this.shards[this.shardIndex].shardPath,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# 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,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAanD,MAAM,OAAO,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,aAAa,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","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 @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 @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,46 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { CHANGE_FEED_CONTAINER_NAME } from "./utils/constants.js";
|
|
4
|
+
import { Segment } from "./Segment.js";
|
|
5
|
+
import { bodyToString } from "./utils/utils.node.js";
|
|
6
|
+
import { parseDateFromSegmentPath } from "./utils/utils.common.js";
|
|
7
|
+
import { tracingClient } from "./utils/tracing.js";
|
|
8
|
+
export class SegmentFactory {
|
|
9
|
+
constructor(shardFactory) {
|
|
10
|
+
this.shardFactory = shardFactory;
|
|
11
|
+
}
|
|
12
|
+
async create(containerClient, manifestPath, cursor, options = {}) {
|
|
13
|
+
return tracingClient.withSpan("SegmentFactory-create", options, async (updatedOptions) => {
|
|
14
|
+
const shards = [];
|
|
15
|
+
const dateTime = parseDateFromSegmentPath(manifestPath);
|
|
16
|
+
const blobClient = containerClient.getBlobClient(manifestPath);
|
|
17
|
+
const blobDownloadRes = await blobClient.download(undefined, undefined, {
|
|
18
|
+
abortSignal: options.abortSignal,
|
|
19
|
+
tracingOptions: updatedOptions.tracingOptions,
|
|
20
|
+
});
|
|
21
|
+
const blobContent = await bodyToString(blobDownloadRes);
|
|
22
|
+
const segmentManifest = JSON.parse(blobContent);
|
|
23
|
+
const containerPrefixLength = CHANGE_FEED_CONTAINER_NAME.length + 1; // "$blobchangefeed/"
|
|
24
|
+
for (const shardPath of segmentManifest.chunkFilePaths) {
|
|
25
|
+
const shardPathSubStr = shardPath.substring(containerPrefixLength);
|
|
26
|
+
const shardCursor = cursor === null || cursor === void 0 ? void 0 : cursor.ShardCursors.find((x) => x.CurrentChunkPath.startsWith(shardPathSubStr));
|
|
27
|
+
const shard = await this.shardFactory.create(containerClient, shardPathSubStr, shardCursor, {
|
|
28
|
+
abortSignal: options.abortSignal,
|
|
29
|
+
tracingOptions: updatedOptions.tracingOptions,
|
|
30
|
+
});
|
|
31
|
+
if (shard.hasNext()) {
|
|
32
|
+
shards.push(shard);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
let shardIndex = 0;
|
|
36
|
+
if (cursor === null || cursor === void 0 ? void 0 : cursor.CurrentShardPath) {
|
|
37
|
+
shardIndex = shards.findIndex((s) => s.shardPath === (cursor === null || cursor === void 0 ? void 0 : cursor.CurrentShardPath));
|
|
38
|
+
if (shardIndex === -1) {
|
|
39
|
+
shardIndex = 0;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return new Segment(shards, shardIndex, dateTime, manifestPath);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# 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,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAsBnD,MAAM,OAAO,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,aAAa,CAAC,QAAQ,CAAC,uBAAuB,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;YACvF,MAAM,MAAM,GAAY,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAS,wBAAwB,CAAC,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,YAAY,CAAC,eAAe,CAAC,CAAC;YAEhE,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAoB,CAAC;YAEnE,MAAM,qBAAqB,GAAG,0BAA0B,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,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC;CACF","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 @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 @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,41 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { tracingClient } from "./utils/tracing.js";
|
|
4
|
+
export class Shard {
|
|
5
|
+
constructor(containerClient, chunkFactory, chunks, currentChunk, shardPath) {
|
|
6
|
+
this.shardPath = shardPath;
|
|
7
|
+
this.containerClient = containerClient;
|
|
8
|
+
this.chunkFactory = chunkFactory;
|
|
9
|
+
this.chunks = chunks;
|
|
10
|
+
this.currentChunk = currentChunk;
|
|
11
|
+
}
|
|
12
|
+
hasNext() {
|
|
13
|
+
return (this.chunks.length > 0 || (this.currentChunk !== undefined && this.currentChunk.hasNext()));
|
|
14
|
+
}
|
|
15
|
+
async getChange(options = {}) {
|
|
16
|
+
return tracingClient.withSpan("Shard-getChange", options, async (updatedOptions) => {
|
|
17
|
+
let event = undefined;
|
|
18
|
+
while (event === undefined && this.hasNext()) {
|
|
19
|
+
event = await this.currentChunk.getChange();
|
|
20
|
+
// Remove currentChunk if it doesn't have more events.
|
|
21
|
+
if (!this.currentChunk.hasNext() && this.chunks.length > 0) {
|
|
22
|
+
this.currentChunk = await this.chunkFactory.create(this.containerClient, this.chunks.shift(), undefined, undefined, {
|
|
23
|
+
abortSignal: options.abortSignal,
|
|
24
|
+
tracingOptions: updatedOptions.tracingOptions,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return event;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
getCursor() {
|
|
32
|
+
return this.currentChunk === undefined
|
|
33
|
+
? undefined
|
|
34
|
+
: {
|
|
35
|
+
CurrentChunkPath: this.currentChunk.chunkPath,
|
|
36
|
+
BlockOffset: this.currentChunk.blockOffset,
|
|
37
|
+
EventIndex: this.currentChunk.eventIndex,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# 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,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAanD,MAAM,OAAO,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,aAAa,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","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 @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 @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"}
|