@azure/data-tables 13.3.1-alpha.20250620.1 → 13.3.1-alpha.20250721.1

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 (144) hide show
  1. package/dist/browser/TableClient.js +105 -61
  2. package/dist/browser/TableClient.js.map +1 -1
  3. package/dist/browser/TableServiceClient.js +59 -48
  4. package/dist/browser/TableServiceClient.js.map +1 -1
  5. package/dist/browser/TableTransaction.js +34 -9
  6. package/dist/browser/TableTransaction.js.map +1 -1
  7. package/dist/browser/generated/generatedClient.js +11 -3
  8. package/dist/browser/generated/generatedClient.js.map +1 -1
  9. package/dist/browser/generated/generatedClientContext.js +9 -2
  10. package/dist/browser/generated/generatedClientContext.js.map +1 -1
  11. package/dist/browser/generated/models/mappers.js +5 -2
  12. package/dist/browser/generated/models/mappers.js.map +1 -1
  13. package/dist/browser/generated/operations/service.js +1 -0
  14. package/dist/browser/generated/operations/service.js.map +1 -1
  15. package/dist/browser/generated/operations/table.js +1 -0
  16. package/dist/browser/generated/operations/table.js.map +1 -1
  17. package/dist/browser/sas/generateAccountSas.js +8 -3
  18. package/dist/browser/sas/generateAccountSas.js.map +1 -1
  19. package/dist/browser/sas/generateTableSas.js +5 -2
  20. package/dist/browser/sas/generateTableSas.js.map +1 -1
  21. package/dist/browser/sas/sasQueryParameters.js +112 -0
  22. package/dist/browser/sas/sasQueryParameters.js.map +1 -1
  23. package/dist/browser/sas/tableSasSignatureValues.js +6 -7
  24. package/dist/browser/sas/tableSasSignatureValues.js.map +1 -1
  25. package/dist/browser/secondaryEndpointPolicy.js +10 -2
  26. package/dist/browser/secondaryEndpointPolicy.js.map +1 -1
  27. package/dist/browser/serialization.js +16 -10
  28. package/dist/browser/serialization.js.map +1 -1
  29. package/dist/browser/utils/continuationToken.js +5 -1
  30. package/dist/browser/utils/continuationToken.js.map +1 -1
  31. package/dist/browser/utils/errorHelpers.js +3 -4
  32. package/dist/browser/utils/errorHelpers.js.map +1 -1
  33. package/dist/browser/utils/isCosmosEndpoint.js +2 -3
  34. package/dist/browser/utils/isCosmosEndpoint.js.map +1 -1
  35. package/dist/commonjs/TableClient.js +105 -61
  36. package/dist/commonjs/TableClient.js.map +1 -1
  37. package/dist/commonjs/TableServiceClient.js +59 -48
  38. package/dist/commonjs/TableServiceClient.js.map +1 -1
  39. package/dist/commonjs/TableTransaction.js +34 -9
  40. package/dist/commonjs/TableTransaction.js.map +1 -1
  41. package/dist/commonjs/generated/generatedClient.js +11 -3
  42. package/dist/commonjs/generated/generatedClient.js.map +1 -1
  43. package/dist/commonjs/generated/generatedClientContext.js +9 -2
  44. package/dist/commonjs/generated/generatedClientContext.js.map +1 -1
  45. package/dist/commonjs/generated/models/mappers.js +5 -2
  46. package/dist/commonjs/generated/models/mappers.js.map +1 -1
  47. package/dist/commonjs/generated/operations/service.js +1 -0
  48. package/dist/commonjs/generated/operations/service.js.map +1 -1
  49. package/dist/commonjs/generated/operations/table.js +1 -0
  50. package/dist/commonjs/generated/operations/table.js.map +1 -1
  51. package/dist/commonjs/sas/generateAccountSas.js +8 -3
  52. package/dist/commonjs/sas/generateAccountSas.js.map +1 -1
  53. package/dist/commonjs/sas/generateTableSas.js +5 -2
  54. package/dist/commonjs/sas/generateTableSas.js.map +1 -1
  55. package/dist/commonjs/sas/sasQueryParameters.js +112 -0
  56. package/dist/commonjs/sas/sasQueryParameters.js.map +1 -1
  57. package/dist/commonjs/sas/tableSasSignatureValues.js +6 -7
  58. package/dist/commonjs/sas/tableSasSignatureValues.js.map +1 -1
  59. package/dist/commonjs/secondaryEndpointPolicy.js +10 -2
  60. package/dist/commonjs/secondaryEndpointPolicy.js.map +1 -1
  61. package/dist/commonjs/serialization.js +16 -10
  62. package/dist/commonjs/serialization.js.map +1 -1
  63. package/dist/commonjs/tsdoc-metadata.json +11 -11
  64. package/dist/commonjs/utils/continuationToken.js +5 -1
  65. package/dist/commonjs/utils/continuationToken.js.map +1 -1
  66. package/dist/commonjs/utils/errorHelpers.js +3 -4
  67. package/dist/commonjs/utils/errorHelpers.js.map +1 -1
  68. package/dist/commonjs/utils/isCosmosEndpoint.js +2 -3
  69. package/dist/commonjs/utils/isCosmosEndpoint.js.map +1 -1
  70. package/dist/commonjs/utils/transactionHeaders.js +5 -2
  71. package/dist/commonjs/utils/transactionHeaders.js.map +1 -1
  72. package/dist/esm/TableClient.js +105 -61
  73. package/dist/esm/TableClient.js.map +1 -1
  74. package/dist/esm/TableServiceClient.js +59 -48
  75. package/dist/esm/TableServiceClient.js.map +1 -1
  76. package/dist/esm/TableTransaction.js +34 -9
  77. package/dist/esm/TableTransaction.js.map +1 -1
  78. package/dist/esm/generated/generatedClient.js +11 -3
  79. package/dist/esm/generated/generatedClient.js.map +1 -1
  80. package/dist/esm/generated/generatedClientContext.js +9 -2
  81. package/dist/esm/generated/generatedClientContext.js.map +1 -1
  82. package/dist/esm/generated/models/mappers.js +5 -2
  83. package/dist/esm/generated/models/mappers.js.map +1 -1
  84. package/dist/esm/generated/operations/service.js +1 -0
  85. package/dist/esm/generated/operations/service.js.map +1 -1
  86. package/dist/esm/generated/operations/table.js +1 -0
  87. package/dist/esm/generated/operations/table.js.map +1 -1
  88. package/dist/esm/sas/generateAccountSas.js +8 -3
  89. package/dist/esm/sas/generateAccountSas.js.map +1 -1
  90. package/dist/esm/sas/generateTableSas.js +5 -2
  91. package/dist/esm/sas/generateTableSas.js.map +1 -1
  92. package/dist/esm/sas/sasQueryParameters.js +112 -0
  93. package/dist/esm/sas/sasQueryParameters.js.map +1 -1
  94. package/dist/esm/sas/tableSasSignatureValues.js +6 -7
  95. package/dist/esm/sas/tableSasSignatureValues.js.map +1 -1
  96. package/dist/esm/secondaryEndpointPolicy.js +10 -2
  97. package/dist/esm/secondaryEndpointPolicy.js.map +1 -1
  98. package/dist/esm/serialization.js +16 -10
  99. package/dist/esm/serialization.js.map +1 -1
  100. package/dist/esm/utils/continuationToken.js +5 -1
  101. package/dist/esm/utils/continuationToken.js.map +1 -1
  102. package/dist/esm/utils/errorHelpers.js +3 -4
  103. package/dist/esm/utils/errorHelpers.js.map +1 -1
  104. package/dist/esm/utils/isCosmosEndpoint.js +2 -3
  105. package/dist/esm/utils/isCosmosEndpoint.js.map +1 -1
  106. package/dist/esm/utils/transactionHeaders.js +5 -2
  107. package/dist/esm/utils/transactionHeaders.js.map +1 -1
  108. package/dist/react-native/TableClient.js +105 -61
  109. package/dist/react-native/TableClient.js.map +1 -1
  110. package/dist/react-native/TableServiceClient.js +59 -48
  111. package/dist/react-native/TableServiceClient.js.map +1 -1
  112. package/dist/react-native/TableTransaction.js +34 -9
  113. package/dist/react-native/TableTransaction.js.map +1 -1
  114. package/dist/react-native/generated/generatedClient.js +11 -3
  115. package/dist/react-native/generated/generatedClient.js.map +1 -1
  116. package/dist/react-native/generated/generatedClientContext.js +9 -2
  117. package/dist/react-native/generated/generatedClientContext.js.map +1 -1
  118. package/dist/react-native/generated/models/mappers.js +5 -2
  119. package/dist/react-native/generated/models/mappers.js.map +1 -1
  120. package/dist/react-native/generated/operations/service.js +1 -0
  121. package/dist/react-native/generated/operations/service.js.map +1 -1
  122. package/dist/react-native/generated/operations/table.js +1 -0
  123. package/dist/react-native/generated/operations/table.js.map +1 -1
  124. package/dist/react-native/sas/generateAccountSas.js +8 -3
  125. package/dist/react-native/sas/generateAccountSas.js.map +1 -1
  126. package/dist/react-native/sas/generateTableSas.js +5 -2
  127. package/dist/react-native/sas/generateTableSas.js.map +1 -1
  128. package/dist/react-native/sas/sasQueryParameters.js +112 -0
  129. package/dist/react-native/sas/sasQueryParameters.js.map +1 -1
  130. package/dist/react-native/sas/tableSasSignatureValues.js +6 -7
  131. package/dist/react-native/sas/tableSasSignatureValues.js.map +1 -1
  132. package/dist/react-native/secondaryEndpointPolicy.js +10 -2
  133. package/dist/react-native/secondaryEndpointPolicy.js.map +1 -1
  134. package/dist/react-native/serialization.js +16 -10
  135. package/dist/react-native/serialization.js.map +1 -1
  136. package/dist/react-native/utils/continuationToken.js +5 -1
  137. package/dist/react-native/utils/continuationToken.js.map +1 -1
  138. package/dist/react-native/utils/errorHelpers.js +3 -4
  139. package/dist/react-native/utils/errorHelpers.js.map +1 -1
  140. package/dist/react-native/utils/isCosmosEndpoint.js +2 -3
  141. package/dist/react-native/utils/isCosmosEndpoint.js.map +1 -1
  142. package/dist/react-native/utils/transactionHeaders.js +5 -2
  143. package/dist/react-native/utils/transactionHeaders.js.map +1 -1
  144. package/package.json +2 -2
@@ -3,7 +3,6 @@
3
3
  // Licensed under the MIT License.
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.TableServiceClient = void 0;
6
- const tslib_1 = require("tslib");
7
6
  const core_auth_1 = require("@azure/core-auth");
8
7
  const constants_js_1 = require("./utils/constants.js");
9
8
  const secondaryEndpointPolicy_js_1 = require("./secondaryEndpointPolicy.js");
@@ -24,19 +23,36 @@ const isCosmosEndpoint_js_1 = require("./utils/isCosmosEndpoint.js");
24
23
  * to perform operations on the tables and the entities.
25
24
  */
26
25
  class TableServiceClient {
26
+ /**
27
+ * Table Account URL
28
+ */
29
+ url;
30
+ /**
31
+ * Represents a pipeline for making a HTTP request to a URL.
32
+ * Pipelines can have multiple policies to manage manipulating each request before and after it is made to the server.
33
+ */
34
+ pipeline;
35
+ table;
36
+ service;
27
37
  constructor(url, credentialOrOptions, options) {
28
38
  this.url = url;
29
39
  const isCosmos = (0, isCosmosEndpoint_js_1.isCosmosEndpoint)(this.url);
30
40
  const credential = (0, isCredential_js_1.isCredential)(credentialOrOptions) ? credentialOrOptions : undefined;
31
41
  const clientOptions = (!(0, isCredential_js_1.isCredential)(credentialOrOptions) ? credentialOrOptions : options) || {};
32
- const internalPipelineOptions = Object.assign(Object.assign({}, clientOptions), { endpoint: clientOptions.endpoint || this.url, loggingOptions: {
42
+ const internalPipelineOptions = {
43
+ ...clientOptions,
44
+ endpoint: clientOptions.endpoint || this.url,
45
+ loggingOptions: {
33
46
  logger: logger_js_1.logger.info,
34
47
  additionalAllowedHeaderNames: [...constants_js_1.TablesLoggingAllowedHeaderNames],
35
- }, deserializationOptions: {
48
+ },
49
+ deserializationOptions: {
36
50
  parseXML: core_xml_1.parseXML,
37
- }, serializationOptions: {
51
+ },
52
+ serializationOptions: {
38
53
  stringifyXML: core_xml_1.stringifyXML,
39
- } });
54
+ },
55
+ };
40
56
  const client = new generatedClient_js_1.GeneratedClient(this.url, internalPipelineOptions);
41
57
  client.pipeline.addPolicy(secondaryEndpointPolicy_js_1.tablesSecondaryEndpointPolicy);
42
58
  if ((0, core_auth_1.isNamedKeyCredential)(credential)) {
@@ -49,7 +65,7 @@ class TableServiceClient {
49
65
  const scope = isCosmos ? constants_js_1.COSMOS_SCOPE : constants_js_1.STORAGE_SCOPE;
50
66
  (0, challengeAuthenticationUtils_js_1.setTokenChallengeAuthenticationPolicy)(client.pipeline, credential, scope);
51
67
  }
52
- if (options === null || options === void 0 ? void 0 : options.version) {
68
+ if (options?.version) {
53
69
  client.pipeline.addPolicy((0, apiVersionPolicy_js_1.apiVersionPolicy)(options.version));
54
70
  }
55
71
  this.pipeline = client.pipeline;
@@ -92,7 +108,7 @@ class TableServiceClient {
92
108
  await this.table.create({ name }, updatedOptions);
93
109
  }
94
110
  catch (e) {
95
- (0, errorHelpers_js_1.handleTableAlreadyExists)(e, Object.assign(Object.assign({}, updatedOptions), { logger: logger_js_1.logger, tableName: name }));
111
+ (0, errorHelpers_js_1.handleTableAlreadyExists)(e, { ...updatedOptions, logger: logger_js_1.logger, tableName: name });
96
112
  }
97
113
  });
98
114
  }
@@ -132,57 +148,52 @@ class TableServiceClient {
132
148
  return this;
133
149
  },
134
150
  byPage: (settings) => {
135
- const pageOptions = Object.assign(Object.assign({}, options), { queryOptions: Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.queryOptions), { top: settings === null || settings === void 0 ? void 0 : settings.maxPageSize }) });
136
- if (settings === null || settings === void 0 ? void 0 : settings.continuationToken) {
151
+ const pageOptions = {
152
+ ...options,
153
+ queryOptions: { ...options?.queryOptions, top: settings?.maxPageSize },
154
+ };
155
+ if (settings?.continuationToken) {
137
156
  pageOptions.continuationToken = settings.continuationToken;
138
157
  }
139
158
  return this.listTablesPage(pageOptions);
140
159
  },
141
160
  };
142
161
  }
143
- listTablesAll(options) {
144
- return tslib_1.__asyncGenerator(this, arguments, function* listTablesAll_1() {
145
- var _a, e_1, _b, _c;
146
- const firstPage = yield tslib_1.__await(this._listTables(options));
147
- const { continuationToken } = firstPage;
148
- yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(firstPage)));
149
- if (continuationToken) {
150
- const optionsWithContinuation = Object.assign(Object.assign({}, options), { continuationToken });
151
- try {
152
- for (var _d = true, _e = tslib_1.__asyncValues(this.listTablesPage(optionsWithContinuation)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {
153
- _c = _f.value;
154
- _d = false;
155
- const page = _c;
156
- yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));
157
- }
158
- }
159
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
160
- finally {
161
- try {
162
- if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));
163
- }
164
- finally { if (e_1) throw e_1.error; }
165
- }
162
+ async *listTablesAll(options) {
163
+ const firstPage = await this._listTables(options);
164
+ const { continuationToken } = firstPage;
165
+ yield* firstPage;
166
+ if (continuationToken) {
167
+ const optionsWithContinuation = {
168
+ ...options,
169
+ continuationToken,
170
+ };
171
+ for await (const page of this.listTablesPage(optionsWithContinuation)) {
172
+ yield* page;
166
173
  }
167
- });
174
+ }
168
175
  }
169
- listTablesPage() {
170
- return tslib_1.__asyncGenerator(this, arguments, function* listTablesPage_1(options = {}) {
171
- let result = yield tslib_1.__await(tracing_js_1.tracingClient.withSpan("TableServiceClient.listTablesPage", options, (updatedOptions) => this._listTables(updatedOptions)));
172
- yield yield tslib_1.__await(result);
173
- while (result.continuationToken) {
174
- const optionsWithContinuation = Object.assign(Object.assign({}, options), { continuationToken: result.continuationToken });
175
- result = yield tslib_1.__await(tracing_js_1.tracingClient.withSpan("TableServiceClient.listTablesPage", optionsWithContinuation, async (updatedOptions, span) => {
176
- span.setAttribute("continuationToken", updatedOptions.continuationToken);
177
- return this._listTables(updatedOptions);
178
- }));
179
- yield yield tslib_1.__await(result);
180
- }
181
- });
176
+ async *listTablesPage(options = {}) {
177
+ let result = await tracing_js_1.tracingClient.withSpan("TableServiceClient.listTablesPage", options, (updatedOptions) => this._listTables(updatedOptions));
178
+ yield result;
179
+ while (result.continuationToken) {
180
+ const optionsWithContinuation = {
181
+ ...options,
182
+ continuationToken: result.continuationToken,
183
+ };
184
+ result = await tracing_js_1.tracingClient.withSpan("TableServiceClient.listTablesPage", optionsWithContinuation, async (updatedOptions, span) => {
185
+ span.setAttribute("continuationToken", updatedOptions.continuationToken);
186
+ return this._listTables(updatedOptions);
187
+ });
188
+ yield result;
189
+ }
182
190
  }
183
191
  async _listTables(options = {}) {
184
- const { continuationToken: nextTableName } = options, listOptions = tslib_1.__rest(options, ["continuationToken"]);
185
- const { xMsContinuationNextTableName: continuationToken, value = [] } = await this.table.query(Object.assign(Object.assign({}, listOptions), { nextTableName }));
192
+ const { continuationToken: nextTableName, ...listOptions } = options;
193
+ const { xMsContinuationNextTableName: continuationToken, value = [] } = await this.table.query({
194
+ ...listOptions,
195
+ nextTableName,
196
+ });
186
197
  return Object.assign([...value], { continuationToken });
187
198
  }
188
199
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"TableServiceClient.js","sourceRoot":"","sources":["../../src/TableServiceClient.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;AAqBlC,gDAA4F;AAC5F,uDAAoG;AAEpG,6EAGsC;AACtC,8CAAyD;AAEzD,uEAAiE;AAIjE,qEAA+D;AAC/D,qEAAkF;AAClF,6DAAmE;AACnE,6DAAuD;AACvD,2CAAqC;AACrC,6FAAgG;AAChG,qFAAkF;AAClF,uEAAiE;AACjE,mDAAmD;AACnD,qEAA+D;AAE/D;;;GAGG;AACH,MAAa,kBAAkB;IAuG7B,YACE,GAAW,EACX,mBAI6B,EAC7B,OAAmC;QAEnC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,MAAM,QAAQ,GAAG,IAAA,sCAAgB,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAA,8BAAY,EAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;QACvF,MAAM,aAAa,GACjB,CAAC,CAAC,IAAA,8BAAY,EAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAE7E,MAAM,uBAAuB,mCACxB,aAAa,KAChB,QAAQ,EAAE,aAAa,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,EAC5C,cAAc,EAAE;gBACd,MAAM,EAAE,kBAAM,CAAC,IAAI;gBACnB,4BAA4B,EAAE,CAAC,GAAG,8CAA+B,CAAC;aACnE,EACD,sBAAsB,EAAE;gBACtB,QAAQ,EAAR,mBAAQ;aACT,EACD,oBAAoB,EAAE;gBACpB,YAAY,EAAZ,uBAAY;aACb,GACF,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,oCAAe,CAAC,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;QACtE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,0DAA6B,CAAC,CAAC;QAEzD,IAAI,IAAA,gCAAoB,EAAC,UAAU,CAAC,EAAE,CAAC;YACrC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAA,+DAA8B,EAAC,UAAU,CAAC,CAAC,CAAC;QACxE,CAAC;aAAM,IAAI,IAAA,2BAAe,EAAC,UAAU,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAA,8CAAoB,EAAC,UAAU,CAAC,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,IAAA,6BAAiB,EAAC,UAAU,CAAC,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,2BAAY,CAAC,CAAC,CAAC,4BAAa,CAAC;YACtD,IAAA,uEAAqC,EAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,EAAE,CAAC;YACrB,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAA,sCAAgB,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,aAAa,CAAC,UAA4B,EAAE;QACvD,OAAO,0BAAa,CAAC,QAAQ,CAAC,kCAAkC,EAAE,OAAO,EAAE,CAAC,cAAc,EAAE,EAAE,CAC5F,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAA,0DAA6B,EAAC,cAAc,CAAC,CAAC,CAC1E,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,aAAa,CAAC,UAA4B,EAAE;QACjD,OAAO,0BAAa,CAAC,QAAQ,CAAC,kCAAkC,EAAE,OAAO,EAAE,CAAC,cAAc,EAAE,EAAE,CAC5F,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAC3C,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACI,aAAa,CAClB,UAA6B,EAC7B,UAAgC,EAAE;QAElC,OAAO,0BAAa,CAAC,QAAQ,CAAC,kCAAkC,EAAE,OAAO,EAAE,CAAC,cAAc,EAAE,EAAE,CAC5F,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,EAAE,cAAc,CAAC,CACvD,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,IAAY,EAAE,UAA4B,EAAE;QAC7D,OAAO,0BAAa,CAAC,QAAQ,CAC3B,gCAAgC,EAChC,OAAO,EACP,KAAK,EAAE,cAAc,EAAE,EAAE;YACvB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,cAAc,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,IAAA,0CAAwB,EAAC,CAAC,kCAAO,cAAc,KAAE,MAAM,EAAN,kBAAM,EAAE,SAAS,EAAE,IAAI,IAAG,CAAC;YAC9E,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,IAAY,EAAE,UAA4B,EAAE;QAC7D,OAAO,0BAAa,CAAC,QAAQ,CAC3B,gCAAgC,EAChC,OAAO,EACP,KAAK,EAAE,cAAc,EAAE,EAAE;YACvB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YAChD,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;oBACzB,kBAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;gBACrE,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,CAAC;gBACV,CAAC;YACH,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACI,UAAU;IACf,8DAA8D;IAC9D,OAA+B;QAE/B,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAEzC,OAAO;YACL,IAAI;gBACF,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;YACrB,CAAC;YACD,CAAC,MAAM,CAAC,aAAa,CAAC;gBACpB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACnB,MAAM,WAAW,mCACZ,OAAO,KACV,YAAY,kCAAO,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,KAAE,GAAG,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,MACrE,CAAC;gBAEF,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,iBAAiB,EAAE,CAAC;oBAChC,WAAW,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;gBAC7D,CAAC;gBAED,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YAC1C,CAAC;SACF,CAAC;IACJ,CAAC;IAEc,aAAa,CAC1B,OAAmC;;;YAEnC,MAAM,SAAS,GAAG,sBAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA,CAAC;YAClD,MAAM,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC;YACxC,sBAAA,KAAK,CAAC,CAAC,yBAAA,sBAAA,SAAS,CAAA,CAAA,CAAA,CAAC;YACjB,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,uBAAuB,mCACxB,OAAO,KACV,iBAAiB,GAClB,CAAC;;oBACF,KAAyB,eAAA,KAAA,sBAAA,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAA,IAAA,uEAAE,CAAC;wBAA/C,cAA4C;wBAA5C,WAA4C;wBAA1D,MAAM,IAAI,KAAA,CAAA;wBACnB,sBAAA,KAAK,CAAC,CAAC,yBAAA,sBAAA,IAAI,CAAA,CAAA,CAAA,CAAC;oBACd,CAAC;;;;;;;;;YACH,CAAC;QACH,CAAC;KAAA;IAEc,cAAc;oFAC3B,UAAqC,EAAE;YAEvC,IAAI,MAAM,GAAG,sBAAM,0BAAa,CAAC,QAAQ,CACvC,mCAAmC,EACnC,OAAO,EACP,CAAC,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CACrD,CAAA,CAAC;YAEF,4BAAM,MAAM,CAAA,CAAC;YAEb,OAAO,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAChC,MAAM,uBAAuB,mCACxB,OAAO,KACV,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,GAC5C,CAAC;gBACF,MAAM,GAAG,sBAAM,0BAAa,CAAC,QAAQ,CACnC,mCAAmC,EACnC,uBAAuB,EACvB,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE;oBAC7B,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAC;oBACzE,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;gBAC1C,CAAC,CACF,CAAA,CAAC;gBACF,4BAAM,MAAM,CAAA,CAAC;YACf,CAAC;QACH,CAAC;KAAA;IAEO,KAAK,CAAC,WAAW,CAAC,UAAqC,EAAE;QAC/D,MAAM,EAAE,iBAAiB,EAAE,aAAa,KAAqB,OAAO,EAAvB,WAAW,kBAAK,OAAO,EAA9D,qBAAoD,CAAU,CAAC;QACrE,MAAM,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,iCACzF,WAAW,KACd,aAAa,IACb,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;;;;;;;OAYG;IACI,MAAM,CAAC,oBAAoB,CAChC,gBAAwB;IACxB,8DAA8D;IAC9D,OAAmC;QAEnC,MAAM,EACJ,GAAG,EACH,OAAO,EAAE,aAAa,EACtB,UAAU,GACX,GAAG,IAAA,yDAAmC,EAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAEnE,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,IAAI,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,kBAAkB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;CACF;AA9VD,gDA8VC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n GetPropertiesResponse,\n GetStatisticsResponse,\n ServiceProperties,\n SetPropertiesOptions,\n SetPropertiesResponse,\n} from \"./generatedModels.js\";\nimport type {\n InternalClientPipelineOptions,\n OperationOptions,\n ServiceClientOptions,\n} from \"@azure/core-client\";\nimport type {\n ListTableItemsOptions,\n TableItem,\n TableQueryOptions,\n TableServiceClientOptions,\n} from \"./models.js\";\nimport type { NamedKeyCredential, SASCredential, TokenCredential } from \"@azure/core-auth\";\nimport { isNamedKeyCredential, isSASCredential, isTokenCredential } from \"@azure/core-auth\";\nimport { COSMOS_SCOPE, STORAGE_SCOPE, TablesLoggingAllowedHeaderNames } from \"./utils/constants.js\";\nimport type { Service, Table } from \"./generated/index.js\";\nimport {\n injectSecondaryEndpointHeader,\n tablesSecondaryEndpointPolicy,\n} from \"./secondaryEndpointPolicy.js\";\nimport { parseXML, stringifyXML } from \"@azure/core-xml\";\n\nimport { GeneratedClient } from \"./generated/generatedClient.js\";\nimport type { PagedAsyncIterableIterator } from \"@azure/core-paging\";\nimport type { Pipeline } from \"@azure/core-rest-pipeline\";\nimport type { TableItemResultPage } from \"./models.js\";\nimport { apiVersionPolicy } from \"./utils/apiVersionPolicy.js\";\nimport { getClientParamsFromConnectionString } from \"./utils/connectionString.js\";\nimport { handleTableAlreadyExists } from \"./utils/errorHelpers.js\";\nimport { isCredential } from \"./utils/isCredential.js\";\nimport { logger } from \"./logger.js\";\nimport { setTokenChallengeAuthenticationPolicy } from \"./utils/challengeAuthenticationUtils.js\";\nimport { tablesNamedKeyCredentialPolicy } from \"./tablesNamedCredentialPolicy.js\";\nimport { tablesSASTokenPolicy } from \"./tablesSASTokenPolicy.js\";\nimport { tracingClient } from \"./utils/tracing.js\";\nimport { isCosmosEndpoint } from \"./utils/isCosmosEndpoint.js\";\n\n/**\n * A TableServiceClient represents a Client to the Azure Tables service allowing you\n * to perform operations on the tables and the entities.\n */\nexport class TableServiceClient {\n /**\n * Table Account URL\n */\n public url: string;\n /**\n * Represents a pipeline for making a HTTP request to a URL.\n * Pipelines can have multiple policies to manage manipulating each request before and after it is made to the server.\n */\n public pipeline: Pipeline;\n private table: Table;\n private service: Service;\n\n /**\n * Creates a new instance of the TableServiceClient class.\n *\n * @param url - The URL of the service account that is the target of the desired operation., such as \"https://myaccount.table.core.windows.net\".\n * @param credential - NamedKeyCredential | SASCredential used to authenticate requests. Only Supported for Node\n * @param options - Options to configure the HTTP pipeline.\n *\n * ### Example using an account name/key:\n *\n * ```ts snippet:ReadmeSampleCreateClient_NamedKeyCredential\n * import { AzureNamedKeyCredential, TableServiceClient } from \"@azure/data-tables\";\n *\n * const account = \"<account>\";\n * const accountKey = \"<accountkey>\";\n *\n * const credential = new AzureNamedKeyCredential(account, accountKey);\n * const serviceClient = new TableServiceClient(\n * `https://${account}.table.core.windows.net`,\n * credential,\n * );\n * ```\n */\n constructor(url: string, credential: NamedKeyCredential, options?: TableServiceClientOptions);\n /**\n * Creates a new instance of the TableServiceClient class.\n *\n * @param url - The URL of the service account that is the target of the desired operation., such as \"https://myaccount.table.core.windows.net\".\n * @param credential - SASCredential used to authenticate requests\n * @param options - Options to configure the HTTP pipeline.\n *\n * ### Example using a SAS Token.\n *\n * ```ts snippet:ReadmeSampleCreateClient_SASToken\n * import { TableServiceClient, AzureSASCredential } from \"@azure/data-tables\";\n *\n * const account = \"<account name>\";\n * const sas = \"<service Shared Access Signature Token>\";\n *\n * const serviceClientWithSAS = new TableServiceClient(\n * `https://${account}.table.core.windows.net`,\n * new AzureSASCredential(sas),\n * );\n * ```\n */\n constructor(url: string, credential: SASCredential, options?: TableServiceClientOptions);\n /**\n * Creates a new instance of the TableServiceClient class.\n *\n * @param url - The URL of the service account that is the target of the desired operation., such as \"https://myaccount.table.core.windows.net\".\n * @param credential - Azure Active Directory credential used to authenticate requests\n * @param options - Options to configure the HTTP pipeline.\n *\n * ### Example using an Azure Active Directory credential:\n *\n * ```ts snippet:ReadmeSampleCreateClient_TokenCredential\n * import { DefaultAzureCredential } from \"@azure/identity\";\n * import { TableServiceClient } from \"@azure/data-tables\";\n *\n * const credential = new DefaultAzureCredential();\n * const account = \"<account name>\";\n *\n * const clientWithAAD = new TableServiceClient(\n * `https://${account}.table.core.windows.net`,\n * credential,\n * );\n * ```\n */\n constructor(url: string, credential: TokenCredential, options?: TableServiceClientOptions);\n /**\n * Creates a new instance of the TableServiceClient class.\n *\n * @param url - The URL of the service account that is the target of the desired operation., such as\n * \"https://myaccount.table.core.windows.net\". You can append a SAS,\n * such as \"https://myaccount.table.core.windows.net?sasString\".\n * @param options - Options to configure the HTTP pipeline.\n * Example appending a SAS token:\n *\n * ```ts snippet:ReadmeSampleCreateClient_SASTokenURL\n * import { TableServiceClient } from \"@azure/data-tables\";\n *\n * const account = \"<account name>\";\n * const sasToken = \"<SAS token>\";\n * const tableName = \"<tableName>\";\n *\n * const serviceClientWithSASURL = new TableServiceClient(\n * `https://${account}.table.core.windows.net?${sasToken}`,\n * );\n * ```\n */\n constructor(url: string, options?: TableServiceClientOptions);\n constructor(\n url: string,\n credentialOrOptions?:\n | NamedKeyCredential\n | SASCredential\n | TokenCredential\n | TableServiceClientOptions,\n options?: TableServiceClientOptions,\n ) {\n this.url = url;\n const isCosmos = isCosmosEndpoint(this.url);\n const credential = isCredential(credentialOrOptions) ? credentialOrOptions : undefined;\n const clientOptions =\n (!isCredential(credentialOrOptions) ? credentialOrOptions : options) || {};\n\n const internalPipelineOptions: ServiceClientOptions & InternalClientPipelineOptions = {\n ...clientOptions,\n endpoint: clientOptions.endpoint || this.url,\n loggingOptions: {\n logger: logger.info,\n additionalAllowedHeaderNames: [...TablesLoggingAllowedHeaderNames],\n },\n deserializationOptions: {\n parseXML,\n },\n serializationOptions: {\n stringifyXML,\n },\n };\n const client = new GeneratedClient(this.url, internalPipelineOptions);\n client.pipeline.addPolicy(tablesSecondaryEndpointPolicy);\n\n if (isNamedKeyCredential(credential)) {\n client.pipeline.addPolicy(tablesNamedKeyCredentialPolicy(credential));\n } else if (isSASCredential(credential)) {\n client.pipeline.addPolicy(tablesSASTokenPolicy(credential));\n }\n\n if (isTokenCredential(credential)) {\n const scope = isCosmos ? COSMOS_SCOPE : STORAGE_SCOPE;\n setTokenChallengeAuthenticationPolicy(client.pipeline, credential, scope);\n }\n\n if (options?.version) {\n client.pipeline.addPolicy(apiVersionPolicy(options.version));\n }\n\n this.pipeline = client.pipeline;\n this.table = client.table;\n this.service = client.service;\n }\n\n /**\n * Retrieves statistics related to replication for the Table service. It is only available on the\n * secondary location endpoint when read-access geo-redundant replication is enabled for the account.\n * @param options - The options parameters.\n */\n public async getStatistics(options: OperationOptions = {}): Promise<GetStatisticsResponse> {\n return tracingClient.withSpan(\"TableServiceClient.getStatistics\", options, (updatedOptions) =>\n this.service.getStatistics(injectSecondaryEndpointHeader(updatedOptions)),\n );\n }\n\n /**\n * Gets the properties of an account's Table service, including properties for Analytics and CORS\n * (Cross-Origin Resource Sharing) rules.\n * @param options - The options parameters.\n */\n public getProperties(options: OperationOptions = {}): Promise<GetPropertiesResponse> {\n return tracingClient.withSpan(\"TableServiceClient.getProperties\", options, (updatedOptions) =>\n this.service.getProperties(updatedOptions),\n );\n }\n\n /**\n * Sets properties for an account's Table service endpoint, including properties for Analytics and CORS\n * (Cross-Origin Resource Sharing) rules.\n * @param properties - The Table Service properties.\n * @param options - The options parameters.\n */\n public setProperties(\n properties: ServiceProperties,\n options: SetPropertiesOptions = {},\n ): Promise<SetPropertiesResponse> {\n return tracingClient.withSpan(\"TableServiceClient.setProperties\", options, (updatedOptions) =>\n this.service.setProperties(properties, updatedOptions),\n );\n }\n\n /**\n * Creates a new table under the given account.\n * @param name - The name of the table.\n * @param options - The options parameters.\n */\n public createTable(name: string, options: OperationOptions = {}): Promise<void> {\n return tracingClient.withSpan(\n \"TableServiceClient.createTable\",\n options,\n async (updatedOptions) => {\n try {\n await this.table.create({ name }, updatedOptions);\n } catch (e: any) {\n handleTableAlreadyExists(e, { ...updatedOptions, logger, tableName: name });\n }\n },\n );\n }\n\n /**\n * Operation permanently deletes the specified table.\n * @param name - The name of the table.\n * @param options - The options parameters.\n */\n public deleteTable(name: string, options: OperationOptions = {}): Promise<void> {\n return tracingClient.withSpan(\n \"TableServiceClient.deleteTable\",\n options,\n async (updatedOptions) => {\n try {\n await this.table.delete(name, updatedOptions);\n } catch (e: any) {\n if (e.statusCode === 404) {\n logger.info(\"TableServiceClient.deleteTable: Table doesn't exist\");\n } else {\n throw e;\n }\n }\n },\n );\n }\n\n /**\n * Queries tables under the given account.\n * @param options - The options parameters.\n */\n public listTables(\n // eslint-disable-next-line @azure/azure-sdk/ts-naming-options\n options?: ListTableItemsOptions,\n ): PagedAsyncIterableIterator<TableItem, TableItemResultPage> {\n const iter = this.listTablesAll(options);\n\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n const pageOptions: InternalListTablesOptions = {\n ...options,\n queryOptions: { ...options?.queryOptions, top: settings?.maxPageSize },\n };\n\n if (settings?.continuationToken) {\n pageOptions.continuationToken = settings.continuationToken;\n }\n\n return this.listTablesPage(pageOptions);\n },\n };\n }\n\n private async *listTablesAll(\n options?: InternalListTablesOptions,\n ): AsyncIterableIterator<TableItem> {\n const firstPage = await this._listTables(options);\n const { continuationToken } = firstPage;\n yield* firstPage;\n if (continuationToken) {\n const optionsWithContinuation: InternalListTablesOptions = {\n ...options,\n continuationToken,\n };\n for await (const page of this.listTablesPage(optionsWithContinuation)) {\n yield* page;\n }\n }\n }\n\n private async *listTablesPage(\n options: InternalListTablesOptions = {},\n ): AsyncIterableIterator<TableItemResultPage> {\n let result = await tracingClient.withSpan(\n \"TableServiceClient.listTablesPage\",\n options,\n (updatedOptions) => this._listTables(updatedOptions),\n );\n\n yield result;\n\n while (result.continuationToken) {\n const optionsWithContinuation: InternalListTablesOptions = {\n ...options,\n continuationToken: result.continuationToken,\n };\n result = await tracingClient.withSpan(\n \"TableServiceClient.listTablesPage\",\n optionsWithContinuation,\n async (updatedOptions, span) => {\n span.setAttribute(\"continuationToken\", updatedOptions.continuationToken);\n return this._listTables(updatedOptions);\n },\n );\n yield result;\n }\n }\n\n private async _listTables(options: InternalListTablesOptions = {}): Promise<TableItemResultPage> {\n const { continuationToken: nextTableName, ...listOptions } = options;\n const { xMsContinuationNextTableName: continuationToken, value = [] } = await this.table.query({\n ...listOptions,\n nextTableName,\n });\n return Object.assign([...value], { continuationToken });\n }\n\n /**\n *\n * Creates an instance of TableServiceClient from connection string.\n *\n * @param connectionString - Account connection string or a SAS connection string of an Azure storage account.\n * [ Note - Account connection string can only be used in NODE.JS runtime. ]\n * Account connection string example -\n * `DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=accountKey;EndpointSuffix=core.windows.net`\n * SAS connection string example -\n * `BlobEndpoint=https://myaccount.table.core.windows.net/;QueueEndpoint=https://myaccount.queue.core.windows.net/;FileEndpoint=https://myaccount.file.core.windows.net/;TableEndpoint=https://myaccount.table.core.windows.net/;SharedAccessSignature=sasString`\n * @param options - Options to configure the HTTP pipeline.\n * @returns A new TableServiceClient from the given connection string.\n */\n public static fromConnectionString(\n connectionString: string,\n // eslint-disable-next-line @azure/azure-sdk/ts-naming-options\n options?: TableServiceClientOptions,\n ): TableServiceClient {\n const {\n url,\n options: clientOptions,\n credential,\n } = getClientParamsFromConnectionString(connectionString, options);\n\n if (credential) {\n return new TableServiceClient(url, credential, clientOptions);\n } else {\n return new TableServiceClient(url, clientOptions);\n }\n }\n}\n\ntype InternalListTablesOptions = ListTableItemsOptions & {\n queryOptions?: TableQueryOptions & { top?: number };\n /**\n * A table query continuation token from a previous call.\n */\n continuationToken?: string;\n};\n"]}
1
+ {"version":3,"file":"TableServiceClient.js","sourceRoot":"","sources":["../../src/TableServiceClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n GetPropertiesResponse,\n GetStatisticsResponse,\n ServiceProperties,\n SetPropertiesOptions,\n SetPropertiesResponse,\n} from \"./generatedModels.js\";\nimport type {\n InternalClientPipelineOptions,\n OperationOptions,\n ServiceClientOptions,\n} from \"@azure/core-client\";\nimport type {\n ListTableItemsOptions,\n TableItem,\n TableQueryOptions,\n TableServiceClientOptions,\n} from \"./models.js\";\nimport type { NamedKeyCredential, SASCredential, TokenCredential } from \"@azure/core-auth\";\nimport { isNamedKeyCredential, isSASCredential, isTokenCredential } from \"@azure/core-auth\";\nimport { COSMOS_SCOPE, STORAGE_SCOPE, TablesLoggingAllowedHeaderNames } from \"./utils/constants.js\";\nimport type { Service, Table } from \"./generated/index.js\";\nimport {\n injectSecondaryEndpointHeader,\n tablesSecondaryEndpointPolicy,\n} from \"./secondaryEndpointPolicy.js\";\nimport { parseXML, stringifyXML } from \"@azure/core-xml\";\n\nimport { GeneratedClient } from \"./generated/generatedClient.js\";\nimport type { PagedAsyncIterableIterator } from \"@azure/core-paging\";\nimport type { Pipeline } from \"@azure/core-rest-pipeline\";\nimport type { TableItemResultPage } from \"./models.js\";\nimport { apiVersionPolicy } from \"./utils/apiVersionPolicy.js\";\nimport { getClientParamsFromConnectionString } from \"./utils/connectionString.js\";\nimport { handleTableAlreadyExists } from \"./utils/errorHelpers.js\";\nimport { isCredential } from \"./utils/isCredential.js\";\nimport { logger } from \"./logger.js\";\nimport { setTokenChallengeAuthenticationPolicy } from \"./utils/challengeAuthenticationUtils.js\";\nimport { tablesNamedKeyCredentialPolicy } from \"./tablesNamedCredentialPolicy.js\";\nimport { tablesSASTokenPolicy } from \"./tablesSASTokenPolicy.js\";\nimport { tracingClient } from \"./utils/tracing.js\";\nimport { isCosmosEndpoint } from \"./utils/isCosmosEndpoint.js\";\n\n/**\n * A TableServiceClient represents a Client to the Azure Tables service allowing you\n * to perform operations on the tables and the entities.\n */\nexport class TableServiceClient {\n /**\n * Table Account URL\n */\n public url: string;\n /**\n * Represents a pipeline for making a HTTP request to a URL.\n * Pipelines can have multiple policies to manage manipulating each request before and after it is made to the server.\n */\n public pipeline: Pipeline;\n private table: Table;\n private service: Service;\n\n /**\n * Creates a new instance of the TableServiceClient class.\n *\n * @param url - The URL of the service account that is the target of the desired operation., such as \"https://myaccount.table.core.windows.net\".\n * @param credential - NamedKeyCredential | SASCredential used to authenticate requests. Only Supported for Node\n * @param options - Options to configure the HTTP pipeline.\n *\n * ### Example using an account name/key:\n *\n * ```ts snippet:ReadmeSampleCreateClient_NamedKeyCredential\n * import { AzureNamedKeyCredential, TableServiceClient } from \"@azure/data-tables\";\n *\n * const account = \"<account>\";\n * const accountKey = \"<accountkey>\";\n *\n * const credential = new AzureNamedKeyCredential(account, accountKey);\n * const serviceClient = new TableServiceClient(\n * `https://${account}.table.core.windows.net`,\n * credential,\n * );\n * ```\n */\n constructor(url: string, credential: NamedKeyCredential, options?: TableServiceClientOptions);\n /**\n * Creates a new instance of the TableServiceClient class.\n *\n * @param url - The URL of the service account that is the target of the desired operation., such as \"https://myaccount.table.core.windows.net\".\n * @param credential - SASCredential used to authenticate requests\n * @param options - Options to configure the HTTP pipeline.\n *\n * ### Example using a SAS Token.\n *\n * ```ts snippet:ReadmeSampleCreateClient_SASToken\n * import { TableServiceClient, AzureSASCredential } from \"@azure/data-tables\";\n *\n * const account = \"<account name>\";\n * const sas = \"<service Shared Access Signature Token>\";\n *\n * const serviceClientWithSAS = new TableServiceClient(\n * `https://${account}.table.core.windows.net`,\n * new AzureSASCredential(sas),\n * );\n * ```\n */\n constructor(url: string, credential: SASCredential, options?: TableServiceClientOptions);\n /**\n * Creates a new instance of the TableServiceClient class.\n *\n * @param url - The URL of the service account that is the target of the desired operation., such as \"https://myaccount.table.core.windows.net\".\n * @param credential - Azure Active Directory credential used to authenticate requests\n * @param options - Options to configure the HTTP pipeline.\n *\n * ### Example using an Azure Active Directory credential:\n *\n * ```ts snippet:ReadmeSampleCreateClient_TokenCredential\n * import { DefaultAzureCredential } from \"@azure/identity\";\n * import { TableServiceClient } from \"@azure/data-tables\";\n *\n * const credential = new DefaultAzureCredential();\n * const account = \"<account name>\";\n *\n * const clientWithAAD = new TableServiceClient(\n * `https://${account}.table.core.windows.net`,\n * credential,\n * );\n * ```\n */\n constructor(url: string, credential: TokenCredential, options?: TableServiceClientOptions);\n /**\n * Creates a new instance of the TableServiceClient class.\n *\n * @param url - The URL of the service account that is the target of the desired operation., such as\n * \"https://myaccount.table.core.windows.net\". You can append a SAS,\n * such as \"https://myaccount.table.core.windows.net?sasString\".\n * @param options - Options to configure the HTTP pipeline.\n * Example appending a SAS token:\n *\n * ```ts snippet:ReadmeSampleCreateClient_SASTokenURL\n * import { TableServiceClient } from \"@azure/data-tables\";\n *\n * const account = \"<account name>\";\n * const sasToken = \"<SAS token>\";\n * const tableName = \"<tableName>\";\n *\n * const serviceClientWithSASURL = new TableServiceClient(\n * `https://${account}.table.core.windows.net?${sasToken}`,\n * );\n * ```\n */\n constructor(url: string, options?: TableServiceClientOptions);\n constructor(\n url: string,\n credentialOrOptions?:\n | NamedKeyCredential\n | SASCredential\n | TokenCredential\n | TableServiceClientOptions,\n options?: TableServiceClientOptions,\n ) {\n this.url = url;\n const isCosmos = isCosmosEndpoint(this.url);\n const credential = isCredential(credentialOrOptions) ? credentialOrOptions : undefined;\n const clientOptions =\n (!isCredential(credentialOrOptions) ? credentialOrOptions : options) || {};\n\n const internalPipelineOptions: ServiceClientOptions & InternalClientPipelineOptions = {\n ...clientOptions,\n endpoint: clientOptions.endpoint || this.url,\n loggingOptions: {\n logger: logger.info,\n additionalAllowedHeaderNames: [...TablesLoggingAllowedHeaderNames],\n },\n deserializationOptions: {\n parseXML,\n },\n serializationOptions: {\n stringifyXML,\n },\n };\n const client = new GeneratedClient(this.url, internalPipelineOptions);\n client.pipeline.addPolicy(tablesSecondaryEndpointPolicy);\n\n if (isNamedKeyCredential(credential)) {\n client.pipeline.addPolicy(tablesNamedKeyCredentialPolicy(credential));\n } else if (isSASCredential(credential)) {\n client.pipeline.addPolicy(tablesSASTokenPolicy(credential));\n }\n\n if (isTokenCredential(credential)) {\n const scope = isCosmos ? COSMOS_SCOPE : STORAGE_SCOPE;\n setTokenChallengeAuthenticationPolicy(client.pipeline, credential, scope);\n }\n\n if (options?.version) {\n client.pipeline.addPolicy(apiVersionPolicy(options.version));\n }\n\n this.pipeline = client.pipeline;\n this.table = client.table;\n this.service = client.service;\n }\n\n /**\n * Retrieves statistics related to replication for the Table service. It is only available on the\n * secondary location endpoint when read-access geo-redundant replication is enabled for the account.\n * @param options - The options parameters.\n */\n public async getStatistics(options: OperationOptions = {}): Promise<GetStatisticsResponse> {\n return tracingClient.withSpan(\"TableServiceClient.getStatistics\", options, (updatedOptions) =>\n this.service.getStatistics(injectSecondaryEndpointHeader(updatedOptions)),\n );\n }\n\n /**\n * Gets the properties of an account's Table service, including properties for Analytics and CORS\n * (Cross-Origin Resource Sharing) rules.\n * @param options - The options parameters.\n */\n public getProperties(options: OperationOptions = {}): Promise<GetPropertiesResponse> {\n return tracingClient.withSpan(\"TableServiceClient.getProperties\", options, (updatedOptions) =>\n this.service.getProperties(updatedOptions),\n );\n }\n\n /**\n * Sets properties for an account's Table service endpoint, including properties for Analytics and CORS\n * (Cross-Origin Resource Sharing) rules.\n * @param properties - The Table Service properties.\n * @param options - The options parameters.\n */\n public setProperties(\n properties: ServiceProperties,\n options: SetPropertiesOptions = {},\n ): Promise<SetPropertiesResponse> {\n return tracingClient.withSpan(\"TableServiceClient.setProperties\", options, (updatedOptions) =>\n this.service.setProperties(properties, updatedOptions),\n );\n }\n\n /**\n * Creates a new table under the given account.\n * @param name - The name of the table.\n * @param options - The options parameters.\n */\n public createTable(name: string, options: OperationOptions = {}): Promise<void> {\n return tracingClient.withSpan(\n \"TableServiceClient.createTable\",\n options,\n async (updatedOptions) => {\n try {\n await this.table.create({ name }, updatedOptions);\n } catch (e: any) {\n handleTableAlreadyExists(e, { ...updatedOptions, logger, tableName: name });\n }\n },\n );\n }\n\n /**\n * Operation permanently deletes the specified table.\n * @param name - The name of the table.\n * @param options - The options parameters.\n */\n public deleteTable(name: string, options: OperationOptions = {}): Promise<void> {\n return tracingClient.withSpan(\n \"TableServiceClient.deleteTable\",\n options,\n async (updatedOptions) => {\n try {\n await this.table.delete(name, updatedOptions);\n } catch (e: any) {\n if (e.statusCode === 404) {\n logger.info(\"TableServiceClient.deleteTable: Table doesn't exist\");\n } else {\n throw e;\n }\n }\n },\n );\n }\n\n /**\n * Queries tables under the given account.\n * @param options - The options parameters.\n */\n public listTables(\n // eslint-disable-next-line @azure/azure-sdk/ts-naming-options\n options?: ListTableItemsOptions,\n ): PagedAsyncIterableIterator<TableItem, TableItemResultPage> {\n const iter = this.listTablesAll(options);\n\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n const pageOptions: InternalListTablesOptions = {\n ...options,\n queryOptions: { ...options?.queryOptions, top: settings?.maxPageSize },\n };\n\n if (settings?.continuationToken) {\n pageOptions.continuationToken = settings.continuationToken;\n }\n\n return this.listTablesPage(pageOptions);\n },\n };\n }\n\n private async *listTablesAll(\n options?: InternalListTablesOptions,\n ): AsyncIterableIterator<TableItem> {\n const firstPage = await this._listTables(options);\n const { continuationToken } = firstPage;\n yield* firstPage;\n if (continuationToken) {\n const optionsWithContinuation: InternalListTablesOptions = {\n ...options,\n continuationToken,\n };\n for await (const page of this.listTablesPage(optionsWithContinuation)) {\n yield* page;\n }\n }\n }\n\n private async *listTablesPage(\n options: InternalListTablesOptions = {},\n ): AsyncIterableIterator<TableItemResultPage> {\n let result = await tracingClient.withSpan(\n \"TableServiceClient.listTablesPage\",\n options,\n (updatedOptions) => this._listTables(updatedOptions),\n );\n\n yield result;\n\n while (result.continuationToken) {\n const optionsWithContinuation: InternalListTablesOptions = {\n ...options,\n continuationToken: result.continuationToken,\n };\n result = await tracingClient.withSpan(\n \"TableServiceClient.listTablesPage\",\n optionsWithContinuation,\n async (updatedOptions, span) => {\n span.setAttribute(\"continuationToken\", updatedOptions.continuationToken);\n return this._listTables(updatedOptions);\n },\n );\n yield result;\n }\n }\n\n private async _listTables(options: InternalListTablesOptions = {}): Promise<TableItemResultPage> {\n const { continuationToken: nextTableName, ...listOptions } = options;\n const { xMsContinuationNextTableName: continuationToken, value = [] } = await this.table.query({\n ...listOptions,\n nextTableName,\n });\n return Object.assign([...value], { continuationToken });\n }\n\n /**\n *\n * Creates an instance of TableServiceClient from connection string.\n *\n * @param connectionString - Account connection string or a SAS connection string of an Azure storage account.\n * [ Note - Account connection string can only be used in NODE.JS runtime. ]\n * Account connection string example -\n * `DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=accountKey;EndpointSuffix=core.windows.net`\n * SAS connection string example -\n * `BlobEndpoint=https://myaccount.table.core.windows.net/;QueueEndpoint=https://myaccount.queue.core.windows.net/;FileEndpoint=https://myaccount.file.core.windows.net/;TableEndpoint=https://myaccount.table.core.windows.net/;SharedAccessSignature=sasString`\n * @param options - Options to configure the HTTP pipeline.\n * @returns A new TableServiceClient from the given connection string.\n */\n public static fromConnectionString(\n connectionString: string,\n // eslint-disable-next-line @azure/azure-sdk/ts-naming-options\n options?: TableServiceClientOptions,\n ): TableServiceClient {\n const {\n url,\n options: clientOptions,\n credential,\n } = getClientParamsFromConnectionString(connectionString, options);\n\n if (credential) {\n return new TableServiceClient(url, credential, clientOptions);\n } else {\n return new TableServiceClient(url, clientOptions);\n }\n }\n}\n\ntype InternalListTablesOptions = ListTableItemsOptions & {\n queryOptions?: TableQueryOptions & { top?: number };\n /**\n * A table query continuation token from a previous call.\n */\n continuationToken?: string;\n};\n"]}
@@ -17,8 +17,12 @@ const tracing_js_1 = require("./utils/tracing.js");
17
17
  * Helper to build a list of transaction actions
18
18
  */
19
19
  class TableTransaction {
20
+ /**
21
+ * List of actions to perform in a transaction
22
+ */
23
+ actions;
20
24
  constructor(actions) {
21
- this.actions = actions !== null && actions !== void 0 ? actions : [];
25
+ this.actions = actions ?? [];
22
26
  }
23
27
  /**
24
28
  * Adds a create action to the transaction
@@ -45,7 +49,7 @@ class TableTransaction {
45
49
  // UpdateMode is a string union
46
50
  const realUpdateMode = typeof updateModeOrOptions === "string" ? updateModeOrOptions : undefined;
47
51
  const realUpdateOptions = typeof updateModeOrOptions === "object" ? updateModeOrOptions : updateOptions;
48
- this.actions.push(["update", entity, realUpdateMode !== null && realUpdateMode !== void 0 ? realUpdateMode : "Merge", realUpdateOptions !== null && realUpdateOptions !== void 0 ? realUpdateOptions : {}]);
52
+ this.actions.push(["update", entity, realUpdateMode ?? "Merge", realUpdateOptions ?? {}]);
49
53
  }
50
54
  /**
51
55
  * Adds an upsert action to the transaction, which inserts if the entity doesn't exist or updates the existing one
@@ -61,6 +65,17 @@ exports.TableTransaction = TableTransaction;
61
65
  * TableTransaction collects sub-operations that can be submitted together via submitTransaction
62
66
  */
63
67
  class InternalTableTransaction {
68
+ /**
69
+ * Table Account URL
70
+ */
71
+ url;
72
+ /**
73
+ * State that holds the information about a particular transation
74
+ */
75
+ state;
76
+ interceptClient;
77
+ allowInsecureConnection;
78
+ client;
64
79
  /**
65
80
  * @param url - Tables account url
66
81
  * @param partitionKey - partition key
@@ -160,7 +175,14 @@ class InternalTableTransaction {
160
175
  const body = (0, transactionHelpers_js_1.getTransactionHttpRequestBody)(this.state.bodyParts, this.state.transactionId, this.state.changesetId);
161
176
  const headers = (0, transactionHeaders_js_1.getTransactionHeaders)(this.state.transactionId);
162
177
  return tracing_js_1.tracingClient.withSpan("TableTransaction.submitTransaction", options, async (updatedOptions) => {
163
- const request = (0, core_rest_pipeline_1.createPipelineRequest)(Object.assign(Object.assign({}, updatedOptions), { url: this.url, method: "POST", body, headers: (0, core_rest_pipeline_1.createHttpHeaders)(headers), allowInsecureConnection: this.allowInsecureConnection }));
178
+ const request = (0, core_rest_pipeline_1.createPipelineRequest)({
179
+ ...updatedOptions,
180
+ url: this.url,
181
+ method: "POST",
182
+ body,
183
+ headers: (0, core_rest_pipeline_1.createHttpHeaders)(headers),
184
+ allowInsecureConnection: this.allowInsecureConnection,
185
+ });
164
186
  const rawTransactionResponse = await this.client.sendRequest(request);
165
187
  return parseTransactionResponse(rawTransactionResponse);
166
188
  });
@@ -189,7 +211,7 @@ function parseTransactionResponse(transactionResponse) {
189
211
  const subResponses = splitBody.slice(1, splitBody.length - 1);
190
212
  const responses = subResponses.map((subResponse) => {
191
213
  const statusMatch = subResponse.match(/HTTP\/1.1 ([0-9]*)/);
192
- if ((statusMatch === null || statusMatch === void 0 ? void 0 : statusMatch.length) !== 2) {
214
+ if (statusMatch?.length !== 2) {
193
215
  throw new Error(`Couldn't extract status from sub-response:\n ${subResponse}`);
194
216
  }
195
217
  const subResponseStatus = Number.parseInt(statusMatch[1]);
@@ -197,12 +219,16 @@ function parseTransactionResponse(transactionResponse) {
197
219
  throw new Error(`Expected sub-response status to be an integer ${subResponseStatus}`);
198
220
  }
199
221
  const bodyMatch = subResponse.match(/\{(.*)\}/);
200
- if ((bodyMatch === null || bodyMatch === void 0 ? void 0 : bodyMatch.length) === 2) {
222
+ if (bodyMatch?.length === 2) {
201
223
  handleBodyError(bodyMatch[0], subResponseStatus, transactionResponse.request, transactionResponse);
202
224
  }
203
225
  const etagMatch = subResponse.match(/ETag: (.*)/);
204
226
  const rowKeyMatch = subResponse.match(/RowKey='(.*)'/);
205
- return Object.assign(Object.assign({ status: subResponseStatus }, ((rowKeyMatch === null || rowKeyMatch === void 0 ? void 0 : rowKeyMatch.length) === 2 && { rowKey: rowKeyMatch[1] })), ((etagMatch === null || etagMatch === void 0 ? void 0 : etagMatch.length) === 2 && { etag: etagMatch[1] }));
227
+ return {
228
+ status: subResponseStatus,
229
+ ...(rowKeyMatch?.length === 2 && { rowKey: rowKeyMatch[1] }),
230
+ ...(etagMatch?.length === 2 && { etag: etagMatch[1] }),
231
+ };
206
232
  });
207
233
  return {
208
234
  status,
@@ -211,12 +237,11 @@ function parseTransactionResponse(transactionResponse) {
211
237
  };
212
238
  }
213
239
  function handleBodyError(bodyAsText, statusCode, request, response) {
214
- var _a, _b;
215
240
  let parsedError;
216
241
  try {
217
242
  parsedError = JSON.parse(bodyAsText);
218
243
  }
219
- catch (_c) {
244
+ catch {
220
245
  parsedError = {};
221
246
  }
222
247
  let message = "Transaction Failed";
@@ -224,7 +249,7 @@ function handleBodyError(bodyAsText, statusCode, request, response) {
224
249
  // Only transaction sub-responses return body
225
250
  if (parsedError && parsedError["odata.error"]) {
226
251
  const error = parsedError["odata.error"];
227
- message = (_b = (_a = error.message) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : message;
252
+ message = error.message?.value ?? message;
228
253
  code = error.code;
229
254
  }
230
255
  throw new core_rest_pipeline_1.RestError(message, {
@@ -1 +1 @@
1
- {"version":3,"file":"TableTransaction.js","sourceRoot":"","sources":["../../src/TableTransaction.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n DeleteTableEntityOptions,\n TableEntity,\n TableTransactionEntityResponse,\n TableTransactionResponse,\n TransactionAction,\n UpdateMode,\n UpdateTableEntityOptions,\n} from \"./models.js\";\nimport type { NamedKeyCredential, SASCredential, TokenCredential } from \"@azure/core-auth\";\nimport type { OperationOptions, ServiceClient } from \"@azure/core-client\";\nimport { serializationPolicy, serializationPolicyName } from \"@azure/core-client\";\nimport type { Pipeline, PipelineRequest, PipelineResponse } from \"@azure/core-rest-pipeline\";\nimport { RestError, createHttpHeaders, createPipelineRequest } from \"@azure/core-rest-pipeline\";\nimport {\n getInitialTransactionBody,\n getTransactionHttpRequestBody,\n} from \"./utils/transactionHelpers.js\";\nimport {\n transactionHeaderFilterPolicy,\n transactionHeaderFilterPolicyName,\n transactionRequestAssemblePolicy,\n transactionRequestAssemblePolicyName,\n} from \"./TablePolicies.js\";\n\nimport type { TableClientLike } from \"./utils/internalModels.js\";\nimport type { TableServiceErrorOdataError } from \"./generated/index.js\";\nimport { cosmosPatchPolicy } from \"./cosmosPathPolicy.js\";\nimport { getTransactionHeaders } from \"./utils/transactionHeaders.js\";\nimport { isCosmosEndpoint } from \"./utils/isCosmosEndpoint.js\";\nimport { tracingClient } from \"./utils/tracing.js\";\n\n/**\n * Helper to build a list of transaction actions\n */\nexport class TableTransaction {\n /**\n * List of actions to perform in a transaction\n */\n public actions: TransactionAction[];\n\n constructor(actions?: TransactionAction[]) {\n this.actions = actions ?? [];\n }\n\n /**\n * Adds a create action to the transaction\n * @param entity - entity to create\n */\n createEntity<T extends object = Record<string, unknown>>(entity: TableEntity<T>): void {\n this.actions.push([\"create\", entity]);\n }\n\n /**\n * Adds a delete action to the transaction\n * @param partitionKey - partition key of the entity to delete\n * @param rowKey - rowKey of the entity to delete\n */\n deleteEntity(partitionKey: string, rowKey: string): void {\n this.actions.push([\"delete\", { partitionKey, rowKey }]);\n }\n\n /**\n * Adds an update action to the transaction\n * @param entity - entity to update\n * @param updateOptions - options for the update operation\n */\n updateEntity<T extends object = Record<string, unknown>>(\n entity: TableEntity<T>,\n updateOptions?: UpdateTableEntityOptions,\n ): void;\n\n /**\n * Adds an update action to the transaction\n * @param entity - entity to update\n * @param updateMode - update mode\n * @param updateOptions - options for the update operation\n */\n updateEntity<T extends object = Record<string, unknown>>(\n entity: TableEntity<T>,\n updateMode: UpdateMode,\n updateOptions?: UpdateTableEntityOptions,\n ): void;\n\n /**\n * Adds an update action to the transaction\n * @param entity - entity to update\n * @param updateModeOrOptions - update mode or update options\n * @param updateOptions - options for the update operation\n */\n updateEntity<T extends object = Record<string, unknown>>(\n entity: TableEntity<T>,\n updateModeOrOptions: UpdateMode | UpdateTableEntityOptions | undefined,\n updateOptions?: UpdateTableEntityOptions,\n ): void {\n // UpdateMode is a string union\n const realUpdateMode: UpdateMode | undefined =\n typeof updateModeOrOptions === \"string\" ? updateModeOrOptions : undefined;\n const realUpdateOptions: UpdateTableEntityOptions | undefined =\n typeof updateModeOrOptions === \"object\" ? updateModeOrOptions : updateOptions;\n this.actions.push([\"update\", entity, realUpdateMode ?? \"Merge\", realUpdateOptions ?? {}]);\n }\n\n /**\n * Adds an upsert action to the transaction, which inserts if the entity doesn't exist or updates the existing one\n * @param entity - entity to upsert\n * @param updateMode - update mode\n */\n upsertEntity<T extends object = Record<string, unknown>>(\n entity: TableEntity<T>,\n updateMode: UpdateMode = \"Merge\",\n ): void {\n this.actions.push([\"upsert\", entity, updateMode]);\n }\n}\n\n/**\n * TableTransaction collects sub-operations that can be submitted together via submitTransaction\n */\nexport class InternalTableTransaction {\n /**\n * Table Account URL\n */\n public url: string;\n /**\n * State that holds the information about a particular transation\n */\n private state: {\n transactionId: string;\n changesetId: string;\n pendingOperations: Promise<any>[];\n bodyParts: string[];\n partitionKey: string;\n };\n private interceptClient: TableClientLike;\n private allowInsecureConnection: boolean;\n private client: ServiceClient;\n\n /**\n * @param url - Tables account url\n * @param partitionKey - partition key\n * @param credential - credential to authenticate the transaction request\n */\n constructor(\n url: string,\n partitionKey: string,\n transactionId: string,\n changesetId: string,\n // eslint-disable-next-line @azure/azure-sdk/ts-use-interface-parameters\n client: ServiceClient,\n interceptClient: TableClientLike,\n credential?: NamedKeyCredential | SASCredential | TokenCredential,\n allowInsecureConnection: boolean = false,\n ) {\n this.client = client;\n this.url = url;\n this.interceptClient = interceptClient;\n this.allowInsecureConnection = allowInsecureConnection;\n\n // Initialize the state\n this.state = this.initializeState(transactionId, changesetId, partitionKey);\n\n // Depending on the auth method used we need to build the url\n if (!credential) {\n // When the SAS token is provided as part of the URL we need to move it after $batch\n const urlParts = url.split(\"?\");\n this.url = urlParts[0];\n const sas = urlParts.length > 1 ? `?${urlParts[1]}` : \"\";\n this.url = `${this.getUrlWithSlash()}$batch${sas}`;\n } else {\n // When using a SharedKey credential no SAS token is needed\n this.url = `${this.getUrlWithSlash()}$batch`;\n }\n }\n\n private initializeState(\n transactionId: string,\n changesetId: string,\n partitionKey: string,\n ): {\n transactionId: string;\n changesetId: string;\n partitionKey: string;\n pendingOperations: Promise<any>[];\n bodyParts: string[];\n } {\n const pendingOperations: Promise<any>[] = [];\n const bodyParts = getInitialTransactionBody(transactionId, changesetId);\n const isCosmos = isCosmosEndpoint(this.url);\n prepateTransactionPipeline(this.interceptClient.pipeline, bodyParts, changesetId, isCosmos);\n\n return {\n transactionId,\n changesetId,\n partitionKey,\n pendingOperations,\n bodyParts,\n };\n }\n\n /**\n * Adds a createEntity operation to the transaction\n * @param entity - Entity to create\n */\n public createEntity<T extends object>(entity: TableEntity<T>): void {\n this.checkPartitionKey(entity.partitionKey);\n this.state.pendingOperations.push(this.interceptClient.createEntity(entity));\n }\n\n /**\n * Adds a createEntity operation to the transaction per each entity in the entities array\n * @param entities - Array of entities to create\n */\n public createEntities<T extends object>(entities: TableEntity<T>[]): void {\n for (const entity of entities) {\n this.checkPartitionKey(entity.partitionKey);\n this.state.pendingOperations.push(this.interceptClient.createEntity(entity));\n }\n }\n\n /**\n * Adds a deleteEntity operation to the transaction\n * @param partitionKey - Partition key of the entity to delete\n * @param rowKey - Row key of the entity to delete\n * @param options - Options for the delete operation\n */\n public deleteEntity(\n partitionKey: string,\n rowKey: string,\n options?: DeleteTableEntityOptions,\n ): void {\n this.checkPartitionKey(partitionKey);\n this.state.pendingOperations.push(\n this.interceptClient.deleteEntity(partitionKey, rowKey, options),\n );\n }\n\n /**\n * Adds an updateEntity operation to the transaction\n * @param entity - Entity to update\n * @param mode - Update mode (Merge or Replace)\n * @param options - Options for the update operation\n */\n public updateEntity<T extends object>(\n entity: TableEntity<T>,\n mode: UpdateMode,\n options?: UpdateTableEntityOptions,\n ): void {\n this.checkPartitionKey(entity.partitionKey);\n this.state.pendingOperations.push(this.interceptClient.updateEntity(entity, mode, options));\n }\n\n /**\n * Adds an upsertEntity operation to the transaction\n * @param entity - The properties for the table entity.\n * @param mode - The different modes for updating the entity:\n * - Merge: Updates an entity by updating the entity's properties without replacing the existing entity.\n * - Replace: Updates an existing entity by replacing the entire entity.\n * @param options - The options parameters.\n */\n public upsertEntity<T extends object>(\n entity: TableEntity<T>,\n mode: UpdateMode,\n options?: OperationOptions,\n ): void {\n this.checkPartitionKey(entity.partitionKey);\n this.state.pendingOperations.push(this.interceptClient.upsertEntity(entity, mode, options));\n }\n\n /**\n * Submits the operations in the transaction\n * @param options - Options for the request.\n */\n public async submitTransaction(\n options: OperationOptions = {},\n ): Promise<TableTransactionResponse> {\n await Promise.all(this.state.pendingOperations);\n const body = getTransactionHttpRequestBody(\n this.state.bodyParts,\n this.state.transactionId,\n this.state.changesetId,\n );\n\n const headers = getTransactionHeaders(this.state.transactionId);\n\n return tracingClient.withSpan(\n \"TableTransaction.submitTransaction\",\n options,\n async (updatedOptions) => {\n const request = createPipelineRequest({\n ...updatedOptions,\n url: this.url,\n method: \"POST\",\n body,\n headers: createHttpHeaders(headers),\n allowInsecureConnection: this.allowInsecureConnection,\n });\n\n const rawTransactionResponse = await this.client.sendRequest(request);\n return parseTransactionResponse(rawTransactionResponse);\n },\n );\n }\n\n private checkPartitionKey(partitionKey: string): void {\n if (this.state.partitionKey !== partitionKey) {\n throw new Error(\"All operations in a transaction must target the same partitionKey\");\n }\n }\n\n private getUrlWithSlash(): string {\n return this.url.endsWith(\"/\") ? this.url : `${this.url}/`;\n }\n}\n\nexport function parseTransactionResponse(\n transactionResponse: PipelineResponse,\n): TableTransactionResponse {\n const subResponsePrefix = `--changesetresponse_`;\n const status = transactionResponse.status;\n const rawBody = transactionResponse.bodyAsText || \"\";\n const splitBody = rawBody.split(subResponsePrefix);\n const isSuccessByStatus = 200 <= status && status < 300;\n\n if (!isSuccessByStatus) {\n handleBodyError(rawBody, status, transactionResponse.request, transactionResponse);\n }\n\n // Dropping the first and last elements as they are the boundaries\n // we just care about sub request content\n const subResponses = splitBody.slice(1, splitBody.length - 1);\n\n const responses: TableTransactionEntityResponse[] = subResponses.map((subResponse) => {\n const statusMatch = subResponse.match(/HTTP\\/1.1 ([0-9]*)/);\n if (statusMatch?.length !== 2) {\n throw new Error(`Couldn't extract status from sub-response:\\n ${subResponse}`);\n }\n const subResponseStatus = Number.parseInt(statusMatch[1]);\n if (!Number.isInteger(subResponseStatus)) {\n throw new Error(`Expected sub-response status to be an integer ${subResponseStatus}`);\n }\n\n const bodyMatch = subResponse.match(/\\{(.*)\\}/);\n if (bodyMatch?.length === 2) {\n handleBodyError(\n bodyMatch[0],\n subResponseStatus,\n transactionResponse.request,\n transactionResponse,\n );\n }\n\n const etagMatch = subResponse.match(/ETag: (.*)/);\n const rowKeyMatch = subResponse.match(/RowKey='(.*)'/);\n\n return {\n status: subResponseStatus,\n ...(rowKeyMatch?.length === 2 && { rowKey: rowKeyMatch[1] }),\n ...(etagMatch?.length === 2 && { etag: etagMatch[1] }),\n };\n });\n\n return {\n status,\n subResponses: responses,\n getResponseForEntity: (rowKey: string) => responses.find((r) => r.rowKey === rowKey),\n };\n}\n\nfunction handleBodyError(\n bodyAsText: string,\n statusCode: number,\n request: PipelineRequest,\n response: PipelineResponse,\n): void {\n let parsedError;\n\n try {\n parsedError = JSON.parse(bodyAsText);\n } catch {\n parsedError = {};\n }\n\n let message = \"Transaction Failed\";\n let code: string | undefined;\n // Only transaction sub-responses return body\n if (parsedError && parsedError[\"odata.error\"]) {\n const error: TableServiceErrorOdataError = parsedError[\"odata.error\"];\n message = error.message?.value ?? message;\n code = error.code;\n }\n\n throw new RestError(message, {\n code,\n statusCode,\n request,\n response,\n });\n}\n\n/**\n * Prepares the transaction pipeline to intercept operations\n * @param pipeline - Client pipeline\n */\nexport function prepateTransactionPipeline(\n pipeline: Pipeline,\n bodyParts: string[],\n changesetId: string,\n isCosmos: boolean,\n): void {\n // Fist, we need to clear all the existing policies to make sure we start\n // with a fresh state.\n const policies = pipeline.getOrderedPolicies();\n for (const policy of policies) {\n pipeline.removePolicy({\n name: policy.name,\n });\n }\n\n // With the clear state we now initialize the pipelines required for intercepting the requests.\n // Use transaction assemble policy to assemble request and intercept request from going to wire\n\n pipeline.addPolicy(serializationPolicy(), { phase: \"Serialize\" });\n pipeline.addPolicy(transactionHeaderFilterPolicy());\n pipeline.addPolicy(transactionRequestAssemblePolicy(bodyParts, changesetId));\n if (isCosmos) {\n pipeline.addPolicy(cosmosPatchPolicy(), {\n afterPolicies: [transactionHeaderFilterPolicyName],\n beforePolicies: [serializationPolicyName, transactionRequestAssemblePolicyName],\n });\n }\n}\n"]}
1
+ {"version":3,"file":"TableTransaction.js","sourceRoot":"","sources":["../../src/TableTransaction.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AA6TlC,4DAoDC;AAqCD,gEA2BC;AApaD,oDAAkF;AAElF,kEAAgG;AAChG,yEAGuC;AACvC,yDAK4B;AAI5B,+DAA0D;AAC1D,yEAAsE;AACtE,qEAA+D;AAC/D,mDAAmD;AAEnD;;GAEG;AACH,MAAa,gBAAgB;IAC3B;;OAEG;IACI,OAAO,CAAsB;IAEpC,YAAY,OAA6B;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,YAAY,CAA6C,MAAsB;QAC7E,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,YAAoB,EAAE,MAAc;QAC/C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IAwBD;;;;;OAKG;IACH,YAAY,CACV,MAAsB,EACtB,mBAAsE,EACtE,aAAwC;QAExC,+BAA+B;QAC/B,MAAM,cAAc,GAClB,OAAO,mBAAmB,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5E,MAAM,iBAAiB,GACrB,OAAO,mBAAmB,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC;QAChF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,IAAI,OAAO,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED;;;;OAIG;IACH,YAAY,CACV,MAAsB,EACtB,aAAyB,OAAO;QAEhC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IACpD,CAAC;CACF;AA/ED,4CA+EC;AAED;;GAEG;AACH,MAAa,wBAAwB;IACnC;;OAEG;IACI,GAAG,CAAS;IACnB;;OAEG;IACK,KAAK,CAMX;IACM,eAAe,CAAkB;IACjC,uBAAuB,CAAU;IACjC,MAAM,CAAgB;IAE9B;;;;OAIG;IACH,YACE,GAAW,EACX,YAAoB,EACpB,aAAqB,EACrB,WAAmB;IACnB,wEAAwE;IACxE,MAAqB,EACrB,eAAgC,EAChC,UAAiE,EACjE,0BAAmC,KAAK;QAExC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;QAEvD,uBAAuB;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QAE5E,6DAA6D;QAC7D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,oFAAoF;YACpF,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,SAAS,GAAG,EAAE,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,2DAA2D;YAC3D,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC;QAC/C,CAAC;IACH,CAAC;IAEO,eAAe,CACrB,aAAqB,EACrB,WAAmB,EACnB,YAAoB;QAQpB,MAAM,iBAAiB,GAAmB,EAAE,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAA,iDAAyB,EAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,IAAA,sCAAgB,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5C,0BAA0B,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QAE5F,OAAO;YACL,aAAa;YACb,WAAW;YACX,YAAY;YACZ,iBAAiB;YACjB,SAAS;SACV,CAAC;IACJ,CAAC;IAED;;;OAGG;IACI,YAAY,CAAmB,MAAsB;QAC1D,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED;;;OAGG;IACI,cAAc,CAAmB,QAA0B;QAChE,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,YAAY,CACjB,YAAoB,EACpB,MAAc,EACd,OAAkC;QAElC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAC/B,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CACjE,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACI,YAAY,CACjB,MAAsB,EACtB,IAAgB,EAChB,OAAkC;QAElC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED;;;;;;;OAOG;IACI,YAAY,CACjB,MAAsB,EACtB,IAAgB,EAChB,OAA0B;QAE1B,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,iBAAiB,CAC5B,UAA4B,EAAE;QAE9B,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,IAAA,qDAA6B,EACxC,IAAI,CAAC,KAAK,CAAC,SAAS,EACpB,IAAI,CAAC,KAAK,CAAC,aAAa,EACxB,IAAI,CAAC,KAAK,CAAC,WAAW,CACvB,CAAC;QAEF,MAAM,OAAO,GAAG,IAAA,6CAAqB,EAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAEhE,OAAO,0BAAa,CAAC,QAAQ,CAC3B,oCAAoC,EACpC,OAAO,EACP,KAAK,EAAE,cAAc,EAAE,EAAE;YACvB,MAAM,OAAO,GAAG,IAAA,0CAAqB,EAAC;gBACpC,GAAG,cAAc;gBACjB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,MAAM,EAAE,MAAM;gBACd,IAAI;gBACJ,OAAO,EAAE,IAAA,sCAAiB,EAAC,OAAO,CAAC;gBACnC,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;aACtD,CAAC,CAAC;YAEH,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACtE,OAAO,wBAAwB,CAAC,sBAAsB,CAAC,CAAC;QAC1D,CAAC,CACF,CAAC;IACJ,CAAC;IAEO,iBAAiB,CAAC,YAAoB;QAC5C,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAEO,eAAe;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IAC5D,CAAC;CACF;AAlMD,4DAkMC;AAED,SAAgB,wBAAwB,CACtC,mBAAqC;IAErC,MAAM,iBAAiB,GAAG,sBAAsB,CAAC;IACjD,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC;IAC1C,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,IAAI,EAAE,CAAC;IACrD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACnD,MAAM,iBAAiB,GAAG,GAAG,IAAI,MAAM,IAAI,MAAM,GAAG,GAAG,CAAC;IAExD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IACrF,CAAC;IAED,kEAAkE;IAClE,yCAAyC;IACzC,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE9D,MAAM,SAAS,GAAqC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;QACnF,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC5D,IAAI,WAAW,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,gDAAgD,WAAW,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,iDAAiD,iBAAiB,EAAE,CAAC,CAAC;QACxF,CAAC;QAED,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,SAAS,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,eAAe,CACb,SAAS,CAAC,CAAC,CAAC,EACZ,iBAAiB,EACjB,mBAAmB,CAAC,OAAO,EAC3B,mBAAmB,CACpB,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAEvD,OAAO;YACL,MAAM,EAAE,iBAAiB;YACzB,GAAG,CAAC,WAAW,EAAE,MAAM,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;SACvD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,MAAM;QACN,YAAY,EAAE,SAAS;QACvB,oBAAoB,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;KACrF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,UAAkB,EAClB,UAAkB,EAClB,OAAwB,EACxB,QAA0B;IAE1B,IAAI,WAAW,CAAC;IAEhB,IAAI,CAAC;QACH,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,WAAW,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,GAAG,oBAAoB,CAAC;IACnC,IAAI,IAAwB,CAAC;IAC7B,6CAA6C;IAC7C,IAAI,WAAW,IAAI,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAgC,WAAW,CAAC,aAAa,CAAC,CAAC;QACtE,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,OAAO,CAAC;QAC1C,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACpB,CAAC;IAED,MAAM,IAAI,8BAAS,CAAC,OAAO,EAAE;QAC3B,IAAI;QACJ,UAAU;QACV,OAAO;QACP,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAgB,0BAA0B,CACxC,QAAkB,EAClB,SAAmB,EACnB,WAAmB,EACnB,QAAiB;IAEjB,yEAAyE;IACzE,sBAAsB;IACtB,MAAM,QAAQ,GAAG,QAAQ,CAAC,kBAAkB,EAAE,CAAC;IAC/C,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,QAAQ,CAAC,YAAY,CAAC;YACpB,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC,CAAC;IACL,CAAC;IAED,+FAA+F;IAC/F,+FAA+F;IAE/F,QAAQ,CAAC,SAAS,CAAC,IAAA,iCAAmB,GAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IAClE,QAAQ,CAAC,SAAS,CAAC,IAAA,gDAA6B,GAAE,CAAC,CAAC;IACpD,QAAQ,CAAC,SAAS,CAAC,IAAA,mDAAgC,EAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAC7E,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,SAAS,CAAC,IAAA,uCAAiB,GAAE,EAAE;YACtC,aAAa,EAAE,CAAC,oDAAiC,CAAC;YAClD,cAAc,EAAE,CAAC,qCAAuB,EAAE,uDAAoC,CAAC;SAChF,CAAC,CAAC;IACL,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n DeleteTableEntityOptions,\n TableEntity,\n TableTransactionEntityResponse,\n TableTransactionResponse,\n TransactionAction,\n UpdateMode,\n UpdateTableEntityOptions,\n} from \"./models.js\";\nimport type { NamedKeyCredential, SASCredential, TokenCredential } from \"@azure/core-auth\";\nimport type { OperationOptions, ServiceClient } from \"@azure/core-client\";\nimport { serializationPolicy, serializationPolicyName } from \"@azure/core-client\";\nimport type { Pipeline, PipelineRequest, PipelineResponse } from \"@azure/core-rest-pipeline\";\nimport { RestError, createHttpHeaders, createPipelineRequest } from \"@azure/core-rest-pipeline\";\nimport {\n getInitialTransactionBody,\n getTransactionHttpRequestBody,\n} from \"./utils/transactionHelpers.js\";\nimport {\n transactionHeaderFilterPolicy,\n transactionHeaderFilterPolicyName,\n transactionRequestAssemblePolicy,\n transactionRequestAssemblePolicyName,\n} from \"./TablePolicies.js\";\n\nimport type { TableClientLike } from \"./utils/internalModels.js\";\nimport type { TableServiceErrorOdataError } from \"./generated/index.js\";\nimport { cosmosPatchPolicy } from \"./cosmosPathPolicy.js\";\nimport { getTransactionHeaders } from \"./utils/transactionHeaders.js\";\nimport { isCosmosEndpoint } from \"./utils/isCosmosEndpoint.js\";\nimport { tracingClient } from \"./utils/tracing.js\";\n\n/**\n * Helper to build a list of transaction actions\n */\nexport class TableTransaction {\n /**\n * List of actions to perform in a transaction\n */\n public actions: TransactionAction[];\n\n constructor(actions?: TransactionAction[]) {\n this.actions = actions ?? [];\n }\n\n /**\n * Adds a create action to the transaction\n * @param entity - entity to create\n */\n createEntity<T extends object = Record<string, unknown>>(entity: TableEntity<T>): void {\n this.actions.push([\"create\", entity]);\n }\n\n /**\n * Adds a delete action to the transaction\n * @param partitionKey - partition key of the entity to delete\n * @param rowKey - rowKey of the entity to delete\n */\n deleteEntity(partitionKey: string, rowKey: string): void {\n this.actions.push([\"delete\", { partitionKey, rowKey }]);\n }\n\n /**\n * Adds an update action to the transaction\n * @param entity - entity to update\n * @param updateOptions - options for the update operation\n */\n updateEntity<T extends object = Record<string, unknown>>(\n entity: TableEntity<T>,\n updateOptions?: UpdateTableEntityOptions,\n ): void;\n\n /**\n * Adds an update action to the transaction\n * @param entity - entity to update\n * @param updateMode - update mode\n * @param updateOptions - options for the update operation\n */\n updateEntity<T extends object = Record<string, unknown>>(\n entity: TableEntity<T>,\n updateMode: UpdateMode,\n updateOptions?: UpdateTableEntityOptions,\n ): void;\n\n /**\n * Adds an update action to the transaction\n * @param entity - entity to update\n * @param updateModeOrOptions - update mode or update options\n * @param updateOptions - options for the update operation\n */\n updateEntity<T extends object = Record<string, unknown>>(\n entity: TableEntity<T>,\n updateModeOrOptions: UpdateMode | UpdateTableEntityOptions | undefined,\n updateOptions?: UpdateTableEntityOptions,\n ): void {\n // UpdateMode is a string union\n const realUpdateMode: UpdateMode | undefined =\n typeof updateModeOrOptions === \"string\" ? updateModeOrOptions : undefined;\n const realUpdateOptions: UpdateTableEntityOptions | undefined =\n typeof updateModeOrOptions === \"object\" ? updateModeOrOptions : updateOptions;\n this.actions.push([\"update\", entity, realUpdateMode ?? \"Merge\", realUpdateOptions ?? {}]);\n }\n\n /**\n * Adds an upsert action to the transaction, which inserts if the entity doesn't exist or updates the existing one\n * @param entity - entity to upsert\n * @param updateMode - update mode\n */\n upsertEntity<T extends object = Record<string, unknown>>(\n entity: TableEntity<T>,\n updateMode: UpdateMode = \"Merge\",\n ): void {\n this.actions.push([\"upsert\", entity, updateMode]);\n }\n}\n\n/**\n * TableTransaction collects sub-operations that can be submitted together via submitTransaction\n */\nexport class InternalTableTransaction {\n /**\n * Table Account URL\n */\n public url: string;\n /**\n * State that holds the information about a particular transation\n */\n private state: {\n transactionId: string;\n changesetId: string;\n pendingOperations: Promise<any>[];\n bodyParts: string[];\n partitionKey: string;\n };\n private interceptClient: TableClientLike;\n private allowInsecureConnection: boolean;\n private client: ServiceClient;\n\n /**\n * @param url - Tables account url\n * @param partitionKey - partition key\n * @param credential - credential to authenticate the transaction request\n */\n constructor(\n url: string,\n partitionKey: string,\n transactionId: string,\n changesetId: string,\n // eslint-disable-next-line @azure/azure-sdk/ts-use-interface-parameters\n client: ServiceClient,\n interceptClient: TableClientLike,\n credential?: NamedKeyCredential | SASCredential | TokenCredential,\n allowInsecureConnection: boolean = false,\n ) {\n this.client = client;\n this.url = url;\n this.interceptClient = interceptClient;\n this.allowInsecureConnection = allowInsecureConnection;\n\n // Initialize the state\n this.state = this.initializeState(transactionId, changesetId, partitionKey);\n\n // Depending on the auth method used we need to build the url\n if (!credential) {\n // When the SAS token is provided as part of the URL we need to move it after $batch\n const urlParts = url.split(\"?\");\n this.url = urlParts[0];\n const sas = urlParts.length > 1 ? `?${urlParts[1]}` : \"\";\n this.url = `${this.getUrlWithSlash()}$batch${sas}`;\n } else {\n // When using a SharedKey credential no SAS token is needed\n this.url = `${this.getUrlWithSlash()}$batch`;\n }\n }\n\n private initializeState(\n transactionId: string,\n changesetId: string,\n partitionKey: string,\n ): {\n transactionId: string;\n changesetId: string;\n partitionKey: string;\n pendingOperations: Promise<any>[];\n bodyParts: string[];\n } {\n const pendingOperations: Promise<any>[] = [];\n const bodyParts = getInitialTransactionBody(transactionId, changesetId);\n const isCosmos = isCosmosEndpoint(this.url);\n prepateTransactionPipeline(this.interceptClient.pipeline, bodyParts, changesetId, isCosmos);\n\n return {\n transactionId,\n changesetId,\n partitionKey,\n pendingOperations,\n bodyParts,\n };\n }\n\n /**\n * Adds a createEntity operation to the transaction\n * @param entity - Entity to create\n */\n public createEntity<T extends object>(entity: TableEntity<T>): void {\n this.checkPartitionKey(entity.partitionKey);\n this.state.pendingOperations.push(this.interceptClient.createEntity(entity));\n }\n\n /**\n * Adds a createEntity operation to the transaction per each entity in the entities array\n * @param entities - Array of entities to create\n */\n public createEntities<T extends object>(entities: TableEntity<T>[]): void {\n for (const entity of entities) {\n this.checkPartitionKey(entity.partitionKey);\n this.state.pendingOperations.push(this.interceptClient.createEntity(entity));\n }\n }\n\n /**\n * Adds a deleteEntity operation to the transaction\n * @param partitionKey - Partition key of the entity to delete\n * @param rowKey - Row key of the entity to delete\n * @param options - Options for the delete operation\n */\n public deleteEntity(\n partitionKey: string,\n rowKey: string,\n options?: DeleteTableEntityOptions,\n ): void {\n this.checkPartitionKey(partitionKey);\n this.state.pendingOperations.push(\n this.interceptClient.deleteEntity(partitionKey, rowKey, options),\n );\n }\n\n /**\n * Adds an updateEntity operation to the transaction\n * @param entity - Entity to update\n * @param mode - Update mode (Merge or Replace)\n * @param options - Options for the update operation\n */\n public updateEntity<T extends object>(\n entity: TableEntity<T>,\n mode: UpdateMode,\n options?: UpdateTableEntityOptions,\n ): void {\n this.checkPartitionKey(entity.partitionKey);\n this.state.pendingOperations.push(this.interceptClient.updateEntity(entity, mode, options));\n }\n\n /**\n * Adds an upsertEntity operation to the transaction\n * @param entity - The properties for the table entity.\n * @param mode - The different modes for updating the entity:\n * - Merge: Updates an entity by updating the entity's properties without replacing the existing entity.\n * - Replace: Updates an existing entity by replacing the entire entity.\n * @param options - The options parameters.\n */\n public upsertEntity<T extends object>(\n entity: TableEntity<T>,\n mode: UpdateMode,\n options?: OperationOptions,\n ): void {\n this.checkPartitionKey(entity.partitionKey);\n this.state.pendingOperations.push(this.interceptClient.upsertEntity(entity, mode, options));\n }\n\n /**\n * Submits the operations in the transaction\n * @param options - Options for the request.\n */\n public async submitTransaction(\n options: OperationOptions = {},\n ): Promise<TableTransactionResponse> {\n await Promise.all(this.state.pendingOperations);\n const body = getTransactionHttpRequestBody(\n this.state.bodyParts,\n this.state.transactionId,\n this.state.changesetId,\n );\n\n const headers = getTransactionHeaders(this.state.transactionId);\n\n return tracingClient.withSpan(\n \"TableTransaction.submitTransaction\",\n options,\n async (updatedOptions) => {\n const request = createPipelineRequest({\n ...updatedOptions,\n url: this.url,\n method: \"POST\",\n body,\n headers: createHttpHeaders(headers),\n allowInsecureConnection: this.allowInsecureConnection,\n });\n\n const rawTransactionResponse = await this.client.sendRequest(request);\n return parseTransactionResponse(rawTransactionResponse);\n },\n );\n }\n\n private checkPartitionKey(partitionKey: string): void {\n if (this.state.partitionKey !== partitionKey) {\n throw new Error(\"All operations in a transaction must target the same partitionKey\");\n }\n }\n\n private getUrlWithSlash(): string {\n return this.url.endsWith(\"/\") ? this.url : `${this.url}/`;\n }\n}\n\nexport function parseTransactionResponse(\n transactionResponse: PipelineResponse,\n): TableTransactionResponse {\n const subResponsePrefix = `--changesetresponse_`;\n const status = transactionResponse.status;\n const rawBody = transactionResponse.bodyAsText || \"\";\n const splitBody = rawBody.split(subResponsePrefix);\n const isSuccessByStatus = 200 <= status && status < 300;\n\n if (!isSuccessByStatus) {\n handleBodyError(rawBody, status, transactionResponse.request, transactionResponse);\n }\n\n // Dropping the first and last elements as they are the boundaries\n // we just care about sub request content\n const subResponses = splitBody.slice(1, splitBody.length - 1);\n\n const responses: TableTransactionEntityResponse[] = subResponses.map((subResponse) => {\n const statusMatch = subResponse.match(/HTTP\\/1.1 ([0-9]*)/);\n if (statusMatch?.length !== 2) {\n throw new Error(`Couldn't extract status from sub-response:\\n ${subResponse}`);\n }\n const subResponseStatus = Number.parseInt(statusMatch[1]);\n if (!Number.isInteger(subResponseStatus)) {\n throw new Error(`Expected sub-response status to be an integer ${subResponseStatus}`);\n }\n\n const bodyMatch = subResponse.match(/\\{(.*)\\}/);\n if (bodyMatch?.length === 2) {\n handleBodyError(\n bodyMatch[0],\n subResponseStatus,\n transactionResponse.request,\n transactionResponse,\n );\n }\n\n const etagMatch = subResponse.match(/ETag: (.*)/);\n const rowKeyMatch = subResponse.match(/RowKey='(.*)'/);\n\n return {\n status: subResponseStatus,\n ...(rowKeyMatch?.length === 2 && { rowKey: rowKeyMatch[1] }),\n ...(etagMatch?.length === 2 && { etag: etagMatch[1] }),\n };\n });\n\n return {\n status,\n subResponses: responses,\n getResponseForEntity: (rowKey: string) => responses.find((r) => r.rowKey === rowKey),\n };\n}\n\nfunction handleBodyError(\n bodyAsText: string,\n statusCode: number,\n request: PipelineRequest,\n response: PipelineResponse,\n): void {\n let parsedError;\n\n try {\n parsedError = JSON.parse(bodyAsText);\n } catch {\n parsedError = {};\n }\n\n let message = \"Transaction Failed\";\n let code: string | undefined;\n // Only transaction sub-responses return body\n if (parsedError && parsedError[\"odata.error\"]) {\n const error: TableServiceErrorOdataError = parsedError[\"odata.error\"];\n message = error.message?.value ?? message;\n code = error.code;\n }\n\n throw new RestError(message, {\n code,\n statusCode,\n request,\n response,\n });\n}\n\n/**\n * Prepares the transaction pipeline to intercept operations\n * @param pipeline - Client pipeline\n */\nexport function prepateTransactionPipeline(\n pipeline: Pipeline,\n bodyParts: string[],\n changesetId: string,\n isCosmos: boolean,\n): void {\n // Fist, we need to clear all the existing policies to make sure we start\n // with a fresh state.\n const policies = pipeline.getOrderedPolicies();\n for (const policy of policies) {\n pipeline.removePolicy({\n name: policy.name,\n });\n }\n\n // With the clear state we now initialize the pipelines required for intercepting the requests.\n // Use transaction assemble policy to assemble request and intercept request from going to wire\n\n pipeline.addPolicy(serializationPolicy(), { phase: \"Serialize\" });\n pipeline.addPolicy(transactionHeaderFilterPolicy());\n pipeline.addPolicy(transactionRequestAssemblePolicy(bodyParts, changesetId));\n if (isCosmos) {\n pipeline.addPolicy(cosmosPatchPolicy(), {\n afterPolicies: [transactionHeaderFilterPolicyName],\n beforePolicies: [serializationPolicyName, transactionRequestAssemblePolicyName],\n });\n }\n}\n"]}
@@ -13,13 +13,14 @@ const coreClient = tslib_1.__importStar(require("@azure/core-client"));
13
13
  const index_js_1 = require("./operations/index.js");
14
14
  /** @internal */
15
15
  class GeneratedClient extends coreClient.ServiceClient {
16
+ url;
17
+ version;
16
18
  /**
17
19
  * Initializes a new instance of the GeneratedClient class.
18
20
  * @param url The URL of the service account or table that is the target of the desired operation.
19
21
  * @param options The parameter options
20
22
  */
21
23
  constructor(url, options) {
22
- var _a, _b;
23
24
  if (url === undefined) {
24
25
  throw new Error("'url' cannot be null");
25
26
  }
@@ -34,9 +35,14 @@ class GeneratedClient extends coreClient.ServiceClient {
34
35
  const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix
35
36
  ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`
36
37
  : `${packageDetails}`;
37
- const optionsWithDefaults = Object.assign(Object.assign(Object.assign({}, defaults), options), { userAgentOptions: {
38
+ const optionsWithDefaults = {
39
+ ...defaults,
40
+ ...options,
41
+ userAgentOptions: {
38
42
  userAgentPrefix
39
- }, baseUri: (_b = (_a = options.endpoint) !== null && _a !== void 0 ? _a : options.baseUri) !== null && _b !== void 0 ? _b : "{url}" });
43
+ },
44
+ baseUri: options.endpoint ?? options.baseUri ?? "{url}"
45
+ };
40
46
  super(optionsWithDefaults);
41
47
  // Parameter assignments
42
48
  this.url = url;
@@ -45,6 +51,8 @@ class GeneratedClient extends coreClient.ServiceClient {
45
51
  this.table = new index_js_1.TableImpl(this);
46
52
  this.service = new index_js_1.ServiceImpl(this);
47
53
  }
54
+ table;
55
+ service;
48
56
  }
49
57
  exports.GeneratedClient = GeneratedClient;
50
58
  //# sourceMappingURL=generatedClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generatedClient.js","sourceRoot":"","sources":["../../../src/generated/generatedClient.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;AAEH,uEAAiD;AACjD,oDAA+D;AAI/D,gBAAgB;AAChB,MAAa,eAAgB,SAAQ,UAAU,CAAC,aAAa;IAI3D;;;;OAIG;IACH,YAAY,GAAW,EAAE,OAAuC;;QAC9D,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,0CAA0C;QAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;QACD,MAAM,QAAQ,GAAkC;YAC9C,kBAAkB,EAAE,iCAAiC;SACtD,CAAC;QAEF,MAAM,cAAc,GAAG,6BAA6B,CAAC;QACrD,MAAM,eAAe,GACnB,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,CAAC,eAAe;YAClE,CAAC,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,eAAe,IAAI,cAAc,EAAE;YACjE,CAAC,CAAC,GAAG,cAAc,EAAE,CAAC;QAE1B,MAAM,mBAAmB,iDACpB,QAAQ,GACR,OAAO,KACV,gBAAgB,EAAE;gBAChB,eAAe;aAChB,EACD,OAAO,EAAE,MAAA,MAAA,OAAO,CAAC,QAAQ,mCAAI,OAAO,CAAC,OAAO,mCAAI,OAAO,GACxD,CAAC;QACF,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC3B,wBAAwB;QACxB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QAEf,0CAA0C;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,YAAY,CAAC;QAC/C,IAAI,CAAC,KAAK,GAAG,IAAI,oBAAS,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,IAAI,sBAAW,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;CAIF;AAhDD,0CAgDC","sourcesContent":["/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\nimport { TableImpl, ServiceImpl } from \"./operations/index.js\";\nimport { Table, Service } from \"./operationsInterfaces/index.js\";\nimport { GeneratedClientOptionalParams } from \"./models/index.js\";\n\n/** @internal */\nexport class GeneratedClient extends coreClient.ServiceClient {\n url: string;\n version: string;\n\n /**\n * Initializes a new instance of the GeneratedClient class.\n * @param url The URL of the service account or table that is the target of the desired operation.\n * @param options The parameter options\n */\n constructor(url: string, options?: GeneratedClientOptionalParams) {\n if (url === undefined) {\n throw new Error(\"'url' cannot be null\");\n }\n\n // Initializing default values for options\n if (!options) {\n options = {};\n }\n const defaults: GeneratedClientOptionalParams = {\n requestContentType: \"application/json; charset=utf-8\"\n };\n\n const packageDetails = `azsdk-js-data-tables/13.1.2`;\n const userAgentPrefix =\n options.userAgentOptions && options.userAgentOptions.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n\n const optionsWithDefaults = {\n ...defaults,\n ...options,\n userAgentOptions: {\n userAgentPrefix\n },\n baseUri: options.endpoint ?? options.baseUri ?? \"{url}\"\n };\n super(optionsWithDefaults);\n // Parameter assignments\n this.url = url;\n\n // Assigning values to Constant parameters\n this.version = options.version || \"2019-02-02\";\n this.table = new TableImpl(this);\n this.service = new ServiceImpl(this);\n }\n\n table: Table;\n service: Service;\n}\n"]}
1
+ {"version":3,"file":"generatedClient.js","sourceRoot":"","sources":["../../../src/generated/generatedClient.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;AAEH,uEAAiD;AACjD,oDAA+D;AAI/D,gBAAgB;AAChB,MAAa,eAAgB,SAAQ,UAAU,CAAC,aAAa;IAC3D,GAAG,CAAS;IACZ,OAAO,CAAS;IAEhB;;;;OAIG;IACH,YAAY,GAAW,EAAE,OAAuC;QAC9D,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,0CAA0C;QAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;QACD,MAAM,QAAQ,GAAkC;YAC9C,kBAAkB,EAAE,iCAAiC;SACtD,CAAC;QAEF,MAAM,cAAc,GAAG,6BAA6B,CAAC;QACrD,MAAM,eAAe,GACnB,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,CAAC,eAAe;YAClE,CAAC,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,eAAe,IAAI,cAAc,EAAE;YACjE,CAAC,CAAC,GAAG,cAAc,EAAE,CAAC;QAE1B,MAAM,mBAAmB,GAAG;YAC1B,GAAG,QAAQ;YACX,GAAG,OAAO;YACV,gBAAgB,EAAE;gBAChB,eAAe;aAChB;YACD,OAAO,EAAE,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO;SACxD,CAAC;QACF,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC3B,wBAAwB;QACxB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QAEf,0CAA0C;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,YAAY,CAAC;QAC/C,IAAI,CAAC,KAAK,GAAG,IAAI,oBAAS,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,IAAI,sBAAW,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAQ;IACb,OAAO,CAAU;CAClB;AAhDD,0CAgDC","sourcesContent":["/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\nimport { TableImpl, ServiceImpl } from \"./operations/index.js\";\nimport { Table, Service } from \"./operationsInterfaces/index.js\";\nimport { GeneratedClientOptionalParams } from \"./models/index.js\";\n\n/** @internal */\nexport class GeneratedClient extends coreClient.ServiceClient {\n url: string;\n version: string;\n\n /**\n * Initializes a new instance of the GeneratedClient class.\n * @param url The URL of the service account or table that is the target of the desired operation.\n * @param options The parameter options\n */\n constructor(url: string, options?: GeneratedClientOptionalParams) {\n if (url === undefined) {\n throw new Error(\"'url' cannot be null\");\n }\n\n // Initializing default values for options\n if (!options) {\n options = {};\n }\n const defaults: GeneratedClientOptionalParams = {\n requestContentType: \"application/json; charset=utf-8\"\n };\n\n const packageDetails = `azsdk-js-data-tables/13.1.2`;\n const userAgentPrefix =\n options.userAgentOptions && options.userAgentOptions.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n\n const optionsWithDefaults = {\n ...defaults,\n ...options,\n userAgentOptions: {\n userAgentPrefix\n },\n baseUri: options.endpoint ?? options.baseUri ?? \"{url}\"\n };\n super(optionsWithDefaults);\n // Parameter assignments\n this.url = url;\n\n // Assigning values to Constant parameters\n this.version = options.version || \"2019-02-02\";\n this.table = new TableImpl(this);\n this.service = new ServiceImpl(this);\n }\n\n table: Table;\n service: Service;\n}\n"]}
@@ -12,6 +12,8 @@ const tslib_1 = require("tslib");
12
12
  const coreClient = tslib_1.__importStar(require("@azure/core-client"));
13
13
  /** @internal */
14
14
  class GeneratedClientContext extends coreClient.ServiceClient {
15
+ url;
16
+ version;
15
17
  /**
16
18
  * Initializes a new instance of the GeneratedClientContext class.
17
19
  * @param url The URL of the service account or table that is the target of the desired operation.
@@ -32,9 +34,14 @@ class GeneratedClientContext extends coreClient.ServiceClient {
32
34
  const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix
33
35
  ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`
34
36
  : `${packageDetails}`;
35
- const optionsWithDefaults = Object.assign(Object.assign(Object.assign({}, defaults), options), { userAgentOptions: {
37
+ const optionsWithDefaults = {
38
+ ...defaults,
39
+ ...options,
40
+ userAgentOptions: {
36
41
  userAgentPrefix
37
- }, baseUri: options.endpoint || "{url}" });
42
+ },
43
+ baseUri: options.endpoint || "{url}"
44
+ };
38
45
  super(optionsWithDefaults);
39
46
  // Parameter assignments
40
47
  this.url = url;
@@ -1 +1 @@
1
- {"version":3,"file":"generatedClientContext.js","sourceRoot":"","sources":["../../../src/generated/generatedClientContext.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;AAEH,uEAAiD;AAIjD,gBAAgB;AAChB,MAAa,sBAAuB,SAAQ,UAAU,CAAC,aAAa;IAIlE;;;;OAIG;IACH,YAAY,GAAW,EAAE,OAAuC;QAC9D,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,0CAA0C;QAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;QACD,MAAM,QAAQ,GAAkC;YAC9C,kBAAkB,EAAE,iCAAiC;SACtD,CAAC;QAEF,MAAM,cAAc,GAAG,6BAA6B,CAAC;QACrD,MAAM,eAAe,GACnB,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,CAAC,eAAe;YAClE,CAAC,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,eAAe,IAAI,cAAc,EAAE;YACjE,CAAC,CAAC,GAAG,cAAc,EAAE,CAAC;QAE1B,MAAM,mBAAmB,iDACpB,QAAQ,GACR,OAAO,KACV,gBAAgB,EAAE;gBAChB,eAAe;aAChB,EACD,OAAO,EAAE,OAAO,CAAC,QAAQ,IAAI,OAAO,GACrC,CAAC;QACF,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC3B,wBAAwB;QACxB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QAEf,0CAA0C;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,YAAY,CAAC;IACjD,CAAC;CACF;AA3CD,wDA2CC","sourcesContent":["/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\n\nimport { GeneratedClientOptionalParams } from \"./models/index.js\";\n\n/** @internal */\nexport class GeneratedClientContext extends coreClient.ServiceClient {\n url: string;\n version: string;\n\n /**\n * Initializes a new instance of the GeneratedClientContext class.\n * @param url The URL of the service account or table that is the target of the desired operation.\n * @param options The parameter options\n */\n constructor(url: string, options?: GeneratedClientOptionalParams) {\n if (url === undefined) {\n throw new Error(\"'url' cannot be null\");\n }\n\n // Initializing default values for options\n if (!options) {\n options = {};\n }\n const defaults: GeneratedClientOptionalParams = {\n requestContentType: \"application/json; charset=utf-8\"\n };\n\n const packageDetails = `azsdk-js-data-tables/13.3.1`;\n const userAgentPrefix =\n options.userAgentOptions && options.userAgentOptions.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n\n const optionsWithDefaults = {\n ...defaults,\n ...options,\n userAgentOptions: {\n userAgentPrefix\n },\n baseUri: options.endpoint || \"{url}\"\n };\n super(optionsWithDefaults);\n // Parameter assignments\n this.url = url;\n\n // Assigning values to Constant parameters\n this.version = options.version || \"2020-12-06\";\n }\n}\n"]}
1
+ {"version":3,"file":"generatedClientContext.js","sourceRoot":"","sources":["../../../src/generated/generatedClientContext.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;AAEH,uEAAiD;AAIjD,gBAAgB;AAChB,MAAa,sBAAuB,SAAQ,UAAU,CAAC,aAAa;IAClE,GAAG,CAAS;IACZ,OAAO,CAAS;IAEhB;;;;OAIG;IACH,YAAY,GAAW,EAAE,OAAuC;QAC9D,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,0CAA0C;QAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;QACD,MAAM,QAAQ,GAAkC;YAC9C,kBAAkB,EAAE,iCAAiC;SACtD,CAAC;QAEF,MAAM,cAAc,GAAG,6BAA6B,CAAC;QACrD,MAAM,eAAe,GACnB,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,CAAC,eAAe;YAClE,CAAC,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,eAAe,IAAI,cAAc,EAAE;YACjE,CAAC,CAAC,GAAG,cAAc,EAAE,CAAC;QAE1B,MAAM,mBAAmB,GAAG;YAC1B,GAAG,QAAQ;YACX,GAAG,OAAO;YACV,gBAAgB,EAAE;gBAChB,eAAe;aAChB;YACD,OAAO,EAAE,OAAO,CAAC,QAAQ,IAAI,OAAO;SACrC,CAAC;QACF,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC3B,wBAAwB;QACxB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QAEf,0CAA0C;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,YAAY,CAAC;IACjD,CAAC;CACF;AA3CD,wDA2CC","sourcesContent":["/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\n\nimport { GeneratedClientOptionalParams } from \"./models/index.js\";\n\n/** @internal */\nexport class GeneratedClientContext extends coreClient.ServiceClient {\n url: string;\n version: string;\n\n /**\n * Initializes a new instance of the GeneratedClientContext class.\n * @param url The URL of the service account or table that is the target of the desired operation.\n * @param options The parameter options\n */\n constructor(url: string, options?: GeneratedClientOptionalParams) {\n if (url === undefined) {\n throw new Error(\"'url' cannot be null\");\n }\n\n // Initializing default values for options\n if (!options) {\n options = {};\n }\n const defaults: GeneratedClientOptionalParams = {\n requestContentType: \"application/json; charset=utf-8\"\n };\n\n const packageDetails = `azsdk-js-data-tables/13.3.1`;\n const userAgentPrefix =\n options.userAgentOptions && options.userAgentOptions.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n\n const optionsWithDefaults = {\n ...defaults,\n ...options,\n userAgentOptions: {\n userAgentPrefix\n },\n baseUri: options.endpoint || \"{url}\"\n };\n super(optionsWithDefaults);\n // Parameter assignments\n this.url = url;\n\n // Assigning values to Constant parameters\n this.version = options.version || \"2020-12-06\";\n }\n}\n"]}
@@ -510,13 +510,16 @@ exports.TableResponse = {
510
510
  type: {
511
511
  name: "Composite",
512
512
  className: "TableResponse",
513
- modelProperties: Object.assign(Object.assign({}, exports.TableResponseProperties.type.modelProperties), { odataMetadata: {
513
+ modelProperties: {
514
+ ...exports.TableResponseProperties.type.modelProperties,
515
+ odataMetadata: {
514
516
  serializedName: "odata\\.metadata",
515
517
  xmlName: "odata\\.metadata",
516
518
  type: {
517
519
  name: "String"
518
520
  }
519
- } })
521
+ }
522
+ }
520
523
  }
521
524
  };
522
525
  exports.TableQueryHeaders = {