@progress/sitefinity-webservices-sdk 1.1.15 → 2.0.0
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/README.md +84 -51
- package/esm/chunks/chunk-2ID24RPE.mjs +179 -0
- package/esm/chunks/chunk-2ID24RPE.mjs.map +7 -0
- package/esm/chunks/chunk-AHDZ2CWQ.mjs +93 -0
- package/esm/chunks/chunk-AHDZ2CWQ.mjs.map +7 -0
- package/esm/chunks/chunk-BFLQBM7R.mjs +136 -0
- package/esm/chunks/chunk-BFLQBM7R.mjs.map +7 -0
- package/esm/chunks/chunk-CMGV26CS.mjs +66 -0
- package/esm/chunks/chunk-CMGV26CS.mjs.map +7 -0
- package/esm/chunks/chunk-DHWDJAGV.mjs +180 -0
- package/esm/chunks/chunk-DHWDJAGV.mjs.map +7 -0
- package/esm/chunks/chunk-EH4CERVO.mjs +82 -0
- package/esm/chunks/chunk-EH4CERVO.mjs.map +7 -0
- package/esm/chunks/chunk-F4CWOE7M.mjs +57 -0
- package/esm/chunks/chunk-F4CWOE7M.mjs.map +7 -0
- package/esm/chunks/chunk-FUFBYOIF.mjs +98 -0
- package/esm/chunks/chunk-FUFBYOIF.mjs.map +7 -0
- package/esm/chunks/chunk-J2B7UDVZ.mjs +132 -0
- package/esm/chunks/chunk-J2B7UDVZ.mjs.map +7 -0
- package/esm/chunks/chunk-L3IMDFA5.mjs +1 -0
- package/esm/chunks/chunk-L3IMDFA5.mjs.map +7 -0
- package/esm/chunks/chunk-NNYY2VBC.mjs +383 -0
- package/esm/chunks/chunk-NNYY2VBC.mjs.map +7 -0
- package/esm/chunks/chunk-PI55MBSL.mjs +256 -0
- package/esm/chunks/chunk-PI55MBSL.mjs.map +7 -0
- package/esm/chunks/chunk-PXPK2IV6.mjs +568 -0
- package/esm/chunks/chunk-PXPK2IV6.mjs.map +7 -0
- package/esm/chunks/chunk-QPSEKUOI.mjs +35 -0
- package/esm/chunks/chunk-QPSEKUOI.mjs.map +7 -0
- package/esm/chunks/chunk-RQAAYOY6.mjs +72 -0
- package/esm/chunks/chunk-RQAAYOY6.mjs.map +7 -0
- package/esm/chunks/chunk-TTVNTTW5.mjs +145 -0
- package/esm/chunks/chunk-TTVNTTW5.mjs.map +7 -0
- package/esm/chunks/chunk-VLDX2FH2.mjs +235 -0
- package/esm/chunks/chunk-VLDX2FH2.mjs.map +7 -0
- package/esm/chunks/chunk-VWT2RJET.mjs +102 -0
- package/esm/chunks/chunk-VWT2RJET.mjs.map +7 -0
- package/esm/chunks/chunk-W2OWM3L7.mjs +19 -0
- package/esm/chunks/chunk-W2OWM3L7.mjs.map +7 -0
- package/esm/chunks/chunk-WX5J7F5D.mjs +43 -0
- package/esm/chunks/chunk-WX5J7F5D.mjs.map +7 -0
- package/esm/chunks/chunk-YB2LMPUX.mjs +54 -0
- package/esm/chunks/chunk-YB2LMPUX.mjs.map +7 -0
- package/package.json +67 -36
- package/sitefinity-webservices-sdk.cjs +2761 -0
- package/sitefinity-webservices-sdk.cjs.map +7 -0
- package/sitefinity-webservices-sdk.d.mts +1 -0
- package/{dist/sitefinity-webservices-sdk.d.ts → sitefinity-webservices-sdk.d.ts} +6 -0
- package/sitefinity-webservices-sdk.global.d.ts +5 -0
- package/sitefinity-webservices-sdk.js +2764 -0
- package/sitefinity-webservices-sdk.js.map +7 -0
- package/sitefinity-webservices-sdk.min.js +3 -0
- package/sitefinity-webservices-sdk.mjs +124 -0
- package/sitefinity-webservices-sdk.mjs.map +7 -0
- package/src/BlobBuilder.d.ts +12 -0
- package/src/Data.d.ts +259 -0
- package/src/Expression.d.ts +37 -0
- package/src/OrderProperty.d.ts +24 -0
- package/src/Query.d.ts +104 -0
- package/src/QueryBase.d.ts +40 -0
- package/src/QueryBuilder.d.ts +29 -0
- package/src/Requests/BatchRequest.d.ts +174 -0
- package/src/Requests/ExecutableRequest.d.ts +43 -0
- package/src/Requests/Request.d.ts +225 -0
- package/src/Requests/RequestBase.d.ts +58 -0
- package/{dist/src → src}/Requests/RequestFactory.d.ts +24 -2
- package/src/Sitefinity.d.ts +141 -0
- package/src/Transport/FetchTransport.d.ts +17 -0
- package/src/Transport/HttpTransport.d.ts +69 -0
- package/src/Transport/XhrTransport.d.ts +8 -0
- package/src/WhereQuery.d.ts +88 -0
- package/src/chunk-upload/chunk-upload.sdk.d.ts +305 -0
- package/src/chunk-upload/chunked-file-upload.utilities.d.ts +58 -0
- package/{dist/src → src}/constants.d.ts +21 -0
- package/src/utils.d.ts +103 -0
- package/.editorconfig +0 -29
- package/.eslintignore +0 -4
- package/.eslintrc.js +0 -40
- package/config/helpers.ts +0 -8
- package/config/webpack.common.ts +0 -39
- package/config/webpack.dev.ts +0 -37
- package/config/webpack.prod.ts +0 -17
- package/dist/docs/.nojekyll +0 -1
- package/dist/docs/assets/highlight.css +0 -71
- package/dist/docs/assets/main.js +0 -58
- package/dist/docs/assets/search.js +0 -1
- package/dist/docs/assets/style.css +0 -1280
- package/dist/docs/classes/BlobBuilder.BlobBuilder.html +0 -137
- package/dist/docs/classes/Data.Data.html +0 -387
- package/dist/docs/classes/Expression.BinaryExpression.html +0 -184
- package/dist/docs/classes/Expression.ComplexExpression.html +0 -146
- package/dist/docs/classes/Expression.ExpressionBase.html +0 -125
- package/dist/docs/classes/OrderProperty.OrderProperty.html +0 -151
- package/dist/docs/classes/Query.Query.html +0 -353
- package/dist/docs/classes/QueryBase.QueryBase.html +0 -185
- package/dist/docs/classes/QueryBuilder.QueryBuilder.html +0 -206
- package/dist/docs/classes/Requests_BatchRequest.BatchRequest.html +0 -731
- package/dist/docs/classes/Requests_BatchRequest.Transaction.html +0 -332
- package/dist/docs/classes/Requests_ExecutableRequest.ExecutableRequest.html +0 -340
- package/dist/docs/classes/Requests_Request.CommitChunksRequest.html +0 -303
- package/dist/docs/classes/Requests_Request.CreateRelatedRequest.html +0 -310
- package/dist/docs/classes/Requests_Request.CreateRequest.html +0 -307
- package/dist/docs/classes/Requests_Request.DeleteRelatedByIdRequest.html +0 -309
- package/dist/docs/classes/Requests_Request.DeleteRelatedRequest.html +0 -302
- package/dist/docs/classes/Requests_Request.DeleteRequest.html +0 -298
- package/dist/docs/classes/Requests_Request.GetByIdRequest.html +0 -298
- package/dist/docs/classes/Requests_Request.GetRelatedByIdRequest.html +0 -309
- package/dist/docs/classes/Requests_Request.GetRelatedRequest.html +0 -302
- package/dist/docs/classes/Requests_Request.GetRequest.html +0 -295
- package/dist/docs/classes/Requests_Request.UpdateRequest.html +0 -309
- package/dist/docs/classes/Requests_Request.UploadChunkRequest.html +0 -359
- package/dist/docs/classes/Requests_Request.UploadRequest.html +0 -329
- package/dist/docs/classes/Requests_RequestBase.RequestBase.html +0 -275
- package/dist/docs/classes/Requests_RequestFactory.RequestFactory.html +0 -344
- package/dist/docs/classes/Sitefinity.Sitefinity.html +0 -188
- package/dist/docs/classes/WhereQuery.WhereQuery.html +0 -436
- package/dist/docs/classes/chunk_upload_chunk_upload_sdk.ChunkUploadSdk.html +0 -231
- package/dist/docs/classes/chunk_upload_chunked_file_upload_utilities.ChunkedFileUploadUtilities.html +0 -131
- package/dist/docs/classes/utils.utils.html +0 -303
- package/dist/docs/index.html +0 -129
- package/dist/docs/interfaces/Data.CreateRelatedRequestOptions.html +0 -155
- package/dist/docs/interfaces/Data.CreateRequestOptions.html +0 -153
- package/dist/docs/interfaces/Data.OperationsRequestOptions.html +0 -145
- package/dist/docs/interfaces/Data.PropertyRequestOptions.html +0 -149
- package/dist/docs/interfaces/Data.RequestOptionsBase.html +0 -136
- package/dist/docs/interfaces/Data.SingleRelatedItemRequestOptions.html +0 -155
- package/dist/docs/interfaces/Data.UpdateRequestOptions.html +0 -155
- package/dist/docs/interfaces/Data.UploadRequestOptions.html +0 -169
- package/dist/docs/interfaces/Requests_BatchRequest.BatchCreateRelatedRequestOptions.html +0 -161
- package/dist/docs/interfaces/Requests_BatchRequest.BatchCreateRequestOptions.html +0 -153
- package/dist/docs/interfaces/Requests_BatchRequest.BatchPropertyRequestOptions.html +0 -153
- package/dist/docs/interfaces/Requests_BatchRequest.BatchRequestOptionsBase.html +0 -145
- package/dist/docs/interfaces/Requests_BatchRequest.BatchRequestOptionsExtended.html +0 -153
- package/dist/docs/interfaces/Requests_BatchRequest.BatchSingleItemRequestOptions.html +0 -145
- package/dist/docs/interfaces/Requests_BatchRequest.BatchSingleRelatedItemRequestOptions.html +0 -161
- package/dist/docs/interfaces/Requests_BatchRequest.BatchUpdateRequestOptions.html +0 -161
- package/dist/docs/interfaces/Requests_ExecutableRequest.ResponseHandlers.html +0 -98
- package/dist/docs/interfaces/Requests_Request.CommitChunksRequestOptionsExtended.html +0 -215
- package/dist/docs/interfaces/Requests_Request.PostRequestOptionsExtended.html +0 -159
- package/dist/docs/interfaces/Requests_Request.PutRequestOptionsExtended.html +0 -161
- package/dist/docs/interfaces/Requests_Request.RelatedByIdRequestOptionsExtended.html +0 -169
- package/dist/docs/interfaces/Requests_Request.RelatedRequestOptionsExtended.html +0 -163
- package/dist/docs/interfaces/Requests_Request.UploadChunkRequestOptionsExtended.html +0 -217
- package/dist/docs/interfaces/Requests_Request.UploadRequestOptionsExtended.html +0 -180
- package/dist/docs/interfaces/Requests_RequestBase.RequestOptionsBaseExtended.html +0 -148
- package/dist/docs/interfaces/Sitefinity.SDKOptions.html +0 -128
- package/dist/docs/interfaces/Sitefinity.Token.html +0 -94
- package/dist/docs/interfaces/Sitefinity.TypeOptions.html +0 -160
- package/dist/docs/interfaces/chunk_upload_chunk_upload_sdk.ChunkUploadInfoDTO.html +0 -159
- package/dist/docs/interfaces/chunk_upload_chunk_upload_sdk.ChunkUploadResult.html +0 -111
- package/dist/docs/interfaces/chunk_upload_chunk_upload_sdk.CleanUpChunksRequestOptions.html +0 -171
- package/dist/docs/interfaces/chunk_upload_chunk_upload_sdk.CommitChunksRequestOptions.html +0 -204
- package/dist/docs/interfaces/chunk_upload_chunk_upload_sdk.GetChunkUploadInfoRequestOptions.html +0 -166
- package/dist/docs/interfaces/chunk_upload_chunk_upload_sdk.UploadChunkRequestOptions.html +0 -206
- package/dist/docs/interfaces/chunk_upload_chunked_file_upload_utilities.ChunkFileResult.html +0 -101
- package/dist/docs/interfaces/chunk_upload_chunked_file_upload_utilities.FileUploadChunk.html +0 -94
- package/dist/docs/modules/BlobBuilder.html +0 -73
- package/dist/docs/modules/Data.html +0 -92
- package/dist/docs/modules/Expression.html +0 -77
- package/dist/docs/modules/OrderProperty.html +0 -73
- package/dist/docs/modules/Query.html +0 -73
- package/dist/docs/modules/QueryBase.html +0 -73
- package/dist/docs/modules/QueryBuilder.html +0 -73
- package/dist/docs/modules/Requests_BatchRequest.html +0 -94
- package/dist/docs/modules/Requests_ExecutableRequest.html +0 -78
- package/dist/docs/modules/Requests_Request.html +0 -114
- package/dist/docs/modules/Requests_RequestBase.html +0 -78
- package/dist/docs/modules/Requests_RequestFactory.html +0 -73
- package/dist/docs/modules/Sitefinity.html +0 -82
- package/dist/docs/modules/WhereQuery.html +0 -73
- package/dist/docs/modules/chunk_upload_chunk_upload_sdk.html +0 -88
- package/dist/docs/modules/chunk_upload_chunked_file_upload_utilities.html +0 -80
- package/dist/docs/modules/constants.html +0 -83
- package/dist/docs/modules/utils.html +0 -73
- package/dist/docs/modules.html +0 -80
- package/dist/docs/variables/constants.CONTENT_TYPES.html +0 -76
- package/dist/docs/variables/constants.EXPRESSION_TYPE.html +0 -106
- package/dist/docs/variables/constants.HEADER_NAMES.html +0 -102
- package/dist/docs/variables/constants.HTTP_METHODS.html +0 -84
- package/dist/docs/variables/constants.ODATA_PARAMS.html +0 -90
- package/dist/docs/variables/constants.SF_PARAMS.html +0 -84
- package/dist/samples.html +0 -625
- package/dist/sitefinity-webservices-sdk.js +0 -3125
- package/dist/sitefinity-webservices-sdk.js.map +0 -1
- package/dist/sitefinity-webservices-sdk.min.js +0 -1
- package/dist/src/BlobBuilder.d.ts +0 -14
- package/dist/src/Data.d.ts +0 -154
- package/dist/src/Data.spec.d.ts +0 -1
- package/dist/src/Expression.d.ts +0 -19
- package/dist/src/OrderProperty.d.ts +0 -8
- package/dist/src/Query.d.ts +0 -59
- package/dist/src/QueryBase.d.ts +0 -18
- package/dist/src/QueryBuilder.d.ts +0 -13
- package/dist/src/Requests/BatchRequest.d.ts +0 -146
- package/dist/src/Requests/ExecutableRequest.d.ts +0 -22
- package/dist/src/Requests/Request.d.ts +0 -132
- package/dist/src/Requests/RequestBase.d.ts +0 -27
- package/dist/src/Requests/request.spec.d.ts +0 -1
- package/dist/src/Sitefinity.d.ts +0 -75
- package/dist/src/Sitefinity.spec.d.ts +0 -1
- package/dist/src/WhereQuery.d.ts +0 -72
- package/dist/src/chunk-upload/chunk-upload.sdk.d.ts +0 -295
- package/dist/src/chunk-upload/chunk-upload.sdk.spec.d.ts +0 -1
- package/dist/src/chunk-upload/chunked-file-upload.utilities.d.ts +0 -13
- package/dist/src/utils.d.ts +0 -16
- package/karma.conf.js +0 -29
- package/sitefinity-webservices-sdk.ts +0 -15
- package/src/BlobBuilder.ts +0 -20
- package/src/Data.spec.ts +0 -160
- package/src/Data.ts +0 -418
- package/src/Expression.ts +0 -36
- package/src/OrderProperty.ts +0 -39
- package/src/Query.ts +0 -106
- package/src/QueryBase.ts +0 -57
- package/src/QueryBuilder.ts +0 -180
- package/src/Requests/BatchRequest.ts +0 -807
- package/src/Requests/ExecutableRequest.ts +0 -117
- package/src/Requests/Request.ts +0 -327
- package/src/Requests/RequestBase.ts +0 -163
- package/src/Requests/RequestFactory.ts +0 -75
- package/src/Requests/request.spec.ts +0 -132
- package/src/Sitefinity.spec.ts +0 -483
- package/src/Sitefinity.ts +0 -125
- package/src/WhereQuery.ts +0 -145
- package/src/chunk-upload/chunk-upload.sdk.spec.ts +0 -342
- package/src/chunk-upload/chunk-upload.sdk.ts +0 -439
- package/src/chunk-upload/chunked-file-upload.utilities.ts +0 -64
- package/src/constants.ts +0 -66
- package/src/utils.ts +0 -125
- package/template.html +0 -625
- package/tsconfig.json +0 -38
|
@@ -0,0 +1,568 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ExecutableRequest
|
|
3
|
+
} from "./chunk-FUFBYOIF.mjs";
|
|
4
|
+
import {
|
|
5
|
+
BlobBuilder
|
|
6
|
+
} from "./chunk-W2OWM3L7.mjs";
|
|
7
|
+
import {
|
|
8
|
+
HEADER_NAMES,
|
|
9
|
+
HTTP_METHODS
|
|
10
|
+
} from "./chunk-RQAAYOY6.mjs";
|
|
11
|
+
import {
|
|
12
|
+
utils
|
|
13
|
+
} from "./chunk-2ID24RPE.mjs";
|
|
14
|
+
|
|
15
|
+
// src/Requests/BatchRequest.ts
|
|
16
|
+
var Transaction = class {
|
|
17
|
+
/** Creates an empty transaction using the batch URL options and request factory. */
|
|
18
|
+
constructor(urlOptions, factory) {
|
|
19
|
+
this.urlOptions = urlOptions;
|
|
20
|
+
this.factory = factory;
|
|
21
|
+
this.requests = [];
|
|
22
|
+
this.counter = 0;
|
|
23
|
+
}
|
|
24
|
+
/** Adds a file upload and returns its batch-local request ID. */
|
|
25
|
+
upload(parameters) {
|
|
26
|
+
const urlOptions = this.urlParametersClone(parameters.entitySet);
|
|
27
|
+
const options = {
|
|
28
|
+
urlOptions,
|
|
29
|
+
data: parameters.data,
|
|
30
|
+
contentType: parameters.contentType,
|
|
31
|
+
fileName: parameters.fileName,
|
|
32
|
+
key: parameters.key,
|
|
33
|
+
uploadProperties: parameters.uploadProperties
|
|
34
|
+
};
|
|
35
|
+
const request = this.factory.upload(options);
|
|
36
|
+
return this.addRequest(request);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Adds a create request and returns its batch-local request ID.
|
|
40
|
+
*
|
|
41
|
+
* @throws When `entitySet` is missing.
|
|
42
|
+
*/
|
|
43
|
+
create(parameters) {
|
|
44
|
+
if (!parameters?.entitySet)
|
|
45
|
+
throw "entitySet is required!";
|
|
46
|
+
const urlOptions = this.urlParametersClone(parameters.entitySet);
|
|
47
|
+
const options = {
|
|
48
|
+
key: parameters.key,
|
|
49
|
+
action: parameters.action,
|
|
50
|
+
urlOptions,
|
|
51
|
+
data: parameters.data
|
|
52
|
+
};
|
|
53
|
+
const request = this.factory.create(options);
|
|
54
|
+
return this.addRequest(request);
|
|
55
|
+
}
|
|
56
|
+
// TODO: Remove
|
|
57
|
+
/** Adds an operation request. Validation errors are thrown when required values are missing. */
|
|
58
|
+
operation(parameters) {
|
|
59
|
+
if (!parameters?.entitySet || parameters.key === void 0 || parameters.key === null || !parameters.data)
|
|
60
|
+
throw "parameters: entitySet, key and data are required!";
|
|
61
|
+
const urlOptions = this.urlParametersClone(parameters.entitySet);
|
|
62
|
+
const options = {
|
|
63
|
+
urlOptions,
|
|
64
|
+
key: parameters.key,
|
|
65
|
+
action: "operation",
|
|
66
|
+
data: parameters.data
|
|
67
|
+
};
|
|
68
|
+
const request = this.factory.create(options);
|
|
69
|
+
this.overrideUrlGeneration(request, parameters.key, "operation", options.urlOptions, options.query);
|
|
70
|
+
this.addRequest(request);
|
|
71
|
+
}
|
|
72
|
+
/** Adds an update request. Validation errors are thrown when required values are missing. */
|
|
73
|
+
update(parameters) {
|
|
74
|
+
if (!parameters?.entitySet || parameters.key === void 0 || parameters.key === null || !parameters.data)
|
|
75
|
+
throw "parameters: entitySet, key and data are required!";
|
|
76
|
+
const urlOptions = this.urlParametersClone(parameters.entitySet);
|
|
77
|
+
const options = {
|
|
78
|
+
urlOptions,
|
|
79
|
+
saveTemp: parameters.saveTemp,
|
|
80
|
+
key: parameters.key,
|
|
81
|
+
data: parameters.data
|
|
82
|
+
};
|
|
83
|
+
const request = this.factory.update(options);
|
|
84
|
+
this.overrideUrlGeneration(request, parameters.key, void 0, options.urlOptions, options.query);
|
|
85
|
+
this.addRequest(request);
|
|
86
|
+
}
|
|
87
|
+
/** Adds a delete request. Validation errors are thrown when required values are missing. */
|
|
88
|
+
destroy(parameters) {
|
|
89
|
+
if (!parameters?.entitySet || parameters.key === void 0 || parameters.key === null)
|
|
90
|
+
throw "parameters: entitySet and key are required!";
|
|
91
|
+
const urlOptions = this.urlParametersClone(parameters.entitySet);
|
|
92
|
+
const options = {
|
|
93
|
+
urlOptions,
|
|
94
|
+
key: parameters.key
|
|
95
|
+
};
|
|
96
|
+
const request = this.factory.destroy(options);
|
|
97
|
+
this.overrideUrlGeneration(request, parameters.key, void 0, options.urlOptions, options.query);
|
|
98
|
+
this.addRequest(request);
|
|
99
|
+
}
|
|
100
|
+
/** Adds a request that removes all links in a related property. */
|
|
101
|
+
destroyRelated(parameters) {
|
|
102
|
+
if (!parameters?.entitySet || parameters.key === void 0 || parameters.key === null || !parameters.property)
|
|
103
|
+
throw "parameters: entitySet, key and property are required!";
|
|
104
|
+
const urlOptions = this.urlParametersClone(parameters.entitySet);
|
|
105
|
+
const options = {
|
|
106
|
+
urlOptions,
|
|
107
|
+
key: parameters.key,
|
|
108
|
+
property: parameters.property
|
|
109
|
+
};
|
|
110
|
+
const request = this.factory.destroyRelated(options);
|
|
111
|
+
const propertyURL = request.property + "/$ref";
|
|
112
|
+
this.overrideUrlGeneration(request, parameters.key, propertyURL, options.urlOptions, options.query);
|
|
113
|
+
this.addRequest(request);
|
|
114
|
+
}
|
|
115
|
+
/** Adds a request that removes one related link by key. */
|
|
116
|
+
destroyRelatedById(parameters) {
|
|
117
|
+
if (!parameters?.entitySet || parameters.key === void 0 || parameters.key === null || parameters.relatedId === void 0 || parameters.relatedId === null || !parameters.property)
|
|
118
|
+
throw "parameters: entitySet, key, relatedId and property are required!";
|
|
119
|
+
const urlOptions = this.urlParametersClone(parameters.entitySet);
|
|
120
|
+
const options = {
|
|
121
|
+
urlOptions,
|
|
122
|
+
key: parameters.key,
|
|
123
|
+
relatedId: parameters.relatedId,
|
|
124
|
+
property: parameters.property
|
|
125
|
+
};
|
|
126
|
+
const request = this.factory.destroyRelatedById(options);
|
|
127
|
+
this.addRequest(request);
|
|
128
|
+
}
|
|
129
|
+
/** Adds a related-link request and returns its batch-local request ID. */
|
|
130
|
+
createRelated(parameters) {
|
|
131
|
+
if (!parameters?.entitySet || parameters.key === void 0 || parameters.key === null || parameters.link === void 0 || parameters.link === null || !parameters.property)
|
|
132
|
+
throw "parameters: entitySet, key, link and property are required!";
|
|
133
|
+
const urlOptions = this.urlParametersClone(parameters.entitySet);
|
|
134
|
+
for (let index = 0; index < this.requests.length; index += 1) {
|
|
135
|
+
if (this.requests[index].id == parameters.link) {
|
|
136
|
+
parameters.link = "$" + this.requests[index].id;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
const data = {
|
|
140
|
+
"@odata.id": parameters.link
|
|
141
|
+
};
|
|
142
|
+
const options = {
|
|
143
|
+
urlOptions,
|
|
144
|
+
key: parameters.key,
|
|
145
|
+
property: parameters.property,
|
|
146
|
+
data
|
|
147
|
+
};
|
|
148
|
+
const request = this.factory.createRelated(options);
|
|
149
|
+
const propertyURL = request.property + "/$ref";
|
|
150
|
+
this.overrideUrlGeneration(request, parameters.key, propertyURL, options.urlOptions, options.query);
|
|
151
|
+
return this.addRequest(request);
|
|
152
|
+
}
|
|
153
|
+
overrideUrlGeneration(request, key, additionalPropertyURL, urlOptions, query) {
|
|
154
|
+
for (let index = 0; index < this.requests.length; index += 1) {
|
|
155
|
+
if (this.requests[index].id == key) {
|
|
156
|
+
request.buildUrl = function() {
|
|
157
|
+
let uri = "$" + key;
|
|
158
|
+
if (additionalPropertyURL !== void 0) {
|
|
159
|
+
uri = uri + "/" + additionalPropertyURL;
|
|
160
|
+
}
|
|
161
|
+
if (urlOptions) {
|
|
162
|
+
const queryString = request.getQueryString(urlOptions, query);
|
|
163
|
+
if (queryString) {
|
|
164
|
+
uri = uri + queryString;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return uri;
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
addRequest(request) {
|
|
173
|
+
this.requests.push({ id: this.counter, request });
|
|
174
|
+
return this.counter++;
|
|
175
|
+
}
|
|
176
|
+
urlParametersClone(entitySet) {
|
|
177
|
+
const options = utils.clone(this.urlOptions);
|
|
178
|
+
options.entitySet = entitySet;
|
|
179
|
+
return options;
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
var _BatchRequest = class _BatchRequest extends ExecutableRequest {
|
|
183
|
+
/** Creates an empty batch request. */
|
|
184
|
+
constructor(requestOptions, token, sdkOptions) {
|
|
185
|
+
super(requestOptions, token, sdkOptions);
|
|
186
|
+
this.factory = requestOptions.factory;
|
|
187
|
+
this.requests = [];
|
|
188
|
+
this.counter = 0;
|
|
189
|
+
this.boundary = this.createBoundary("sf_batch_");
|
|
190
|
+
this.responseHeaderRegex = /^([^()<>@,;:\\"\/[\]?={} \t]+)\s?:\s?(.*)/;
|
|
191
|
+
this.responseStatusRegex = /^HTTP\/1\.\d (\d{3}) (.*)$/i;
|
|
192
|
+
}
|
|
193
|
+
/** Adds a collection GET request. Validation errors are thrown for missing `entitySet`. */
|
|
194
|
+
get(parameters) {
|
|
195
|
+
if (!parameters?.entitySet)
|
|
196
|
+
throw "entitySet is required!";
|
|
197
|
+
const urlOptions = this.urlParametersClone(parameters.entitySet);
|
|
198
|
+
const options = {
|
|
199
|
+
urlOptions,
|
|
200
|
+
action: parameters.action,
|
|
201
|
+
query: parameters.query,
|
|
202
|
+
fallbackProperties: parameters.fallbackProperties
|
|
203
|
+
};
|
|
204
|
+
const request = this.factory.get(options);
|
|
205
|
+
this.addRequest(request);
|
|
206
|
+
}
|
|
207
|
+
/** Adds a single-item GET request. Validation errors are thrown for missing keys. */
|
|
208
|
+
getSingle(parameters) {
|
|
209
|
+
if (!parameters || !parameters.entitySet || parameters.key === null || parameters.key === void 0)
|
|
210
|
+
throw "parameters: entitySet and key are required!";
|
|
211
|
+
const urlOptions = this.urlParametersClone(parameters.entitySet);
|
|
212
|
+
const options = {
|
|
213
|
+
urlOptions,
|
|
214
|
+
action: parameters.action,
|
|
215
|
+
key: parameters.key,
|
|
216
|
+
query: parameters.query
|
|
217
|
+
};
|
|
218
|
+
const request = this.factory.getSingle(options);
|
|
219
|
+
this.addRequest(request);
|
|
220
|
+
}
|
|
221
|
+
/** Adds a related-property GET request. */
|
|
222
|
+
getProperty(parameters) {
|
|
223
|
+
if (!parameters || !parameters.entitySet || parameters.key === null || parameters.key === void 0 || !parameters.property)
|
|
224
|
+
throw "parameters: entitySet, key and property are required!";
|
|
225
|
+
const urlOptions = this.urlParametersClone(parameters.entitySet);
|
|
226
|
+
const options = {
|
|
227
|
+
urlOptions,
|
|
228
|
+
key: parameters.key,
|
|
229
|
+
property: parameters.property
|
|
230
|
+
};
|
|
231
|
+
const request = this.factory.getProperty(options);
|
|
232
|
+
this.addRequest(request);
|
|
233
|
+
}
|
|
234
|
+
/** Adds a related-items GET request. */
|
|
235
|
+
getRelated(parameters) {
|
|
236
|
+
if (!parameters || !parameters.entitySet || parameters.key === null || parameters.key === void 0 || !parameters.property)
|
|
237
|
+
throw "parameters: entitySet, key and property are required!";
|
|
238
|
+
const urlOptions = this.urlParametersClone(parameters.entitySet);
|
|
239
|
+
const options = {
|
|
240
|
+
urlOptions,
|
|
241
|
+
key: parameters.key,
|
|
242
|
+
property: parameters.property
|
|
243
|
+
};
|
|
244
|
+
const request = this.factory.getRelated(options);
|
|
245
|
+
this.addRequest(request);
|
|
246
|
+
}
|
|
247
|
+
/** Adds a GET request for one related item by key. */
|
|
248
|
+
getRelatedById(parameters) {
|
|
249
|
+
if (!parameters?.entitySet || parameters.key === void 0 || parameters.key === null || parameters.relatedId === void 0 || parameters.relatedId === null || !parameters.property)
|
|
250
|
+
throw "parameters: entitySet, key, relatedId and property are required!";
|
|
251
|
+
const urlOptions = this.urlParametersClone(parameters.entitySet);
|
|
252
|
+
const options = {
|
|
253
|
+
urlOptions,
|
|
254
|
+
key: parameters.key,
|
|
255
|
+
relatedId: parameters.relatedId,
|
|
256
|
+
property: parameters.property
|
|
257
|
+
};
|
|
258
|
+
const request = this.factory.getRelatedById(options);
|
|
259
|
+
this.addRequest(request);
|
|
260
|
+
}
|
|
261
|
+
/** Starts an atomic transaction changeset to add to this batch. */
|
|
262
|
+
beginTransaction() {
|
|
263
|
+
const option = utils.clone(this.urlOptions);
|
|
264
|
+
const newTransaction = new Transaction(option, this.factory);
|
|
265
|
+
newTransaction.id = ++this.counter;
|
|
266
|
+
return newTransaction;
|
|
267
|
+
}
|
|
268
|
+
/** Adds a transaction changeset to the batch. Empty transactions are omitted from the body. */
|
|
269
|
+
endTransaction(transaction) {
|
|
270
|
+
this.requests.push({
|
|
271
|
+
id: transaction.id,
|
|
272
|
+
request: transaction
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
/** Builds the multipart MIME body sent to the `$batch` endpoint. */
|
|
276
|
+
getBody() {
|
|
277
|
+
return this.buildRequestBody();
|
|
278
|
+
}
|
|
279
|
+
/** Returns `POST`, the HTTP method used for the `$batch` endpoint. */
|
|
280
|
+
getMethod() {
|
|
281
|
+
return HTTP_METHODS.post;
|
|
282
|
+
}
|
|
283
|
+
/** Returns headers with the generated multipart MIME content type. */
|
|
284
|
+
getHeaders() {
|
|
285
|
+
const headers = this.urlOptions.additionalHeaders ?? {};
|
|
286
|
+
const contentType = "multipart/mixed; boundary=" + this.boundary;
|
|
287
|
+
headers[HEADER_NAMES.contentType] = contentType;
|
|
288
|
+
return headers;
|
|
289
|
+
}
|
|
290
|
+
/** Builds the `$batch` URL and appends any configured query parameters. */
|
|
291
|
+
buildUrl() {
|
|
292
|
+
let url = this.urlOptions.baseUrl + "$batch";
|
|
293
|
+
const queryString = this.getQueryString(this.urlOptions, this.query);
|
|
294
|
+
if (queryString) {
|
|
295
|
+
url += queryString;
|
|
296
|
+
}
|
|
297
|
+
return url;
|
|
298
|
+
}
|
|
299
|
+
parseResponse(response) {
|
|
300
|
+
const context = {
|
|
301
|
+
position: 0,
|
|
302
|
+
boundaries: []
|
|
303
|
+
};
|
|
304
|
+
const partContentType = this.contentType(response.headers["content-type"]);
|
|
305
|
+
if (partContentType && partContentType.mediaType == "multipart/mixed") {
|
|
306
|
+
context.boundaries.push(partContentType.properties.boundary);
|
|
307
|
+
}
|
|
308
|
+
const batchResponse = this.parseBatchResponse(response.body, context);
|
|
309
|
+
const responseParsed = [];
|
|
310
|
+
for (let i = 0; i < batchResponse.length; i++) {
|
|
311
|
+
try {
|
|
312
|
+
const currentRequest = this.requests[i];
|
|
313
|
+
let finalResult = null;
|
|
314
|
+
let key = null;
|
|
315
|
+
const singleResponse = batchResponse[i];
|
|
316
|
+
const changesets = singleResponse.__changeResponses;
|
|
317
|
+
if (changesets) {
|
|
318
|
+
finalResult = [];
|
|
319
|
+
const currentRequests = currentRequest ? currentRequest.request.requests : [];
|
|
320
|
+
for (let j = 0; j < changesets.length; j++) {
|
|
321
|
+
key = currentRequests[j] ? currentRequests[j].request.key : null;
|
|
322
|
+
const changeset = changesets[j];
|
|
323
|
+
const response2 = changeset.response;
|
|
324
|
+
const responseResult = this.getResponseResult(response2, key);
|
|
325
|
+
finalResult.push(responseResult);
|
|
326
|
+
}
|
|
327
|
+
} else {
|
|
328
|
+
key = currentRequest ? currentRequest.request.key : null;
|
|
329
|
+
const response2 = singleResponse.response;
|
|
330
|
+
finalResult = this.getResponseResult(response2, key);
|
|
331
|
+
}
|
|
332
|
+
const statusCodeCheck = function(r) {
|
|
333
|
+
return r.statusCode >= 400;
|
|
334
|
+
};
|
|
335
|
+
const responseCheck = function(r) {
|
|
336
|
+
let success = true;
|
|
337
|
+
if (r.data && r.data.hasOwnProperty("Success")) {
|
|
338
|
+
success = r.data.Success;
|
|
339
|
+
}
|
|
340
|
+
return success;
|
|
341
|
+
};
|
|
342
|
+
const isSuccessful = Array.isArray(finalResult) ? finalResult.filter(statusCodeCheck).length === 0 && finalResult.filter(responseCheck).length === finalResult.length : !statusCodeCheck(finalResult) && responseCheck(finalResult);
|
|
343
|
+
responseParsed.push({ isSuccessful, response: finalResult });
|
|
344
|
+
} catch (e) {
|
|
345
|
+
continue;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
const isSuccessfulCheck = (r) => {
|
|
349
|
+
return !r.isSuccessful;
|
|
350
|
+
};
|
|
351
|
+
const batchIsSuccessful = responseParsed.filter(isSuccessfulCheck).length === 0;
|
|
352
|
+
return { data: responseParsed, isSuccessful: batchIsSuccessful };
|
|
353
|
+
}
|
|
354
|
+
parseBatchResponse(text, context) {
|
|
355
|
+
const delimiter = "--" + this.currentBoundary(context);
|
|
356
|
+
this.readTo(text, delimiter, context);
|
|
357
|
+
this.readLine(text, context);
|
|
358
|
+
const responses = [];
|
|
359
|
+
let partEnd;
|
|
360
|
+
while (partEnd !== "--" && context.position < text.length) {
|
|
361
|
+
const partHeaders = this.readHeaders(text, context);
|
|
362
|
+
const partContentType = this.contentType(partHeaders["content-type"]);
|
|
363
|
+
let changeResponses;
|
|
364
|
+
if (partContentType && partContentType.mediaType === "multipart/mixed") {
|
|
365
|
+
context.boundaries.push(partContentType.properties.boundary);
|
|
366
|
+
try {
|
|
367
|
+
changeResponses = this.parseBatchResponse(text, context);
|
|
368
|
+
} catch (e) {
|
|
369
|
+
e.response = this.readResponse(text, context, delimiter);
|
|
370
|
+
changeResponses = [e];
|
|
371
|
+
}
|
|
372
|
+
responses.push({ __changeResponses: changeResponses });
|
|
373
|
+
context.boundaries.pop();
|
|
374
|
+
this.readTo(text, "--" + this.currentBoundary(context), context);
|
|
375
|
+
} else {
|
|
376
|
+
if (!partContentType || partContentType.mediaType !== "application/http") {
|
|
377
|
+
throw { message: "invalid MIME part type " };
|
|
378
|
+
}
|
|
379
|
+
this.readLine(text, context);
|
|
380
|
+
let response = this.readResponse(text, context, delimiter);
|
|
381
|
+
try {
|
|
382
|
+
if (response.statusCode >= 200 && response.statusCode <= 299) {
|
|
383
|
+
response = { message: response.statusCode + " Http request is OK", response };
|
|
384
|
+
} else {
|
|
385
|
+
response = { message: "HTTP request failed", response };
|
|
386
|
+
}
|
|
387
|
+
} catch (e) {
|
|
388
|
+
response = e;
|
|
389
|
+
}
|
|
390
|
+
responses.push(response);
|
|
391
|
+
}
|
|
392
|
+
partEnd = text.substr(context.position, 2);
|
|
393
|
+
this.readLine(text, context);
|
|
394
|
+
}
|
|
395
|
+
return responses;
|
|
396
|
+
}
|
|
397
|
+
getResponseResult(response, key) {
|
|
398
|
+
const responseBody = response.body;
|
|
399
|
+
const data = utils.parseStringToJson(responseBody);
|
|
400
|
+
return {
|
|
401
|
+
key,
|
|
402
|
+
data,
|
|
403
|
+
statusCode: response.statusCode,
|
|
404
|
+
headers: response.headers
|
|
405
|
+
};
|
|
406
|
+
}
|
|
407
|
+
currentBoundary(context) {
|
|
408
|
+
const boundaries = context.boundaries;
|
|
409
|
+
return boundaries[boundaries.length - 1];
|
|
410
|
+
}
|
|
411
|
+
contentType(str) {
|
|
412
|
+
if (!str) {
|
|
413
|
+
return null;
|
|
414
|
+
}
|
|
415
|
+
const contentTypeParts = str.split(";");
|
|
416
|
+
const properties = {};
|
|
417
|
+
let i, len;
|
|
418
|
+
for (i = 1, len = contentTypeParts.length; i < len; i++) {
|
|
419
|
+
const contentTypeParams = contentTypeParts[i].split("=");
|
|
420
|
+
properties[contentTypeParams[0].replace(/^\s+|\s+$/g, "")] = contentTypeParams[1];
|
|
421
|
+
}
|
|
422
|
+
return { mediaType: contentTypeParts[0].replace(/^\s+|\s+$/g, ""), properties };
|
|
423
|
+
}
|
|
424
|
+
readTo(text, str, context) {
|
|
425
|
+
const start = context.position || 0;
|
|
426
|
+
let end = text.length;
|
|
427
|
+
if (str) {
|
|
428
|
+
end = text.indexOf(str, start);
|
|
429
|
+
if (end === -1) {
|
|
430
|
+
return null;
|
|
431
|
+
}
|
|
432
|
+
context.position = end + str.length;
|
|
433
|
+
} else {
|
|
434
|
+
context.position = end;
|
|
435
|
+
}
|
|
436
|
+
return text.substring(start, end);
|
|
437
|
+
}
|
|
438
|
+
readLine(text, context) {
|
|
439
|
+
return this.readTo(text, _BatchRequest.constants.newLine, context);
|
|
440
|
+
}
|
|
441
|
+
readHeaders(text, context) {
|
|
442
|
+
const headers = {};
|
|
443
|
+
let parts;
|
|
444
|
+
let line;
|
|
445
|
+
let pos;
|
|
446
|
+
do {
|
|
447
|
+
pos = context.position;
|
|
448
|
+
line = this.readLine(text, context);
|
|
449
|
+
parts = this.responseHeaderRegex.exec(line);
|
|
450
|
+
if (parts !== null) {
|
|
451
|
+
headers[parts[1].toLowerCase()] = parts[2];
|
|
452
|
+
} else {
|
|
453
|
+
context.position = pos;
|
|
454
|
+
}
|
|
455
|
+
} while (line && parts);
|
|
456
|
+
return headers;
|
|
457
|
+
}
|
|
458
|
+
readResponse(text, context, delimiter) {
|
|
459
|
+
const pos = context.position;
|
|
460
|
+
const match = this.responseStatusRegex.exec(this.readLine(text, context));
|
|
461
|
+
let statusCode;
|
|
462
|
+
let statusText;
|
|
463
|
+
let headers;
|
|
464
|
+
if (match) {
|
|
465
|
+
statusCode = match[1];
|
|
466
|
+
statusText = match[2];
|
|
467
|
+
headers = this.readHeaders(text, context);
|
|
468
|
+
this.readLine(text, context);
|
|
469
|
+
} else {
|
|
470
|
+
context.position = pos;
|
|
471
|
+
}
|
|
472
|
+
return {
|
|
473
|
+
statusCode,
|
|
474
|
+
statusText,
|
|
475
|
+
headers,
|
|
476
|
+
body: this.readTo(text, _BatchRequest.constants.newLine + delimiter, context)
|
|
477
|
+
};
|
|
478
|
+
}
|
|
479
|
+
buildRequestBody() {
|
|
480
|
+
const builder = new BlobBuilder();
|
|
481
|
+
builder.append("");
|
|
482
|
+
for (let index = 0; index < this.requests.length; index += 1) {
|
|
483
|
+
const request = this.requests[index].request;
|
|
484
|
+
if (request instanceof Transaction && request.requests.length === 0) {
|
|
485
|
+
continue;
|
|
486
|
+
}
|
|
487
|
+
if (index != 0)
|
|
488
|
+
builder.append(_BatchRequest.constants.newLine + _BatchRequest.constants.newLine);
|
|
489
|
+
builder.append("--" + this.boundary);
|
|
490
|
+
if (request instanceof Transaction) {
|
|
491
|
+
builder.append(this.buildTransaction(request));
|
|
492
|
+
} else {
|
|
493
|
+
builder.append(this.buildRequest(request));
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
builder.append(this.createDelimeter(this.boundary, true));
|
|
497
|
+
return builder.build();
|
|
498
|
+
}
|
|
499
|
+
buildRequest(request) {
|
|
500
|
+
const builder = new BlobBuilder();
|
|
501
|
+
builder.append(_BatchRequest.constants.newLine + "Content-Type: application/http" + _BatchRequest.constants.newLine + "Content-Transfer-Encoding: binary" + _BatchRequest.constants.newLine + _BatchRequest.constants.newLine + request.getMethod() + " " + request.buildUrl() + " HTTP/1.1");
|
|
502
|
+
return builder.build();
|
|
503
|
+
}
|
|
504
|
+
buildTransaction(transaction) {
|
|
505
|
+
if (transaction.requests.length == 0)
|
|
506
|
+
return;
|
|
507
|
+
const builder = new BlobBuilder();
|
|
508
|
+
builder.append(_BatchRequest.constants.newLine);
|
|
509
|
+
const changeset = this.createBoundary("sf_changeset_");
|
|
510
|
+
builder.append("Content-Type: multipart/mixed; boundary=" + changeset);
|
|
511
|
+
const changesetRequests = transaction.requests;
|
|
512
|
+
for (let index = 0; index < changesetRequests.length; index += 1) {
|
|
513
|
+
const currentRequest = changesetRequests[index].request;
|
|
514
|
+
const shouldAddSingleNewLine = index != 0 && utils.isBlob(changesetRequests[index - 1].request.getBody());
|
|
515
|
+
builder.append(this.createDelimeter(changeset, false, shouldAddSingleNewLine) + _BatchRequest.constants.newLine + "Content-Type: application/http" + _BatchRequest.constants.newLine + "Content-Transfer-Encoding: binary" + _BatchRequest.constants.newLine + "Content-ID: " + changesetRequests[index].id);
|
|
516
|
+
const requestUrl = currentRequest.buildUrl();
|
|
517
|
+
builder.append(_BatchRequest.constants.newLine + _BatchRequest.constants.newLine + currentRequest.getMethod() + " " + requestUrl + " HTTP/1.1");
|
|
518
|
+
const headers = currentRequest.getHeaders();
|
|
519
|
+
const headerNames = Object.keys(headers);
|
|
520
|
+
for (let i = 0; i < headerNames.length; i++) {
|
|
521
|
+
const headerName = headerNames[i];
|
|
522
|
+
builder.append(_BatchRequest.constants.newLine + headerName + ": " + headers[headerName]);
|
|
523
|
+
}
|
|
524
|
+
const body = utils.serializeToJSON(currentRequest.getBody());
|
|
525
|
+
if (body) {
|
|
526
|
+
builder.append(_BatchRequest.constants.newLine + _BatchRequest.constants.newLine);
|
|
527
|
+
builder.append(body);
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
builder.append(this.createDelimeter(changeset, true));
|
|
531
|
+
return builder.build();
|
|
532
|
+
}
|
|
533
|
+
createDelimeter(boundary, close, shouldAddSingleNewLine = false) {
|
|
534
|
+
let result = _BatchRequest.constants.newLine;
|
|
535
|
+
if (!shouldAddSingleNewLine) {
|
|
536
|
+
result += _BatchRequest.constants.newLine;
|
|
537
|
+
}
|
|
538
|
+
result += "--" + boundary;
|
|
539
|
+
if (close) {
|
|
540
|
+
result += "--";
|
|
541
|
+
result += _BatchRequest.constants.newLine;
|
|
542
|
+
}
|
|
543
|
+
return result;
|
|
544
|
+
}
|
|
545
|
+
createBoundary(prefix) {
|
|
546
|
+
return prefix + utils.hex16() + "-" + utils.hex16() + "-" + utils.hex16();
|
|
547
|
+
}
|
|
548
|
+
addRequest(request) {
|
|
549
|
+
this.requests.push({ id: this.counter, request });
|
|
550
|
+
return this.counter++;
|
|
551
|
+
}
|
|
552
|
+
urlParametersClone(entitySet) {
|
|
553
|
+
const options = utils.clone(this.urlOptions);
|
|
554
|
+
options.entitySet = entitySet;
|
|
555
|
+
return options;
|
|
556
|
+
}
|
|
557
|
+
};
|
|
558
|
+
/** Protocol constants used when constructing multipart MIME content. */
|
|
559
|
+
_BatchRequest.constants = {
|
|
560
|
+
newLine: "\r\n"
|
|
561
|
+
};
|
|
562
|
+
var BatchRequest = _BatchRequest;
|
|
563
|
+
|
|
564
|
+
export {
|
|
565
|
+
Transaction,
|
|
566
|
+
BatchRequest
|
|
567
|
+
};
|
|
568
|
+
//# sourceMappingURL=chunk-PXPK2IV6.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/Requests/BatchRequest.ts"],
|
|
4
|
+
"sourcesContent": ["\uFEFFimport { RequestFactory } from \"./RequestFactory\";\nimport { BlobBuilder } from \"../BlobBuilder\";\nimport { utils } from \"../utils\";\nimport { HEADER_NAMES, HTTP_METHODS } from \"../constants\";\nimport { ExecutableRequest } from \"./ExecutableRequest\";\nimport { AuthorizationToken, SDKOptions, TypeOptions } from \"../Sitefinity\";\nimport { RequestBase, RequestOptionsBaseExtended } from \"./RequestBase\";\nimport { CreateRelatedRequestOptions, RequestOptionsBase, PropertyRequestOptions, SingleRelatedItemRequestOptions, CreateRequestOptions, UpdateRequestOptions } from \"../Data\";\nimport { PostRequestOptionsExtended, PutRequestOptionsExtended, RelatedByIdRequestOptionsExtended, RelatedRequestOptionsExtended, UploadRequestOptionsExtended } from \"./Request\";\nimport { Query } from \"../Query\";\nimport { HttpTransportResponse } from \"../Transport/HttpTransport\";\n\n/**\n * Groups data-modifying requests into one atomic OData changeset.\n *\n * This is an advanced API. Add requests to a transaction, pass it to `BatchRequest.endTransaction`,\n * and execute the batch. Request IDs become MIME `Content-ID` values and can be used for links.\n */\nexport class Transaction {\n /** Batch-local transaction identifier and MIME content ID. */\n id: number;\n /** Next request ID allocated by this transaction. */\n counter: number;\n /** Requests currently included in the transaction. */\n requests: TransactionRequest[];\n private urlOptions: TypeOptions;\n private factory: RequestFactory;\n\n /** Creates an empty transaction using the batch URL options and request factory. */\n constructor(urlOptions: TypeOptions, factory: RequestFactory) {\n this.urlOptions = urlOptions;\n this.factory = factory;\n this.requests = [];\n this.counter = 0;\n }\n\n /** Adds a file upload and returns its batch-local request ID. */\n upload(parameters: any): number {\n const urlOptions = this.urlParametersClone(parameters.entitySet);\n\n const options: UploadRequestOptionsExtended = {\n urlOptions: urlOptions,\n data: parameters.data,\n contentType: parameters.contentType,\n fileName: parameters.fileName,\n key: parameters.key,\n uploadProperties: parameters.uploadProperties\n };\n\n const request = this.factory.upload(options);\n\n return this.addRequest(request);\n }\n\n /**\n * Adds a create request and returns its batch-local request ID.\n *\n * @throws When `entitySet` is missing.\n */\n create(parameters: BatchCreateRequestOptions) {\n if (!parameters?.entitySet)\n throw \"entitySet is required!\";\n\n const urlOptions = this.urlParametersClone(parameters.entitySet);\n\n const options: PostRequestOptionsExtended = {\n key: parameters.key,\n action: parameters.action,\n urlOptions: urlOptions,\n data: parameters.data\n };\n\n const request = this.factory.create(options);\n\n return this.addRequest(request);\n }\n\n // TODO: Remove\n /** Adds an operation request. Validation errors are thrown when required values are missing. */\n operation(parameters: BatchCreateRequestOptions) {\n if (!parameters?.entitySet || parameters.key === undefined || parameters.key === null || !parameters.data)\n throw \"parameters: entitySet, key and data are required!\";\n\n const urlOptions = this.urlParametersClone(parameters.entitySet);\n\n const options: PostRequestOptionsExtended = {\n urlOptions: urlOptions,\n key: parameters.key,\n action: \"operation\",\n data: parameters.data\n };\n\n const request = this.factory.create(options);\n\n this.overrideUrlGeneration(request, parameters.key, \"operation\", options.urlOptions, options.query);\n this.addRequest(request);\n }\n\n /** Adds an update request. Validation errors are thrown when required values are missing. */\n update(parameters: BatchUpdateRequestOptions) {\n if (!parameters?.entitySet || parameters.key === undefined || parameters.key === null || !parameters.data)\n throw \"parameters: entitySet, key and data are required!\";\n\n const urlOptions = this.urlParametersClone(parameters.entitySet);\n\n const options: PutRequestOptionsExtended = {\n urlOptions: urlOptions,\n saveTemp: parameters.saveTemp,\n key: parameters.key,\n data: parameters.data\n };\n\n const request = this.factory.update(options);\n\n this.overrideUrlGeneration(request, parameters.key, undefined, options.urlOptions, options.query);\n this.addRequest(request);\n }\n\n /** Adds a delete request. Validation errors are thrown when required values are missing. */\n destroy(parameters: BatchSingleItemRequestOptions) {\n if (!parameters?.entitySet || parameters.key === undefined || parameters.key === null)\n throw \"parameters: entitySet and key are required!\";\n\n const urlOptions = this.urlParametersClone(parameters.entitySet);\n\n const options: RequestOptionsBaseExtended = {\n urlOptions: urlOptions,\n key: parameters.key\n };\n\n const request = this.factory.destroy(options);\n\n this.overrideUrlGeneration(request, parameters.key, undefined, options.urlOptions, options.query);\n\n this.addRequest(request);\n }\n\n /** Adds a request that removes all links in a related property. */\n destroyRelated(parameters: BatchPropertyRequestOptions) {\n if (!parameters?.entitySet || parameters.key === undefined || parameters.key === null || !parameters.property)\n throw \"parameters: entitySet, key and property are required!\";\n\n const urlOptions = this.urlParametersClone(parameters.entitySet);\n\n const options: RelatedRequestOptionsExtended = {\n urlOptions: urlOptions,\n key: parameters.key,\n property: parameters.property\n };\n\n const request = this.factory.destroyRelated(options);\n\n const propertyURL = (request as any).property + \"/$ref\";\n this.overrideUrlGeneration(request, parameters.key, propertyURL, options.urlOptions, options.query);\n\n this.addRequest(request);\n }\n\n /** Adds a request that removes one related link by key. */\n destroyRelatedById(parameters: BatchSingleRelatedItemRequestOptions) {\n if (!parameters?.entitySet || parameters.key === undefined || parameters.key === null ||\n parameters.relatedId === undefined || parameters.relatedId === null || !parameters.property)\n throw \"parameters: entitySet, key, relatedId and property are required!\";\n\n const urlOptions = this.urlParametersClone(parameters.entitySet);\n\n const options: RelatedByIdRequestOptionsExtended = {\n urlOptions: urlOptions,\n key: parameters.key,\n relatedId: parameters.relatedId,\n property: parameters.property\n };\n\n const request = this.factory.destroyRelatedById(options);\n\n this.addRequest(request);\n }\n\n /** Adds a related-link request and returns its batch-local request ID. */\n createRelated(parameters: BatchCreateRelatedRequestOptions) {\n if (!parameters?.entitySet || parameters.key === undefined || parameters.key === null ||\n parameters.link === undefined || parameters.link === null || !parameters.property)\n throw \"parameters: entitySet, key, link and property are required!\";\n\n // TODO: rethink about the urls\n const urlOptions = this.urlParametersClone(parameters.entitySet);\n\n for (let index = 0; index < this.requests.length; index += 1) {\n if (this.requests[index].id == parameters.link) {\n parameters.link = \"$\" + this.requests[index].id;\n }\n }\n\n const data = {\n \"@odata.id\": parameters.link\n };\n\n const options: RelatedRequestOptionsExtended = {\n urlOptions: urlOptions,\n key: parameters.key,\n property: parameters.property,\n data: data\n };\n\n const request = this.factory.createRelated(options);\n const propertyURL = (request as any).property + \"/$ref\";\n this.overrideUrlGeneration(request, parameters.key, propertyURL, options.urlOptions, options.query);\n\n return this.addRequest(request);\n }\n\n private overrideUrlGeneration(request: RequestBase, key: number | string, additionalPropertyURL: string, urlOptions?: TypeOptions, query?: Query) {\n // TODO: match requests with Content-ID's!\n // Content-ID's are the same as id's in requests.\n for (let index = 0; index < this.requests.length; index += 1) {\n if (this.requests[index].id == key) {\n request.buildUrl = function () {\n let uri = \"$\" + key;\n if (additionalPropertyURL !== undefined) {\n uri = uri + \"/\" + additionalPropertyURL;\n }\n\n if (urlOptions) {\n const queryString = request.getQueryString(urlOptions, query);\n if (queryString) {\n uri = uri + queryString;\n }\n }\n\n return uri;\n };\n }\n }\n }\n\n private addRequest(request: RequestBase) {\n this.requests.push({ id: this.counter, request: request });\n return this.counter++;\n }\n\n private urlParametersClone(entitySet: string) {\n const options = utils.clone(this.urlOptions);\n options.entitySet = entitySet;\n\n return options;\n }\n}\n\n/**\n * Groups requests into one multipart/mixed `$batch` request.\n *\n * This is an advanced API. Add operations, optionally group writes in a transaction, then call\n * `execute()`. The success callback receives parsed results with status, headers, data, and keys.\n */\nexport class BatchRequest extends ExecutableRequest {\n /** Next batch-local request or transaction ID. */\n counter: number;\n /** Requests and transactions included in this batch. */\n requests: BatchInnerRequest[];\n private factory: RequestFactory;\n private boundary: string;\n private responseHeaderRegex: RegExp;\n private responseStatusRegex: RegExp;\n\n\n /** Protocol constants used when constructing multipart MIME content. */\n public static constants = {\n newLine: \"\\r\\n\"\n };\n\n /** Creates an empty batch request. */\n constructor(requestOptions: BatchRequestOptionsExtended, token: AuthorizationToken, sdkOptions: SDKOptions) {\n super(requestOptions, token, sdkOptions);\n this.factory = requestOptions.factory;\n this.requests = [];\n this.counter = 0;\n this.boundary = this.createBoundary(\"sf_batch_\");\n this.responseHeaderRegex = /^([^()<>@,;:\\\\\"\\/[\\]?={} \\t]+)\\s?:\\s?(.*)/;\n this.responseStatusRegex = /^HTTP\\/1\\.\\d (\\d{3}) (.*)$/i;\n }\n\n /** Adds a collection GET request. Validation errors are thrown for missing `entitySet`. */\n get(parameters: BatchRequestOptionsBase) {\n if (!parameters?.entitySet)\n throw \"entitySet is required!\";\n\n const urlOptions = this.urlParametersClone(parameters.entitySet);\n\n const options: RequestOptionsBaseExtended = {\n urlOptions: urlOptions,\n action: parameters.action,\n query: parameters.query,\n fallbackProperties: parameters.fallbackProperties\n };\n\n const request = this.factory.get(options);\n\n this.addRequest(request);\n }\n\n /** Adds a single-item GET request. Validation errors are thrown for missing keys. */\n getSingle(parameters: BatchSingleItemRequestOptions) {\n if (!parameters || !parameters.entitySet || parameters.key === null || parameters.key === undefined)\n throw \"parameters: entitySet and key are required!\";\n\n const urlOptions = this.urlParametersClone(parameters.entitySet);\n\n const options: RequestOptionsBaseExtended = {\n urlOptions: urlOptions,\n action: parameters.action,\n key: parameters.key,\n query: parameters.query\n };\n\n const request = this.factory.getSingle(options);\n\n this.addRequest(request);\n }\n\n /** Adds a related-property GET request. */\n getProperty(parameters: BatchPropertyRequestOptions) {\n if (!parameters || !parameters.entitySet || parameters.key === null || parameters.key === undefined || !parameters.property)\n throw \"parameters: entitySet, key and property are required!\";\n\n const urlOptions = this.urlParametersClone(parameters.entitySet);\n\n const options: RelatedRequestOptionsExtended = {\n urlOptions: urlOptions,\n key: parameters.key,\n property: parameters.property\n };\n\n const request = this.factory.getProperty(options);\n\n this.addRequest(request);\n }\n\n /** Adds a related-items GET request. */\n getRelated(parameters: BatchPropertyRequestOptions) {\n if (!parameters || !parameters.entitySet || parameters.key === null || parameters.key === undefined || !parameters.property)\n throw \"parameters: entitySet, key and property are required!\";\n\n const urlOptions = this.urlParametersClone(parameters.entitySet);\n\n const options: RelatedRequestOptionsExtended = {\n urlOptions: urlOptions,\n key: parameters.key,\n property: parameters.property\n };\n\n const request = this.factory.getRelated(options);\n\n this.addRequest(request);\n }\n\n /** Adds a GET request for one related item by key. */\n getRelatedById(parameters: BatchSingleRelatedItemRequestOptions) {\n if (!parameters?.entitySet || parameters.key === undefined || parameters.key === null ||\n parameters.relatedId === undefined || parameters.relatedId === null || !parameters.property)\n throw \"parameters: entitySet, key, relatedId and property are required!\";\n\n const urlOptions = this.urlParametersClone(parameters.entitySet);\n\n const options: RelatedByIdRequestOptionsExtended = {\n urlOptions: urlOptions,\n key: parameters.key,\n relatedId: parameters.relatedId,\n property: parameters.property\n };\n\n const request = this.factory.getRelatedById(options);\n\n this.addRequest(request);\n }\n\n /** Starts an atomic transaction changeset to add to this batch. */\n beginTransaction(): Transaction {\n const option = utils.clone(this.urlOptions);\n const newTransaction = new Transaction(option, this.factory);\n newTransaction.id = ++this.counter;\n return newTransaction;\n }\n\n /** Adds a transaction changeset to the batch. Empty transactions are omitted from the body. */\n endTransaction(transaction: Transaction) {\n this.requests.push({\n id: transaction.id,\n request: transaction\n });\n }\n\n /** Builds the multipart MIME body sent to the `$batch` endpoint. */\n getBody(): object {\n return this.buildRequestBody();\n }\n\n /** Returns `POST`, the HTTP method used for the `$batch` endpoint. */\n getMethod(): string {\n return HTTP_METHODS.post;\n }\n\n /** Returns headers with the generated multipart MIME content type. */\n getHeaders(): { [key: string]: string } {\n const headers = this.urlOptions.additionalHeaders ?? {};\n const contentType = \"multipart/mixed; boundary=\" + this.boundary;\n headers[HEADER_NAMES.contentType] = contentType;\n\n return headers;\n }\n\n /** Builds the `$batch` URL and appends any configured query parameters. */\n buildUrl(): string {\n let url = this.urlOptions.baseUrl + \"$batch\";\n const queryString = this.getQueryString(this.urlOptions, this.query);\n\n if (queryString) {\n url += queryString;\n }\n\n return url;\n }\n\n protected parseResponse(response: HttpTransportResponse): any {\n const context = {\n position: 0,\n boundaries: []\n };\n\n const partContentType = this.contentType(response.headers[\"content-type\"]);\n if (partContentType && partContentType.mediaType == \"multipart/mixed\") {\n context.boundaries.push((partContentType.properties as any).boundary);\n }\n\n const batchResponse = this.parseBatchResponse(response.body, context);\n const responseParsed = [];\n for (let i = 0; i < batchResponse.length; i++) {\n try {\n const currentRequest = this.requests[i];\n let finalResult = null;\n let key = null;\n\n const singleResponse = batchResponse[i];\n const changesets = singleResponse.__changeResponses;\n if (changesets) {\n finalResult = [];\n const currentRequests = currentRequest ? (currentRequest.request as Transaction).requests : [];\n\n for (let j = 0; j < changesets.length; j++) {\n key = currentRequests[j] ? currentRequests[j].request.key : null;\n const changeset = changesets[j];\n const response = changeset.response;\n const responseResult = this.getResponseResult(response, key);\n finalResult.push(responseResult);\n }\n } else {\n key = currentRequest ? (currentRequest.request as any).key : null;\n const response = singleResponse.response;\n finalResult = this.getResponseResult(response, key);\n }\n\n const statusCodeCheck = function (r) {\n return r.statusCode >= 400;\n };\n\n const responseCheck = function (r) {\n let success = true;\n if (r.data && r.data.hasOwnProperty(\"Success\")) {\n success = r.data.Success;\n }\n\n return success;\n };\n\n const isSuccessful = Array.isArray(finalResult) ?\n finalResult.filter(statusCodeCheck).length === 0 && finalResult.filter(responseCheck).length === finalResult.length :\n !statusCodeCheck(finalResult) && responseCheck(finalResult);\n\n responseParsed.push({ isSuccessful: isSuccessful, response: finalResult });\n }\n catch (e) {\n // TODO: why continue ?\n continue;\n }\n }\n\n const isSuccessfulCheck = (r) => {\n return !r.isSuccessful;\n };\n\n const batchIsSuccessful = responseParsed.filter(isSuccessfulCheck).length === 0;\n return { data: responseParsed, isSuccessful: batchIsSuccessful };\n }\n\n private parseBatchResponse(text, context) {\n // get boundary from response\n const delimiter = \"--\" + this.currentBoundary(context);\n this.readTo(text, delimiter, context);\n this.readLine(text, context);\n\n const responses = [];\n let partEnd;\n while (partEnd !== \"--\" && context.position < text.length) {\n const partHeaders = this.readHeaders(text, context);\n const partContentType = this.contentType(partHeaders[\"content-type\"]);\n let changeResponses;\n if (partContentType && partContentType.mediaType === \"multipart/mixed\") {\n context.boundaries.push((partContentType.properties as any).boundary);\n\n try {\n changeResponses = this.parseBatchResponse(text, context);\n } catch (e) {\n e.response = this.readResponse(text, context, delimiter);\n changeResponses = [e];\n }\n responses.push({ __changeResponses: changeResponses });\n context.boundaries.pop();\n this.readTo(text, \"--\" + this.currentBoundary(context), context);\n } else {\n if (!partContentType || partContentType.mediaType !== \"application/http\") {\n throw { message: \"invalid MIME part type \" };\n }\n // Skip empty line\n this.readLine(text, context);\n\n // Read the response\n let response: any = this.readResponse(text, context, delimiter);\n\n try {\n if (response.statusCode >= 200 && response.statusCode <= 299) {\n response = { message: response.statusCode + \" Http request is OK\", response: response };\n } else {\n // Keep track of failed responses and continue processing the batch.\n response = { message: \"HTTP request failed\", response: response };\n }\n } catch (e) {\n response = e;\n }\n\n responses.push(response);\n }\n\n partEnd = text.substr(context.position, 2);\n\n // Ignore the incoming line.\n this.readLine(text, context);\n }\n\n return responses;\n }\n\n private getResponseResult(response, key) {\n const responseBody = response.body;\n const data = utils.parseStringToJson(responseBody);\n\n return {\n key: key,\n data: data,\n statusCode: response.statusCode,\n headers: response.headers\n };\n }\n\n private currentBoundary(context) {\n const boundaries = context.boundaries;\n return boundaries[boundaries.length - 1];\n }\n\n private contentType(str) {\n\n if (!str) {\n return null;\n }\n\n const contentTypeParts = str.split(\";\");\n const properties = {};\n\n let i, len;\n for (i = 1, len = contentTypeParts.length; i < len; i++) {\n const contentTypeParams = contentTypeParts[i].split(\"=\");\n properties[contentTypeParams[0].replace(/^\\s+|\\s+$/g, \"\")] = contentTypeParams[1];\n }\n\n return { mediaType: contentTypeParts[0].replace(/^\\s+|\\s+$/g, \"\"), properties: properties };\n }\n\n private readTo(text, str, context) {\n const start = context.position || 0;\n let end = text.length;\n if (str) {\n end = text.indexOf(str, start);\n if (end === -1) {\n return null;\n }\n context.position = end + str.length;\n } else {\n context.position = end;\n }\n\n return text.substring(start, end);\n }\n\n private readLine(text, context) {\n return this.readTo(text, BatchRequest.constants.newLine, context);\n }\n\n private readHeaders(text, context) {\n const headers = {};\n let parts;\n let line;\n let pos;\n\n do {\n pos = context.position;\n line = this.readLine(text, context);\n parts = this.responseHeaderRegex.exec(line);\n if (parts !== null) {\n headers[parts[1].toLowerCase()] = parts[2];\n } else {\n // Whatever was found is not a header, so reset the context position.\n context.position = pos;\n }\n } while (line && parts);\n\n return headers;\n }\n\n private readResponse(text, context, delimiter) {\n // Read the status line.\n const pos = context.position;\n const match = this.responseStatusRegex.exec(this.readLine(text, context));\n\n let statusCode;\n let statusText;\n let headers;\n\n if (match) {\n statusCode = match[1];\n statusText = match[2];\n headers = this.readHeaders(text, context);\n this.readLine(text, context);\n } else {\n context.position = pos;\n }\n\n return {\n statusCode: statusCode,\n statusText: statusText,\n headers: headers,\n body: this.readTo(text, BatchRequest.constants.newLine + delimiter, context)\n };\n }\n\n private buildRequestBody() {\n const builder = new BlobBuilder();\n builder.append(\"\");\n\n for (let index = 0; index < this.requests.length; index += 1) {\n\n const request = this.requests[index].request;\n if (request instanceof Transaction && request.requests.length === 0) {\n continue;\n }\n\n if (index != 0)\n builder.append(BatchRequest.constants.newLine + BatchRequest.constants.newLine);\n\n builder.append(\"--\" + this.boundary);\n\n if (request instanceof Transaction) {\n builder.append(this.buildTransaction(request));\n }\n else {\n builder.append(this.buildRequest(request));\n }\n }\n\n builder.append(this.createDelimeter(this.boundary, true));\n return builder.build();\n }\n\n private buildRequest(request: RequestBase): Blob {\n const builder = new BlobBuilder();\n builder.append(BatchRequest.constants.newLine + \"Content-Type: application/http\" +\n BatchRequest.constants.newLine + \"Content-Transfer-Encoding: binary\" +\n BatchRequest.constants.newLine +\n BatchRequest.constants.newLine +\n request.getMethod() +\n \" \" + request.buildUrl() + \" HTTP/1.1\");\n\n return builder.build();\n }\n\n private buildTransaction(transaction: Transaction) {\n if (transaction.requests.length == 0)\n return;\n\n const builder = new BlobBuilder();\n builder.append(BatchRequest.constants.newLine);\n\n const changeset = this.createBoundary(\"sf_changeset_\");\n builder.append(\"Content-Type: multipart/mixed; boundary=\" + changeset);\n\n const changesetRequests = transaction.requests;\n for (let index = 0; index < changesetRequests.length; index += 1) {\n const currentRequest = changesetRequests[index].request;\n\n // we should add only single new line after blob content. Otherwise the blob is corrupted\n const shouldAddSingleNewLine = index != 0 && utils.isBlob(changesetRequests[index - 1].request.getBody());\n builder.append(this.createDelimeter(changeset, false, shouldAddSingleNewLine) +\n BatchRequest.constants.newLine + \"Content-Type: application/http\" +\n BatchRequest.constants.newLine + \"Content-Transfer-Encoding: binary\" +\n BatchRequest.constants.newLine + \"Content-ID: \" + changesetRequests[index].id);\n\n const requestUrl = currentRequest.buildUrl();\n builder.append(BatchRequest.constants.newLine + BatchRequest.constants.newLine + currentRequest.getMethod() + \" \" + requestUrl + \" HTTP/1.1\");\n\n const headers = currentRequest.getHeaders();\n const headerNames = Object.keys(headers);\n for (let i = 0; i < headerNames.length; i++) {\n const headerName = headerNames[i];\n builder.append(BatchRequest.constants.newLine + headerName + \": \" + headers[headerName]);\n }\n\n const body = utils.serializeToJSON(currentRequest.getBody());\n if (body) {\n builder.append(BatchRequest.constants.newLine + BatchRequest.constants.newLine);\n builder.append(body);\n }\n }\n\n builder.append(this.createDelimeter(changeset, true));\n return builder.build();\n }\n\n private createDelimeter(boundary, close, shouldAddSingleNewLine = false) {\n let result = BatchRequest.constants.newLine;\n if (!shouldAddSingleNewLine) {\n result += BatchRequest.constants.newLine;\n }\n\n result += \"--\" + boundary;\n if (close) {\n result += \"--\";\n result += BatchRequest.constants.newLine;\n }\n return result;\n }\n\n private createBoundary(prefix) {\n return prefix + utils.hex16() + \"-\" + utils.hex16() + \"-\" + utils.hex16();\n }\n\n private addRequest(request: RequestBase) {\n this.requests.push({ id: this.counter, request: request });\n return this.counter++;\n }\n\n private urlParametersClone(entitySet: string): TypeOptions {\n const options = utils.clone(this.urlOptions);\n options.entitySet = entitySet;\n\n return options;\n }\n}\n\ninterface TransactionRequest {\n id: number,\n request: RequestBase;\n}\n\ninterface BatchInnerRequest {\n id: number,\n request: RequestBase | Transaction;\n}\n\n/**\n * Low-level construction options for a batch request.\n */\nexport interface BatchRequestOptionsExtended extends RequestOptionsBaseExtended {\n /** Factory used to create the individual requests in the batch. */\n factory: RequestFactory;\n}\n\n/**\n * Common options for adding an operation to a batch.\n */\nexport interface BatchRequestOptionsBase extends RequestOptionsBase {\n /** Entity set addressed by the batch operation. */\n entitySet: string;\n}\n\n/**\n * Options for adding an item-creation operation to a transaction.\n */\nexport interface BatchCreateRequestOptions extends CreateRequestOptions {\n /** Entity set containing the item to create. */\n entitySet: string;\n}\n\n/**\n * Options for adding an item-update operation to a transaction.\n */\nexport interface BatchUpdateRequestOptions extends UpdateRequestOptions {\n /** Entity set containing the item to update. */\n entitySet: string;\n}\n\n/**\n * Options for adding a single-item operation to a batch or transaction.\n */\nexport interface BatchSingleItemRequestOptions extends RequestOptionsBase {\n /** Entity set containing the addressed item. */\n entitySet: string;\n}\n\n/**\n * Options for adding a property or relation operation to a batch or transaction.\n */\nexport interface BatchPropertyRequestOptions extends PropertyRequestOptions {\n /** Entity set containing the addressed item. */\n entitySet: string;\n}\n\n/**\n * Options for adding a single-related-item operation to a batch or transaction.\n */\nexport interface BatchSingleRelatedItemRequestOptions extends SingleRelatedItemRequestOptions {\n /** Entity set containing the addressed item. */\n entitySet: string;\n}\n\n/**\n * Options for adding a related-item creation operation to a transaction.\n */\nexport interface BatchCreateRelatedRequestOptions extends CreateRelatedRequestOptions {\n /** Entity set containing the addressed item. */\n entitySet: string;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["response"]
|
|
7
|
+
}
|