@pnp/sp 2.7.0 → 2.11.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 (309) 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.js +177 -177
  6. package/appcatalog/web.d.ts +16 -16
  7. package/appcatalog/web.js +6 -6
  8. package/attachments/index.d.ts +2 -2
  9. package/attachments/index.js +2 -2
  10. package/attachments/item.d.ts +12 -12
  11. package/attachments/item.js +4 -4
  12. package/attachments/types.d.ts +92 -92
  13. package/attachments/types.js +240 -240
  14. package/batch.d.ts +17 -17
  15. package/batch.js +223 -223
  16. package/batch.js.map +1 -1
  17. package/clientside-pages/funcs.d.ts +22 -22
  18. package/clientside-pages/funcs.js +25 -25
  19. package/clientside-pages/index.d.ts +2 -2
  20. package/clientside-pages/index.js +2 -2
  21. package/clientside-pages/types.d.ts +496 -494
  22. package/clientside-pages/types.d.ts.map +1 -1
  23. package/clientside-pages/types.js +1496 -1485
  24. package/clientside-pages/types.js.map +1 -1
  25. package/clientside-pages/web.d.ts +41 -41
  26. package/clientside-pages/web.js +57 -57
  27. package/column-defaults/folder.d.ts +27 -27
  28. package/column-defaults/folder.js +82 -82
  29. package/column-defaults/index.d.ts +3 -3
  30. package/column-defaults/index.js +2 -2
  31. package/column-defaults/list.d.ts +19 -19
  32. package/column-defaults/list.js +198 -198
  33. package/column-defaults/types.d.ts +21 -21
  34. package/column-defaults/types.js +1 -1
  35. package/comments/clientside-page.d.ts +57 -57
  36. package/comments/clientside-page.d.ts.map +1 -1
  37. package/comments/clientside-page.js +136 -136
  38. package/comments/index.d.ts +2 -2
  39. package/comments/index.js +2 -2
  40. package/comments/item.d.ts +29 -29
  41. package/comments/item.js +47 -47
  42. package/comments/types.d.ts +107 -107
  43. package/comments/types.d.ts.map +1 -1
  44. package/comments/types.js +145 -145
  45. package/comments/types.js.map +1 -1
  46. package/content-types/index.d.ts +4 -4
  47. package/content-types/index.js +4 -4
  48. package/content-types/item.d.ts +12 -12
  49. package/content-types/item.js +4 -4
  50. package/content-types/list.d.ts +12 -12
  51. package/content-types/list.js +4 -4
  52. package/content-types/types.d.ts +107 -107
  53. package/content-types/types.js +166 -166
  54. package/content-types/web.d.ts +12 -12
  55. package/content-types/web.js +4 -4
  56. package/decorators.d.ts +11 -11
  57. package/decorators.js +28 -28
  58. package/features/index.d.ts +3 -3
  59. package/features/index.js +3 -3
  60. package/features/site.d.ts +12 -12
  61. package/features/site.js +4 -4
  62. package/features/types.d.ts +47 -47
  63. package/features/types.js +109 -109
  64. package/features/web.d.ts +12 -12
  65. package/features/web.js +4 -4
  66. package/fields/index.d.ts +4 -4
  67. package/fields/index.js +4 -4
  68. package/fields/list.d.ts +12 -12
  69. package/fields/list.js +4 -4
  70. package/fields/types.d.ts +368 -361
  71. package/fields/types.d.ts.map +1 -1
  72. package/fields/types.js +624 -609
  73. package/fields/types.js.map +1 -1
  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.js +53 -53
  110. package/hubsites/web.d.ts +21 -21
  111. package/hubsites/web.js +23 -23
  112. package/index.d.ts +14 -14
  113. package/index.js +13 -13
  114. package/items/index.d.ts +2 -2
  115. package/items/index.js +2 -2
  116. package/items/list.d.ts +9 -9
  117. package/items/list.js +4 -4
  118. package/items/types.d.ts +226 -219
  119. package/items/types.d.ts.map +1 -1
  120. package/items/types.js +549 -511
  121. package/items/types.js.map +1 -1
  122. package/lists/index.d.ts +2 -2
  123. package/lists/index.js +2 -2
  124. package/lists/types.d.ts +495 -495
  125. package/lists/types.js +522 -522
  126. package/lists/types.js.map +1 -1
  127. package/lists/web.d.ts +43 -43
  128. package/lists/web.js +27 -27
  129. package/navigation/index.d.ts +8 -8
  130. package/navigation/index.js +14 -14
  131. package/navigation/types.d.ts +154 -154
  132. package/navigation/types.js +219 -219
  133. package/navigation/web.d.ts +13 -13
  134. package/navigation/web.js +4 -4
  135. package/odata.d.ts +5 -5
  136. package/odata.js +90 -90
  137. package/odata.js.map +1 -1
  138. package/operations.d.ts +9 -9
  139. package/operations.js +63 -63
  140. package/package.json +4 -4
  141. package/presets/all.d.ts +72 -72
  142. package/presets/all.js +72 -72
  143. package/presets/core.d.ts +11 -11
  144. package/presets/core.js +11 -11
  145. package/profiles/index.d.ts +7 -7
  146. package/profiles/index.js +13 -13
  147. package/profiles/types.d.ts +357 -357
  148. package/profiles/types.js +454 -454
  149. package/readme.md +21 -21
  150. package/regional-settings/content-type.d.ts +7 -7
  151. package/regional-settings/content-type.js +4 -4
  152. package/regional-settings/field.d.ts +7 -7
  153. package/regional-settings/field.js +4 -4
  154. package/regional-settings/funcs.d.ts +2 -2
  155. package/regional-settings/funcs.js +8 -8
  156. package/regional-settings/index.d.ts +6 -6
  157. package/regional-settings/index.js +6 -6
  158. package/regional-settings/list.d.ts +7 -7
  159. package/regional-settings/list.js +4 -4
  160. package/regional-settings/types.d.ts +111 -111
  161. package/regional-settings/types.js +159 -159
  162. package/regional-settings/user-custom-actions.d.ts +7 -7
  163. package/regional-settings/user-custom-actions.js +4 -4
  164. package/regional-settings/web.d.ts +12 -12
  165. package/regional-settings/web.js +7 -7
  166. package/related-items/index.d.ts +1 -1
  167. package/related-items/index.js +1 -1
  168. package/related-items/types.d.ts +76 -76
  169. package/related-items/types.js +103 -103
  170. package/related-items/web.d.ts +12 -12
  171. package/related-items/web.js +9 -9
  172. package/rest.d.ts +44 -44
  173. package/rest.js +72 -72
  174. package/search/index.d.ts +30 -30
  175. package/search/index.js +25 -25
  176. package/search/query.d.ts +62 -62
  177. package/search/query.js +302 -302
  178. package/search/suggest.d.ts +76 -76
  179. package/search/suggest.js +66 -66
  180. package/search/types.d.ts +426 -426
  181. package/search/types.js +57 -57
  182. package/security/funcs.d.ts +43 -43
  183. package/security/funcs.js +142 -142
  184. package/security/index.d.ts +4 -4
  185. package/security/index.js +4 -4
  186. package/security/item.d.ts +7 -7
  187. package/security/item.js +14 -14
  188. package/security/list.d.ts +7 -7
  189. package/security/list.js +14 -14
  190. package/security/types.d.ts +318 -318
  191. package/security/types.js +399 -399
  192. package/security/web.d.ts +9 -9
  193. package/security/web.js +15 -15
  194. package/sharepointqueryable.d.ts +135 -135
  195. package/sharepointqueryable.js +265 -265
  196. package/sharing/file.d.ts +18 -18
  197. package/sharing/file.d.ts.map +1 -1
  198. package/sharing/file.js +116 -15
  199. package/sharing/file.js.map +1 -1
  200. package/sharing/folder.d.ts +9 -9
  201. package/sharing/folder.js +136 -136
  202. package/sharing/funcs.d.ts +62 -62
  203. package/sharing/funcs.js +239 -239
  204. package/sharing/funcs.js.map +1 -1
  205. package/sharing/index.d.ts +5 -5
  206. package/sharing/index.js +5 -5
  207. package/sharing/item.d.ts +16 -16
  208. package/sharing/item.js +15 -15
  209. package/sharing/types.d.ts +583 -583
  210. package/sharing/types.js +113 -113
  211. package/sharing/web.d.ts +19 -19
  212. package/sharing/web.js +76 -76
  213. package/site-designs/index.d.ts +8 -8
  214. package/site-designs/index.js +14 -14
  215. package/site-designs/types.d.ts +319 -319
  216. package/site-designs/types.js +203 -203
  217. package/site-designs/web.d.ts +25 -25
  218. package/site-designs/web.js +11 -11
  219. package/site-groups/index.d.ts +2 -2
  220. package/site-groups/index.js +2 -2
  221. package/site-groups/types.d.ts +89 -89
  222. package/site-groups/types.js +125 -125
  223. package/site-groups/web.d.ts +40 -40
  224. package/site-groups/web.js +30 -30
  225. package/site-scripts/index.d.ts +9 -9
  226. package/site-scripts/index.js +15 -15
  227. package/site-scripts/list.d.ts +12 -12
  228. package/site-scripts/list.js +24 -24
  229. package/site-scripts/types.d.ts +183 -183
  230. package/site-scripts/types.js +141 -141
  231. package/site-scripts/web.d.ts +13 -13
  232. package/site-scripts/web.js +5 -5
  233. package/site-users/index.d.ts +2 -2
  234. package/site-users/index.js +2 -2
  235. package/site-users/types.d.ts +138 -138
  236. package/site-users/types.js +122 -122
  237. package/site-users/web.d.ts +31 -31
  238. package/site-users/web.js +27 -27
  239. package/sites/index.d.ts +7 -7
  240. package/sites/index.js +13 -13
  241. package/sites/types.d.ts +147 -147
  242. package/sites/types.js +321 -321
  243. package/social/index.d.ts +10 -10
  244. package/social/index.js +13 -13
  245. package/social/types.d.ts +309 -309
  246. package/social/types.js +322 -322
  247. package/sphttpclient.d.ts +18 -18
  248. package/sphttpclient.js +189 -189
  249. package/splibconfig.d.ts +22 -22
  250. package/splibconfig.js +13 -13
  251. package/sputilities/index.d.ts +7 -7
  252. package/sputilities/index.js +13 -13
  253. package/sputilities/types.d.ts +130 -130
  254. package/sputilities/types.js +118 -118
  255. package/subscriptions/index.d.ts +2 -2
  256. package/subscriptions/index.js +2 -2
  257. package/subscriptions/list.d.ts +13 -13
  258. package/subscriptions/list.js +4 -4
  259. package/subscriptions/types.d.ts +54 -54
  260. package/subscriptions/types.js +111 -111
  261. package/taxonomy/index.d.ts +7 -7
  262. package/taxonomy/index.js +13 -13
  263. package/taxonomy/types.d.ts +200 -200
  264. package/taxonomy/types.js +347 -347
  265. package/taxonomy/types.js.map +1 -1
  266. package/telemetry.d.ts +12 -12
  267. package/telemetry.js +48 -48
  268. package/types.d.ts +218 -218
  269. package/types.js +79 -79
  270. package/user-custom-actions/index.d.ts +4 -4
  271. package/user-custom-actions/index.js +4 -4
  272. package/user-custom-actions/list.d.ts +12 -12
  273. package/user-custom-actions/list.js +4 -4
  274. package/user-custom-actions/site.d.ts +12 -12
  275. package/user-custom-actions/site.js +4 -4
  276. package/user-custom-actions/types.d.ts +82 -82
  277. package/user-custom-actions/types.js +93 -93
  278. package/user-custom-actions/web.d.ts +15 -15
  279. package/user-custom-actions/web.js +4 -4
  280. package/utils/escapeQueryStrValue.d.ts +1 -1
  281. package/utils/escapeQueryStrValue.js +19 -19
  282. package/utils/extractweburl.d.ts +1 -1
  283. package/utils/extractweburl.js +15 -15
  284. package/utils/file-names.d.ts +17 -17
  285. package/utils/file-names.js +38 -38
  286. package/utils/metadata.d.ts +5 -5
  287. package/utils/metadata.js +5 -5
  288. package/utils/objectToSPKeyValueCollection.d.ts +20 -20
  289. package/utils/objectToSPKeyValueCollection.js +16 -16
  290. package/utils/toResourcePath.d.ts +7 -7
  291. package/utils/toResourcePath.js +6 -6
  292. package/utils/toabsoluteurl.d.ts +7 -7
  293. package/utils/toabsoluteurl.js +61 -61
  294. package/views/index.d.ts +2 -2
  295. package/views/index.js +2 -2
  296. package/views/list.d.ts +23 -23
  297. package/views/list.js +8 -8
  298. package/views/types.d.ts +140 -140
  299. package/views/types.js +184 -184
  300. package/webparts/file.d.ts +15 -15
  301. package/webparts/file.js +6 -6
  302. package/webparts/index.d.ts +2 -2
  303. package/webparts/index.js +2 -2
  304. package/webparts/types.d.ts +83 -83
  305. package/webparts/types.js +117 -117
  306. package/webs/index.d.ts +16 -16
  307. package/webs/index.js +16 -16
  308. package/webs/types.d.ts +210 -210
  309. package/webs/types.js +295 -295
package/sphttpclient.d.ts CHANGED
@@ -1,19 +1,19 @@
1
- import { IFetchOptions, IRequestClient, IHttpClientImpl, Runtime } from "@pnp/common";
2
- export declare class SPHttpClient implements IRequestClient {
3
- protected _runtime: Runtime;
4
- protected _impl: IHttpClientImpl;
5
- protected _digestCache: IGetDigest;
6
- constructor(runtime?: Runtime);
7
- constructor(runtime?: Runtime, impl?: IHttpClientImpl);
8
- fetch(url: string, options?: IFetchOptions): Promise<Response>;
9
- fetchRaw(url: string, options?: IFetchOptions): Promise<Response>;
10
- get(url: string, options?: IFetchOptions): Promise<Response>;
11
- post(url: string, options?: IFetchOptions): Promise<Response>;
12
- patch(url: string, options?: IFetchOptions): Promise<Response>;
13
- delete(url: string, options?: IFetchOptions): Promise<Response>;
14
- }
15
- interface IGetDigest {
16
- (webUrl: string): Promise<string>;
17
- }
18
- export {};
1
+ import { IFetchOptions, IRequestClient, IHttpClientImpl, Runtime } from "@pnp/common";
2
+ export declare class SPHttpClient implements IRequestClient {
3
+ protected _runtime: Runtime;
4
+ protected _impl: IHttpClientImpl;
5
+ protected _digestCache: IGetDigest;
6
+ constructor(runtime?: Runtime);
7
+ constructor(runtime?: Runtime, impl?: IHttpClientImpl);
8
+ fetch(url: string, options?: IFetchOptions): Promise<Response>;
9
+ fetchRaw(url: string, options?: IFetchOptions): Promise<Response>;
10
+ get(url: string, options?: IFetchOptions): Promise<Response>;
11
+ post(url: string, options?: IFetchOptions): Promise<Response>;
12
+ patch(url: string, options?: IFetchOptions): Promise<Response>;
13
+ delete(url: string, options?: IFetchOptions): Promise<Response>;
14
+ }
15
+ interface IGetDigest {
16
+ (webUrl: string): Promise<string>;
17
+ }
18
+ export {};
19
19
  //# sourceMappingURL=sphttpclient.d.ts.map
package/sphttpclient.js CHANGED
@@ -1,190 +1,190 @@
1
- import { __awaiter, __generator } from "tslib";
2
- import { assign, mergeHeaders, getCtxCallback, combine, dateAdd, DefaultRuntime, Runtime, objectDefinedNotNull, } from "@pnp/common";
3
- import { extractWebUrl } from "./utils/extractweburl.js";
4
- import { tag } from "./telemetry.js";
5
- import { ODataParser, HttpRequestError } from "@pnp/odata";
6
- var SPHttpClient = /** @class */ (function () {
7
- function SPHttpClient() {
8
- // constructor(...args: [runtime: Runtime] | [impl: IHttpClientImpl, runtime?: Runtime]) {
9
- var args = [];
10
- for (var _i = 0; _i < arguments.length; _i++) {
11
- args[_i] = arguments[_i];
12
- }
13
- var _a;
14
- this._runtime = args.length > 0 && args[0] instanceof Runtime ? args[0] : DefaultRuntime;
15
- this._impl = args.length > 1 && objectDefinedNotNull(args[1]) ?
16
- args[1] : ((_a = this._runtime.get("sp")) === null || _a === void 0 ? void 0 : _a.fetchClientFactory()) || null;
17
- if (this._impl === null) {
18
- throw Error("Could not generate fetchClientFactory in SPHttpClient.");
19
- }
20
- this._digestCache = getDigestFactory(this);
21
- }
22
- SPHttpClient.prototype.fetch = function (url, options) {
23
- var _a;
24
- if (options === void 0) { options = {}; }
25
- return __awaiter(this, void 0, void 0, function () {
26
- var opts, headers, methodName, clientTag, digest;
27
- return __generator(this, function (_b) {
28
- switch (_b.label) {
29
- case 0:
30
- opts = assign(options, { cache: "no-cache", credentials: "same-origin" }, true);
31
- headers = new Headers();
32
- // first we add the global headers so they can be overwritten by any passed in locally to this call
33
- mergeHeaders(headers, (_a = this._runtime.get("sp")) === null || _a === void 0 ? void 0 : _a.headers);
34
- // second we add the local options so we can overwrite the globals
35
- mergeHeaders(headers, options.headers);
36
- // lastly we apply any default headers we need that may not exist
37
- if (!headers.has("Accept")) {
38
- headers.append("Accept", "application/json");
39
- }
40
- if (!headers.has("Content-Type")) {
41
- headers.append("Content-Type", "application/json;odata=verbose;charset=utf-8");
42
- }
43
- if (!headers.has("X-ClientService-ClientTag")) {
44
- methodName = tag.getClientTag(headers);
45
- clientTag = "PnPCoreJS:2.7.0:" + methodName;
46
- if (clientTag.length > 32) {
47
- clientTag = clientTag.substr(0, 32);
48
- }
49
- headers.append("X-ClientService-ClientTag", clientTag);
50
- }
51
- opts = assign(opts, { headers: headers });
52
- if (!(opts.method && opts.method.toUpperCase() !== "GET" && !headers.has("X-RequestDigest") && !headers.has("Authorization"))) return [3 /*break*/, 2];
53
- return [4 /*yield*/, this._digestCache(extractWebUrl(url))];
54
- case 1:
55
- digest = _b.sent();
56
- headers.append("X-RequestDigest", digest);
57
- _b.label = 2;
58
- case 2: return [2 /*return*/, this.fetchRaw(url, opts)];
59
- }
60
- });
61
- });
62
- };
63
- SPHttpClient.prototype.fetchRaw = function (url, options) {
64
- var _this = this;
65
- if (options === void 0) { options = {}; }
66
- // here we need to normalize the headers
67
- var rawHeaders = new Headers();
68
- mergeHeaders(rawHeaders, options.headers);
69
- options = assign(options, { headers: rawHeaders });
70
- var retry = function (ctx) {
71
- // handles setting the proper timeout for a retry
72
- var setRetry = function (response) {
73
- var delay;
74
- if (response.headers.has("Retry-After")) {
75
- // if we have gotten a header, use that value as the delay value in seconds
76
- delay = parseInt(response.headers.get("Retry-After"), 10) * 1000;
77
- }
78
- else {
79
- // grab our current delay
80
- delay = ctx.delay;
81
- // Increment our counters.
82
- ctx.delay *= 2;
83
- }
84
- ctx.attempts++;
85
- // If we have exceeded the retry count, reject.
86
- if (ctx.retryCount <= ctx.attempts) {
87
- // eslint-disable-next-line max-len
88
- ctx.reject(new HttpRequestError("Retry count exceeded (" + ctx.retryCount + ") for request. Response status: [" + response.status + "] " + response.statusText, response));
89
- }
90
- else {
91
- // Set our retry timeout for {delay} milliseconds.
92
- setTimeout(getCtxCallback(_this, retry, ctx), delay);
93
- }
94
- };
95
- // send the actual request
96
- _this._impl.fetch(url, options).then(function (response) {
97
- if (response.status === 429) {
98
- // we have been throttled
99
- setRetry(response);
100
- }
101
- else {
102
- ctx.resolve(response);
103
- }
104
- }).catch(function (response) {
105
- if (response.status === 503 || response.status === 504) {
106
- // http status code 503 or 504, we can retry this
107
- setRetry(response);
108
- }
109
- else {
110
- ctx.reject(response);
111
- }
112
- });
113
- };
114
- return new Promise(function (resolve, reject) {
115
- retry.call(_this, {
116
- attempts: 0,
117
- delay: 100,
118
- reject: reject,
119
- resolve: resolve,
120
- retryCount: 7,
121
- });
122
- });
123
- };
124
- SPHttpClient.prototype.get = function (url, options) {
125
- if (options === void 0) { options = {}; }
126
- var opts = assign(options, { method: "GET" });
127
- return this.fetch(url, opts);
128
- };
129
- SPHttpClient.prototype.post = function (url, options) {
130
- if (options === void 0) { options = {}; }
131
- var opts = assign(options, { method: "POST" });
132
- return this.fetch(url, opts);
133
- };
134
- SPHttpClient.prototype.patch = function (url, options) {
135
- if (options === void 0) { options = {}; }
136
- var opts = assign(options, { method: "PATCH" });
137
- return this.fetch(url, opts);
138
- };
139
- SPHttpClient.prototype.delete = function (url, options) {
140
- if (options === void 0) { options = {}; }
141
- var opts = assign(options, { method: "DELETE" });
142
- return this.fetch(url, opts);
143
- };
144
- return SPHttpClient;
145
- }());
146
- export { SPHttpClient };
147
- // allows for the caching of digests across all HttpClient's which each have their own DigestCache wrapper.
148
- var digests = new Map();
149
- function getDigestFactory(client) {
150
- var _this = this;
151
- return function (webUrl) { return __awaiter(_this, void 0, void 0, function () {
152
- var cachedDigest, now, url, headers, resp, parsed, newCachedDigest;
153
- var _a, _b;
154
- return __generator(this, function (_c) {
155
- switch (_c.label) {
156
- case 0:
157
- cachedDigest = digests.get(webUrl);
158
- if (cachedDigest !== undefined) {
159
- now = new Date();
160
- if (now < cachedDigest.expiration) {
161
- return [2 /*return*/, cachedDigest.value];
162
- }
163
- }
164
- url = combine(webUrl, "/_api/contextinfo");
165
- headers = {
166
- "Accept": "application/json;odata=verbose",
167
- "Content-Type": "application/json;odata=verbose;charset=utf-8",
168
- };
169
- return [4 /*yield*/, client.fetchRaw(url, {
170
- cache: "no-cache",
171
- credentials: "same-origin",
172
- headers: assign(headers, (_b = (_a = client._runtime.get("sp")) === null || _a === void 0 ? void 0 : _a.sp) === null || _b === void 0 ? void 0 : _b.headers, true),
173
- method: "POST",
174
- })];
175
- case 1:
176
- resp = _c.sent();
177
- return [4 /*yield*/, (new ODataParser()).parse(resp).then(function (r) { return r.GetContextWebInformation; })];
178
- case 2:
179
- parsed = _c.sent();
180
- newCachedDigest = {
181
- expiration: dateAdd(new Date(), "second", parsed.FormDigestTimeoutSeconds),
182
- value: parsed.FormDigestValue,
183
- };
184
- digests.set(webUrl, newCachedDigest);
185
- return [2 /*return*/, newCachedDigest.value];
186
- }
187
- });
188
- }); };
189
- }
1
+ import { __awaiter, __generator } from "tslib";
2
+ import { assign, mergeHeaders, getCtxCallback, combine, dateAdd, DefaultRuntime, Runtime, objectDefinedNotNull, } from "@pnp/common";
3
+ import { extractWebUrl } from "./utils/extractweburl.js";
4
+ import { tag } from "./telemetry.js";
5
+ import { ODataParser, HttpRequestError } from "@pnp/odata";
6
+ var SPHttpClient = /** @class */ (function () {
7
+ function SPHttpClient() {
8
+ // constructor(...args: [runtime: Runtime] | [impl: IHttpClientImpl, runtime?: Runtime]) {
9
+ var args = [];
10
+ for (var _i = 0; _i < arguments.length; _i++) {
11
+ args[_i] = arguments[_i];
12
+ }
13
+ var _a;
14
+ this._runtime = args.length > 0 && args[0] instanceof Runtime ? args[0] : DefaultRuntime;
15
+ this._impl = args.length > 1 && objectDefinedNotNull(args[1]) ?
16
+ args[1] : ((_a = this._runtime.get("sp")) === null || _a === void 0 ? void 0 : _a.fetchClientFactory()) || null;
17
+ if (this._impl === null) {
18
+ throw Error("Could not generate fetchClientFactory in SPHttpClient.");
19
+ }
20
+ this._digestCache = getDigestFactory(this);
21
+ }
22
+ SPHttpClient.prototype.fetch = function (url, options) {
23
+ var _a;
24
+ if (options === void 0) { options = {}; }
25
+ return __awaiter(this, void 0, void 0, function () {
26
+ var opts, headers, methodName, clientTag, digest;
27
+ return __generator(this, function (_b) {
28
+ switch (_b.label) {
29
+ case 0:
30
+ opts = assign(options, { cache: "no-cache", credentials: "same-origin" }, true);
31
+ headers = new Headers();
32
+ // first we add the global headers so they can be overwritten by any passed in locally to this call
33
+ mergeHeaders(headers, (_a = this._runtime.get("sp")) === null || _a === void 0 ? void 0 : _a.headers);
34
+ // second we add the local options so we can overwrite the globals
35
+ mergeHeaders(headers, options.headers);
36
+ // lastly we apply any default headers we need that may not exist
37
+ if (!headers.has("Accept")) {
38
+ headers.append("Accept", "application/json");
39
+ }
40
+ if (!headers.has("Content-Type")) {
41
+ headers.append("Content-Type", "application/json;odata=verbose;charset=utf-8");
42
+ }
43
+ if (!headers.has("X-ClientService-ClientTag")) {
44
+ methodName = tag.getClientTag(headers);
45
+ clientTag = "PnPCoreJS:2.11.0:" + methodName;
46
+ if (clientTag.length > 32) {
47
+ clientTag = clientTag.substr(0, 32);
48
+ }
49
+ headers.append("X-ClientService-ClientTag", clientTag);
50
+ }
51
+ opts = assign(opts, { headers: headers });
52
+ if (!(opts.method && opts.method.toUpperCase() !== "GET" && !headers.has("X-RequestDigest") && !headers.has("Authorization"))) return [3 /*break*/, 2];
53
+ return [4 /*yield*/, this._digestCache(extractWebUrl(url))];
54
+ case 1:
55
+ digest = _b.sent();
56
+ headers.append("X-RequestDigest", digest);
57
+ _b.label = 2;
58
+ case 2: return [2 /*return*/, this.fetchRaw(url, opts)];
59
+ }
60
+ });
61
+ });
62
+ };
63
+ SPHttpClient.prototype.fetchRaw = function (url, options) {
64
+ var _this = this;
65
+ if (options === void 0) { options = {}; }
66
+ // here we need to normalize the headers
67
+ var rawHeaders = new Headers();
68
+ mergeHeaders(rawHeaders, options.headers);
69
+ options = assign(options, { headers: rawHeaders });
70
+ var retry = function (ctx) {
71
+ // handles setting the proper timeout for a retry
72
+ var setRetry = function (response) {
73
+ var delay;
74
+ if (response.headers.has("Retry-After")) {
75
+ // if we have gotten a header, use that value as the delay value in seconds
76
+ delay = parseInt(response.headers.get("Retry-After"), 10) * 1000;
77
+ }
78
+ else {
79
+ // grab our current delay
80
+ delay = ctx.delay;
81
+ // Increment our counters.
82
+ ctx.delay *= 2;
83
+ }
84
+ ctx.attempts++;
85
+ // If we have exceeded the retry count, reject.
86
+ if (ctx.retryCount <= ctx.attempts) {
87
+ // eslint-disable-next-line max-len
88
+ ctx.reject(new HttpRequestError("Retry count exceeded (" + ctx.retryCount + ") for request. Response status: [" + response.status + "] " + response.statusText, response));
89
+ }
90
+ else {
91
+ // Set our retry timeout for {delay} milliseconds.
92
+ setTimeout(getCtxCallback(_this, retry, ctx), delay);
93
+ }
94
+ };
95
+ // send the actual request
96
+ _this._impl.fetch(url, options).then(function (response) {
97
+ if (response.status === 429) {
98
+ // we have been throttled
99
+ setRetry(response);
100
+ }
101
+ else {
102
+ ctx.resolve(response);
103
+ }
104
+ }).catch(function (response) {
105
+ if (response.status === 503 || response.status === 504) {
106
+ // http status code 503 or 504, we can retry this
107
+ setRetry(response);
108
+ }
109
+ else {
110
+ ctx.reject(response);
111
+ }
112
+ });
113
+ };
114
+ return new Promise(function (resolve, reject) {
115
+ retry.call(_this, {
116
+ attempts: 0,
117
+ delay: 100,
118
+ reject: reject,
119
+ resolve: resolve,
120
+ retryCount: 7,
121
+ });
122
+ });
123
+ };
124
+ SPHttpClient.prototype.get = function (url, options) {
125
+ if (options === void 0) { options = {}; }
126
+ var opts = assign(options, { method: "GET" });
127
+ return this.fetch(url, opts);
128
+ };
129
+ SPHttpClient.prototype.post = function (url, options) {
130
+ if (options === void 0) { options = {}; }
131
+ var opts = assign(options, { method: "POST" });
132
+ return this.fetch(url, opts);
133
+ };
134
+ SPHttpClient.prototype.patch = function (url, options) {
135
+ if (options === void 0) { options = {}; }
136
+ var opts = assign(options, { method: "PATCH" });
137
+ return this.fetch(url, opts);
138
+ };
139
+ SPHttpClient.prototype.delete = function (url, options) {
140
+ if (options === void 0) { options = {}; }
141
+ var opts = assign(options, { method: "DELETE" });
142
+ return this.fetch(url, opts);
143
+ };
144
+ return SPHttpClient;
145
+ }());
146
+ export { SPHttpClient };
147
+ // allows for the caching of digests across all HttpClient's which each have their own DigestCache wrapper.
148
+ var digests = new Map();
149
+ function getDigestFactory(client) {
150
+ var _this = this;
151
+ return function (webUrl) { return __awaiter(_this, void 0, void 0, function () {
152
+ var cachedDigest, now, url, headers, resp, parsed, newCachedDigest;
153
+ var _a, _b;
154
+ return __generator(this, function (_c) {
155
+ switch (_c.label) {
156
+ case 0:
157
+ cachedDigest = digests.get(webUrl);
158
+ if (cachedDigest !== undefined) {
159
+ now = new Date();
160
+ if (now < cachedDigest.expiration) {
161
+ return [2 /*return*/, cachedDigest.value];
162
+ }
163
+ }
164
+ url = combine(webUrl, "/_api/contextinfo");
165
+ headers = {
166
+ "Accept": "application/json;odata=verbose",
167
+ "Content-Type": "application/json;odata=verbose;charset=utf-8",
168
+ };
169
+ return [4 /*yield*/, client.fetchRaw(url, {
170
+ cache: "no-cache",
171
+ credentials: "same-origin",
172
+ headers: assign(headers, (_b = (_a = client._runtime.get("sp")) === null || _a === void 0 ? void 0 : _a.sp) === null || _b === void 0 ? void 0 : _b.headers, true),
173
+ method: "POST",
174
+ })];
175
+ case 1:
176
+ resp = _c.sent();
177
+ return [4 /*yield*/, (new ODataParser()).parse(resp).then(function (r) { return r.GetContextWebInformation; })];
178
+ case 2:
179
+ parsed = _c.sent();
180
+ newCachedDigest = {
181
+ expiration: dateAdd(new Date(), "second", parsed.FormDigestTimeoutSeconds),
182
+ value: parsed.FormDigestValue,
183
+ };
184
+ digests.set(webUrl, newCachedDigest);
185
+ return [2 /*return*/, newCachedDigest.value];
186
+ }
187
+ });
188
+ }); };
189
+ }
190
190
  //# sourceMappingURL=sphttpclient.js.map
package/splibconfig.d.ts CHANGED
@@ -1,23 +1,23 @@
1
- import { ILibraryConfiguration, ITypedHash, IHttpClientImpl, Runtime } from "@pnp/common";
2
- export declare const emptyGuid = "00000000-0000-0000-0000-000000000000";
3
- export interface ISPConfigurationPart {
4
- sp?: ISPConfigurationProps;
5
- }
6
- export interface ISPConfigurationProps {
7
- /**
8
- * Any headers to apply to all requests
9
- */
10
- headers?: ITypedHash<string>;
11
- /**
12
- * The base url used for all requests
13
- */
14
- baseUrl?: string;
15
- /**
16
- * Defines a factory method used to create fetch clients
17
- */
18
- fetchClientFactory?: () => IHttpClientImpl;
19
- }
20
- export interface ISPConfiguration extends ILibraryConfiguration, ISPConfigurationPart {
21
- }
22
- export declare function setup(config: ISPConfiguration, runtime?: Runtime): void;
1
+ import { ILibraryConfiguration, ITypedHash, IHttpClientImpl, Runtime } from "@pnp/common";
2
+ export declare const emptyGuid = "00000000-0000-0000-0000-000000000000";
3
+ export interface ISPConfigurationPart {
4
+ sp?: ISPConfigurationProps;
5
+ }
6
+ export interface ISPConfigurationProps {
7
+ /**
8
+ * Any headers to apply to all requests
9
+ */
10
+ headers?: ITypedHash<string>;
11
+ /**
12
+ * The base url used for all requests
13
+ */
14
+ baseUrl?: string;
15
+ /**
16
+ * Defines a factory method used to create fetch clients
17
+ */
18
+ fetchClientFactory?: () => IHttpClientImpl;
19
+ }
20
+ export interface ISPConfiguration extends ILibraryConfiguration, ISPConfigurationPart {
21
+ }
22
+ export declare function setup(config: ISPConfiguration, runtime?: Runtime): void;
23
23
  //# sourceMappingURL=splibconfig.d.ts.map
package/splibconfig.js CHANGED
@@ -1,14 +1,14 @@
1
- import { FetchClient, DefaultRuntime, onRuntimeCreate, } from "@pnp/common";
2
- export var emptyGuid = "00000000-0000-0000-0000-000000000000";
3
- onRuntimeCreate(function (runtime) {
4
- var existing = runtime.get("sp");
5
- var spPart = Object.assign({}, {
6
- fetchClientFactory: function () { return new FetchClient(); },
7
- }, existing);
8
- runtime.assign({ sp: spPart });
9
- });
10
- export function setup(config, runtime) {
11
- if (runtime === void 0) { runtime = DefaultRuntime; }
12
- runtime.assign(config);
13
- }
1
+ import { FetchClient, DefaultRuntime, onRuntimeCreate, } from "@pnp/common";
2
+ export var emptyGuid = "00000000-0000-0000-0000-000000000000";
3
+ onRuntimeCreate(function (runtime) {
4
+ var existing = runtime.get("sp");
5
+ var spPart = Object.assign({}, {
6
+ fetchClientFactory: function () { return new FetchClient(); },
7
+ }, existing);
8
+ runtime.assign({ sp: spPart });
9
+ });
10
+ export function setup(config, runtime) {
11
+ if (runtime === void 0) { runtime = DefaultRuntime; }
12
+ runtime.assign(config);
13
+ }
14
14
  //# sourceMappingURL=splibconfig.js.map
@@ -1,8 +1,8 @@
1
- import { IUtilities } from "./types.js";
2
- export { ICreateWikiPageResult, IEmailProperties, IUtilities, IWikiPageCreationInfo, Utilities, } from "./types.js";
3
- declare module "../rest" {
4
- interface SPRest {
5
- readonly utility: IUtilities;
6
- }
7
- }
1
+ import { IUtilities } from "./types.js";
2
+ export { ICreateWikiPageResult, IEmailProperties, IUtilities, IWikiPageCreationInfo, Utilities, } from "./types.js";
3
+ declare module "../rest" {
4
+ interface SPRest {
5
+ readonly utility: IUtilities;
6
+ }
7
+ }
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1,14 +1,14 @@
1
- import { SPRest } from "../rest.js";
2
- import { Utilities } from "./types.js";
3
- export { Utilities, } from "./types.js";
4
- Reflect.defineProperty(SPRest.prototype, "utility", {
5
- configurable: true,
6
- enumerable: true,
7
- get: function () {
8
- return this.childConfigHook(function (_a) {
9
- var options = _a.options, baseUrl = _a.baseUrl, runtime = _a.runtime;
10
- return Utilities(baseUrl, "").configure(options).setRuntime(runtime);
11
- });
12
- },
13
- });
1
+ import { SPRest } from "../rest.js";
2
+ import { Utilities } from "./types.js";
3
+ export { Utilities, } from "./types.js";
4
+ Reflect.defineProperty(SPRest.prototype, "utility", {
5
+ configurable: true,
6
+ enumerable: true,
7
+ get: function () {
8
+ return this.childConfigHook(function (_a) {
9
+ var options = _a.options, baseUrl = _a.baseUrl, runtime = _a.runtime;
10
+ return Utilities(baseUrl, "").configure(options).setRuntime(runtime);
11
+ });
12
+ },
13
+ });
14
14
  //# sourceMappingURL=index.js.map