@salesforce/lds-network-fetch 1.391.0 → 1.393.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.
package/dist/ldsNetworkFetch.js
CHANGED
|
@@ -215,6 +215,49 @@ function generateHeaders(headers) {
|
|
|
215
215
|
return fetchHeaders;
|
|
216
216
|
}
|
|
217
217
|
|
|
218
|
+
/*!
|
|
219
|
+
* Copyright (c) 2022, Salesforce, Inc.,
|
|
220
|
+
* All rights reserved.
|
|
221
|
+
* For full license text, see the LICENSE.txt file
|
|
222
|
+
*/
|
|
223
|
+
function resolvedPromiseLike(result) {
|
|
224
|
+
if (isPromiseLike(result)) {
|
|
225
|
+
return result.then((nextResult) => nextResult);
|
|
226
|
+
}
|
|
227
|
+
return {
|
|
228
|
+
then: (onFulfilled, _onRejected) => {
|
|
229
|
+
try {
|
|
230
|
+
return resolvedPromiseLike(onFulfilled(result));
|
|
231
|
+
} catch (e) {
|
|
232
|
+
if (onFulfilled === void 0) {
|
|
233
|
+
return resolvedPromiseLike(result);
|
|
234
|
+
}
|
|
235
|
+
return rejectedPromiseLike(e);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
function rejectedPromiseLike(reason) {
|
|
241
|
+
if (isPromiseLike(reason)) {
|
|
242
|
+
return reason.then((nextResult) => nextResult);
|
|
243
|
+
}
|
|
244
|
+
return {
|
|
245
|
+
then: (_onFulfilled, onRejected) => {
|
|
246
|
+
if (typeof onRejected === "function") {
|
|
247
|
+
try {
|
|
248
|
+
return resolvedPromiseLike(onRejected(reason));
|
|
249
|
+
} catch (e) {
|
|
250
|
+
return rejectedPromiseLike(e);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return rejectedPromiseLike(reason);
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
function isPromiseLike(x) {
|
|
258
|
+
return typeof (x == null ? void 0 : x.then) === "function";
|
|
259
|
+
}
|
|
260
|
+
|
|
218
261
|
/**
|
|
219
262
|
* Copyright (c) 2022, Salesforce, Inc.,
|
|
220
263
|
* All rights reserved.
|
|
@@ -696,6 +739,10 @@ function getStorageAndLogger(path) {
|
|
|
696
739
|
return null;
|
|
697
740
|
}
|
|
698
741
|
const platformFetchAdapter = platformNetworkAdapter(fetchNetworkAdapter);
|
|
742
|
+
const platformFetchAdapterWithInterceptors = async (resourceRequest, resourceRequestContext, requestInterceptors) => {
|
|
743
|
+
const pending = requestInterceptors.reduce((previousPromise, interceptor) => previousPromise.then(interceptor), resolvedPromiseLike(resourceRequest));
|
|
744
|
+
return pending.then((interceptedRequest) => platformFetchAdapter(interceptedRequest, resourceRequestContext));
|
|
745
|
+
};
|
|
699
746
|
/**
|
|
700
747
|
* Helper function to fetch data, if available in aura storage cache returns that instead of going to network.
|
|
701
748
|
* @param resourceRequest - {@link ResourceRequest}
|
|
@@ -704,7 +751,7 @@ const platformFetchAdapter = platformNetworkAdapter(fetchNetworkAdapter);
|
|
|
704
751
|
* @param transactionKey - The transaction key, derived from the resource request params.
|
|
705
752
|
* @returns Promise<FetchResponse<any> - Promise that resolves to a fetch response.
|
|
706
753
|
*/
|
|
707
|
-
function checkLdsStorageCacheOrFetch(resourceRequest, resourceRequestContext, storageAndLogger, transactionKey) {
|
|
754
|
+
function checkLdsStorageCacheOrFetch(resourceRequest, resourceRequestContext, storageAndLogger, transactionKey, requestInterceptors = []) {
|
|
708
755
|
if (!shouldForceRefresh(resourceRequest)) {
|
|
709
756
|
if (storageAndLogger?.storage) {
|
|
710
757
|
return storageAndLogger.storage.get(transactionKey).then((cacheResult) => {
|
|
@@ -714,13 +761,13 @@ function checkLdsStorageCacheOrFetch(resourceRequest, resourceRequestContext, st
|
|
|
714
761
|
return createOkResponse$1(cacheResult);
|
|
715
762
|
}
|
|
716
763
|
storageAndLogger.statsLogger.logMisses();
|
|
717
|
-
return
|
|
764
|
+
return platformFetchAdapterWithInterceptors(resourceRequest, resourceRequestContext, requestInterceptors);
|
|
718
765
|
}, () => {
|
|
719
|
-
return
|
|
766
|
+
return platformFetchAdapterWithInterceptors(resourceRequest, resourceRequestContext, requestInterceptors);
|
|
720
767
|
});
|
|
721
768
|
}
|
|
722
769
|
}
|
|
723
|
-
return
|
|
770
|
+
return platformFetchAdapterWithInterceptors(resourceRequest, resourceRequestContext, requestInterceptors);
|
|
724
771
|
}
|
|
725
772
|
|
|
726
773
|
// noop implementation for when one is not provided
|
|
@@ -749,17 +796,18 @@ function setupFetchNetworkAdapter() {
|
|
|
749
796
|
* @param resourceRequestContext {@link ResourceRequestContext}
|
|
750
797
|
* @returns Promise<FetchResponse<any>>
|
|
751
798
|
*/
|
|
752
|
-
function handleSendFetchRequest(resourceRequest, resourceRequestContext) {
|
|
799
|
+
function handleSendFetchRequest(resourceRequest, resourceRequestContext, interceptors) {
|
|
753
800
|
const { baseUri, basePath } = resourceRequest;
|
|
754
801
|
const path = `${baseUri}${basePath}`;
|
|
755
802
|
const storageAndLogger = getStorageAndLogger(path);
|
|
756
803
|
const transactionKey = getTransactionKey$1(resourceRequest);
|
|
757
|
-
const response = checkLdsStorageCacheOrFetch(resourceRequest, resourceRequestContext, storageAndLogger, transactionKey);
|
|
804
|
+
const response = checkLdsStorageCacheOrFetch(resourceRequest, resourceRequestContext, storageAndLogger, transactionKey, interceptors.request);
|
|
758
805
|
internalRequestTracker.registerHandler(response, 'lds-inflight-network-request', () => {
|
|
759
806
|
// return false until we signal we are finished
|
|
760
807
|
return false;
|
|
761
808
|
});
|
|
762
|
-
response
|
|
809
|
+
const interceptedResponse = Promise.resolve(interceptors.response.reduce((previousPromise, interceptor) => previousPromise.then(interceptor), resolvedPromiseLike(response)));
|
|
810
|
+
interceptedResponse
|
|
763
811
|
.then((value) => {
|
|
764
812
|
if (storageAndLogger !== null && storageAndLogger.storage !== null) {
|
|
765
813
|
storageAndLogger.storage.set(transactionKey, value.body).catch((_error) => { });
|
|
@@ -769,8 +817,8 @@ function handleSendFetchRequest(resourceRequest, resourceRequestContext) {
|
|
|
769
817
|
.catch((error) => {
|
|
770
818
|
internalRequestLogger.reject(resourceRequest, error);
|
|
771
819
|
});
|
|
772
|
-
return
|
|
773
|
-
internalRequestTracker.markFinished(
|
|
820
|
+
return interceptedResponse.finally(() => {
|
|
821
|
+
internalRequestTracker.markFinished(interceptedResponse);
|
|
774
822
|
});
|
|
775
823
|
}
|
|
776
824
|
/**
|
|
@@ -780,11 +828,11 @@ function handleSendFetchRequest(resourceRequest, resourceRequestContext) {
|
|
|
780
828
|
* @param requestLogger
|
|
781
829
|
* @returns lexNetworkAdapter {@link NetworkAdapter}
|
|
782
830
|
*/
|
|
783
|
-
function setupLexNetworkAdapter(requestTracker, requestLogger) {
|
|
831
|
+
function setupLexNetworkAdapter(requestTracker, requestLogger, interceptors) {
|
|
784
832
|
internalRequestTracker = requestTracker || internalRequestTracker;
|
|
785
833
|
internalRequestLogger = requestLogger || internalRequestLogger;
|
|
786
834
|
return async (resourceRequest, resourceRequestContext) => {
|
|
787
|
-
return handleSendFetchRequest(resourceRequest, resourceRequestContext);
|
|
835
|
+
return handleSendFetchRequest(resourceRequest, resourceRequestContext, interceptors ?? { request: [], response: [] });
|
|
788
836
|
};
|
|
789
837
|
}
|
|
790
838
|
|
|
@@ -807,4 +855,4 @@ function instrument(newInstrumentation) {
|
|
|
807
855
|
}
|
|
808
856
|
|
|
809
857
|
export { instrument, setupFetchNetworkAdapter, setupLexNetworkAdapter };
|
|
810
|
-
// version: 1.
|
|
858
|
+
// version: 1.393.0-fe4eaa97f2
|
package/dist/types/main.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { setupFetchNetworkAdapter, setupLexNetworkAdapter } from './networkAdapter';
|
|
2
2
|
export type { RequestLogger, RequestTracker } from './networkAdapter';
|
|
3
|
+
export type { RequestInterceptor, ResponseInterceptor, Interceptors } from './utils';
|
|
3
4
|
export { instrument, FetchNetworkInstrumentation } from './instrumentation';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { NetworkAdapter, ResourceRequest } from '@luvio/engine';
|
|
2
|
+
import { Interceptors } from './utils';
|
|
2
3
|
export type RequestTracker = {
|
|
3
4
|
registerHandler: (request: any, name: string, loadedCheck: () => boolean) => void;
|
|
4
5
|
markFinished: (request: any) => void;
|
|
@@ -24,4 +25,4 @@ export declare function setupFetchNetworkAdapter(): NetworkAdapter;
|
|
|
24
25
|
* @param requestLogger
|
|
25
26
|
* @returns lexNetworkAdapter {@link NetworkAdapter}
|
|
26
27
|
*/
|
|
27
|
-
export declare function setupLexNetworkAdapter(requestTracker?: RequestTracker, requestLogger?: RequestLogger): NetworkAdapter;
|
|
28
|
+
export declare function setupLexNetworkAdapter(requestTracker?: RequestTracker, requestLogger?: RequestLogger, interceptors?: Interceptors): NetworkAdapter;
|
package/dist/types/utils.d.ts
CHANGED
|
@@ -11,6 +11,12 @@ type LdsStorageConfig = {
|
|
|
11
11
|
* @returns LdsStorageConfig if we cache that resource, otherwise null.
|
|
12
12
|
*/
|
|
13
13
|
export declare function getStorageAndLogger(path: string): LdsStorageConfig | null;
|
|
14
|
+
export type RequestInterceptor = (fetchArgs: ResourceRequest) => PromiseLike<ResourceRequest>;
|
|
15
|
+
export type ResponseInterceptor = (response: FetchResponse<any>) => PromiseLike<FetchResponse<any>>;
|
|
16
|
+
export type Interceptors = {
|
|
17
|
+
request: RequestInterceptor[];
|
|
18
|
+
response: ResponseInterceptor[];
|
|
19
|
+
};
|
|
14
20
|
/**
|
|
15
21
|
* Helper function to fetch data, if available in aura storage cache returns that instead of going to network.
|
|
16
22
|
* @param resourceRequest - {@link ResourceRequest}
|
|
@@ -19,5 +25,5 @@ export declare function getStorageAndLogger(path: string): LdsStorageConfig | nu
|
|
|
19
25
|
* @param transactionKey - The transaction key, derived from the resource request params.
|
|
20
26
|
* @returns Promise<FetchResponse<any> - Promise that resolves to a fetch response.
|
|
21
27
|
*/
|
|
22
|
-
export declare function checkLdsStorageCacheOrFetch(resourceRequest: ResourceRequest, resourceRequestContext: ResourceRequestContext, storageAndLogger: LdsStorageConfig | null, transactionKey: string): Promise<FetchResponse<any>>;
|
|
28
|
+
export declare function checkLdsStorageCacheOrFetch(resourceRequest: ResourceRequest, resourceRequestContext: ResourceRequestContext, storageAndLogger: LdsStorageConfig | null, transactionKey: string, requestInterceptors?: RequestInterceptor[]): Promise<FetchResponse<any>>;
|
|
23
29
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salesforce/lds-network-fetch",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.393.0",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
5
5
|
"description": "LDS Network Adapter using fetch",
|
|
6
6
|
"main": "dist/ldsNetworkFetch.js",
|
|
@@ -38,6 +38,6 @@
|
|
|
38
38
|
"@luvio/network-adapter-fetch": "0.158.7"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@salesforce/lds-network-aura": "^1.
|
|
41
|
+
"@salesforce/lds-network-aura": "^1.393.0"
|
|
42
42
|
}
|
|
43
43
|
}
|