@salesforce/lds-runtime-aura 1.309.0-dev16 → 1.309.0-dev18
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/ldsEngineCreator.js +88 -54
- package/dist/types/main.d.ts +1 -1
- package/dist/types/predictive-loading/common/index.d.ts +2 -2
- package/dist/types/predictive-loading/pages/lex-default-page.d.ts +2 -2
- package/dist/types/predictive-loading/pages/object-home-page.d.ts +1 -2
- package/dist/types/predictive-loading/pages/predictive-prefetch-page.d.ts +5 -3
- package/dist/types/predictive-loading/pages/record-home-page.d.ts +4 -2
- package/dist/types/predictive-loading/prefetcher/lex-predictive-prefetcher.d.ts +1 -1
- package/dist/types/predictive-loading/prefetcher/predictive-prefetcher.d.ts +11 -6
- package/dist/types/predictive-loading/repository/prefetch-repository.d.ts +8 -6
- package/dist/types/predictive-loading/request-strategy/get-related-list-info-batch-request-strategy.d.ts +1 -0
- package/dist/types/predictive-loading/request-strategy/request-strategy.d.ts +1 -1
- package/package.json +12 -12
package/dist/ldsEngineCreator.js
CHANGED
|
@@ -20,6 +20,7 @@ import useRelatedListsPredictions from '@salesforce/gate/lds.pdl.useRelatedLists
|
|
|
20
20
|
import useCmpDefPredictions from '@salesforce/gate/lds.pdl.useCmpDefPredictions';
|
|
21
21
|
import applyPredictionRequestLimit from '@salesforce/gate/lds.pdl.applyRequestLimit';
|
|
22
22
|
import useExactMatchesPlusGate from '@salesforce/gate/lds.pdl.useExactMatchesPlus';
|
|
23
|
+
import useRecordTypeId from '@salesforce/gate/lds.pdl.useRecordTypeId';
|
|
23
24
|
import { GetApexWireAdapterFactory, registerPrefetcher as registerPrefetcher$1 } from 'force/ldsAdaptersApex';
|
|
24
25
|
import { getRecordAvatarsAdapterFactory, getRecordAdapterFactory, coerceFieldIdArray, getRecordsAdapterFactory, getRecordActionsAdapterFactory, getObjectInfosAdapterFactory, coerceObjectIdArray, getObjectInfoAdapterFactory, coerceObjectId, getRelatedListsActionsAdapterFactory, getRelatedListInfoBatchAdapterFactory, getRelatedListRecordsBatchAdapterFactory, getRelatedListRecordsAdapterFactory, getListInfoByNameAdapterFactory, getListInfosByObjectNameAdapterFactory, getListRecordsByNameAdapterFactory, getListObjectInfoAdapterFactory, instrument, configuration, InMemoryRecordRepresentationQueryEvaluator, UiApiNamespace, RecordRepresentationRepresentationType, registerPrefetcher } from 'force/ldsAdaptersUiapi';
|
|
25
26
|
import { BaseCommand, convertAuraResponseToData, convertFetchResponseToData } from 'force/luvioRuntime5';
|
|
@@ -1778,21 +1779,27 @@ const PDL_EXECUTE_ASYNC_OPTIONS = {
|
|
|
1778
1779
|
};
|
|
1779
1780
|
|
|
1780
1781
|
class PredictivePrefetchPage {
|
|
1781
|
-
constructor(context) {
|
|
1782
|
+
constructor(context, similarContext) {
|
|
1782
1783
|
this.context = context;
|
|
1783
|
-
this.similarContext =
|
|
1784
|
+
this.similarContext = similarContext;
|
|
1785
|
+
}
|
|
1786
|
+
getExactKey() {
|
|
1787
|
+
return { ...this.context };
|
|
1788
|
+
}
|
|
1789
|
+
getSimilarKey() {
|
|
1790
|
+
return { ...this.similarContext };
|
|
1784
1791
|
}
|
|
1785
1792
|
}
|
|
1786
1793
|
|
|
1787
1794
|
class LexDefaultPage extends PredictivePrefetchPage {
|
|
1788
|
-
constructor(context) {
|
|
1789
|
-
super(context);
|
|
1795
|
+
constructor(context, similarContext) {
|
|
1796
|
+
super(context, similarContext);
|
|
1790
1797
|
}
|
|
1791
1798
|
supportsRequest(_request) {
|
|
1792
1799
|
return true;
|
|
1793
1800
|
}
|
|
1794
1801
|
buildSaveRequestData(request) {
|
|
1795
|
-
return [{
|
|
1802
|
+
return [{ key: this.getExactKey(), request }];
|
|
1796
1803
|
}
|
|
1797
1804
|
resolveSimilarRequest(similarRequest) {
|
|
1798
1805
|
return similarRequest;
|
|
@@ -2530,6 +2537,14 @@ class GetRelatedListInfoBatchRequestStrategy extends LuvioAdapterRequestStrategy
|
|
|
2530
2537
|
buildConcreteRequest(similarRequest, _context) {
|
|
2531
2538
|
return similarRequest;
|
|
2532
2539
|
}
|
|
2540
|
+
isContextDependent(context, request) {
|
|
2541
|
+
// We have a higher degree of confidence of being able to use a similar request when
|
|
2542
|
+
// optional config is not set AND the object type of the page context is the same as the
|
|
2543
|
+
// object type related list is for. This approach is based heavily with early predictions
|
|
2544
|
+
// and the max of 12 aura requests in mind.
|
|
2545
|
+
return (context.objectApiName === request.config.parentObjectApiName &&
|
|
2546
|
+
request.config.recordTypeId === undefined);
|
|
2547
|
+
}
|
|
2533
2548
|
canCombine(reqA, reqB) {
|
|
2534
2549
|
return reqA.parentObjectApiName === reqB.parentObjectApiName;
|
|
2535
2550
|
}
|
|
@@ -2658,10 +2673,13 @@ class PrefetchRepository {
|
|
|
2658
2673
|
existingRequestEntry.requestMetadata.requestTime = requestTime;
|
|
2659
2674
|
}
|
|
2660
2675
|
});
|
|
2661
|
-
const { modifyBeforeSaveHook } = this.options;
|
|
2676
|
+
const { modifyBeforeSaveHook, modifyPageBeforeSavingHook } = this.options;
|
|
2662
2677
|
if (modifyBeforeSaveHook !== undefined) {
|
|
2663
2678
|
page.requests = modifyBeforeSaveHook(page.requests);
|
|
2664
2679
|
}
|
|
2680
|
+
if (modifyPageBeforeSavingHook !== undefined) {
|
|
2681
|
+
modifyPageBeforeSavingHook(page);
|
|
2682
|
+
}
|
|
2665
2683
|
setPromises.push(this.storage.set(id, page));
|
|
2666
2684
|
}
|
|
2667
2685
|
this.clearRequestBuffer();
|
|
@@ -2680,10 +2698,13 @@ class PrefetchRepository {
|
|
|
2680
2698
|
this.requestBuffer.set(identifier, batchForKey);
|
|
2681
2699
|
}
|
|
2682
2700
|
getPage(key) {
|
|
2683
|
-
const identifier =
|
|
2701
|
+
const identifier = this.getKeyId(key);
|
|
2684
2702
|
return this.storage.get(identifier);
|
|
2685
2703
|
}
|
|
2686
2704
|
getPageRequests(key) {
|
|
2705
|
+
if (!key) {
|
|
2706
|
+
return [];
|
|
2707
|
+
}
|
|
2687
2708
|
const page = this.getPage(key);
|
|
2688
2709
|
if (page === undefined) {
|
|
2689
2710
|
return [];
|
|
@@ -2968,18 +2989,19 @@ const RECORD_HOME_SUPPORTED_ADAPTERS = new Set([
|
|
|
2968
2989
|
]);
|
|
2969
2990
|
class RecordHomePage extends LexDefaultPage {
|
|
2970
2991
|
constructor(context, requestStrategies, options) {
|
|
2971
|
-
super(context
|
|
2992
|
+
super(context, {
|
|
2993
|
+
...context,
|
|
2994
|
+
recordId: '*',
|
|
2995
|
+
});
|
|
2972
2996
|
this.requestStrategies = requestStrategies;
|
|
2973
2997
|
this.options = options;
|
|
2974
|
-
const { recordId: _, ...rest } = this.context;
|
|
2975
|
-
this.similarContext = {
|
|
2976
|
-
recordId: '*',
|
|
2977
|
-
...rest,
|
|
2978
|
-
};
|
|
2979
2998
|
}
|
|
2980
2999
|
supportsRequest(request) {
|
|
2981
3000
|
return RECORD_HOME_SUPPORTED_ADAPTERS.has(request.adapterName);
|
|
2982
3001
|
}
|
|
3002
|
+
getExactKey() {
|
|
3003
|
+
return RecordHomePage.contextToExactKey(this.context);
|
|
3004
|
+
}
|
|
2983
3005
|
buildSaveRequestData(request) {
|
|
2984
3006
|
const requestBuckets = [];
|
|
2985
3007
|
const { adapterName } = request;
|
|
@@ -2989,7 +3011,7 @@ class RecordHomePage extends LexDefaultPage {
|
|
|
2989
3011
|
}
|
|
2990
3012
|
if (matchingRequestStrategy.isContextDependent(this.context, request)) {
|
|
2991
3013
|
requestBuckets.push({
|
|
2992
|
-
|
|
3014
|
+
key: this.getSimilarKey(),
|
|
2993
3015
|
request: matchingRequestStrategy.transformForSaveSimilarRequest(request),
|
|
2994
3016
|
});
|
|
2995
3017
|
// When `options.useExactMatchesPlus` is not enabled, we can save this request on the similar bucket only
|
|
@@ -2999,7 +3021,7 @@ class RecordHomePage extends LexDefaultPage {
|
|
|
2999
3021
|
}
|
|
3000
3022
|
if (!matchingRequestStrategy.onlySavedInSimilar) {
|
|
3001
3023
|
requestBuckets.push({
|
|
3002
|
-
|
|
3024
|
+
key: this.getExactKey(),
|
|
3003
3025
|
request: matchingRequestStrategy.transformForSave(request),
|
|
3004
3026
|
});
|
|
3005
3027
|
}
|
|
@@ -3051,6 +3073,10 @@ class RecordHomePage extends LexDefaultPage {
|
|
|
3051
3073
|
maybeRecordHomePageContext.recordId !== undefined &&
|
|
3052
3074
|
maybeRecordHomePageContext.type === 'recordPage');
|
|
3053
3075
|
}
|
|
3076
|
+
static contextToExactKey(context) {
|
|
3077
|
+
const { recordTypeId: _, ...key } = context;
|
|
3078
|
+
return key;
|
|
3079
|
+
}
|
|
3054
3080
|
}
|
|
3055
3081
|
|
|
3056
3082
|
const OBJECT_HOME_SUPPORTED_ADAPTERS = new Set([
|
|
@@ -3062,10 +3088,9 @@ const OBJECT_HOME_SUPPORTED_ADAPTERS = new Set([
|
|
|
3062
3088
|
]);
|
|
3063
3089
|
class ObjectHomePage extends LexDefaultPage {
|
|
3064
3090
|
constructor(context, requestStrategies, options) {
|
|
3065
|
-
super(context);
|
|
3091
|
+
super(context, context);
|
|
3066
3092
|
this.requestStrategies = requestStrategies;
|
|
3067
3093
|
this.options = options;
|
|
3068
|
-
this.similarContext = context;
|
|
3069
3094
|
}
|
|
3070
3095
|
supportsRequest(request) {
|
|
3071
3096
|
return OBJECT_HOME_SUPPORTED_ADAPTERS.has(request.adapterName);
|
|
@@ -3079,7 +3104,7 @@ class ObjectHomePage extends LexDefaultPage {
|
|
|
3079
3104
|
}
|
|
3080
3105
|
if (matchingRequestStrategy.isContextDependent(this.context, request)) {
|
|
3081
3106
|
requestBuckets.push({
|
|
3082
|
-
|
|
3107
|
+
key: this.getSimilarKey(),
|
|
3083
3108
|
request: matchingRequestStrategy.transformForSaveSimilarRequest(request),
|
|
3084
3109
|
});
|
|
3085
3110
|
// When `options.useExactMatchesPlus` is not enabled, we can save this request on the similar bucket only
|
|
@@ -3088,7 +3113,7 @@ class ObjectHomePage extends LexDefaultPage {
|
|
|
3088
3113
|
}
|
|
3089
3114
|
}
|
|
3090
3115
|
requestBuckets.push({
|
|
3091
|
-
|
|
3116
|
+
key: this.getExactKey(),
|
|
3092
3117
|
request: matchingRequestStrategy.transformForSave(request),
|
|
3093
3118
|
});
|
|
3094
3119
|
return requestBuckets;
|
|
@@ -3766,10 +3791,10 @@ class ApplicationPredictivePrefetcher {
|
|
|
3766
3791
|
if (this.page.supportsRequest(request)) {
|
|
3767
3792
|
const saveBuckets = this.page.buildSaveRequestData(request);
|
|
3768
3793
|
saveBuckets.forEach((saveBucket) => {
|
|
3769
|
-
const { request: requestToSave,
|
|
3794
|
+
const { request: requestToSave, key } = saveBucket;
|
|
3770
3795
|
// No need to differentiate from predictions requests because these
|
|
3771
3796
|
// are made from the adapters factory, which are not prediction aware.
|
|
3772
|
-
this.repository.saveRequest(
|
|
3797
|
+
this.repository.saveRequest(key, requestToSave);
|
|
3773
3798
|
});
|
|
3774
3799
|
}
|
|
3775
3800
|
return Promise.resolve().then();
|
|
@@ -3777,8 +3802,8 @@ class ApplicationPredictivePrefetcher {
|
|
|
3777
3802
|
}
|
|
3778
3803
|
async predict() {
|
|
3779
3804
|
const alwaysRequests = this.page.getAlwaysRunRequests();
|
|
3780
|
-
const similarPageRequests =
|
|
3781
|
-
const exactPageRequests =
|
|
3805
|
+
const similarPageRequests = this.getSimilarPageRequests();
|
|
3806
|
+
const exactPageRequests = this.getExactPageRequests();
|
|
3782
3807
|
// Always requests can't be reduced in - Some of them are essential to keep the page rendering at the beginning.
|
|
3783
3808
|
const reducedRequests = this.requestRunner
|
|
3784
3809
|
.reduceRequests([...exactPageRequests, ...similarPageRequests])
|
|
@@ -3788,33 +3813,25 @@ class ApplicationPredictivePrefetcher {
|
|
|
3788
3813
|
return Promise.all(predictedRequests.map((request) => this.requestRunner.runRequest(request))).then();
|
|
3789
3814
|
}
|
|
3790
3815
|
getPredictionSummary() {
|
|
3791
|
-
|
|
3792
|
-
|
|
3793
|
-
|
|
3794
|
-
|
|
3795
|
-
return { exact: exactPageRequests.length, similar: similarPageRequests.length };
|
|
3816
|
+
return {
|
|
3817
|
+
exact: this.getExactPageRequests().length,
|
|
3818
|
+
similar: this.getSimilarPageRequests().length,
|
|
3819
|
+
};
|
|
3796
3820
|
}
|
|
3797
3821
|
hasPredictions() {
|
|
3798
3822
|
const summary = this.getPredictionSummary();
|
|
3799
3823
|
return summary.exact > 0 || summary.similar > 0;
|
|
3800
3824
|
}
|
|
3801
3825
|
getSimilarPageRequests() {
|
|
3802
|
-
|
|
3803
|
-
|
|
3804
|
-
|
|
3805
|
-
|
|
3806
|
-
|
|
3807
|
-
|
|
3808
|
-
...entry,
|
|
3809
|
-
request: this.page.resolveSimilarRequest(entry.request),
|
|
3810
|
-
};
|
|
3811
|
-
});
|
|
3812
|
-
}
|
|
3813
|
-
}
|
|
3814
|
-
return resolvedSimilarPageRequests;
|
|
3826
|
+
return this.repository.getPageRequests(this.page.getSimilarKey()).map((entry) => {
|
|
3827
|
+
return {
|
|
3828
|
+
...entry,
|
|
3829
|
+
request: this.page.resolveSimilarRequest(entry.request),
|
|
3830
|
+
};
|
|
3831
|
+
});
|
|
3815
3832
|
}
|
|
3816
|
-
|
|
3817
|
-
return this.repository.getPageRequests(this.
|
|
3833
|
+
getExactPageRequests() {
|
|
3834
|
+
return this.repository.getPageRequests(this.page.getExactKey()) || [];
|
|
3818
3835
|
}
|
|
3819
3836
|
}
|
|
3820
3837
|
|
|
@@ -3877,6 +3894,7 @@ function predictComponentDefs(cmpDefPredictions, requestRunner) {
|
|
|
3877
3894
|
const reducedPredictions = requestRunner.reduceRequests(cmpDefPredictions);
|
|
3878
3895
|
reducedPredictions.map((request) => requestRunner.runRequest(request.request));
|
|
3879
3896
|
}
|
|
3897
|
+
const DEFAULT_RECORD_TYPE_ID = '012000000000000AAA';
|
|
3880
3898
|
class LexPredictivePrefetcher extends ApplicationPredictivePrefetcher {
|
|
3881
3899
|
constructor(context, repository, requestRunner,
|
|
3882
3900
|
// These strategies need to be in sync with the "predictiveDataLoadCapable" list
|
|
@@ -3889,6 +3907,17 @@ class LexPredictivePrefetcher extends ApplicationPredictivePrefetcher {
|
|
|
3889
3907
|
}
|
|
3890
3908
|
getPage() {
|
|
3891
3909
|
if (RecordHomePage.handlesContext(this.context)) {
|
|
3910
|
+
/*
|
|
3911
|
+
* `recordTypeId` is required in order to create similar request keys. However, the means by which it is
|
|
3912
|
+
* obtained varies based on when in the app lifecycle predictions are requested.
|
|
3913
|
+
*/
|
|
3914
|
+
// check context for record type
|
|
3915
|
+
if (!this.context.recordTypeId) {
|
|
3916
|
+
// don't have it (i.e., early predictions), so need try to obtain via exact matches
|
|
3917
|
+
const exact = this.repository.getPage(RecordHomePage.contextToExactKey(this.context));
|
|
3918
|
+
// use found recordTypeId, otherwise fallback to default
|
|
3919
|
+
this.context.recordTypeId = (exact && exact.recordTypeId) || DEFAULT_RECORD_TYPE_ID;
|
|
3920
|
+
}
|
|
3892
3921
|
return new RecordHomePage(this.context, this.requestStrategies, this.options);
|
|
3893
3922
|
}
|
|
3894
3923
|
else if (ObjectHomePage.handlesContext(this.context)) {
|
|
@@ -3897,7 +3926,7 @@ class LexPredictivePrefetcher extends ApplicationPredictivePrefetcher {
|
|
|
3897
3926
|
return new LexDefaultPage(this.context);
|
|
3898
3927
|
}
|
|
3899
3928
|
getAllPageRequests() {
|
|
3900
|
-
const exactPageRequests = this.
|
|
3929
|
+
const exactPageRequests = this.getExactPageRequests();
|
|
3901
3930
|
let similarPageRequests = this.getSimilarPageRequests();
|
|
3902
3931
|
if (exactPageRequests.length > 0 && this.options.useExactMatchesPlus === true) {
|
|
3903
3932
|
similarPageRequests = similarPageRequests.filter((requestEntry) => {
|
|
@@ -3910,7 +3939,7 @@ class LexPredictivePrefetcher extends ApplicationPredictivePrefetcher {
|
|
|
3910
3939
|
async predict() {
|
|
3911
3940
|
const alwaysRequests = this.page.getAlwaysRunRequests();
|
|
3912
3941
|
const pageRequests = this.getAllPageRequests();
|
|
3913
|
-
// IMPORTANT: Because there's no way to
|
|
3942
|
+
// IMPORTANT: Because there's no way to differentiate a cmpDef prediction from the page
|
|
3914
3943
|
// requesting the cmpDef, we need to predict cmpDefs before we start watching
|
|
3915
3944
|
// for predictions in the page. Having this code after an
|
|
3916
3945
|
// await will make the predictions to be saved as predictions too.
|
|
@@ -4101,7 +4130,7 @@ function getEnvironmentSetting(name) {
|
|
|
4101
4130
|
}
|
|
4102
4131
|
return undefined;
|
|
4103
4132
|
}
|
|
4104
|
-
// version: 1.309.0-
|
|
4133
|
+
// version: 1.309.0-dev18-8649efafcc
|
|
4105
4134
|
|
|
4106
4135
|
const forceRecordTransactionsDisabled = getEnvironmentSetting(EnvironmentSettings.ForceRecordTransactionsDisabled);
|
|
4107
4136
|
//TODO: Some duplication here that can be most likely moved to a util class
|
|
@@ -4490,11 +4519,17 @@ function setupPredictivePrefetcher(luvio) {
|
|
|
4490
4519
|
const requestRunner = new LexRequestRunner(luvio);
|
|
4491
4520
|
const repository = new PrefetchRepository(storage, {
|
|
4492
4521
|
modifyBeforeSaveHook: (requests) => requestRunner.reduceRequests(requests),
|
|
4522
|
+
modifyPageBeforeSavingHook: (page) => {
|
|
4523
|
+
if (RecordHomePage.handlesContext(__lexPrefetcher.context)) {
|
|
4524
|
+
page.recordTypeId = __lexPrefetcher.context.recordTypeId;
|
|
4525
|
+
}
|
|
4526
|
+
},
|
|
4493
4527
|
});
|
|
4494
4528
|
const inflightRequestLimit = applyPredictionRequestLimit.isOpen({ fallback: false })
|
|
4495
4529
|
? getInflightRequestLimit()
|
|
4496
4530
|
: 1000;
|
|
4497
|
-
const useExactMatchesPlus = useExactMatchesPlusGate.isOpen({ fallback: false })
|
|
4531
|
+
const useExactMatchesPlus = useExactMatchesPlusGate.isOpen({ fallback: false }) &&
|
|
4532
|
+
useRecordTypeId.isOpen({ fallback: false }) === false;
|
|
4498
4533
|
const prefetcherOptions = {
|
|
4499
4534
|
inflightRequestLimit,
|
|
4500
4535
|
useExactMatchesPlus,
|
|
@@ -4580,13 +4615,12 @@ function buildPredictorForContext(context) {
|
|
|
4580
4615
|
}
|
|
4581
4616
|
const currentContext = __lexPrefetcher.context;
|
|
4582
4617
|
let isSameContext = false;
|
|
4583
|
-
if (currentContext
|
|
4584
|
-
const rhPageContext = currentContext;
|
|
4618
|
+
if (RecordHomePage.handlesContext(currentContext)) {
|
|
4585
4619
|
isSameContext =
|
|
4586
|
-
|
|
4587
|
-
|
|
4588
|
-
|
|
4589
|
-
|
|
4620
|
+
currentContext.actionName === context.actionName &&
|
|
4621
|
+
currentContext.objectApiName === context.objectApiName &&
|
|
4622
|
+
currentContext.recordId === context.recordId &&
|
|
4623
|
+
currentContext.type === context.type;
|
|
4590
4624
|
}
|
|
4591
4625
|
// // This chunk configures which page we're going to use to try and preload.
|
|
4592
4626
|
__lexPrefetcher.context = context;
|
|
@@ -4730,4 +4764,4 @@ function ldsEngineCreator() {
|
|
|
4730
4764
|
}
|
|
4731
4765
|
|
|
4732
4766
|
export { buildPredictorForContext, ldsEngineCreator as default, initializeLDS, initializeOneStore, whenPredictionsReady };
|
|
4733
|
-
// version: 1.309.0-
|
|
4767
|
+
// version: 1.309.0-dev18-1503ff674d
|
package/dist/types/main.d.ts
CHANGED
|
@@ -9,9 +9,9 @@ export type RequestEntry<Request> = {
|
|
|
9
9
|
};
|
|
10
10
|
};
|
|
11
11
|
/**
|
|
12
|
-
* Request and
|
|
12
|
+
* Request and context-based Key data to be saved.
|
|
13
13
|
*/
|
|
14
14
|
export type SaveRequestData<Request, Context> = {
|
|
15
15
|
request: Request;
|
|
16
|
-
|
|
16
|
+
key: Context;
|
|
17
17
|
};
|
|
@@ -2,10 +2,10 @@ import type { LexRequest } from '../prefetcher';
|
|
|
2
2
|
import { PredictivePrefetchPage } from './predictive-prefetch-page';
|
|
3
3
|
export type DefaultPageContext = Record<string, any>;
|
|
4
4
|
export declare class LexDefaultPage<Request extends LexRequest, Context extends DefaultPageContext> extends PredictivePrefetchPage<Request, Context> {
|
|
5
|
-
constructor(context: Context);
|
|
5
|
+
constructor(context: Context, similarContext?: Context);
|
|
6
6
|
supportsRequest(_request: Request): boolean;
|
|
7
7
|
buildSaveRequestData(request: Request): {
|
|
8
|
-
|
|
8
|
+
key: Context;
|
|
9
9
|
request: Request;
|
|
10
10
|
}[];
|
|
11
11
|
resolveSimilarRequest(similarRequest: Request): Request;
|
|
@@ -11,7 +11,6 @@ export declare const OBJECT_HOME_SUPPORTED_ADAPTERS: Set<string>;
|
|
|
11
11
|
export declare class ObjectHomePage extends LexDefaultPage<ObjectHomePageRequest, ObjectHomePageContext> {
|
|
12
12
|
private requestStrategies;
|
|
13
13
|
private options;
|
|
14
|
-
similarContext: ObjectHomePageContext;
|
|
15
14
|
constructor(context: ObjectHomePageContext, requestStrategies: {
|
|
16
15
|
getListInfoByName: GetListInfoByNameRequestStrategy;
|
|
17
16
|
getListRecordsByName: GetListRecordsByNameRequestStrategy;
|
|
@@ -21,7 +20,7 @@ export declare class ObjectHomePage extends LexDefaultPage<ObjectHomePageRequest
|
|
|
21
20
|
}, options: LexPrefetcherOptions);
|
|
22
21
|
supportsRequest(request: LexRequest): boolean;
|
|
23
22
|
buildSaveRequestData(request: ObjectHomePageRequest): {
|
|
24
|
-
|
|
23
|
+
key: ObjectHomePageContext;
|
|
25
24
|
request: any;
|
|
26
25
|
}[];
|
|
27
26
|
resolveSimilarRequest(similarRequest: ObjectHomePageRequest): ObjectHomePageRequest;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { SaveRequestData } from '../common';
|
|
2
2
|
export declare abstract class PredictivePrefetchPage<Request, Context> {
|
|
3
|
-
context: Context;
|
|
4
|
-
similarContext
|
|
5
|
-
constructor(context: Context);
|
|
3
|
+
protected context: Context;
|
|
4
|
+
protected similarContext?: Context | undefined;
|
|
5
|
+
protected constructor(context: Context, similarContext?: Context | undefined);
|
|
6
6
|
abstract supportsRequest(request: Request): boolean;
|
|
7
7
|
abstract buildSaveRequestData(request: Request): SaveRequestData<Request, Context>[];
|
|
8
8
|
abstract resolveSimilarRequest(similarRequest: Request): Request;
|
|
9
9
|
abstract getAlwaysRunRequests(): Request[];
|
|
10
|
+
getExactKey(): Context;
|
|
11
|
+
getSimilarKey(): Context;
|
|
10
12
|
}
|
|
@@ -5,6 +5,7 @@ export declare const RECORD_HOME_SUPPORTED_ADAPTERS: Set<string>;
|
|
|
5
5
|
export type RecordHomePageContext = {
|
|
6
6
|
objectApiName: string;
|
|
7
7
|
recordId: string;
|
|
8
|
+
recordTypeId?: string;
|
|
8
9
|
actionName: string;
|
|
9
10
|
type: 'recordPage';
|
|
10
11
|
};
|
|
@@ -26,11 +27,11 @@ type RecordHomePageRequestStrategies = {
|
|
|
26
27
|
export declare class RecordHomePage extends LexDefaultPage<RecordHomePageRequest, RecordHomePageContext> {
|
|
27
28
|
private requestStrategies;
|
|
28
29
|
private options;
|
|
29
|
-
similarContext: RecordHomePageContext;
|
|
30
30
|
constructor(context: RecordHomePageContext, requestStrategies: RecordHomePageRequestStrategies, options: LexPrefetcherOptions);
|
|
31
31
|
supportsRequest(request: LexRequest): boolean;
|
|
32
|
+
getExactKey(): RecordHomePageContext;
|
|
32
33
|
buildSaveRequestData(request: RecordHomePageRequest): {
|
|
33
|
-
|
|
34
|
+
key: RecordHomePageContext;
|
|
34
35
|
request: any;
|
|
35
36
|
}[];
|
|
36
37
|
resolveSimilarRequest(similarRequest: RecordHomePageRequest): RecordHomePageRequest;
|
|
@@ -49,5 +50,6 @@ export declare class RecordHomePage extends LexDefaultPage<RecordHomePageRequest
|
|
|
49
50
|
*/
|
|
50
51
|
shouldExecuteAlwaysRequestByThemself(): boolean;
|
|
51
52
|
static handlesContext(context: LexContext): context is RecordHomePageContext;
|
|
53
|
+
static contextToExactKey(context: RecordHomePageContext): RecordHomePageContext;
|
|
52
54
|
}
|
|
53
55
|
export {};
|
|
@@ -27,7 +27,7 @@ export declare class LexPredictivePrefetcher extends ApplicationPredictivePrefet
|
|
|
27
27
|
private requestStrategies;
|
|
28
28
|
protected options: LexPrefetcherOptions;
|
|
29
29
|
page: LexDefaultPage<LexRequest, LexContext>;
|
|
30
|
-
constructor(context: LexContext, repository: PrefetchRepository
|
|
30
|
+
constructor(context: LexContext, repository: PrefetchRepository<LexRequest>, requestRunner: RequestRunner<LexRequest>, requestStrategies: {
|
|
31
31
|
getRecord: GetRecordRequestStrategy;
|
|
32
32
|
getRecords: GetRecordsRequestStrategy;
|
|
33
33
|
getRecordActions: GetRecordActionsRequestStrategy;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import type { PrefetchRepository } from '../repository';
|
|
2
2
|
import type { PredictivePrefetchPage } from '../pages';
|
|
3
3
|
import type { RequestRunner } from '../request-runner';
|
|
4
|
-
import type {
|
|
5
|
-
export declare abstract class ApplicationPredictivePrefetcher<Request, Context extends Record<string, any>> {
|
|
6
|
-
protected repository: PrefetchRepository
|
|
4
|
+
import type { BaseAdapterRequest } from '../request-strategy';
|
|
5
|
+
export declare abstract class ApplicationPredictivePrefetcher<Request extends BaseAdapterRequest, Context extends Record<string, any>> {
|
|
6
|
+
protected repository: PrefetchRepository<Request>;
|
|
7
7
|
protected requestRunner: RequestRunner<Request>;
|
|
8
8
|
private _context;
|
|
9
9
|
isRecording: boolean;
|
|
10
10
|
page: PredictivePrefetchPage<Request, Context>;
|
|
11
11
|
queuedPredictionRequests: Request[];
|
|
12
|
-
constructor(context: Context, repository: PrefetchRepository
|
|
12
|
+
constructor(context: Context, repository: PrefetchRepository<Request>, requestRunner: RequestRunner<Request>);
|
|
13
13
|
abstract getPage(): PredictivePrefetchPage<Request, Context>;
|
|
14
14
|
set context(value: Context);
|
|
15
15
|
get context(): Context;
|
|
@@ -22,6 +22,11 @@ export declare abstract class ApplicationPredictivePrefetcher<Request, Context e
|
|
|
22
22
|
similar: number;
|
|
23
23
|
};
|
|
24
24
|
hasPredictions(): boolean;
|
|
25
|
-
getSimilarPageRequests():
|
|
26
|
-
|
|
25
|
+
getSimilarPageRequests(): {
|
|
26
|
+
request: Request;
|
|
27
|
+
requestMetadata: {
|
|
28
|
+
requestTime: number;
|
|
29
|
+
};
|
|
30
|
+
}[];
|
|
31
|
+
getExactPageRequests(): import("../common").RequestEntry<Request>[];
|
|
27
32
|
}
|
|
@@ -7,23 +7,25 @@ export type History = {
|
|
|
7
7
|
};
|
|
8
8
|
export type PageEntry<Request> = {
|
|
9
9
|
id: string;
|
|
10
|
+
recordTypeId?: string;
|
|
10
11
|
requests: RequestEntry<Request>[];
|
|
11
12
|
};
|
|
12
|
-
export type PrefetchRepositoryOptions = {
|
|
13
|
-
modifyBeforeSaveHook?: (requests: RequestEntry<
|
|
13
|
+
export type PrefetchRepositoryOptions<Request> = {
|
|
14
|
+
modifyBeforeSaveHook?: (requests: RequestEntry<Request>[]) => RequestEntry<Request>[];
|
|
15
|
+
modifyPageBeforeSavingHook?: (page: PageEntry<Request>) => void;
|
|
14
16
|
};
|
|
15
|
-
export declare class PrefetchRepository {
|
|
17
|
+
export declare class PrefetchRepository<Request> {
|
|
16
18
|
private storage;
|
|
17
19
|
private options;
|
|
18
20
|
private requestBuffer;
|
|
19
|
-
constructor(storage: PrefetchStorage, options?: PrefetchRepositoryOptions);
|
|
21
|
+
constructor(storage: PrefetchStorage, options?: PrefetchRepositoryOptions<Request>);
|
|
20
22
|
clearRequestBuffer(): void;
|
|
21
23
|
pageStartTime: number;
|
|
22
24
|
markPageStart(): void;
|
|
23
25
|
flushRequestsToStorage(): Promise<void>;
|
|
24
26
|
getKeyId(key: Key): string;
|
|
25
27
|
saveRequest<Request>(key: Key, request: Request): void;
|
|
26
|
-
getPage
|
|
27
|
-
getPageRequests
|
|
28
|
+
getPage(key: Key): PageEntry<Request> | undefined;
|
|
29
|
+
getPageRequests(key: Key): RequestEntry<Request>[];
|
|
28
30
|
}
|
|
29
31
|
export {};
|
|
@@ -12,6 +12,7 @@ export declare class GetRelatedListInfoBatchRequestStrategy extends LuvioAdapter
|
|
|
12
12
|
adapterName: string;
|
|
13
13
|
adapterFactory: import("@luvio/engine").AdapterFactory<GetRelatedListInfoBatchConfig, import("packages/lds-adapters-uiapi/dist/es/es2018/types/src/generated/types/RelatedListInfoBatchRepresentation").RelatedListInfoBatchRepresentation>;
|
|
14
14
|
buildConcreteRequest(similarRequest: GetRelatedListInfoBatchRequest, _context: GetRelatedListInfoBatchContext): GetRelatedListInfoBatchRequest;
|
|
15
|
+
isContextDependent(context: GetRelatedListInfoBatchContext, request: GetRelatedListInfoBatchRequest): boolean;
|
|
15
16
|
canCombine(reqA: GetRelatedListInfoBatchConfig, reqB: GetRelatedListInfoBatchConfig): boolean;
|
|
16
17
|
combineRequests(reqA: GetRelatedListInfoBatchConfig, reqB: GetRelatedListInfoBatchConfig): GetRelatedListInfoBatchConfig;
|
|
17
18
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salesforce/lds-runtime-aura",
|
|
3
|
-
"version": "1.309.0-
|
|
3
|
+
"version": "1.309.0-dev18",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
5
5
|
"description": "LDS engine for Aura runtime",
|
|
6
6
|
"main": "dist/ldsEngineCreator.js",
|
|
@@ -35,15 +35,15 @@
|
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@luvio/service-broker": "5.3.2-dev2",
|
|
38
|
-
"@salesforce/lds-adapters-apex": "^1.309.0-
|
|
39
|
-
"@salesforce/lds-adapters-uiapi": "^1.309.0-
|
|
38
|
+
"@salesforce/lds-adapters-apex": "^1.309.0-dev18",
|
|
39
|
+
"@salesforce/lds-adapters-uiapi": "^1.309.0-dev18",
|
|
40
40
|
"@salesforce/lds-adapters-uiapi-lex": "^1.302.0",
|
|
41
|
-
"@salesforce/lds-ads-bridge": "^1.309.0-
|
|
42
|
-
"@salesforce/lds-aura-storage": "^1.309.0-
|
|
43
|
-
"@salesforce/lds-bindings": "^1.309.0-
|
|
44
|
-
"@salesforce/lds-instrumentation": "^1.309.0-
|
|
45
|
-
"@salesforce/lds-network-aura": "^1.309.0-
|
|
46
|
-
"@salesforce/lds-network-fetch-with-jwt": "^1.309.0-
|
|
41
|
+
"@salesforce/lds-ads-bridge": "^1.309.0-dev18",
|
|
42
|
+
"@salesforce/lds-aura-storage": "^1.309.0-dev18",
|
|
43
|
+
"@salesforce/lds-bindings": "^1.309.0-dev18",
|
|
44
|
+
"@salesforce/lds-instrumentation": "^1.309.0-dev18",
|
|
45
|
+
"@salesforce/lds-network-aura": "^1.309.0-dev18",
|
|
46
|
+
"@salesforce/lds-network-fetch-with-jwt": "^1.309.0-dev18"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
49
|
"@luvio/command-aura-network": "5.3.2-dev2",
|
|
@@ -64,15 +64,15 @@
|
|
|
64
64
|
"@luvio/service-subscription": "5.3.2-dev2",
|
|
65
65
|
"@luvio/service-type-registry": "5.3.2-dev2",
|
|
66
66
|
"@luvio/utils": "5.3.2-dev2",
|
|
67
|
-
"@salesforce/lds-adapters-uiapi-lex": "^1.309.0-
|
|
67
|
+
"@salesforce/lds-adapters-uiapi-lex": "^1.309.0-dev18"
|
|
68
68
|
},
|
|
69
69
|
"luvioBundlesize": [
|
|
70
70
|
{
|
|
71
71
|
"path": "./dist/ldsEngineCreator.js",
|
|
72
72
|
"maxSize": {
|
|
73
|
-
"none": "
|
|
73
|
+
"none": "179.1 kB",
|
|
74
74
|
"min": "75 kB",
|
|
75
|
-
"compressed": "32 kB"
|
|
75
|
+
"compressed": "32.1 kB"
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
],
|