@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.
- package/LICENSE +3 -3
- package/README.md +87 -47
- package/{types/3.1/storage-blob-changefeed/src → dist/browser}/AvroReaderFactory.d.ts +10 -9
- package/dist/browser/AvroReaderFactory.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/AvroReaderFactory.js +2 -2
- package/dist/browser/AvroReaderFactory.js.map +1 -0
- package/{types/3.1/storage-blob-changefeed/src → dist/browser}/BlobChangeFeedClient.d.ts +201 -182
- package/dist/browser/BlobChangeFeedClient.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/BlobChangeFeedClient.js +117 -100
- package/dist/browser/BlobChangeFeedClient.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/browser}/ChangeFeed.d.ts +6 -6
- package/dist/browser/ChangeFeed.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/ChangeFeed.js +20 -32
- package/dist/browser/ChangeFeed.js.map +1 -0
- package/{types/3.1/storage-blob-changefeed/src → dist/browser}/ChangeFeedFactory.d.ts +13 -13
- package/dist/browser/ChangeFeedFactory.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/ChangeFeedFactory.js +20 -27
- package/dist/browser/ChangeFeedFactory.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/browser}/Chunk.d.ts +4 -5
- package/dist/browser/Chunk.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/Chunk.js +13 -8
- package/dist/browser/Chunk.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/browser}/ChunkFactory.d.ts +5 -5
- package/dist/browser/ChunkFactory.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/ChunkFactory.js +7 -4
- package/dist/browser/ChunkFactory.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/browser}/LazyLoadingBlobStream.d.ts +4 -4
- package/dist/browser/LazyLoadingBlobStream.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/LazyLoadingBlobStream.js +25 -36
- package/dist/browser/LazyLoadingBlobStream.js.map +1 -0
- package/dist/browser/LazyLoadingBlobStreamFactory.d.ts +7 -0
- package/dist/browser/LazyLoadingBlobStreamFactory.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/LazyLoadingBlobStreamFactory.js +2 -2
- package/dist/browser/LazyLoadingBlobStreamFactory.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/browser}/Segment.d.ts +5 -5
- package/dist/browser/Segment.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/Segment.js +16 -19
- package/dist/browser/Segment.js.map +1 -0
- package/{types/3.1/storage-blob-changefeed/src → dist/browser}/SegmentFactory.d.ts +29 -29
- package/dist/browser/SegmentFactory.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/SegmentFactory.js +12 -23
- package/dist/browser/SegmentFactory.js.map +1 -0
- package/{types/3.1/storage-blob-changefeed/src → dist/browser}/Shard.d.ts +28 -28
- package/dist/browser/Shard.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/Shard.js +9 -16
- package/dist/browser/Shard.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/browser}/ShardFactory.d.ts +5 -5
- package/dist/browser/ShardFactory.d.ts.map +1 -0
- package/dist/browser/ShardFactory.js +55 -0
- 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-esm/storage-blob-changefeed/src → dist/browser}/log.js +1 -1
- package/dist/browser/log.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/browser}/models/BlobChangeFeedEvent.d.ts +5 -5
- package/dist/browser/models/BlobChangeFeedEvent.d.ts.map +1 -0
- package/dist/browser/models/BlobChangeFeedEvent.js +4 -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 +4 -0
- package/dist/browser/models/ChangeFeedCursor.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/browser}/models/models.d.ts +2 -2
- package/dist/browser/models/models.d.ts.map +1 -0
- package/dist/browser/models/models.js +4 -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-esm/storage-blob-changefeed/src → dist/browser}/utils/constants.js +2 -2
- package/dist/browser/utils/constants.js.map +1 -0
- package/dist/browser/utils/tracing.d.ts +6 -0
- package/dist/browser/utils/tracing.d.ts.map +1 -0
- package/dist/browser/utils/tracing.js +14 -0
- package/dist/browser/utils/tracing.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/browser}/utils/utils.browser.d.ts +0 -1
- package/dist/browser/utils/utils.browser.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/utils/utils.browser.js +1 -1
- package/dist/browser/utils/utils.browser.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/browser}/utils/utils.common.d.ts +3 -10
- package/dist/browser/utils/utils.common.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/utils/utils.common.js +26 -91
- 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 -2
- package/dist/browser/utils/utils.node.d.ts.map +1 -0
- package/{dist-esm/storage-blob-changefeed/src → dist/browser}/utils/utils.node.js +2 -2
- package/dist/browser/utils/utils.node.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/commonjs}/AvroReaderFactory.d.ts +2 -1
- 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/{types/latest/storage-blob-changefeed/src → dist/commonjs}/BlobChangeFeedClient.d.ts +79 -60
- package/dist/commonjs/BlobChangeFeedClient.d.ts.map +1 -0
- package/dist/commonjs/BlobChangeFeedClient.js +248 -0
- package/dist/commonjs/BlobChangeFeedClient.js.map +1 -0
- package/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/ChangeFeed.d.ts +37 -37
- package/dist/commonjs/ChangeFeed.d.ts.map +1 -0
- package/dist/commonjs/ChangeFeed.js +108 -0
- package/dist/commonjs/ChangeFeed.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/commonjs}/ChangeFeedFactory.d.ts +4 -4
- package/dist/commonjs/ChangeFeedFactory.d.ts.map +1 -0
- package/dist/commonjs/ChangeFeedFactory.js +126 -0
- package/dist/commonjs/ChangeFeedFactory.js.map +1 -0
- package/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/Chunk.d.ts +27 -28
- package/dist/commonjs/Chunk.d.ts.map +1 -0
- package/dist/commonjs/Chunk.js +49 -0
- package/dist/commonjs/Chunk.js.map +1 -0
- package/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/ChunkFactory.d.ts +23 -23
- package/dist/commonjs/ChunkFactory.d.ts.map +1 -0
- package/dist/commonjs/ChunkFactory.js +37 -0
- package/dist/commonjs/ChunkFactory.js.map +1 -0
- package/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/LazyLoadingBlobStream.d.ts +46 -46
- package/dist/commonjs/LazyLoadingBlobStream.d.ts.map +1 -0
- package/dist/commonjs/LazyLoadingBlobStream.js +96 -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/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/Segment.d.ts +29 -29
- package/dist/commonjs/Segment.d.ts.map +1 -0
- package/dist/commonjs/Segment.js +73 -0
- package/dist/commonjs/Segment.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/commonjs}/SegmentFactory.d.ts +5 -5
- package/dist/commonjs/SegmentFactory.d.ts.map +1 -0
- package/dist/commonjs/SegmentFactory.js +51 -0
- package/dist/commonjs/SegmentFactory.js.map +1 -0
- package/{types/latest/storage-blob-changefeed/src → dist/commonjs}/Shard.d.ts +6 -6
- package/dist/commonjs/Shard.d.ts.map +1 -0
- package/dist/commonjs/Shard.js +50 -0
- package/dist/commonjs/Shard.js.map +1 -0
- package/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/ShardFactory.d.ts +21 -21
- package/dist/commonjs/ShardFactory.d.ts.map +1 -0
- package/dist/commonjs/ShardFactory.js +59 -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/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/log.d.ts +5 -5
- 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/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/models/BlobChangeFeedEvent.d.ts +233 -233
- 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/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/models/ChangeFeedCursor.d.ts +17 -17
- 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/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/models/models.d.ts +23 -23
- 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 +11 -11
- package/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/utils/constants.d.ts +9 -9
- 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/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/utils/utils.browser.d.ts +14 -15
- 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/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/utils/utils.common.d.ts +37 -44
- package/dist/commonjs/utils/utils.common.d.ts.map +1 -0
- package/dist/commonjs/utils/utils.common.js +180 -0
- package/dist/commonjs/utils/utils.common.js.map +1 -0
- package/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/utils/utils.node.d.ts +14 -15
- 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 +242 -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 +104 -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 +122 -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 +45 -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 +33 -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 +92 -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 +69 -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 +47 -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 +46 -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 +55 -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/models/BlobChangeFeedEvent.js +4 -0
- 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 +170 -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 +242 -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 +104 -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 +122 -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 +45 -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 +33 -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 +92 -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 +69 -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 +47 -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 +46 -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 +55 -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 +170 -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 +89 -104
- package/dist/index.js +0 -1670
- 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 +0 -78
- 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 +0 -4
- package/dist-esm/storage-blob-changefeed/src/models/BlobChangeFeedEvent.js.map +0 -1
- package/dist-esm/storage-blob-changefeed/src/models/ChangeFeedCursor.js +0 -4
- package/dist-esm/storage-blob-changefeed/src/models/ChangeFeedCursor.js.map +0 -1
- package/dist-esm/storage-blob-changefeed/src/models/models.js +0 -4
- 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 +0 -12
- 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 -311
- package/dist-esm/storage-internal-avro/src/AvroParser.js.map +0 -1
- package/dist-esm/storage-internal-avro/src/AvroReadable.js +0 -5
- 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 -107
- 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 -17
- package/dist-esm/storage-internal-avro/src/utils/utils.common.js.map +0 -1
- package/types/3.1/storage-blob-changefeed/samples-dev/blobChangeFeedClient.d.ts +0 -2
- package/types/3.1/storage-blob-changefeed/samples-dev/resumeListChanges.d.ts +0 -2
- package/types/3.1/storage-blob-changefeed/src/LazyLoadingBlobStreamFactory.d.ts +0 -6
- package/types/3.1/storage-blob-changefeed/src/index.d.ts +0 -4
- package/types/3.1/storage-blob-changefeed/src/utils/tracing.d.ts +0 -11
- package/types/3.1/storage-blob-changefeed/test/blobchangefeedclient.spec.d.ts +0 -2
- package/types/3.1/storage-blob-changefeed/test/changefeed.spec.d.ts +0 -2
- package/types/3.1/storage-blob-changefeed/test/chunk.spec.d.ts +0 -2
- package/types/3.1/storage-blob-changefeed/test/segment.spec.d.ts +0 -2
- package/types/3.1/storage-blob-changefeed/test/shard.spec.d.ts +0 -2
- package/types/3.1/storage-blob-changefeed/test/utils/index.d.ts +0 -13
- package/types/3.1/storage-blob-changefeed/test/utils/testutils.common.d.ts +0 -64
- package/types/3.1/storage-blob-changefeed.d.ts +0 -437
- package/types/3.1/storage-internal-avro/src/AvroConstants.d.ts +0 -5
- package/types/3.1/storage-internal-avro/src/AvroParser.d.ts +0 -57
- package/types/3.1/storage-internal-avro/src/AvroReadable.d.ts +0 -16
- package/types/3.1/storage-internal-avro/src/AvroReadableFromBlob.d.ts +0 -9
- package/types/3.1/storage-internal-avro/src/AvroReadableFromStream.d.ts +0 -11
- package/types/3.1/storage-internal-avro/src/AvroReader.d.ts +0 -33
- package/types/3.1/storage-internal-avro/src/index.browser.d.ts +0 -4
- package/types/3.1/storage-internal-avro/src/index.d.ts +0 -4
- package/types/3.1/storage-internal-avro/src/utils/utils.common.d.ts +0 -6
- package/types/3.1/storage-internal-avro/test/browser/avroreadable.spec.d.ts +0 -2
- package/types/3.1/storage-internal-avro/test/node/avroreadable.spec.d.ts +0 -2
- package/types/3.1/storage-internal-avro/test/node/avroreader.spec.d.ts +0 -2
- 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 +0 -6
- 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 +0 -11
- 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 -13
- 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 -64
- 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 -9
- 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 -33
- 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/{types/latest/storage-blob-changefeed/src → dist/browser}/models/ChangeFeedCursor.d.ts +0 -0
- /package/{types/latest/storage-blob-changefeed/src → dist/browser}/utils/constants.d.ts +0 -0
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Microsoft Corporation.
|
|
2
|
-
// Licensed under the MIT license.
|
|
3
|
-
import { __asyncValues } from "tslib";
|
|
4
|
-
import { Shard } from "./Shard";
|
|
5
|
-
import { SpanStatusCode } from "@azure/core-tracing";
|
|
6
|
-
import { createSpan } from "./utils/tracing";
|
|
7
|
-
export class ShardFactory {
|
|
8
|
-
constructor(chunkFactory) {
|
|
9
|
-
this.chunkFactory = chunkFactory;
|
|
10
|
-
}
|
|
11
|
-
async create(containerClient, shardPath, shardCursor, options = {}) {
|
|
12
|
-
var e_1, _a;
|
|
13
|
-
const { span, updatedOptions } = createSpan("ShardFactory-create", options);
|
|
14
|
-
try {
|
|
15
|
-
const chunks = [];
|
|
16
|
-
const blockOffset = (shardCursor === null || shardCursor === void 0 ? void 0 : shardCursor.BlockOffset) || 0;
|
|
17
|
-
const eventIndex = (shardCursor === null || shardCursor === void 0 ? void 0 : shardCursor.EventIndex) || 0;
|
|
18
|
-
try {
|
|
19
|
-
for (var _b = __asyncValues(containerClient.listBlobsFlat({
|
|
20
|
-
prefix: shardPath,
|
|
21
|
-
abortSignal: options.abortSignal,
|
|
22
|
-
tracingOptions: updatedOptions.tracingOptions,
|
|
23
|
-
})), _c; _c = await _b.next(), !_c.done;) {
|
|
24
|
-
const blobItem = _c.value;
|
|
25
|
-
chunks.push(blobItem.name);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
29
|
-
finally {
|
|
30
|
-
try {
|
|
31
|
-
if (_c && !_c.done && (_a = _b.return)) await _a.call(_b);
|
|
32
|
-
}
|
|
33
|
-
finally { if (e_1) throw e_1.error; }
|
|
34
|
-
}
|
|
35
|
-
const currentChunkPath = shardCursor === null || shardCursor === void 0 ? void 0 : shardCursor.CurrentChunkPath;
|
|
36
|
-
let chunkIndex = -1;
|
|
37
|
-
let currentChunk = undefined;
|
|
38
|
-
// Chunks can be empty right after hour flips.
|
|
39
|
-
if (chunks.length !== 0) {
|
|
40
|
-
// Fast forward to current Chunk
|
|
41
|
-
if (currentChunkPath) {
|
|
42
|
-
for (let i = 0; i < chunks.length; i++) {
|
|
43
|
-
if (chunks[i] === currentChunkPath) {
|
|
44
|
-
chunkIndex = i;
|
|
45
|
-
break;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
if (chunkIndex === -1) {
|
|
49
|
-
throw new Error(`Chunk ${currentChunkPath} not found.`);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
chunkIndex = 0;
|
|
54
|
-
}
|
|
55
|
-
// Fast forward to current Chunk.
|
|
56
|
-
if (chunkIndex > 0) {
|
|
57
|
-
chunks.splice(0, chunkIndex);
|
|
58
|
-
}
|
|
59
|
-
currentChunk = await this.chunkFactory.create(containerClient, chunks.shift(), blockOffset, eventIndex, {
|
|
60
|
-
abortSignal: options.abortSignal,
|
|
61
|
-
tracingOptions: updatedOptions.tracingOptions,
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
return new Shard(containerClient, this.chunkFactory, chunks, currentChunk, shardPath);
|
|
65
|
-
}
|
|
66
|
-
catch (e) {
|
|
67
|
-
span.setStatus({
|
|
68
|
-
code: SpanStatusCode.ERROR,
|
|
69
|
-
message: e.message,
|
|
70
|
-
});
|
|
71
|
-
throw e;
|
|
72
|
-
}
|
|
73
|
-
finally {
|
|
74
|
-
span.end();
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=ShardFactory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ShardFactory.js","sourceRoot":"","sources":["../../../src/ShardFactory.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;AAIlC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIhC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAa7C,MAAM,OAAO,YAAY;IAGvB,YAAY,YAA0B;QACpC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,eAAgC,EAChC,SAAiB,EACjB,WAAyB,EACzB,UAA8B,EAAE;;QAEhC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,UAAU,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;QAC5E,IAAI;YACF,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,MAAM,WAAW,GAAW,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,KAAI,CAAC,CAAC;YAC1D,MAAM,UAAU,GAAW,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,KAAI,CAAC,CAAC;;gBAExD,KAA6B,IAAA,KAAA,cAAA,eAAe,CAAC,aAAa,CAAC;oBACzD,MAAM,EAAE,SAAS;oBACjB,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,cAAc,EAAE,cAAc,CAAC,cAAc;iBAC9C,CAAC,CAAA,IAAA;oBAJS,MAAM,QAAQ,WAAA,CAAA;oBAKvB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;iBAC5B;;;;;;;;;YAED,MAAM,gBAAgB,GAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,gBAAgB,CAAC;YACvD,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;YACpB,IAAI,YAAY,GAAsB,SAAS,CAAC;YAChD,8CAA8C;YAC9C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBACvB,gCAAgC;gBAChC,IAAI,gBAAgB,EAAE;oBACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACtC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,gBAAgB,EAAE;4BAClC,UAAU,GAAG,CAAC,CAAC;4BACf,MAAM;yBACP;qBACF;oBACD,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;wBACrB,MAAM,IAAI,KAAK,CAAC,SAAS,gBAAgB,aAAa,CAAC,CAAC;qBACzD;iBACF;qBAAM;oBACL,UAAU,GAAG,CAAC,CAAC;iBAChB;gBAED,iCAAiC;gBACjC,IAAI,UAAU,GAAG,CAAC,EAAE;oBAClB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;iBAC9B;gBAED,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAC3C,eAAe,EACf,MAAM,CAAC,KAAK,EAAG,EACf,WAAW,EACX,UAAU,EACV;oBACE,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,cAAc,EAAE,cAAc,CAAC,cAAc;iBAC9C,CACF,CAAC;aACH;YAED,OAAO,IAAI,KAAK,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;SACvF;QAAC,OAAO,CAAM,EAAE;YACf,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,cAAc,CAAC,KAAK;gBAC1B,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC;YACH,MAAM,CAAC,CAAC;SACT;gBAAS;YACR,IAAI,CAAC,GAAG,EAAE,CAAC;SACZ;IACH,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { ChunkFactory } from \"./ChunkFactory\";\nimport { ShardCursor } from \"./models/ChangeFeedCursor\";\nimport { Shard } from \"./Shard\";\nimport { ContainerClient, CommonOptions } from \"@azure/storage-blob\";\nimport { Chunk } from \"./Chunk\";\nimport { AbortSignalLike } from \"@azure/core-http\";\nimport { SpanStatusCode } from \"@azure/core-tracing\";\nimport { createSpan } from \"./utils/tracing\";\n\n/**\n * Options to configure {@link ShardFactory.create} operation.\n */\nexport interface CreateShardOptions extends CommonOptions {\n /**\n * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.\n * For example, use the @azure/abort-controller to create an `AbortSignal`.\n */\n abortSignal?: AbortSignalLike;\n}\n\nexport class ShardFactory {\n private readonly chunkFactory: ChunkFactory;\n\n constructor(chunkFactory: ChunkFactory) {\n this.chunkFactory = chunkFactory;\n }\n\n public async create(\n containerClient: ContainerClient,\n shardPath: string,\n shardCursor?: ShardCursor,\n options: CreateShardOptions = {}\n ): Promise<Shard> {\n const { span, updatedOptions } = createSpan(\"ShardFactory-create\", options);\n try {\n const chunks: string[] = [];\n const blockOffset: number = shardCursor?.BlockOffset || 0;\n const eventIndex: number = shardCursor?.EventIndex || 0;\n\n for await (const blobItem of containerClient.listBlobsFlat({\n prefix: shardPath,\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n })) {\n chunks.push(blobItem.name);\n }\n\n const currentChunkPath = shardCursor?.CurrentChunkPath;\n let chunkIndex = -1;\n let currentChunk: Chunk | undefined = undefined;\n // Chunks can be empty right after hour flips.\n if (chunks.length !== 0) {\n // Fast forward to current Chunk\n if (currentChunkPath) {\n for (let i = 0; i < chunks.length; i++) {\n if (chunks[i] === currentChunkPath) {\n chunkIndex = i;\n break;\n }\n }\n if (chunkIndex === -1) {\n throw new Error(`Chunk ${currentChunkPath} not found.`);\n }\n } else {\n chunkIndex = 0;\n }\n\n // Fast forward to current Chunk.\n if (chunkIndex > 0) {\n chunks.splice(0, chunkIndex);\n }\n\n currentChunk = await this.chunkFactory.create(\n containerClient,\n chunks.shift()!,\n blockOffset,\n eventIndex,\n {\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n }\n );\n }\n\n return new Shard(containerClient, this.chunkFactory, chunks, currentChunk, shardPath);\n } catch (e: any) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n } finally {\n span.end();\n }\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport * from \"./BlobChangeFeedClient\";\nexport * from \"./models/BlobChangeFeedEvent\";\nexport * from \"./models/models\";\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../../src/log.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,kBAAkB,CAAC,yBAAyB,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { createClientLogger } from \"@azure/logger\";\n\n/**\n * The `@azure/logger` configuration for this package.\n */\nexport const logger = createClientLogger(\"storage-blob-changefeed\");\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BlobChangeFeedEvent.js","sourceRoot":"","sources":["../../../../src/models/BlobChangeFeedEvent.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n// https://msazure.visualstudio.com/One/_git/Storage-XStore?path=%2Fsrc%2FXTable%2FNotifications%2Flib%2FBlobChangeEventv4.json&version=GBmaster\n\n/**\n * Change feed event record types.\n */\nexport type BlobChangeFeedEventType =\n | \"UnspecifiedEventType\"\n | \"BlobCreated\"\n | \"BlobDeleted\"\n | \"BlobPropertiesUpdated\"\n | \"BlobSnapshotCreated\"\n | \"Control\"\n | \"BlobTierChanged\"\n | \"BlobAsyncOperationInitiated\"\n | \"BlobMetadataUpdated\"\n | \"RestorePointMarkerCreated\";\n\n/**\n * Change feed event record. Contains response data for the {@link BlobChangeFeedClient.listChanges} operation.\n * @see https://docs.microsoft.com/en-us/azure/event-grid/event-schema-blob-storage?toc=/azure/storage/blobs/toc.json#event-properties\n */\nexport interface BlobChangeFeedEvent {\n /**\n * Full resource path to the event source. This field is not writeable. Event Grid provides this value.\n */\n topic: string;\n\n /**\n * Publisher-defined path to the event subject.\n */\n subject: string;\n\n /**\n * One of the registered event types for this event source.\n */\n eventType: BlobChangeFeedEventType;\n\n /**\n * The time the event is generated based on the provider's UTC time.\n */\n eventTime: Date;\n\n /**\n * Unique identifier for the event.\n */\n id: string; // GUID\n\n /**\n * Blob storage event data.\n */\n data: BlobChangeFeedEventData;\n\n /**\n * The schema version of the data object. The publisher defines the schema version.\n */\n dataVersion?: string;\n\n /**\n * The schema version of the data object. The publisher defines the schema version.\n */\n schemaVersion?: number;\n\n /**\n * The schema version of the event metadata. Event Grid defines the schema of the top-level properties. Event Grid provides this value.\n */\n metadataVersion: string;\n}\n\n/**\n * The type of blob.\n */\nexport type BlobType = \"BlockBlob\" | \"AppendBlob\" | \"PageBlob\";\n\n/**\n * The AccessTier.\n */\nexport type AccessTier =\n | \"P4\"\n | \"P6\"\n | \"P10\"\n | \"P15\"\n | \"P20\"\n | \"P30\"\n | \"P40\"\n | \"P50\"\n | \"P60\"\n | \"P70\"\n | \"P80\"\n | \"Hot\"\n | \"Cool\"\n | \"Archive\";\n\n/**\n * A blob property that was updated.\n */\nexport interface BlobPropertyChange {\n /**\n * The name of the property that was updated.\n */\n propertyName: string;\n /**\n * The previous value of the property.\n */\n oldValue: string;\n /**\n * The new value of the property.\n */\n newValue: string;\n}\n/**\n * Blob properties that were updated during an event.\n */\nexport type UpdatedBlobProperties = Record<string, BlobPropertyChange>;\n/**\n * Previous info for Change Feed Event.\n */\nexport interface ChangeFeedEventPreviousInfo {\n /**\n * Soft delete snapshot.\n */\n softDeleteSnapshot?: string;\n /**\n * If the blob was soft deleted.\n */\n isBlobSoftDeleted: boolean;\n /**\n * Blob version.\n */\n newBlobVersion?: string;\n /**\n * Last version.\n */\n oldBlobVersion?: string;\n /**\n * Previous Access Tier\n */\n previousTier?: AccessTier;\n}\n\n/**\n * ChangeFeedEvent AsyncOperationInfo\n */\nexport interface BlobOperationResult {\n /**\n * Destination access tier.\n */\n destinationAccessTier?: AccessTier;\n /**\n * If the operation was async.\n */\n isAsync: boolean;\n /**\n * Copy Id.\n */\n copyId?: string;\n}\n\n/**\n * Blob tags that were updated as part of the change feed event.\n */\nexport interface BlobTagsChange {\n /**\n * Previous Tags.\n */\n oldTags: Record<string, string>;\n /**\n * New Tags.\n */\n newTags: Record<string, string>;\n}\n\n/**\n * Change feed Blob storage event data.\n */\nexport interface BlobChangeFeedEventData {\n /**\n * The operation that triggered the event.\n */\n api: string;\n\n /**\n * A client-provided request id for the storage API operation. This id can be used to\n * correlate to Azure Storage diagnostic logs using the \"client-request-id\" field in the logs,\n * and can be provided in client requests using the \"x-ms-client-request-id\" header.\n */\n clientRequestId: string; // GUID\n\n /**\n * Service-generated request id for the storage API operation. Can be used to correlate to Azure Storage\n * diagnostic logs using the \"request-id-header\" field in the logs and is returned from initiating API call\n * in the 'x-ms-request-id' header.\n */\n requestId: string; // GUID\n\n /**\n * The value that you can use to perform operations conditionally.\n */\n etag: string;\n\n /**\n * The content type specified for the blob.\n */\n contentType: string;\n\n /**\n * The size of the blob in bytes.\n */\n contentLength: number;\n\n /**\n * The offset in bytes of a write operation taken at the point where the event-triggering application completed\n * writing to the file.\n * Appears only for events triggered on blob storage accounts that have a hierarchical namespace.\n */\n contentOffset?: number;\n\n /**\n * The type of blob.\n */\n blobType: BlobType;\n\n /**\n * The path to the blob. If the client uses a Blob REST API, then the url has this structure:\n * <storage-account-name>.blob.core.windows.net/<container-name>/<file-name>.\n */\n url: string;\n\n /**\n * The url of the file that will exist after the operation completes. For example, if a file is renamed,\n * the destinationUrl property contains the url of the new file name.\n * Appears only for events triggered on blob storage accounts that have a hierarchical namespace.\n */\n destinationUrl?: string;\n\n /**\n * The url of the file that exists prior to the operation. For example, if a file is renamed, the sourceUrl\n * contains the url of the original file name prior to the rename operation.\n * Appears only for events triggered on blob storage accounts that have a hierarchical namespace.\n */\n sourceUrl?: string;\n\n /**\n * True to perform the operation on all child directories; otherwise False.\n * Appears only for events triggered on blob storage accounts that have a hierarchical namespace.\n */\n isRecursive?: boolean;\n\n /**\n * An opaque string value representing the logical sequence of events for any particular blob name.\n * Users can use standard string comparison to understand the relative sequence of two events on the same blob name.\n */\n sequencer: string;\n\n /**\n * Previous info for the blob.\n */\n previousInfo?: ChangeFeedEventPreviousInfo;\n\n /**\n * Blob properties that were updated during this event.\n */\n updatedBlobProperties?: UpdatedBlobProperties;\n\n /**\n * Blob tags that were updated during this event.\n */\n updatedBlobTags?: BlobTagsChange;\n\n /**\n * The Snapshot associated with the event.\n */\n snapshot?: string;\n\n /**\n * Version of the blob.\n */\n blobVersion?: string;\n\n /**\n * Version of the container the blob is in.\n */\n containerVersion?: string;\n\n /**\n * Access Tier of the blob.\n */\n blobAccessTier?: AccessTier;\n /**\n * AsyncOperationInfo\n */\n longRunningOperationInfo?: BlobOperationResult;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ChangeFeedCursor.js","sourceRoot":"","sources":["../../../../src/models/ChangeFeedCursor.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport interface ChangeFeedCursor {\n CursorVersion: number;\n // The host component of the container URL.\n UrlHost: string;\n EndTime?: string;\n CurrentSegmentCursor: SegmentCursor;\n}\n\nexport interface SegmentCursor {\n ShardCursors: ShardCursor[];\n CurrentShardPath: string;\n SegmentPath: string;\n}\n\nexport interface ShardCursor {\n CurrentChunkPath: string;\n BlockOffset: number;\n EventIndex: number;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../../src/models/models.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { CommonOptions } from \"@azure/storage-blob\";\nimport { AbortSignalLike } from \"@azure/core-http\";\n\n/**\n * Options to configure {@link BlobChangeFeedClient.listChanges} operation.\n */\nexport interface BlobChangeFeedListChangesOptions 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 * Specify the start of the time range during which the change feed records will be fetched.\n * Note that for now the change feed client will round start time down to the nearest hour.\n */\n start?: Date;\n\n /**\n * Specify the end of the time range during which the change feed records will be fetched.\n * Note that for now the change feed client will round end time up to the nearest hour.\n */\n end?: Date;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,CAAC,MAAM,WAAW,GAAW,kBAAkB,CAAC;AAEtD,MAAM,CAAC,MAAM,0BAA0B,GAAW,iBAAiB,CAAC;AACpE,MAAM,CAAC,MAAM,6BAA6B,GAAW,oBAAoB,CAAC;AAC1E,MAAM,CAAC,MAAM,4BAA4B,GAAW,WAAW,CAAC;AAChE,MAAM,CAAC,MAAM,0BAA0B,GAAW,eAAe,CAAC;AAClE,MAAM,CAAC,MAAM,kCAAkC,GAAW,MAAM,CAAC;AAEjE,MAAM,CAAC,MAAM,yBAAyB,GAAW,IAAI,CAAC,CAAC,sCAAsC;AAC7F,MAAM,CAAC,MAAM,qCAAqC,GAAW,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport const SDK_VERSION: string = \"12.0.0-preview.4\";\n\nexport const CHANGE_FEED_CONTAINER_NAME: string = \"$blobchangefeed\";\nexport const CHANGE_FEED_META_SEGMENT_PATH: string = \"meta/segments.json\";\nexport const CHANGE_FEED_STATUS_FINALIZED: string = \"Finalized\";\nexport const CHANGE_FEED_SEGMENT_PREFIX: string = \"idx/segments/\";\nexport const CHANGE_FEED_INITIALIZATION_SEGMENT: string = \"1601\";\n\nexport const CHANGE_FEED_MAX_PAGE_SIZE: number = 5000; // align with rest API list operations\nexport const CHANGE_FEED_CHUNK_BLOCK_DOWNLOAD_SIZE: number = 16 * 1024 * 1024;\n"]}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Microsoft Corporation.
|
|
2
|
-
// Licensed under the MIT license.
|
|
3
|
-
import { createSpanFunction } from "@azure/core-tracing";
|
|
4
|
-
/**
|
|
5
|
-
* Creates a span using the global tracer.
|
|
6
|
-
* @internal
|
|
7
|
-
*/
|
|
8
|
-
export const createSpan = createSpanFunction({
|
|
9
|
-
packagePrefix: "Azure.Storage.Blob.Changefeed",
|
|
10
|
-
namespace: "Microsoft.Storage",
|
|
11
|
-
});
|
|
12
|
-
//# sourceMappingURL=tracing.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../../../src/utils/tracing.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,kBAAkB,CAAC;IAC3C,aAAa,EAAE,+BAA+B;IAC9C,SAAS,EAAE,mBAAmB;CAC/B,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { createSpanFunction } from \"@azure/core-tracing\";\n\n/**\n * Creates a span using the global tracer.\n * @internal\n */\nexport const createSpan = createSpanFunction({\n packagePrefix: \"Azure.Storage.Blob.Changefeed\",\n namespace: \"Microsoft.Storage\",\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.browser.js","sourceRoot":"","sources":["../../../../src/utils/utils.browser.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAGC;AACD,yCAAyC;AACzC,OAAgB;IAEhB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAS,CAAC;IACtC,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAU;IAC3C,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IACpC,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,UAAU,CAAC,SAAS,GAAG,CAAC,EAAO,EAAE,EAAE;YACjC,OAAO,CAAC,EAAE,CAAC,MAAO,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC;QACF,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC;QAC5B,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,WAAW;AACb,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * Read body from downloading operation methods to string.\n * Works in both Node.js and browsers.\n *\n * @param response - Convenience layer methods response with downloaded body\n * @param length - Length of Readable stream, needed for Node.js environment\n */\nexport async function bodyToString(\n response: {\n readableStreamBody?: NodeJS.ReadableStream;\n blobBody?: Promise<Blob>;\n },\n // tslint:disable-next-line:variable-name\n _length?: number\n): Promise<string> {\n const blob = await response.blobBody!;\n return blobToString(blob);\n}\n\nexport async function blobToString(blob: Blob): Promise<string> {\n const fileReader = new FileReader();\n return new Promise<string>((resolve, reject) => {\n fileReader.onloadend = (ev: any) => {\n resolve(ev.target!.result);\n };\n fileReader.onerror = reject;\n fileReader.readAsText(blob);\n });\n}\n\nexport function bodyToAvroReadable(): void {\n /* empty */\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.common.js","sourceRoot":"","sources":["../../../../src/utils/utils.common.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { URLBuilder, AbortSignalLike } from \"@azure/core-http\";\nimport { ContainerClient, CommonOptions } from \"@azure/storage-blob\";\nimport { CHANGE_FEED_SEGMENT_PREFIX, CHANGE_FEED_INITIALIZATION_SEGMENT } from \"./constants\";\nimport { createSpan } from \"./tracing\";\nimport { SpanStatusCode } from \"@azure/core-tracing\";\nimport { BlobChangeFeedEvent, UpdatedBlobProperties } from \"../models/BlobChangeFeedEvent\";\n\nconst millisecondsInAnHour = 60 * 60 * 1000;\nexport function ceilToNearestHour(date: Date | undefined): Date | undefined {\n if (date === undefined) {\n return undefined;\n }\n return new Date(Math.ceil(date.getTime() / millisecondsInAnHour) * millisecondsInAnHour);\n}\n\nexport function floorToNearestHour(date: Date | undefined): Date | undefined {\n if (date === undefined) {\n return undefined;\n }\n return new Date(Math.floor(date.getTime() / millisecondsInAnHour) * millisecondsInAnHour);\n}\n\n/**\n * Get host from an URL string.\n *\n * @param url - Source URL string\n */\nexport function getHost(url: string): string | undefined {\n const urlParsed = URLBuilder.parse(url);\n return urlParsed.getHost();\n}\n\n/**\n * Get URI from an URL string.\n *\n * @param url - Source URL string\n */\nexport function getURI(url: string): string {\n const urlParsed = URLBuilder.parse(url);\n return `${urlParsed.getHost()}${urlParsed.getPort()}${urlParsed.getPath()}`;\n}\n\n// s[0]*31^(n - 1) + s[1]*31^(n - 2) + ... + s[n - 1]\nexport function hashString(str: string): number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash = (hash << 5) - hash + str.charCodeAt(i);\n hash |= 0; // Bit operation converts operands to 32-bit integers\n }\n return hash;\n}\n\n/**\n * Options to configure {@link getYearsPaths} operation.\n */\nexport interface GetYearsPathsOptions 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 async function getYearsPaths(\n containerClient: ContainerClient,\n options: GetYearsPathsOptions = {}\n): Promise<number[]> {\n const { span, updatedOptions } = createSpan(\"getYearsPaths\", options);\n try {\n const years: number[] = [];\n for await (const item of containerClient.listBlobsByHierarchy(\"/\", {\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n prefix: CHANGE_FEED_SEGMENT_PREFIX,\n })) {\n if (item.kind === \"prefix\" && !item.name.includes(CHANGE_FEED_INITIALIZATION_SEGMENT)) {\n const yearStr = item.name.slice(CHANGE_FEED_SEGMENT_PREFIX.length, -1);\n years.push(parseInt(yearStr));\n }\n }\n return years.sort((a, b) => a - b);\n } catch (e: any) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n } finally {\n span.end();\n }\n}\n\n/**\n * Options to configure {@link getSegmentsInYear} operation.\n */\nexport interface GetSegmentsInYearOptions 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 async function getSegmentsInYear(\n containerClient: ContainerClient,\n year: number,\n startTime?: Date,\n endTime?: Date,\n options: GetSegmentsInYearOptions = {}\n): Promise<string[]> {\n const { span, updatedOptions } = createSpan(\"getSegmentsInYear\", options);\n\n try {\n const segments: string[] = [];\n const yearBeginTime = new Date(Date.UTC(year, 0));\n if (endTime && yearBeginTime >= endTime) {\n return segments;\n }\n\n const prefix = `${CHANGE_FEED_SEGMENT_PREFIX}${year}/`;\n for await (const item of containerClient.listBlobsFlat({\n prefix,\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n })) {\n const segmentTime = parseDateFromSegmentPath(item.name);\n if ((startTime && segmentTime < startTime) || (endTime && segmentTime >= endTime)) {\n continue;\n }\n segments.push(item.name);\n }\n return segments;\n } catch (e: any) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n } finally {\n span.end();\n }\n}\n\nexport function parseDateFromSegmentPath(segmentPath: string): Date {\n const splitPath = segmentPath.split(\"/\");\n if (splitPath.length < 3) {\n throw new Error(`${segmentPath} is not a valid segment path.`);\n }\n\n const segmentTime = new Date(0);\n segmentTime.setUTCFullYear(parseInt(splitPath[2]));\n\n if (splitPath.length >= 4) {\n segmentTime.setUTCMonth(parseInt(splitPath[3]) - 1);\n }\n if (splitPath.length >= 5) {\n segmentTime.setUTCDate(parseInt(splitPath[4]));\n }\n if (splitPath.length >= 6) {\n segmentTime.setUTCHours(parseInt(splitPath[5]) / 100);\n }\n return segmentTime;\n}\n\nexport function minDate(dateA: Date, dateB?: Date): Date {\n if (dateB && dateB < dateA) {\n return dateB;\n }\n return dateA;\n}\n\nexport function rawEventToBlobChangeFeedEvent(rawEvent: Record<string, any>): BlobChangeFeedEvent {\n if (rawEvent.eventTime) {\n rawEvent.eventTime = new Date(rawEvent.eventTime);\n }\n if (rawEvent.eTag) {\n rawEvent.etag = rawEvent.eTag;\n delete rawEvent.eTag;\n }\n if (rawEvent.data) {\n if (rawEvent.data.recursive !== undefined) {\n rawEvent.data.isRecursive = rawEvent.data.recursive;\n delete rawEvent.data.recursive;\n }\n if (rawEvent.data.previousInfo) {\n const previousInfo = rawEvent.data.previousInfo;\n\n if (previousInfo.SoftDeleteSnapshot) {\n previousInfo.softDeleteSnapshot = previousInfo.SoftDeleteSnapshot;\n delete previousInfo.SoftDeleteSnapshot;\n }\n if (previousInfo.WasBlobSoftDeleted) {\n previousInfo.isBlobSoftDeleted = previousInfo.WasBlobSoftDeleted === \"true\";\n delete previousInfo.WasBlobSoftDeleted;\n }\n if (previousInfo.BlobVersion) {\n previousInfo.newBlobVersion = previousInfo.BlobVersion;\n delete previousInfo.BlobVersion;\n }\n if (previousInfo.LastVersion) {\n previousInfo.oldBlobVersion = previousInfo.LastVersion;\n delete previousInfo.LastVersion;\n }\n if (previousInfo.PreviousTier) {\n previousInfo.previousTier = previousInfo.PreviousTier;\n delete previousInfo.PreviousTier;\n }\n\n rawEvent.data.previousInfo = previousInfo;\n }\n\n if (rawEvent.data.blobPropertiesUpdated) {\n const updatedBlobProperties: UpdatedBlobProperties = {};\n Object.entries(rawEvent.data.blobPropertiesUpdated).map((item) => {\n const blobPropertyChange = {\n propertyName: item[0],\n oldValue: (item[1] as any).previous as string,\n newValue: (item[1] as any).current as string,\n };\n updatedBlobProperties[item[0]] = blobPropertyChange;\n });\n rawEvent.data.updatedBlobProperties = updatedBlobProperties;\n delete rawEvent.data.blobPropertiesUpdated;\n }\n\n if (rawEvent.data.asyncOperationInfo) {\n const longRunningOperationInfo = rawEvent.data.asyncOperationInfo;\n if (longRunningOperationInfo.DestinationTier) {\n longRunningOperationInfo.destinationAccessTier = longRunningOperationInfo.DestinationTier;\n delete longRunningOperationInfo.DestinationTier;\n }\n if (\"WasAsyncOperation\" in longRunningOperationInfo) {\n longRunningOperationInfo.isAsync = longRunningOperationInfo.WasAsyncOperation === \"true\";\n delete longRunningOperationInfo.WasAsyncOperation;\n }\n if (longRunningOperationInfo.CopyId) {\n longRunningOperationInfo.copyId = longRunningOperationInfo.CopyId;\n delete longRunningOperationInfo.CopyId;\n }\n rawEvent.data.longRunningOperationInfo = longRunningOperationInfo;\n delete rawEvent.data.asyncOperationInfo;\n }\n\n if (rawEvent.data.blobTagsUpdated) {\n rawEvent.data.updatedBlobTags = {\n newTags: rawEvent.data.blobTagsUpdated.current,\n oldTags: rawEvent.data.blobTagsUpdated.previous,\n };\n\n delete rawEvent.data.blobTagsUpdated;\n }\n\n if (rawEvent.data.blobTier) {\n rawEvent.data.blobAccessTier = rawEvent.data.blobTier;\n delete rawEvent.data.blobTier;\n }\n }\n\n return rawEvent as BlobChangeFeedEvent;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.node.js","sourceRoot":"","sources":["../../../../src/utils/utils.node.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAgB,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAE1F;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAGC,EACD,MAAe;IAEf,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,QAAQ,CAAC,kBAAmB,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;YAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,kBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxD,IAAI,KAAK,EAAE;gBACT,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;aAC3B;QACH,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,kBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACjD,QAAQ,CAAC,kBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YAC1C,OAAO,CAAC,EAAE,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,cAAqC;IACxE,OAAO,IAAI,sBAAsB,CAAC,cAAc,CAAC,CAAC;AACpD,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AvroReadable, AvroReadableFromStream } from \"../../../storage-internal-avro/src\";\n\n/**\n * Read body from downloading operation methods to string.\n * Works in both Node.js and browsers.\n *\n * @param response - Convenience layer methods response with downloaded body\n * @param length - Length of Readable stream, needed for Node.js environment\n */\nexport async function bodyToString(\n response: {\n readableStreamBody?: NodeJS.ReadableStream;\n blobBody?: Promise<Blob>;\n },\n length?: number\n): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n response.readableStreamBody!.on(\"readable\", () => {\n const chunk = response.readableStreamBody!.read(length);\n if (chunk) {\n resolve(chunk.toString());\n }\n });\n\n response.readableStreamBody!.on(\"error\", reject);\n response.readableStreamBody!.on(\"end\", () => {\n resolve(\"\");\n });\n });\n}\n\nexport function streamToAvroReadable(readableStream: NodeJS.ReadableStream): AvroReadable {\n return new AvroReadableFromStream(readableStream);\n}\n"]}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Microsoft Corporation.
|
|
2
|
-
// Licensed under the MIT license.
|
|
3
|
-
export const AVRO_SYNC_MARKER_SIZE = 16;
|
|
4
|
-
export const AVRO_INIT_BYTES = new Uint8Array([79, 98, 106, 1]);
|
|
5
|
-
export const AVRO_CODEC_KEY = "avro.codec";
|
|
6
|
-
export const AVRO_SCHEMA_KEY = "avro.schema";
|
|
7
|
-
//# sourceMappingURL=AvroConstants.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AvroConstants.js","sourceRoot":"","sources":["../../../../storage-internal-avro/src/AvroConstants.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,CAAC,MAAM,qBAAqB,GAAW,EAAE,CAAC;AAChD,MAAM,CAAC,MAAM,eAAe,GAAe,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,cAAc,GAAW,YAAY,CAAC;AACnD,MAAM,CAAC,MAAM,eAAe,GAAW,aAAa,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport const AVRO_SYNC_MARKER_SIZE: number = 16;\nexport const AVRO_INIT_BYTES: Uint8Array = new Uint8Array([79, 98, 106, 1]);\nexport const AVRO_CODEC_KEY: string = \"avro.codec\";\nexport const AVRO_SCHEMA_KEY: string = \"avro.schema\";\n"]}
|
|
@@ -1,311 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Microsoft Corporation.
|
|
2
|
-
// Licensed under the MIT license.
|
|
3
|
-
export class AvroParser {
|
|
4
|
-
/**
|
|
5
|
-
* Reads a fixed number of bytes from the stream.
|
|
6
|
-
*
|
|
7
|
-
* @param stream -
|
|
8
|
-
* @param length -
|
|
9
|
-
* @param options -
|
|
10
|
-
*/
|
|
11
|
-
static async readFixedBytes(stream, length, options = {}) {
|
|
12
|
-
const bytes = await stream.read(length, { abortSignal: options.abortSignal });
|
|
13
|
-
if (bytes.length !== length) {
|
|
14
|
-
throw new Error("Hit stream end.");
|
|
15
|
-
}
|
|
16
|
-
return bytes;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Reads a single byte from the stream.
|
|
20
|
-
*
|
|
21
|
-
* @param stream -
|
|
22
|
-
* @param options -
|
|
23
|
-
*/
|
|
24
|
-
static async readByte(stream, options = {}) {
|
|
25
|
-
const buf = await AvroParser.readFixedBytes(stream, 1, options);
|
|
26
|
-
return buf[0];
|
|
27
|
-
}
|
|
28
|
-
// int and long are stored in variable-length zig-zag coding.
|
|
29
|
-
// variable-length: https://lucene.apache.org/core/3_5_0/fileformats.html#VInt
|
|
30
|
-
// zig-zag: https://developers.google.com/protocol-buffers/docs/encoding?csw=1#types
|
|
31
|
-
static async readZigZagLong(stream, options = {}) {
|
|
32
|
-
let zigZagEncoded = 0;
|
|
33
|
-
let significanceInBit = 0;
|
|
34
|
-
let byte, haveMoreByte, significanceInFloat;
|
|
35
|
-
do {
|
|
36
|
-
byte = await AvroParser.readByte(stream, options);
|
|
37
|
-
haveMoreByte = byte & 0x80;
|
|
38
|
-
zigZagEncoded |= (byte & 0x7f) << significanceInBit;
|
|
39
|
-
significanceInBit += 7;
|
|
40
|
-
} while (haveMoreByte && significanceInBit < 28); // bitwise operation only works for 32-bit integers
|
|
41
|
-
if (haveMoreByte) {
|
|
42
|
-
// Switch to float arithmetic
|
|
43
|
-
// eslint-disable-next-line no-self-assign
|
|
44
|
-
zigZagEncoded = zigZagEncoded;
|
|
45
|
-
significanceInFloat = 268435456; // 2 ** 28.
|
|
46
|
-
do {
|
|
47
|
-
byte = await AvroParser.readByte(stream, options);
|
|
48
|
-
zigZagEncoded += (byte & 0x7f) * significanceInFloat;
|
|
49
|
-
significanceInFloat *= 128; // 2 ** 7
|
|
50
|
-
} while (byte & 0x80);
|
|
51
|
-
const res = (zigZagEncoded % 2 ? -(zigZagEncoded + 1) : zigZagEncoded) / 2;
|
|
52
|
-
if (res < Number.MIN_SAFE_INTEGER || res > Number.MAX_SAFE_INTEGER) {
|
|
53
|
-
throw new Error("Integer overflow.");
|
|
54
|
-
}
|
|
55
|
-
return res;
|
|
56
|
-
}
|
|
57
|
-
return (zigZagEncoded >> 1) ^ -(zigZagEncoded & 1);
|
|
58
|
-
}
|
|
59
|
-
static async readLong(stream, options = {}) {
|
|
60
|
-
return AvroParser.readZigZagLong(stream, options);
|
|
61
|
-
}
|
|
62
|
-
static async readInt(stream, options = {}) {
|
|
63
|
-
return AvroParser.readZigZagLong(stream, options);
|
|
64
|
-
}
|
|
65
|
-
static async readNull() {
|
|
66
|
-
return null;
|
|
67
|
-
}
|
|
68
|
-
static async readBoolean(stream, options = {}) {
|
|
69
|
-
const b = await AvroParser.readByte(stream, options);
|
|
70
|
-
if (b === 1) {
|
|
71
|
-
return true;
|
|
72
|
-
}
|
|
73
|
-
else if (b === 0) {
|
|
74
|
-
return false;
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
throw new Error("Byte was not a boolean.");
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
static async readFloat(stream, options = {}) {
|
|
81
|
-
const u8arr = await AvroParser.readFixedBytes(stream, 4, options);
|
|
82
|
-
const view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);
|
|
83
|
-
return view.getFloat32(0, true); // littleEndian = true
|
|
84
|
-
}
|
|
85
|
-
static async readDouble(stream, options = {}) {
|
|
86
|
-
const u8arr = await AvroParser.readFixedBytes(stream, 8, options);
|
|
87
|
-
const view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);
|
|
88
|
-
return view.getFloat64(0, true); // littleEndian = true
|
|
89
|
-
}
|
|
90
|
-
static async readBytes(stream, options = {}) {
|
|
91
|
-
const size = await AvroParser.readLong(stream, options);
|
|
92
|
-
if (size < 0) {
|
|
93
|
-
throw new Error("Bytes size was negative.");
|
|
94
|
-
}
|
|
95
|
-
return stream.read(size, { abortSignal: options.abortSignal });
|
|
96
|
-
}
|
|
97
|
-
static async readString(stream, options = {}) {
|
|
98
|
-
const u8arr = await AvroParser.readBytes(stream, options);
|
|
99
|
-
const utf8decoder = new TextDecoder();
|
|
100
|
-
return utf8decoder.decode(u8arr);
|
|
101
|
-
}
|
|
102
|
-
static async readMapPair(stream, readItemMethod, options = {}) {
|
|
103
|
-
const key = await AvroParser.readString(stream, options);
|
|
104
|
-
// FUTURE: this won't work with readFixed (currently not supported) which needs a length as the parameter.
|
|
105
|
-
const value = await readItemMethod(stream, options);
|
|
106
|
-
return { key, value };
|
|
107
|
-
}
|
|
108
|
-
static async readMap(stream, readItemMethod, options = {}) {
|
|
109
|
-
const readPairMethod = (s, opts = {}) => {
|
|
110
|
-
return AvroParser.readMapPair(s, readItemMethod, opts);
|
|
111
|
-
};
|
|
112
|
-
const pairs = await AvroParser.readArray(stream, readPairMethod, options);
|
|
113
|
-
const dict = {};
|
|
114
|
-
for (const pair of pairs) {
|
|
115
|
-
dict[pair.key] = pair.value;
|
|
116
|
-
}
|
|
117
|
-
return dict;
|
|
118
|
-
}
|
|
119
|
-
static async readArray(stream, readItemMethod, options = {}) {
|
|
120
|
-
const items = [];
|
|
121
|
-
for (let count = await AvroParser.readLong(stream, options); count !== 0; count = await AvroParser.readLong(stream, options)) {
|
|
122
|
-
if (count < 0) {
|
|
123
|
-
// Ignore block sizes
|
|
124
|
-
await AvroParser.readLong(stream, options);
|
|
125
|
-
count = -count;
|
|
126
|
-
}
|
|
127
|
-
while (count--) {
|
|
128
|
-
const item = await readItemMethod(stream, options);
|
|
129
|
-
items.push(item);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
return items;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
var AvroComplex;
|
|
136
|
-
(function (AvroComplex) {
|
|
137
|
-
AvroComplex["RECORD"] = "record";
|
|
138
|
-
AvroComplex["ENUM"] = "enum";
|
|
139
|
-
AvroComplex["ARRAY"] = "array";
|
|
140
|
-
AvroComplex["MAP"] = "map";
|
|
141
|
-
AvroComplex["UNION"] = "union";
|
|
142
|
-
AvroComplex["FIXED"] = "fixed";
|
|
143
|
-
})(AvroComplex || (AvroComplex = {}));
|
|
144
|
-
var AvroPrimitive;
|
|
145
|
-
(function (AvroPrimitive) {
|
|
146
|
-
AvroPrimitive["NULL"] = "null";
|
|
147
|
-
AvroPrimitive["BOOLEAN"] = "boolean";
|
|
148
|
-
AvroPrimitive["INT"] = "int";
|
|
149
|
-
AvroPrimitive["LONG"] = "long";
|
|
150
|
-
AvroPrimitive["FLOAT"] = "float";
|
|
151
|
-
AvroPrimitive["DOUBLE"] = "double";
|
|
152
|
-
AvroPrimitive["BYTES"] = "bytes";
|
|
153
|
-
AvroPrimitive["STRING"] = "string";
|
|
154
|
-
})(AvroPrimitive || (AvroPrimitive = {}));
|
|
155
|
-
export class AvroType {
|
|
156
|
-
/**
|
|
157
|
-
* Determines the AvroType from the Avro Schema.
|
|
158
|
-
*/
|
|
159
|
-
static fromSchema(schema) {
|
|
160
|
-
if (typeof schema === "string") {
|
|
161
|
-
return AvroType.fromStringSchema(schema);
|
|
162
|
-
}
|
|
163
|
-
else if (Array.isArray(schema)) {
|
|
164
|
-
return AvroType.fromArraySchema(schema);
|
|
165
|
-
}
|
|
166
|
-
else {
|
|
167
|
-
return AvroType.fromObjectSchema(schema);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
static fromStringSchema(schema) {
|
|
171
|
-
switch (schema) {
|
|
172
|
-
case AvroPrimitive.NULL:
|
|
173
|
-
case AvroPrimitive.BOOLEAN:
|
|
174
|
-
case AvroPrimitive.INT:
|
|
175
|
-
case AvroPrimitive.LONG:
|
|
176
|
-
case AvroPrimitive.FLOAT:
|
|
177
|
-
case AvroPrimitive.DOUBLE:
|
|
178
|
-
case AvroPrimitive.BYTES:
|
|
179
|
-
case AvroPrimitive.STRING:
|
|
180
|
-
return new AvroPrimitiveType(schema);
|
|
181
|
-
default:
|
|
182
|
-
throw new Error(`Unexpected Avro type ${schema}`);
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
static fromArraySchema(schema) {
|
|
186
|
-
return new AvroUnionType(schema.map(AvroType.fromSchema));
|
|
187
|
-
}
|
|
188
|
-
static fromObjectSchema(schema) {
|
|
189
|
-
const type = schema.type;
|
|
190
|
-
// Primitives can be defined as strings or objects
|
|
191
|
-
try {
|
|
192
|
-
return AvroType.fromStringSchema(type);
|
|
193
|
-
}
|
|
194
|
-
catch (err) {
|
|
195
|
-
// eslint-disable-line no-empty
|
|
196
|
-
}
|
|
197
|
-
switch (type) {
|
|
198
|
-
case AvroComplex.RECORD:
|
|
199
|
-
if (schema.aliases) {
|
|
200
|
-
throw new Error(`aliases currently is not supported, schema: ${schema}`);
|
|
201
|
-
}
|
|
202
|
-
if (!schema.name) {
|
|
203
|
-
throw new Error(`Required attribute 'name' doesn't exist on schema: ${schema}`);
|
|
204
|
-
}
|
|
205
|
-
// eslint-disable-next-line no-case-declarations
|
|
206
|
-
const fields = {};
|
|
207
|
-
if (!schema.fields) {
|
|
208
|
-
throw new Error(`Required attribute 'fields' doesn't exist on schema: ${schema}`);
|
|
209
|
-
}
|
|
210
|
-
for (const field of schema.fields) {
|
|
211
|
-
fields[field.name] = AvroType.fromSchema(field.type);
|
|
212
|
-
}
|
|
213
|
-
return new AvroRecordType(fields, schema.name);
|
|
214
|
-
case AvroComplex.ENUM:
|
|
215
|
-
if (schema.aliases) {
|
|
216
|
-
throw new Error(`aliases currently is not supported, schema: ${schema}`);
|
|
217
|
-
}
|
|
218
|
-
if (!schema.symbols) {
|
|
219
|
-
throw new Error(`Required attribute 'symbols' doesn't exist on schema: ${schema}`);
|
|
220
|
-
}
|
|
221
|
-
return new AvroEnumType(schema.symbols);
|
|
222
|
-
case AvroComplex.MAP:
|
|
223
|
-
if (!schema.values) {
|
|
224
|
-
throw new Error(`Required attribute 'values' doesn't exist on schema: ${schema}`);
|
|
225
|
-
}
|
|
226
|
-
return new AvroMapType(AvroType.fromSchema(schema.values));
|
|
227
|
-
case AvroComplex.ARRAY: // Unused today
|
|
228
|
-
case AvroComplex.FIXED: // Unused today
|
|
229
|
-
default:
|
|
230
|
-
throw new Error(`Unexpected Avro type ${type} in ${schema}`);
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
class AvroPrimitiveType extends AvroType {
|
|
235
|
-
constructor(primitive) {
|
|
236
|
-
super();
|
|
237
|
-
this._primitive = primitive;
|
|
238
|
-
}
|
|
239
|
-
read(stream, options = {}) {
|
|
240
|
-
switch (this._primitive) {
|
|
241
|
-
case AvroPrimitive.NULL:
|
|
242
|
-
return AvroParser.readNull();
|
|
243
|
-
case AvroPrimitive.BOOLEAN:
|
|
244
|
-
return AvroParser.readBoolean(stream, options);
|
|
245
|
-
case AvroPrimitive.INT:
|
|
246
|
-
return AvroParser.readInt(stream, options);
|
|
247
|
-
case AvroPrimitive.LONG:
|
|
248
|
-
return AvroParser.readLong(stream, options);
|
|
249
|
-
case AvroPrimitive.FLOAT:
|
|
250
|
-
return AvroParser.readFloat(stream, options);
|
|
251
|
-
case AvroPrimitive.DOUBLE:
|
|
252
|
-
return AvroParser.readDouble(stream, options);
|
|
253
|
-
case AvroPrimitive.BYTES:
|
|
254
|
-
return AvroParser.readBytes(stream, options);
|
|
255
|
-
case AvroPrimitive.STRING:
|
|
256
|
-
return AvroParser.readString(stream, options);
|
|
257
|
-
default:
|
|
258
|
-
throw new Error("Unknown Avro Primitive");
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
class AvroEnumType extends AvroType {
|
|
263
|
-
constructor(symbols) {
|
|
264
|
-
super();
|
|
265
|
-
this._symbols = symbols;
|
|
266
|
-
}
|
|
267
|
-
async read(stream, options = {}) {
|
|
268
|
-
const value = await AvroParser.readInt(stream, options);
|
|
269
|
-
return this._symbols[value];
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
class AvroUnionType extends AvroType {
|
|
273
|
-
constructor(types) {
|
|
274
|
-
super();
|
|
275
|
-
this._types = types;
|
|
276
|
-
}
|
|
277
|
-
async read(stream, options = {}) {
|
|
278
|
-
const typeIndex = await AvroParser.readInt(stream, options);
|
|
279
|
-
return this._types[typeIndex].read(stream, options);
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
class AvroMapType extends AvroType {
|
|
283
|
-
constructor(itemType) {
|
|
284
|
-
super();
|
|
285
|
-
this._itemType = itemType;
|
|
286
|
-
}
|
|
287
|
-
read(stream, options = {}) {
|
|
288
|
-
const readItemMethod = (s, opts) => {
|
|
289
|
-
return this._itemType.read(s, opts);
|
|
290
|
-
};
|
|
291
|
-
return AvroParser.readMap(stream, readItemMethod, options);
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
class AvroRecordType extends AvroType {
|
|
295
|
-
constructor(fields, name) {
|
|
296
|
-
super();
|
|
297
|
-
this._fields = fields;
|
|
298
|
-
this._name = name;
|
|
299
|
-
}
|
|
300
|
-
async read(stream, options = {}) {
|
|
301
|
-
const record = {};
|
|
302
|
-
record["$schema"] = this._name;
|
|
303
|
-
for (const key in this._fields) {
|
|
304
|
-
if (Object.prototype.hasOwnProperty.call(this._fields, key)) {
|
|
305
|
-
record[key] = await this._fields[key].read(stream, options);
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
return record;
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
//# sourceMappingURL=AvroParser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AvroParser.js","sourceRoot":"","sources":["../../../../storage-internal-avro/src/AvroParser.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n// TODO: Do a review of the Object usage and non-interfaces\n/* eslint-disable @typescript-eslint/ban-types, @azure/azure-sdk/ts-use-interface-parameters */\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { AvroReadable } from \"./AvroReadable\";\nimport { KeyValuePair } from \"./utils/utils.common\";\n\n/**\n * Options to configure the AvroParser read methods.\n * See {@link AvroParser.readFixedBytes}, {@link AvroParser.readMap} and etc.\n */\ninterface AvroParserReadOptions {\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 AvroParser {\n /**\n * Reads a fixed number of bytes from the stream.\n *\n * @param stream -\n * @param length -\n * @param options -\n */\n public static async readFixedBytes(\n stream: AvroReadable,\n length: number,\n options: AvroParserReadOptions = {}\n ): Promise<Uint8Array> {\n const bytes = await stream.read(length, { abortSignal: options.abortSignal });\n if (bytes.length !== length) {\n throw new Error(\"Hit stream end.\");\n }\n return bytes;\n }\n\n /**\n * Reads a single byte from the stream.\n *\n * @param stream -\n * @param options -\n */\n private static async readByte(\n stream: AvroReadable,\n options: AvroParserReadOptions = {}\n ): Promise<number> {\n const buf = await AvroParser.readFixedBytes(stream, 1, options);\n return buf[0];\n }\n\n // int and long are stored in variable-length zig-zag coding.\n // variable-length: https://lucene.apache.org/core/3_5_0/fileformats.html#VInt\n // zig-zag: https://developers.google.com/protocol-buffers/docs/encoding?csw=1#types\n private static async readZigZagLong(\n stream: AvroReadable,\n options: AvroParserReadOptions = {}\n ): Promise<number> {\n let zigZagEncoded = 0;\n let significanceInBit = 0;\n let byte, haveMoreByte, significanceInFloat;\n\n do {\n byte = await AvroParser.readByte(stream, options);\n haveMoreByte = byte & 0x80;\n zigZagEncoded |= (byte & 0x7f) << significanceInBit;\n significanceInBit += 7;\n } while (haveMoreByte && significanceInBit < 28); // bitwise operation only works for 32-bit integers\n\n if (haveMoreByte) {\n // Switch to float arithmetic\n // eslint-disable-next-line no-self-assign\n zigZagEncoded = zigZagEncoded;\n significanceInFloat = 268435456; // 2 ** 28.\n do {\n byte = await AvroParser.readByte(stream, options);\n zigZagEncoded += (byte & 0x7f) * significanceInFloat;\n significanceInFloat *= 128; // 2 ** 7\n } while (byte & 0x80);\n\n const res = (zigZagEncoded % 2 ? -(zigZagEncoded + 1) : zigZagEncoded) / 2;\n if (res < Number.MIN_SAFE_INTEGER || res > Number.MAX_SAFE_INTEGER) {\n throw new Error(\"Integer overflow.\");\n }\n return res;\n }\n\n return (zigZagEncoded >> 1) ^ -(zigZagEncoded & 1);\n }\n\n public static async readLong(\n stream: AvroReadable,\n options: AvroParserReadOptions = {}\n ): Promise<number> {\n return AvroParser.readZigZagLong(stream, options);\n }\n\n public static async readInt(\n stream: AvroReadable,\n options: AvroParserReadOptions = {}\n ): Promise<number> {\n return AvroParser.readZigZagLong(stream, options);\n }\n\n public static async readNull(): Promise<null> {\n return null;\n }\n\n public static async readBoolean(\n stream: AvroReadable,\n options: AvroParserReadOptions = {}\n ): Promise<boolean> {\n const b = await AvroParser.readByte(stream, options);\n if (b === 1) {\n return true;\n } else if (b === 0) {\n return false;\n } else {\n throw new Error(\"Byte was not a boolean.\");\n }\n }\n\n public static async readFloat(\n stream: AvroReadable,\n options: AvroParserReadOptions = {}\n ): Promise<number> {\n const u8arr = await AvroParser.readFixedBytes(stream, 4, options);\n const view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);\n return view.getFloat32(0, true); // littleEndian = true\n }\n\n public static async readDouble(\n stream: AvroReadable,\n options: AvroParserReadOptions = {}\n ): Promise<number> {\n const u8arr = await AvroParser.readFixedBytes(stream, 8, options);\n const view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);\n return view.getFloat64(0, true); // littleEndian = true\n }\n\n public static async readBytes(\n stream: AvroReadable,\n options: AvroParserReadOptions = {}\n ): Promise<Uint8Array> {\n const size = await AvroParser.readLong(stream, options);\n if (size < 0) {\n throw new Error(\"Bytes size was negative.\");\n }\n\n return stream.read(size, { abortSignal: options.abortSignal });\n }\n\n public static async readString(\n stream: AvroReadable,\n options: AvroParserReadOptions = {}\n ): Promise<string> {\n const u8arr = await AvroParser.readBytes(stream, options);\n const utf8decoder = new TextDecoder();\n return utf8decoder.decode(u8arr);\n }\n\n private static async readMapPair<T>(\n stream: AvroReadable,\n readItemMethod: (s: AvroReadable, options?: AvroParserReadOptions) => Promise<T>,\n options: AvroParserReadOptions = {}\n ): Promise<KeyValuePair<T>> {\n const key = await AvroParser.readString(stream, options);\n // FUTURE: this won't work with readFixed (currently not supported) which needs a length as the parameter.\n const value = await readItemMethod(stream, options);\n return { key, value };\n }\n\n public static async readMap<T>(\n stream: AvroReadable,\n readItemMethod: (s: AvroReadable, options?: AvroParserReadOptions) => Promise<T>,\n options: AvroParserReadOptions = {}\n ): Promise<Record<string, T>> {\n const readPairMethod = (\n s: AvroReadable,\n opts: AvroParserReadOptions = {}\n ): Promise<KeyValuePair<T>> => {\n return AvroParser.readMapPair(s, readItemMethod, opts);\n };\n\n const pairs: KeyValuePair<T>[] = await AvroParser.readArray(stream, readPairMethod, options);\n\n const dict: Record<string, T> = {};\n for (const pair of pairs) {\n dict[pair.key] = pair.value;\n }\n return dict;\n }\n\n private static async readArray<T>(\n stream: AvroReadable,\n readItemMethod: (s: AvroReadable, options?: AvroParserReadOptions) => Promise<T>,\n options: AvroParserReadOptions = {}\n ): Promise<T[]> {\n const items: T[] = [];\n for (\n let count = await AvroParser.readLong(stream, options);\n count !== 0;\n count = await AvroParser.readLong(stream, options)\n ) {\n if (count < 0) {\n // Ignore block sizes\n await AvroParser.readLong(stream, options);\n count = -count;\n }\n\n while (count--) {\n const item: T = await readItemMethod(stream, options);\n items.push(item);\n }\n }\n return items;\n }\n}\n\ninterface RecordField {\n name: string;\n type: string | ObjectSchema | (string | ObjectSchema)[]; // Unions may not immediately contain other unions.\n}\n\nenum AvroComplex {\n RECORD = \"record\",\n ENUM = \"enum\",\n ARRAY = \"array\",\n MAP = \"map\",\n UNION = \"union\",\n FIXED = \"fixed\",\n}\n\ninterface ObjectSchema {\n type: Exclude<AvroComplex, AvroComplex.UNION>;\n name?: string;\n aliases?: string;\n fields?: RecordField[];\n symbols?: string[];\n values?: string;\n size?: number;\n}\n\nenum AvroPrimitive {\n NULL = \"null\",\n BOOLEAN = \"boolean\",\n INT = \"int\",\n LONG = \"long\",\n FLOAT = \"float\",\n DOUBLE = \"double\",\n BYTES = \"bytes\",\n STRING = \"string\",\n}\n\nexport abstract class AvroType {\n /**\n * Reads an object from the stream.\n */\n public abstract read(\n stream: AvroReadable,\n options?: AvroParserReadOptions\n ): Promise<Object | null>; // eslint-disable-line @typescript-eslint/ban-types\n\n /**\n * Determines the AvroType from the Avro Schema.\n */\n public static fromSchema(schema: string | Object): AvroType {\n if (typeof schema === \"string\") {\n return AvroType.fromStringSchema(schema);\n } else if (Array.isArray(schema)) {\n return AvroType.fromArraySchema(schema);\n } else {\n return AvroType.fromObjectSchema(schema as ObjectSchema);\n }\n }\n\n private static fromStringSchema(schema: string): AvroType {\n switch (schema) {\n case AvroPrimitive.NULL:\n case AvroPrimitive.BOOLEAN:\n case AvroPrimitive.INT:\n case AvroPrimitive.LONG:\n case AvroPrimitive.FLOAT:\n case AvroPrimitive.DOUBLE:\n case AvroPrimitive.BYTES:\n case AvroPrimitive.STRING:\n return new AvroPrimitiveType(schema as AvroPrimitive);\n default:\n throw new Error(`Unexpected Avro type ${schema}`);\n }\n }\n\n private static fromArraySchema(schema: any[]): AvroType {\n return new AvroUnionType(schema.map(AvroType.fromSchema));\n }\n\n private static fromObjectSchema(schema: ObjectSchema): AvroType {\n const type = schema.type;\n // Primitives can be defined as strings or objects\n try {\n return AvroType.fromStringSchema(type);\n } catch (err: any) {\n // eslint-disable-line no-empty\n }\n\n switch (type) {\n case AvroComplex.RECORD:\n if (schema.aliases) {\n throw new Error(`aliases currently is not supported, schema: ${schema}`);\n }\n if (!schema.name) {\n throw new Error(`Required attribute 'name' doesn't exist on schema: ${schema}`);\n }\n\n // eslint-disable-next-line no-case-declarations\n const fields: Record<string, AvroType> = {};\n if (!schema.fields) {\n throw new Error(`Required attribute 'fields' doesn't exist on schema: ${schema}`);\n }\n for (const field of schema.fields) {\n fields[field.name] = AvroType.fromSchema(field.type);\n }\n return new AvroRecordType(fields, schema.name);\n case AvroComplex.ENUM:\n if (schema.aliases) {\n throw new Error(`aliases currently is not supported, schema: ${schema}`);\n }\n if (!schema.symbols) {\n throw new Error(`Required attribute 'symbols' doesn't exist on schema: ${schema}`);\n }\n return new AvroEnumType(schema.symbols);\n case AvroComplex.MAP:\n if (!schema.values) {\n throw new Error(`Required attribute 'values' doesn't exist on schema: ${schema}`);\n }\n return new AvroMapType(AvroType.fromSchema(schema.values));\n case AvroComplex.ARRAY: // Unused today\n case AvroComplex.FIXED: // Unused today\n default:\n throw new Error(`Unexpected Avro type ${type} in ${schema}`);\n }\n }\n}\n\nclass AvroPrimitiveType extends AvroType {\n private _primitive: AvroPrimitive;\n\n constructor(primitive: AvroPrimitive) {\n super();\n this._primitive = primitive;\n }\n\n public read(\n stream: AvroReadable,\n options: AvroParserReadOptions = {}\n ): Promise<Object | null> {\n switch (this._primitive) {\n case AvroPrimitive.NULL:\n return AvroParser.readNull();\n case AvroPrimitive.BOOLEAN:\n return AvroParser.readBoolean(stream, options);\n case AvroPrimitive.INT:\n return AvroParser.readInt(stream, options);\n case AvroPrimitive.LONG:\n return AvroParser.readLong(stream, options);\n case AvroPrimitive.FLOAT:\n return AvroParser.readFloat(stream, options);\n case AvroPrimitive.DOUBLE:\n return AvroParser.readDouble(stream, options);\n case AvroPrimitive.BYTES:\n return AvroParser.readBytes(stream, options);\n case AvroPrimitive.STRING:\n return AvroParser.readString(stream, options);\n default:\n throw new Error(\"Unknown Avro Primitive\");\n }\n }\n}\n\nclass AvroEnumType extends AvroType {\n private readonly _symbols: string[];\n\n constructor(symbols: string[]) {\n super();\n this._symbols = symbols;\n }\n\n public async read(stream: AvroReadable, options: AvroParserReadOptions = {}): Promise<Object> {\n const value = await AvroParser.readInt(stream, options);\n return this._symbols[value];\n }\n}\n\nclass AvroUnionType extends AvroType {\n private readonly _types: AvroType[];\n\n constructor(types: AvroType[]) {\n super();\n this._types = types;\n }\n\n public async read(\n stream: AvroReadable,\n options: AvroParserReadOptions = {}\n ): Promise<Object | null> { // eslint-disable-line @typescript-eslint/ban-types\n const typeIndex = await AvroParser.readInt(stream, options);\n return this._types[typeIndex].read(stream, options);\n }\n}\n\nclass AvroMapType extends AvroType {\n private readonly _itemType: AvroType;\n\n constructor(itemType: AvroType) {\n super();\n this._itemType = itemType;\n }\n\n public read(stream: AvroReadable, options: AvroParserReadOptions = {}): Promise<Object> {\n const readItemMethod = (\n s: AvroReadable,\n opts?: AvroParserReadOptions\n ): Promise<Object | null> => { \n return this._itemType.read(s, opts);\n };\n return AvroParser.readMap(stream, readItemMethod, options);\n }\n}\n\nclass AvroRecordType extends AvroType {\n private readonly _name: string;\n private readonly _fields: Record<string, AvroType>;\n\n constructor(fields: Record<string, AvroType>, name: string) {\n super();\n this._fields = fields;\n this._name = name;\n }\n\n public async read(stream: AvroReadable, options: AvroParserReadOptions = {}): Promise<Object> {\n const record: Record<string, Object | null> = {};\n record[\"$schema\"] = this._name;\n for (const key in this._fields) {\n if (Object.prototype.hasOwnProperty.call(this._fields, key)) {\n record[key] = await this._fields[key].read(stream, options);\n }\n }\n return record;\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AvroReadable.js","sourceRoot":"","sources":["../../../../storage-internal-avro/src/AvroReadable.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAelC,MAAM,OAAgB,YAAY;CAGjC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\n\n/**\n * Options to configure the {@link AvroReadable.read} operation.\n */\nexport interface AvroReadableReadOptions {\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 abstract class AvroReadable {\n public abstract get position(): number;\n public abstract read(size: number, options?: AvroReadableReadOptions): Promise<Uint8Array>;\n}\n"]}
|