@azure/storage-blob-changefeed 12.0.0-alpha.20250617.1 → 12.0.0-alpha.20250718.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/dist/browser/BlobChangeFeedClient.js +49 -40
  2. package/dist/browser/BlobChangeFeedClient.js.map +1 -1
  3. package/dist/browser/ChangeFeed.js +13 -2
  4. package/dist/browser/ChangeFeed.js.map +1 -1
  5. package/dist/browser/ChangeFeedFactory.js +3 -1
  6. package/dist/browser/ChangeFeedFactory.js.map +1 -1
  7. package/dist/browser/Chunk.js +5 -0
  8. package/dist/browser/Chunk.js.map +1 -1
  9. package/dist/browser/ChunkFactory.js +3 -0
  10. package/dist/browser/ChunkFactory.js.map +1 -1
  11. package/dist/browser/LazyLoadingBlobStream.js +19 -8
  12. package/dist/browser/LazyLoadingBlobStream.js.map +1 -1
  13. package/dist/browser/Segment.js +9 -0
  14. package/dist/browser/Segment.js.map +1 -1
  15. package/dist/browser/SegmentFactory.js +4 -3
  16. package/dist/browser/SegmentFactory.js.map +1 -1
  17. package/dist/browser/Shard.js +5 -0
  18. package/dist/browser/Shard.js.map +1 -1
  19. package/dist/browser/ShardFactory.js +10 -23
  20. package/dist/browser/ShardFactory.js.map +1 -1
  21. package/dist/browser/utils/utils.common.js +17 -44
  22. package/dist/browser/utils/utils.common.js.map +1 -1
  23. package/dist/commonjs/BlobChangeFeedClient.js +49 -40
  24. package/dist/commonjs/BlobChangeFeedClient.js.map +1 -1
  25. package/dist/commonjs/ChangeFeed.js +13 -2
  26. package/dist/commonjs/ChangeFeed.js.map +1 -1
  27. package/dist/commonjs/ChangeFeedFactory.js +3 -1
  28. package/dist/commonjs/ChangeFeedFactory.js.map +1 -1
  29. package/dist/commonjs/Chunk.js +5 -0
  30. package/dist/commonjs/Chunk.js.map +1 -1
  31. package/dist/commonjs/ChunkFactory.js +3 -0
  32. package/dist/commonjs/ChunkFactory.js.map +1 -1
  33. package/dist/commonjs/LazyLoadingBlobStream.js +19 -8
  34. package/dist/commonjs/LazyLoadingBlobStream.js.map +1 -1
  35. package/dist/commonjs/Segment.js +9 -0
  36. package/dist/commonjs/Segment.js.map +1 -1
  37. package/dist/commonjs/SegmentFactory.js +4 -3
  38. package/dist/commonjs/SegmentFactory.js.map +1 -1
  39. package/dist/commonjs/Shard.js +5 -0
  40. package/dist/commonjs/Shard.js.map +1 -1
  41. package/dist/commonjs/ShardFactory.js +10 -23
  42. package/dist/commonjs/ShardFactory.js.map +1 -1
  43. package/dist/commonjs/tsdoc-metadata.json +11 -11
  44. package/dist/commonjs/utils/utils.common.js +17 -44
  45. package/dist/commonjs/utils/utils.common.js.map +1 -1
  46. package/dist/esm/BlobChangeFeedClient.js +49 -40
  47. package/dist/esm/BlobChangeFeedClient.js.map +1 -1
  48. package/dist/esm/ChangeFeed.js +13 -2
  49. package/dist/esm/ChangeFeed.js.map +1 -1
  50. package/dist/esm/ChangeFeedFactory.js +3 -1
  51. package/dist/esm/ChangeFeedFactory.js.map +1 -1
  52. package/dist/esm/Chunk.js +5 -0
  53. package/dist/esm/Chunk.js.map +1 -1
  54. package/dist/esm/ChunkFactory.js +3 -0
  55. package/dist/esm/ChunkFactory.js.map +1 -1
  56. package/dist/esm/LazyLoadingBlobStream.js +19 -8
  57. package/dist/esm/LazyLoadingBlobStream.js.map +1 -1
  58. package/dist/esm/Segment.js +9 -0
  59. package/dist/esm/Segment.js.map +1 -1
  60. package/dist/esm/SegmentFactory.js +4 -3
  61. package/dist/esm/SegmentFactory.js.map +1 -1
  62. package/dist/esm/Shard.js +5 -0
  63. package/dist/esm/Shard.js.map +1 -1
  64. package/dist/esm/ShardFactory.js +10 -23
  65. package/dist/esm/ShardFactory.js.map +1 -1
  66. package/dist/esm/utils/utils.common.js +17 -44
  67. package/dist/esm/utils/utils.common.js.map +1 -1
  68. package/dist/react-native/BlobChangeFeedClient.js +49 -40
  69. package/dist/react-native/BlobChangeFeedClient.js.map +1 -1
  70. package/dist/react-native/ChangeFeed.js +13 -2
  71. package/dist/react-native/ChangeFeed.js.map +1 -1
  72. package/dist/react-native/ChangeFeedFactory.js +3 -1
  73. package/dist/react-native/ChangeFeedFactory.js.map +1 -1
  74. package/dist/react-native/Chunk.js +5 -0
  75. package/dist/react-native/Chunk.js.map +1 -1
  76. package/dist/react-native/ChunkFactory.js +3 -0
  77. package/dist/react-native/ChunkFactory.js.map +1 -1
  78. package/dist/react-native/LazyLoadingBlobStream.js +19 -8
  79. package/dist/react-native/LazyLoadingBlobStream.js.map +1 -1
  80. package/dist/react-native/Segment.js +9 -0
  81. package/dist/react-native/Segment.js.map +1 -1
  82. package/dist/react-native/SegmentFactory.js +4 -3
  83. package/dist/react-native/SegmentFactory.js.map +1 -1
  84. package/dist/react-native/Shard.js +5 -0
  85. package/dist/react-native/Shard.js.map +1 -1
  86. package/dist/react-native/ShardFactory.js +10 -23
  87. package/dist/react-native/ShardFactory.js.map +1 -1
  88. package/dist/react-native/utils/utils.common.js +17 -44
  89. package/dist/react-native/utils/utils.common.js.map +1 -1
  90. package/package.json +2 -2
@@ -1,6 +1,5 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT License.
3
- import { __asyncValues } from "tslib";
4
3
  import { CHANGE_FEED_SEGMENT_PREFIX, CHANGE_FEED_INITIALIZATION_SEGMENT } from "./constants.js";
5
4
  import { tracingClient } from "./tracing.js";
6
5
  const millisecondsInAnHour = 60 * 60 * 1000;
@@ -27,64 +26,38 @@ export function getHost(url) {
27
26
  }
28
27
  export async function getYearsPaths(containerClient, options = {}) {
29
28
  return tracingClient.withSpan("getYearsPaths", options, async (updatedOptions) => {
30
- var _a, e_1, _b, _c;
31
29
  const years = [];
32
- try {
33
- for (var _d = true, _e = __asyncValues(containerClient.listBlobsByHierarchy("/", {
34
- abortSignal: options.abortSignal,
35
- tracingOptions: updatedOptions.tracingOptions,
36
- prefix: CHANGE_FEED_SEGMENT_PREFIX,
37
- })), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) {
38
- _c = _f.value;
39
- _d = false;
40
- const item = _c;
41
- if (item.kind === "prefix" && !item.name.includes(CHANGE_FEED_INITIALIZATION_SEGMENT)) {
42
- const yearStr = item.name.slice(CHANGE_FEED_SEGMENT_PREFIX.length, -1);
43
- years.push(parseInt(yearStr));
44
- }
30
+ for await (const item of containerClient.listBlobsByHierarchy("/", {
31
+ abortSignal: options.abortSignal,
32
+ tracingOptions: updatedOptions.tracingOptions,
33
+ prefix: CHANGE_FEED_SEGMENT_PREFIX,
34
+ })) {
35
+ if (item.kind === "prefix" && !item.name.includes(CHANGE_FEED_INITIALIZATION_SEGMENT)) {
36
+ const yearStr = item.name.slice(CHANGE_FEED_SEGMENT_PREFIX.length, -1);
37
+ years.push(parseInt(yearStr));
45
38
  }
46
39
  }
47
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
48
- finally {
49
- try {
50
- if (!_d && !_a && (_b = _e.return)) await _b.call(_e);
51
- }
52
- finally { if (e_1) throw e_1.error; }
53
- }
54
40
  return years.sort((a, b) => a - b);
55
41
  });
56
42
  }
57
43
  export async function getSegmentsInYear(containerClient, year, startTime, endTime, options = {}) {
58
44
  return tracingClient.withSpan("getSegmentsInYear", options, async (updatedOptions) => {
59
- var _a, e_2, _b, _c;
60
45
  const segments = [];
61
46
  const yearBeginTime = new Date(Date.UTC(year, 0));
62
47
  if (endTime && yearBeginTime >= endTime) {
63
48
  return segments;
64
49
  }
65
50
  const prefix = `${CHANGE_FEED_SEGMENT_PREFIX}${year}/`;
66
- try {
67
- for (var _d = true, _e = __asyncValues(containerClient.listBlobsFlat({
68
- prefix,
69
- abortSignal: options.abortSignal,
70
- tracingOptions: updatedOptions.tracingOptions,
71
- })), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) {
72
- _c = _f.value;
73
- _d = false;
74
- const item = _c;
75
- const segmentTime = parseDateFromSegmentPath(item.name);
76
- if ((startTime && segmentTime < startTime) || (endTime && segmentTime >= endTime)) {
77
- continue;
78
- }
79
- segments.push(item.name);
80
- }
81
- }
82
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
83
- finally {
84
- try {
85
- if (!_d && !_a && (_b = _e.return)) await _b.call(_e);
51
+ for await (const item of containerClient.listBlobsFlat({
52
+ prefix,
53
+ abortSignal: options.abortSignal,
54
+ tracingOptions: updatedOptions.tracingOptions,
55
+ })) {
56
+ const segmentTime = parseDateFromSegmentPath(item.name);
57
+ if ((startTime && segmentTime < startTime) || (endTime && segmentTime >= endTime)) {
58
+ continue;
86
59
  }
87
- finally { if (e_2) throw e_2.error; }
60
+ segments.push(item.name);
88
61
  }
89
62
  return segments;
90
63
  });
@@ -1 +1 @@
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 type { AbortSignalLike } from \"@azure/abort-controller\";\nimport type { ContainerClient, CommonOptions } from \"@azure/storage-blob\";\nimport { CHANGE_FEED_SEGMENT_PREFIX, CHANGE_FEED_INITIALIZATION_SEGMENT } from \"./constants.js\";\nimport { tracingClient } from \"./tracing.js\";\nimport type { BlobChangeFeedEvent, UpdatedBlobProperties } from \"../models/BlobChangeFeedEvent.js\";\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 = new URL(url);\n return urlParsed.hostname;\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 &commat;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 return tracingClient.withSpan(\"getYearsPaths\", options, async (updatedOptions) => {\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 });\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 &commat;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 return tracingClient.withSpan(\"getSegmentsInYear\", options, async (updatedOptions) => {\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 });\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
+ {"version":3,"file":"utils.common.js","sourceRoot":"","sources":["../../../src/utils/utils.common.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,0BAA0B,EAAE,kCAAkC,EAAE,MAAM,gBAAgB,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,MAAM,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAC5C,MAAM,UAAU,iBAAiB,CAAC,IAAsB;IACtD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,oBAAoB,CAAC,GAAG,oBAAoB,CAAC,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAsB;IACvD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,oBAAoB,CAAC,GAAG,oBAAoB,CAAC,CAAC;AAC5F,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,SAAS,CAAC,QAAQ,CAAC;AAC5B,CAAC;AAaD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,eAAgC,EAChC,UAAgC,EAAE;IAElC,OAAO,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;QAC/E,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,eAAe,CAAC,oBAAoB,CAAC,GAAG,EAAE;YACjE,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,cAAc,EAAE,cAAc,CAAC,cAAc;YAC7C,MAAM,EAAE,0BAA0B;SACnC,CAAC,EAAE,CAAC;YACH,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,kCAAkC,CAAC,EAAE,CAAC;gBACtF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;gBACvE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC;AAaD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,eAAgC,EAChC,IAAY,EACZ,SAAgB,EAChB,OAAc,EACd,UAAoC,EAAE;IAEtC,OAAO,aAAa,CAAC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;QACnF,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,OAAO,IAAI,aAAa,IAAI,OAAO,EAAE,CAAC;YACxC,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,0BAA0B,GAAG,IAAI,GAAG,CAAC;QACvD,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,eAAe,CAAC,aAAa,CAAC;YACrD,MAAM;YACN,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,cAAc,EAAE,cAAc,CAAC,cAAc;SAC9C,CAAC,EAAE,CAAC;YACH,MAAM,WAAW,GAAG,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxD,IAAI,CAAC,SAAS,IAAI,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,WAAW,IAAI,OAAO,CAAC,EAAE,CAAC;gBAClF,SAAS;YACX,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,WAAmB;IAC1D,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,GAAG,WAAW,+BAA+B,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAChC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnD,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC1B,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC1B,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC1B,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAW,EAAE,KAAY;IAC/C,IAAI,KAAK,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,QAA6B;IACzE,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvB,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClB,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC9B,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClB,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1C,QAAQ,CAAC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;YACpD,OAAO,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;QACjC,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAC/B,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;YAEhD,IAAI,YAAY,CAAC,kBAAkB,EAAE,CAAC;gBACpC,YAAY,CAAC,kBAAkB,GAAG,YAAY,CAAC,kBAAkB,CAAC;gBAClE,OAAO,YAAY,CAAC,kBAAkB,CAAC;YACzC,CAAC;YACD,IAAI,YAAY,CAAC,kBAAkB,EAAE,CAAC;gBACpC,YAAY,CAAC,iBAAiB,GAAG,YAAY,CAAC,kBAAkB,KAAK,MAAM,CAAC;gBAC5E,OAAO,YAAY,CAAC,kBAAkB,CAAC;YACzC,CAAC;YACD,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;gBAC7B,YAAY,CAAC,cAAc,GAAG,YAAY,CAAC,WAAW,CAAC;gBACvD,OAAO,YAAY,CAAC,WAAW,CAAC;YAClC,CAAC;YACD,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;gBAC7B,YAAY,CAAC,cAAc,GAAG,YAAY,CAAC,WAAW,CAAC;gBACvD,OAAO,YAAY,CAAC,WAAW,CAAC;YAClC,CAAC;YACD,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC;gBAC9B,YAAY,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;gBACtD,OAAO,YAAY,CAAC,YAAY,CAAC;YACnC,CAAC;YAED,QAAQ,CAAC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAC5C,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACxC,MAAM,qBAAqB,GAA0B,EAAE,CAAC;YACxD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC/D,MAAM,kBAAkB,GAAG;oBACzB,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;oBACrB,QAAQ,EAAG,IAAI,CAAC,CAAC,CAAS,CAAC,QAAkB;oBAC7C,QAAQ,EAAG,IAAI,CAAC,CAAC,CAAS,CAAC,OAAiB;iBAC7C,CAAC;gBACF,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC;YACtD,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;YAC5D,OAAO,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC;QAC7C,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACrC,MAAM,wBAAwB,GAAG,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC;YAClE,IAAI,wBAAwB,CAAC,eAAe,EAAE,CAAC;gBAC7C,wBAAwB,CAAC,qBAAqB,GAAG,wBAAwB,CAAC,eAAe,CAAC;gBAC1F,OAAO,wBAAwB,CAAC,eAAe,CAAC;YAClD,CAAC;YACD,IAAI,mBAAmB,IAAI,wBAAwB,EAAE,CAAC;gBACpD,wBAAwB,CAAC,OAAO,GAAG,wBAAwB,CAAC,iBAAiB,KAAK,MAAM,CAAC;gBACzF,OAAO,wBAAwB,CAAC,iBAAiB,CAAC;YACpD,CAAC;YACD,IAAI,wBAAwB,CAAC,MAAM,EAAE,CAAC;gBACpC,wBAAwB,CAAC,MAAM,GAAG,wBAAwB,CAAC,MAAM,CAAC;gBAClE,OAAO,wBAAwB,CAAC,MAAM,CAAC;YACzC,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;YAClE,OAAO,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAC1C,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAClC,QAAQ,CAAC,IAAI,CAAC,eAAe,GAAG;gBAC9B,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO;gBAC9C,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ;aAChD,CAAC;YAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC;QACvC,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;YACtD,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,QAA+B,CAAC;AACzC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport type { ContainerClient, CommonOptions } from \"@azure/storage-blob\";\nimport { CHANGE_FEED_SEGMENT_PREFIX, CHANGE_FEED_INITIALIZATION_SEGMENT } from \"./constants.js\";\nimport { tracingClient } from \"./tracing.js\";\nimport type { BlobChangeFeedEvent, UpdatedBlobProperties } from \"../models/BlobChangeFeedEvent.js\";\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 = new URL(url);\n return urlParsed.hostname;\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 &commat;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 return tracingClient.withSpan(\"getYearsPaths\", options, async (updatedOptions) => {\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 });\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 &commat;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 return tracingClient.withSpan(\"getSegmentsInYear\", options, async (updatedOptions) => {\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 });\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"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@azure/storage-blob-changefeed",
3
3
  "sdk-type": "client",
4
- "version": "12.0.0-alpha.20250617.1",
4
+ "version": "12.0.0-alpha.20250718.2",
5
5
  "description": "Microsoft Azure Storage SDK for JavaScript - Blob Change Feed",
6
6
  "main": "./dist/commonjs/index.js",
7
7
  "module": "./dist/esm/index.js",
@@ -103,7 +103,7 @@
103
103
  },
104
104
  "type": "module",
105
105
  "tshy": {
106
- "project": "./tsconfig.src.json",
106
+ "project": "../../../tsconfig.src.build.json",
107
107
  "exports": {
108
108
  "./package.json": "./package.json",
109
109
  ".": "./src/index.ts"