@azure/storage-blob-changefeed 12.0.0-alpha.20230206.1 → 12.0.0-alpha.20230216.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +32 -152
- package/dist/index.js.map +1 -1
- package/dist-esm/storage-blob-changefeed/src/BlobChangeFeedClient.js.map +1 -1
- package/dist-esm/storage-blob-changefeed/src/ChangeFeed.js +5 -28
- package/dist-esm/storage-blob-changefeed/src/ChangeFeed.js.map +1 -1
- package/dist-esm/storage-blob-changefeed/src/ChangeFeedFactory.js +3 -15
- package/dist-esm/storage-blob-changefeed/src/ChangeFeedFactory.js.map +1 -1
- package/dist-esm/storage-blob-changefeed/src/Chunk.js.map +1 -1
- package/dist-esm/storage-blob-changefeed/src/ChunkFactory.js.map +1 -1
- package/dist-esm/storage-blob-changefeed/src/LazyLoadingBlobStream.js +7 -29
- package/dist-esm/storage-blob-changefeed/src/LazyLoadingBlobStream.js.map +1 -1
- package/dist-esm/storage-blob-changefeed/src/Segment.js +3 -15
- package/dist-esm/storage-blob-changefeed/src/Segment.js.map +1 -1
- package/dist-esm/storage-blob-changefeed/src/SegmentFactory.js +3 -15
- package/dist-esm/storage-blob-changefeed/src/SegmentFactory.js.map +1 -1
- package/dist-esm/storage-blob-changefeed/src/Shard.js +3 -15
- package/dist-esm/storage-blob-changefeed/src/Shard.js.map +1 -1
- package/dist-esm/storage-blob-changefeed/src/ShardFactory.js +4 -16
- package/dist-esm/storage-blob-changefeed/src/ShardFactory.js.map +1 -1
- package/dist-esm/storage-blob-changefeed/src/models/models.js.map +1 -1
- package/dist-esm/storage-blob-changefeed/src/utils/tracing.js +5 -3
- package/dist-esm/storage-blob-changefeed/src/utils/tracing.js.map +1 -1
- package/dist-esm/storage-blob-changefeed/src/utils/utils.common.js +9 -51
- package/dist-esm/storage-blob-changefeed/src/utils/utils.common.js.map +1 -1
- package/package.json +5 -3
- package/types/3.1/storage-blob-changefeed/src/BlobChangeFeedClient.d.ts +1 -1
- package/types/3.1/storage-blob-changefeed/src/ChangeFeed.d.ts +1 -1
- package/types/3.1/storage-blob-changefeed/src/Chunk.d.ts +1 -1
- package/types/3.1/storage-blob-changefeed/src/ChunkFactory.d.ts +1 -1
- package/types/3.1/storage-blob-changefeed/src/LazyLoadingBlobStream.d.ts +1 -1
- package/types/3.1/storage-blob-changefeed/src/Segment.d.ts +1 -1
- package/types/3.1/storage-blob-changefeed/src/SegmentFactory.d.ts +1 -1
- package/types/3.1/storage-blob-changefeed/src/Shard.d.ts +1 -1
- package/types/3.1/storage-blob-changefeed/src/ShardFactory.d.ts +1 -1
- package/types/3.1/storage-blob-changefeed/src/models/models.d.ts +1 -1
- package/types/3.1/storage-blob-changefeed/src/utils/tracing.d.ts +1 -6
- package/types/3.1/storage-blob-changefeed/src/utils/utils.common.d.ts +1 -8
- package/types/3.1/storage-blob-changefeed/test/utils/index.d.ts +1 -1
- package/types/3.1/storage-blob-changefeed/test/utils/testutils.common.d.ts +1 -1
- package/types/3.1/storage-blob-changefeed.d.ts +2 -2
- package/types/latest/storage-blob-changefeed/src/BlobChangeFeedClient.d.ts +1 -1
- package/types/latest/storage-blob-changefeed/src/ChangeFeed.d.ts +1 -1
- package/types/latest/storage-blob-changefeed/src/ChangeFeed.d.ts.map +1 -1
- package/types/latest/storage-blob-changefeed/src/ChangeFeedFactory.d.ts.map +1 -1
- package/types/latest/storage-blob-changefeed/src/Chunk.d.ts +1 -1
- package/types/latest/storage-blob-changefeed/src/Chunk.d.ts.map +1 -1
- package/types/latest/storage-blob-changefeed/src/ChunkFactory.d.ts +1 -1
- package/types/latest/storage-blob-changefeed/src/ChunkFactory.d.ts.map +1 -1
- package/types/latest/storage-blob-changefeed/src/LazyLoadingBlobStream.d.ts +1 -1
- package/types/latest/storage-blob-changefeed/src/LazyLoadingBlobStream.d.ts.map +1 -1
- package/types/latest/storage-blob-changefeed/src/Segment.d.ts +1 -1
- package/types/latest/storage-blob-changefeed/src/Segment.d.ts.map +1 -1
- package/types/latest/storage-blob-changefeed/src/SegmentFactory.d.ts +1 -1
- package/types/latest/storage-blob-changefeed/src/SegmentFactory.d.ts.map +1 -1
- package/types/latest/storage-blob-changefeed/src/Shard.d.ts +1 -1
- package/types/latest/storage-blob-changefeed/src/Shard.d.ts.map +1 -1
- package/types/latest/storage-blob-changefeed/src/ShardFactory.d.ts +1 -1
- package/types/latest/storage-blob-changefeed/src/ShardFactory.d.ts.map +1 -1
- package/types/latest/storage-blob-changefeed/src/models/models.d.ts +1 -1
- package/types/latest/storage-blob-changefeed/src/models/models.d.ts.map +1 -1
- package/types/latest/storage-blob-changefeed/src/utils/tracing.d.ts +1 -6
- package/types/latest/storage-blob-changefeed/src/utils/tracing.d.ts.map +1 -1
- package/types/latest/storage-blob-changefeed/src/utils/utils.common.d.ts +1 -8
- package/types/latest/storage-blob-changefeed/src/utils/utils.common.d.ts.map +1 -1
- package/types/latest/storage-blob-changefeed/test/utils/index.d.ts +1 -1
- package/types/latest/storage-blob-changefeed/test/utils/testutils.common.d.ts +1 -1
- package/types/latest/storage-blob-changefeed.d.ts +2 -2
package/dist/index.js
CHANGED
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var tslib = require('tslib');
|
|
6
6
|
var storageBlob = require('@azure/storage-blob');
|
|
7
|
-
var coreHttp = require('@azure/core-http');
|
|
8
7
|
var coreTracing = require('@azure/core-tracing');
|
|
9
8
|
var abortController = require('@azure/abort-controller');
|
|
10
9
|
require('@azure/core-paging');
|
|
@@ -25,8 +24,9 @@ const CHANGE_FEED_CHUNK_BLOCK_DOWNLOAD_SIZE = 16 * 1024 * 1024;
|
|
|
25
24
|
* Creates a span using the global tracer.
|
|
26
25
|
* @internal
|
|
27
26
|
*/
|
|
28
|
-
const
|
|
29
|
-
|
|
27
|
+
const tracingClient = coreTracing.createTracingClient({
|
|
28
|
+
packageName: "@azure/storage-blob-changefeed",
|
|
29
|
+
packageVersion: SDK_VERSION,
|
|
30
30
|
namespace: "Microsoft.Storage",
|
|
31
31
|
});
|
|
32
32
|
|
|
@@ -50,13 +50,12 @@ function floorToNearestHour(date) {
|
|
|
50
50
|
* @param url - Source URL string
|
|
51
51
|
*/
|
|
52
52
|
function getHost(url) {
|
|
53
|
-
const urlParsed =
|
|
54
|
-
return urlParsed.
|
|
53
|
+
const urlParsed = new URL(url);
|
|
54
|
+
return urlParsed.hostname;
|
|
55
55
|
}
|
|
56
56
|
async function getYearsPaths(containerClient, options = {}) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
try {
|
|
57
|
+
return tracingClient.withSpan("getYearsPaths", options, async (updatedOptions) => {
|
|
58
|
+
var e_1, _a;
|
|
60
59
|
const years = [];
|
|
61
60
|
try {
|
|
62
61
|
for (var _b = tslib.__asyncValues(containerClient.listBlobsByHierarchy("/", {
|
|
@@ -79,22 +78,11 @@ async function getYearsPaths(containerClient, options = {}) {
|
|
|
79
78
|
finally { if (e_1) throw e_1.error; }
|
|
80
79
|
}
|
|
81
80
|
return years.sort((a, b) => a - b);
|
|
82
|
-
}
|
|
83
|
-
catch (e) {
|
|
84
|
-
span.setStatus({
|
|
85
|
-
code: coreTracing.SpanStatusCode.ERROR,
|
|
86
|
-
message: e.message,
|
|
87
|
-
});
|
|
88
|
-
throw e;
|
|
89
|
-
}
|
|
90
|
-
finally {
|
|
91
|
-
span.end();
|
|
92
|
-
}
|
|
81
|
+
});
|
|
93
82
|
}
|
|
94
83
|
async function getSegmentsInYear(containerClient, year, startTime, endTime, options = {}) {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
try {
|
|
84
|
+
return tracingClient.withSpan("getSegmentsInYear", options, async (updatedOptions) => {
|
|
85
|
+
var e_2, _a;
|
|
98
86
|
const segments = [];
|
|
99
87
|
const yearBeginTime = new Date(Date.UTC(year, 0));
|
|
100
88
|
if (endTime && yearBeginTime >= endTime) {
|
|
@@ -123,17 +111,7 @@ async function getSegmentsInYear(containerClient, year, startTime, endTime, opti
|
|
|
123
111
|
finally { if (e_2) throw e_2.error; }
|
|
124
112
|
}
|
|
125
113
|
return segments;
|
|
126
|
-
}
|
|
127
|
-
catch (e) {
|
|
128
|
-
span.setStatus({
|
|
129
|
-
code: coreTracing.SpanStatusCode.ERROR,
|
|
130
|
-
message: e.message,
|
|
131
|
-
});
|
|
132
|
-
throw e;
|
|
133
|
-
}
|
|
134
|
-
finally {
|
|
135
|
-
span.end();
|
|
136
|
-
}
|
|
114
|
+
});
|
|
137
115
|
}
|
|
138
116
|
function parseDateFromSegmentPath(segmentPath) {
|
|
139
117
|
const splitPath = segmentPath.split("/");
|
|
@@ -257,8 +235,7 @@ class ChangeFeed {
|
|
|
257
235
|
}
|
|
258
236
|
}
|
|
259
237
|
async advanceSegmentIfNecessary(options = {}) {
|
|
260
|
-
|
|
261
|
-
try {
|
|
238
|
+
return tracingClient.withSpan("ChangeFeed-advanceSegmentIfNecessary", options, async (updatedOptions) => {
|
|
262
239
|
if (!this.currentSegment) {
|
|
263
240
|
throw new Error("Empty Change Feed shouldn't call this function.");
|
|
264
241
|
}
|
|
@@ -290,17 +267,7 @@ class ChangeFeed {
|
|
|
290
267
|
this.currentSegment = undefined;
|
|
291
268
|
}
|
|
292
269
|
}
|
|
293
|
-
}
|
|
294
|
-
catch (e) {
|
|
295
|
-
span.setStatus({
|
|
296
|
-
code: coreTracing.SpanStatusCode.ERROR,
|
|
297
|
-
message: e.message,
|
|
298
|
-
});
|
|
299
|
-
throw e;
|
|
300
|
-
}
|
|
301
|
-
finally {
|
|
302
|
-
span.end();
|
|
303
|
-
}
|
|
270
|
+
});
|
|
304
271
|
}
|
|
305
272
|
hasNext() {
|
|
306
273
|
// Empty ChangeFeed, using currentSegment as the indicator.
|
|
@@ -313,8 +280,7 @@ class ChangeFeed {
|
|
|
313
280
|
return this.currentSegment.dateTime < this.end;
|
|
314
281
|
}
|
|
315
282
|
async getChange(options = {}) {
|
|
316
|
-
|
|
317
|
-
try {
|
|
283
|
+
return tracingClient.withSpan("ChangeFeed-getChange", options, async (updatedOptions) => {
|
|
318
284
|
let event = undefined;
|
|
319
285
|
while (event === undefined && this.hasNext()) {
|
|
320
286
|
event = await this.currentSegment.getChange({
|
|
@@ -327,17 +293,7 @@ class ChangeFeed {
|
|
|
327
293
|
});
|
|
328
294
|
}
|
|
329
295
|
return event;
|
|
330
|
-
}
|
|
331
|
-
catch (e) {
|
|
332
|
-
span.setStatus({
|
|
333
|
-
code: coreTracing.SpanStatusCode.ERROR,
|
|
334
|
-
message: e.message,
|
|
335
|
-
});
|
|
336
|
-
throw e;
|
|
337
|
-
}
|
|
338
|
-
finally {
|
|
339
|
-
span.end();
|
|
340
|
-
}
|
|
296
|
+
});
|
|
341
297
|
}
|
|
342
298
|
getCursor() {
|
|
343
299
|
var _a;
|
|
@@ -917,8 +873,7 @@ class Segment {
|
|
|
917
873
|
return this.shards.length > this.shardDoneCount;
|
|
918
874
|
}
|
|
919
875
|
async getChange(options = {}) {
|
|
920
|
-
|
|
921
|
-
try {
|
|
876
|
+
return tracingClient.withSpan("Segment-getChange", options, async (updatedOptions) => {
|
|
922
877
|
if (this.shardIndex >= this.shards.length || this.shardIndex < 0) {
|
|
923
878
|
throw new Error("shardIndex invalid.");
|
|
924
879
|
}
|
|
@@ -941,17 +896,7 @@ class Segment {
|
|
|
941
896
|
this.shardIndex = (this.shardIndex + 1) % this.shards.length;
|
|
942
897
|
}
|
|
943
898
|
return event;
|
|
944
|
-
}
|
|
945
|
-
catch (e) {
|
|
946
|
-
span.setStatus({
|
|
947
|
-
code: coreTracing.SpanStatusCode.ERROR,
|
|
948
|
-
message: e.message,
|
|
949
|
-
});
|
|
950
|
-
throw e;
|
|
951
|
-
}
|
|
952
|
-
finally {
|
|
953
|
-
span.end();
|
|
954
|
-
}
|
|
899
|
+
});
|
|
955
900
|
}
|
|
956
901
|
getCursor() {
|
|
957
902
|
const shardCursors = [];
|
|
@@ -975,8 +920,7 @@ class SegmentFactory {
|
|
|
975
920
|
this.shardFactory = shardFactory;
|
|
976
921
|
}
|
|
977
922
|
async create(containerClient, manifestPath, cursor, options = {}) {
|
|
978
|
-
|
|
979
|
-
try {
|
|
923
|
+
return tracingClient.withSpan("SegmentFactory-create", options, async (updatedOptions) => {
|
|
980
924
|
const shards = [];
|
|
981
925
|
const dateTime = parseDateFromSegmentPath(manifestPath);
|
|
982
926
|
const blobClient = containerClient.getBlobClient(manifestPath);
|
|
@@ -1006,17 +950,7 @@ class SegmentFactory {
|
|
|
1006
950
|
}
|
|
1007
951
|
}
|
|
1008
952
|
return new Segment(shards, shardIndex, dateTime, manifestPath);
|
|
1009
|
-
}
|
|
1010
|
-
catch (e) {
|
|
1011
|
-
span.setStatus({
|
|
1012
|
-
code: coreTracing.SpanStatusCode.ERROR,
|
|
1013
|
-
message: e.message,
|
|
1014
|
-
});
|
|
1015
|
-
throw e;
|
|
1016
|
-
}
|
|
1017
|
-
finally {
|
|
1018
|
-
span.end();
|
|
1019
|
-
}
|
|
953
|
+
});
|
|
1020
954
|
}
|
|
1021
955
|
}
|
|
1022
956
|
|
|
@@ -1033,8 +967,7 @@ class Shard {
|
|
|
1033
967
|
return (this.chunks.length > 0 || (this.currentChunk !== undefined && this.currentChunk.hasNext()));
|
|
1034
968
|
}
|
|
1035
969
|
async getChange(options = {}) {
|
|
1036
|
-
|
|
1037
|
-
try {
|
|
970
|
+
return tracingClient.withSpan("Shard-getChange", options, async (updatedOptions) => {
|
|
1038
971
|
let event = undefined;
|
|
1039
972
|
while (event === undefined && this.hasNext()) {
|
|
1040
973
|
event = await this.currentChunk.getChange();
|
|
@@ -1047,17 +980,7 @@ class Shard {
|
|
|
1047
980
|
}
|
|
1048
981
|
}
|
|
1049
982
|
return event;
|
|
1050
|
-
}
|
|
1051
|
-
catch (e) {
|
|
1052
|
-
span.setStatus({
|
|
1053
|
-
code: coreTracing.SpanStatusCode.ERROR,
|
|
1054
|
-
message: e.message,
|
|
1055
|
-
});
|
|
1056
|
-
throw e;
|
|
1057
|
-
}
|
|
1058
|
-
finally {
|
|
1059
|
-
span.end();
|
|
1060
|
-
}
|
|
983
|
+
});
|
|
1061
984
|
}
|
|
1062
985
|
getCursor() {
|
|
1063
986
|
return this.currentChunk === undefined
|
|
@@ -1076,9 +999,8 @@ class ShardFactory {
|
|
|
1076
999
|
this.chunkFactory = chunkFactory;
|
|
1077
1000
|
}
|
|
1078
1001
|
async create(containerClient, shardPath, shardCursor, options = {}) {
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
try {
|
|
1002
|
+
return tracingClient.withSpan("ShardFactory-create", options, async (updatedOptions) => {
|
|
1003
|
+
var e_1, _a;
|
|
1082
1004
|
const chunks = [];
|
|
1083
1005
|
const blockOffset = (shardCursor === null || shardCursor === void 0 ? void 0 : shardCursor.BlockOffset) || 0;
|
|
1084
1006
|
const eventIndex = (shardCursor === null || shardCursor === void 0 ? void 0 : shardCursor.EventIndex) || 0;
|
|
@@ -1129,17 +1051,7 @@ class ShardFactory {
|
|
|
1129
1051
|
});
|
|
1130
1052
|
}
|
|
1131
1053
|
return new Shard(containerClient, this.chunkFactory, chunks, currentChunk, shardPath);
|
|
1132
|
-
}
|
|
1133
|
-
catch (e) {
|
|
1134
|
-
span.setStatus({
|
|
1135
|
-
code: coreTracing.SpanStatusCode.ERROR,
|
|
1136
|
-
message: e.message,
|
|
1137
|
-
});
|
|
1138
|
-
throw e;
|
|
1139
|
-
}
|
|
1140
|
-
finally {
|
|
1141
|
-
span.end();
|
|
1142
|
-
}
|
|
1054
|
+
});
|
|
1143
1055
|
}
|
|
1144
1056
|
}
|
|
1145
1057
|
|
|
@@ -1242,8 +1154,7 @@ class LazyLoadingBlobStream extends stream.Readable {
|
|
|
1242
1154
|
this.options = options;
|
|
1243
1155
|
}
|
|
1244
1156
|
async downloadBlock(options = {}) {
|
|
1245
|
-
|
|
1246
|
-
try {
|
|
1157
|
+
return tracingClient.withSpan("LazyLoadingBlobStream-downloadBlock", options, async (updatedOptions) => {
|
|
1247
1158
|
const properties = await this.blobClient.getProperties({
|
|
1248
1159
|
abortSignal: options.abortSignal,
|
|
1249
1160
|
tracingOptions: updatedOptions.tracingOptions,
|
|
@@ -1259,17 +1170,7 @@ class LazyLoadingBlobStream extends stream.Readable {
|
|
|
1259
1170
|
tracingOptions: updatedOptions.tracingOptions,
|
|
1260
1171
|
});
|
|
1261
1172
|
this.offset += this.lastDownloadBytes;
|
|
1262
|
-
}
|
|
1263
|
-
catch (e) {
|
|
1264
|
-
span.setStatus({
|
|
1265
|
-
code: coreTracing.SpanStatusCode.ERROR,
|
|
1266
|
-
message: e.message,
|
|
1267
|
-
});
|
|
1268
|
-
throw e;
|
|
1269
|
-
}
|
|
1270
|
-
finally {
|
|
1271
|
-
span.end();
|
|
1272
|
-
}
|
|
1173
|
+
});
|
|
1273
1174
|
}
|
|
1274
1175
|
/**
|
|
1275
1176
|
* Internal _read() that will be called when the stream wants to pull more data in.
|
|
@@ -1277,9 +1178,9 @@ class LazyLoadingBlobStream extends stream.Readable {
|
|
|
1277
1178
|
* @param size - Optional. The size of data to be read
|
|
1278
1179
|
*/
|
|
1279
1180
|
async _read(size) {
|
|
1280
|
-
var _a
|
|
1281
|
-
|
|
1282
|
-
|
|
1181
|
+
var _a;
|
|
1182
|
+
return tracingClient.withSpan("LazyLoadingBlobStream-read", (_a = this.options) !== null && _a !== void 0 ? _a : {}, async (updatedOptions) => {
|
|
1183
|
+
var _a, _b, _c, _d;
|
|
1283
1184
|
if (!size) {
|
|
1284
1185
|
size = this.readableHighWaterMark;
|
|
1285
1186
|
}
|
|
@@ -1307,17 +1208,7 @@ class LazyLoadingBlobStream extends stream.Readable {
|
|
|
1307
1208
|
if (count < size) {
|
|
1308
1209
|
this.push(null);
|
|
1309
1210
|
}
|
|
1310
|
-
}
|
|
1311
|
-
catch (e) {
|
|
1312
|
-
span.setStatus({
|
|
1313
|
-
code: coreTracing.SpanStatusCode.ERROR,
|
|
1314
|
-
message: e.message,
|
|
1315
|
-
});
|
|
1316
|
-
this.emit("error", e);
|
|
1317
|
-
}
|
|
1318
|
-
finally {
|
|
1319
|
-
span.end();
|
|
1320
|
-
}
|
|
1211
|
+
});
|
|
1321
1212
|
}
|
|
1322
1213
|
}
|
|
1323
1214
|
|
|
@@ -1356,8 +1247,7 @@ class ChangeFeedFactory {
|
|
|
1356
1247
|
}
|
|
1357
1248
|
}
|
|
1358
1249
|
async create(blobServiceClient, continuationToken, options = {}) {
|
|
1359
|
-
|
|
1360
|
-
try {
|
|
1250
|
+
return tracingClient.withSpan("ChangeFeedFactory-create", options, async (updatedOptions) => {
|
|
1361
1251
|
const containerClient = blobServiceClient.getContainerClient(CHANGE_FEED_CONTAINER_NAME);
|
|
1362
1252
|
let cursor = undefined;
|
|
1363
1253
|
// Create cursor.
|
|
@@ -1431,17 +1321,7 @@ class ChangeFeedFactory {
|
|
|
1431
1321
|
tracingOptions: updatedOptions.tracingOptions,
|
|
1432
1322
|
});
|
|
1433
1323
|
return new ChangeFeed(containerClient, this.segmentFactory, years, segments, currentSegment, lastConsumable, options.start, options.end);
|
|
1434
|
-
}
|
|
1435
|
-
catch (e) {
|
|
1436
|
-
span.setStatus({
|
|
1437
|
-
code: coreTracing.SpanStatusCode.ERROR,
|
|
1438
|
-
message: e.message,
|
|
1439
|
-
});
|
|
1440
|
-
throw e;
|
|
1441
|
-
}
|
|
1442
|
-
finally {
|
|
1443
|
-
span.end();
|
|
1444
|
-
}
|
|
1324
|
+
});
|
|
1445
1325
|
}
|
|
1446
1326
|
}
|
|
1447
1327
|
|