@azure/data-tables 13.3.1 → 13.3.3-alpha.20251117.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/TableClient.js +105 -61
- package/dist/browser/TableClient.js.map +1 -1
- package/dist/browser/TableServiceClient.js +59 -48
- package/dist/browser/TableServiceClient.js.map +1 -1
- package/dist/browser/TableTransaction.js +34 -9
- package/dist/browser/TableTransaction.js.map +1 -1
- package/dist/browser/generated/generatedClient.js +11 -3
- package/dist/browser/generated/generatedClient.js.map +1 -1
- package/dist/browser/generated/generatedClientContext.js +10 -3
- package/dist/browser/generated/generatedClientContext.js.map +1 -1
- package/dist/browser/generated/models/mappers.js +5 -2
- package/dist/browser/generated/models/mappers.js.map +1 -1
- package/dist/browser/generated/operations/service.js +1 -0
- package/dist/browser/generated/operations/service.js.map +1 -1
- package/dist/browser/generated/operations/table.js +1 -0
- package/dist/browser/generated/operations/table.js.map +1 -1
- package/dist/browser/sas/accountSasPermissions.d.ts +1 -1
- package/dist/browser/sas/accountSasPermissions.js +2 -2
- package/dist/browser/sas/accountSasPermissions.js.map +1 -1
- package/dist/browser/sas/accountSasResourceTypes.d.ts +1 -1
- package/dist/browser/sas/accountSasResourceTypes.js +1 -1
- package/dist/browser/sas/accountSasResourceTypes.js.map +1 -1
- package/dist/browser/sas/accountSasSignatureValues.d.ts +1 -1
- package/dist/browser/sas/accountSasSignatureValues.js +1 -1
- package/dist/browser/sas/accountSasSignatureValues.js.map +1 -1
- package/dist/browser/sas/generateAccountSas.d.ts +1 -1
- package/dist/browser/sas/generateAccountSas.js +9 -4
- package/dist/browser/sas/generateAccountSas.js.map +1 -1
- package/dist/browser/sas/generateTableSas.d.ts +1 -1
- package/dist/browser/sas/generateTableSas.js +6 -3
- package/dist/browser/sas/generateTableSas.js.map +1 -1
- package/dist/browser/sas/sasQueryParameters.d.ts +1 -1
- package/dist/browser/sas/sasQueryParameters.js +112 -0
- package/dist/browser/sas/sasQueryParameters.js.map +1 -1
- package/dist/browser/sas/tableSasSignatureValues.d.ts +1 -1
- package/dist/browser/sas/tableSasSignatureValues.js +6 -7
- package/dist/browser/sas/tableSasSignatureValues.js.map +1 -1
- package/dist/browser/secondaryEndpointPolicy.js +10 -2
- package/dist/browser/secondaryEndpointPolicy.js.map +1 -1
- package/dist/browser/serialization.js +16 -10
- package/dist/browser/serialization.js.map +1 -1
- package/dist/browser/utils/continuationToken.js +5 -1
- package/dist/browser/utils/continuationToken.js.map +1 -1
- package/dist/browser/utils/errorHelpers.js +3 -4
- package/dist/browser/utils/errorHelpers.js.map +1 -1
- package/dist/browser/utils/isCosmosEndpoint.js +2 -3
- package/dist/browser/utils/isCosmosEndpoint.js.map +1 -1
- package/dist/browser/utils/tracing.js +1 -1
- package/dist/browser/utils/tracing.js.map +1 -1
- package/dist/commonjs/TableClient.js +105 -61
- package/dist/commonjs/TableClient.js.map +1 -1
- package/dist/commonjs/TableServiceClient.js +59 -48
- package/dist/commonjs/TableServiceClient.js.map +1 -1
- package/dist/commonjs/TableTransaction.js +34 -9
- package/dist/commonjs/TableTransaction.js.map +1 -1
- package/dist/commonjs/generated/generatedClient.js +11 -3
- package/dist/commonjs/generated/generatedClient.js.map +1 -1
- package/dist/commonjs/generated/generatedClientContext.js +10 -3
- package/dist/commonjs/generated/generatedClientContext.js.map +1 -1
- package/dist/commonjs/generated/models/mappers.js +5 -2
- package/dist/commonjs/generated/models/mappers.js.map +1 -1
- package/dist/commonjs/generated/operations/service.js +1 -0
- package/dist/commonjs/generated/operations/service.js.map +1 -1
- package/dist/commonjs/generated/operations/table.js +1 -0
- package/dist/commonjs/generated/operations/table.js.map +1 -1
- package/dist/commonjs/sas/accountSasPermissions.d.ts +1 -1
- package/dist/commonjs/sas/accountSasPermissions.js +2 -2
- package/dist/commonjs/sas/accountSasPermissions.js.map +1 -1
- package/dist/commonjs/sas/accountSasResourceTypes.d.ts +1 -1
- package/dist/commonjs/sas/accountSasResourceTypes.js +1 -1
- package/dist/commonjs/sas/accountSasResourceTypes.js.map +1 -1
- package/dist/commonjs/sas/accountSasSignatureValues.d.ts +1 -1
- package/dist/commonjs/sas/accountSasSignatureValues.js +1 -1
- package/dist/commonjs/sas/accountSasSignatureValues.js.map +1 -1
- package/dist/commonjs/sas/generateAccountSas.d.ts +1 -1
- package/dist/commonjs/sas/generateAccountSas.js +9 -4
- package/dist/commonjs/sas/generateAccountSas.js.map +1 -1
- package/dist/commonjs/sas/generateTableSas.d.ts +1 -1
- package/dist/commonjs/sas/generateTableSas.js +6 -3
- package/dist/commonjs/sas/generateTableSas.js.map +1 -1
- package/dist/commonjs/sas/sasQueryParameters.d.ts +1 -1
- package/dist/commonjs/sas/sasQueryParameters.js +112 -0
- package/dist/commonjs/sas/sasQueryParameters.js.map +1 -1
- package/dist/commonjs/sas/tableSasSignatureValues.d.ts +1 -1
- package/dist/commonjs/sas/tableSasSignatureValues.js +6 -7
- package/dist/commonjs/sas/tableSasSignatureValues.js.map +1 -1
- package/dist/commonjs/secondaryEndpointPolicy.js +10 -2
- package/dist/commonjs/secondaryEndpointPolicy.js.map +1 -1
- package/dist/commonjs/serialization.js +16 -10
- package/dist/commonjs/serialization.js.map +1 -1
- package/dist/commonjs/tsdoc-metadata.json +11 -11
- package/dist/commonjs/utils/continuationToken.js +5 -1
- package/dist/commonjs/utils/continuationToken.js.map +1 -1
- package/dist/commonjs/utils/errorHelpers.js +3 -4
- package/dist/commonjs/utils/errorHelpers.js.map +1 -1
- package/dist/commonjs/utils/isCosmosEndpoint.js +2 -3
- package/dist/commonjs/utils/isCosmosEndpoint.js.map +1 -1
- package/dist/commonjs/utils/tracing.js +1 -1
- package/dist/commonjs/utils/tracing.js.map +1 -1
- package/dist/commonjs/utils/transactionHeaders.js +5 -2
- package/dist/commonjs/utils/transactionHeaders.js.map +1 -1
- package/dist/esm/TableClient.js +105 -61
- package/dist/esm/TableClient.js.map +1 -1
- package/dist/esm/TableServiceClient.js +59 -48
- package/dist/esm/TableServiceClient.js.map +1 -1
- package/dist/esm/TableTransaction.js +34 -9
- package/dist/esm/TableTransaction.js.map +1 -1
- package/dist/esm/generated/generatedClient.js +11 -3
- package/dist/esm/generated/generatedClient.js.map +1 -1
- package/dist/esm/generated/generatedClientContext.js +10 -3
- package/dist/esm/generated/generatedClientContext.js.map +1 -1
- package/dist/esm/generated/models/mappers.js +5 -2
- package/dist/esm/generated/models/mappers.js.map +1 -1
- package/dist/esm/generated/operations/service.js +1 -0
- package/dist/esm/generated/operations/service.js.map +1 -1
- package/dist/esm/generated/operations/table.js +1 -0
- package/dist/esm/generated/operations/table.js.map +1 -1
- package/dist/esm/sas/accountSasPermissions.d.ts +1 -1
- package/dist/esm/sas/accountSasPermissions.js +2 -2
- package/dist/esm/sas/accountSasPermissions.js.map +1 -1
- package/dist/esm/sas/accountSasResourceTypes.d.ts +1 -1
- package/dist/esm/sas/accountSasResourceTypes.js +1 -1
- package/dist/esm/sas/accountSasResourceTypes.js.map +1 -1
- package/dist/esm/sas/accountSasSignatureValues.d.ts +1 -1
- package/dist/esm/sas/accountSasSignatureValues.js +1 -1
- package/dist/esm/sas/accountSasSignatureValues.js.map +1 -1
- package/dist/esm/sas/generateAccountSas.d.ts +1 -1
- package/dist/esm/sas/generateAccountSas.js +9 -4
- package/dist/esm/sas/generateAccountSas.js.map +1 -1
- package/dist/esm/sas/generateTableSas.d.ts +1 -1
- package/dist/esm/sas/generateTableSas.js +6 -3
- package/dist/esm/sas/generateTableSas.js.map +1 -1
- package/dist/esm/sas/sasQueryParameters.d.ts +1 -1
- package/dist/esm/sas/sasQueryParameters.js +112 -0
- package/dist/esm/sas/sasQueryParameters.js.map +1 -1
- package/dist/esm/sas/tableSasSignatureValues.d.ts +1 -1
- package/dist/esm/sas/tableSasSignatureValues.js +6 -7
- package/dist/esm/sas/tableSasSignatureValues.js.map +1 -1
- package/dist/esm/secondaryEndpointPolicy.js +10 -2
- package/dist/esm/secondaryEndpointPolicy.js.map +1 -1
- package/dist/esm/serialization.js +16 -10
- package/dist/esm/serialization.js.map +1 -1
- package/dist/esm/utils/continuationToken.js +5 -1
- package/dist/esm/utils/continuationToken.js.map +1 -1
- package/dist/esm/utils/errorHelpers.js +3 -4
- package/dist/esm/utils/errorHelpers.js.map +1 -1
- package/dist/esm/utils/isCosmosEndpoint.js +2 -3
- package/dist/esm/utils/isCosmosEndpoint.js.map +1 -1
- package/dist/esm/utils/tracing.js +1 -1
- package/dist/esm/utils/tracing.js.map +1 -1
- package/dist/esm/utils/transactionHeaders.js +5 -2
- package/dist/esm/utils/transactionHeaders.js.map +1 -1
- package/dist/react-native/TableClient.js +105 -61
- package/dist/react-native/TableClient.js.map +1 -1
- package/dist/react-native/TableServiceClient.js +59 -48
- package/dist/react-native/TableServiceClient.js.map +1 -1
- package/dist/react-native/TableTransaction.js +34 -9
- package/dist/react-native/TableTransaction.js.map +1 -1
- package/dist/react-native/generated/generatedClient.js +11 -3
- package/dist/react-native/generated/generatedClient.js.map +1 -1
- package/dist/react-native/generated/generatedClientContext.js +10 -3
- package/dist/react-native/generated/generatedClientContext.js.map +1 -1
- package/dist/react-native/generated/models/mappers.js +5 -2
- package/dist/react-native/generated/models/mappers.js.map +1 -1
- package/dist/react-native/generated/operations/service.js +1 -0
- package/dist/react-native/generated/operations/service.js.map +1 -1
- package/dist/react-native/generated/operations/table.js +1 -0
- package/dist/react-native/generated/operations/table.js.map +1 -1
- package/dist/react-native/sas/accountSasPermissions.d.ts +1 -1
- package/dist/react-native/sas/accountSasPermissions.js +2 -2
- package/dist/react-native/sas/accountSasPermissions.js.map +1 -1
- package/dist/react-native/sas/accountSasResourceTypes.d.ts +1 -1
- package/dist/react-native/sas/accountSasResourceTypes.js +1 -1
- package/dist/react-native/sas/accountSasResourceTypes.js.map +1 -1
- package/dist/react-native/sas/accountSasSignatureValues.d.ts +1 -1
- package/dist/react-native/sas/accountSasSignatureValues.js +1 -1
- package/dist/react-native/sas/accountSasSignatureValues.js.map +1 -1
- package/dist/react-native/sas/generateAccountSas.d.ts +1 -1
- package/dist/react-native/sas/generateAccountSas.js +9 -4
- package/dist/react-native/sas/generateAccountSas.js.map +1 -1
- package/dist/react-native/sas/generateTableSas.d.ts +1 -1
- package/dist/react-native/sas/generateTableSas.js +6 -3
- package/dist/react-native/sas/generateTableSas.js.map +1 -1
- package/dist/react-native/sas/sasQueryParameters.d.ts +1 -1
- package/dist/react-native/sas/sasQueryParameters.js +112 -0
- package/dist/react-native/sas/sasQueryParameters.js.map +1 -1
- package/dist/react-native/sas/tableSasSignatureValues.d.ts +1 -1
- package/dist/react-native/sas/tableSasSignatureValues.js +6 -7
- package/dist/react-native/sas/tableSasSignatureValues.js.map +1 -1
- package/dist/react-native/secondaryEndpointPolicy.js +10 -2
- package/dist/react-native/secondaryEndpointPolicy.js.map +1 -1
- package/dist/react-native/serialization.js +16 -10
- package/dist/react-native/serialization.js.map +1 -1
- package/dist/react-native/utils/continuationToken.js +5 -1
- package/dist/react-native/utils/continuationToken.js.map +1 -1
- package/dist/react-native/utils/errorHelpers.js +3 -4
- package/dist/react-native/utils/errorHelpers.js.map +1 -1
- package/dist/react-native/utils/isCosmosEndpoint.js +2 -3
- package/dist/react-native/utils/isCosmosEndpoint.js.map +1 -1
- package/dist/react-native/utils/tracing.js +1 -1
- package/dist/react-native/utils/tracing.js.map +1 -1
- package/dist/react-native/utils/transactionHeaders.js +5 -2
- package/dist/react-native/utils/transactionHeaders.js.map +1 -1
- package/package.json +36 -33
|
@@ -12,8 +12,12 @@ import { tracingClient } from "./utils/tracing.js";
|
|
|
12
12
|
* Helper to build a list of transaction actions
|
|
13
13
|
*/
|
|
14
14
|
export class TableTransaction {
|
|
15
|
+
/**
|
|
16
|
+
* List of actions to perform in a transaction
|
|
17
|
+
*/
|
|
18
|
+
actions;
|
|
15
19
|
constructor(actions) {
|
|
16
|
-
this.actions = actions
|
|
20
|
+
this.actions = actions ?? [];
|
|
17
21
|
}
|
|
18
22
|
/**
|
|
19
23
|
* Adds a create action to the transaction
|
|
@@ -40,7 +44,7 @@ export class TableTransaction {
|
|
|
40
44
|
// UpdateMode is a string union
|
|
41
45
|
const realUpdateMode = typeof updateModeOrOptions === "string" ? updateModeOrOptions : undefined;
|
|
42
46
|
const realUpdateOptions = typeof updateModeOrOptions === "object" ? updateModeOrOptions : updateOptions;
|
|
43
|
-
this.actions.push(["update", entity, realUpdateMode
|
|
47
|
+
this.actions.push(["update", entity, realUpdateMode ?? "Merge", realUpdateOptions ?? {}]);
|
|
44
48
|
}
|
|
45
49
|
/**
|
|
46
50
|
* Adds an upsert action to the transaction, which inserts if the entity doesn't exist or updates the existing one
|
|
@@ -55,6 +59,17 @@ export class TableTransaction {
|
|
|
55
59
|
* TableTransaction collects sub-operations that can be submitted together via submitTransaction
|
|
56
60
|
*/
|
|
57
61
|
export class InternalTableTransaction {
|
|
62
|
+
/**
|
|
63
|
+
* Table Account URL
|
|
64
|
+
*/
|
|
65
|
+
url;
|
|
66
|
+
/**
|
|
67
|
+
* State that holds the information about a particular transation
|
|
68
|
+
*/
|
|
69
|
+
state;
|
|
70
|
+
interceptClient;
|
|
71
|
+
allowInsecureConnection;
|
|
72
|
+
client;
|
|
58
73
|
/**
|
|
59
74
|
* @param url - Tables account url
|
|
60
75
|
* @param partitionKey - partition key
|
|
@@ -154,7 +169,14 @@ export class InternalTableTransaction {
|
|
|
154
169
|
const body = getTransactionHttpRequestBody(this.state.bodyParts, this.state.transactionId, this.state.changesetId);
|
|
155
170
|
const headers = getTransactionHeaders(this.state.transactionId);
|
|
156
171
|
return tracingClient.withSpan("TableTransaction.submitTransaction", options, async (updatedOptions) => {
|
|
157
|
-
const request = createPipelineRequest(
|
|
172
|
+
const request = createPipelineRequest({
|
|
173
|
+
...updatedOptions,
|
|
174
|
+
url: this.url,
|
|
175
|
+
method: "POST",
|
|
176
|
+
body,
|
|
177
|
+
headers: createHttpHeaders(headers),
|
|
178
|
+
allowInsecureConnection: this.allowInsecureConnection,
|
|
179
|
+
});
|
|
158
180
|
const rawTransactionResponse = await this.client.sendRequest(request);
|
|
159
181
|
return parseTransactionResponse(rawTransactionResponse);
|
|
160
182
|
});
|
|
@@ -182,7 +204,7 @@ export function parseTransactionResponse(transactionResponse) {
|
|
|
182
204
|
const subResponses = splitBody.slice(1, splitBody.length - 1);
|
|
183
205
|
const responses = subResponses.map((subResponse) => {
|
|
184
206
|
const statusMatch = subResponse.match(/HTTP\/1.1 ([0-9]*)/);
|
|
185
|
-
if (
|
|
207
|
+
if (statusMatch?.length !== 2) {
|
|
186
208
|
throw new Error(`Couldn't extract status from sub-response:\n ${subResponse}`);
|
|
187
209
|
}
|
|
188
210
|
const subResponseStatus = Number.parseInt(statusMatch[1]);
|
|
@@ -190,12 +212,16 @@ export function parseTransactionResponse(transactionResponse) {
|
|
|
190
212
|
throw new Error(`Expected sub-response status to be an integer ${subResponseStatus}`);
|
|
191
213
|
}
|
|
192
214
|
const bodyMatch = subResponse.match(/\{(.*)\}/);
|
|
193
|
-
if (
|
|
215
|
+
if (bodyMatch?.length === 2) {
|
|
194
216
|
handleBodyError(bodyMatch[0], subResponseStatus, transactionResponse.request, transactionResponse);
|
|
195
217
|
}
|
|
196
218
|
const etagMatch = subResponse.match(/ETag: (.*)/);
|
|
197
219
|
const rowKeyMatch = subResponse.match(/RowKey='(.*)'/);
|
|
198
|
-
return
|
|
220
|
+
return {
|
|
221
|
+
status: subResponseStatus,
|
|
222
|
+
...(rowKeyMatch?.length === 2 && { rowKey: rowKeyMatch[1] }),
|
|
223
|
+
...(etagMatch?.length === 2 && { etag: etagMatch[1] }),
|
|
224
|
+
};
|
|
199
225
|
});
|
|
200
226
|
return {
|
|
201
227
|
status,
|
|
@@ -204,12 +230,11 @@ export function parseTransactionResponse(transactionResponse) {
|
|
|
204
230
|
};
|
|
205
231
|
}
|
|
206
232
|
function handleBodyError(bodyAsText, statusCode, request, response) {
|
|
207
|
-
var _a, _b;
|
|
208
233
|
let parsedError;
|
|
209
234
|
try {
|
|
210
235
|
parsedError = JSON.parse(bodyAsText);
|
|
211
236
|
}
|
|
212
|
-
catch
|
|
237
|
+
catch {
|
|
213
238
|
parsedError = {};
|
|
214
239
|
}
|
|
215
240
|
let message = "Transaction Failed";
|
|
@@ -217,7 +242,7 @@ function handleBodyError(bodyAsText, statusCode, request, response) {
|
|
|
217
242
|
// Only transaction sub-responses return body
|
|
218
243
|
if (parsedError && parsedError["odata.error"]) {
|
|
219
244
|
const error = parsedError["odata.error"];
|
|
220
|
-
message =
|
|
245
|
+
message = error.message?.value ?? message;
|
|
221
246
|
code = error.code;
|
|
222
247
|
}
|
|
223
248
|
throw new 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":"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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"]}
|
|
@@ -9,13 +9,14 @@ import * as coreClient from "@azure/core-client";
|
|
|
9
9
|
import { TableImpl, ServiceImpl } from "./operations/index.js";
|
|
10
10
|
/** @internal */
|
|
11
11
|
export class GeneratedClient extends coreClient.ServiceClient {
|
|
12
|
+
url;
|
|
13
|
+
version;
|
|
12
14
|
/**
|
|
13
15
|
* Initializes a new instance of the GeneratedClient class.
|
|
14
16
|
* @param url The URL of the service account or table that is the target of the desired operation.
|
|
15
17
|
* @param options The parameter options
|
|
16
18
|
*/
|
|
17
19
|
constructor(url, options) {
|
|
18
|
-
var _a, _b;
|
|
19
20
|
if (url === undefined) {
|
|
20
21
|
throw new Error("'url' cannot be null");
|
|
21
22
|
}
|
|
@@ -30,9 +31,14 @@ export class GeneratedClient extends coreClient.ServiceClient {
|
|
|
30
31
|
const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix
|
|
31
32
|
? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`
|
|
32
33
|
: `${packageDetails}`;
|
|
33
|
-
const optionsWithDefaults =
|
|
34
|
+
const optionsWithDefaults = {
|
|
35
|
+
...defaults,
|
|
36
|
+
...options,
|
|
37
|
+
userAgentOptions: {
|
|
34
38
|
userAgentPrefix
|
|
35
|
-
},
|
|
39
|
+
},
|
|
40
|
+
baseUri: options.endpoint ?? options.baseUri ?? "{url}"
|
|
41
|
+
};
|
|
36
42
|
super(optionsWithDefaults);
|
|
37
43
|
// Parameter assignments
|
|
38
44
|
this.url = url;
|
|
@@ -41,5 +47,7 @@ export class GeneratedClient extends coreClient.ServiceClient {
|
|
|
41
47
|
this.table = new TableImpl(this);
|
|
42
48
|
this.service = new ServiceImpl(this);
|
|
43
49
|
}
|
|
50
|
+
table;
|
|
51
|
+
service;
|
|
44
52
|
}
|
|
45
53
|
//# sourceMappingURL=generatedClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generatedClient.js","sourceRoot":"","sources":["../../../src/generated/generatedClient.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,UAAU,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAI/D,gBAAgB;AAChB,MAAM,OAAO,eAAgB,SAAQ,UAAU,CAAC,aAAa;
|
|
1
|
+
{"version":3,"file":"generatedClient.js","sourceRoot":"","sources":["../../../src/generated/generatedClient.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,UAAU,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAI/D,gBAAgB;AAChB,MAAM,OAAO,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,SAAS,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAQ;IACb,OAAO,CAAU;CAClB","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"]}
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
import * as coreClient from "@azure/core-client";
|
|
9
9
|
/** @internal */
|
|
10
10
|
export class GeneratedClientContext extends coreClient.ServiceClient {
|
|
11
|
+
url;
|
|
12
|
+
version;
|
|
11
13
|
/**
|
|
12
14
|
* Initializes a new instance of the GeneratedClientContext class.
|
|
13
15
|
* @param url The URL of the service account or table that is the target of the desired operation.
|
|
@@ -24,13 +26,18 @@ export class GeneratedClientContext extends coreClient.ServiceClient {
|
|
|
24
26
|
const defaults = {
|
|
25
27
|
requestContentType: "application/json; charset=utf-8"
|
|
26
28
|
};
|
|
27
|
-
const packageDetails = `azsdk-js-data-tables/13.3.
|
|
29
|
+
const packageDetails = `azsdk-js-data-tables/13.3.3`;
|
|
28
30
|
const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix
|
|
29
31
|
? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`
|
|
30
32
|
: `${packageDetails}`;
|
|
31
|
-
const optionsWithDefaults =
|
|
33
|
+
const optionsWithDefaults = {
|
|
34
|
+
...defaults,
|
|
35
|
+
...options,
|
|
36
|
+
userAgentOptions: {
|
|
32
37
|
userAgentPrefix
|
|
33
|
-
},
|
|
38
|
+
},
|
|
39
|
+
baseUri: options.endpoint || "{url}"
|
|
40
|
+
};
|
|
34
41
|
super(optionsWithDefaults);
|
|
35
42
|
// Parameter assignments
|
|
36
43
|
this.url = url;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generatedClientContext.js","sourceRoot":"","sources":["../../../src/generated/generatedClientContext.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,UAAU,MAAM,oBAAoB,CAAC;AAIjD,gBAAgB;AAChB,MAAM,OAAO,sBAAuB,SAAQ,UAAU,CAAC,aAAa;
|
|
1
|
+
{"version":3,"file":"generatedClientContext.js","sourceRoot":"","sources":["../../../src/generated/generatedClientContext.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,UAAU,MAAM,oBAAoB,CAAC;AAIjD,gBAAgB;AAChB,MAAM,OAAO,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","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.3`;\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"]}
|
|
@@ -507,13 +507,16 @@ export const TableResponse = {
|
|
|
507
507
|
type: {
|
|
508
508
|
name: "Composite",
|
|
509
509
|
className: "TableResponse",
|
|
510
|
-
modelProperties:
|
|
510
|
+
modelProperties: {
|
|
511
|
+
...TableResponseProperties.type.modelProperties,
|
|
512
|
+
odataMetadata: {
|
|
511
513
|
serializedName: "odata\\.metadata",
|
|
512
514
|
xmlName: "odata\\.metadata",
|
|
513
515
|
type: {
|
|
514
516
|
name: "String"
|
|
515
517
|
}
|
|
516
|
-
}
|
|
518
|
+
}
|
|
519
|
+
}
|
|
517
520
|
}
|
|
518
521
|
};
|
|
519
522
|
export const TableQueryHeaders = {
|