@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/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.8.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.12.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