@pnp/sp 2.8.0 → 2.12.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 (306) hide show
  1. package/LICENSE +25 -25
  2. package/appcatalog/index.d.ts +8 -8
  3. package/appcatalog/index.js +30 -30
  4. package/appcatalog/types.d.ts +81 -81
  5. package/appcatalog/types.d.ts.map +1 -1
  6. package/appcatalog/types.js +177 -177
  7. package/appcatalog/types.js.map +1 -1
  8. package/appcatalog/web.d.ts +16 -16
  9. package/appcatalog/web.js +6 -6
  10. package/attachments/index.d.ts +2 -2
  11. package/attachments/index.js +2 -2
  12. package/attachments/item.d.ts +12 -12
  13. package/attachments/item.js +4 -4
  14. package/attachments/types.d.ts +92 -92
  15. package/attachments/types.js +240 -240
  16. package/batch.d.ts +17 -17
  17. package/batch.js +223 -223
  18. package/clientside-pages/funcs.d.ts +22 -22
  19. package/clientside-pages/funcs.js +25 -25
  20. package/clientside-pages/index.d.ts +2 -2
  21. package/clientside-pages/index.js +2 -2
  22. package/clientside-pages/types.d.ts +496 -494
  23. package/clientside-pages/types.d.ts.map +1 -1
  24. package/clientside-pages/types.js +1496 -1487
  25. package/clientside-pages/types.js.map +1 -1
  26. package/clientside-pages/web.d.ts +41 -41
  27. package/clientside-pages/web.js +57 -57
  28. package/column-defaults/folder.d.ts +27 -27
  29. package/column-defaults/folder.js +82 -82
  30. package/column-defaults/index.d.ts +3 -3
  31. package/column-defaults/index.js +2 -2
  32. package/column-defaults/list.d.ts +19 -19
  33. package/column-defaults/list.js +198 -198
  34. package/column-defaults/types.d.ts +21 -21
  35. package/column-defaults/types.js +1 -1
  36. package/comments/clientside-page.d.ts +57 -57
  37. package/comments/clientside-page.d.ts.map +1 -1
  38. package/comments/clientside-page.js +136 -136
  39. package/comments/index.d.ts +2 -2
  40. package/comments/index.js +2 -2
  41. package/comments/item.d.ts +29 -29
  42. package/comments/item.js +47 -47
  43. package/comments/item.js.map +1 -1
  44. package/comments/types.d.ts +107 -107
  45. package/comments/types.d.ts.map +1 -1
  46. package/comments/types.js +145 -145
  47. package/comments/types.js.map +1 -1
  48. package/content-types/index.d.ts +4 -4
  49. package/content-types/index.js +4 -4
  50. package/content-types/item.d.ts +12 -12
  51. package/content-types/item.js +4 -4
  52. package/content-types/list.d.ts +12 -12
  53. package/content-types/list.js +4 -4
  54. package/content-types/types.d.ts +107 -107
  55. package/content-types/types.js +166 -166
  56. package/content-types/web.d.ts +12 -12
  57. package/content-types/web.js +4 -4
  58. package/decorators.d.ts +11 -11
  59. package/decorators.js +28 -28
  60. package/features/index.d.ts +3 -3
  61. package/features/index.js +3 -3
  62. package/features/site.d.ts +12 -12
  63. package/features/site.js +4 -4
  64. package/features/types.d.ts +47 -47
  65. package/features/types.js +109 -109
  66. package/features/web.d.ts +12 -12
  67. package/features/web.js +4 -4
  68. package/fields/index.d.ts +4 -4
  69. package/fields/index.js +4 -4
  70. package/fields/list.d.ts +12 -12
  71. package/fields/list.js +4 -4
  72. package/fields/types.d.ts +368 -368
  73. package/fields/types.js +624 -624
  74. package/fields/web.d.ts +17 -17
  75. package/fields/web.js +5 -5
  76. package/files/folder.d.ts +12 -12
  77. package/files/folder.js +4 -4
  78. package/files/index.d.ts +4 -4
  79. package/files/index.js +4 -4
  80. package/files/item.d.ts +12 -12
  81. package/files/item.js +4 -4
  82. package/files/types.d.ts +421 -421
  83. package/files/types.js +853 -853
  84. package/files/types.js.map +1 -1
  85. package/files/web.d.ts +35 -35
  86. package/files/web.js +15 -15
  87. package/folders/index.d.ts +4 -4
  88. package/folders/index.js +4 -4
  89. package/folders/item.d.ts +9 -9
  90. package/folders/item.js +4 -4
  91. package/folders/list.d.ts +12 -12
  92. package/folders/list.js +4 -4
  93. package/folders/types.d.ts +207 -207
  94. package/folders/types.js +433 -433
  95. package/folders/types.js.map +1 -1
  96. package/folders/web.d.ts +39 -39
  97. package/folders/web.js +15 -15
  98. package/forms/index.d.ts +2 -2
  99. package/forms/index.js +2 -2
  100. package/forms/list.d.ts +9 -9
  101. package/forms/list.js +4 -4
  102. package/forms/types.d.ts +35 -35
  103. package/forms/types.js +41 -41
  104. package/hubsites/index.d.ts +12 -12
  105. package/hubsites/index.js +15 -15
  106. package/hubsites/site.d.ts +26 -26
  107. package/hubsites/site.js +39 -39
  108. package/hubsites/types.d.ts +55 -55
  109. package/hubsites/types.d.ts.map +1 -1
  110. package/hubsites/types.js +53 -53
  111. package/hubsites/web.d.ts +21 -21
  112. package/hubsites/web.js +23 -23
  113. package/index.d.ts +14 -14
  114. package/index.js +13 -13
  115. package/items/index.d.ts +2 -2
  116. package/items/index.js +2 -2
  117. package/items/list.d.ts +9 -9
  118. package/items/list.js +4 -4
  119. package/items/types.d.ts +226 -226
  120. package/items/types.js +549 -549
  121. package/lists/index.d.ts +2 -2
  122. package/lists/index.js +2 -2
  123. package/lists/types.d.ts +495 -495
  124. package/lists/types.js +522 -522
  125. package/lists/types.js.map +1 -1
  126. package/lists/web.d.ts +43 -43
  127. package/lists/web.js +27 -27
  128. package/navigation/index.d.ts +8 -8
  129. package/navigation/index.js +14 -14
  130. package/navigation/types.d.ts +154 -154
  131. package/navigation/types.js +219 -219
  132. package/navigation/web.d.ts +13 -13
  133. package/navigation/web.js +4 -4
  134. package/odata.d.ts +5 -5
  135. package/odata.js +90 -90
  136. package/odata.js.map +1 -1
  137. package/operations.d.ts +9 -9
  138. package/operations.js +63 -63
  139. package/package.json +4 -4
  140. package/presets/all.d.ts +72 -72
  141. package/presets/all.js +72 -72
  142. package/presets/core.d.ts +11 -11
  143. package/presets/core.js +11 -11
  144. package/profiles/index.d.ts +7 -7
  145. package/profiles/index.js +13 -13
  146. package/profiles/types.d.ts +357 -357
  147. package/profiles/types.js +454 -454
  148. package/readme.md +21 -21
  149. package/regional-settings/content-type.d.ts +7 -7
  150. package/regional-settings/content-type.js +4 -4
  151. package/regional-settings/field.d.ts +7 -7
  152. package/regional-settings/field.js +4 -4
  153. package/regional-settings/funcs.d.ts +2 -2
  154. package/regional-settings/funcs.js +8 -8
  155. package/regional-settings/index.d.ts +6 -6
  156. package/regional-settings/index.js +6 -6
  157. package/regional-settings/list.d.ts +7 -7
  158. package/regional-settings/list.js +4 -4
  159. package/regional-settings/types.d.ts +111 -111
  160. package/regional-settings/types.js +159 -159
  161. package/regional-settings/user-custom-actions.d.ts +7 -7
  162. package/regional-settings/user-custom-actions.js +4 -4
  163. package/regional-settings/web.d.ts +12 -12
  164. package/regional-settings/web.js +7 -7
  165. package/related-items/index.d.ts +1 -1
  166. package/related-items/index.js +1 -1
  167. package/related-items/types.d.ts +76 -76
  168. package/related-items/types.js +103 -103
  169. package/related-items/web.d.ts +12 -12
  170. package/related-items/web.js +9 -9
  171. package/rest.d.ts +44 -44
  172. package/rest.js +72 -72
  173. package/search/index.d.ts +30 -30
  174. package/search/index.js +25 -25
  175. package/search/query.d.ts +62 -62
  176. package/search/query.js +302 -302
  177. package/search/suggest.d.ts +76 -76
  178. package/search/suggest.js +66 -66
  179. package/search/types.d.ts +426 -426
  180. package/search/types.js +57 -57
  181. package/security/funcs.d.ts +43 -43
  182. package/security/funcs.js +142 -142
  183. package/security/index.d.ts +4 -4
  184. package/security/index.js +4 -4
  185. package/security/item.d.ts +7 -7
  186. package/security/item.js +14 -14
  187. package/security/list.d.ts +7 -7
  188. package/security/list.js +14 -14
  189. package/security/types.d.ts +318 -318
  190. package/security/types.js +399 -399
  191. package/security/web.d.ts +9 -9
  192. package/security/web.js +15 -15
  193. package/sharepointqueryable.d.ts +135 -135
  194. package/sharepointqueryable.js +265 -265
  195. package/sharing/file.d.ts +18 -18
  196. package/sharing/file.js +116 -116
  197. package/sharing/folder.d.ts +9 -9
  198. package/sharing/folder.js +136 -136
  199. package/sharing/funcs.d.ts +62 -62
  200. package/sharing/funcs.js +239 -239
  201. package/sharing/funcs.js.map +1 -1
  202. package/sharing/index.d.ts +5 -5
  203. package/sharing/index.js +5 -5
  204. package/sharing/item.d.ts +16 -16
  205. package/sharing/item.js +15 -15
  206. package/sharing/types.d.ts +583 -583
  207. package/sharing/types.js +113 -113
  208. package/sharing/web.d.ts +19 -19
  209. package/sharing/web.js +76 -76
  210. package/site-designs/index.d.ts +8 -8
  211. package/site-designs/index.js +14 -14
  212. package/site-designs/types.d.ts +319 -319
  213. package/site-designs/types.js +203 -203
  214. package/site-designs/web.d.ts +25 -25
  215. package/site-designs/web.js +11 -11
  216. package/site-groups/index.d.ts +2 -2
  217. package/site-groups/index.js +2 -2
  218. package/site-groups/types.d.ts +89 -89
  219. package/site-groups/types.js +125 -125
  220. package/site-groups/web.d.ts +40 -40
  221. package/site-groups/web.js +30 -30
  222. package/site-scripts/index.d.ts +9 -9
  223. package/site-scripts/index.js +15 -15
  224. package/site-scripts/list.d.ts +12 -12
  225. package/site-scripts/list.js +24 -24
  226. package/site-scripts/types.d.ts +183 -183
  227. package/site-scripts/types.js +141 -141
  228. package/site-scripts/web.d.ts +13 -13
  229. package/site-scripts/web.js +5 -5
  230. package/site-users/index.d.ts +2 -2
  231. package/site-users/index.js +2 -2
  232. package/site-users/types.d.ts +138 -138
  233. package/site-users/types.js +122 -122
  234. package/site-users/web.d.ts +31 -31
  235. package/site-users/web.js +27 -27
  236. package/sites/index.d.ts +7 -7
  237. package/sites/index.js +13 -13
  238. package/sites/types.d.ts +147 -147
  239. package/sites/types.js +321 -321
  240. package/social/index.d.ts +10 -10
  241. package/social/index.js +13 -13
  242. package/social/types.d.ts +309 -309
  243. package/social/types.js +322 -322
  244. package/sphttpclient.d.ts +18 -18
  245. package/sphttpclient.js +189 -189
  246. package/splibconfig.d.ts +22 -22
  247. package/splibconfig.js +13 -13
  248. package/sputilities/index.d.ts +7 -7
  249. package/sputilities/index.js +13 -13
  250. package/sputilities/types.d.ts +130 -130
  251. package/sputilities/types.js +118 -118
  252. package/subscriptions/index.d.ts +2 -2
  253. package/subscriptions/index.js +2 -2
  254. package/subscriptions/list.d.ts +13 -13
  255. package/subscriptions/list.js +4 -4
  256. package/subscriptions/types.d.ts +54 -54
  257. package/subscriptions/types.js +111 -111
  258. package/taxonomy/index.d.ts +7 -7
  259. package/taxonomy/index.js +13 -13
  260. package/taxonomy/types.d.ts +200 -200
  261. package/taxonomy/types.js +347 -347
  262. package/taxonomy/types.js.map +1 -1
  263. package/telemetry.d.ts +12 -12
  264. package/telemetry.js +48 -48
  265. package/types.d.ts +218 -218
  266. package/types.js +79 -79
  267. package/user-custom-actions/index.d.ts +4 -4
  268. package/user-custom-actions/index.js +4 -4
  269. package/user-custom-actions/list.d.ts +12 -12
  270. package/user-custom-actions/list.js +4 -4
  271. package/user-custom-actions/site.d.ts +12 -12
  272. package/user-custom-actions/site.js +4 -4
  273. package/user-custom-actions/types.d.ts +82 -82
  274. package/user-custom-actions/types.js +93 -93
  275. package/user-custom-actions/web.d.ts +15 -15
  276. package/user-custom-actions/web.js +4 -4
  277. package/utils/escapeQueryStrValue.d.ts +1 -1
  278. package/utils/escapeQueryStrValue.js +19 -19
  279. package/utils/extractweburl.d.ts +1 -1
  280. package/utils/extractweburl.js +15 -15
  281. package/utils/file-names.d.ts +17 -17
  282. package/utils/file-names.js +38 -38
  283. package/utils/metadata.d.ts +5 -5
  284. package/utils/metadata.js +5 -5
  285. package/utils/objectToSPKeyValueCollection.d.ts +20 -20
  286. package/utils/objectToSPKeyValueCollection.js +16 -16
  287. package/utils/toResourcePath.d.ts +7 -7
  288. package/utils/toResourcePath.js +6 -6
  289. package/utils/toabsoluteurl.d.ts +7 -7
  290. package/utils/toabsoluteurl.js +61 -61
  291. package/views/index.d.ts +2 -2
  292. package/views/index.js +2 -2
  293. package/views/list.d.ts +23 -23
  294. package/views/list.js +8 -8
  295. package/views/types.d.ts +140 -140
  296. package/views/types.js +184 -184
  297. package/webparts/file.d.ts +15 -15
  298. package/webparts/file.js +6 -6
  299. package/webparts/index.d.ts +2 -2
  300. package/webparts/index.js +2 -2
  301. package/webparts/types.d.ts +83 -83
  302. package/webparts/types.js +117 -117
  303. package/webs/index.d.ts +16 -16
  304. package/webs/index.js +16 -16
  305. package/webs/types.d.ts +210 -210
  306. package/webs/types.js +295 -295
package/batch.d.ts CHANGED
@@ -1,18 +1,18 @@
1
- import { Batch } from "@pnp/odata";
2
- import { Runtime } from "@pnp/common";
3
- /**
4
- * Manages a batch of OData operations
5
- */
6
- export declare class SPBatch extends Batch {
7
- private url;
8
- private runtime;
9
- constructor(url: string, runtime?: Runtime);
10
- /**
11
- * Parses the response from a batch request into an array of Response instances
12
- *
13
- * @param body Text body of the response from the batch request
14
- */
15
- static ParseResponse(body: string): Response[];
16
- protected executeImpl(): Promise<void>;
17
- }
1
+ import { Batch } from "@pnp/odata";
2
+ import { Runtime } from "@pnp/common";
3
+ /**
4
+ * Manages a batch of OData operations
5
+ */
6
+ export declare class SPBatch extends Batch {
7
+ private url;
8
+ private runtime;
9
+ constructor(url: string, runtime?: Runtime);
10
+ /**
11
+ * Parses the response from a batch request into an array of Response instances
12
+ *
13
+ * @param body Text body of the response from the batch request
14
+ */
15
+ static ParseResponse(body: string): Response[];
16
+ protected executeImpl(): Promise<void>;
17
+ }
18
18
  //# sourceMappingURL=batch.d.ts.map
package/batch.js CHANGED
@@ -1,224 +1,224 @@
1
- import { __awaiter, __extends, __generator } from "tslib";
2
- import { Batch, HttpRequestError } from "@pnp/odata";
3
- import { getGUID, isUrlAbsolute, combine, mergeHeaders, hOP, DefaultRuntime } from "@pnp/common";
4
- import { Logger } from "@pnp/logging";
5
- import { SPHttpClient } from "./sphttpclient.js";
6
- import { toAbsoluteUrl } from "./utils/toabsoluteurl.js";
7
- /**
8
- * Manages a batch of OData operations
9
- */
10
- var SPBatch = /** @class */ (function (_super) {
11
- __extends(SPBatch, _super);
12
- function SPBatch(url, runtime) {
13
- if (runtime === void 0) { runtime = DefaultRuntime; }
14
- var _this = _super.call(this) || this;
15
- _this.url = url;
16
- _this.runtime = runtime;
17
- return _this;
18
- }
19
- /**
20
- * Parses the response from a batch request into an array of Response instances
21
- *
22
- * @param body Text body of the response from the batch request
23
- */
24
- SPBatch.ParseResponse = function (body) {
25
- var responses = [];
26
- var header = "--batchresponse_";
27
- // Ex. "HTTP/1.1 500 Internal Server Error"
28
- var statusRegExp = new RegExp("^HTTP/[0-9.]+ +([0-9]+) +(.*)", "i");
29
- var lines = body.split("\n");
30
- var state = "batch";
31
- var status;
32
- var statusText;
33
- for (var i = 0; i < lines.length; ++i) {
34
- var line = lines[i];
35
- switch (state) {
36
- case "batch":
37
- if (line.substr(0, header.length) === header) {
38
- state = "batchHeaders";
39
- }
40
- else {
41
- if (line.trim() !== "") {
42
- throw Error("Invalid response, line " + i);
43
- }
44
- }
45
- break;
46
- case "batchHeaders":
47
- if (line.trim() === "") {
48
- state = "status";
49
- }
50
- break;
51
- case "status": {
52
- var parts = statusRegExp.exec(line);
53
- if (parts.length !== 3) {
54
- throw Error("Invalid status, line " + i);
55
- }
56
- status = parseInt(parts[1], 10);
57
- statusText = parts[2];
58
- state = "statusHeaders";
59
- break;
60
- }
61
- case "statusHeaders":
62
- if (line.trim() === "") {
63
- state = "body";
64
- }
65
- break;
66
- case "body":
67
- responses.push((status === 204) ? new Response() : new Response(line, { status: status, statusText: statusText }));
68
- state = "batch";
69
- break;
70
- }
71
- }
72
- if (state !== "status") {
73
- throw Error("Unexpected end of input");
74
- }
75
- return responses;
76
- };
77
- SPBatch.prototype.executeImpl = function () {
78
- var _a;
79
- return __awaiter(this, void 0, void 0, function () {
80
- var client, absoluteRequestUrl, batchBody, currentChangeSetId, i, reqInfo, headers, url, method, castHeaders, batchOptions, fetchResponse, text, responses;
81
- var _this = this;
82
- return __generator(this, function (_b) {
83
- switch (_b.label) {
84
- case 0:
85
- Logger.write("[" + this.batchId + "] (" + (new Date()).getTime() + ") Executing batch with " + this.requests.length + " requests.", 1 /* Info */);
86
- // if we don't have any requests, don't bother sending anything
87
- // this could be due to caching further upstream, or just an empty batch
88
- if (this.requests.length < 1) {
89
- Logger.write("Resolving empty batch.", 1 /* Info */);
90
- return [2 /*return*/];
91
- }
92
- client = new SPHttpClient(this.runtime);
93
- return [4 /*yield*/, toAbsoluteUrl(this.url, this.runtime)];
94
- case 1:
95
- absoluteRequestUrl = _b.sent();
96
- batchBody = [];
97
- currentChangeSetId = "";
98
- for (i = 0; i < this.requests.length; i++) {
99
- reqInfo = this.requests[i];
100
- if (reqInfo.method === "GET") {
101
- if (currentChangeSetId.length > 0) {
102
- // end an existing change set
103
- batchBody.push("--changeset_" + currentChangeSetId + "--\n\n");
104
- currentChangeSetId = "";
105
- }
106
- batchBody.push("--batch_" + this.batchId + "\n");
107
- }
108
- else {
109
- if (currentChangeSetId.length < 1) {
110
- // start new change set
111
- currentChangeSetId = getGUID();
112
- batchBody.push("--batch_" + this.batchId + "\n");
113
- batchBody.push("Content-Type: multipart/mixed; boundary=\"changeset_" + currentChangeSetId + "\"\n\n");
114
- }
115
- batchBody.push("--changeset_" + currentChangeSetId + "\n");
116
- }
117
- // common batch part prefix
118
- batchBody.push("Content-Type: application/http\n");
119
- batchBody.push("Content-Transfer-Encoding: binary\n\n");
120
- headers = new Headers();
121
- url = isUrlAbsolute(reqInfo.url) ? reqInfo.url : combine(absoluteRequestUrl, reqInfo.url);
122
- Logger.write("[" + this.batchId + "] (" + (new Date()).getTime() + ") Adding request " + reqInfo.method + " " + url + " to batch.", 0 /* Verbose */);
123
- if (reqInfo.method !== "GET") {
124
- method = reqInfo.method;
125
- castHeaders = reqInfo.options.headers;
126
- if (hOP(reqInfo, "options") && hOP(reqInfo.options, "headers") && castHeaders["X-HTTP-Method"] !== undefined) {
127
- method = castHeaders["X-HTTP-Method"];
128
- delete castHeaders["X-HTTP-Method"];
129
- }
130
- batchBody.push(method + " " + url + " HTTP/1.1\n");
131
- headers.set("Content-Type", "application/json;odata=verbose;charset=utf-8");
132
- }
133
- else {
134
- batchBody.push(reqInfo.method + " " + url + " HTTP/1.1\n");
135
- }
136
- // merge global config headers
137
- mergeHeaders(headers, (_a = this.runtime.get("sp")) === null || _a === void 0 ? void 0 : _a.headers);
138
- // merge per-request headers
139
- if (reqInfo.options) {
140
- mergeHeaders(headers, reqInfo.options.headers);
141
- }
142
- // lastly we apply any default headers we need that may not exist
143
- if (!headers.has("Accept")) {
144
- headers.append("Accept", "application/json");
145
- }
146
- if (!headers.has("Content-Type")) {
147
- headers.append("Content-Type", "application/json;odata=verbose;charset=utf-8");
148
- }
149
- if (!headers.has("X-ClientService-ClientTag")) {
150
- headers.append("X-ClientService-ClientTag", "PnPCoreJS:@pnp-2.8.0:batch");
151
- }
152
- // write headers into batch body
153
- headers.forEach(function (value, name) {
154
- batchBody.push(name + ": " + value + "\n");
155
- });
156
- batchBody.push("\n");
157
- if (reqInfo.options.body) {
158
- batchBody.push(reqInfo.options.body + "\n\n");
159
- }
160
- }
161
- if (currentChangeSetId.length > 0) {
162
- // Close the changeset
163
- batchBody.push("--changeset_" + currentChangeSetId + "--\n\n");
164
- currentChangeSetId = "";
165
- }
166
- batchBody.push("--batch_" + this.batchId + "--\n");
167
- batchOptions = {
168
- "body": batchBody.join(""),
169
- "headers": {
170
- "Content-Type": "multipart/mixed; boundary=batch_" + this.batchId,
171
- },
172
- "method": "POST",
173
- };
174
- Logger.write("[" + this.batchId + "] (" + (new Date()).getTime() + ") Sending batch request.", 1 /* Info */);
175
- return [4 /*yield*/, client.fetch(combine(absoluteRequestUrl, "/_api/$batch"), batchOptions)];
176
- case 2:
177
- fetchResponse = _b.sent();
178
- if (!!fetchResponse.ok) return [3 /*break*/, 4];
179
- return [4 /*yield*/, HttpRequestError.init(fetchResponse)];
180
- case 3:
181
- // the entire batch resulted in an error and we need to handle that better #1356
182
- // things consistently with the rest of the http errors
183
- throw (_b.sent());
184
- case 4: return [4 /*yield*/, fetchResponse.text()];
185
- case 5:
186
- text = _b.sent();
187
- responses = SPBatch.ParseResponse(text);
188
- if (responses.length !== this.requests.length) {
189
- throw Error("Could not properly parse responses to match requests in batch.");
190
- }
191
- Logger.write("[" + this.batchId + "] (" + (new Date()).getTime() + ") Resolving batched requests.", 1 /* Info */);
192
- // this structure ensures that we resolve the batched requests in the order we expect
193
- // using async this is not guaranteed depending on the requests
194
- return [2 /*return*/, responses.reduce(function (p, response, index) { return p.then(function () { return __awaiter(_this, void 0, void 0, function () {
195
- var request, _a, _b, e_1;
196
- return __generator(this, function (_c) {
197
- switch (_c.label) {
198
- case 0:
199
- request = this.requests[index];
200
- Logger.write("[" + request.id + "] (" + (new Date()).getTime() + ") Resolving request in batch " + this.batchId + ".", 1 /* Info */);
201
- _c.label = 1;
202
- case 1:
203
- _c.trys.push([1, 3, , 4]);
204
- _b = (_a = request).resolve;
205
- return [4 /*yield*/, request.parser.parse(response)];
206
- case 2:
207
- _b.apply(_a, [_c.sent()]);
208
- return [3 /*break*/, 4];
209
- case 3:
210
- e_1 = _c.sent();
211
- request.reject(e_1);
212
- return [3 /*break*/, 4];
213
- case 4: return [2 /*return*/];
214
- }
215
- });
216
- }); }); }, Promise.resolve(void (0)))];
217
- }
218
- });
219
- });
220
- };
221
- return SPBatch;
222
- }(Batch));
223
- export { SPBatch };
1
+ import { __awaiter, __extends, __generator } from "tslib";
2
+ import { Batch, HttpRequestError } from "@pnp/odata";
3
+ import { getGUID, isUrlAbsolute, combine, mergeHeaders, hOP, DefaultRuntime } from "@pnp/common";
4
+ import { Logger } from "@pnp/logging";
5
+ import { SPHttpClient } from "./sphttpclient.js";
6
+ import { toAbsoluteUrl } from "./utils/toabsoluteurl.js";
7
+ /**
8
+ * Manages a batch of OData operations
9
+ */
10
+ var SPBatch = /** @class */ (function (_super) {
11
+ __extends(SPBatch, _super);
12
+ function SPBatch(url, runtime) {
13
+ if (runtime === void 0) { runtime = DefaultRuntime; }
14
+ var _this = _super.call(this) || this;
15
+ _this.url = url;
16
+ _this.runtime = runtime;
17
+ return _this;
18
+ }
19
+ /**
20
+ * Parses the response from a batch request into an array of Response instances
21
+ *
22
+ * @param body Text body of the response from the batch request
23
+ */
24
+ SPBatch.ParseResponse = function (body) {
25
+ var responses = [];
26
+ var header = "--batchresponse_";
27
+ // Ex. "HTTP/1.1 500 Internal Server Error"
28
+ var statusRegExp = new RegExp("^HTTP/[0-9.]+ +([0-9]+) +(.*)", "i");
29
+ var lines = body.split("\n");
30
+ var state = "batch";
31
+ var status;
32
+ var statusText;
33
+ for (var i = 0; i < lines.length; ++i) {
34
+ var line = lines[i];
35
+ switch (state) {
36
+ case "batch":
37
+ if (line.substr(0, header.length) === header) {
38
+ state = "batchHeaders";
39
+ }
40
+ else {
41
+ if (line.trim() !== "") {
42
+ throw Error("Invalid response, line " + i);
43
+ }
44
+ }
45
+ break;
46
+ case "batchHeaders":
47
+ if (line.trim() === "") {
48
+ state = "status";
49
+ }
50
+ break;
51
+ case "status": {
52
+ var parts = statusRegExp.exec(line);
53
+ if (parts.length !== 3) {
54
+ throw Error("Invalid status, line " + i);
55
+ }
56
+ status = parseInt(parts[1], 10);
57
+ statusText = parts[2];
58
+ state = "statusHeaders";
59
+ break;
60
+ }
61
+ case "statusHeaders":
62
+ if (line.trim() === "") {
63
+ state = "body";
64
+ }
65
+ break;
66
+ case "body":
67
+ responses.push((status === 204) ? new Response() : new Response(line, { status: status, statusText: statusText }));
68
+ state = "batch";
69
+ break;
70
+ }
71
+ }
72
+ if (state !== "status") {
73
+ throw Error("Unexpected end of input");
74
+ }
75
+ return responses;
76
+ };
77
+ SPBatch.prototype.executeImpl = function () {
78
+ var _a;
79
+ return __awaiter(this, void 0, void 0, function () {
80
+ var client, absoluteRequestUrl, batchBody, currentChangeSetId, i, reqInfo, headers, url, method, castHeaders, batchOptions, fetchResponse, text, responses;
81
+ var _this = this;
82
+ return __generator(this, function (_b) {
83
+ switch (_b.label) {
84
+ case 0:
85
+ Logger.write("[" + this.batchId + "] (" + (new Date()).getTime() + ") Executing batch with " + this.requests.length + " requests.", 1 /* Info */);
86
+ // if we don't have any requests, don't bother sending anything
87
+ // this could be due to caching further upstream, or just an empty batch
88
+ if (this.requests.length < 1) {
89
+ Logger.write("Resolving empty batch.", 1 /* Info */);
90
+ return [2 /*return*/];
91
+ }
92
+ client = new SPHttpClient(this.runtime);
93
+ return [4 /*yield*/, toAbsoluteUrl(this.url, this.runtime)];
94
+ case 1:
95
+ absoluteRequestUrl = _b.sent();
96
+ batchBody = [];
97
+ currentChangeSetId = "";
98
+ for (i = 0; i < this.requests.length; i++) {
99
+ reqInfo = this.requests[i];
100
+ if (reqInfo.method === "GET") {
101
+ if (currentChangeSetId.length > 0) {
102
+ // end an existing change set
103
+ batchBody.push("--changeset_" + currentChangeSetId + "--\n\n");
104
+ currentChangeSetId = "";
105
+ }
106
+ batchBody.push("--batch_" + this.batchId + "\n");
107
+ }
108
+ else {
109
+ if (currentChangeSetId.length < 1) {
110
+ // start new change set
111
+ currentChangeSetId = getGUID();
112
+ batchBody.push("--batch_" + this.batchId + "\n");
113
+ batchBody.push("Content-Type: multipart/mixed; boundary=\"changeset_" + currentChangeSetId + "\"\n\n");
114
+ }
115
+ batchBody.push("--changeset_" + currentChangeSetId + "\n");
116
+ }
117
+ // common batch part prefix
118
+ batchBody.push("Content-Type: application/http\n");
119
+ batchBody.push("Content-Transfer-Encoding: binary\n\n");
120
+ headers = new Headers();
121
+ url = isUrlAbsolute(reqInfo.url) ? reqInfo.url : combine(absoluteRequestUrl, reqInfo.url);
122
+ Logger.write("[" + this.batchId + "] (" + (new Date()).getTime() + ") Adding request " + reqInfo.method + " " + url + " to batch.", 0 /* Verbose */);
123
+ if (reqInfo.method !== "GET") {
124
+ method = reqInfo.method;
125
+ castHeaders = reqInfo.options.headers;
126
+ if (hOP(reqInfo, "options") && hOP(reqInfo.options, "headers") && castHeaders["X-HTTP-Method"] !== undefined) {
127
+ method = castHeaders["X-HTTP-Method"];
128
+ delete castHeaders["X-HTTP-Method"];
129
+ }
130
+ batchBody.push(method + " " + url + " HTTP/1.1\n");
131
+ headers.set("Content-Type", "application/json;odata=verbose;charset=utf-8");
132
+ }
133
+ else {
134
+ batchBody.push(reqInfo.method + " " + url + " HTTP/1.1\n");
135
+ }
136
+ // merge global config headers
137
+ mergeHeaders(headers, (_a = this.runtime.get("sp")) === null || _a === void 0 ? void 0 : _a.headers);
138
+ // merge per-request headers
139
+ if (reqInfo.options) {
140
+ mergeHeaders(headers, reqInfo.options.headers);
141
+ }
142
+ // lastly we apply any default headers we need that may not exist
143
+ if (!headers.has("Accept")) {
144
+ headers.append("Accept", "application/json");
145
+ }
146
+ if (!headers.has("Content-Type")) {
147
+ headers.append("Content-Type", "application/json;odata=verbose;charset=utf-8");
148
+ }
149
+ if (!headers.has("X-ClientService-ClientTag")) {
150
+ headers.append("X-ClientService-ClientTag", "PnPCoreJS:@pnp-2.12.0:batch");
151
+ }
152
+ // write headers into batch body
153
+ headers.forEach(function (value, name) {
154
+ batchBody.push(name + ": " + value + "\n");
155
+ });
156
+ batchBody.push("\n");
157
+ if (reqInfo.options.body) {
158
+ batchBody.push(reqInfo.options.body + "\n\n");
159
+ }
160
+ }
161
+ if (currentChangeSetId.length > 0) {
162
+ // Close the changeset
163
+ batchBody.push("--changeset_" + currentChangeSetId + "--\n\n");
164
+ currentChangeSetId = "";
165
+ }
166
+ batchBody.push("--batch_" + this.batchId + "--\n");
167
+ batchOptions = {
168
+ "body": batchBody.join(""),
169
+ "headers": {
170
+ "Content-Type": "multipart/mixed; boundary=batch_" + this.batchId,
171
+ },
172
+ "method": "POST",
173
+ };
174
+ Logger.write("[" + this.batchId + "] (" + (new Date()).getTime() + ") Sending batch request.", 1 /* Info */);
175
+ return [4 /*yield*/, client.fetch(combine(absoluteRequestUrl, "/_api/$batch"), batchOptions)];
176
+ case 2:
177
+ fetchResponse = _b.sent();
178
+ if (!!fetchResponse.ok) return [3 /*break*/, 4];
179
+ return [4 /*yield*/, HttpRequestError.init(fetchResponse)];
180
+ case 3:
181
+ // the entire batch resulted in an error and we need to handle that better #1356
182
+ // things consistently with the rest of the http errors
183
+ throw (_b.sent());
184
+ case 4: return [4 /*yield*/, fetchResponse.text()];
185
+ case 5:
186
+ text = _b.sent();
187
+ responses = SPBatch.ParseResponse(text);
188
+ if (responses.length !== this.requests.length) {
189
+ throw Error("Could not properly parse responses to match requests in batch.");
190
+ }
191
+ Logger.write("[" + this.batchId + "] (" + (new Date()).getTime() + ") Resolving batched requests.", 1 /* Info */);
192
+ // this structure ensures that we resolve the batched requests in the order we expect
193
+ // using async this is not guaranteed depending on the requests
194
+ return [2 /*return*/, responses.reduce(function (p, response, index) { return p.then(function () { return __awaiter(_this, void 0, void 0, function () {
195
+ var request, _a, _b, e_1;
196
+ return __generator(this, function (_c) {
197
+ switch (_c.label) {
198
+ case 0:
199
+ request = this.requests[index];
200
+ Logger.write("[" + request.id + "] (" + (new Date()).getTime() + ") Resolving request in batch " + this.batchId + ".", 1 /* Info */);
201
+ _c.label = 1;
202
+ case 1:
203
+ _c.trys.push([1, 3, , 4]);
204
+ _b = (_a = request).resolve;
205
+ return [4 /*yield*/, request.parser.parse(response)];
206
+ case 2:
207
+ _b.apply(_a, [_c.sent()]);
208
+ return [3 /*break*/, 4];
209
+ case 3:
210
+ e_1 = _c.sent();
211
+ request.reject(e_1);
212
+ return [3 /*break*/, 4];
213
+ case 4: return [2 /*return*/];
214
+ }
215
+ });
216
+ }); }); }, Promise.resolve(void (0)))];
217
+ }
218
+ });
219
+ });
220
+ };
221
+ return SPBatch;
222
+ }(Batch));
223
+ export { SPBatch };
224
224
  //# sourceMappingURL=batch.js.map
@@ -1,23 +1,23 @@
1
- /**
2
- * Gets the next order value 1 based for the provided collection
3
- *
4
- * @param collection Collection of orderable things
5
- */
6
- export declare function getNextOrder(collection: {
7
- order: number;
8
- }[]): number;
9
- /**
10
- * Normalizes the order value for all the sections, columns, and controls to be 1 based and stepped (1, 2, 3...)
11
- *
12
- * @param collection The collection to normalize
13
- */
14
- export declare function reindex(collection: {
15
- order: number;
16
- columns?: {
17
- order: number;
18
- }[];
19
- controls?: {
20
- order: number;
21
- }[];
22
- }[]): void;
1
+ /**
2
+ * Gets the next order value 1 based for the provided collection
3
+ *
4
+ * @param collection Collection of orderable things
5
+ */
6
+ export declare function getNextOrder(collection: {
7
+ order: number;
8
+ }[]): number;
9
+ /**
10
+ * Normalizes the order value for all the sections, columns, and controls to be 1 based and stepped (1, 2, 3...)
11
+ *
12
+ * @param collection The collection to normalize
13
+ */
14
+ export declare function reindex(collection: {
15
+ order: number;
16
+ columns?: {
17
+ order: number;
18
+ }[];
19
+ controls?: {
20
+ order: number;
21
+ }[];
22
+ }[]): void;
23
23
  //# sourceMappingURL=funcs.d.ts.map
@@ -1,26 +1,26 @@
1
- import { hOP } from "@pnp/common";
2
- /**
3
- * Gets the next order value 1 based for the provided collection
4
- *
5
- * @param collection Collection of orderable things
6
- */
7
- export function getNextOrder(collection) {
8
- return collection.length < 1 ? 1 : (Math.max.apply(null, collection.map(function (i) { return i.order; })) + 1);
9
- }
10
- /**
11
- * Normalizes the order value for all the sections, columns, and controls to be 1 based and stepped (1, 2, 3...)
12
- *
13
- * @param collection The collection to normalize
14
- */
15
- export function reindex(collection) {
16
- for (var i = 0; i < collection.length; i++) {
17
- collection[i].order = i + 1;
18
- if (hOP(collection[i], "columns")) {
19
- reindex(collection[i].columns);
20
- }
21
- else if (hOP(collection[i], "controls")) {
22
- reindex(collection[i].controls);
23
- }
24
- }
25
- }
1
+ import { hOP } from "@pnp/common";
2
+ /**
3
+ * Gets the next order value 1 based for the provided collection
4
+ *
5
+ * @param collection Collection of orderable things
6
+ */
7
+ export function getNextOrder(collection) {
8
+ return collection.length < 1 ? 1 : (Math.max.apply(null, collection.map(function (i) { return i.order; })) + 1);
9
+ }
10
+ /**
11
+ * Normalizes the order value for all the sections, columns, and controls to be 1 based and stepped (1, 2, 3...)
12
+ *
13
+ * @param collection The collection to normalize
14
+ */
15
+ export function reindex(collection) {
16
+ for (var i = 0; i < collection.length; i++) {
17
+ collection[i].order = i + 1;
18
+ if (hOP(collection[i], "columns")) {
19
+ reindex(collection[i].columns);
20
+ }
21
+ else if (hOP(collection[i], "controls")) {
22
+ reindex(collection[i].controls);
23
+ }
24
+ }
25
+ }
26
26
  //# sourceMappingURL=funcs.js.map
@@ -1,3 +1,3 @@
1
- import "./web.js";
2
- export { IClientsidePage, ClientsidePageFromFile, CreateClientsidePage, CanvasColumn, CanvasColumnFactor, CanvasSection, IClientsidePageComponent, ClientsidePageLayoutType, ClientsideText, ClientsideWebpart, ColumnControl, ICanvasControlBaseData, IClientControlEmphasis, IClientsideControlBaseData, IClientsidePageColumnData, IClientsidePageSettingsSlice, IClientsideTextData, IClientsideWebPartData, IPageData, LayoutType, PromotedState, TextAlignment, IBannerImageProps, } from "./types.js";
1
+ import "./web.js";
2
+ export { IClientsidePage, ClientsidePageFromFile, CreateClientsidePage, CanvasColumn, CanvasColumnFactor, CanvasSection, IClientsidePageComponent, ClientsidePageLayoutType, ClientsideText, ClientsideWebpart, ColumnControl, ICanvasControlBaseData, IClientControlEmphasis, IClientsideControlBaseData, IClientsidePageColumnData, IClientsidePageSettingsSlice, IClientsideTextData, IClientsideWebPartData, IPageData, LayoutType, PromotedState, TextAlignment, IBannerImageProps, } from "./types.js";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,3 @@
1
- import "./web.js";
2
- export { ClientsidePageFromFile, CreateClientsidePage, CanvasColumn, CanvasSection, ClientsideText, ClientsideWebpart, ColumnControl, PromotedState, } from "./types.js";
1
+ import "./web.js";
2
+ export { ClientsidePageFromFile, CreateClientsidePage, CanvasColumn, CanvasSection, ClientsideText, ClientsideWebpart, ColumnControl, PromotedState, } from "./types.js";
3
3
  //# sourceMappingURL=index.js.map