@azure/storage-blob 12.9.0-beta.2 → 12.9.0-beta.3

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 (83) hide show
  1. package/CHANGELOG.md +16 -5
  2. package/README.md +11 -10
  3. package/dist/index.js +841 -461
  4. package/dist/index.js.map +1 -1
  5. package/dist-esm/storage-blob/src/BatchResponseParser.js +2 -2
  6. package/dist-esm/storage-blob/src/BatchResponseParser.js.map +1 -1
  7. package/dist-esm/storage-blob/src/BlobBatch.js +8 -8
  8. package/dist-esm/storage-blob/src/BlobBatch.js.map +1 -1
  9. package/dist-esm/storage-blob/src/BlobBatchClient.js +2 -2
  10. package/dist-esm/storage-blob/src/BlobBatchClient.js.map +1 -1
  11. package/dist-esm/storage-blob/src/BlobDownloadResponse.js +1 -1
  12. package/dist-esm/storage-blob/src/BlobDownloadResponse.js.map +1 -1
  13. package/dist-esm/storage-blob/src/BlobLeaseClient.js +5 -5
  14. package/dist-esm/storage-blob/src/BlobLeaseClient.js.map +1 -1
  15. package/dist-esm/storage-blob/src/BlobQueryResponse.browser.js.map +1 -1
  16. package/dist-esm/storage-blob/src/BlobQueryResponse.js.map +1 -1
  17. package/dist-esm/storage-blob/src/BlobServiceClient.js +22 -20
  18. package/dist-esm/storage-blob/src/BlobServiceClient.js.map +1 -1
  19. package/dist-esm/storage-blob/src/Clients.js +100 -97
  20. package/dist-esm/storage-blob/src/Clients.js.map +1 -1
  21. package/dist-esm/storage-blob/src/ContainerClient.js +241 -38
  22. package/dist-esm/storage-blob/src/ContainerClient.js.map +1 -1
  23. package/dist-esm/storage-blob/src/PageBlobRangeResponse.js +3 -3
  24. package/dist-esm/storage-blob/src/PageBlobRangeResponse.js.map +1 -1
  25. package/dist-esm/storage-blob/src/Pipeline.js +6 -6
  26. package/dist-esm/storage-blob/src/Pipeline.js.map +1 -1
  27. package/dist-esm/storage-blob/src/TelemetryPolicyFactory.js +1 -1
  28. package/dist-esm/storage-blob/src/TelemetryPolicyFactory.js.map +1 -1
  29. package/dist-esm/storage-blob/src/credentials/StorageSharedKeyCredential.js +1 -3
  30. package/dist-esm/storage-blob/src/credentials/StorageSharedKeyCredential.js.map +1 -1
  31. package/dist-esm/storage-blob/src/credentials/UserDelegationKeyCredential.js +1 -3
  32. package/dist-esm/storage-blob/src/credentials/UserDelegationKeyCredential.js.map +1 -1
  33. package/dist-esm/storage-blob/src/generated/src/models/index.js.map +1 -1
  34. package/dist-esm/storage-blob/src/generated/src/models/mappers.js +53 -0
  35. package/dist-esm/storage-blob/src/generated/src/models/mappers.js.map +1 -1
  36. package/dist-esm/storage-blob/src/generated/src/models/parameters.js +1 -1
  37. package/dist-esm/storage-blob/src/generated/src/models/parameters.js.map +1 -1
  38. package/dist-esm/storage-blob/src/generated/src/operations/container.js +41 -0
  39. package/dist-esm/storage-blob/src/generated/src/operations/container.js.map +1 -1
  40. package/dist-esm/storage-blob/src/generated/src/storageClientContext.js +2 -2
  41. package/dist-esm/storage-blob/src/generated/src/storageClientContext.js.map +1 -1
  42. package/dist-esm/storage-blob/src/generatedModels.js.map +1 -1
  43. package/dist-esm/storage-blob/src/index.browser.js +1 -1
  44. package/dist-esm/storage-blob/src/index.browser.js.map +1 -1
  45. package/dist-esm/storage-blob/src/index.js +1 -1
  46. package/dist-esm/storage-blob/src/index.js.map +1 -1
  47. package/dist-esm/storage-blob/src/models.js.map +1 -1
  48. package/dist-esm/storage-blob/src/policies/StorageBrowserPolicy.js +1 -1
  49. package/dist-esm/storage-blob/src/policies/StorageBrowserPolicy.js.map +1 -1
  50. package/dist-esm/storage-blob/src/policies/StorageRetryPolicy.js +5 -5
  51. package/dist-esm/storage-blob/src/policies/StorageRetryPolicy.js.map +1 -1
  52. package/dist-esm/storage-blob/src/policies/StorageSharedKeyCredentialPolicy.js +1 -1
  53. package/dist-esm/storage-blob/src/policies/StorageSharedKeyCredentialPolicy.js.map +1 -1
  54. package/dist-esm/storage-blob/src/policies/TelemetryPolicy.js +1 -1
  55. package/dist-esm/storage-blob/src/policies/TelemetryPolicy.js.map +1 -1
  56. package/dist-esm/storage-blob/src/pollers/BlobStartCopyFromUrlPoller.js +3 -3
  57. package/dist-esm/storage-blob/src/pollers/BlobStartCopyFromUrlPoller.js.map +1 -1
  58. package/dist-esm/storage-blob/src/sas/AccountSASSignatureValues.js +2 -2
  59. package/dist-esm/storage-blob/src/sas/AccountSASSignatureValues.js.map +1 -1
  60. package/dist-esm/storage-blob/src/sas/BlobSASSignatureValues.js +11 -6
  61. package/dist-esm/storage-blob/src/sas/BlobSASSignatureValues.js.map +1 -1
  62. package/dist-esm/storage-blob/src/sas/ContainerSASPermissions.js +13 -0
  63. package/dist-esm/storage-blob/src/sas/ContainerSASPermissions.js.map +1 -1
  64. package/dist-esm/storage-blob/src/sas/SASQueryParameters.js +2 -2
  65. package/dist-esm/storage-blob/src/sas/SASQueryParameters.js.map +1 -1
  66. package/dist-esm/storage-blob/src/utils/Batch.js.map +1 -1
  67. package/dist-esm/storage-blob/src/utils/BlobQuickQueryStream.js +1 -1
  68. package/dist-esm/storage-blob/src/utils/BlobQuickQueryStream.js.map +1 -1
  69. package/dist-esm/storage-blob/src/utils/Mutex.js.map +1 -1
  70. package/dist-esm/storage-blob/src/utils/RetriableReadableStream.js +1 -2
  71. package/dist-esm/storage-blob/src/utils/RetriableReadableStream.js.map +1 -1
  72. package/dist-esm/storage-blob/src/utils/constants.js +8 -8
  73. package/dist-esm/storage-blob/src/utils/constants.js.map +1 -1
  74. package/dist-esm/storage-blob/src/utils/tracing.js +2 -2
  75. package/dist-esm/storage-blob/src/utils/tracing.js.map +1 -1
  76. package/dist-esm/storage-blob/src/utils/utils.common.js +25 -25
  77. package/dist-esm/storage-blob/src/utils/utils.common.js.map +1 -1
  78. package/dist-esm/storage-internal-avro/src/AvroParser.js.map +1 -1
  79. package/dist-esm/storage-internal-avro/src/AvroReader.js +8 -8
  80. package/dist-esm/storage-internal-avro/src/AvroReader.js.map +1 -1
  81. package/package.json +40 -49
  82. package/{typings → types}/3.1/storage-blob.d.ts +205 -5
  83. package/{typings → types}/latest/storage-blob.d.ts +184 -5
@@ -1,5 +1,5 @@
1
1
  import { __asyncDelegator, __asyncGenerator, __asyncValues, __await } from "tslib";
2
- import { getDefaultProxySettings, isNode, isTokenCredential, URLBuilder } from "@azure/core-http";
2
+ import { getDefaultProxySettings, isNode, isTokenCredential, URLBuilder, } from "@azure/core-http";
3
3
  import { SpanStatusCode } from "@azure/core-tracing";
4
4
  import { AnonymousCredential } from "./credentials/AnonymousCredential";
5
5
  import { StorageSharedKeyCredential } from "./credentials/StorageSharedKeyCredential";
@@ -7,10 +7,10 @@ import { Container } from "./generated/src/operations";
7
7
  import { newPipeline, isPipelineLike } from "./Pipeline";
8
8
  import { StorageClient } from "./StorageClient";
9
9
  import { convertTracingToRequestOptionsBase, createSpan } from "./utils/tracing";
10
- import { appendToURLPath, appendToURLQuery, BlobNameToString, ConvertInternalResponseOfListBlobFlat, ConvertInternalResponseOfListBlobHierarchy, extractConnectionStringParts, isIpEndpointStyle, parseObjectReplicationRecord, ProcessBlobItems, ProcessBlobPrefixes, toTags, truncatedISO8061Date } from "./utils/utils.common";
10
+ import { appendToURLPath, appendToURLQuery, BlobNameToString, ConvertInternalResponseOfListBlobFlat, ConvertInternalResponseOfListBlobHierarchy, extractConnectionStringParts, isIpEndpointStyle, parseObjectReplicationRecord, ProcessBlobItems, ProcessBlobPrefixes, toTags, truncatedISO8061Date, } from "./utils/utils.common";
11
11
  import { generateBlobSASQueryParameters } from "./sas/BlobSASSignatureValues";
12
12
  import { BlobLeaseClient } from "./BlobLeaseClient";
13
- import { AppendBlobClient, BlobClient, BlockBlobClient, PageBlobClient } from "./Clients";
13
+ import { AppendBlobClient, BlobClient, BlockBlobClient, PageBlobClient, } from "./Clients";
14
14
  import { BlobBatchClient } from "./BlobBatchClient";
15
15
  /**
16
16
  * A ContainerClient represents a URL to the Azure Storage container allowing you to manipulate its blobs.
@@ -51,7 +51,9 @@ export class ContainerClient extends StorageClient {
51
51
  if (isNode) {
52
52
  const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
53
53
  url = appendToURLPath(extractedCreds.url, encodeURIComponent(containerName));
54
- options.proxyOptions = getDefaultProxySettings(extractedCreds.proxyUri);
54
+ if (!options.proxyOptions) {
55
+ options.proxyOptions = getDefaultProxySettings(extractedCreds.proxyUri);
56
+ }
55
57
  pipeline = newPipeline(sharedKeyCredential, options);
56
58
  }
57
59
  else {
@@ -108,7 +110,7 @@ export class ContainerClient extends StorageClient {
108
110
  catch (e) {
109
111
  span.setStatus({
110
112
  code: SpanStatusCode.ERROR,
111
- message: e.message
113
+ message: e.message,
112
114
  });
113
115
  throw e;
114
116
  }
@@ -128,20 +130,19 @@ export class ContainerClient extends StorageClient {
128
130
  const { span, updatedOptions } = createSpan("ContainerClient-createIfNotExists", options);
129
131
  try {
130
132
  const res = await this.create(updatedOptions);
131
- return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
132
- });
133
+ return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response });
133
134
  }
134
135
  catch (e) {
135
136
  if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "ContainerAlreadyExists") {
136
137
  span.setStatus({
137
138
  code: SpanStatusCode.ERROR,
138
- message: "Expected exception when creating a container only if it does not already exist."
139
+ message: "Expected exception when creating a container only if it does not already exist.",
139
140
  });
140
141
  return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });
141
142
  }
142
143
  span.setStatus({
143
144
  code: SpanStatusCode.ERROR,
144
- message: e.message
145
+ message: e.message,
145
146
  });
146
147
  throw e;
147
148
  }
@@ -163,7 +164,7 @@ export class ContainerClient extends StorageClient {
163
164
  try {
164
165
  await this.getProperties({
165
166
  abortSignal: options.abortSignal,
166
- tracingOptions: updatedOptions.tracingOptions
167
+ tracingOptions: updatedOptions.tracingOptions,
167
168
  });
168
169
  return true;
169
170
  }
@@ -171,13 +172,13 @@ export class ContainerClient extends StorageClient {
171
172
  if (e.statusCode === 404) {
172
173
  span.setStatus({
173
174
  code: SpanStatusCode.ERROR,
174
- message: "Expected exception when checking container existence"
175
+ message: "Expected exception when checking container existence",
175
176
  });
176
177
  return false;
177
178
  }
178
179
  span.setStatus({
179
180
  code: SpanStatusCode.ERROR,
180
- message: e.message
181
+ message: e.message,
181
182
  });
182
183
  throw e;
183
184
  }
@@ -251,7 +252,7 @@ export class ContainerClient extends StorageClient {
251
252
  catch (e) {
252
253
  span.setStatus({
253
254
  code: SpanStatusCode.ERROR,
254
- message: e.message
255
+ message: e.message,
255
256
  });
256
257
  throw e;
257
258
  }
@@ -277,7 +278,7 @@ export class ContainerClient extends StorageClient {
277
278
  catch (e) {
278
279
  span.setStatus({
279
280
  code: SpanStatusCode.ERROR,
280
- message: e.message
281
+ message: e.message,
281
282
  });
282
283
  throw e;
283
284
  }
@@ -297,20 +298,19 @@ export class ContainerClient extends StorageClient {
297
298
  const { span, updatedOptions } = createSpan("ContainerClient-deleteIfExists", options);
298
299
  try {
299
300
  const res = await this.delete(updatedOptions);
300
- return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
301
- });
301
+ return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response });
302
302
  }
303
303
  catch (e) {
304
304
  if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "ContainerNotFound") {
305
305
  span.setStatus({
306
306
  code: SpanStatusCode.ERROR,
307
- message: "Expected exception when deleting a container only if it exists."
307
+ message: "Expected exception when deleting a container only if it exists.",
308
308
  });
309
309
  return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });
310
310
  }
311
311
  span.setStatus({
312
312
  code: SpanStatusCode.ERROR,
313
- message: e.message
313
+ message: e.message,
314
314
  });
315
315
  throw e;
316
316
  }
@@ -344,7 +344,7 @@ export class ContainerClient extends StorageClient {
344
344
  catch (e) {
345
345
  span.setStatus({
346
346
  code: SpanStatusCode.ERROR,
347
- message: e.message
347
+ message: e.message,
348
348
  });
349
349
  throw e;
350
350
  }
@@ -380,13 +380,13 @@ export class ContainerClient extends StorageClient {
380
380
  requestId: response.requestId,
381
381
  clientRequestId: response.clientRequestId,
382
382
  signedIdentifiers: [],
383
- version: response.version
383
+ version: response.version,
384
384
  };
385
385
  for (const identifier of response) {
386
386
  let accessPolicy = undefined;
387
387
  if (identifier.accessPolicy) {
388
388
  accessPolicy = {
389
- permissions: identifier.accessPolicy.permissions
389
+ permissions: identifier.accessPolicy.permissions,
390
390
  };
391
391
  if (identifier.accessPolicy.expiresOn) {
392
392
  accessPolicy.expiresOn = new Date(identifier.accessPolicy.expiresOn);
@@ -397,7 +397,7 @@ export class ContainerClient extends StorageClient {
397
397
  }
398
398
  res.signedIdentifiers.push({
399
399
  accessPolicy,
400
- id: identifier.id
400
+ id: identifier.id,
401
401
  });
402
402
  }
403
403
  return res;
@@ -405,7 +405,7 @@ export class ContainerClient extends StorageClient {
405
405
  catch (e) {
406
406
  span.setStatus({
407
407
  code: SpanStatusCode.ERROR,
408
- message: e.message
408
+ message: e.message,
409
409
  });
410
410
  throw e;
411
411
  }
@@ -444,9 +444,9 @@ export class ContainerClient extends StorageClient {
444
444
  permissions: identifier.accessPolicy.permissions,
445
445
  startsOn: identifier.accessPolicy.startsOn
446
446
  ? truncatedISO8061Date(identifier.accessPolicy.startsOn)
447
- : ""
447
+ : "",
448
448
  },
449
- id: identifier.id
449
+ id: identifier.id,
450
450
  });
451
451
  }
452
452
  return await this.containerContext.setAccessPolicy(Object.assign({ abortSignal: options.abortSignal, access, containerAcl: acl, leaseAccessConditions: options.conditions, modifiedAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)));
@@ -454,7 +454,7 @@ export class ContainerClient extends StorageClient {
454
454
  catch (e) {
455
455
  span.setStatus({
456
456
  code: SpanStatusCode.ERROR,
457
- message: e.message
457
+ message: e.message,
458
458
  });
459
459
  throw e;
460
460
  }
@@ -500,13 +500,13 @@ export class ContainerClient extends StorageClient {
500
500
  const response = await blockBlobClient.upload(body, contentLength, updatedOptions);
501
501
  return {
502
502
  blockBlobClient,
503
- response
503
+ response,
504
504
  };
505
505
  }
506
506
  catch (e) {
507
507
  span.setStatus({
508
508
  code: SpanStatusCode.ERROR,
509
- message: e.message
509
+ message: e.message,
510
510
  });
511
511
  throw e;
512
512
  }
@@ -537,7 +537,7 @@ export class ContainerClient extends StorageClient {
537
537
  catch (e) {
538
538
  span.setStatus({
539
539
  code: SpanStatusCode.ERROR,
540
- message: e.message
540
+ message: e.message,
541
541
  });
542
542
  throw e;
543
543
  }
@@ -572,7 +572,7 @@ export class ContainerClient extends StorageClient {
572
572
  catch (e) {
573
573
  span.setStatus({
574
574
  code: SpanStatusCode.ERROR,
575
- message: e.message
575
+ message: e.message,
576
576
  });
577
577
  throw e;
578
578
  }
@@ -609,7 +609,7 @@ export class ContainerClient extends StorageClient {
609
609
  return blobItem;
610
610
  }), blobPrefixes: (_a = response.segment.blobPrefixes) === null || _a === void 0 ? void 0 : _a.map((blobPrefixInternal) => {
611
611
  const blobPrefix = {
612
- name: BlobNameToString(blobPrefixInternal.name)
612
+ name: BlobNameToString(blobPrefixInternal.name),
613
613
  };
614
614
  return blobPrefix;
615
615
  }) }) });
@@ -618,7 +618,7 @@ export class ContainerClient extends StorageClient {
618
618
  catch (e) {
619
619
  span.setStatus({
620
620
  code: SpanStatusCode.ERROR,
621
- message: e.message
621
+ message: e.message,
622
622
  });
623
623
  throw e;
624
624
  }
@@ -800,7 +800,7 @@ export class ContainerClient extends StorageClient {
800
800
  */
801
801
  byPage: (settings = {}) => {
802
802
  return this.listSegments(settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, updatedOptions));
803
- }
803
+ },
804
804
  };
805
805
  }
806
806
  /**
@@ -874,7 +874,7 @@ export class ContainerClient extends StorageClient {
874
874
  * if (item.kind === "prefix") {
875
875
  * console.log(`\tBlobPrefix: ${item.name}`);
876
876
  * } else {
877
- * console.log(`\tBlobItem: name - ${item.name}, last modified - ${item.properties.lastModified}`);
877
+ * console.log(`\tBlobItem: name - ${item.name}`);
878
878
  * }
879
879
  * }
880
880
  * ```
@@ -889,7 +889,7 @@ export class ContainerClient extends StorageClient {
889
889
  * if (item.kind === "prefix") {
890
890
  * console.log(`\tBlobPrefix: ${item.name}`);
891
891
  * } else {
892
- * console.log(`\tBlobItem: name - ${item.name}, last modified - ${item.properties.lastModified}`);
892
+ * console.log(`\tBlobItem: name - ${item.name}`);
893
893
  * }
894
894
  * entity = await iter.next();
895
895
  * }
@@ -907,7 +907,7 @@ export class ContainerClient extends StorageClient {
907
907
  * }
908
908
  * }
909
909
  * for (const blob of response.segment.blobItems) {
910
- * console.log(`\tBlobItem: name - ${blob.name}, last modified - ${blob.properties.lastModified}`);
910
+ * console.log(`\tBlobItem: name - ${blob.name}`);
911
911
  * }
912
912
  * }
913
913
  * ```
@@ -918,7 +918,9 @@ export class ContainerClient extends StorageClient {
918
918
  * console.log("Listing blobs by hierarchy by page, specifying a prefix and a max page size");
919
919
  *
920
920
  * let i = 1;
921
- * for await (const response of containerClient.listBlobsByHierarchy("/", { prefix: "prefix2/sub1/"}).byPage({ maxPageSize: 2 })) {
921
+ * for await (const response of containerClient
922
+ * .listBlobsByHierarchy("/", { prefix: "prefix2/sub1/" })
923
+ * .byPage({ maxPageSize: 2 })) {
922
924
  * console.log(`Page ${i++}`);
923
925
  * const segment = response.segment;
924
926
  *
@@ -929,7 +931,7 @@ export class ContainerClient extends StorageClient {
929
931
  * }
930
932
  *
931
933
  * for (const blob of response.segment.blobItems) {
932
- * console.log(`\tBlobItem: name - ${blob.name}, last modified - ${blob.properties.lastModified}`);
934
+ * console.log(`\tBlobItem: name - ${blob.name}`);
933
935
  * }
934
936
  * }
935
937
  * ```
@@ -996,7 +998,208 @@ export class ContainerClient extends StorageClient {
996
998
  */
997
999
  byPage: (settings = {}) => {
998
1000
  return this.listHierarchySegments(delimiter, settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, updatedOptions));
1001
+ },
1002
+ };
1003
+ }
1004
+ /**
1005
+ * The Filter Blobs operation enables callers to list blobs in the container whose tags
1006
+ * match a given search expression.
1007
+ *
1008
+ * @param tagFilterSqlExpression - The where parameter enables the caller to query blobs whose tags match a given expression.
1009
+ * The given expression must evaluate to true for a blob to be returned in the results.
1010
+ * The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;
1011
+ * however, only a subset of the OData filter syntax is supported in the Blob service.
1012
+ * @param marker - A string value that identifies the portion of
1013
+ * the list of blobs to be returned with the next listing operation. The
1014
+ * operation returns the continuationToken value within the response body if the
1015
+ * listing operation did not return all blobs remaining to be listed
1016
+ * with the current page. The continuationToken value can be used as the value for
1017
+ * the marker parameter in a subsequent call to request the next page of list
1018
+ * items. The marker value is opaque to the client.
1019
+ * @param options - Options to find blobs by tags.
1020
+ */
1021
+ async findBlobsByTagsSegment(tagFilterSqlExpression, marker, options = {}) {
1022
+ const { span, updatedOptions } = createSpan("ContainerClient-findBlobsByTagsSegment", options);
1023
+ try {
1024
+ const response = await this.containerContext.filterBlobs(Object.assign({ abortSignal: options.abortSignal, where: tagFilterSqlExpression, marker, maxPageSize: options.maxPageSize }, convertTracingToRequestOptionsBase(updatedOptions)));
1025
+ const wrappedResponse = Object.assign(Object.assign({}, response), { _response: response._response, blobs: response.blobs.map((blob) => {
1026
+ var _a;
1027
+ let tagValue = "";
1028
+ if (((_a = blob.tags) === null || _a === void 0 ? void 0 : _a.blobTagSet.length) === 1) {
1029
+ tagValue = blob.tags.blobTagSet[0].value;
1030
+ }
1031
+ return Object.assign(Object.assign({}, blob), { tags: toTags(blob.tags), tagValue });
1032
+ }) });
1033
+ return wrappedResponse;
1034
+ }
1035
+ catch (e) {
1036
+ span.setStatus({
1037
+ code: SpanStatusCode.ERROR,
1038
+ message: e.message,
1039
+ });
1040
+ throw e;
1041
+ }
1042
+ finally {
1043
+ span.end();
1044
+ }
1045
+ }
1046
+ /**
1047
+ * Returns an AsyncIterableIterator for ContainerFindBlobsByTagsSegmentResponse.
1048
+ *
1049
+ * @param tagFilterSqlExpression - The where parameter enables the caller to query blobs whose tags match a given expression.
1050
+ * The given expression must evaluate to true for a blob to be returned in the results.
1051
+ * The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;
1052
+ * however, only a subset of the OData filter syntax is supported in the Blob service.
1053
+ * @param marker - A string value that identifies the portion of
1054
+ * the list of blobs to be returned with the next listing operation. The
1055
+ * operation returns the continuationToken value within the response body if the
1056
+ * listing operation did not return all blobs remaining to be listed
1057
+ * with the current page. The continuationToken value can be used as the value for
1058
+ * the marker parameter in a subsequent call to request the next page of list
1059
+ * items. The marker value is opaque to the client.
1060
+ * @param options - Options to find blobs by tags.
1061
+ */
1062
+ findBlobsByTagsSegments(tagFilterSqlExpression, marker, options = {}) {
1063
+ return __asyncGenerator(this, arguments, function* findBlobsByTagsSegments_1() {
1064
+ let response;
1065
+ if (!!marker || marker === undefined) {
1066
+ do {
1067
+ response = yield __await(this.findBlobsByTagsSegment(tagFilterSqlExpression, marker, options));
1068
+ response.blobs = response.blobs || [];
1069
+ marker = response.continuationToken;
1070
+ yield yield __await(response);
1071
+ } while (marker);
1072
+ }
1073
+ });
1074
+ }
1075
+ /**
1076
+ * Returns an AsyncIterableIterator for blobs.
1077
+ *
1078
+ * @param tagFilterSqlExpression - The where parameter enables the caller to query blobs whose tags match a given expression.
1079
+ * The given expression must evaluate to true for a blob to be returned in the results.
1080
+ * The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;
1081
+ * however, only a subset of the OData filter syntax is supported in the Blob service.
1082
+ * @param options - Options to findBlobsByTagsItems.
1083
+ */
1084
+ findBlobsByTagsItems(tagFilterSqlExpression, options = {}) {
1085
+ return __asyncGenerator(this, arguments, function* findBlobsByTagsItems_1() {
1086
+ var e_3, _a;
1087
+ let marker;
1088
+ try {
1089
+ for (var _b = __asyncValues(this.findBlobsByTagsSegments(tagFilterSqlExpression, marker, options)), _c; _c = yield __await(_b.next()), !_c.done;) {
1090
+ const segment = _c.value;
1091
+ yield __await(yield* __asyncDelegator(__asyncValues(segment.blobs)));
1092
+ }
1093
+ }
1094
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
1095
+ finally {
1096
+ try {
1097
+ if (_c && !_c.done && (_a = _b.return)) yield __await(_a.call(_b));
1098
+ }
1099
+ finally { if (e_3) throw e_3.error; }
999
1100
  }
1101
+ });
1102
+ }
1103
+ /**
1104
+ * Returns an async iterable iterator to find all blobs with specified tag
1105
+ * under the specified container.
1106
+ *
1107
+ * .byPage() returns an async iterable iterator to list the blobs in pages.
1108
+ *
1109
+ * Example using `for await` syntax:
1110
+ *
1111
+ * ```js
1112
+ * let i = 1;
1113
+ * for await (const blob of containerClient.findBlobsByTags("tagkey='tagvalue'")) {
1114
+ * console.log(`Blob ${i++}: ${blob.name}`);
1115
+ * }
1116
+ * ```
1117
+ *
1118
+ * Example using `iter.next()`:
1119
+ *
1120
+ * ```js
1121
+ * let i = 1;
1122
+ * const iter = containerClient.findBlobsByTags("tagkey='tagvalue'");
1123
+ * let blobItem = await iter.next();
1124
+ * while (!blobItem.done) {
1125
+ * console.log(`Blob ${i++}: ${blobItem.value.name}`);
1126
+ * blobItem = await iter.next();
1127
+ * }
1128
+ * ```
1129
+ *
1130
+ * Example using `byPage()`:
1131
+ *
1132
+ * ```js
1133
+ * // passing optional maxPageSize in the page settings
1134
+ * let i = 1;
1135
+ * for await (const response of containerClient.findBlobsByTags("tagkey='tagvalue'").byPage({ maxPageSize: 20 })) {
1136
+ * if (response.blobs) {
1137
+ * for (const blob of response.blobs) {
1138
+ * console.log(`Blob ${i++}: ${blob.name}`);
1139
+ * }
1140
+ * }
1141
+ * }
1142
+ * ```
1143
+ *
1144
+ * Example using paging with a marker:
1145
+ *
1146
+ * ```js
1147
+ * let i = 1;
1148
+ * let iterator = containerClient.findBlobsByTags("tagkey='tagvalue'").byPage({ maxPageSize: 2 });
1149
+ * let response = (await iterator.next()).value;
1150
+ *
1151
+ * // Prints 2 blob names
1152
+ * if (response.blobs) {
1153
+ * for (const blob of response.blobs) {
1154
+ * console.log(`Blob ${i++}: ${blob.name}`);
1155
+ * }
1156
+ * }
1157
+ *
1158
+ * // Gets next marker
1159
+ * let marker = response.continuationToken;
1160
+ * // Passing next marker as continuationToken
1161
+ * iterator = containerClient
1162
+ * .findBlobsByTags("tagkey='tagvalue'")
1163
+ * .byPage({ continuationToken: marker, maxPageSize: 10 });
1164
+ * response = (await iterator.next()).value;
1165
+ *
1166
+ * // Prints blob names
1167
+ * if (response.blobs) {
1168
+ * for (const blob of response.blobs) {
1169
+ * console.log(`Blob ${i++}: ${blob.name}`);
1170
+ * }
1171
+ * }
1172
+ * ```
1173
+ *
1174
+ * @param tagFilterSqlExpression - The where parameter enables the caller to query blobs whose tags match a given expression.
1175
+ * The given expression must evaluate to true for a blob to be returned in the results.
1176
+ * The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;
1177
+ * however, only a subset of the OData filter syntax is supported in the Blob service.
1178
+ * @param options - Options to find blobs by tags.
1179
+ */
1180
+ findBlobsByTags(tagFilterSqlExpression, options = {}) {
1181
+ // AsyncIterableIterator to iterate over blobs
1182
+ const listSegmentOptions = Object.assign({}, options);
1183
+ const iter = this.findBlobsByTagsItems(tagFilterSqlExpression, listSegmentOptions);
1184
+ return {
1185
+ /**
1186
+ * The next method, part of the iteration protocol
1187
+ */
1188
+ next() {
1189
+ return iter.next();
1190
+ },
1191
+ /**
1192
+ * The connection to the async iterator, part of the iteration protocol
1193
+ */
1194
+ [Symbol.asyncIterator]() {
1195
+ return this;
1196
+ },
1197
+ /**
1198
+ * Return an AsyncIterableIterator that works a page at a time
1199
+ */
1200
+ byPage: (settings = {}) => {
1201
+ return this.findBlobsByTagsSegments(tagFilterSqlExpression, settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));
1202
+ },
1000
1203
  };
1001
1204
  }
1002
1205
  getContainerNameFromUrl() {