@pnp/queryable 3.4.1 → 3.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/behaviors/caching.d.ts +1 -0
- package/behaviors/caching.d.ts.map +1 -1
- package/behaviors/caching.js +10 -1
- package/behaviors/caching.js.map +1 -1
- package/behaviors/cancelable.d.ts +1 -1
- package/behaviors/cancelable.d.ts.map +1 -1
- package/behaviors/cancelable.js +123 -68
- package/behaviors/cancelable.js.map +1 -1
- package/behaviors/parsers.d.ts.map +1 -1
- package/behaviors/parsers.js +3 -5
- package/behaviors/parsers.js.map +1 -1
- package/package.json +2 -2
- package/queryable-factory.d.ts.map +1 -1
- package/queryable-factory.js +7 -2
- package/queryable-factory.js.map +1 -1
- package/queryable.d.ts +2 -0
- package/queryable.d.ts.map +1 -1
- package/queryable.js +15 -16
- package/queryable.js.map +1 -1
- package/request-builders.d.ts +3 -1
- package/request-builders.d.ts.map +1 -1
- package/request-builders.js +7 -2
- package/request-builders.js.map +1 -1
package/behaviors/caching.d.ts
CHANGED
|
@@ -7,5 +7,6 @@ export interface ICachingProps {
|
|
|
7
7
|
keyFactory?: CacheKeyFactory;
|
|
8
8
|
expireFunc?: CacheExpireFunc;
|
|
9
9
|
}
|
|
10
|
+
export declare function CacheKey(key: string): (instance: Queryable) => Queryable<any>;
|
|
10
11
|
export declare function Caching(props?: ICachingProps): TimelinePipe<Queryable>;
|
|
11
12
|
//# sourceMappingURL=caching.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caching.d.ts","sourceRoot":"","sources":["../../../../packages/queryable/behaviors/caching.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAA0C,YAAY,EAAE,MAAM,WAAW,CAAC;AAEjF,oBAAY,eAAe,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;AACtD,oBAAY,eAAe,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;AAEpD,MAAM,WAAW,aAAa;IAC1B,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,UAAU,CAAC,EAAE,eAAe,CAAC;CAChC;AAED,wBAAgB,OAAO,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC,SAAS,CAAC,CA8CtE"}
|
|
1
|
+
{"version":3,"file":"caching.d.ts","sourceRoot":"","sources":["../../../../packages/queryable/behaviors/caching.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAA0C,YAAY,EAAE,MAAM,WAAW,CAAC;AAEjF,oBAAY,eAAe,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;AACtD,oBAAY,eAAe,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;AAEpD,MAAM,WAAW,aAAa;IAC1B,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,UAAU,CAAC,EAAE,eAAe,CAAC;CAChC;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,cAEd,SAAS,oBAW9B;AAED,wBAAgB,OAAO,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC,SAAS,CAAC,CA8CtE"}
|
package/behaviors/caching.js
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
import { getHashCode, PnPClientStorage, dateAdd } from "@pnp/core";
|
|
2
|
+
export function CacheKey(key) {
|
|
3
|
+
return (instance) => {
|
|
4
|
+
instance.on.pre.prepend(async function (url, init, result) {
|
|
5
|
+
init.headers = { ...init.headers, "X-PnP-CacheKey": key };
|
|
6
|
+
return [url, init, result];
|
|
7
|
+
});
|
|
8
|
+
return instance;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
2
11
|
export function Caching(props) {
|
|
3
12
|
const storage = new PnPClientStorage();
|
|
4
13
|
const { store, keyFactory, expireFunc } = {
|
|
@@ -12,7 +21,7 @@ export function Caching(props) {
|
|
|
12
21
|
instance.on.pre(async function (url, init, result) {
|
|
13
22
|
// only cache get requested data or where the CacheAlways header is present (allows caching of POST requests)
|
|
14
23
|
if (/get/i.test(init.method) || (init === null || init === void 0 ? void 0 : init.headers["X-PnP-CacheAlways"])) {
|
|
15
|
-
const key = keyFactory(url.toString());
|
|
24
|
+
const key = (init === null || init === void 0 ? void 0 : init.headers["X-PnP-CacheKey"]) ? init.headers["X-PnP-CacheKey"] : keyFactory(url.toString());
|
|
16
25
|
const cached = s.get(key);
|
|
17
26
|
// we need to ensure that result stays "undefined" unless we mean to set null as the result
|
|
18
27
|
if (cached === null) {
|
package/behaviors/caching.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caching.js","sourceRoot":"","sources":["../../../../packages/queryable/behaviors/caching.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAgB,MAAM,WAAW,CAAC;AAWjF,MAAM,UAAU,OAAO,CAAC,KAAqB;IAEzC,MAAM,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAEvC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG;QACtC,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE;QACtE,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClD,GAAG,KAAK;KACX,CAAC;IAEF,MAAM,CAAC,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAEhE,OAAO,CAAC,QAAmB,EAAE,EAAE;QAE3B,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,WAA4B,GAAW,EAAE,IAAiB,EAAE,MAAW;YAExF,6GAA6G;YAC7G,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,mBAAmB,CAAC,CAAA,EAAE;gBAEhE,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"caching.js","sourceRoot":"","sources":["../../../../packages/queryable/behaviors/caching.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAgB,MAAM,WAAW,CAAC;AAWjF,MAAM,UAAU,QAAQ,CAAC,GAAW;IAEhC,OAAO,CAAC,QAAmB,EAAE,EAAE;QAE3B,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,WAA4B,GAAW,EAAE,IAAiB,EAAE,MAAW;YAEhG,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC;YAE1D,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IACpB,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAqB;IAEzC,MAAM,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAEvC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG;QACtC,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE;QACtE,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClD,GAAG,KAAK;KACX,CAAC;IAEF,MAAM,CAAC,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAEhE,OAAO,CAAC,QAAmB,EAAE,EAAE;QAE3B,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,WAA4B,GAAW,EAAE,IAAiB,EAAE,MAAW;YAExF,6GAA6G;YAC7G,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,mBAAmB,CAAC,CAAA,EAAE;gBAEhE,MAAM,GAAG,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,gBAAgB,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAE1G,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAE1B,2FAA2F;gBAC3F,IAAI,MAAM,KAAK,IAAI,EAAE;oBAEjB,0FAA0F;oBAC1F,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,WAAW,GAAQ,EAAE,MAAW;wBAE9C,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;wBAE/C,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;oBACzB,CAAC,CAAC,CAAC;iBAEN;qBAAM;oBAEH,MAAM,GAAG,MAAM,CAAC;iBACnB;aACJ;YAED,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IACpB,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TimelinePipe } from "@pnp/core";
|
|
2
2
|
import { Queryable } from "../queryable.js";
|
|
3
3
|
export declare type CancelablePromise<T = any> = Promise<T> & {
|
|
4
|
-
cancel(): void
|
|
4
|
+
cancel(): Promise<void>;
|
|
5
5
|
};
|
|
6
6
|
/**
|
|
7
7
|
* Defines the signature for observers subscribing to the cancelable moment
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cancelable.d.ts","sourceRoot":"","sources":["../../../../packages/queryable/behaviors/cancelable.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"cancelable.d.ts","sourceRoot":"","sources":["../../../../packages/queryable/behaviors/cancelable.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,YAAY,EAAiC,MAAM,WAAW,CAAC;AACjG,OAAO,EAAE,SAAS,EAAiB,MAAM,iBAAiB,CAAC;AAgC3D,oBAAY,iBAAiB,CAAC,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG;IAAE,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC;AAsDlF;;GAEG;AACH,oBAAY,kBAAkB,GAAG,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEpE;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,oEA6B7B,CAAC;AAEF;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,QAGjG;AAED;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,YAAY,CAAC,SAAS,CAAC,CAmFpD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAAC,SAAS,CAAC,CAyBhF"}
|
package/behaviors/cancelable.js
CHANGED
|
@@ -1,10 +1,65 @@
|
|
|
1
|
-
import { asyncBroadcast,
|
|
1
|
+
import { asyncBroadcast, isArray, getGUID, objectDefinedNotNull } from "@pnp/core";
|
|
2
|
+
/**
|
|
3
|
+
* Cancelable is a fairly complex behavior as there is a lot to consider through multiple timelines. We have
|
|
4
|
+
* two main cases:
|
|
5
|
+
*
|
|
6
|
+
* 1. basic method that is a single call and returns the result of an operation (return spPost(...))
|
|
7
|
+
* 2. complex method that has multiple async calls within
|
|
8
|
+
*
|
|
9
|
+
* 1. For basic calls the cancel info is attached in init as it is only involved within a single request.
|
|
10
|
+
* This works because there is only one request and the cancel logic doesn't need to persist across
|
|
11
|
+
* inheriting instances. Also, many of these requests are so fast canceling is likely unnecessary
|
|
12
|
+
*
|
|
13
|
+
* 2. Complex method present a larger challenge because they are comprised of > 1 request and the promise
|
|
14
|
+
* that is actually returned to the user is not directly from one of our calls. This promise is the
|
|
15
|
+
* one "created" by the language when you await. For complex method we have two things that solve these
|
|
16
|
+
* needs.
|
|
17
|
+
*
|
|
18
|
+
* The first is the use of either the cancelableScope decorator of the asCancelableScope method
|
|
19
|
+
* wrapper. These create an upper level cancel info that is then shared across the child requests within
|
|
20
|
+
* the complex method. Meaning if I do a files.addChunked the same cancel info (and cancel method)
|
|
21
|
+
* are set on the current "this" which is user object on which the method was called. This info is then
|
|
22
|
+
* passed down to any child requests using the original "this" as a base using the construct moment.
|
|
23
|
+
*
|
|
24
|
+
* The CancelAction behavior is used to apply additional actions to a request once it is canceled. For example
|
|
25
|
+
* in the case of uploading files chunked in sp we cancel the upload by id.
|
|
26
|
+
*/
|
|
2
27
|
// this is a special moment used to broadcast when a request is canceled
|
|
3
|
-
const
|
|
4
|
-
//
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
28
|
+
const MomentName = "__CancelMoment__";
|
|
29
|
+
// this value is used to track cancel state and the value is represetented by IScopeInfo
|
|
30
|
+
const ScopeId = Symbol.for("CancelScopeId");
|
|
31
|
+
// module map of all currently tracked cancel scopes
|
|
32
|
+
const cancelScopes = new Map();
|
|
33
|
+
/**
|
|
34
|
+
* This method is bound to a scope id and used as the cancel method exposed to the user via cancelable promise
|
|
35
|
+
*
|
|
36
|
+
* @param this unused, the current promise
|
|
37
|
+
* @param scopeId Id bound at creation time
|
|
38
|
+
*/
|
|
39
|
+
async function cancelPrimitive(scopeId) {
|
|
40
|
+
const scope = cancelScopes.get(scopeId);
|
|
41
|
+
scope.controller.abort();
|
|
42
|
+
if (isArray(scope === null || scope === void 0 ? void 0 : scope.actions)) {
|
|
43
|
+
scope.actions.map(action => scope.currentSelf.on[MomentName](action));
|
|
44
|
+
}
|
|
45
|
+
return scope.currentSelf.emit[MomentName]();
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Creates a new scope id, sets it on the instance's ScopeId property, and adds the info to the map
|
|
49
|
+
*
|
|
50
|
+
* @returns the new scope id (GUID)
|
|
51
|
+
*/
|
|
52
|
+
function createScope(instance) {
|
|
53
|
+
const id = getGUID();
|
|
54
|
+
instance[ScopeId] = id;
|
|
55
|
+
cancelScopes.set(id, {
|
|
56
|
+
cancel: cancelPrimitive.bind({}, id),
|
|
57
|
+
actions: [],
|
|
58
|
+
controller: null,
|
|
59
|
+
currentSelf: instance,
|
|
60
|
+
});
|
|
61
|
+
return id;
|
|
62
|
+
}
|
|
8
63
|
/**
|
|
9
64
|
* Function wrapper that turns the supplied function into a cancellation scope
|
|
10
65
|
*
|
|
@@ -12,22 +67,23 @@ let definedCancel;
|
|
|
12
67
|
* @returns The same func signature, wrapped with our cancel scoping logic
|
|
13
68
|
*/
|
|
14
69
|
export const asCancelableScope = (func) => {
|
|
15
|
-
// this needs to include the parameter types, etc and return a wrapped function
|
|
16
70
|
return function (...args) {
|
|
17
|
-
//
|
|
18
|
-
|
|
19
|
-
//
|
|
71
|
+
// ensure we have setup "this" to cancel
|
|
72
|
+
// 1. for single requests the value is set in the behavior's init observer
|
|
73
|
+
// 2. for complex requests the value is set here
|
|
74
|
+
if (!Reflect.has(this, ScopeId)) {
|
|
75
|
+
createScope(this);
|
|
76
|
+
}
|
|
77
|
+
// execute the original function, but don't await it
|
|
20
78
|
const result = func.apply(this, args);
|
|
21
79
|
// if result is async we need to attach the cancel to the promise
|
|
22
80
|
if (typeof (result === null || result === void 0 ? void 0 : result.finally) === "function") {
|
|
23
|
-
// ensure
|
|
24
|
-
|
|
25
|
-
// func.apply so that scopeCancel is set
|
|
26
|
-
result.cancel = definedCancel;
|
|
81
|
+
// ensure the synthetic promise from a complex method has a cancel method
|
|
82
|
+
result.cancel = cancelScopes.get(this[ScopeId]).cancel;
|
|
27
83
|
result.finally(() => {
|
|
28
|
-
//
|
|
29
|
-
|
|
30
|
-
|
|
84
|
+
// remove any cancel scope values tied to this instance
|
|
85
|
+
cancelScopes.delete(this[ScopeId]);
|
|
86
|
+
delete this[ScopeId];
|
|
31
87
|
});
|
|
32
88
|
}
|
|
33
89
|
return result;
|
|
@@ -40,26 +96,6 @@ export function cancelableScope(_target, _propertyKey, descriptor) {
|
|
|
40
96
|
// wrapping the original method
|
|
41
97
|
descriptor.value = asCancelableScope(descriptor.value);
|
|
42
98
|
}
|
|
43
|
-
/**
|
|
44
|
-
* This method is partially bound and used as the cancel method exposed to the user via cancelable promise
|
|
45
|
-
*
|
|
46
|
-
* @param this Current queryable
|
|
47
|
-
* @param controller The controller associated with this cancel method
|
|
48
|
-
*/
|
|
49
|
-
async function cancelPrimitive(controller) {
|
|
50
|
-
definedCancel = undefined;
|
|
51
|
-
if (inScope) {
|
|
52
|
-
// ensure we register our scope level actions before we emit
|
|
53
|
-
scopeActions.map(action => this.on[CancelMoment](action));
|
|
54
|
-
}
|
|
55
|
-
try {
|
|
56
|
-
await this.emit[CancelMoment]();
|
|
57
|
-
}
|
|
58
|
-
catch (e) {
|
|
59
|
-
this.log(`Error in CancelMoment: ${(e === null || e === void 0 ? void 0 : e.message) || "unknown"}`);
|
|
60
|
-
}
|
|
61
|
-
controller.abort();
|
|
62
|
-
}
|
|
63
99
|
/**
|
|
64
100
|
* Allows requests to be canceled by the caller by adding a cancel method to the Promise returned by the library
|
|
65
101
|
*
|
|
@@ -70,41 +106,59 @@ export function Cancelable() {
|
|
|
70
106
|
throw Error("The current environment appears to not support AbortController, please include a suitable polyfill.");
|
|
71
107
|
}
|
|
72
108
|
return (instance) => {
|
|
73
|
-
|
|
109
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
110
|
+
instance.on.construct(function (init, path) {
|
|
111
|
+
if (typeof init !== "string") {
|
|
112
|
+
const parent = isArray(init) ? init[0] : init;
|
|
113
|
+
if (Reflect.has(parent, ScopeId)) {
|
|
114
|
+
// ensure we carry over the scope id to the new instance from the parent
|
|
115
|
+
this[ScopeId] = parent[ScopeId];
|
|
116
|
+
}
|
|
117
|
+
// define the moment's implementation
|
|
118
|
+
this.moments[MomentName] = asyncBroadcast();
|
|
119
|
+
}
|
|
120
|
+
});
|
|
74
121
|
// init our queryable to support cancellation
|
|
75
122
|
instance.on.init(function () {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
123
|
+
if (!Reflect.has(this, ScopeId)) {
|
|
124
|
+
// ensure we have setup "this" to cancel
|
|
125
|
+
// 1. for single requests this will set the value
|
|
126
|
+
// 2. for complex requests the value is set in asCancelableScope
|
|
127
|
+
const id = createScope(this);
|
|
128
|
+
// if we are creating the scope here, we have not created it within asCancelableScope
|
|
129
|
+
// meaning the finally handler there will not delete the tracked scope reference
|
|
130
|
+
this.on.dispose(() => {
|
|
131
|
+
cancelScopes.delete(id);
|
|
132
|
+
});
|
|
133
|
+
}
|
|
79
134
|
this.on[this.InternalPromise]((promise) => {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
promise.cancel = definedCancel;
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
// we are inside a scope or an individual request and this is a call to establish the controller
|
|
86
|
-
const controller = new AbortController();
|
|
87
|
-
signal = controller.signal;
|
|
88
|
-
definedCancel = cancelPrimitive.bind(this, controller);
|
|
89
|
-
promise.cancel = definedCancel;
|
|
90
|
-
}
|
|
135
|
+
// when a new promise is created add a cancel method
|
|
136
|
+
promise.cancel = cancelScopes.get(this[ScopeId]).cancel;
|
|
91
137
|
return [promise];
|
|
92
138
|
});
|
|
93
139
|
});
|
|
94
140
|
instance.on.pre(async function (url, init, result) {
|
|
95
|
-
|
|
96
|
-
//
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
// we do our best to hook
|
|
141
|
+
const controller = new AbortController();
|
|
142
|
+
// grab the current scope, update the controller and currentSelf
|
|
143
|
+
const existingScope = cancelScopes.get(this[ScopeId]);
|
|
144
|
+
existingScope.controller = controller;
|
|
145
|
+
existingScope.currentSelf = this;
|
|
146
|
+
if (init.signal) {
|
|
147
|
+
// we do our best to hook our logic to the existing signal
|
|
102
148
|
init.signal.addEventListener("abort", () => {
|
|
103
|
-
|
|
149
|
+
existingScope.cancel();
|
|
104
150
|
});
|
|
105
151
|
}
|
|
152
|
+
else {
|
|
153
|
+
init.signal = controller.signal;
|
|
154
|
+
}
|
|
106
155
|
return [url, init, result];
|
|
107
156
|
});
|
|
157
|
+
// clean up any cancel info from the object after the request lifecycle is complete
|
|
158
|
+
instance.on.dispose(function () {
|
|
159
|
+
delete this[ScopeId];
|
|
160
|
+
delete this.moments[MomentName];
|
|
161
|
+
});
|
|
108
162
|
return instance;
|
|
109
163
|
};
|
|
110
164
|
}
|
|
@@ -117,14 +171,15 @@ export function Cancelable() {
|
|
|
117
171
|
export function CancelAction(action) {
|
|
118
172
|
return (instance) => {
|
|
119
173
|
instance.on.pre(async function (...args) {
|
|
120
|
-
|
|
121
|
-
// we
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
174
|
+
const existingScope = cancelScopes.get(this[ScopeId]);
|
|
175
|
+
// if we don't have a scope this request is not using Cancelable so we do nothing
|
|
176
|
+
if (objectDefinedNotNull(existingScope)) {
|
|
177
|
+
if (!isArray(existingScope.actions)) {
|
|
178
|
+
existingScope.actions = [];
|
|
179
|
+
}
|
|
180
|
+
if (existingScope.actions.indexOf(action) < 0) {
|
|
181
|
+
existingScope.actions.push(action);
|
|
182
|
+
}
|
|
128
183
|
}
|
|
129
184
|
return args;
|
|
130
185
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cancelable.js","sourceRoot":"","sources":["../../../../packages/queryable/behaviors/cancelable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"cancelable.js","sourceRoot":"","sources":["../../../../packages/queryable/behaviors/cancelable.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../../../packages/queryable/behaviors/parsers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAO,YAAY,EAAE,MAAM,WAAW,CAAC;AAG9C,wBAAgB,YAAY,IAAI,YAAY,CAc3C;AAED,wBAAgB,SAAS,IAAI,YAAY,CAGxC;AAED,wBAAgB,SAAS,IAAI,YAAY,CAGxC;AAED,wBAAgB,SAAS,IAAI,YAAY,CAGxC;AAED,wBAAgB,WAAW,IAAI,YAAY,CAG1C;AAED,wBAAgB,WAAW,IAAI,YAAY,CAG1C;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../../../packages/queryable/behaviors/parsers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAO,YAAY,EAAE,MAAM,WAAW,CAAC;AAG9C,wBAAgB,YAAY,IAAI,YAAY,CAc3C;AAED,wBAAgB,SAAS,IAAI,YAAY,CAGxC;AAED,wBAAgB,SAAS,IAAI,YAAY,CAGxC;AAED,wBAAgB,SAAS,IAAI,YAAY,CAGxC;AAED,wBAAgB,WAAW,IAAI,YAAY,CAG1C;AAED,wBAAgB,WAAW,IAAI,YAAY,CAG1C;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAOzG;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAoB7C;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,CAmBtG;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IAIH,QAAQ,EAAE,QAAQ;IAAS,MAAM;IAA2B,UAAU;IAFnG,kBAAkB,UAAQ;gBAErB,OAAO,EAAE,MAAM,EAAS,QAAQ,EAAE,QAAQ,EAAS,MAAM,SAAkB,EAAS,UAAU,SAAsB;WAI5G,IAAI,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAInE"}
|
package/behaviors/parsers.js
CHANGED
|
@@ -29,9 +29,7 @@ export function HeaderParse() {
|
|
|
29
29
|
}
|
|
30
30
|
export async function errorCheck(url, response, result) {
|
|
31
31
|
if (!response.ok) {
|
|
32
|
-
|
|
33
|
-
const y = await HttpRequestError.init(response);
|
|
34
|
-
throw y;
|
|
32
|
+
throw await HttpRequestError.init(response);
|
|
35
33
|
}
|
|
36
34
|
return [url, response, result];
|
|
37
35
|
}
|
|
@@ -64,7 +62,7 @@ export function parseBinderWithErrorCheck(impl) {
|
|
|
64
62
|
// add the impl function we are supplied
|
|
65
63
|
instance.on.parse.replace(errorCheck);
|
|
66
64
|
instance.on.parse(async (url, response, result) => {
|
|
67
|
-
if (typeof result === "undefined") {
|
|
65
|
+
if (response.ok && typeof result === "undefined") {
|
|
68
66
|
result = await impl(response);
|
|
69
67
|
}
|
|
70
68
|
return [url, response, result];
|
|
@@ -82,7 +80,7 @@ export class HttpRequestError extends Error {
|
|
|
82
80
|
}
|
|
83
81
|
static async init(r) {
|
|
84
82
|
const t = await r.clone().text();
|
|
85
|
-
return new HttpRequestError(`Error making HttpClient request in queryable [${r.status}] ${r.statusText} ::> ${t}`, r
|
|
83
|
+
return new HttpRequestError(`Error making HttpClient request in queryable [${r.status}] ${r.statusText} ::> ${t}`, r);
|
|
86
84
|
}
|
|
87
85
|
}
|
|
88
86
|
//# sourceMappingURL=parsers.js.map
|
package/behaviors/parsers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../../../packages/queryable/behaviors/parsers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAgB,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,MAAM,UAAU,YAAY;IAExB,OAAO,yBAAyB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;QAEhD,oEAAoE;QACpE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAE,CAAC,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;YAClI,OAAO,EAAE,CAAC;SACb;QAED,wFAAwF;QACxF,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,SAAS;IAErB,OAAO,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,SAAS;IAErB,OAAO,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,SAAS;IAErB,OAAO,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,WAAW;IAEvB,OAAO,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAO,CAAE,CAAC,MAAM,EAAE,CAAC,CAAC;AACvG,CAAC;AAED,MAAM,UAAU,WAAW;IAEvB,OAAO,yBAAyB,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAQ,EAAE,QAAkB,EAAE,MAAW;IAEtE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;QACd,
|
|
1
|
+
{"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../../../packages/queryable/behaviors/parsers.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pnp/queryable",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.5.1",
|
|
4
4
|
"description": "pnp - provides shared odata functionality and base classes",
|
|
5
5
|
"main": "./index.js",
|
|
6
6
|
"typings": "./index",
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"tslib": "2.4.0",
|
|
9
|
-
"@pnp/core": "3.
|
|
9
|
+
"@pnp/core": "3.5.1"
|
|
10
10
|
},
|
|
11
11
|
"funding": {
|
|
12
12
|
"type": "individual",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryable-factory.d.ts","sourceRoot":"","sources":["../../../packages/queryable/queryable-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEnE,wBAAgB,gBAAgB,CAAC,YAAY,SAAS,kBAAkB,EACpE,WAAW,EAAE;IAAE,KAAI,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,YAAY,CAAA;CAAE,GACvE,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"queryable-factory.d.ts","sourceRoot":"","sources":["../../../packages/queryable/queryable-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEnE,wBAAgB,gBAAgB,CAAC,YAAY,SAAS,kBAAkB,EACpE,WAAW,EAAE;IAAE,KAAI,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,YAAY,CAAA;CAAE,GACvE,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,YAAY,CActD"}
|
package/queryable-factory.js
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
export function queryableFactory(constructor) {
|
|
2
2
|
return (init, path) => {
|
|
3
|
-
//
|
|
4
|
-
|
|
3
|
+
// construct the concrete instance
|
|
4
|
+
const instance = new constructor(init, path);
|
|
5
|
+
// we emit the construct event from the factory because we need all of the decorators and constructors
|
|
6
|
+
// to have fully finished before we emit, which is now true. We type the instance to any to get around
|
|
7
|
+
// the protected nature of emit
|
|
8
|
+
instance.emit.construct(init, path);
|
|
9
|
+
return instance;
|
|
5
10
|
};
|
|
6
11
|
}
|
|
7
12
|
//# sourceMappingURL=queryable-factory.js.map
|
package/queryable-factory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryable-factory.js","sourceRoot":"","sources":["../../../packages/queryable/queryable-factory.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAC5B,WAAsE;IAGtE,OAAO,CAAC,IAAmB,EAAE,IAAa,EAAE,EAAE;QAE1C,
|
|
1
|
+
{"version":3,"file":"queryable-factory.js","sourceRoot":"","sources":["../../../packages/queryable/queryable-factory.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAC5B,WAAsE;IAGtE,OAAO,CAAC,IAAmB,EAAE,IAAa,EAAE,EAAE;QAE1C,kCAAkC;QAClC,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAE7C,sGAAsG;QACtG,sGAAsG;QACtG,+BAA+B;QACzB,QAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAE3C,OAAO,QAAQ,CAAC;IACpB,CAAC,CAAC;AACN,CAAC"}
|
package/queryable.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Timeline, TimelinePipe } from "@pnp/core";
|
|
2
2
|
import { IInvokable } from "./invokable.js";
|
|
3
|
+
export declare type QueryableConstructObserver = (this: IQueryableInternal, init: QueryableInit, path?: string) => void;
|
|
3
4
|
export declare type QueryablePreObserver = (this: IQueryableInternal, url: string, init: RequestInit, result: any) => Promise<[string, RequestInit, any]>;
|
|
4
5
|
export declare type QueryableAuthObserver = (this: IQueryableInternal, url: URL, init: RequestInit) => Promise<[URL, RequestInit]>;
|
|
5
6
|
export declare type QueryableSendObserver = (this: IQueryableInternal, url: URL, init: RequestInit) => Promise<Response>;
|
|
@@ -7,6 +8,7 @@ export declare type QueryableParseObserver = (this: IQueryableInternal, url: URL
|
|
|
7
8
|
export declare type QueryablePostObserver = (this: IQueryableInternal, url: URL, result: any | undefined) => Promise<[URL, any]>;
|
|
8
9
|
export declare type QueryableDataObserver<T = any> = (this: IQueryableInternal, result: T) => void;
|
|
9
10
|
declare const DefaultMoments: {
|
|
11
|
+
readonly construct: (observers: QueryableConstructObserver[], init: QueryableInit, path?: string) => Timeline<any>;
|
|
10
12
|
readonly pre: (observers: QueryablePreObserver[], url: string, init: RequestInit, result: any) => Promise<[url: string, init: RequestInit, result: any]>;
|
|
11
13
|
readonly auth: (observers: QueryableAuthObserver[], url: URL, init: RequestInit) => Promise<[url: URL, init: RequestInit]>;
|
|
12
14
|
readonly send: (observers: QueryableSendObserver[], url: URL, init: RequestInit) => Promise<Promise<Response>>;
|
package/queryable.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryable.d.ts","sourceRoot":"","sources":["../../../packages/queryable/queryable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,QAAQ,EAAgE,YAAY,
|
|
1
|
+
{"version":3,"file":"queryable.d.ts","sourceRoot":"","sources":["../../../packages/queryable/queryable.ts"],"names":[],"mappings":"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"}
|
package/queryable.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { combine, getGUID, Timeline, asyncReduce, reduce, broadcast, request, extendable, isArray } from "@pnp/core";
|
|
2
|
+
import { combine, getGUID, Timeline, asyncReduce, reduce, broadcast, request, extendable, isArray, lifecycle } from "@pnp/core";
|
|
3
3
|
import { invokable } from "./invokable.js";
|
|
4
4
|
const DefaultMoments = {
|
|
5
|
+
construct: lifecycle(),
|
|
5
6
|
pre: asyncReduce(),
|
|
6
7
|
auth: asyncReduce(),
|
|
7
8
|
send: request(),
|
|
@@ -18,33 +19,31 @@ let Queryable = class Queryable extends Timeline {
|
|
|
18
19
|
this.InternalResolve = Symbol.for("Queryable_Resolve");
|
|
19
20
|
this.InternalReject = Symbol.for("Queryable_Reject");
|
|
20
21
|
this.InternalPromise = Symbol.for("Queryable_Promise");
|
|
22
|
+
this._query = new Map();
|
|
21
23
|
// add an intneral moment with specific implementaion for promise creation
|
|
22
24
|
this.moments[this.InternalPromise] = reduce();
|
|
23
|
-
let
|
|
24
|
-
let observers = undefined;
|
|
25
|
+
let parent;
|
|
25
26
|
if (typeof init === "string") {
|
|
26
|
-
|
|
27
|
+
this._url = combine(init, path);
|
|
27
28
|
}
|
|
28
29
|
else if (isArray(init)) {
|
|
29
30
|
if (init.length !== 2) {
|
|
30
|
-
throw Error("When using the tuple
|
|
31
|
+
throw Error("When using the tuple param exactly two arguments are expected.");
|
|
32
|
+
}
|
|
33
|
+
if (typeof init[1] !== "string") {
|
|
34
|
+
throw Error("Expected second tuple param to be a string.");
|
|
31
35
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
url = combine(_url, path);
|
|
35
|
-
observers = q.observers;
|
|
36
|
+
parent = init[0];
|
|
37
|
+
this._url = combine(init[1], path);
|
|
36
38
|
}
|
|
37
39
|
else {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
observers = _observers;
|
|
40
|
+
parent = init;
|
|
41
|
+
this._url = combine(parent._url, path);
|
|
41
42
|
}
|
|
42
|
-
if (typeof
|
|
43
|
-
this.observers = observers;
|
|
43
|
+
if (typeof parent !== "undefined") {
|
|
44
|
+
this.observers = parent.observers;
|
|
44
45
|
this._inheritingObservers = true;
|
|
45
46
|
}
|
|
46
|
-
this._url = url;
|
|
47
|
-
this._query = new Map();
|
|
48
47
|
}
|
|
49
48
|
/**
|
|
50
49
|
* Directly concatenates the supplied string to the current url, not normalizing "/" chars
|
package/queryable.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryable.js","sourceRoot":"","sources":["../../../packages/queryable/queryable.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"queryable.js","sourceRoot":"","sources":["../../../packages/queryable/queryable.ts"],"names":[],"mappings":"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"}
|
package/request-builders.d.ts
CHANGED
|
@@ -19,11 +19,13 @@ export declare function headers<T extends Partial<RequestInit>, U extends Record
|
|
|
19
19
|
* no caching observers are registered this has no effect.
|
|
20
20
|
*
|
|
21
21
|
* @param previous Any previous RequestInit to extend
|
|
22
|
+
* @param key An optional key to use when caching the wrapped value. If not supplied a key will be generated as a hash of the `previous` value supplied
|
|
22
23
|
* @returns A RequestInit combining the caching header and any previous RequestInit
|
|
23
24
|
*/
|
|
24
|
-
export declare function cacheAlways<T extends Partial<RequestInit>>(previous?: T): T & {
|
|
25
|
+
export declare function cacheAlways<T extends Partial<RequestInit>>(previous?: T, key?: string): T & {
|
|
25
26
|
headers: {
|
|
26
27
|
"X-PnP-CacheAlways": string;
|
|
28
|
+
"X-PnP-CacheKey": string;
|
|
27
29
|
};
|
|
28
30
|
};
|
|
29
31
|
//# sourceMappingURL=request-builders.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-builders.d.ts","sourceRoot":"","sources":["../../../packages/queryable/request-builders.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAEtG;AAED;;;;;;GAMG;AAEH,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG;IAAE,OAAO,EAAE,CAAC,CAAA;CAAE,CAErI;AAED
|
|
1
|
+
{"version":3,"file":"request-builders.d.ts","sourceRoot":"","sources":["../../../packages/queryable/request-builders.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAEtG;AAED;;;;;;GAMG;AAEH,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG;IAAE,OAAO,EAAE,CAAC,CAAA;CAAE,CAErI;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,OAAO,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM;;;;;EAUrF"}
|
package/request-builders.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsS } from "@pnp/core";
|
|
1
|
+
import { getHashCode, jsS, stringIsNullOrEmpty } from "@pnp/core";
|
|
2
2
|
/**
|
|
3
3
|
* takes the supplied object of type U, JSON.stringify's it, and sets it as the value of a "body" property
|
|
4
4
|
*/
|
|
@@ -21,11 +21,16 @@ export function headers(o, previous) {
|
|
|
21
21
|
* no caching observers are registered this has no effect.
|
|
22
22
|
*
|
|
23
23
|
* @param previous Any previous RequestInit to extend
|
|
24
|
+
* @param key An optional key to use when caching the wrapped value. If not supplied a key will be generated as a hash of the `previous` value supplied
|
|
24
25
|
* @returns A RequestInit combining the caching header and any previous RequestInit
|
|
25
26
|
*/
|
|
26
|
-
export function cacheAlways(previous) {
|
|
27
|
+
export function cacheAlways(previous, key) {
|
|
28
|
+
if (stringIsNullOrEmpty(key)) {
|
|
29
|
+
key = getHashCode(JSON.stringify(previous)).toString();
|
|
30
|
+
}
|
|
27
31
|
return headers({
|
|
28
32
|
"X-PnP-CacheAlways": "1",
|
|
33
|
+
"X-PnP-CacheKey": key,
|
|
29
34
|
}, previous);
|
|
30
35
|
}
|
|
31
36
|
//# sourceMappingURL=request-builders.js.map
|
package/request-builders.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-builders.js","sourceRoot":"","sources":["../../../packages/queryable/request-builders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"request-builders.js","sourceRoot":"","sources":["../../../packages/queryable/request-builders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAElE;;GAEG;AACH,MAAM,UAAU,IAAI,CAA0C,CAAI,EAAE,QAAY;IAC5E,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;GAMG;AACH,wDAAwD;AACxD,MAAM,UAAU,OAAO,CAAwE,CAAI,EAAE,QAAY;IAC7G,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACpF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAiC,QAAY,EAAE,GAAY;IAElF,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE;QAC1B,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;KAC1D;IAED,OAAO,OAAO,CAAC;QACX,mBAAmB,EAAE,GAAG;QACxB,gBAAgB,EAAE,GAAG;KACxB,EAAE,QAAQ,CAAC,CAAC;AACjB,CAAC"}
|