@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.
Files changed (231) hide show
  1. package/README.md +84 -51
  2. package/esm/chunks/chunk-2ID24RPE.mjs +179 -0
  3. package/esm/chunks/chunk-2ID24RPE.mjs.map +7 -0
  4. package/esm/chunks/chunk-AHDZ2CWQ.mjs +93 -0
  5. package/esm/chunks/chunk-AHDZ2CWQ.mjs.map +7 -0
  6. package/esm/chunks/chunk-BFLQBM7R.mjs +136 -0
  7. package/esm/chunks/chunk-BFLQBM7R.mjs.map +7 -0
  8. package/esm/chunks/chunk-CMGV26CS.mjs +66 -0
  9. package/esm/chunks/chunk-CMGV26CS.mjs.map +7 -0
  10. package/esm/chunks/chunk-DHWDJAGV.mjs +180 -0
  11. package/esm/chunks/chunk-DHWDJAGV.mjs.map +7 -0
  12. package/esm/chunks/chunk-EH4CERVO.mjs +82 -0
  13. package/esm/chunks/chunk-EH4CERVO.mjs.map +7 -0
  14. package/esm/chunks/chunk-F4CWOE7M.mjs +57 -0
  15. package/esm/chunks/chunk-F4CWOE7M.mjs.map +7 -0
  16. package/esm/chunks/chunk-FUFBYOIF.mjs +98 -0
  17. package/esm/chunks/chunk-FUFBYOIF.mjs.map +7 -0
  18. package/esm/chunks/chunk-J2B7UDVZ.mjs +132 -0
  19. package/esm/chunks/chunk-J2B7UDVZ.mjs.map +7 -0
  20. package/esm/chunks/chunk-L3IMDFA5.mjs +1 -0
  21. package/esm/chunks/chunk-L3IMDFA5.mjs.map +7 -0
  22. package/esm/chunks/chunk-NNYY2VBC.mjs +383 -0
  23. package/esm/chunks/chunk-NNYY2VBC.mjs.map +7 -0
  24. package/esm/chunks/chunk-PI55MBSL.mjs +256 -0
  25. package/esm/chunks/chunk-PI55MBSL.mjs.map +7 -0
  26. package/esm/chunks/chunk-PXPK2IV6.mjs +568 -0
  27. package/esm/chunks/chunk-PXPK2IV6.mjs.map +7 -0
  28. package/esm/chunks/chunk-QPSEKUOI.mjs +35 -0
  29. package/esm/chunks/chunk-QPSEKUOI.mjs.map +7 -0
  30. package/esm/chunks/chunk-RQAAYOY6.mjs +72 -0
  31. package/esm/chunks/chunk-RQAAYOY6.mjs.map +7 -0
  32. package/esm/chunks/chunk-TTVNTTW5.mjs +145 -0
  33. package/esm/chunks/chunk-TTVNTTW5.mjs.map +7 -0
  34. package/esm/chunks/chunk-VLDX2FH2.mjs +235 -0
  35. package/esm/chunks/chunk-VLDX2FH2.mjs.map +7 -0
  36. package/esm/chunks/chunk-VWT2RJET.mjs +102 -0
  37. package/esm/chunks/chunk-VWT2RJET.mjs.map +7 -0
  38. package/esm/chunks/chunk-W2OWM3L7.mjs +19 -0
  39. package/esm/chunks/chunk-W2OWM3L7.mjs.map +7 -0
  40. package/esm/chunks/chunk-WX5J7F5D.mjs +43 -0
  41. package/esm/chunks/chunk-WX5J7F5D.mjs.map +7 -0
  42. package/esm/chunks/chunk-YB2LMPUX.mjs +54 -0
  43. package/esm/chunks/chunk-YB2LMPUX.mjs.map +7 -0
  44. package/package.json +67 -36
  45. package/sitefinity-webservices-sdk.cjs +2761 -0
  46. package/sitefinity-webservices-sdk.cjs.map +7 -0
  47. package/sitefinity-webservices-sdk.d.mts +1 -0
  48. package/{dist/sitefinity-webservices-sdk.d.ts → sitefinity-webservices-sdk.d.ts} +6 -0
  49. package/sitefinity-webservices-sdk.global.d.ts +5 -0
  50. package/sitefinity-webservices-sdk.js +2764 -0
  51. package/sitefinity-webservices-sdk.js.map +7 -0
  52. package/sitefinity-webservices-sdk.min.js +3 -0
  53. package/sitefinity-webservices-sdk.mjs +124 -0
  54. package/sitefinity-webservices-sdk.mjs.map +7 -0
  55. package/src/BlobBuilder.d.ts +12 -0
  56. package/src/Data.d.ts +259 -0
  57. package/src/Expression.d.ts +37 -0
  58. package/src/OrderProperty.d.ts +24 -0
  59. package/src/Query.d.ts +104 -0
  60. package/src/QueryBase.d.ts +40 -0
  61. package/src/QueryBuilder.d.ts +29 -0
  62. package/src/Requests/BatchRequest.d.ts +174 -0
  63. package/src/Requests/ExecutableRequest.d.ts +43 -0
  64. package/src/Requests/Request.d.ts +225 -0
  65. package/src/Requests/RequestBase.d.ts +58 -0
  66. package/{dist/src → src}/Requests/RequestFactory.d.ts +24 -2
  67. package/src/Sitefinity.d.ts +141 -0
  68. package/src/Transport/FetchTransport.d.ts +17 -0
  69. package/src/Transport/HttpTransport.d.ts +69 -0
  70. package/src/Transport/XhrTransport.d.ts +8 -0
  71. package/src/WhereQuery.d.ts +88 -0
  72. package/src/chunk-upload/chunk-upload.sdk.d.ts +305 -0
  73. package/src/chunk-upload/chunked-file-upload.utilities.d.ts +58 -0
  74. package/{dist/src → src}/constants.d.ts +21 -0
  75. package/src/utils.d.ts +103 -0
  76. package/.editorconfig +0 -29
  77. package/.eslintignore +0 -4
  78. package/.eslintrc.js +0 -40
  79. package/config/helpers.ts +0 -8
  80. package/config/webpack.common.ts +0 -39
  81. package/config/webpack.dev.ts +0 -37
  82. package/config/webpack.prod.ts +0 -17
  83. package/dist/docs/.nojekyll +0 -1
  84. package/dist/docs/assets/highlight.css +0 -71
  85. package/dist/docs/assets/main.js +0 -58
  86. package/dist/docs/assets/search.js +0 -1
  87. package/dist/docs/assets/style.css +0 -1280
  88. package/dist/docs/classes/BlobBuilder.BlobBuilder.html +0 -137
  89. package/dist/docs/classes/Data.Data.html +0 -387
  90. package/dist/docs/classes/Expression.BinaryExpression.html +0 -184
  91. package/dist/docs/classes/Expression.ComplexExpression.html +0 -146
  92. package/dist/docs/classes/Expression.ExpressionBase.html +0 -125
  93. package/dist/docs/classes/OrderProperty.OrderProperty.html +0 -151
  94. package/dist/docs/classes/Query.Query.html +0 -353
  95. package/dist/docs/classes/QueryBase.QueryBase.html +0 -185
  96. package/dist/docs/classes/QueryBuilder.QueryBuilder.html +0 -206
  97. package/dist/docs/classes/Requests_BatchRequest.BatchRequest.html +0 -731
  98. package/dist/docs/classes/Requests_BatchRequest.Transaction.html +0 -332
  99. package/dist/docs/classes/Requests_ExecutableRequest.ExecutableRequest.html +0 -340
  100. package/dist/docs/classes/Requests_Request.CommitChunksRequest.html +0 -303
  101. package/dist/docs/classes/Requests_Request.CreateRelatedRequest.html +0 -310
  102. package/dist/docs/classes/Requests_Request.CreateRequest.html +0 -307
  103. package/dist/docs/classes/Requests_Request.DeleteRelatedByIdRequest.html +0 -309
  104. package/dist/docs/classes/Requests_Request.DeleteRelatedRequest.html +0 -302
  105. package/dist/docs/classes/Requests_Request.DeleteRequest.html +0 -298
  106. package/dist/docs/classes/Requests_Request.GetByIdRequest.html +0 -298
  107. package/dist/docs/classes/Requests_Request.GetRelatedByIdRequest.html +0 -309
  108. package/dist/docs/classes/Requests_Request.GetRelatedRequest.html +0 -302
  109. package/dist/docs/classes/Requests_Request.GetRequest.html +0 -295
  110. package/dist/docs/classes/Requests_Request.UpdateRequest.html +0 -309
  111. package/dist/docs/classes/Requests_Request.UploadChunkRequest.html +0 -359
  112. package/dist/docs/classes/Requests_Request.UploadRequest.html +0 -329
  113. package/dist/docs/classes/Requests_RequestBase.RequestBase.html +0 -275
  114. package/dist/docs/classes/Requests_RequestFactory.RequestFactory.html +0 -344
  115. package/dist/docs/classes/Sitefinity.Sitefinity.html +0 -188
  116. package/dist/docs/classes/WhereQuery.WhereQuery.html +0 -436
  117. package/dist/docs/classes/chunk_upload_chunk_upload_sdk.ChunkUploadSdk.html +0 -231
  118. package/dist/docs/classes/chunk_upload_chunked_file_upload_utilities.ChunkedFileUploadUtilities.html +0 -131
  119. package/dist/docs/classes/utils.utils.html +0 -303
  120. package/dist/docs/index.html +0 -129
  121. package/dist/docs/interfaces/Data.CreateRelatedRequestOptions.html +0 -155
  122. package/dist/docs/interfaces/Data.CreateRequestOptions.html +0 -153
  123. package/dist/docs/interfaces/Data.OperationsRequestOptions.html +0 -145
  124. package/dist/docs/interfaces/Data.PropertyRequestOptions.html +0 -149
  125. package/dist/docs/interfaces/Data.RequestOptionsBase.html +0 -136
  126. package/dist/docs/interfaces/Data.SingleRelatedItemRequestOptions.html +0 -155
  127. package/dist/docs/interfaces/Data.UpdateRequestOptions.html +0 -155
  128. package/dist/docs/interfaces/Data.UploadRequestOptions.html +0 -169
  129. package/dist/docs/interfaces/Requests_BatchRequest.BatchCreateRelatedRequestOptions.html +0 -161
  130. package/dist/docs/interfaces/Requests_BatchRequest.BatchCreateRequestOptions.html +0 -153
  131. package/dist/docs/interfaces/Requests_BatchRequest.BatchPropertyRequestOptions.html +0 -153
  132. package/dist/docs/interfaces/Requests_BatchRequest.BatchRequestOptionsBase.html +0 -145
  133. package/dist/docs/interfaces/Requests_BatchRequest.BatchRequestOptionsExtended.html +0 -153
  134. package/dist/docs/interfaces/Requests_BatchRequest.BatchSingleItemRequestOptions.html +0 -145
  135. package/dist/docs/interfaces/Requests_BatchRequest.BatchSingleRelatedItemRequestOptions.html +0 -161
  136. package/dist/docs/interfaces/Requests_BatchRequest.BatchUpdateRequestOptions.html +0 -161
  137. package/dist/docs/interfaces/Requests_ExecutableRequest.ResponseHandlers.html +0 -98
  138. package/dist/docs/interfaces/Requests_Request.CommitChunksRequestOptionsExtended.html +0 -215
  139. package/dist/docs/interfaces/Requests_Request.PostRequestOptionsExtended.html +0 -159
  140. package/dist/docs/interfaces/Requests_Request.PutRequestOptionsExtended.html +0 -161
  141. package/dist/docs/interfaces/Requests_Request.RelatedByIdRequestOptionsExtended.html +0 -169
  142. package/dist/docs/interfaces/Requests_Request.RelatedRequestOptionsExtended.html +0 -163
  143. package/dist/docs/interfaces/Requests_Request.UploadChunkRequestOptionsExtended.html +0 -217
  144. package/dist/docs/interfaces/Requests_Request.UploadRequestOptionsExtended.html +0 -180
  145. package/dist/docs/interfaces/Requests_RequestBase.RequestOptionsBaseExtended.html +0 -148
  146. package/dist/docs/interfaces/Sitefinity.SDKOptions.html +0 -128
  147. package/dist/docs/interfaces/Sitefinity.Token.html +0 -94
  148. package/dist/docs/interfaces/Sitefinity.TypeOptions.html +0 -160
  149. package/dist/docs/interfaces/chunk_upload_chunk_upload_sdk.ChunkUploadInfoDTO.html +0 -159
  150. package/dist/docs/interfaces/chunk_upload_chunk_upload_sdk.ChunkUploadResult.html +0 -111
  151. package/dist/docs/interfaces/chunk_upload_chunk_upload_sdk.CleanUpChunksRequestOptions.html +0 -171
  152. package/dist/docs/interfaces/chunk_upload_chunk_upload_sdk.CommitChunksRequestOptions.html +0 -204
  153. package/dist/docs/interfaces/chunk_upload_chunk_upload_sdk.GetChunkUploadInfoRequestOptions.html +0 -166
  154. package/dist/docs/interfaces/chunk_upload_chunk_upload_sdk.UploadChunkRequestOptions.html +0 -206
  155. package/dist/docs/interfaces/chunk_upload_chunked_file_upload_utilities.ChunkFileResult.html +0 -101
  156. package/dist/docs/interfaces/chunk_upload_chunked_file_upload_utilities.FileUploadChunk.html +0 -94
  157. package/dist/docs/modules/BlobBuilder.html +0 -73
  158. package/dist/docs/modules/Data.html +0 -92
  159. package/dist/docs/modules/Expression.html +0 -77
  160. package/dist/docs/modules/OrderProperty.html +0 -73
  161. package/dist/docs/modules/Query.html +0 -73
  162. package/dist/docs/modules/QueryBase.html +0 -73
  163. package/dist/docs/modules/QueryBuilder.html +0 -73
  164. package/dist/docs/modules/Requests_BatchRequest.html +0 -94
  165. package/dist/docs/modules/Requests_ExecutableRequest.html +0 -78
  166. package/dist/docs/modules/Requests_Request.html +0 -114
  167. package/dist/docs/modules/Requests_RequestBase.html +0 -78
  168. package/dist/docs/modules/Requests_RequestFactory.html +0 -73
  169. package/dist/docs/modules/Sitefinity.html +0 -82
  170. package/dist/docs/modules/WhereQuery.html +0 -73
  171. package/dist/docs/modules/chunk_upload_chunk_upload_sdk.html +0 -88
  172. package/dist/docs/modules/chunk_upload_chunked_file_upload_utilities.html +0 -80
  173. package/dist/docs/modules/constants.html +0 -83
  174. package/dist/docs/modules/utils.html +0 -73
  175. package/dist/docs/modules.html +0 -80
  176. package/dist/docs/variables/constants.CONTENT_TYPES.html +0 -76
  177. package/dist/docs/variables/constants.EXPRESSION_TYPE.html +0 -106
  178. package/dist/docs/variables/constants.HEADER_NAMES.html +0 -102
  179. package/dist/docs/variables/constants.HTTP_METHODS.html +0 -84
  180. package/dist/docs/variables/constants.ODATA_PARAMS.html +0 -90
  181. package/dist/docs/variables/constants.SF_PARAMS.html +0 -84
  182. package/dist/samples.html +0 -625
  183. package/dist/sitefinity-webservices-sdk.js +0 -3125
  184. package/dist/sitefinity-webservices-sdk.js.map +0 -1
  185. package/dist/sitefinity-webservices-sdk.min.js +0 -1
  186. package/dist/src/BlobBuilder.d.ts +0 -14
  187. package/dist/src/Data.d.ts +0 -154
  188. package/dist/src/Data.spec.d.ts +0 -1
  189. package/dist/src/Expression.d.ts +0 -19
  190. package/dist/src/OrderProperty.d.ts +0 -8
  191. package/dist/src/Query.d.ts +0 -59
  192. package/dist/src/QueryBase.d.ts +0 -18
  193. package/dist/src/QueryBuilder.d.ts +0 -13
  194. package/dist/src/Requests/BatchRequest.d.ts +0 -146
  195. package/dist/src/Requests/ExecutableRequest.d.ts +0 -22
  196. package/dist/src/Requests/Request.d.ts +0 -132
  197. package/dist/src/Requests/RequestBase.d.ts +0 -27
  198. package/dist/src/Requests/request.spec.d.ts +0 -1
  199. package/dist/src/Sitefinity.d.ts +0 -75
  200. package/dist/src/Sitefinity.spec.d.ts +0 -1
  201. package/dist/src/WhereQuery.d.ts +0 -72
  202. package/dist/src/chunk-upload/chunk-upload.sdk.d.ts +0 -295
  203. package/dist/src/chunk-upload/chunk-upload.sdk.spec.d.ts +0 -1
  204. package/dist/src/chunk-upload/chunked-file-upload.utilities.d.ts +0 -13
  205. package/dist/src/utils.d.ts +0 -16
  206. package/karma.conf.js +0 -29
  207. package/sitefinity-webservices-sdk.ts +0 -15
  208. package/src/BlobBuilder.ts +0 -20
  209. package/src/Data.spec.ts +0 -160
  210. package/src/Data.ts +0 -418
  211. package/src/Expression.ts +0 -36
  212. package/src/OrderProperty.ts +0 -39
  213. package/src/Query.ts +0 -106
  214. package/src/QueryBase.ts +0 -57
  215. package/src/QueryBuilder.ts +0 -180
  216. package/src/Requests/BatchRequest.ts +0 -807
  217. package/src/Requests/ExecutableRequest.ts +0 -117
  218. package/src/Requests/Request.ts +0 -327
  219. package/src/Requests/RequestBase.ts +0 -163
  220. package/src/Requests/RequestFactory.ts +0 -75
  221. package/src/Requests/request.spec.ts +0 -132
  222. package/src/Sitefinity.spec.ts +0 -483
  223. package/src/Sitefinity.ts +0 -125
  224. package/src/WhereQuery.ts +0 -145
  225. package/src/chunk-upload/chunk-upload.sdk.spec.ts +0 -342
  226. package/src/chunk-upload/chunk-upload.sdk.ts +0 -439
  227. package/src/chunk-upload/chunked-file-upload.utilities.ts +0 -64
  228. package/src/constants.ts +0 -66
  229. package/src/utils.ts +0 -125
  230. package/template.html +0 -625
  231. package/tsconfig.json +0 -38
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../sitefinity-webservices-sdk.ts", "../src/BlobBuilder.ts", "../src/constants.ts", "../src/utils.ts", "../src/Expression.ts", "../src/WhereQuery.ts", "../src/Requests/RequestBase.ts", "../src/Transport/XhrTransport.ts", "../src/Requests/ExecutableRequest.ts", "../src/Requests/Request.ts", "../src/Requests/BatchRequest.ts", "../src/Requests/RequestFactory.ts", "../src/chunk-upload/chunked-file-upload.utilities.ts", "../src/chunk-upload/chunk-upload.sdk.ts", "../src/Data.ts", "../src/QueryBase.ts", "../src/OrderProperty.ts", "../src/QueryBuilder.ts", "../src/Query.ts", "../src/Sitefinity.ts", "../src/Transport/FetchTransport.ts"],
4
+ "sourcesContent": ["\uFEFFexport * from \"./src/BlobBuilder\";\nexport * from \"./src/constants\";\nexport * from \"./src/utils\";\nexport * from \"./src/WhereQuery\";\nexport * from \"./src/Sitefinity\";\nexport * from \"./src/QueryBuilder\";\nexport * from \"./src/Query\";\nexport * from \"./src/QueryBase\";\nexport * from \"./src/OrderProperty\";\nexport * from \"./src/Expression\";\nexport * from \"./src/Data\";\nexport * from \"./src/chunk-upload/chunk-upload.sdk\";\nexport * from \"./src/chunk-upload/chunked-file-upload.utilities\";\nexport * from \"./src/Requests/BatchRequest\";\nexport * from \"./src/Requests/ExecutableRequest\";\nexport * from \"./src/Requests/Request\";\nexport * from \"./src/Requests/RequestBase\";\nexport * from \"./src/Requests/RequestFactory\";\nexport * from \"./src/Transport/HttpTransport\";\nexport * from \"./src/Transport/XhrTransport\";\nexport * from \"./src/Transport/FetchTransport\";\n", "/**\n * Incrementally builds a `Blob`, primarily for multipart batch MIME bodies.\n *\n * This is a low-level helper for advanced request construction.\n */\nexport class BlobBuilder {\n private blob = new Blob();\n\n /** Appends a value to the blob being built. */\n append(value: any) {\n this.blob = new Blob([this.blob, value]);\n }\n\n /** Returns the accumulated blob content. */\n build(): Blob {\n return this.blob;\n }\n}\n", "\uFEFF/**\n * Operator names used by the fluent query-expression API.\n *\n * Most consumers should use {@link Query} and {@link WhereQuery} instead of constructing\n * expressions from these values directly.\n */\nexport const EXPRESSION_TYPE = {\n query: 1,\n where: 100,\n and: \"and\",\n or: \"or\",\n not: \"not\",\n eq: \"eq\",\n ne: \"ne\",\n lt: \"lt\",\n le: \"le\",\n gt: \"gt\",\n ge: \"ge\",\n any: \"any\",\n in: \"in\",\n contains: \"contains\",\n startsWith: \"startsWith\",\n endsWith: \"endsWith\"\n};\n\n/**\n * OData query parameter names emitted by {@link QueryBuilder}.\n */\nexport const ODATA_PARAMS = {\n $filter: \"$filter\",\n $select: \"$select\",\n $expand: \"$expand\",\n $orderby: \"$orderby\",\n $skip: \"$skip\",\n $top: \"$top\",\n $count: \"$count\",\n $search: \"$search\"\n};\n\n/**\n * Sitefinity-specific query parameter names supported by SDK requests.\n */\nexport const SF_PARAMS = {\n provider: \"sf_provider\",\n culture: \"sf_culture\",\n siteId: \"sf_site\",\n fallbackParams: \"sf_fallback_prop_names\",\n parentId: \"parentId\"\n};\n\n/**\n * Standard and Sitefinity-specific HTTP header names used by SDK requests.\n */\nexport const HEADER_NAMES = {\n contentType: \"Content-Type\",\n authorization: \"Authorization\",\n contentEncoding: \"Content-Encoding\",\n operation: \"X-Operation\",\n properties: \"X-Sf-Properties\",\n fileName: \"X-File-Name\",\n serviceRequest: \"X-SF-Service-Request\",\n choicesBinaryRepresentation: \"X-SF-Binary-Choice-Representation\",\n integrationMode: \"X-SF-Integration-Mode\",\n chunkOrdinal: \"X-SF-Chunk-Ordinal\",\n chunkSize: \"X-SF-Chunk-Size\",\n fileSize: \"X-SF-File-Size\",\n chunkedFileUploadSessionId: \"X-SF-Chunked-File-Upload-Session-Id\",\n blobStorageProviderName: \"X-SF-Blob-Storage-Provider-Name\"\n};\n\n/**\n * HTTP method names used by the request classes.\n */\nexport const HTTP_METHODS = {\n get: \"GET\",\n put: \"PUT\",\n post: \"POST\",\n patch: \"PATCH\",\n delete: \"DELETE\"\n};\n\n/**\n * Content types emitted by SDK requests.\n */\nexport const CONTENT_TYPES = {\n json: \"application/json\"\n};\n", "\uFEFF/**\n * General-purpose value, URL, serialization, and response conversion helpers used by the SDK.\n *\n * These helpers are exported for backward compatibility. Application code should normally use\n * the higher-level {@link Sitefinity}, {@link Data}, and {@link Query} APIs.\n */\nexport class utils {\n /**\n * Determines whether a value is a primitive or boxed string.\n *\n * @param obj Value to inspect.\n * @returns `true` when the value is a string.\n */\n static isString(obj: any): boolean {\n return typeof (obj) === \"string\" || obj instanceof String;\n }\n\n /**\n * Determines whether a value is a boolean.\n *\n * @param obj Value to inspect.\n * @returns `true` for primitive boolean values.\n */\n static isBoolean(obj: any): boolean {\n return typeof (obj) === \"boolean\";\n }\n\n /**\n * Determines whether a value is a {@link Blob}.\n *\n * @param obj Value to inspect.\n * @returns `true` when the value is a `Blob`.\n */\n static isBlob(obj: any): boolean {\n return obj instanceof Blob;\n }\n\n /**\n * Determines whether a value is a finite number.\n *\n * @param value Value to inspect.\n * @returns `true` for finite numeric values.\n */\n static isNumber(value: any): boolean {\n return typeof value === \"number\" && isFinite(value);\n }\n\n /**\n * Determines whether a value is callable.\n *\n * @param func Value to inspect.\n * @returns `true` when the value is a function.\n */\n static isFunction(func: any): boolean {\n return typeof func === \"function\";\n }\n\n /**\n * Converts request data to its wire representation.\n *\n * Strings and blobs are returned unchanged. Other values are serialized with `JSON.stringify`.\n *\n * @param data Request body value.\n * @returns The original string or blob, or a JSON string for other values.\n */\n static serializeToJSON(data): string {\n if (!utils.isString(data) && !this.isBlob(data)) {\n return JSON.stringify(data);\n }\n\n return data;\n }\n\n /**\n * Parses a response string as a number or JSON value.\n *\n * ISO 8601 date strings in parsed objects and arrays are converted to {@link Date} instances.\n * Non-JSON text returns `null`.\n *\n * @param data Response text to parse.\n * @returns The parsed value, or `null` when the input is empty or not valid JSON.\n */\n static parseStringToJson(data) {\n if (!data) {\n return null;\n }\n\n const number = Number(data);\n if (!isNaN(number)) {\n return number;\n }\n\n let result = null;\n\n try {\n result = JSON.parse(data);\n result = utils._parseDateProperties(result);\n } catch (e) {\n // Intentionally not logging it in the browser console because there are cases when the response is not a JSON string.\n }\n\n return result;\n }\n\n /**\n * Converts top-level {@link Date} properties to ISO 8601 strings in place.\n *\n * @param data Object that will be sent in a request.\n * @returns The same object instance after conversion.\n */\n static convertDateFieldToISOString(data: object): object {\n /*\n TODOSDK: when write tests for this try to use\n \"Object.keys(obj).forEach(function(){})\",\n Phantomjs does not recognize \"for..in\" operator.\n */\n for (const obj in data) {\n if (data[obj] instanceof Date) {\n data[obj] = data[obj].toISOString();\n }\n }\n\n return data;\n }\n\n /**\n * Generates a four-character hexadecimal segment.\n *\n * @returns A pseudo-random lowercase hexadecimal string.\n */\n static hex16() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substr(1);\n }\n\n /**\n * Ensures that a URL ends with exactly one slash.\n *\n * @param url URL to normalize.\n * @returns The normalized URL.\n */\n static addTrailingSlash(url: string): string {\n url = utils.removeSlashes(url);\n url += \"/\";\n return url;\n }\n\n /**\n * Removes one trailing slash from a URL.\n *\n * @param url URL to normalize.\n * @returns The URL without a trailing slash.\n */\n static removeSlashes(url: string) {\n let ret = url;\n\n const lastChar = ret.substr(-1);\n if (lastChar == \"/\")\n ret = ret.substr(0, ret.length - 1);\n\n return ret;\n }\n\n /**\n * Performs the SDK's backward-compatible shallow clone operation.\n *\n * The optional action is called while properties are copied and is used by fluent query\n * objects to update the cloned instance.\n *\n * @param from Source object.\n * @param to Optional target object.\n * @param action Optional callback invoked with the target during copying.\n * @returns The populated target object.\n */\n static clone(from: any, to = {}, action: Function = null): any {\n if (!to)\n to = {};\n\n for (const property in from) {\n if (from[property] && from[property].constructor && from[property].constructor === Object && typeof from[property] == \"function\") {\n to[property] = to[property] || {};\n arguments.callee(to[property], from[property]);\n } else {\n to[property] = from[property];\n }\n\n if (typeof action === \"function\")\n action(to);\n }\n\n return to;\n }\n\n private static _parseDateProperties(data) {\n for (const obj in data) {\n if (data[obj] instanceof Array || (data[obj] instanceof Object && !(data[obj] instanceof Function)))\n this._parseDateProperties(data[obj]);\n else\n data[obj] = utils._tryFormatFieldToDate(data[obj]);\n }\n\n return data;\n }\n\n private static _tryFormatFieldToDate(date) {\n if ((/^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*))(?:Z|(\\+|-)([\\d|:]*))?$/).test(date)) {\n date = new Date(date);\n }\n\n return date;\n }\n}\n", "/** Base node for a query filter expression. */\nexport class ExpressionBase {\n /** Creates an expression node with the specified operator or logical type. */\n constructor(public type: string) {\n }\n\n /** Returns this expression's operator or logical type. */\n getType(): string {\n return this.type;\n }\n}\n\n/** A filter expression comparing one property with one constant value. */\nexport class BinaryExpression extends ExpressionBase {\n /**\n * Creates a comparison expression.\n *\n * @param type Supported comparison operator, such as `eq`, `ne`, or `contains`.\n * @param parameter Property being tested.\n * @param constant Value compared with the property.\n * @param caseSensitive Whether string functions should preserve case.\n */\n constructor(type: string, public parameter: string, public constant: any, public caseSensitive: boolean = true) {\n super(type);\n }\n\n /** Returns the property being compared. */\n getParameter(): string {\n return this.parameter;\n }\n\n /** Returns the comparison value. */\n getConstant(): any {\n return this.constant;\n }\n\n /** Returns whether string matching preserves case. */\n isCaseSensitive(): boolean {\n return this.caseSensitive;\n }\n}\n\n/** A filter expression containing one or more child expression nodes. */\nexport class ComplexExpression extends ExpressionBase {\n /** Creates a logical expression containing the supplied child nodes. */\n constructor(type: string, private expressions: ExpressionBase[]) {\n super(type);\n }\n\n /** Returns the child expressions in their current order. */\n getExpressions(): ExpressionBase[] {\n return this.expressions;\n }\n}\n", "import { ComplexExpression, BinaryExpression } from \"./Expression\";\nimport { EXPRESSION_TYPE } from \"./constants\";\n\n/**\n * Fluent builder for a query's `$filter` expression.\n *\n * Comparison methods add conditions to the current logical group and return\n * the same builder. Logical methods create nested groups; call `done()` once\n * for each group to return to the parent query or group.\n *\n * Supported comparisons are `eq`, `ne`, `gt`, `gte`, `lt`, `lte`, `in`,\n * `startsWith`, `contains`, and `endsWith`. Values are serialized by the query\n * builder when the query is built.\n *\n * @typeParam QueryType The parent type returned by `done()`.\n */\nexport class WhereQuery<QueryType> {\n private expression: ComplexExpression;\n\n /** Creates a logical group attached to the supplied parent. */\n constructor(private parent: QueryType, type: string = EXPRESSION_TYPE.and) {\n this.expression = new ComplexExpression(type, []);\n }\n\n /**\n * Starts a nested `and` group.\n * @returns A nested builder whose `done()` returns this group.\n */\n and(): WhereQuery<WhereQuery<QueryType>> {\n return new WhereQuery(this, EXPRESSION_TYPE.and);\n }\n\n /**\n * Starts a nested `or` group.\n * @returns A nested builder whose `done()` returns this group.\n */\n or(): WhereQuery<WhereQuery<QueryType>> {\n return new WhereQuery(this, EXPRESSION_TYPE.or);\n }\n\n /**\n * Starts an OData `any` group for collection-valued properties.\n * @returns A nested builder whose `done()` returns this group.\n */\n any(): WhereQuery<WhereQuery<QueryType>> {\n return new WhereQuery(this, EXPRESSION_TYPE.any);\n }\n\n /**\n * Starts a negated group.\n * @returns A nested builder whose `done()` returns this group.\n * @throws Error If more than one direct condition is added to the group.\n */\n not(): WhereQuery<WhereQuery<QueryType>> {\n return new WhereQuery(this, EXPRESSION_TYPE.not);\n }\n\n /**\n * Adds an equality condition.\n * @param parameter Property name.\n * @param constant Value to compare with.\n * @returns This filter builder.\n */\n eq(parameter: string, constant: any): WhereQuery<QueryType> {\n return this.simple(EXPRESSION_TYPE.eq, parameter, constant);\n }\n\n /**\n * Adds an inequality condition.\n * @param parameter Property name.\n * @param constant Value to compare with.\n * @returns This filter builder.\n */\n ne(parameter: string, constant: any): WhereQuery<QueryType> {\n return this.simple(EXPRESSION_TYPE.ne, parameter, constant);\n }\n\n /** Adds a greater-than condition for number, string, or date values. */\n gt(parameter: string, constant: any) {\n return this.simple(EXPRESSION_TYPE.gt, parameter, constant);\n }\n\n /** Adds a greater-than-or-equal condition for number, string, or date values. */\n gte(parameter: string, constant: any) {\n return this.simple(EXPRESSION_TYPE.ge, parameter, constant);\n }\n\n /** Adds a less-than condition for number, string, or date values. */\n lt(parameter: string, constant: any) {\n return this.simple(EXPRESSION_TYPE.lt, parameter, constant);\n }\n\n /** Adds a less-than-or-equal condition for number, string, or date values. */\n lte(parameter: string, constant: any) {\n return this.simple(EXPRESSION_TYPE.le, parameter, constant);\n }\n\n /** Adds a string-prefix condition, optionally using case-insensitive matching. */\n startsWith(parameter: string, constant: any, caseSensitive = true) {\n return this.simple(EXPRESSION_TYPE.startsWith, parameter, constant, caseSensitive);\n }\n\n /** Adds a string-contains condition, optionally using case-insensitive matching. */\n contains(parameter: string, constant: any, caseSensitive = true) {\n return this.simple(EXPRESSION_TYPE.contains, parameter, constant, caseSensitive);\n }\n\n /** Adds a string-suffix condition, optionally using case-insensitive matching. */\n endsWith(parameter: string, constant: any, caseSensitive = true) {\n return this.simple(EXPRESSION_TYPE.endsWith, parameter, constant, caseSensitive);\n }\n\n /**\n * Adds an OData `in` condition.\n *\n * The constant must be an array; otherwise `build()` throws an error.\n */\n in(parameter: string, constant: any) {\n return this.simple(EXPRESSION_TYPE.in, parameter, constant);\n }\n\n /**\n * Completes this group and returns its parent.\n *\n * Call once for the root filter to return to `Query`, and once for each\n * nested group to continue the surrounding chain.\n *\n * @returns The parent query or enclosing filter group.\n */\n done(): QueryType {\n if (this.parent instanceof WhereQuery) {\n this.parent.addComplexExpression(this);\n // TODO: If has and() || or() must call done() twice\n if (this.expression.getType() === EXPRESSION_TYPE.not)\n return this.parent;\n }\n\n return this.parent;\n }\n\n /** Returns the expression tree represented by this filter group. */\n getExpression(): ComplexExpression {\n return this.expression;\n }\n\n private simple(type: string, parameter: string, constant: any, caseSensitive = true): WhereQuery<QueryType> {\n const currentExpr = new BinaryExpression(type, parameter, constant, caseSensitive);\n const subExpressions = this.expression.getExpressions();\n subExpressions.push(currentExpr);\n\n if (this.expression.getType() === EXPRESSION_TYPE.not && subExpressions.length > 1)\n throw new Error(\"Invalid operators count!\");\n\n return this;\n }\n\n private addComplexExpression(subQuery: WhereQuery<QueryType>): void {\n const subExpression = subQuery.getExpression();\n this.expression.getExpressions().push(subExpression);\n }\n}\n", "import { CONTENT_TYPES, HEADER_NAMES, ODATA_PARAMS, SF_PARAMS } from \"../constants\";\nimport { RequestOptionsBase } from \"../Data\";\nimport { Query } from \"../Query\";\nimport { TypeOptions } from \"../Sitefinity\";\nimport { HttpTransportResponse } from \"../Transport/HttpTransport\";\nimport { utils } from \"../utils\";\n\n/**\n * Base class for low-level Sitefinity requests.\n *\n * This is an advanced API. Most consumers should use the fluent methods on the SDK data services.\n */\nexport class RequestBase {\n /** Callback invoked with the parsed response after a successful request. */\n public successCb: Function;\n /** Callback invoked with the parsed error response when the request fails. */\n public failureCb: Function;\n /** Callback invoked with upload progress events, when supported by the request. */\n public progressCb: Function;\n /** Entity key used to address a single item, when applicable. */\n public key: string | number;\n /** URL, provider, culture, site, and header options used to build the request. */\n public urlOptions: TypeOptions;\n protected query: Query;\n protected action: string;\n private fallbackProperties: string[];\n\n /**\n * Creates a low-level request from its URL, query, callback, and entity options.\n *\n * @param options Request options used to build and execute the request.\n */\n constructor(options: RequestOptionsBaseExtended) {\n this.successCb = options.successCb;\n this.failureCb = options.failureCb;\n this.progressCb = options.progressCb;\n this.urlOptions = options.urlOptions;\n this.key = options.key;\n this.action = options.action;\n this.fallbackProperties = options.fallbackProperties;\n this.query = options.query;\n }\n\n /**\n * Builds the encoded OData and Sitefinity query string for the request.\n *\n * @param urlOptions URL options whose provider, culture, site, and extra parameters are included.\n * @param query OData query options to include.\n * @returns A query string beginning with `?`, or `null` when no parameters apply.\n */\n getQueryString(urlOptions: TypeOptions, query: Query): string {\n const paramDictionary: { [key: string]: string } = {};\n\n this.getQueryParameters(paramDictionary, urlOptions, query);\n const keys = Object.keys(paramDictionary);\n if (keys.length == 0)\n return null;\n\n let queryString = \"?\";\n for (const prop in paramDictionary) {\n queryString += prop + \"=\" + paramDictionary[prop] + \"&\";\n }\n\n queryString = queryString.substring(0, queryString.length - 1);\n\n return queryString;\n }\n\n /** Returns the request body. Subclasses override this for requests with content. */\n getBody(): object {\n return undefined;\n }\n\n /** Returns the HTTP method used by the request. */\n getMethod(): string {\n return null;\n }\n\n /** Returns the headers used by the request, including a JSON content type by default. */\n getHeaders(): { [key: string]: string } {\n const headers = this.urlOptions.additionalHeaders ?? {};\n if (headers[HEADER_NAMES.contentType] == undefined) {\n headers[HEADER_NAMES.contentType] = CONTENT_TYPES.json;\n }\n\n return headers;\n }\n\n /** Builds the request URL, including the entity key, action, count path, and query string. */\n buildUrl(): string {\n let url = this.urlOptions.baseUrl + (this.urlOptions.entitySet || \"\");\n url += this.key !== undefined && this.key !== null ? (\"(\" + this.key + \")\") : \"\";\n if (this.action) {\n url += url.endsWith(\"/\") ? \"\" : \"/\";\n url += this.action;\n }\n\n // including count here\n // not the best solution as build() is called once more in getQueryString\n // but not that big of an issue right now\n if (this.query) {\n const getCount = this.query.build().$count;\n\n if (utils.isBoolean(getCount) && !getCount) {\n url += \"/$count\";\n }\n }\n\n return this.addQueryParameters(url);\n }\n\n protected parseResponse(response: HttpTransportResponse): string | any {\n const data = utils.parseStringToJson(response.body);\n if (data) {\n if (response.status >= 400 && data.error) {\n return data.error;\n }\n\n return data;\n }\n\n return response.body;\n }\n\n protected addQueryParameters(url: string): string {\n let queryString = this.getQueryString(this.urlOptions, this.query);\n\n if (queryString) {\n if (url.indexOf(\"?\") > -1 && queryString[0] == \"?\") {\n queryString = \"&\" + queryString.substring(1);\n }\n\n url += queryString;\n }\n\n return url;\n }\n\n private getQueryParameters(paramDictionary: { [key: string]: string }, urlOptions: TypeOptions, query: Query) {\n if (query) {\n const builtQuery = query.build();\n if (utils.isString(builtQuery.$filter))\n paramDictionary[ODATA_PARAMS.$filter] = builtQuery.$filter;\n if (utils.isString(builtQuery.$select))\n paramDictionary[ODATA_PARAMS.$select] = builtQuery.$select;\n if (utils.isString(builtQuery.$expand))\n paramDictionary[ODATA_PARAMS.$expand] = builtQuery.$expand;\n if (utils.isString(builtQuery.$orderby))\n paramDictionary[ODATA_PARAMS.$orderby] = builtQuery.$orderby;\n if (utils.isNumber(builtQuery.$skip))\n paramDictionary[ODATA_PARAMS.$skip] = builtQuery.$skip;\n if (utils.isNumber(builtQuery.$top))\n paramDictionary[ODATA_PARAMS.$top] = builtQuery.$top;\n if (utils.isString(builtQuery.$search))\n paramDictionary[ODATA_PARAMS.$search] = builtQuery.$search;\n\n // inline count\n if (utils.isBoolean(builtQuery.$count) && builtQuery.$count)\n paramDictionary[ODATA_PARAMS.$count] = builtQuery.$count;\n }\n\n if (urlOptions.provider) {\n paramDictionary[SF_PARAMS.provider] = urlOptions.provider;\n }\n\n if (urlOptions.culture) {\n paramDictionary[SF_PARAMS.culture] = urlOptions.culture;\n }\n\n if (urlOptions.siteId) {\n paramDictionary[SF_PARAMS.siteId] = urlOptions.siteId;\n }\n\n if (this.fallbackProperties) {\n paramDictionary[SF_PARAMS.fallbackParams] = this.fallbackProperties.join();\n }\n\n if (urlOptions.additionalQueryParams) {\n for (const key in urlOptions.additionalQueryParams) {\n if (urlOptions.additionalQueryParams.hasOwnProperty(key)) {\n paramDictionary[key] = urlOptions.additionalQueryParams[key];\n }\n }\n }\n }\n}\n\n/**\n * Request-construction options shared by concrete low-level request classes.\n */\nexport interface RequestOptionsBaseExtended extends RequestOptionsBase {\n /** URL and entity-set options used to build the request. */\n urlOptions: TypeOptions;\n}\n", "import { HttpTransport, HttpTransportRequest, HttpTransportResponse } from \"./HttpTransport\";\n\nconst XMLHttpRequestDone = 4;\n\n/**\n * Default transport. Sends requests with `XMLHttpRequest`.\n */\nexport class XhrTransport implements HttpTransport {\n /** Sends the request with a new `XMLHttpRequest` and reports its final state. */\n send(request: HttpTransportRequest, onComplete: (response: HttpTransportResponse) => void): void {\n const xhr = new XMLHttpRequest();\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === XMLHttpRequestDone) {\n onComplete({\n status: xhr.status,\n body: xhr.responseText,\n // Parsed on demand: only $batch reads the headers, and minimal XHR fakes may not implement them.\n get headers() {\n return parseResponseHeaders(xhr.getAllResponseHeaders());\n }\n });\n }\n };\n\n if (request.onUploadProgress && xhr.upload) {\n xhr.upload.onprogress = request.onUploadProgress;\n }\n\n xhr.open(request.method, request.url, true);\n\n for (const name of Object.keys(request.headers)) {\n xhr.setRequestHeader(name, request.headers[name]);\n }\n\n xhr.send(request.body);\n }\n}\n\nfunction parseResponseHeaders(raw: string | null): { [name: string]: string } {\n const headers: { [name: string]: string } = {};\n\n for (const line of (raw ?? \"\").split(/\\r?\\n/)) {\n const separator = line.indexOf(\":\");\n if (separator > 0) {\n headers[line.substring(0, separator).trim().toLowerCase()] = line.substring(separator + 1).trim();\n }\n }\n\n return headers;\n}\n", "import { RequestBase, RequestOptionsBaseExtended } from \"./RequestBase\";\nimport { utils } from \"../utils\";\nimport { HEADER_NAMES } from \"../constants\";\nimport { AuthorizationToken, SDKOptions } from \"../Sitefinity\";\nimport { HttpTransport, HttpTransportProgressEvent, HttpTransportResponse } from \"../Transport/HttpTransport\";\nimport { XhrTransport } from \"../Transport/XhrTransport\";\n\nconst defaultTransport = new XhrTransport();\n\n/**\n * Request base class that executes an asynchronous HTTP request through the configured transport.\n *\n * This is an advanced API. Execution uses callbacks rather than promises and invokes the configured\n * success, failure, and progress handlers when appropriate.\n */\nexport class ExecutableRequest extends RequestBase {\n private token: AuthorizationToken;\n private enableUnlimitedChoices: boolean;\n private integrationMode: boolean;\n private transport: HttpTransport;\n\n /**\n * Creates an executable request with authentication and SDK-wide execution options.\n *\n * @param requestOptions Request URL, query, data, and callback options.\n * @param token Optional bearer token or legacy authorization header value.\n * @param sdkOptions SDK-wide handlers and request behavior options.\n */\n constructor(requestOptions: RequestOptionsBaseExtended, token: AuthorizationToken, sdkOptions: SDKOptions) {\n super(requestOptions);\n this.token = token;\n this.successCb = this.successCb || sdkOptions.handlers?.successCb;\n this.failureCb = this.failureCb || sdkOptions.handlers?.failureCb;\n this.enableUnlimitedChoices = sdkOptions.enableUnlimitedChoices;\n this.integrationMode = sdkOptions.integrationMode;\n this.transport = sdkOptions.transport ?? defaultTransport;\n }\n\n /**\n * Sends the request asynchronously.\n *\n * Successful responses are passed to `successCb`; HTTP errors are normalized and passed to\n * `failureCb`. The method returns immediately and does not return a promise or response value.\n */\n execute() {\n this.transport.send(\n {\n method: this.getMethod(),\n url: this.buildUrl(),\n headers: this.buildHeaders(),\n body: utils.serializeToJSON(this.getBody()),\n onUploadProgress: utils.isFunction(this.progressCb)\n ? (event) => this.progressCb(this.getProgressPayload(event))\n : undefined\n },\n (response) => this.handleResponse(response)\n );\n }\n\n /** Maps the transport's upload progress event to the value passed to `progressCb`. */\n protected getProgressPayload(event: HttpTransportProgressEvent): object {\n return event;\n }\n\n private handleResponse(response: HttpTransportResponse) {\n if (response.status > 0) {\n let data = this.parseResponse(response);\n\n if (response.status >= 200 && response.status <= 206) {\n if (this.successCb && utils.isFunction(this.successCb)) {\n this.successCb(data);\n }\n }\n else if (response.status >= 400) {\n // When the data is string, we save the string as message\n // and convert the data to normal object with message property\n if (utils.isString(data)) {\n data = {\n message: data\n };\n }\n\n data.status = response.status;\n\n // in case of errors we would like there to be one handler for all of the errors\n if (this.failureCb && utils.isFunction(this.failureCb)) {\n this.failureCb(data);\n }\n }\n }\n }\n\n private buildHeaders(): { [key: string]: string } {\n // Copied because getHeaders() can return the caller's shared additionalHeaders object.\n const headers = { ...this.getHeaders() };\n\n if (this.token) {\n if (typeof this.token === \"string\") {\n // for backward compatibility\n headers[HEADER_NAMES.authorization] = this.token;\n } else {\n headers[HEADER_NAMES.authorization] = this.token.type + \" \" + this.token.value;\n }\n }\n\n if (this.enableUnlimitedChoices) {\n headers[HEADER_NAMES.choicesBinaryRepresentation] = \"true\";\n }\n\n if (this.integrationMode) {\n headers[HEADER_NAMES.integrationMode] = \"true\";\n }\n\n // for backward compatibility\n headers[HEADER_NAMES.serviceRequest] = \"true\";\n\n return headers;\n }\n}\n\n/**\n * Default success and failure callbacks for SDK requests.\n */\nexport interface ResponseHandlers {\n /** Callback invoked with the parsed successful response. */\n successCb?: Function;\n /** Callback invoked with the parsed error response and HTTP status. */\n failureCb?: Function;\n}\n", "\uFEFFimport { HEADER_NAMES, HTTP_METHODS } from \"../constants\";\nimport { AuthorizationToken, SDKOptions } from \"../Sitefinity\";\nimport { utils } from \"../utils\";\nimport { ExecutableRequest } from \"./ExecutableRequest\";\nimport { RequestOptionsBaseExtended } from \"./RequestBase\";\n\n/** Low-level request for retrieving a collection of items. */\nexport class GetRequest extends ExecutableRequest {\n /** Creates a collection GET request. */\n constructor(requestOptions: RequestOptionsBaseExtended, token: AuthorizationToken, sdkOptions: SDKOptions) {\n super(requestOptions, token, sdkOptions);\n }\n\n /** Returns `GET`, the HTTP method used by this request. */\n getMethod(): string {\n return HTTP_METHODS.get;\n }\n}\n\n/** Low-level request for retrieving one item by key. */\nexport class GetByIdRequest extends ExecutableRequest {\n /** Creates a single-item GET request. */\n constructor(requestOptions: RequestOptionsBaseExtended, token: AuthorizationToken, sdkOptions: SDKOptions) {\n super(requestOptions, token, sdkOptions);\n }\n\n /** Returns `GET`, the HTTP method used by this request. */\n getMethod(): string {\n return HTTP_METHODS.get;\n }\n}\n\n/** Low-level request for deleting one item. */\nexport class DeleteRequest extends ExecutableRequest {\n /** Creates a DELETE request. */\n constructor(requestOptions: RequestOptionsBaseExtended, token: AuthorizationToken, sdkOptions: SDKOptions) {\n super(requestOptions, token, sdkOptions);\n }\n\n /** Returns `DELETE`, the HTTP method used by this request. */\n getMethod(): string {\n return HTTP_METHODS.delete;\n }\n}\n\n/** Low-level request for updating one item with PATCH. */\nexport class UpdateRequest extends ExecutableRequest {\n private data: object;\n private saveTemp: boolean;\n\n /** Creates an update request, optionally using the Sitefinity temporary-save operation. */\n constructor(requestOptions: PutRequestOptionsExtended, token: AuthorizationToken, sdkOptions: SDKOptions) {\n super(requestOptions, token, sdkOptions);\n this.data = requestOptions.data;\n this.saveTemp = requestOptions.saveTemp;\n }\n\n /** Returns `PATCH`, the HTTP method used by this request. */\n getMethod(): string {\n return HTTP_METHODS.patch;\n }\n\n /** Returns the update payload after converting date values to ISO strings. */\n getBody(): object {\n const body = utils.convertDateFieldToISOString(this.data);\n return body;\n }\n\n getHeaders(): { [key: string]: string } {\n const headers = super.getHeaders();\n if (this.saveTemp) {\n headers[HEADER_NAMES.operation] = \"SaveTemp\";\n }\n\n return headers;\n }\n}\n\n/** Low-level request for creating one item with POST. */\nexport class CreateRequest extends ExecutableRequest {\n protected data: object;\n\n /** Creates a request containing the item data to post. */\n constructor(requestOptions: PostRequestOptionsExtended, token: AuthorizationToken, sdkOptions: SDKOptions) {\n super(requestOptions, token, sdkOptions);\n this.data = requestOptions.data;\n }\n\n /** Returns `POST`, the HTTP method used by this request. */\n getMethod(): string {\n return HTTP_METHODS.post;\n }\n\n /** Returns the create payload after converting date values to ISO strings. */\n getBody(): object {\n if (!(this.data instanceof File)) {\n return utils.convertDateFieldToISOString(this.data);\n }\n\n return this.data;\n }\n}\n\n/** Low-level request for retrieving all values in a related property. */\nexport class GetRelatedRequest extends GetByIdRequest {\n private property: string;\n\n /** Creates a related-property GET request. */\n constructor(requestOptions: RelatedRequestOptionsExtended, token: AuthorizationToken, sdkOptions: SDKOptions) {\n super(requestOptions, token, sdkOptions);\n this.property = requestOptions.property;\n }\n\n buildUrl(): string {\n const url = this.urlOptions.baseUrl + this.urlOptions.entitySet + \"(\" + this.key + \")/\" + this.property;\n return this.addQueryParameters(url);\n }\n}\n\n/** Low-level request for retrieving one related value by key. */\nexport class GetRelatedByIdRequest extends GetByIdRequest {\n private property: string;\n private relatedId: string;\n\n /** Creates a related-item GET request. */\n constructor(requestOptions: RelatedByIdRequestOptionsExtended, token: AuthorizationToken, sdkOptions: SDKOptions) {\n super(requestOptions, token, sdkOptions);\n this.property = requestOptions.property;\n this.relatedId = requestOptions.relatedId;\n }\n\n buildUrl(): string {\n const url = this.urlOptions.baseUrl + this.urlOptions.entitySet + \"(\" + this.key + \")/\" + this.property + \"(\" + this.relatedId + \")\";\n return this.addQueryParameters(url);\n }\n}\n\n/** Low-level request for removing all links in a related property. */\nexport class DeleteRelatedRequest extends DeleteRequest {\n private property: string;\n\n /** Creates a related-property DELETE request. */\n constructor(requestOptions: RelatedRequestOptionsExtended, token: AuthorizationToken, sdkOptions: SDKOptions) {\n super(requestOptions, token, sdkOptions);\n this.property = requestOptions.property;\n }\n\n buildUrl(): string {\n const url = this.urlOptions.baseUrl + this.urlOptions.entitySet + \"(\" + this.key + \")/\" + this.property + \"/$ref\";\n return this.addQueryParameters(url);\n }\n}\n\n/** Low-level request for removing one related link by key. */\nexport class DeleteRelatedByIdRequest extends DeleteRequest {\n private property: string;\n private relatedId: string;\n\n /** Creates a related-item DELETE request. */\n constructor(requestOptions: RelatedByIdRequestOptionsExtended, token: AuthorizationToken, sdkOptions: SDKOptions) {\n super(requestOptions, token, sdkOptions);\n this.property = requestOptions.property;\n this.relatedId = requestOptions.relatedId;\n }\n\n buildUrl(): string {\n const url = this.urlOptions.baseUrl + this.urlOptions.entitySet + \"(\" + this.key + \")/\" + this.property + \"(\" + this.relatedId + \")/$ref\";\n return this.addQueryParameters(url);\n }\n}\n\n/** Low-level request for adding a link to a related property. */\nexport class CreateRelatedRequest extends CreateRequest {\n private property: string;\n\n /** Creates a related-property POST request. */\n constructor(requestOptions: RelatedRequestOptionsExtended, token: AuthorizationToken, sdkOptions: SDKOptions) {\n super(requestOptions, token, sdkOptions);\n this.property = requestOptions.property;\n this.key = requestOptions.key;\n }\n\n buildUrl(): string {\n const url = this.urlOptions.baseUrl + this.urlOptions.entitySet + \"(\" + this.key + \")/\" + this.property + \"/$ref\";\n return this.addQueryParameters(url);\n }\n}\n\n/** Low-level request for uploading a file or binary payload. */\nexport class UploadRequest extends CreateRequest {\n private fileName: string;\n private uploadProperties: { [key: string]: string };\n private contentType: string;\n\n /** Creates an upload request with MIME type, file name, and upload properties. */\n constructor(requestOptions: UploadRequestOptionsExtended, token: AuthorizationToken, sdkOptions: SDKOptions) {\n super(requestOptions, token, sdkOptions);\n this.fileName = requestOptions.fileName;\n this.uploadProperties = requestOptions.uploadProperties;\n this.contentType = requestOptions.contentType;\n }\n\n /** Returns upload headers, including the MIME type, encoded file name, and properties. */\n getHeaders(): { [key: string]: string } {\n const headers = super.getHeaders();\n headers[HEADER_NAMES.contentType] = this.contentType || \"application/octet-stream\";\n headers[HEADER_NAMES.fileName] = encodeURIComponent(this.fileName);\n headers[HEADER_NAMES.properties] = JSON.stringify(this.uploadProperties);\n headers[HEADER_NAMES.contentEncoding] = \"identity\";\n return headers;\n }\n\n /** Returns the binary upload payload without JSON date conversion. */\n getBody(): object {\n return this.data;\n }\n\n /** Returns `POST` for new files or `PATCH` when updating an existing item. */\n getMethod(): string {\n if (this.key) {\n return HTTP_METHODS.patch;\n }\n\n return HTTP_METHODS.post;\n }\n}\n\n/** Low-level request for uploading one chunk of a file. */\nexport class UploadChunkRequest extends CreateRequest {\n /** MIME type sent for the chunk. */\n contentType: string;\n /** Ordinal of the chunk being uploaded. */\n chunkOrdinal: number;\n chunkSize: number;\n /** Identifier shared by all chunks in the upload session. */\n chunkedFileUploadSessionId: string;\n /** Total number of chunks in the upload. */\n numberOfChunks: number;\n /** Queue position used for synthetic progress events. */\n positionInQueue: number;\n /** Blob storage provider handling the upload. */\n blobStorageProviderName: string;\n /** Original file name sent with the chunk. */\n fileName: string;\n\n /** Creates a chunk upload request. */\n constructor(requestOptions: UploadChunkRequestOptionsExtended, token: AuthorizationToken, sdkOptions: SDKOptions) {\n super(requestOptions, token, sdkOptions);\n this.contentType = requestOptions.fileMimeType;\n this.chunkOrdinal = requestOptions.chunkOrdinal;\n this.chunkedFileUploadSessionId = requestOptions.chunkedFileUploadSessionId;\n this.chunkSize = requestOptions.chunkSize;\n this.numberOfChunks = requestOptions.numberOfChunks;\n this.positionInQueue = requestOptions.positionOfChunkInQueue;\n this.blobStorageProviderName = requestOptions.blobStorageProviderName;\n this.data = requestOptions.chunkBlob;\n this.fileName = requestOptions.fileName;\n }\n\n /** Returns chunk headers required by the Sitefinity chunk upload service. */\n getHeaders(): { [key: string]: string } {\n const headers = super.getHeaders();\n headers[HEADER_NAMES.contentEncoding] = \"identity\";\n headers[HEADER_NAMES.contentType] = this.contentType || \"application/octet-stream\";\n headers[HEADER_NAMES.chunkOrdinal] = this.chunkOrdinal.toString();\n headers[HEADER_NAMES.chunkedFileUploadSessionId] = this.chunkedFileUploadSessionId;\n headers[HEADER_NAMES.chunkSize] = this.chunkSize.toString();\n headers[HEADER_NAMES.blobStorageProviderName] = this.blobStorageProviderName.toString();\n headers[HEADER_NAMES.fileName] = encodeURIComponent(this.fileName);\n\n return headers;\n }\n\n /** Returns the binary content of this chunk. */\n getBody(): object {\n return this.data;\n }\n\n /** Returns `POST`, the HTTP method used for a chunk. */\n getMethod(): string {\n return HTTP_METHODS.post;\n }\n\n /** Reports chunk progress as the position in the upload queue rather than bytes sent. */\n protected override getProgressPayload(): object {\n return {\n lengthComputable: true,\n loaded: this.positionInQueue,\n total: this.numberOfChunks\n };\n }\n}\n\n/** Low-level request for committing all chunks in an upload session. */\nexport class CommitChunksRequest extends CreateRequest {\n /** Creates a chunk-commit request and its server operation payload. */\n constructor(requestOptions: CommitChunksRequestOptionsExtended, token: AuthorizationToken, sdkOptions: SDKOptions) {\n super(requestOptions, token, sdkOptions);\n\n this.action = \"Default.CommitChunks\";\n\n this.data = {\n // ! this must be the param name that the operation provider on the server accepts\n commitChunksDto: {\n chunkedFileUploadSessionId: requestOptions.chunkedFileUploadSessionId,\n contentType: requestOptions.contentType,\n fileTotalSize: requestOptions.fileTotalSize,\n numberOfChunks: requestOptions.numberOfChunks,\n fileName: requestOptions.fileName,\n blobStorageProviderName: requestOptions.blobStorageProviderName,\n itemId: requestOptions.itemId || null,\n // ! must be named properties\n properties: requestOptions.uploadProperties\n }\n };\n }\n\n /** Returns `POST`, the HTTP method used to commit the upload. */\n getMethod(): string {\n return HTTP_METHODS.post;\n }\n}\n\n/**\n * Extended options for low-level POST requests.\n */\nexport interface PostRequestOptionsExtended extends RequestOptionsBaseExtended {\n /** Item or operation payload sent in the request body. */\n data?: object;\n}\n\n/**\n * Extended options for low-level update requests.\n */\nexport interface PutRequestOptionsExtended extends PostRequestOptionsExtended {\n /** Sends the Sitefinity `SaveTemp` operation header when true. */\n saveTemp: boolean;\n}\n\n/**\n * Extended options for low-level relation requests.\n */\nexport interface RelatedRequestOptionsExtended extends PostRequestOptionsExtended {\n /** Related property name addressed by the request. */\n property: string;\n}\n\n/**\n * Extended options for low-level requests that address one related item.\n */\nexport interface RelatedByIdRequestOptionsExtended extends RelatedRequestOptionsExtended {\n /** Key of the related item addressed by the request. */\n relatedId: string;\n}\n\n/**\n * Extended options for low-level file upload requests.\n */\nexport interface UploadRequestOptionsExtended extends PostRequestOptionsExtended {\n /** File name sent in the upload headers. */\n fileName: string;\n /** MIME type sent in the `Content-Type` header. */\n contentType: string;\n /** Sitefinity properties serialized into the upload request headers. */\n uploadProperties: { [key: string]: string };\n}\n\n/**\n * Extended options for uploading one chunk of a file.\n */\nexport interface UploadChunkRequestOptionsExtended extends PostRequestOptionsExtended {\n /** MIME type of the complete file. */\n fileMimeType: string;\n /** Original file name. */\n fileName: string;\n /** Identifier of the chunked upload session. */\n chunkedFileUploadSessionId: string;\n /** Size of each uploaded chunk in bytes. */\n chunkSize: number;\n /** Ordinal of the chunk being uploaded. */\n chunkOrdinal: number;\n /** Total number of chunks in the upload. */\n numberOfChunks: number;\n /** Binary content for this chunk. */\n chunkBlob: Blob;\n /** Name of the blob storage provider. */\n blobStorageProviderName: string;\n /** Optional queue position used for progress reporting. */\n positionOfChunkInQueue?: number;\n}\n\n/**\n * Extended options for committing a completed chunk-upload session.\n */\nexport interface CommitChunksRequestOptionsExtended extends PostRequestOptionsExtended {\n /** Identifier of the chunked upload session. */\n chunkedFileUploadSessionId: string\n /** Name of the blob storage provider. */\n blobStorageProviderName: string;\n /** MIME type of the committed file. */\n contentType: string;\n /** Total file size in bytes. */\n fileTotalSize: number;\n /** Number of chunks uploaded. */\n numberOfChunks: number;\n /** Original file name. */\n fileName: string;\n /** Sitefinity properties associated with the uploaded file. */\n uploadProperties: { [key: string]: string };\n /** Existing item key when committing an update. */\n itemId?: string;\n}\n", "\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", "\uFEFFimport { GetRequest, GetByIdRequest, CreateRequest, UpdateRequest, DeleteRequest, GetRelatedRequest, GetRelatedByIdRequest, DeleteRelatedRequest, DeleteRelatedByIdRequest, CreateRelatedRequest, UploadRequest, PostRequestOptionsExtended, PutRequestOptionsExtended, RelatedRequestOptionsExtended, RelatedByIdRequestOptionsExtended, UploadRequestOptionsExtended, UploadChunkRequest, CommitChunksRequest, CommitChunksRequestOptionsExtended, UploadChunkRequestOptionsExtended } from \"./Request\";\nimport { AuthorizationToken, SDKOptions } from \"../Sitefinity\";\nimport { BatchRequest, BatchRequestOptionsExtended } from \"./BatchRequest\";\nimport { RequestOptionsBaseExtended } from \"./RequestBase\";\n\n/**\n * Creates low-level request objects for data, relation, upload, and batch operations.\n *\n * This is an advanced API. Requests must be executed explicitly and report results through callbacks.\n */\nexport class RequestFactory {\n /** Authentication token applied to requests created by this factory. */\n public token: AuthorizationToken;\n private options: SDKOptions;\n\n /** Creates a request factory using the supplied SDK-wide options. */\n constructor(options: SDKOptions) {\n this.options = options;\n }\n\n /** Creates a request for retrieving a collection. */\n get(parameters: RequestOptionsBaseExtended) {\n return new GetRequest(parameters, this.token, this.options);\n }\n\n /** Creates a request for retrieving one item by key. */\n getSingle(parameters: RequestOptionsBaseExtended) {\n return new GetByIdRequest(parameters, this.token, this.options);\n }\n\n /** Creates a request for creating one item. */\n create(parameters: PostRequestOptionsExtended) {\n return new CreateRequest(parameters, this.token, this.options);\n }\n\n /** Creates a request for updating one item. */\n update(parameters: PutRequestOptionsExtended) {\n return new UpdateRequest(parameters, this.token, this.options);\n }\n\n /** Creates a request for deleting one item. */\n destroy(parameters: RequestOptionsBaseExtended) {\n return new DeleteRequest(parameters, this.token, this.options);\n }\n\n /** Creates a request for retrieving a related property value. */\n getProperty(parameters: RelatedRequestOptionsExtended) {\n return new GetRelatedRequest(parameters, this.token, this.options);\n }\n\n /** Creates a request for retrieving related items. */\n getRelated(parameters: RelatedRequestOptionsExtended) {\n return new GetRelatedRequest(parameters, this.token, this.options);\n }\n\n /** Creates a request for retrieving one related item by key. */\n getRelatedById(parameters: RelatedByIdRequestOptionsExtended) {\n return new GetRelatedByIdRequest(parameters, this.token, this.options);\n }\n\n /** Creates a request for removing all related links for a property. */\n destroyRelated(parameters: RelatedRequestOptionsExtended) {\n return new DeleteRelatedRequest(parameters, this.token, this.options);\n }\n\n /** Creates a request for removing one related link by key. */\n destroyRelatedById(parameters: RelatedByIdRequestOptionsExtended) {\n return new DeleteRelatedByIdRequest(parameters, this.token, this.options);\n }\n\n /** Creates a request for adding a related link. */\n createRelated(parameters: RelatedRequestOptionsExtended) {\n return new CreateRelatedRequest(parameters, this.token, this.options);\n }\n\n /** Creates a request for uploading a file or binary payload. */\n upload(parameters: UploadRequestOptionsExtended) {\n return new UploadRequest(parameters, this.token, this.options);\n }\n\n /** Creates a request for uploading one file chunk. */\n uploadChunk(parameters: UploadChunkRequestOptionsExtended) {\n return new UploadChunkRequest(parameters, this.token, this.options);\n }\n\n /** Creates a request that commits an uploaded chunk session. */\n commitChunks(parameters: CommitChunksRequestOptionsExtended) {\n return new CommitChunksRequest(parameters, this.token, this.options);\n }\n\n /** Creates a multipart batch request; call its methods to add operations, then call `execute()`. */\n batch(parameters: RequestOptionsBaseExtended) {\n const batchParams = parameters as BatchRequestOptionsExtended;\n batchParams.factory = this;\n return new BatchRequest(batchParams, this.token, this.options);\n }\n}\n", "/**\n * Helpers for splitting file content into chunks and normalizing upload input.\n */\nexport class ChunkedFileUploadUtilities {\n /**\n * Splits a `Blob` or base64-encoded binary string into sequential chunks.\n *\n * Blob input is sliced directly. A base64 string is decoded with `atob`\n * into a Blob using `contentTypeMime` before it is sliced. Chunk ordinals\n * start at zero; the final chunk can be smaller than `chunkSize`.\n *\n * @param file Blob data or a base64-encoded binary string.\n * @param chunkSize Maximum size of each chunk in bytes.\n * @param contentTypeMime MIME type assigned to each chunk and decoded Blob.\n * @returns The chunks, their total count, and the original file size in bytes.\n *\n * @example\n * ```ts\n * const result = new ChunkedFileUploadUtilities().chunkFile(\n * base64File,\n * 5 * 1024 * 1024,\n * \"image/jpeg\"\n * );\n *\n * result.chunks.forEach(({ ordinal, content }) => {\n * console.log(`Chunk ${ordinal}: ${content.size} bytes`);\n * });\n * ```\n */\n chunkFile(file: Blob | string, chunkSize: number, contentTypeMime: string): ChunkFileResult {\n let fileInternal: Blob;\n\n if (typeof file === \"string\")\n fileInternal = this.base64ToBlob(file, chunkSize, contentTypeMime);\n else {\n fileInternal = file as Blob;\n }\n\n const fileSize = fileInternal.size;\n const result: Array<FileUploadChunk> = [];\n let chunkOrdinal = 0;\n let offset = 0;\n let currentOffset = chunkSize;\n\n while (offset <= fileSize) {\n const chunk = fileInternal.slice(offset, currentOffset, contentTypeMime);\n offset = currentOffset;\n currentOffset = currentOffset + chunkSize;\n\n result.push({\n ordinal: chunkOrdinal,\n content: chunk\n });\n\n chunkOrdinal++;\n }\n\n return {\n chunks: result,\n totalChunksCount: result.length,\n fileTotalSize: fileSize\n };\n }\n\n /**\n * Converts base64 binary content to a Blob before chunking.\n *\n * The input must contain the base64 payload expected by `atob`; a data URL\n * prefix is not removed automatically.\n */\n private base64ToBlob(base64String, chunkSize, contentType = \"\"): Blob {\n const byteCharacters = atob(base64String);\n const byteArrays = [];\n for (let offset = 0; offset < byteCharacters.length; offset += chunkSize) {\n const slice = byteCharacters.slice(offset, offset + chunkSize);\n const byteNumbers = new Array(slice.length);\n for (let i = 0; i < slice.length; i++) {\n byteNumbers[i] = slice.charCodeAt(i);\n }\n const byteArray = new Uint8Array(byteNumbers);\n byteArrays.push(byteArray);\n }\n\n const blob = new Blob(byteArrays, { type: contentType });\n return blob;\n }\n}\n\n/**\n * One chunk produced by {@link ChunkedFileUploadUtilities.chunkFile}.\n */\nexport interface FileUploadChunk {\n /** Zero-based position of this chunk in the complete file. */\n ordinal: number,\n /** Binary content for this chunk. */\n content: Blob\n}\n\n/**\n * Result returned after a file is divided into upload chunks.\n */\nexport interface ChunkFileResult {\n /** Chunks in ascending ordinal order. */\n chunks: Array<FileUploadChunk>,\n /** Number of chunks in `chunks`. */\n totalChunksCount: number,\n /** Size of the source file in bytes. */\n fileTotalSize: number\n}\n", "import { CreateRequestOptions } from \"../Data\";\nimport { CommitChunksRequestOptionsExtended } from \"../Requests/Request\";\nimport { RequestOptionsBaseExtended } from \"../Requests/RequestBase\";\nimport { RequestFactory } from \"../Requests/RequestFactory\";\nimport { TypeOptions } from \"../Sitefinity\";\nimport { ChunkedFileUploadUtilities, ChunkFileResult } from \"./chunked-file-upload.utilities\";\n\n/**\n * Provides the client-side workflow for uploading a file in chunks.\n *\n * A typical upload calls `getChunkUploadInfo`, uses the returned session and\n * chunk settings with `uploadChunk`, and then calls `commitChunks`. If an\n * upload cannot be completed, call `cleanUpChunks` to remove the server-side\n * chunks. Use `chunkFile` to split a `Blob` or base64 string before uploading.\n */\nexport class ChunkUploadSdk {\n private urlOptions: TypeOptions;\n private factory: RequestFactory;\n\n constructor(urlOptions: TypeOptions, factory: RequestFactory) {\n this.urlOptions = urlOptions;\n this.factory = factory;\n }\n\n /**\n * Gets the session, provider, and chunk settings required to start an upload.\n *\n * The `data.libraryId` field must identify the parent library, not a library\n * folder. The inherited callbacks and query options are optional.\n *\n * @param parameters Request data and optional callbacks.\n * @param parameters.data.libraryId Parent library identifier.\n * @param parameters.successCb Receives a {@link ChunkUploadInfoDTO} on success.\n * @param parameters.failureCb Receives the server error response on failure.\n * @param parameters.progressCb Receives upload progress events when supported.\n */\n getChunkUploadInfo(parameters: GetChunkUploadInfoRequestOptions) {\n Guard.isNotNull(parameters, \"parameters\");\n Guard.isNotNull(parameters.data, \"parameters.data\");\n Guard.isNotNull(parameters.data.libraryId, \"parameters.data.libraryId\");\n\n const options: RequestOptionsBaseExtended = {\n urlOptions: this.urlOptions,\n action: `Default.GetChunkUploadInfo(libraryId=${parameters.data.libraryId})`,\n successCb: parameters.successCb,\n failureCb: parameters.failureCb,\n progressCb: parameters.progressCb,\n fallbackProperties: parameters.fallbackProperties,\n query: parameters.query\n };\n\n const request = this.factory.get(options);\n\n request.execute();\n }\n\n /**\n * Sends one chunk to the server.\n *\n * Upload chunks in ordinal order from `0` through `numberOfChunks - 1`.\n * `chunkSize` is the chunk size in bytes, while `chunkBlob` contains the\n * current chunk and may be smaller for the final chunk. The session,\n * provider, ordinal, count, size, and blob fields are required.\n *\n * @param parameters Chunk data and optional callbacks.\n * @param parameters.data.fileMimeType MIME type of the complete file.\n * @param parameters.data.fileName File name sent with the chunk.\n * @param parameters.data.chunkedFileUploadSessionId Session from\n * `getChunkUploadInfo`.\n * @param parameters.data.chunkSize Size of this chunk in bytes.\n * @param parameters.data.chunkOrdinal Zero-based ordinal of this chunk.\n * @param parameters.data.numberOfChunks Total chunks in the upload.\n * @param parameters.data.positionOfChunkInQueue Optional queue position used\n * to calculate progress for concurrent uploads.\n * @param parameters.data.chunkBlob Bytes for this chunk.\n * @param parameters.data.blobStorageProviderName Provider from the upload info.\n * @param parameters.successCb Receives a {@link ChunkUploadResult} on success.\n * @param parameters.failureCb Receives the server error response on failure.\n * @param parameters.progressCb Receives upload progress events when supported.\n */\n uploadChunk(parameters: UploadChunkRequestOptions) {\n Guard.isNotNull(parameters, \"parameters\");\n Guard.isNotNull(parameters.data, \"parameters.data\");\n Guard.isNotNull(parameters.data.chunkSize, \"parameters.data.chunkSize\");\n Guard.isNotNull(parameters.data.chunkedFileUploadSessionId, \"parameters.data.chunkedFileUploadSessionId\");\n Guard.isNotNull(parameters.data.chunkOrdinal, \"parameters.data.chunkOrdinal\");\n Guard.isNotNull(parameters.data.numberOfChunks, \"parameters.data.numberOfChunks\");\n Guard.isNotNull(parameters.data.chunkBlob, \"parameters.data.chunkBlob\");\n Guard.isNotNull(parameters.data.blobStorageProviderName, \"parameters.data.blobStorageProviderName\");\n\n const request = this.factory.uploadChunk({\n urlOptions: this.urlOptions,\n fileMimeType: parameters.data.fileMimeType,\n chunkSize: parameters.data.chunkSize,\n chunkedFileUploadSessionId: parameters.data.chunkedFileUploadSessionId,\n chunkOrdinal: parameters.data.chunkOrdinal,\n numberOfChunks: parameters.data.numberOfChunks,\n chunkBlob: parameters.data.chunkBlob,\n blobStorageProviderName: parameters.data.blobStorageProviderName,\n fileName: parameters.data.fileName,\n // optional\n positionOfChunkInQueue: parameters.data.positionOfChunkInQueue,\n successCb: parameters.successCb,\n failureCb: parameters.failureCb,\n progressCb: parameters.progressCb,\n fallbackProperties: parameters.fallbackProperties,\n query: parameters.query\n });\n\n request.execute();\n }\n\n\n /**\n * Commits all uploaded chunks as one media file.\n *\n * Call this only after every ordinal has uploaded successfully. The server\n * validates `numberOfChunks` and `fileTotalSize` before assembling the file.\n * Set `data.itemId` when replacing an existing media item; omit it when\n * creating a new item. A successful commit completes the upload session.\n *\n * @param parameters Commit data and optional callbacks.\n * @param parameters.data.chunkedFileUploadSessionId Session used by the chunks.\n * @param parameters.data.contentType MIME type of the complete file.\n * @param parameters.data.fileTotalSize Complete file size in bytes.\n * @param parameters.data.numberOfChunks Number of uploaded chunks.\n * @param parameters.data.name File name.\n * @param parameters.data.blobStorageProviderName Provider used for the chunks.\n * @param parameters.data.uploadProperties Media item properties such as\n * `Title` and `UrlName`.\n * @param parameters.data.itemId Optional existing item identifier for updates.\n * @param parameters.successCb Receives the commit response on success.\n * @param parameters.failureCb Receives the server error response on failure.\n * @param parameters.progressCb Receives upload progress events when supported.\n */\n commitChunks(parameters: CommitChunksRequestOptions) {\n Guard.isNotNull(parameters, \"parameters\");\n Guard.isNotNull(parameters.data, \"parameters.data\");\n Guard.isNotNull(parameters.data.chunkedFileUploadSessionId, \"parameters.data.chunkedFileUploadSessionId\");\n Guard.isNotNull(parameters.data.name, \"parameters.data.name\");\n Guard.isNotNull(parameters.data.uploadProperties, \"parameters.data.uploadProperties\");\n Guard.isNotNull(parameters.data.numberOfChunks, \"parameters.data.numberOfChunks\");\n Guard.isNotNull(parameters.data.fileTotalSize, \"parameters.data.fileTotalSize\");\n Guard.isNotNull(parameters.data.blobStorageProviderName, \"parameters.data.blobStorageProviderName\");\n\n const options: CommitChunksRequestOptionsExtended = {\n urlOptions: this.urlOptions,\n chunkedFileUploadSessionId: parameters.data.chunkedFileUploadSessionId,\n contentType: parameters.data.contentType,\n fileName: parameters.data.name,\n uploadProperties: parameters.data.uploadProperties,\n numberOfChunks: parameters.data.numberOfChunks,\n fileTotalSize: parameters.data.fileTotalSize,\n blobStorageProviderName: parameters.data.blobStorageProviderName,\n // Optional: used for update, can be null for create\n itemId: parameters.data.itemId,\n successCb: parameters.successCb,\n failureCb: parameters.failureCb,\n progressCb: parameters.progressCb,\n fallbackProperties: parameters.fallbackProperties,\n query: parameters.query\n };\n\n const request = this.factory.commitChunks(options);\n request.execute();\n }\n\n /**\n * Deletes all chunks associated with an incomplete upload session.\n *\n * Call this after a failed chunk upload or failed commit when the session\n * should not be resumed. Cleanup does not commit a file and requires the\n * session and provider used by the upload.\n *\n * @param parameters Session data and optional callbacks.\n * @param parameters.data.chunkedFileUploadSessionId Session to clean up.\n * @param parameters.data.blobStorageProviderName Provider holding the chunks.\n * @param parameters.successCb Called after cleanup succeeds.\n * @param parameters.failureCb Receives the server error response on failure.\n * @param parameters.progressCb Receives request progress events when supported.\n */\n cleanUpChunks(parameters: CleanUpChunksRequestOptions) {\n Guard.isNotNull(parameters, \"parameters\");\n Guard.isNotNull(parameters.data, \"parameters.data\");\n Guard.isNotNull(parameters.data.chunkedFileUploadSessionId, \"parameters.data.chunkedFileUploadSessionId\");\n Guard.isNotNull(parameters.data.blobStorageProviderName, \"parameters.data.blobStorageProviderName\");\n\n const request = this.factory.create({\n urlOptions: this.urlOptions,\n action: \"Default.CleanUpChunks\",\n data: {\n chunkedFileUploadSessionId: parameters.data.chunkedFileUploadSessionId,\n blobStorageProviderName: parameters.data.blobStorageProviderName\n },\n successCb: parameters.successCb,\n failureCb: parameters.failureCb,\n progressCb: parameters.progressCb,\n fallbackProperties: parameters.fallbackProperties,\n query: parameters.query\n });\n\n request.execute();\n }\n\n /**\n * Splits a file into uploadable chunks.\n *\n * A `Blob` is sliced directly. A base64 string is decoded with `atob` into\n * a `Blob` using `contentTypeMime`, then sliced. Each returned chunk has a\n * zero-based ordinal, and the last chunk can be smaller than `chunkSize`.\n *\n * @param file Source `Blob` or base64-encoded binary string.\n * @param chunkSize Maximum chunk size in bytes.\n * @param contentTypeMime MIME type assigned to the chunks and decoded Blob.\n * @returns Chunk blobs, their zero-based ordinals, total count, and file size.\n *\n * @example\n * ```ts\n * const upload = sitefinity.data(typeOptions).chunkUpload;\n * const result = upload.chunkFile(file, 5 * 1024 * 1024, \"image/jpeg\");\n *\n * for (const chunk of result.chunks) {\n * upload.uploadChunk({\n * data: {\n * fileMimeType: \"image/jpeg\",\n * chunkedFileUploadSessionId: sessionId,\n * chunkSize: chunk.content.size,\n * chunkOrdinal: chunk.ordinal,\n * numberOfChunks: result.totalChunksCount,\n * chunkBlob: chunk.content,\n * blobStorageProviderName: providerName\n * },\n * successCb: onChunkUploaded,\n * failureCb: onUploadFailed\n * });\n * }\n * ```\n */\n chunkFile(file: Blob | string, chunkSize: number, contentTypeMime: string): ChunkFileResult {\n Guard.isNotNull(file, \"file\");\n Guard.isNotNull(chunkSize, \"chunkSize\");\n\n const utils = new ChunkedFileUploadUtilities();\n return utils.chunkFile(file, chunkSize, contentTypeMime);\n }\n}\n\nclass Guard {\n static isNotNull<T>(value: T, parameterName: string) {\n if (typeof(value) === \"number\") {\n return;\n }\n\n if (!value) {\n Guard.throwException(parameterName);\n }\n }\n\n private static throwException(parameterName) {\n throw `parameter ${parameterName} is required.`;\n }\n}\n\n//#region interfaces\n\n/**\n * Options for uploading one file chunk.\n *\n * The inherited `successCb`, `failureCb`, `progressCb`, `query`, and\n * `fallbackProperties` fields are optional. All fields in `data` are required\n * except `positionOfChunkInQueue`.\n */\nexport interface UploadChunkRequestOptions extends CreateRequestOptions {\n /**\n * Values used to construct the chunk request.\n */\n data: {\n /**\n * MIME type of the complete file.\n */\n fileMimeType: string;\n /**\n * File name sent with the chunk.\n */\n fileName: string;\n /**\n * Session identifier returned by `getChunkUploadInfo`.\n */\n chunkedFileUploadSessionId: string;\n /**\n * Size of this chunk in bytes.\n */\n chunkSize: number;\n /**\n * Zero-based ordinal of this chunk.\n */\n chunkOrdinal: number;\n /**\n * Total number of chunks in the file.\n */\n numberOfChunks: number;\n /**\n * Optional queue position used to calculate progress for concurrent uploads.\n */\n positionOfChunkInQueue?: number;\n /**\n * Binary data for this chunk.\n */\n chunkBlob: Blob;\n /**\n * Name of the blob storage provider holding the upload session.\n */\n blobStorageProviderName: string;\n }\n}\n\n/**\n * Options for committing uploaded chunks into a media file.\n *\n * The inherited callbacks and request query fields are optional. All fields in\n * `data` are required except `itemId`, which is used only for updates.\n */\nexport interface CommitChunksRequestOptions extends CreateRequestOptions {\n /**\n * Values used to construct the commit request.\n */\n data: {\n /**\n * Session identifier used for all chunks.\n */\n chunkedFileUploadSessionId: string;\n /**\n * MIME type of the complete file.\n */\n contentType: string;\n /**\n * Complete file size in bytes.\n */\n fileTotalSize: number;\n /**\n * Number of chunks uploaded for this session.\n */\n numberOfChunks: number;\n /**\n * File name.\n */\n name: string;\n /**\n * Name of the blob storage provider holding the chunks.\n */\n blobStorageProviderName: string;\n /**\n * Media properties such as `Title` and `UrlName`.\n */\n uploadProperties: { [key: string]: string };\n /**\n * Existing media item identifier when replacing a file.\n */\n itemId?: string;\n }\n}\n\n/**\n * Options for retrieving chunk-upload settings for a media library.\n *\n * The inherited callbacks and request query fields are optional. `libraryId`\n * must identify the parent library, not a folder.\n */\nexport interface GetChunkUploadInfoRequestOptions extends CreateRequestOptions {\n /**\n * Values used to construct the information request.\n */\n data: {\n /**\n * Parent media library in which the file will be uploaded.\n */\n libraryId: string;\n }\n}\n\n/**\n * Options for deleting all chunks from an upload session.\n *\n * The inherited callbacks and request query fields are optional. Both fields\n * in `data` are required.\n */\nexport interface CleanUpChunksRequestOptions extends CreateRequestOptions {\n /**\n * Values used to construct the cleanup request.\n */\n data: {\n /**\n * Session identifier whose chunks should be deleted.\n */\n chunkedFileUploadSessionId: string;\n /**\n * Name of the blob storage provider holding the chunks.\n */\n blobStorageProviderName: string;\n }\n}\n\n/**\n * Server-provided settings and identifiers for a chunk upload session.\n */\nexport interface ChunkUploadInfoDTO {\n /**\n * Whether the provider supports chunked uploads.\n */\n ProviderSupportsChunkUpload: boolean;\n /**\n * Name of the blob storage provider to use for this session.\n */\n BlobStorageProviderName: string;\n /**\n * Identifier of the current chunk upload session.\n */\n ChunkedFileUploadSessionId: string,\n /**\n * Recommended chunk size in bytes.\n */\n ChunkSize: number,\n /**\n * Maximum number of retries for an individual chunk.\n */\n MaxRetryCountForChunk: number,\n /**\n * Maximum simultaneous chunk requests for the session.\n */\n MaxSimultaneousChunkUploadRequestsPerSession: number\n}\n\n/**\n * Server response returned after a chunk upload request.\n */\nexport interface ChunkUploadResult {\n /**\n * Whether the chunk was uploaded successfully.\n */\n SuccessfullyUploaded: boolean,\n /**\n * Identifier of the chunk upload session.\n */\n ChunkedFileUploadSessionId: string\n}\n//#endregion\n", "\uFEFFimport { ChunkUploadSdk } from \"./chunk-upload/chunk-upload.sdk\";\nimport { SF_PARAMS } from \"./constants\";\nimport { Query } from \"./Query\";\nimport { ExecutableRequest } from \"./Requests/ExecutableRequest\";\nimport { RequestFactory } from \"./Requests/RequestFactory\";\nimport { TypeOptions } from \"./Sitefinity\";\n\n/**\n * Client for issuing requests against one Sitefinity entity set.\n */\nexport class Data {\n private urlOptions: TypeOptions;\n private factory: RequestFactory;\n\n /**\n * Creates an entity-set data client.\n *\n * @param urlOptions Entity-set and request URL options.\n * @param factory Internal request factory used to create SDK requests.\n */\n constructor(urlOptions: TypeOptions, factory: RequestFactory) {\n this.urlOptions = urlOptions;\n this.factory = factory;\n }\n\n\n /**\n * Returns the chunk-upload service for this entity set.\n *\n * Use it for uploads that must be sent in chunks and committed after all chunks\n * complete. A new service instance is returned for each access.\n *\n * @returns The chunk-upload service.\n */\n public get chunkUpload(): ChunkUploadSdk {\n const service = new ChunkUploadSdk(this.urlOptions, this.factory);\n return service;\n }\n\n /**\n * Executes a GET request to retrieve a collection of items.\n *\n * @param parameters Query, action, fallback-property, and callback options.\n * @returns Nothing. The result is delivered to `successCb` or `failureCb`.\n * @throws If request creation fails.\n */\n get(parameters: RequestOptionsBase) {\n const request = this.factory.get({\n urlOptions: this.urlOptions,\n query: parameters.query,\n action: parameters.action,\n successCb: parameters.successCb,\n failureCb: parameters.failureCb,\n fallbackProperties: parameters.fallbackProperties\n });\n\n request.execute();\n }\n\n /**\n * Executes a GET request to retrieve operations for an item or its parent collection.\n *\n * When `key` is omitted, `parentId` is added to the operations URL.\n *\n * @param parameters Operation and callback options.\n * @returns Nothing. The result is delivered to `successCb` or `failureCb`.\n * @throws If the underlying request cannot be created.\n */\n getOperations(parameters: OperationsRequestOptions) {\n let request: ExecutableRequest;\n let action = \"operations\";\n\n // Set parentId if no item key is passed\n if (!parameters.key)\n action += `?${SF_PARAMS.parentId}=` + parameters.parentId;\n\n const params: any = {\n urlOptions: this.urlOptions,\n action: action,\n successCb: parameters.successCb,\n failureCb: parameters.failureCb\n };\n\n if (parameters.key) {\n params.key = parameters.key;\n request = this.factory.getSingle(params);\n } else {\n request = this.factory.get(params);\n }\n\n request.execute();\n }\n\n /**\n * Executes a GET request for a single item.\n *\n * @param parameters Item key, query, action, and callback options.\n * @returns Nothing. The item is delivered to `successCb` or `failureCb`.\n * @throws If `key` is missing.\n */\n getSingle(parameters: RequestOptionsBase) {\n if (!(parameters.key))\n throw \"Parameter 'key' is required!\";\n\n const request = this.factory.getSingle({\n urlOptions: this.urlOptions,\n key: parameters.key,\n query: parameters.query,\n action: parameters.action,\n successCb: parameters.successCb,\n failureCb: parameters.failureCb,\n fallbackProperties: parameters.fallbackProperties\n });\n\n request.execute();\n }\n\n /**\n * Executes a POST request for a single item.\n *\n * @param parameters Item data, optional key/action, and callbacks.\n * @returns Nothing. The created item or error is delivered to a callback.\n * @throws If `data` is missing.\n */\n create(parameters: CreateRequestOptions) {\n if (!(parameters.data))\n throw \"Parameter 'data' is required!\";\n\n const request = this.factory.create({\n urlOptions: this.urlOptions,\n key: parameters.key,\n query: parameters.query,\n data: parameters.data,\n action: parameters.action,\n successCb: parameters.successCb,\n failureCb: parameters.failureCb\n });\n\n request.execute();\n }\n\n /**\n * Executes a PATCH request to update a single item.\n *\n * @param parameters Item key, update data, optional temporary-save flag, and callbacks.\n * @returns Nothing. The updated item or error is delivered to a callback.\n * @throws If `key` or `data` is missing.\n *\n * @example\n * const data = sf.data({\n * entitySet: \"newsitems\",\n * provider: \"OpenAccessDataProvider\",\n * culture: \"en\"\n * });\n *\n * data.update({\n * key: \"00000000-0000-0000-0000-000000000000\",\n * data: { Title: \"Updated news title\" },\n * saveTemp: true,\n * successCb,\n * failureCb\n * });\n */\n update(parameters: UpdateRequestOptions) {\n if (parameters.key === undefined || parameters.key === null || !parameters.data)\n throw \"Parameters: 'data' and 'key' are required!\";\n\n const request = this.factory.update({\n urlOptions: this.urlOptions,\n key: parameters.key,\n data: parameters.data,\n action: parameters.action,\n saveTemp: parameters.saveTemp,\n successCb: parameters.successCb,\n failureCb: parameters.failureCb\n });\n\n request.execute();\n }\n\n /**\n * Executes a DELETE request to delete a single item.\n *\n * @param parameters Item key, optional action, and callbacks.\n * @returns Nothing. The result is delivered to `successCb` or `failureCb`.\n * @throws If `key` is missing.\n */\n destroy(parameters: RequestOptionsBase) {\n if (!(parameters.key))\n throw \"Parameter 'key' is required!\";\n\n const request = this.factory.destroy({\n urlOptions: this.urlOptions,\n key: parameters.key,\n action: parameters.action,\n successCb: parameters.successCb,\n failureCb: parameters.failureCb\n });\n\n request.execute();\n }\n\n /**\n * Executes a POST request to execute a workflow operation for a single item.\n *\n * @param parameters Item key, operation data, and callbacks.\n * @returns Nothing. The operation result is delivered to a callback.\n * @throws If `key` or `data` is missing.\n */\n operation(parameters: CreateRequestOptions) {\n if (parameters.key === undefined || parameters.key === null || !parameters.data)\n throw \"Parameters: 'data' and 'key' are required!\";\n\n const request = this.factory.create({\n urlOptions: this.urlOptions,\n key: parameters.key,\n action: \"operation\",\n data: parameters.data,\n successCb: parameters.successCb,\n failureCb: parameters.failureCb\n });\n\n request.execute();\n }\n\n /**\n * Executes a GET request to retrieve a property of a single item.\n *\n * @param parameters Item key, property name, and callbacks.\n * @returns Nothing. The property value is delivered to a callback.\n * @throws If `key` or `property` is missing.\n */\n getProperty(parameters: PropertyRequestOptions) {\n if (parameters.key === undefined || parameters.key === null || !parameters.property)\n throw \"Parameters: 'data' and 'property' are required!\";\n\n const request = this.factory.getProperty({\n urlOptions: this.urlOptions,\n key: parameters.key,\n property: parameters.property,\n successCb: parameters.successCb,\n failureCb: parameters.failureCb\n });\n\n request.execute();\n }\n\n /**\n * Executes a GET request to retrieve a related property value of a single item.\n *\n * @param parameters Item key, relation property name, and callbacks.\n * @returns Nothing. The related value is delivered to a callback.\n * @throws If `key` or `property` is missing.\n */\n getRelated(parameters: PropertyRequestOptions) {\n if (parameters.key === undefined || parameters.key === null || !parameters.property)\n throw \"Parameters: 'data' and 'property' are required!\";\n\n const request = this.factory.getRelated({\n urlOptions: this.urlOptions,\n key: parameters.key,\n property: parameters.property,\n successCb: parameters.successCb,\n failureCb: parameters.failureCb\n });\n\n request.execute();\n }\n\n /**\n * Executes a GET request to retrieve a related item by its ID.\n *\n * @param parameters Item key, relation property, related item ID, and callbacks.\n * @returns Nothing. The related item is delivered to a callback.\n * @throws If `key`, `property`, or `relatedId` is missing.\n */\n getRelatedById(parameters: SingleRelatedItemRequestOptions) {\n if (parameters.key === undefined || parameters.key === null || !parameters.property ||\n parameters.relatedId === undefined || parameters.relatedId === null)\n throw \"Parameters: 'data', 'relatedId' and 'property' are required!\";\n\n const request = this.factory.getRelatedById({\n urlOptions: this.urlOptions,\n key: parameters.key,\n relatedId: parameters.relatedId,\n property: parameters.property,\n successCb: parameters.successCb,\n failureCb: parameters.failureCb\n });\n\n request.execute();\n }\n\n /**\n * Executes a DELETE request for all members associated with a relation property.\n *\n * @param parameters Item key, relation property, and callbacks.\n * @returns Nothing. The result is delivered to `successCb` or `failureCb`.\n * @throws If `key` or `property` is missing.\n */\n destroyRelated(parameters: PropertyRequestOptions) {\n if (parameters.key === undefined || parameters.key === null || !parameters.property)\n throw \"Parameters: 'data' and 'property' are required!\";\n\n const request = this.factory.destroyRelated({\n urlOptions: this.urlOptions,\n key: parameters.key,\n property: parameters.property,\n successCb: parameters.successCb,\n failureCb: parameters.failureCb\n });\n\n request.execute();\n }\n\n /**\n * Executes a DELETE request for one member of a relation property.\n *\n * @param parameters Item key, relation property, related item ID, and callbacks.\n * @returns Nothing. The result is delivered to `successCb` or `failureCb`.\n * @throws If `key`, `property`, or `relatedId` is missing.\n */\n destroyRelatedById(parameters: SingleRelatedItemRequestOptions) {\n if (parameters.key === undefined || parameters.key === null || !parameters.property ||\n parameters.relatedId === undefined || parameters.relatedId === null)\n throw \"Parameters: 'data', 'relatedId' and 'property' are required!\";\n\n const request = this.factory.destroyRelatedById({\n urlOptions: this.urlOptions,\n key: parameters.key,\n relatedId: parameters.relatedId,\n property: parameters.property,\n successCb: parameters.successCb,\n failureCb: parameters.failureCb\n });\n\n request.execute();\n }\n\n /**\n * Executes a POST request to add a related item to a property collection.\n *\n * @param parameters Item key, relation property, related item link, and callbacks.\n * @returns Nothing. The result is delivered to `successCb` or `failureCb`.\n * @throws If `key`, `property`, or `link` is missing.\n */\n createRelated(parameters: CreateRelatedRequestOptions) {\n if (parameters.key === undefined || parameters.key === null || !parameters.property ||\n parameters.link === undefined || parameters.link === null)\n throw \"Parameters: 'data', 'link' and 'property' are required!\";\n\n const data = {\n \"@odata.id\": parameters.link\n };\n\n const request = this.factory.createRelated({\n urlOptions: this.urlOptions,\n key: parameters.key,\n property: parameters.property,\n data: data,\n successCb: parameters.successCb,\n failureCb: parameters.failureCb\n });\n\n request.execute();\n }\n\n /**\n * Executes a POST request to upload a media item and optionally update or publish it.\n *\n * The SDK orchestrates the upload in a transaction. `content`, `contentType`, `name`,\n * and `uploadProperties` are required. When `payload` is supplied, it updates the\n * uploaded item; when `publish` is `true`, it then executes the `Publish` operation.\n *\n * @param parameters Upload data, optional post-upload payload, publish flag, and callbacks.\n * @returns Nothing. The result is delivered to `successCb` or `failureCb`.\n * @throws If required upload data is missing.\n *\n * @example\n * const data = sf.data({ entitySet: \"images\" });\n * data.upload({\n * data: {\n * content: \"base64 file content\",\n * contentType: \"image/jpeg\",\n * name: \"test.jpg\",\n * payload: { Title: \"Test\" },\n * uploadProperties: {\n * ParentId: \"4BA7AD46-F29B-4E65-BE17-9BF7CE5BA1FB\"\n * }\n * },\n * successCb,\n * failureCb\n * });\n */\n upload(parameters: UploadRequestOptions) {\n if (!parameters?.data?.content || !parameters.data.contentType || !parameters.data.name || !parameters.data.uploadProperties)\n throw \"parameters: content, contentType, name and uploadProperties are required!\";\n\n const options = {\n urlOptions: this.urlOptions,\n _factory: this.factory,\n successCb: parameters.successCb,\n failureCb: parameters.failureCb\n };\n\n const batch = this.factory.batch(options);\n const transaction = batch.beginTransaction();\n\n const uploadedFile = transaction.upload({\n entitySet: this.urlOptions.entitySet,\n data: parameters.data.content,\n contentType: parameters.data.contentType,\n fileName: parameters.data.name,\n uploadProperties: parameters.data.uploadProperties\n });\n\n if (parameters.data.payload)\n transaction.update({\n entitySet: this.urlOptions.entitySet,\n key: uploadedFile,\n data: parameters.data.payload\n });\n\n if (parameters.publish === true) {\n transaction.operation({\n entitySet: this.urlOptions.entitySet,\n key: uploadedFile,\n data: {\n action: \"Publish\"\n }\n });\n }\n\n batch.endTransaction(transaction);\n return batch.execute();\n }\n}\n\n/**\n * Common query, URL-action, callback, and item-key options for data requests.\n */\nexport interface RequestOptionsBase {\n /** OData query to apply to the request. */\n query?: Query;\n /** Optional action appended to the request URL. */\n action?: string;\n /** Called with the successful response payload. */\n successCb?: Function;\n /** Called with the failure payload, including the HTTP status when available. */\n failureCb?: Function;\n /** Called with the upload or request progress event when available. */\n progressCb?: Function;\n /** Additional property names requested for culture fallback. */\n fallbackProperties?: string[];\n /** Item key used by single-item and relation requests. */\n key?: string | number;\n}\n\n/**\n * Options for retrieving the operations available to an item or parent collection.\n */\nexport interface OperationsRequestOptions extends RequestOptionsBase {\n /** Parent item ID used when retrieving collection operations without a `key`. */\n parentId?: string;\n}\n\n/**\n * Options for creating an item or executing an item operation.\n */\nexport interface CreateRequestOptions extends RequestOptionsBase {\n /** Entity data sent in the request body. Required by `create` and `operation`. */\n data?: object;\n}\n\n/**\n * Options for updating an existing item.\n */\nexport interface UpdateRequestOptions extends CreateRequestOptions {\n /** Saves the update as temporary data when true. */\n saveTemp?: boolean;\n}\n\n/**\n * Options for addressing an item property or relation.\n */\nexport interface PropertyRequestOptions extends RequestOptionsBase {\n /** Relation or property name addressed by the request. */\n property: string;\n}\n\n/**\n * Options for addressing one item within a relation.\n */\nexport interface SingleRelatedItemRequestOptions extends PropertyRequestOptions {\n /** ID of the related item addressed by the request. */\n relatedId: string;\n}\n\n/**\n * Options for adding an item to a relation.\n */\nexport interface CreateRelatedRequestOptions extends PropertyRequestOptions {\n /** OData link or ID of the related item to add. */\n link: string | number;\n}\n\n/**\n * Options for uploading a media item and optionally updating or publishing it.\n */\nexport interface UploadRequestOptions extends CreateRequestOptions {\n /** Upload content and metadata. */\n data: {\n /** Base64 or other content representation accepted by the upload endpoint. */\n content: string;\n /** MIME type of the uploaded file. */\n contentType: string;\n /** Upload-specific properties such as a media-library parent ID. */\n uploadProperties: { [key: string]: string };\n /** File name sent to Sitefinity. */\n name: string;\n /** Properties applied to the uploaded item after upload. */\n payload?: object;\n },\n /** Publishes the uploaded item after any payload update when true. */\n publish?: boolean;\n}\n", "import { utils } from \"./utils\";\n\n/**\n * Base class for query projections.\n *\n * `Query` extends this class with filtering, ordering, searching, and paging.\n * Projection methods are immutable: each call returns a clone that preserves\n * the concrete query prototype, so fluent chains continue to expose derived\n * query methods.\n */\nexport class QueryBase {\n /** Selected scalar properties, or `null` when no projection was configured. */\n selectProperties: string[];\n /** Selected navigation properties, or `null` when no expansion was configured. */\n expandProperties: string[];\n\n /** Creates an empty projection. */\n constructor() {\n this.selectProperties = null;\n this.expandProperties = null;\n }\n\n /**\n * Selects the scalar fields returned by the service.\n *\n * Duplicate names are removed while preserving their first occurrence.\n * Property names must be simple paths without a dot.\n *\n * @param properties Field names to include.\n * @returns A cloned query with `$select` configured.\n * @throws Error If a property is not a string or is a nested path.\n */\n select(...properties: string[]): this {\n properties = properties ?? [];\n\n this.validatePropertyPaths(properties);\n\n return this.clone((newObj: this) => {\n newObj.selectProperties = properties.filter((prop, index, props) => props.indexOf(prop) === index);\n });\n }\n\n /**\n * Selects the navigation properties expanded by the service.\n *\n * Duplicate names are removed while preserving their first occurrence.\n * Property names must be simple paths without a dot.\n *\n * @param properties Navigation property names to expand.\n * @returns A cloned query with `$expand` configured.\n * @throws Error If a property is not a string or is a nested path.\n */\n expand(...properties: string[]): this {\n properties = properties ?? [];\n this.validatePropertyPaths(properties);\n\n return this.clone((newObj: this) => {\n newObj.expandProperties = properties.filter((prop, index, props) => props.indexOf(prop) === index);\n });\n }\n\n protected validatePropertyPaths(propPaths: string[], allowNested = false) {\n for (let i = 0; i < propPaths.length; i++) {\n const member = propPaths[i];\n if (!utils.isString(member)) {\n throw new Error(\"Invalid argument in clause\");\n }\n\n if (!allowNested && member.indexOf(\".\") > -1) {\n throw new Error(\"Invalid argument in clause\");\n }\n }\n }\n\n protected clone(setter: ((newObj: this) => void) = null): this {\n const newObj = utils.clone(this, Object.create(Object.getPrototypeOf(this)), setter) as this;\n return newObj;\n }\n}\n", "\uFEFFimport { utils } from \"./utils\";\n\n/**\n * Represents one validated OData order-by property and direction.\n */\nexport class OrderProperty {\n /**\n * Creates an order-by descriptor.\n *\n * The property path may include a trailing `asc` or `desc` direction.\n * Without a direction, ascending order is used.\n *\n * @param propertyPath Property name, optionally followed by `asc` or `desc`.\n * @param isDesc Explicit direction override when supplied.\n * @throws Error If the property name is not a string or the direction is invalid.\n */\n constructor(private propertyPath: string, private isDesc: boolean = null) {\n if (!utils.isString(propertyPath))\n throw new Error(\"Property name is not a valid string\");\n\n propertyPath = propertyPath.trim();\n\n const parts = propertyPath.split(\" \");\n // parts[0] is the propertyPath; [1] would be whether descending or not.\n if (parts.length > 1 && isDesc !== true && isDesc !== false) {\n isDesc = parts[1].toLowerCase() == \"desc\";\n if (!isDesc) {\n // isDesc is false but check to make sure its intended.\n const isAsc = parts[1].toLowerCase() == \"asc\";\n if (!isAsc) {\n throw new Error(\"the second word in the propertyPath must begin with 'desc' or 'asc'\");\n }\n }\n }\n\n this.propertyPath = parts[0];\n this.isDesc = isDesc;\n }\n\n /** Returns the property name without its direction. */\n getPropertyPath(): string {\n return this.propertyPath;\n }\n\n /** Returns `true` for descending order and `false` for ascending order. */\n getDirection(): boolean {\n return this.isDesc;\n }\n\n /** Returns the normalized `property direction` string used in `$orderby`. */\n getValue(): string {\n const direction = (this.isDesc) ? \"desc\" : \"asc\";\n return this.propertyPath + \" \" + direction;\n }\n}\n", "\uFEFFimport { WhereQuery } from \"./WhereQuery\";\nimport { ComplexExpression, BinaryExpression } from \"./Expression\";\nimport { OrderProperty } from \"./OrderProperty\";\nimport { utils } from \"./utils\";\nimport { ODATA_PARAMS, EXPRESSION_TYPE } from \"./constants\";\nimport { Query } from \"./Query\";\n\n/**\n * Serializes a {@link Query} and its expression tree to OData query parameters.\n */\nexport class QueryBuilder {\n /** Creates a builder for the supplied query. */\n constructor(private query: Query) {\n }\n\n /**\n * Serializes the query into OData parameter names and values.\n *\n * Supported output keys are `$filter`, `$select`, `$expand`, `$orderby`,\n * `$skip`, `$top`, `$count`, and `$search`. Missing or empty clauses are\n * omitted. String constants are escaped and quoted; GUID constants remain\n * unquoted, and `in` requires an array value.\n *\n * @returns An object suitable for the data request's query parameters.\n * @throws Error If the expression tree is invalid, an operator is unsupported,\n * or an `in` condition does not contain an array.\n */\n build(): { [key: string]: string } {\n const queryParameters = {};\n const whereClause = this.query.filter;\n if (whereClause instanceof WhereQuery) {\n const expression = whereClause.getExpression();\n if (expression instanceof ComplexExpression) {\n const result = this.buildComplexExpression(expression, null);\n if (result) {\n queryParameters[ODATA_PARAMS.$filter] = result;\n }\n }\n }\n\n const selectClause = this.query.selectProperties;\n if (selectClause instanceof Array) {\n queryParameters[ODATA_PARAMS.$select] = selectClause.join(\", \");\n }\n\n const expandClause = this.query.expandProperties;\n if (expandClause instanceof Array)\n queryParameters[ODATA_PARAMS.$expand] = expandClause.join(\", \");\n\n const orderByClause = this.query.orderProperties;\n if (orderByClause instanceof Array) {\n const order = [];\n for (const i in orderByClause) {\n if (orderByClause[i] instanceof OrderProperty)\n order.push(orderByClause[i].getValue());\n }\n queryParameters[ODATA_PARAMS.$orderby] = order.join(\", \");\n }\n\n const take = this.query.takeValue;\n if (utils.isNumber(take))\n queryParameters[ODATA_PARAMS.$top] = take;\n\n const skip = this.query.skipValue;\n if (utils.isNumber(skip))\n queryParameters[ODATA_PARAMS.$skip] = skip;\n\n const search = this.query.searchValue;\n if (search)\n queryParameters[ODATA_PARAMS.$search] = search;\n\n if (this.query.inlineCount !== null) {\n queryParameters[ODATA_PARAMS.$count] = this.query.inlineCount;\n }\n\n return queryParameters;\n }\n\n private buildComplexExpression(expression: ComplexExpression, parent: string): string {\n if (!(expression instanceof ComplexExpression))\n throw new Error(\"Invalid complex expression\");\n\n let counter = 0;\n let result = \"\";\n const subExpressions = expression.getExpressions();\n if (!subExpressions.length) {\n return result;\n }\n\n while (true) {\n const currentExp = subExpressions[counter];\n if (currentExp instanceof BinaryExpression) {\n result += this.buildBinaryExpression(currentExp);\n }\n else if (currentExp instanceof ComplexExpression) {\n const complexResult = this.buildComplexExpression(currentExp, expression.type);\n if (complexResult) {\n result += \"(\" + complexResult + \")\";\n }\n }\n\n if (expression.getType() === EXPRESSION_TYPE.not)\n result = expression.getType() + \" \" + result;\n // TODOSDK: Rethink this!\n if (expression.getType() === EXPRESSION_TYPE.any) {\n const exprVal = [];\n for (let index = 0; index < subExpressions.length; index++) {\n if (subExpressions[index].type == EXPRESSION_TYPE.contains || subExpressions[index].type == EXPRESSION_TYPE.startsWith || subExpressions[index].type == EXPRESSION_TYPE.endsWith)\n exprVal.push(subExpressions[index].type.toLowerCase() + \"(x, '\" + (subExpressions[index] as BinaryExpression).constant + \"')\");\n else\n exprVal.push(\"x \" + subExpressions[index].type.toLowerCase() + \" \" + this.checkType((subExpressions[index] as BinaryExpression).constant));\n }\n result = (currentExp as BinaryExpression).parameter + \"/\" + expression.getType() + \"(x:\" + exprVal.join(\" \" + parent + \" \") + \")\";\n }\n\n counter++;\n if (counter == subExpressions.length)\n break;\n\n result += \" \" + expression.getType() + \" \";\n }\n\n return result;\n }\n\n private buildBinaryExpression(expression: BinaryExpression): string {\n let result: string = null;\n const type = expression.getType();\n switch (type) {\n case EXPRESSION_TYPE.eq:\n case EXPRESSION_TYPE.ne:\n case EXPRESSION_TYPE.lt:\n case EXPRESSION_TYPE.le:\n case EXPRESSION_TYPE.gt:\n case EXPRESSION_TYPE.ge: {\n const constant = expression.getConstant();\n result = `(${expression.getParameter()} ${type} ${this.checkType(constant)})`;\n break;\n }\n case EXPRESSION_TYPE.contains:\n case EXPRESSION_TYPE.startsWith:\n case EXPRESSION_TYPE.endsWith: {\n const expressionParameter = this.applyCaseSensitiveSettings(expression, expression.getParameter());\n const expressionConstant = this.checkType(expression.getConstant(), true);\n const expressionValue = this.applyCaseSensitiveSettings(expression, expressionConstant);\n\n result = `${type.toLowerCase()}(${expressionParameter}, ${expressionValue})`;\n break;\n }\n case EXPRESSION_TYPE.in: {\n const valueArray = expression.getConstant();\n if (!Array.isArray(valueArray)) {\n throw new Error(\"Parameter is not an array!\");\n }\n\n result = `${expression.getParameter()} in (${valueArray.join(\", \")})`;\n break;\n }\n default: {\n const msg = `Unsupported operator ${type}`;\n throw new Error(msg);\n }\n }\n\n return result;\n }\n\n private applyCaseSensitiveSettings(expression: BinaryExpression, value: string): string {\n if (expression.isCaseSensitive()) {\n return value;\n }\n\n return `tolower(${value})`;\n }\n\n private checkType(constant: any, treatAsString = false): string {\n if (this.isGuid(constant) && !treatAsString)\n return constant;\n\n if (constant == null)\n return null;\n\n constant = constant.replace(/[+/?%#&]/g, function ($0) {\n return encodeURIComponent($0);\n });\n\n // escapes the apostrophes\n constant = constant.replace(/'/g, \"''\");\n\n return \"'\" + constant + \"'\";\n }\n\n private isGuid(constant: string): boolean {\n return /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(constant);\n }\n}\n", "\uFEFFimport { QueryBase } from \"./QueryBase\";\nimport { WhereQuery } from \"./WhereQuery\";\nimport { OrderProperty } from \"./OrderProperty\";\nimport { QueryBuilder } from \"./QueryBuilder\";\n\n/**\n * Builds an immutable, fluent OData query.\n *\n * Each modifier returns a cloned query, so a base query can be reused to create\n * independent variants. Call {@link build} after completing the chain to obtain\n * the query parameter object passed to a Sitefinity data request.\n *\n * @example\n * const query = new Query()\n * .select(\"Title\", \"Content\")\n * .where()\n * .eq(\"Status\", \"Live\")\n * .done()\n * .order(\"Title desc\")\n * .skip(10)\n * .take(10);\n *\n * query.build();\n * // { $select: \"Title, Content\", $filter: \"(Status eq 'Live')\",\n * // $orderby: \"Title desc\", $skip: 10, $top: 10 }\n */\nexport class Query extends QueryBase {\n /** The order-by clauses, when an order has been configured. */\n orderProperties: OrderProperty[] = null;\n /** The number of records to skip, when paging is configured. */\n skipValue: number = null;\n /** The maximum number of records to return, when paging is configured. */\n takeValue: number = null;\n /** The full-text search expression, when configured. */\n searchValue: string = null;\n /** Whether the service should include the total count in the response. */\n inlineCount: boolean;\n /** The root filter expression, when a where clause has been configured. */\n filter: WhereQuery<Query> = null;\n\n /** Creates an empty query with no selected fields, filters, ordering, or paging. */\n constructor() {\n super();\n }\n\n /**\n * Starts a filter expression.\n *\n * The returned builder is generic over its parent query. Call `done()` to\n * return to this query; nested logical groups require one `done()` per group.\n *\n * @returns A fluent filter builder.\n */\n where(): WhereQuery<Query> {\n const clone: Query = this.clone((newObj: Query) => {\n newObj.filter = new WhereQuery(newObj);\n });\n\n return clone.filter;\n }\n\n /**\n * Specifies one or more order-by clauses.\n *\n * Each property may be followed by `asc` or `desc`; ascending order is the\n * default. Property names must be simple paths without a dot.\n *\n * @param properties Property names and optional directions.\n * @returns A cloned query containing the requested ordering.\n * @throws Error If a property is not a string, contains a nested path, or\n * has an invalid direction.\n *\n * @example\n * new Query().order(\"Title desc\", \"PublicationDate asc\");\n */\n order(...properties: string[]): Query {\n properties = properties ?? [];\n this.validatePropertyPaths(properties);\n\n return this.clone((newObj: Query) => {\n const orderItems: OrderProperty[] = [];\n for (let i = 0; i < properties.length; i++) {\n const member = properties[i];\n const orderProp = new OrderProperty(member);\n orderItems.push(orderProp);\n }\n newObj.orderProperties = orderItems;\n });\n }\n\n /**\n * Skips a number of records before returning results.\n *\n * @param value Number of records to skip.\n * @returns A cloned query with `$skip` configured.\n */\n skip(value: number): Query {\n return this.clone((newObj: Query) => {\n newObj.skipValue = value;\n });\n }\n\n /**\n * Limits the number of records returned.\n *\n * @param value Maximum number of records to return.\n * @returns A cloned query with `$top` configured.\n */\n take(value: number): Query {\n return this.clone((newObj: Query) => {\n newObj.takeValue = value;\n });\n }\n\n /**\n * Adds a full-text search expression.\n *\n * @param value Search text understood by the Sitefinity service.\n * @returns A cloned query with `$search` configured.\n */\n search(value: string): Query {\n return this.clone((newObj: Query) => {\n newObj.searchValue = value;\n });\n }\n\n /**\n * Requests the total matching count with the result.\n *\n * @param inline Whether `$count` should be enabled. Defaults to `true`.\n * @returns A cloned query with `$count` configured.\n */\n count(inline = true): Query {\n return this.clone((newObj: Query) => {\n newObj.inlineCount = inline;\n });\n }\n\n /**\n * Converts this query into OData query parameters.\n *\n * The returned object may contain `$filter`, `$select`, `$expand`,\n * `$orderby`, `$skip`, `$top`, `$count`, and `$search`. Empty clauses are\n * omitted. Building does not mutate the query.\n *\n * @returns The query parameter object for a data request.\n */\n build() {\n return new QueryBuilder(this).build();\n }\n}\n", "\uFEFFimport { RequestFactory } from \"./Requests/RequestFactory\";\nimport { Data } from \"./Data\";\nimport { Query } from \"./Query\";\nimport { utils } from \"./utils\";\nimport { ResponseHandlers } from \"./Requests/ExecutableRequest\";\nimport { BatchRequest } from \"./Requests/BatchRequest\";\nimport { HttpTransport } from \"./Transport/HttpTransport\";\n\n/**\n * Entry point for querying and modifying content through the Sitefinity Web Services API.\n */\nexport class Sitefinity {\n /**\n * Query builder constructor exposed for consumers that need to build OData queries.\n */\n public static Query: typeof Query = Query;\n\n private factory: RequestFactory;\n private baseUrl: string;\n private siteId: string;\n\n /**\n * Creates the SDK entry point.\n *\n * @param options Service URL and optional site-level configuration.\n */\n constructor(options: SDKOptions) {\n this.baseUrl = options.baseUrl;\n this.siteId = options.siteId;\n this.factory = new RequestFactory(options);\n }\n\n /**\n * Creates a data client for an entity set.\n *\n * The returned client uses the SDK defaults unless a URL, provider, culture, site,\n * query parameters, or headers are overridden in `options`.\n *\n * @param options Entity-set and request URL options.\n * @returns A data client for the requested entity set.\n *\n * @example\n * const news = sdk.data({ entitySet: \"newsitems\", culture: \"en\" });\n * news.get({ successCb: items => console.log(items) });\n */\n data(options: TypeOptions): Data {\n const urlOptions: TypeOptions = {\n baseUrl: utils.addTrailingSlash(options.baseUrl || this.baseUrl),\n provider: options.provider,\n culture: options.culture,\n siteId: options.siteId || this.siteId,\n additionalQueryParams: options.additionalQueryParams,\n additionalHeaders: options.additionalHeaders,\n entitySet: options.entitySet\n };\n\n return new Data(urlOptions, this.factory);\n }\n\n /**\n * Creates a batch for grouping requests and optional upload, update, or workflow operations.\n *\n * Call `execute()` after adding requests. The callbacks receive the batch response,\n * failure payload, and progress event respectively. Batch options override SDK URL options.\n *\n * @param success Callback invoked when the batch succeeds.\n * @param failure Callback invoked when the batch fails.\n * @param progress Callback invoked as request progress is reported.\n * @param options Optional URL and request options for the batch.\n * @returns A batch request that can be populated and executed.\n */\n batch(success?: Function, failure?: Function, progress?: Function, options?: TypeOptions): BatchRequest {\n if (!options)\n options = {};\n\n const batch = this.factory.batch({\n successCb: success,\n failureCb: failure,\n progressCb: progress,\n urlOptions: {\n baseUrl: utils.addTrailingSlash(options.baseUrl || this.baseUrl),\n provider: options.provider,\n culture: options.culture,\n siteId: options.siteId || this.siteId,\n additionalQueryParams: options.additionalQueryParams,\n additionalHeaders: options.additionalHeaders\n }\n });\n\n return batch;\n }\n\n /**\n * Sets the value sent in the `Authorization` header.\n *\n * The current token form is `{ type, value }`, for example\n * `{ type: \"Bearer\", value: \"token\" }`. A raw string is also accepted at runtime\n * for backward compatibility and is sent unchanged.\n *\n * @param token Token object or legacy raw authorization header value.\n */\n setToken(token: AuthorizationToken) {\n this.factory.token = token;\n }\n}\n\ninterface OptionsBase {\n /**\n * Service URL that points to the configured Sitefinity service.\n */\n baseUrl?: string;\n\n /**\n * ID of the site for which requests are executed.\n */\n siteId?: string;\n}\n\n/**\n * Configuration options for the SDK entry point.\n */\nexport interface SDKOptions extends OptionsBase {\n /**\n * Default callbacks used when a request does not provide its own callback.\n */\n handlers?: ResponseHandlers;\n\n /**\n * Adds the Sitefinity unlimited-choices request header when true.\n */\n enableUnlimitedChoices?: boolean;\n\n /**\n * Adds the Sitefinity integration-mode request header when true.\n */\n integrationMode?: boolean;\n\n /**\n * Sends every HTTP request the SDK makes. Use it to route SDK traffic through your own HTTP stack,\n * such as Angular's `HttpClient` or `fetch`. Defaults to {@link XhrTransport}, which uses `XMLHttpRequest`.\n */\n transport?: HttpTransport;\n}\n\n/**\n * Configuration options for an entity-set data client or batch.\n */\nexport interface TypeOptions extends OptionsBase {\n /**\n * URL name of the entity set, such as `\"newsitems\"` or `\"images\"`.\n */\n entitySet?: string;\n\n /**\n * Provider name. When omitted, Sitefinity uses the site's default provider.\n */\n provider?: string;\n\n /**\n * Culture name. When omitted, Sitefinity uses the site's default culture.\n */\n culture?: string;\n\n /**\n * Additional query-string values appended to each request URL.\n */\n additionalQueryParams?: { [key: string]: string };\n\n /**\n * Additional headers sent with each request.\n */\n additionalHeaders?: { [key: string]: string };\n}\n\n/**\n * Structured authorization token.\n *\n * `setToken` also accepts a raw string at runtime for backward compatibility.\n */\nexport interface Token {\n /**\n * Authorization scheme, such as `\"Bearer\"`.\n */\n type: string;\n\n /**\n * Token value.\n */\n value: string;\n}\n\n/**\n * Structured authorization token or a legacy raw `Authorization` header value.\n */\nexport type AuthorizationToken = Token | string;\n", "import { HttpTransport, HttpTransportRequest, HttpTransportResponse } from \"./HttpTransport\";\n\n/**\n * Transport that sends requests with the Fetch API.\n *\n * Fetch cannot report upload progress, so `onUploadProgress` is never called.\n */\nexport class FetchTransport implements HttpTransport {\n private readonly fetchImplementation: typeof fetch;\n\n /**\n * Creates a fetch-based transport.\n *\n * @param fetchImplementation Fetch function to use. Defaults to the global `fetch`, resolved when sending.\n */\n constructor(fetchImplementation?: typeof fetch) {\n this.fetchImplementation = fetchImplementation;\n }\n\n /** Sends the request with `fetch`. A failure to get any response is reported with status `0`. */\n send(request: HttpTransportRequest, onComplete: (response: HttpTransportResponse) => void): void {\n const send = this.fetchImplementation ?? globalThis.fetch.bind(globalThis);\n\n send(request.url, { method: request.method, headers: request.headers, body: request.body })\n .then(response => response.text().then(body => ({ response, body })))\n .then(\n ({ response, body }) => onComplete({\n status: response.status,\n body,\n headers: readHeaders(response.headers)\n }),\n () => onComplete({ status: 0, body: \"\", headers: {} })\n );\n }\n}\n\nfunction readHeaders(source: Headers): { [name: string]: string } {\n const headers: { [name: string]: string } = {};\n source.forEach((value, name) => {\n headers[name.toLowerCase()] = value;\n });\n\n return headers;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["response", "utils"]
7
+ }
@@ -0,0 +1 @@
1
+ export * from "./sitefinity-webservices-sdk.js";
@@ -5,11 +5,17 @@ export * from "./src/WhereQuery";
5
5
  export * from "./src/Sitefinity";
6
6
  export * from "./src/QueryBuilder";
7
7
  export * from "./src/Query";
8
+ export * from "./src/QueryBase";
8
9
  export * from "./src/OrderProperty";
9
10
  export * from "./src/Expression";
10
11
  export * from "./src/Data";
12
+ export * from "./src/chunk-upload/chunk-upload.sdk";
13
+ export * from "./src/chunk-upload/chunked-file-upload.utilities";
11
14
  export * from "./src/Requests/BatchRequest";
12
15
  export * from "./src/Requests/ExecutableRequest";
13
16
  export * from "./src/Requests/Request";
14
17
  export * from "./src/Requests/RequestBase";
15
18
  export * from "./src/Requests/RequestFactory";
19
+ export * from "./src/Transport/HttpTransport";
20
+ export * from "./src/Transport/XhrTransport";
21
+ export * from "./src/Transport/FetchTransport";
@@ -0,0 +1,5 @@
1
+ declare global {
2
+ var Sitefinity: typeof import("./sitefinity-webservices-sdk");
3
+ }
4
+
5
+ export {};