@salesforce/lds-network-fetch 1.412.1 → 1.413.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 +23 -41
- package/dist/types/main.d.ts +2 -2
- package/dist/types/networkAdapter.d.ts +1 -12
- package/dist/types/utils.d.ts +10 -14
- package/package.json +2 -2
package/dist/ldsNetworkFetch.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* *******************************************************************************************
|
|
13
13
|
*/
|
|
14
14
|
/* proxy-compat-disable */
|
|
15
|
-
import { UIAPI_GET_LAYOUT, UIAPI_GET_LAYOUT_USER_STATE, UIAPI_OBJECT_INFO_BATCH_PATH, UIAPI_OBJECT_INFO_PATH, shouldForceRefresh,
|
|
15
|
+
import { UIAPI_GET_LAYOUT, UIAPI_GET_LAYOUT_USER_STATE, UIAPI_OBJECT_INFO_BATCH_PATH, UIAPI_OBJECT_INFO_PATH, shouldForceRefresh, layoutUserStateStorage, layoutUserStateStorageStatsLogger, layoutStorage, layoutStorageStatsLogger, objectInfoStorage, objectInfoStorageStatsLogger, getTransactionKey as getTransactionKey$1, createOkResponse as createOkResponse$1 } from 'force/ldsNetwork';
|
|
16
16
|
import { HttpStatusCode as HttpStatusCode$1 } from 'force/luvioEngine';
|
|
17
17
|
|
|
18
18
|
var SnapshotState;
|
|
@@ -270,7 +270,7 @@ const { join, push, unshift } = Array.prototype;
|
|
|
270
270
|
const { isArray } = Array;
|
|
271
271
|
const { entries, keys } = Object;
|
|
272
272
|
|
|
273
|
-
const UI_API_BASE_URI = '/services/data/
|
|
273
|
+
const UI_API_BASE_URI = '/services/data/v67.0/ui-api';
|
|
274
274
|
|
|
275
275
|
const LDS_RECORDS_AGGREGATE_UI = 'LDS_Records_AggregateUi';
|
|
276
276
|
// Boundary which represents the limit that we start chunking at,
|
|
@@ -739,35 +739,22 @@ function getStorageAndLogger(path) {
|
|
|
739
739
|
return null;
|
|
740
740
|
}
|
|
741
741
|
const platformFetchAdapter = platformNetworkAdapter(fetchNetworkAdapter);
|
|
742
|
-
const platformFetchAdapterWithInterceptors = async (resourceRequest, resourceRequestContext, requestInterceptors) => {
|
|
743
|
-
const pending = requestInterceptors.reduce((previousPromise, interceptor) => previousPromise.then(interceptor), resolvedPromiseLike(resourceRequest));
|
|
742
|
+
const platformFetchAdapterWithInterceptors = async (resourceRequest, resourceRequestContext, requestInterceptors, interceptorContext) => {
|
|
743
|
+
const pending = requestInterceptors.reduce((previousPromise, interceptor) => previousPromise.then((resourceRequest) => interceptor(resourceRequest, interceptorContext)), resolvedPromiseLike(resourceRequest));
|
|
744
744
|
return pending.then((interceptedRequest) => platformFetchAdapter(interceptedRequest, resourceRequestContext));
|
|
745
745
|
};
|
|
746
|
-
|
|
747
|
-
* Helper function to fetch data, if available in aura storage cache returns that instead of going to network.
|
|
748
|
-
* @param resourceRequest - {@link ResourceRequest}
|
|
749
|
-
* @param resourceRequestContext {@link ResourceRequestContext}
|
|
750
|
-
* @param storageAndLogger - Object containing a reference to aura storage/logger
|
|
751
|
-
* @param transactionKey - The transaction key, derived from the resource request params.
|
|
752
|
-
* @returns Promise<FetchResponse<any> - Promise that resolves to a fetch response.
|
|
753
|
-
*/
|
|
754
|
-
function checkLdsStorageCacheOrFetch(resourceRequest, resourceRequestContext, storageAndLogger, transactionKey, requestInterceptors = []) {
|
|
746
|
+
async function getDurableCacheDataForIncomingRequest(resourceRequest, storageAndLogger, transactionKey) {
|
|
755
747
|
if (!shouldForceRefresh(resourceRequest)) {
|
|
756
748
|
if (storageAndLogger?.storage) {
|
|
757
749
|
return storageAndLogger.storage.get(transactionKey).then((cacheResult) => {
|
|
758
750
|
if (cacheResult !== undefined) {
|
|
759
751
|
storageAndLogger.statsLogger.logHits();
|
|
760
|
-
// This creates an AuraFetchResponse, should it just be FetchResponse?
|
|
761
|
-
return createOkResponse$1(cacheResult);
|
|
762
752
|
}
|
|
763
753
|
storageAndLogger.statsLogger.logMisses();
|
|
764
|
-
return
|
|
765
|
-
}, () => {
|
|
766
|
-
return platformFetchAdapterWithInterceptors(resourceRequest, resourceRequestContext, requestInterceptors);
|
|
754
|
+
return cacheResult;
|
|
767
755
|
});
|
|
768
756
|
}
|
|
769
757
|
}
|
|
770
|
-
return platformFetchAdapterWithInterceptors(resourceRequest, resourceRequestContext, requestInterceptors);
|
|
771
758
|
}
|
|
772
759
|
// Copied from requestId generation on core
|
|
773
760
|
function generateRequestId() {
|
|
@@ -788,12 +775,6 @@ function generateRequestId() {
|
|
|
788
775
|
.substring(0, 18);
|
|
789
776
|
}
|
|
790
777
|
|
|
791
|
-
// noop implementation for when one is not provided
|
|
792
|
-
let internalRequestTracker = {
|
|
793
|
-
hasTracker: () => false,
|
|
794
|
-
registerHandler: (_request, _name, _loadedCheck) => { },
|
|
795
|
-
markFinished: (_request) => { },
|
|
796
|
-
};
|
|
797
778
|
// noop implementation for when one is not provided
|
|
798
779
|
let internalRequestLogger = {
|
|
799
780
|
resolve: (_request, _response) => { },
|
|
@@ -815,18 +796,22 @@ function setupFetchNetworkAdapter() {
|
|
|
815
796
|
* @param resourceRequestContext {@link ResourceRequestContext}
|
|
816
797
|
* @returns Promise<FetchResponse<any>>
|
|
817
798
|
*/
|
|
818
|
-
function handleSendFetchRequest(resourceRequest, resourceRequestContext, interceptors) {
|
|
799
|
+
async function handleSendFetchRequest(resourceRequest, resourceRequestContext, interceptors) {
|
|
819
800
|
const { baseUri, basePath } = resourceRequest;
|
|
820
801
|
const path = `${baseUri}${basePath}`;
|
|
821
802
|
const storageAndLogger = getStorageAndLogger(path);
|
|
822
803
|
const transactionKey = getTransactionKey$1(resourceRequest);
|
|
823
|
-
|
|
824
|
-
const
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
804
|
+
// Create context per request if factory is provided
|
|
805
|
+
const context = interceptors.createContext?.();
|
|
806
|
+
const { request: requestInterceptors = [], response: responseInterceptors = [], finally: finallyInterceptors = [], } = interceptors;
|
|
807
|
+
const cachedData = await getDurableCacheDataForIncomingRequest(resourceRequest, storageAndLogger, transactionKey);
|
|
808
|
+
if (cachedData !== undefined) {
|
|
809
|
+
return createOkResponse$1(cachedData);
|
|
810
|
+
}
|
|
811
|
+
const response = platformFetchAdapterWithInterceptors(resourceRequest, resourceRequestContext, requestInterceptors, context);
|
|
812
|
+
const interceptedResponse = Promise.resolve(responseInterceptors.reduce((previousPromise, interceptor) => previousPromise.then((response) => interceptor(response, context)), resolvedPromiseLike(response)));
|
|
813
|
+
// This can probably be refactored once we add an error interceptor pattern to onestore, and then
|
|
814
|
+
// the intial then here can also most likely be moved to a response interceptor as well
|
|
830
815
|
interceptedResponse
|
|
831
816
|
.then((value) => {
|
|
832
817
|
if (storageAndLogger !== null && storageAndLogger.storage !== null) {
|
|
@@ -838,22 +823,19 @@ function handleSendFetchRequest(resourceRequest, resourceRequestContext, interce
|
|
|
838
823
|
internalRequestLogger.reject(resourceRequest, error);
|
|
839
824
|
});
|
|
840
825
|
return interceptedResponse.finally(() => {
|
|
841
|
-
|
|
826
|
+
return finallyInterceptors.reduce((previousPromise, interceptor) => previousPromise.then(() => interceptor(context)), Promise.resolve());
|
|
842
827
|
});
|
|
843
828
|
}
|
|
844
829
|
/**
|
|
845
830
|
* Wrapper around fetch network adapter from luvio
|
|
846
831
|
*
|
|
847
|
-
* @param requestTracker
|
|
848
832
|
* @param requestLogger
|
|
849
833
|
* @returns lexNetworkAdapter {@link NetworkAdapter}
|
|
850
834
|
*/
|
|
851
|
-
function setupLexNetworkAdapter(
|
|
852
|
-
internalRequestTracker =
|
|
853
|
-
requestTracker && requestTracker.hasTracker() ? requestTracker : internalRequestTracker;
|
|
835
|
+
function setupLexNetworkAdapter(requestLogger, interceptors) {
|
|
854
836
|
internalRequestLogger = requestLogger || internalRequestLogger;
|
|
855
837
|
return async (resourceRequest, resourceRequestContext) => {
|
|
856
|
-
return handleSendFetchRequest(resourceRequest, resourceRequestContext, interceptors ?? {
|
|
838
|
+
return handleSendFetchRequest(resourceRequest, resourceRequestContext, interceptors ?? {});
|
|
857
839
|
};
|
|
858
840
|
}
|
|
859
841
|
|
|
@@ -875,5 +857,5 @@ function instrument(newInstrumentation) {
|
|
|
875
857
|
Object.assign(instrumentation, newInstrumentation);
|
|
876
858
|
}
|
|
877
859
|
|
|
878
|
-
export { generateRequestId, instrument,
|
|
879
|
-
// version: 1.
|
|
860
|
+
export { generateRequestId, instrument, setupFetchNetworkAdapter, setupLexNetworkAdapter };
|
|
861
|
+
// version: 1.413.0-a073c11951
|
package/dist/types/main.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export type { RequestLogger
|
|
1
|
+
export { setupFetchNetworkAdapter, setupLexNetworkAdapter } from './networkAdapter';
|
|
2
|
+
export type { RequestLogger } from './networkAdapter';
|
|
3
3
|
export { generateRequestId } from './utils';
|
|
4
4
|
export type { RequestInterceptor, ResponseInterceptor, Interceptors } from './utils';
|
|
5
5
|
export { instrument, FetchNetworkInstrumentation } from './instrumentation';
|
|
@@ -1,19 +1,9 @@
|
|
|
1
1
|
import type { NetworkAdapter, ResourceRequest } from '@luvio/engine';
|
|
2
2
|
import { Interceptors } from './utils';
|
|
3
|
-
export type RequestTracker = {
|
|
4
|
-
hasTracker: () => boolean;
|
|
5
|
-
registerHandler: (request: any, name: string, loadedCheck: () => boolean) => void;
|
|
6
|
-
markFinished: (request: any) => void;
|
|
7
|
-
};
|
|
8
|
-
export declare let internalRequestTracker: RequestTracker;
|
|
9
3
|
export type RequestLogger = {
|
|
10
4
|
resolve: (request: ResourceRequest, response: any) => void;
|
|
11
5
|
reject: (request: ResourceRequest, error: Error) => void;
|
|
12
6
|
};
|
|
13
|
-
export declare function getTrackerAndLoggerForTest(): {
|
|
14
|
-
tracker: RequestTracker;
|
|
15
|
-
logger: RequestLogger;
|
|
16
|
-
};
|
|
17
7
|
/**
|
|
18
8
|
* Wrapper around fetch network adapter from luvio
|
|
19
9
|
*
|
|
@@ -23,8 +13,7 @@ export declare function setupFetchNetworkAdapter(): NetworkAdapter;
|
|
|
23
13
|
/**
|
|
24
14
|
* Wrapper around fetch network adapter from luvio
|
|
25
15
|
*
|
|
26
|
-
* @param requestTracker
|
|
27
16
|
* @param requestLogger
|
|
28
17
|
* @returns lexNetworkAdapter {@link NetworkAdapter}
|
|
29
18
|
*/
|
|
30
|
-
export declare function setupLexNetworkAdapter(
|
|
19
|
+
export declare function setupLexNetworkAdapter(requestLogger?: RequestLogger, interceptors?: Interceptors): NetworkAdapter;
|
package/dist/types/utils.d.ts
CHANGED
|
@@ -11,20 +11,16 @@ 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
|
|
16
|
-
export type
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
export type RequestInterceptor<Context = any> = (fetchArgs: ResourceRequest, context?: Context) => PromiseLike<ResourceRequest>;
|
|
15
|
+
export type ResponseInterceptor<Context = any> = (response: FetchResponse<any>, context?: Context) => PromiseLike<FetchResponse<any>>;
|
|
16
|
+
export type FinallyInterceptor<Context = any> = (context?: Context) => PromiseLike<void> | void;
|
|
17
|
+
export type Interceptors<Context = any> = {
|
|
18
|
+
createContext?: () => Context;
|
|
19
|
+
request?: RequestInterceptor<Context>[];
|
|
20
|
+
response?: ResponseInterceptor<Context>[];
|
|
21
|
+
finally?: FinallyInterceptor<Context>[];
|
|
19
22
|
};
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
* @param resourceRequest - {@link ResourceRequest}
|
|
23
|
-
* @param resourceRequestContext {@link ResourceRequestContext}
|
|
24
|
-
* @param storageAndLogger - Object containing a reference to aura storage/logger
|
|
25
|
-
* @param transactionKey - The transaction key, derived from the resource request params.
|
|
26
|
-
* @returns Promise<FetchResponse<any> - Promise that resolves to a fetch response.
|
|
27
|
-
*/
|
|
28
|
-
export declare function checkLdsStorageCacheOrFetch(resourceRequest: ResourceRequest, resourceRequestContext: ResourceRequestContext, storageAndLogger: LdsStorageConfig | null, transactionKey: string, requestInterceptors?: RequestInterceptor[]): Promise<FetchResponse<any>>;
|
|
23
|
+
export declare const platformFetchAdapterWithInterceptors: (resourceRequest: ResourceRequest, resourceRequestContext: ResourceRequestContext, requestInterceptors: RequestInterceptor[], interceptorContext: any) => Promise<FetchResponse<any>>;
|
|
24
|
+
export declare function getDurableCacheDataForIncomingRequest(resourceRequest: ResourceRequest, storageAndLogger: LdsStorageConfig | null, transactionKey: string): Promise<unknown>;
|
|
29
25
|
export declare function generateRequestId(): string;
|
|
30
26
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salesforce/lds-network-fetch",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.413.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.413.0"
|
|
42
42
|
}
|
|
43
43
|
}
|