@salesforce/lds-runtime-aura 1.410.0 → 1.411.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/ldsEngineCreator.js +286 -193
- package/dist/types/fetch-service-descriptors/lex-fetch-service.d.ts +1 -2
- package/dist/types/main.d.ts +9 -2
- package/dist/types/predictive-loading/prefetcher/events.d.ts +25 -0
- package/dist/types/predictive-loading/prefetcher/index.d.ts +2 -0
- package/dist/types/predictive-loading/prefetcher/lex-predictive-prefetcher.d.ts +2 -1
- package/dist/types/predictive-loading/prefetcher/predictive-prefetcher.d.ts +4 -1
- package/dist/types/retry-interceptors/csrf-retry.d.ts +2 -0
- package/package.json +39 -39
package/dist/ldsEngineCreator.js
CHANGED
|
@@ -18,7 +18,6 @@ import usePredictiveLoading from '@salesforce/gate/lds.usePredictiveLoading';
|
|
|
18
18
|
import useApexPredictions from '@salesforce/gate/lds.pdl.useApexPredictions';
|
|
19
19
|
import useRelatedListsPredictions from '@salesforce/gate/lds.pdl.useRelatedListsPredictions';
|
|
20
20
|
import useRelatedListPlus from '@salesforce/gate/lds.pdl.useRelatedListPlus';
|
|
21
|
-
import useCmpDefPredictions from '@salesforce/gate/lds.pdl.useCmpDefPredictions';
|
|
22
21
|
import applyPredictionRequestLimit from '@salesforce/gate/lds.pdl.applyRequestLimit';
|
|
23
22
|
import useLocalStorage from '@salesforce/gate/lds.pdl.useLocalStorage';
|
|
24
23
|
import useOneStoreGraphql from '@salesforce/gate/lds.oneStoreGraphqlEnabled.ltng';
|
|
@@ -476,7 +475,12 @@ class AuraNetworkCommand extends NetworkCommand$1 {
|
|
|
476
475
|
this.coerceAuraErrors
|
|
477
476
|
);
|
|
478
477
|
} else if (this.shouldUseFetch()) {
|
|
479
|
-
|
|
478
|
+
const params = this.fetchParams;
|
|
479
|
+
try {
|
|
480
|
+
return this.convertFetchResponseToData(this.services.fetch(...params));
|
|
481
|
+
} catch (reason) {
|
|
482
|
+
return resolvedPromiseLike$2(err$1(toError(reason)));
|
|
483
|
+
}
|
|
480
484
|
}
|
|
481
485
|
return resolvedPromiseLike$2(err$1(toError("Aura/Fetch network services not found")));
|
|
482
486
|
}
|
|
@@ -1074,7 +1078,12 @@ let AuraCacheControlCommand$1 = class AuraCacheControlCommand extends CacheContr
|
|
|
1074
1078
|
(errs) => this.coerceAuraErrors(errs)
|
|
1075
1079
|
);
|
|
1076
1080
|
} else if (this.shouldUseFetch()) {
|
|
1077
|
-
|
|
1081
|
+
const params = this.fetchParams;
|
|
1082
|
+
try {
|
|
1083
|
+
return this.convertFetchResponseToData(this.services.fetch(...params));
|
|
1084
|
+
} catch (reason) {
|
|
1085
|
+
return resolvedPromiseLike$2(err$1(toError(reason)));
|
|
1086
|
+
}
|
|
1078
1087
|
}
|
|
1079
1088
|
return resolvedPromiseLike$2(err$1(toError("Aura/Fetch network services not found")));
|
|
1080
1089
|
}
|
|
@@ -1217,7 +1226,12 @@ class AuraCacheControlCommand extends CacheControlCommand {
|
|
|
1217
1226
|
(errs) => this.coerceAuraErrors(errs)
|
|
1218
1227
|
);
|
|
1219
1228
|
} else if (this.shouldUseFetch()) {
|
|
1220
|
-
|
|
1229
|
+
const params = this.fetchParams;
|
|
1230
|
+
try {
|
|
1231
|
+
return this.convertFetchResponseToData(this.services.fetch(...params));
|
|
1232
|
+
} catch (reason) {
|
|
1233
|
+
return resolvedPromiseLike$2(err$1(toError(reason)));
|
|
1234
|
+
}
|
|
1221
1235
|
}
|
|
1222
1236
|
return resolvedPromiseLike$2(err$1(toError("Aura/Fetch network services not found")));
|
|
1223
1237
|
}
|
|
@@ -1335,7 +1349,11 @@ class HttpCacheControlCommand extends CacheControlCommand {
|
|
|
1335
1349
|
return this.fetch();
|
|
1336
1350
|
}
|
|
1337
1351
|
fetch() {
|
|
1338
|
-
|
|
1352
|
+
try {
|
|
1353
|
+
return this.convertFetchResponseToData(this.services.fetch(...this.fetchParams));
|
|
1354
|
+
} catch (reason) {
|
|
1355
|
+
return resolvedPromiseLike$2(err$1(toError(reason)));
|
|
1356
|
+
}
|
|
1339
1357
|
}
|
|
1340
1358
|
async coerceError(errorResponse) {
|
|
1341
1359
|
return toError(errorResponse.statusText);
|
|
@@ -1538,7 +1556,11 @@ const _FetchNetworkCommand = class _FetchNetworkCommand extends NetworkCommand {
|
|
|
1538
1556
|
this.services = services;
|
|
1539
1557
|
}
|
|
1540
1558
|
fetch() {
|
|
1541
|
-
|
|
1559
|
+
try {
|
|
1560
|
+
return this.convertFetchResponseToData(this.services.fetch(...this.fetchParams));
|
|
1561
|
+
} catch (reason) {
|
|
1562
|
+
return resolvedPromiseLike$2(err$1(toError(reason)));
|
|
1563
|
+
}
|
|
1542
1564
|
}
|
|
1543
1565
|
async coerceError(errorResponse) {
|
|
1544
1566
|
return toError(errorResponse.statusText);
|
|
@@ -1594,7 +1616,11 @@ class StreamingCommand extends BaseCommand {
|
|
|
1594
1616
|
this.services = services;
|
|
1595
1617
|
}
|
|
1596
1618
|
execute() {
|
|
1597
|
-
|
|
1619
|
+
try {
|
|
1620
|
+
return this.convertFetchStreamResponseToData(this.services.fetch(...this.fetchParams));
|
|
1621
|
+
} catch (reason) {
|
|
1622
|
+
return resolvedPromiseLike$2(err$1(toError(reason)));
|
|
1623
|
+
}
|
|
1598
1624
|
}
|
|
1599
1625
|
convertFetchStreamResponseToData(response) {
|
|
1600
1626
|
return response.then(
|
|
@@ -2430,9 +2456,13 @@ class OnlyIfCachedCacheControlStrategy extends CacheControlStrategy {
|
|
|
2430
2456
|
}
|
|
2431
2457
|
get expiredChecks() {
|
|
2432
2458
|
return [
|
|
2433
|
-
|
|
2459
|
+
...super.expiredChecks,
|
|
2460
|
+
(cacheControlMetadata) => cacheControlMetadata.type === "no-cache"
|
|
2434
2461
|
];
|
|
2435
2462
|
}
|
|
2463
|
+
// Note: If we add support for `stale-while-revalidate` in the future, we may
|
|
2464
|
+
// need to further override expiredChecks to allow stale entries that are within the
|
|
2465
|
+
// stale-while-revalidate window to be returned for only-if-cached requests.
|
|
2436
2466
|
collectCacheHitInstrumentation(startTime, instrumentationAttributes) {
|
|
2437
2467
|
if (this.services.instrumentation) {
|
|
2438
2468
|
const meter = this.services.instrumentation.metrics.getMeter("onestore");
|
|
@@ -2672,7 +2702,7 @@ function buildServiceDescriptor$d(luvio) {
|
|
|
2672
2702
|
},
|
|
2673
2703
|
};
|
|
2674
2704
|
}
|
|
2675
|
-
// version: 1.
|
|
2705
|
+
// version: 1.411.0-8fa163ef05
|
|
2676
2706
|
|
|
2677
2707
|
/*!
|
|
2678
2708
|
* Copyright (c) 2022, Salesforce, Inc.,
|
|
@@ -2788,11 +2818,26 @@ class AuraGraphQLNormalizedCacheControlCommand extends AuraNormalizedCacheContro
|
|
|
2788
2818
|
return buildSubscribableResult$1(result, this.buildSubscribe(), () => this.refresh());
|
|
2789
2819
|
});
|
|
2790
2820
|
} else if (this.shouldUseFetch()) {
|
|
2791
|
-
|
|
2792
|
-
|
|
2793
|
-
|
|
2794
|
-
|
|
2795
|
-
|
|
2821
|
+
const params = this.originalFetchParams;
|
|
2822
|
+
try {
|
|
2823
|
+
return this.convertFetchResponseToData(this.services.fetch(...params)).then(
|
|
2824
|
+
(result) => {
|
|
2825
|
+
return buildSubscribableResult$1(
|
|
2826
|
+
result,
|
|
2827
|
+
this.buildSubscribe(),
|
|
2828
|
+
() => this.refresh()
|
|
2829
|
+
);
|
|
2830
|
+
}
|
|
2831
|
+
);
|
|
2832
|
+
} catch (reason) {
|
|
2833
|
+
return resolvedPromiseLike$2(
|
|
2834
|
+
buildSubscribableResult$1(
|
|
2835
|
+
err$1(toError(reason)),
|
|
2836
|
+
this.buildSubscribe(),
|
|
2837
|
+
() => this.refresh()
|
|
2838
|
+
)
|
|
2839
|
+
);
|
|
2840
|
+
}
|
|
2796
2841
|
}
|
|
2797
2842
|
return resolvedPromiseLike$2(
|
|
2798
2843
|
buildSubscribableResult$1(
|
|
@@ -3010,7 +3055,7 @@ function buildServiceDescriptor$9(notifyRecordUpdateAvailable, getNormalizedLuvi
|
|
|
3010
3055
|
},
|
|
3011
3056
|
};
|
|
3012
3057
|
}
|
|
3013
|
-
// version: 1.
|
|
3058
|
+
// version: 1.411.0-8fa163ef05
|
|
3014
3059
|
|
|
3015
3060
|
/*!
|
|
3016
3061
|
* Copyright (c) 2022, Salesforce, Inc.,
|
|
@@ -3561,7 +3606,7 @@ class GraphQLLegacyImperativeBindingsService {
|
|
|
3561
3606
|
return { invoke, subscribe };
|
|
3562
3607
|
}
|
|
3563
3608
|
}
|
|
3564
|
-
function buildServiceDescriptor$1$
|
|
3609
|
+
function buildServiceDescriptor$1$2() {
|
|
3565
3610
|
return {
|
|
3566
3611
|
type: "graphQLLegacyImperativeBindings",
|
|
3567
3612
|
version: "1.0",
|
|
@@ -3838,7 +3883,7 @@ class LWCWireBindingsService {
|
|
|
3838
3883
|
};
|
|
3839
3884
|
}
|
|
3840
3885
|
}
|
|
3841
|
-
function buildServiceDescriptor$1() {
|
|
3886
|
+
function buildServiceDescriptor$1$1() {
|
|
3842
3887
|
return {
|
|
3843
3888
|
type: "lwcWireBindings",
|
|
3844
3889
|
version: "1.0",
|
|
@@ -3951,7 +3996,7 @@ function createLockerCompatibleWireConstructor(DelegateCtor) {
|
|
|
3951
3996
|
return Constructor;
|
|
3952
3997
|
}
|
|
3953
3998
|
function buildLWCWireBindingsServiceDescriptor() {
|
|
3954
|
-
const base = buildServiceDescriptor$1();
|
|
3999
|
+
const base = buildServiceDescriptor$1$1();
|
|
3955
4000
|
const originalBind = base.service.bind.bind(base.service);
|
|
3956
4001
|
const bind = (...args) => {
|
|
3957
4002
|
const ctor = originalBind(...args);
|
|
@@ -4276,6 +4321,53 @@ class JwtManager {
|
|
|
4276
4321
|
* All rights reserved.
|
|
4277
4322
|
* For full license text, see the LICENSE.txt file
|
|
4278
4323
|
*/
|
|
4324
|
+
function buildServiceDescriptor$1(interceptors = {
|
|
4325
|
+
request: [],
|
|
4326
|
+
retry: void 0,
|
|
4327
|
+
response: [],
|
|
4328
|
+
finally: []
|
|
4329
|
+
}, retryService) {
|
|
4330
|
+
return {
|
|
4331
|
+
type: "fetch",
|
|
4332
|
+
version: "1.0",
|
|
4333
|
+
service: function(...args) {
|
|
4334
|
+
var _a;
|
|
4335
|
+
const context = (_a = interceptors.createContext) == null ? void 0 : _a.call(interceptors);
|
|
4336
|
+
const {
|
|
4337
|
+
request: requestInterceptors = [],
|
|
4338
|
+
retry: retryInterceptor = void 0,
|
|
4339
|
+
response: responseInterceptors = [],
|
|
4340
|
+
finally: finallyInterceptors = []
|
|
4341
|
+
} = interceptors;
|
|
4342
|
+
const pending = requestInterceptors.reduce(
|
|
4343
|
+
(previousPromise, interceptor) => previousPromise.then((args2) => interceptor(args2, context)),
|
|
4344
|
+
resolvedPromiseLike$2(args)
|
|
4345
|
+
);
|
|
4346
|
+
return Promise.resolve(pending).then((args2) => {
|
|
4347
|
+
if (retryInterceptor) {
|
|
4348
|
+
return retryInterceptor(args2, retryService, context);
|
|
4349
|
+
} else {
|
|
4350
|
+
if (retryService) {
|
|
4351
|
+
return retryService.applyRetry(() => fetch(...args2));
|
|
4352
|
+
}
|
|
4353
|
+
return fetch(...args2);
|
|
4354
|
+
}
|
|
4355
|
+
}).then((response) => {
|
|
4356
|
+
return responseInterceptors.reduce(
|
|
4357
|
+
(previousPromise, interceptor) => previousPromise.then((response2) => interceptor(response2, context)),
|
|
4358
|
+
resolvedPromiseLike$2(response)
|
|
4359
|
+
);
|
|
4360
|
+
}).finally(() => {
|
|
4361
|
+
if (finallyInterceptors.length > 0) {
|
|
4362
|
+
return finallyInterceptors.reduce(
|
|
4363
|
+
(previousPromise, interceptor) => previousPromise.then(() => interceptor(context)),
|
|
4364
|
+
Promise.resolve()
|
|
4365
|
+
);
|
|
4366
|
+
}
|
|
4367
|
+
});
|
|
4368
|
+
}
|
|
4369
|
+
};
|
|
4370
|
+
}
|
|
4279
4371
|
function setHeader(headerName, headerValue, [resource, options = {}], {
|
|
4280
4372
|
throwOnExisting = false,
|
|
4281
4373
|
errorMessage = `Unexpected ${headerName} header encountered`
|
|
@@ -4713,7 +4805,7 @@ function getEnvironmentSetting(name) {
|
|
|
4713
4805
|
}
|
|
4714
4806
|
return undefined;
|
|
4715
4807
|
}
|
|
4716
|
-
// version: 1.
|
|
4808
|
+
// version: 1.411.0-8fa163ef05
|
|
4717
4809
|
|
|
4718
4810
|
/**
|
|
4719
4811
|
* Observability / Critical Availability Program (230+)
|
|
@@ -6109,41 +6201,6 @@ function createStartMark(requestId) {
|
|
|
6109
6201
|
};
|
|
6110
6202
|
}
|
|
6111
6203
|
|
|
6112
|
-
function buildPageScopedCacheRequestInterceptor() {
|
|
6113
|
-
return async (fetchArgs) => {
|
|
6114
|
-
const pageScopedCacheHeaders = {};
|
|
6115
|
-
// Allow the instrumentation util to set up the header value on our "dummy" header object
|
|
6116
|
-
pageScopedCache.addHeader(pageScopedCacheHeaders);
|
|
6117
|
-
let returnedFetchArgs = fetchArgs;
|
|
6118
|
-
// If it set a value, add it to our fetchParams
|
|
6119
|
-
Object.entries(pageScopedCacheHeaders).forEach(([key, value]) => {
|
|
6120
|
-
returnedFetchArgs = setHeader(key, value, returnedFetchArgs);
|
|
6121
|
-
});
|
|
6122
|
-
return resolvedPromiseLike$2(returnedFetchArgs);
|
|
6123
|
-
};
|
|
6124
|
-
}
|
|
6125
|
-
|
|
6126
|
-
const SFDC_REQUEST_ID_KEY = 'X-SFDC-Request-Id';
|
|
6127
|
-
function buildTransportMarksSendInterceptor() {
|
|
6128
|
-
return async (fetchArgs, context) => {
|
|
6129
|
-
// First set the requestId header. If there's not context, it means we won't be able to track the mark and something is hosed, and so not worth even trying
|
|
6130
|
-
if (context && context.instrumentationId) {
|
|
6131
|
-
const requestId = context.instrumentationId;
|
|
6132
|
-
fetchArgs = setHeader(SFDC_REQUEST_ID_KEY, requestId, fetchArgs);
|
|
6133
|
-
createStartMark(requestId);
|
|
6134
|
-
}
|
|
6135
|
-
return resolvedPromiseLike$2(fetchArgs);
|
|
6136
|
-
};
|
|
6137
|
-
}
|
|
6138
|
-
|
|
6139
|
-
function buildTransportMarksReceiveInterceptor() {
|
|
6140
|
-
return async (context) => {
|
|
6141
|
-
if (context && context.instrumentationId) {
|
|
6142
|
-
markEnd('transport', 'request', { auraXHRId: context.instrumentationId });
|
|
6143
|
-
}
|
|
6144
|
-
};
|
|
6145
|
-
}
|
|
6146
|
-
|
|
6147
6204
|
const DEFAULT_CONFIG$1 = {
|
|
6148
6205
|
maxRetries: 1, // Only retry once after token refresh
|
|
6149
6206
|
};
|
|
@@ -6245,95 +6302,30 @@ async function isCsrfError(response) {
|
|
|
6245
6302
|
}
|
|
6246
6303
|
}
|
|
6247
6304
|
|
|
6248
|
-
function
|
|
6249
|
-
|
|
6250
|
-
|
|
6251
|
-
|
|
6252
|
-
|
|
6253
|
-
|
|
6254
|
-
|
|
6255
|
-
|
|
6256
|
-
|
|
6257
|
-
|
|
6258
|
-
|
|
6259
|
-
|
|
6260
|
-
|
|
6261
|
-
|
|
6262
|
-
|
|
6263
|
-
|
|
6264
|
-
],
|
|
6265
|
-
}, retryService);
|
|
6266
|
-
return {
|
|
6267
|
-
...fetchService,
|
|
6268
|
-
};
|
|
6269
|
-
}
|
|
6270
|
-
function buildLexRuntimeAllow5xxFetchServiceDescriptor(logger, retryService) {
|
|
6271
|
-
const fetchService = buildLexConnectFetchServiceDescriptor({
|
|
6272
|
-
createContext: createInstrumentationIdContext(),
|
|
6273
|
-
request: [
|
|
6274
|
-
buildThirdPartyTrackerRegisterInterceptor(),
|
|
6275
|
-
buildPageScopedCacheRequestInterceptor(),
|
|
6276
|
-
buildTransportMarksSendInterceptor(),
|
|
6277
|
-
buildCsrfTokenInterceptor(),
|
|
6278
|
-
],
|
|
6279
|
-
response: [buildLexRuntimeAuthExpirationRedirectResponseInterceptor(logger)],
|
|
6280
|
-
finally: [
|
|
6281
|
-
buildTransportMarksReceiveInterceptor(),
|
|
6282
|
-
buildThirdPartyTrackerFinishInterceptor(),
|
|
6283
|
-
],
|
|
6284
|
-
}, retryService);
|
|
6285
|
-
return {
|
|
6286
|
-
...fetchService,
|
|
6287
|
-
tags: { interceptors: 'allow_500s' },
|
|
6288
|
-
};
|
|
6289
|
-
}
|
|
6290
|
-
// Temporarily cloned from conduit fetch until the retry service is updated there
|
|
6291
|
-
function buildLexConnectFetchServiceDescriptor(interceptors = { request: [], response: [], finally: [] }, retryService) {
|
|
6292
|
-
return {
|
|
6293
|
-
type: 'fetch',
|
|
6294
|
-
version: '1.0',
|
|
6295
|
-
service: function (...args) {
|
|
6296
|
-
// Create context per request if factory is provided
|
|
6297
|
-
const context = interceptors.createContext?.();
|
|
6298
|
-
const { request: requestInterceptors = [], response: responseInterceptors = [], finally: finallyInterceptors = [], } = interceptors;
|
|
6299
|
-
const pending = requestInterceptors.reduce((previousPromise, interceptor) => previousPromise.then((args) => interceptor(args, context)), resolvedPromiseLike$2(args));
|
|
6300
|
-
return Promise.resolve(pending)
|
|
6301
|
-
.then((interceptedArgs) => {
|
|
6302
|
-
if (retryService) {
|
|
6303
|
-
// Create mutable context for CSRF retry policy
|
|
6304
|
-
const mutableRequest = { args: interceptedArgs };
|
|
6305
|
-
// Pass context to CSRF policy if it's being used
|
|
6306
|
-
const policy = retryService.defaultRetryPolicy;
|
|
6307
|
-
// Handle both direct CSRF policy and composed policy
|
|
6308
|
-
if (policy instanceof CsrfTokenRetryPolicy) {
|
|
6309
|
-
policy.setRequestContext(mutableRequest);
|
|
6310
|
-
}
|
|
6311
|
-
else if (policy instanceof ComposedRetryPolicy) {
|
|
6312
|
-
// Extract CSRF policy from composed policy
|
|
6313
|
-
const csrfPolicy = policy.getPolicyByType(CsrfTokenRetryPolicy);
|
|
6314
|
-
if (csrfPolicy) {
|
|
6315
|
-
csrfPolicy.setRequestContext(mutableRequest);
|
|
6316
|
-
}
|
|
6317
|
-
}
|
|
6318
|
-
// Retry service will call prepareRetry hook which updates mutableRequest.args
|
|
6319
|
-
return retryService.applyRetry(async () => {
|
|
6320
|
-
return await fetch(...mutableRequest.args);
|
|
6321
|
-
});
|
|
6322
|
-
}
|
|
6323
|
-
return fetch(...interceptedArgs);
|
|
6324
|
-
})
|
|
6325
|
-
.then((response) => {
|
|
6326
|
-
// Success path - run response interceptors
|
|
6327
|
-
return responseInterceptors.reduce((previousPromise, interceptor) => previousPromise.then((response) => interceptor(response, context)), resolvedPromiseLike$2(response));
|
|
6328
|
-
})
|
|
6329
|
-
.finally(() => {
|
|
6330
|
-
// Always run finally interceptors for cleanup
|
|
6331
|
-
if (finallyInterceptors.length > 0) {
|
|
6332
|
-
// Run all finally interceptors sequentially
|
|
6333
|
-
return finallyInterceptors.reduce((previousPromise, interceptor) => previousPromise.then(() => interceptor(context)), Promise.resolve());
|
|
6305
|
+
function buildCsrfRetryInterceptor() {
|
|
6306
|
+
return async (fetchArgs, retryService, context) => {
|
|
6307
|
+
if (retryService) {
|
|
6308
|
+
// Create mutable context for CSRF retry policy
|
|
6309
|
+
const mutableRequest = { args: fetchArgs };
|
|
6310
|
+
// Pass context to CSRF policy if it's being used
|
|
6311
|
+
const policy = retryService.defaultRetryPolicy;
|
|
6312
|
+
// Handle both direct CSRF policy and composed policy
|
|
6313
|
+
if (policy instanceof CsrfTokenRetryPolicy) {
|
|
6314
|
+
policy.setRequestContext(mutableRequest);
|
|
6315
|
+
}
|
|
6316
|
+
else if (policy instanceof ComposedRetryPolicy) {
|
|
6317
|
+
// Extract CSRF policy from composed policy
|
|
6318
|
+
const csrfPolicy = policy.getPolicyByType(CsrfTokenRetryPolicy);
|
|
6319
|
+
if (csrfPolicy) {
|
|
6320
|
+
csrfPolicy.setRequestContext(mutableRequest);
|
|
6334
6321
|
}
|
|
6322
|
+
}
|
|
6323
|
+
// Retry service will call prepareRetry hook which updates mutableRequest.args
|
|
6324
|
+
return retryService.applyRetry(async () => {
|
|
6325
|
+
return await fetch(...mutableRequest.args);
|
|
6335
6326
|
});
|
|
6336
|
-
}
|
|
6327
|
+
}
|
|
6328
|
+
return fetch(...fetchArgs);
|
|
6337
6329
|
};
|
|
6338
6330
|
}
|
|
6339
6331
|
|
|
@@ -6341,9 +6333,10 @@ const SFAP_BASE_URL = 'api.salesforce.com';
|
|
|
6341
6333
|
const sfapJwtRepository = new JwtRepository();
|
|
6342
6334
|
const sfapJwtManager = new JwtManager(sfapJwtRepository, platformSfapJwtResolver);
|
|
6343
6335
|
function buildJwtAuthorizedSfapFetchServiceDescriptor(logger) {
|
|
6344
|
-
const jwtAuthorizedFetchService =
|
|
6336
|
+
const jwtAuthorizedFetchService = buildServiceDescriptor$1({
|
|
6345
6337
|
createContext: createInstrumentationIdContext(),
|
|
6346
6338
|
request: [buildThirdPartyTrackerRegisterInterceptor(), buildJwtRequestInterceptor(logger)],
|
|
6339
|
+
retry: buildCsrfRetryInterceptor(),
|
|
6347
6340
|
finally: [buildThirdPartyTrackerFinishInterceptor()],
|
|
6348
6341
|
});
|
|
6349
6342
|
return {
|
|
@@ -6362,7 +6355,7 @@ function buildCopilotFetchServiceDescriptor(logger) {
|
|
|
6362
6355
|
// we switch to JWT authentication this will need to change to incorporate the
|
|
6363
6356
|
// Interceptor here with the logic in buildJwtAuthorizedSfapFetchServiceDescriptor()
|
|
6364
6357
|
// above.
|
|
6365
|
-
...
|
|
6358
|
+
...buildServiceDescriptor$1({
|
|
6366
6359
|
createContext: createInstrumentationIdContext(),
|
|
6367
6360
|
request: [
|
|
6368
6361
|
buildThirdPartyTrackerRegisterInterceptor(),
|
|
@@ -6405,15 +6398,17 @@ function buildCopilotFetchServiceDescriptor(logger) {
|
|
|
6405
6398
|
},
|
|
6406
6399
|
buildJwtRequestInterceptor(logger),
|
|
6407
6400
|
],
|
|
6401
|
+
retry: buildCsrfRetryInterceptor(),
|
|
6408
6402
|
finally: [buildThirdPartyTrackerFinishInterceptor()],
|
|
6409
6403
|
}),
|
|
6410
6404
|
tags: { specialHacksFor: 'copilot' },
|
|
6411
6405
|
};
|
|
6412
6406
|
}
|
|
6413
6407
|
function buildUnauthorizedFetchServiceDescriptor() {
|
|
6414
|
-
const fetchService =
|
|
6408
|
+
const fetchService = buildServiceDescriptor$1({
|
|
6415
6409
|
createContext: createInstrumentationIdContext(),
|
|
6416
6410
|
request: [buildThirdPartyTrackerRegisterInterceptor()],
|
|
6411
|
+
retry: buildCsrfRetryInterceptor(),
|
|
6417
6412
|
finally: [buildThirdPartyTrackerFinishInterceptor()],
|
|
6418
6413
|
});
|
|
6419
6414
|
return {
|
|
@@ -8131,10 +8126,45 @@ class ObjectHomePage extends AbstractHomePage {
|
|
|
8131
8126
|
}
|
|
8132
8127
|
}
|
|
8133
8128
|
|
|
8129
|
+
var PdlPrefetcherEventType;
|
|
8130
|
+
(function (PdlPrefetcherEventType) {
|
|
8131
|
+
PdlPrefetcherEventType["STARTED_RECORDING"] = "started-recording";
|
|
8132
|
+
PdlPrefetcherEventType["STOPPED_RECORDING"] = "stopped-recording";
|
|
8133
|
+
})(PdlPrefetcherEventType || (PdlPrefetcherEventType = {}));
|
|
8134
|
+
class PrefetcherEventEmitter {
|
|
8135
|
+
constructor() {
|
|
8136
|
+
this.listeners = new Map();
|
|
8137
|
+
}
|
|
8138
|
+
subscribeTo(type, listener) {
|
|
8139
|
+
const typeListeners = this.listeners.get(type) ?? [];
|
|
8140
|
+
typeListeners.push(listener);
|
|
8141
|
+
this.listeners.set(type, typeListeners);
|
|
8142
|
+
return () => {
|
|
8143
|
+
const currentListeners = this.listeners.get(type) ?? [];
|
|
8144
|
+
this.listeners.set(type, currentListeners.filter((l) => l !== listener));
|
|
8145
|
+
};
|
|
8146
|
+
}
|
|
8147
|
+
emit(event) {
|
|
8148
|
+
const typeListeners = this.listeners.get(event.type) ?? [];
|
|
8149
|
+
typeListeners.forEach((listener) => {
|
|
8150
|
+
try {
|
|
8151
|
+
listener(event);
|
|
8152
|
+
}
|
|
8153
|
+
catch (error) {
|
|
8154
|
+
// swallow errors in production.
|
|
8155
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
8156
|
+
throw error;
|
|
8157
|
+
}
|
|
8158
|
+
}
|
|
8159
|
+
});
|
|
8160
|
+
}
|
|
8161
|
+
}
|
|
8162
|
+
|
|
8134
8163
|
class ApplicationPredictivePrefetcher {
|
|
8135
|
-
constructor(context, repository, requestRunner) {
|
|
8164
|
+
constructor(context, repository, requestRunner, eventEmitter) {
|
|
8136
8165
|
this.repository = repository;
|
|
8137
8166
|
this.requestRunner = requestRunner;
|
|
8167
|
+
this.eventEmitter = eventEmitter;
|
|
8138
8168
|
this.isRecording = false;
|
|
8139
8169
|
this.totalRequestCount = 0;
|
|
8140
8170
|
this.queuedPredictionRequests = [];
|
|
@@ -8148,15 +8178,26 @@ class ApplicationPredictivePrefetcher {
|
|
|
8148
8178
|
get context() {
|
|
8149
8179
|
return this._context;
|
|
8150
8180
|
}
|
|
8181
|
+
subscribeToEvent(type, callback) {
|
|
8182
|
+
return this.eventEmitter.subscribeTo(type, callback);
|
|
8183
|
+
}
|
|
8151
8184
|
async stopRecording() {
|
|
8152
8185
|
this.isRecording = false;
|
|
8153
8186
|
this.totalRequestCount = 0;
|
|
8154
8187
|
await this.repository.flushRequestsToStorage();
|
|
8188
|
+
this.eventEmitter.emit({
|
|
8189
|
+
type: PdlPrefetcherEventType.STOPPED_RECORDING,
|
|
8190
|
+
page: this.page,
|
|
8191
|
+
});
|
|
8155
8192
|
}
|
|
8156
8193
|
startRecording() {
|
|
8157
8194
|
this.isRecording = true;
|
|
8158
8195
|
this.repository.markPageStart();
|
|
8159
8196
|
this.repository.clearRequestBuffer();
|
|
8197
|
+
this.eventEmitter.emit({
|
|
8198
|
+
type: PdlPrefetcherEventType.STARTED_RECORDING,
|
|
8199
|
+
page: this.page,
|
|
8200
|
+
});
|
|
8160
8201
|
}
|
|
8161
8202
|
saveRequest(request) {
|
|
8162
8203
|
if (!this.isRecording) {
|
|
@@ -8339,11 +8380,11 @@ function predictNonBoxcarableRequest(nonBoxcaredPredictions, requestRunner) {
|
|
|
8339
8380
|
const DEFAULT_RECORD_TYPE_ID = '012000000000000AAA';
|
|
8340
8381
|
const AURA_BOXCAR_THREADS_THRESHOLD = 3;
|
|
8341
8382
|
class LexPredictivePrefetcher extends ApplicationPredictivePrefetcher {
|
|
8342
|
-
constructor(context, repository, requestRunner,
|
|
8383
|
+
constructor(context, repository, requestRunner, eventEmitter,
|
|
8343
8384
|
// These strategies need to be in sync with the "predictiveDataLoadCapable" list
|
|
8344
8385
|
// from scripts/lds-uiapi-plugin.js
|
|
8345
8386
|
requestStrategyManager, options) {
|
|
8346
|
-
super(context, repository, requestRunner);
|
|
8387
|
+
super(context, repository, requestRunner, eventEmitter);
|
|
8347
8388
|
this.options = options;
|
|
8348
8389
|
this.requestStrategyManager = requestStrategyManager;
|
|
8349
8390
|
this.page = this.getPage();
|
|
@@ -9193,6 +9234,86 @@ function buildInMemoryCacheInclusionPolicyService(cache) {
|
|
|
9193
9234
|
};
|
|
9194
9235
|
}
|
|
9195
9236
|
|
|
9237
|
+
function buildPageScopedCacheRequestInterceptor() {
|
|
9238
|
+
return async (fetchArgs) => {
|
|
9239
|
+
const pageScopedCacheHeaders = {};
|
|
9240
|
+
// Allow the instrumentation util to set up the header value on our "dummy" header object
|
|
9241
|
+
pageScopedCache.addHeader(pageScopedCacheHeaders);
|
|
9242
|
+
let returnedFetchArgs = fetchArgs;
|
|
9243
|
+
// If it set a value, add it to our fetchParams
|
|
9244
|
+
Object.entries(pageScopedCacheHeaders).forEach(([key, value]) => {
|
|
9245
|
+
returnedFetchArgs = setHeader(key, value, returnedFetchArgs);
|
|
9246
|
+
});
|
|
9247
|
+
return resolvedPromiseLike$2(returnedFetchArgs);
|
|
9248
|
+
};
|
|
9249
|
+
}
|
|
9250
|
+
|
|
9251
|
+
const SFDC_REQUEST_ID_KEY = 'X-SFDC-Request-Id';
|
|
9252
|
+
function buildTransportMarksSendInterceptor() {
|
|
9253
|
+
return async (fetchArgs, context) => {
|
|
9254
|
+
// First set the requestId header. If there's not context, it means we won't be able to track the mark and something is hosed, and so not worth even trying
|
|
9255
|
+
if (context && context.instrumentationId) {
|
|
9256
|
+
const requestId = context.instrumentationId;
|
|
9257
|
+
fetchArgs = setHeader(SFDC_REQUEST_ID_KEY, requestId, fetchArgs);
|
|
9258
|
+
createStartMark(requestId);
|
|
9259
|
+
}
|
|
9260
|
+
return resolvedPromiseLike$2(fetchArgs);
|
|
9261
|
+
};
|
|
9262
|
+
}
|
|
9263
|
+
|
|
9264
|
+
function buildTransportMarksReceiveInterceptor() {
|
|
9265
|
+
return async (context) => {
|
|
9266
|
+
if (context && context.instrumentationId) {
|
|
9267
|
+
markEnd('transport', 'request', { auraXHRId: context.instrumentationId });
|
|
9268
|
+
}
|
|
9269
|
+
};
|
|
9270
|
+
}
|
|
9271
|
+
|
|
9272
|
+
function buildLexRuntimeDefaultFetchServiceDescriptor(logger, retryService) {
|
|
9273
|
+
const fetchService = buildServiceDescriptor$1({
|
|
9274
|
+
createContext: createInstrumentationIdContext(),
|
|
9275
|
+
request: [
|
|
9276
|
+
buildThirdPartyTrackerRegisterInterceptor(),
|
|
9277
|
+
buildPageScopedCacheRequestInterceptor(),
|
|
9278
|
+
buildTransportMarksSendInterceptor(),
|
|
9279
|
+
buildCsrfTokenInterceptor(),
|
|
9280
|
+
],
|
|
9281
|
+
retry: buildCsrfRetryInterceptor(),
|
|
9282
|
+
response: [
|
|
9283
|
+
buildLexRuntime5xxStatusResponseInterceptor(logger),
|
|
9284
|
+
buildLexRuntimeAuthExpirationRedirectResponseInterceptor(logger),
|
|
9285
|
+
],
|
|
9286
|
+
finally: [
|
|
9287
|
+
buildTransportMarksReceiveInterceptor(),
|
|
9288
|
+
buildThirdPartyTrackerFinishInterceptor(),
|
|
9289
|
+
],
|
|
9290
|
+
}, retryService);
|
|
9291
|
+
return {
|
|
9292
|
+
...fetchService,
|
|
9293
|
+
};
|
|
9294
|
+
}
|
|
9295
|
+
function buildLexRuntimeAllow5xxFetchServiceDescriptor(logger, retryService) {
|
|
9296
|
+
const fetchService = buildServiceDescriptor$1({
|
|
9297
|
+
createContext: createInstrumentationIdContext(),
|
|
9298
|
+
request: [
|
|
9299
|
+
buildThirdPartyTrackerRegisterInterceptor(),
|
|
9300
|
+
buildPageScopedCacheRequestInterceptor(),
|
|
9301
|
+
buildTransportMarksSendInterceptor(),
|
|
9302
|
+
buildCsrfTokenInterceptor(),
|
|
9303
|
+
],
|
|
9304
|
+
retry: buildCsrfRetryInterceptor(),
|
|
9305
|
+
response: [buildLexRuntimeAuthExpirationRedirectResponseInterceptor(logger)],
|
|
9306
|
+
finally: [
|
|
9307
|
+
buildTransportMarksReceiveInterceptor(),
|
|
9308
|
+
buildThirdPartyTrackerFinishInterceptor(),
|
|
9309
|
+
],
|
|
9310
|
+
}, retryService);
|
|
9311
|
+
return {
|
|
9312
|
+
...fetchService,
|
|
9313
|
+
tags: { interceptors: 'allow_500s' },
|
|
9314
|
+
};
|
|
9315
|
+
}
|
|
9316
|
+
|
|
9196
9317
|
const DEFAULT_CONFIG = {
|
|
9197
9318
|
maxRetries: 3,
|
|
9198
9319
|
maxTimeToRetry: 10000,
|
|
@@ -9668,43 +9789,31 @@ function setupPredictivePrefetcher(luvio) {
|
|
|
9668
9789
|
const prefetcherOptions = {
|
|
9669
9790
|
inflightRequestLimit,
|
|
9670
9791
|
};
|
|
9671
|
-
const
|
|
9792
|
+
const eventEmitter = new PrefetcherEventEmitter();
|
|
9793
|
+
const prefetcher = new LexPredictivePrefetcher({ context: 'unknown' }, repository, requestRunner, eventEmitter, requestStrategyManager, prefetcherOptions);
|
|
9672
9794
|
registerPrefetcher(luvio, prefetcher);
|
|
9673
9795
|
if (useApexPredictions.isOpen({ fallback: false })) {
|
|
9674
9796
|
registerPrefetcher$1(luvio, prefetcher);
|
|
9675
9797
|
}
|
|
9676
9798
|
__lexPrefetcher = prefetcher;
|
|
9677
9799
|
}
|
|
9678
|
-
function loadComponentsDefStartedOverride(...args) {
|
|
9679
|
-
/**
|
|
9680
|
-
* To install an override (taken from the Aura.Utils.Override):
|
|
9681
|
-
*
|
|
9682
|
-
* The function supplied should have the following code in it:
|
|
9683
|
-
* ------
|
|
9684
|
-
* var config = Array.prototype.shift.apply(arguments);
|
|
9685
|
-
* var ret = config["fn"].apply(config["scope"], arguments);
|
|
9686
|
-
* return ret
|
|
9687
|
-
* ------
|
|
9688
|
-
*/
|
|
9689
|
-
const config = Array.prototype.shift.apply(args);
|
|
9690
|
-
const ret = config['fn'].apply(config['scope'], args);
|
|
9691
|
-
try {
|
|
9692
|
-
const defs = args[0] || {};
|
|
9693
|
-
__lexPrefetcher.saveRequest({
|
|
9694
|
-
adapterName: 'getComponentsDef',
|
|
9695
|
-
config: defs,
|
|
9696
|
-
});
|
|
9697
|
-
}
|
|
9698
|
-
catch (e) {
|
|
9699
|
-
// dismiss any error, the activity will log it.
|
|
9700
|
-
}
|
|
9701
|
-
return ret;
|
|
9702
|
-
}
|
|
9703
9800
|
function saveRequestAsPrediction(request) {
|
|
9704
9801
|
if (__lexPrefetcher !== undefined) {
|
|
9705
9802
|
__lexPrefetcher.saveRequest(request);
|
|
9706
9803
|
}
|
|
9707
9804
|
}
|
|
9805
|
+
/**
|
|
9806
|
+
* Subscribes to a specific prefetcher event type.
|
|
9807
|
+
* @param type - The type of event to subscribe to.
|
|
9808
|
+
* @param callback - The callback to invoke when the specified event occurs.
|
|
9809
|
+
* @returns A function to unsubscribe from the prefetcher events.
|
|
9810
|
+
*/
|
|
9811
|
+
function subscribeToPrefetcherEvents(type, callback) {
|
|
9812
|
+
if (__lexPrefetcher !== undefined) {
|
|
9813
|
+
return __lexPrefetcher.subscribeToEvent(type, callback);
|
|
9814
|
+
}
|
|
9815
|
+
return () => { };
|
|
9816
|
+
}
|
|
9708
9817
|
// This is copied from lds-adapters-uiapi because the exports are totally messed up
|
|
9709
9818
|
const notifyUpdateAvailableFactory = (luvio) => {
|
|
9710
9819
|
return function notifyRecordUpdateAvailable(configs) {
|
|
@@ -9773,23 +9882,7 @@ function buildPredictorForContext(context) {
|
|
|
9773
9882
|
watchPageLoadForPredictions() {
|
|
9774
9883
|
// This chunk tells the prefetcher to receive events, send off any predictions we have from previous loads, then setup idle detection to stop predicting.
|
|
9775
9884
|
__lexPrefetcher.startRecording();
|
|
9776
|
-
|
|
9777
|
-
// as in dev, it is assumed that the definitions will change often
|
|
9778
|
-
if (process.env.NODE_ENV === 'production') {
|
|
9779
|
-
if (useCmpDefPredictions.isOpen({ fallback: false })) {
|
|
9780
|
-
window['$A'].installOverride('ComponentService.loadComponentDefsStarted', loadComponentsDefStartedOverride);
|
|
9781
|
-
}
|
|
9782
|
-
}
|
|
9783
|
-
onIdleDetected(() => {
|
|
9784
|
-
__lexPrefetcher.stopRecording();
|
|
9785
|
-
// We only want to use cmpDef predictions on PROD code,
|
|
9786
|
-
// as in dev, it is assumed that the definitions will change often
|
|
9787
|
-
if (process.env.NODE_ENV === 'production') {
|
|
9788
|
-
if (useCmpDefPredictions.isOpen({ fallback: false })) {
|
|
9789
|
-
window['$A'].uninstallOverride('ComponentService.loadComponentDefsStarted', loadComponentsDefStartedOverride);
|
|
9790
|
-
}
|
|
9791
|
-
}
|
|
9792
|
-
});
|
|
9885
|
+
onIdleDetected(() => __lexPrefetcher.stopRecording());
|
|
9793
9886
|
},
|
|
9794
9887
|
runPredictions() {
|
|
9795
9888
|
if (isSameContext) {
|
|
@@ -9899,7 +9992,7 @@ function initializeOneStore(luvio) {
|
|
|
9899
9992
|
buildServiceDescriptor$4(),
|
|
9900
9993
|
buildServiceDescriptor$3(),
|
|
9901
9994
|
buildServiceDescriptor$2$1(),
|
|
9902
|
-
buildServiceDescriptor$1$
|
|
9995
|
+
buildServiceDescriptor$1$2(),
|
|
9903
9996
|
buildServiceDescriptor$7(),
|
|
9904
9997
|
buildLWCWireBindingsServiceDescriptor(),
|
|
9905
9998
|
buildLWCGraphQLWireBindingsServiceDescriptor(),
|
|
@@ -9921,5 +10014,5 @@ function ldsEngineCreator() {
|
|
|
9921
10014
|
return { name: 'ldsEngineCreator' };
|
|
9922
10015
|
}
|
|
9923
10016
|
|
|
9924
|
-
export { LexRequestStrategy, PdlRequestPriority, buildPredictorForContext, ldsEngineCreator as default, initializeLDS, initializeOneStore, notifyUpdateAvailableFactory, registerRequestStrategy, saveRequestAsPrediction, unregisterRequestStrategy, whenPredictionsReady };
|
|
9925
|
-
// version: 1.
|
|
10017
|
+
export { LexRequestStrategy, PdlPrefetcherEventType, PdlRequestPriority, buildPredictorForContext, ldsEngineCreator as default, initializeLDS, initializeOneStore, notifyUpdateAvailableFactory, registerRequestStrategy, saveRequestAsPrediction, subscribeToPrefetcherEvents, unregisterRequestStrategy, whenPredictionsReady };
|
|
10018
|
+
// version: 1.411.0-193e3a20c1
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { type LoggerService } from '@conduit-client/utils';
|
|
2
|
-
import {
|
|
2
|
+
import { type FetchServiceDescriptor } from '@conduit-client/service-fetch-network/v1';
|
|
3
3
|
import { RetryService } from '@conduit-client/service-retry/v1';
|
|
4
4
|
export declare function buildLexRuntimeDefaultFetchServiceDescriptor(logger: LoggerService, retryService?: RetryService<Response>): FetchServiceDescriptor;
|
|
5
5
|
export declare function buildLexRuntimeAllow5xxFetchServiceDescriptor(logger: LoggerService, retryService?: RetryService<Response>): FetchServiceDescriptor;
|
|
6
|
-
export declare function buildLexConnectFetchServiceDescriptor<Context = any>(interceptors?: Interceptors<Context>, retryService?: RetryService<Response>): FetchServiceDescriptor;
|
package/dist/types/main.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Luvio } from '@luvio/engine';
|
|
2
2
|
import { KeyParamsRecord } from '@salesforce/lds-adapters-uiapi';
|
|
3
|
-
import { ObjectHomePageContext, type RecordHomePageContext } from './predictive-loading';
|
|
3
|
+
import { ObjectHomePageContext, PdlPrefetcherEventType, PrefetcherEventMap, type RecordHomePageContext } from './predictive-loading';
|
|
4
4
|
import type { LexRequestStrategy } from './predictive-loading/request-strategy/lex-request-strategy';
|
|
5
5
|
import { type LexRequest } from './predictive-loading/lex';
|
|
6
|
-
export { PdlRequestPriority } from './predictive-loading';
|
|
6
|
+
export { PdlRequestPriority, PdlPrefetcherEventType } from './predictive-loading';
|
|
7
7
|
export { LexRequestStrategy } from './predictive-loading/request-strategy/lex-request-strategy';
|
|
8
8
|
/**
|
|
9
9
|
* Registers a request strategy to be utilized by PDL.
|
|
@@ -19,6 +19,13 @@ export declare function registerRequestStrategy(...requestStrategy: LexRequestSt
|
|
|
19
19
|
export declare function unregisterRequestStrategy(...requestStrategy: LexRequestStrategy[]): boolean | boolean[];
|
|
20
20
|
export declare function whenPredictionsReady(callback: () => void): void;
|
|
21
21
|
export declare function saveRequestAsPrediction(request: LexRequest): void;
|
|
22
|
+
/**
|
|
23
|
+
* Subscribes to a specific prefetcher event type.
|
|
24
|
+
* @param type - The type of event to subscribe to.
|
|
25
|
+
* @param callback - The callback to invoke when the specified event occurs.
|
|
26
|
+
* @returns A function to unsubscribe from the prefetcher events.
|
|
27
|
+
*/
|
|
28
|
+
export declare function subscribeToPrefetcherEvents<T extends PdlPrefetcherEventType>(type: T, callback: (event: PrefetcherEventMap[T]) => void): () => void;
|
|
22
29
|
export declare const notifyUpdateAvailableFactory: (luvio: Luvio) => (configs: Partial<KeyParamsRecord>[]) => Promise<void>;
|
|
23
30
|
/**
|
|
24
31
|
* @typedef {Object} RecordHomePageContext
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { PredictivePrefetchPage } from '../pages';
|
|
2
|
+
export declare enum PdlPrefetcherEventType {
|
|
3
|
+
STARTED_RECORDING = "started-recording",
|
|
4
|
+
STOPPED_RECORDING = "stopped-recording"
|
|
5
|
+
}
|
|
6
|
+
export type StartedRecordingEvent = {
|
|
7
|
+
type: PdlPrefetcherEventType.STARTED_RECORDING;
|
|
8
|
+
page: PredictivePrefetchPage<any, any>;
|
|
9
|
+
};
|
|
10
|
+
export type StoppedRecordingEvent = {
|
|
11
|
+
type: PdlPrefetcherEventType.STOPPED_RECORDING;
|
|
12
|
+
page: PredictivePrefetchPage<any, any>;
|
|
13
|
+
};
|
|
14
|
+
export type PrefetcherEvent = StartedRecordingEvent | StoppedRecordingEvent;
|
|
15
|
+
export type PrefetcherEventMap = {
|
|
16
|
+
[PdlPrefetcherEventType.STARTED_RECORDING]: StartedRecordingEvent;
|
|
17
|
+
[PdlPrefetcherEventType.STOPPED_RECORDING]: StoppedRecordingEvent;
|
|
18
|
+
};
|
|
19
|
+
type ListenerFn<T extends PdlPrefetcherEventType> = (event: PrefetcherEventMap[T]) => void;
|
|
20
|
+
export declare class PrefetcherEventEmitter {
|
|
21
|
+
private listeners;
|
|
22
|
+
subscribeTo<T extends PdlPrefetcherEventType>(type: T, listener: ListenerFn<T>): () => void;
|
|
23
|
+
emit<T extends PdlPrefetcherEventType>(event: PrefetcherEventMap[T]): void;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
@@ -5,11 +5,12 @@ import type { PrefetchRepository } from '../repository';
|
|
|
5
5
|
import type { RequestEntry } from '../common';
|
|
6
6
|
import type { LexContext, LexPrefetcherOptions, LexRequest } from '../lex';
|
|
7
7
|
import type { RequestStrategyManager } from '../request-strategy-manager/request-strategy-manager';
|
|
8
|
+
import { PrefetcherEventEmitter } from './events';
|
|
8
9
|
export declare class LexPredictivePrefetcher extends ApplicationPredictivePrefetcher<LexRequest, LexContext, LexDefaultPage<LexRequest, LexContext>> {
|
|
9
10
|
protected options: LexPrefetcherOptions;
|
|
10
11
|
page: LexDefaultPage<LexRequest, LexContext>;
|
|
11
12
|
private requestStrategyManager;
|
|
12
|
-
constructor(context: LexContext, repository: PrefetchRepository<LexRequest>, requestRunner: RequestRunner<LexRequest>, requestStrategyManager: RequestStrategyManager, options: LexPrefetcherOptions);
|
|
13
|
+
constructor(context: LexContext, repository: PrefetchRepository<LexRequest>, requestRunner: RequestRunner<LexRequest>, eventEmitter: PrefetcherEventEmitter, requestStrategyManager: RequestStrategyManager, options: LexPrefetcherOptions);
|
|
13
14
|
getPage(): LexDefaultPage<LexRequest, LexContext>;
|
|
14
15
|
getAllPageRequests(): RequestEntry<LexRequest>[];
|
|
15
16
|
getPredictedRequestsOrderedByPriority(): RequestEntry<LexRequest>[];
|
|
@@ -2,18 +2,21 @@ import type { PrefetchRepository } from '../repository';
|
|
|
2
2
|
import type { PredictivePrefetchPage } from '../pages';
|
|
3
3
|
import type { RequestRunner } from '../request-runner';
|
|
4
4
|
import type { BaseAdapterRequest } from '../request-strategy';
|
|
5
|
+
import { PrefetcherEventEmitter, PdlPrefetcherEventType, PrefetcherEventMap } from './events';
|
|
5
6
|
export declare abstract class ApplicationPredictivePrefetcher<Request extends BaseAdapterRequest, Context extends Record<string, any>, Page extends PredictivePrefetchPage<Request, Context>> {
|
|
6
7
|
protected repository: PrefetchRepository<Request>;
|
|
7
8
|
protected requestRunner: RequestRunner<Request>;
|
|
9
|
+
protected eventEmitter: PrefetcherEventEmitter;
|
|
8
10
|
private _context;
|
|
9
11
|
isRecording: boolean;
|
|
10
12
|
totalRequestCount: Number;
|
|
11
13
|
page: Page;
|
|
12
14
|
queuedPredictionRequests: Request[];
|
|
13
|
-
protected constructor(context: Context, repository: PrefetchRepository<Request>, requestRunner: RequestRunner<Request
|
|
15
|
+
protected constructor(context: Context, repository: PrefetchRepository<Request>, requestRunner: RequestRunner<Request>, eventEmitter: PrefetcherEventEmitter);
|
|
14
16
|
abstract getPage(): Page;
|
|
15
17
|
set context(value: Context);
|
|
16
18
|
get context(): Context;
|
|
19
|
+
subscribeToEvent<T extends PdlPrefetcherEventType>(type: T, callback: (event: PrefetcherEventMap[T]) => void): () => void;
|
|
17
20
|
stopRecording(): Promise<void>;
|
|
18
21
|
startRecording(): void;
|
|
19
22
|
saveRequest(request: Request): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salesforce/lds-runtime-aura",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.411.0",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
5
5
|
"description": "LDS engine for Aura runtime",
|
|
6
6
|
"main": "dist/ldsEngineCreator.js",
|
|
@@ -34,49 +34,49 @@
|
|
|
34
34
|
"release:corejar": "yarn build && ../core-build/scripts/core.js --name=lds-runtime-aura"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@conduit-client/service-provisioner": "3.6.
|
|
38
|
-
"@conduit-client/tools-core": "3.6.
|
|
39
|
-
"@salesforce/lds-adapters-apex": "^1.
|
|
40
|
-
"@salesforce/lds-adapters-uiapi": "^1.
|
|
41
|
-
"@salesforce/lds-ads-bridge": "^1.
|
|
42
|
-
"@salesforce/lds-aura-storage": "^1.
|
|
43
|
-
"@salesforce/lds-bindings": "^1.
|
|
44
|
-
"@salesforce/lds-instrumentation": "^1.
|
|
45
|
-
"@salesforce/lds-network-aura": "^1.
|
|
46
|
-
"@salesforce/lds-network-fetch": "^1.
|
|
37
|
+
"@conduit-client/service-provisioner": "3.6.3",
|
|
38
|
+
"@conduit-client/tools-core": "3.6.3",
|
|
39
|
+
"@salesforce/lds-adapters-apex": "^1.411.0",
|
|
40
|
+
"@salesforce/lds-adapters-uiapi": "^1.411.0",
|
|
41
|
+
"@salesforce/lds-ads-bridge": "^1.411.0",
|
|
42
|
+
"@salesforce/lds-aura-storage": "^1.411.0",
|
|
43
|
+
"@salesforce/lds-bindings": "^1.411.0",
|
|
44
|
+
"@salesforce/lds-instrumentation": "^1.411.0",
|
|
45
|
+
"@salesforce/lds-network-aura": "^1.411.0",
|
|
46
|
+
"@salesforce/lds-network-fetch": "^1.411.0",
|
|
47
47
|
"jwt-encode": "1.0.1"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@conduit-client/command-aura-graphql-normalized-cache-control": "3.6.
|
|
51
|
-
"@conduit-client/command-aura-network": "3.6.
|
|
52
|
-
"@conduit-client/command-aura-normalized-cache-control": "3.6.
|
|
53
|
-
"@conduit-client/command-aura-resource-cache-control": "3.6.
|
|
54
|
-
"@conduit-client/command-fetch-network": "3.6.
|
|
55
|
-
"@conduit-client/command-http-graphql-normalized-cache-control": "3.6.
|
|
56
|
-
"@conduit-client/command-http-normalized-cache-control": "3.6.
|
|
57
|
-
"@conduit-client/command-ndjson": "3.6.
|
|
58
|
-
"@conduit-client/command-network": "3.6.
|
|
59
|
-
"@conduit-client/command-sse": "3.6.
|
|
60
|
-
"@conduit-client/command-streaming": "3.6.
|
|
61
|
-
"@conduit-client/service-aura-network": "3.6.
|
|
62
|
-
"@conduit-client/service-bindings-imperative": "3.6.
|
|
63
|
-
"@conduit-client/service-bindings-lwc": "3.6.
|
|
64
|
-
"@conduit-client/service-cache": "3.6.
|
|
65
|
-
"@conduit-client/service-cache-control": "3.6.
|
|
66
|
-
"@conduit-client/service-cache-inclusion-policy": "3.6.
|
|
67
|
-
"@conduit-client/service-feature-flags": "3.6.
|
|
68
|
-
"@conduit-client/service-fetch-network": "3.6.
|
|
69
|
-
"@conduit-client/service-instrument-command": "3.6.
|
|
70
|
-
"@conduit-client/service-pubsub": "3.6.
|
|
71
|
-
"@conduit-client/service-store": "3.6.
|
|
72
|
-
"@conduit-client/utils": "3.6.
|
|
50
|
+
"@conduit-client/command-aura-graphql-normalized-cache-control": "3.6.3",
|
|
51
|
+
"@conduit-client/command-aura-network": "3.6.3",
|
|
52
|
+
"@conduit-client/command-aura-normalized-cache-control": "3.6.3",
|
|
53
|
+
"@conduit-client/command-aura-resource-cache-control": "3.6.3",
|
|
54
|
+
"@conduit-client/command-fetch-network": "3.6.3",
|
|
55
|
+
"@conduit-client/command-http-graphql-normalized-cache-control": "3.6.3",
|
|
56
|
+
"@conduit-client/command-http-normalized-cache-control": "3.6.3",
|
|
57
|
+
"@conduit-client/command-ndjson": "3.6.3",
|
|
58
|
+
"@conduit-client/command-network": "3.6.3",
|
|
59
|
+
"@conduit-client/command-sse": "3.6.3",
|
|
60
|
+
"@conduit-client/command-streaming": "3.6.3",
|
|
61
|
+
"@conduit-client/service-aura-network": "3.6.3",
|
|
62
|
+
"@conduit-client/service-bindings-imperative": "3.6.3",
|
|
63
|
+
"@conduit-client/service-bindings-lwc": "3.6.3",
|
|
64
|
+
"@conduit-client/service-cache": "3.6.3",
|
|
65
|
+
"@conduit-client/service-cache-control": "3.6.3",
|
|
66
|
+
"@conduit-client/service-cache-inclusion-policy": "3.6.3",
|
|
67
|
+
"@conduit-client/service-feature-flags": "3.6.3",
|
|
68
|
+
"@conduit-client/service-fetch-network": "3.6.3",
|
|
69
|
+
"@conduit-client/service-instrument-command": "3.6.3",
|
|
70
|
+
"@conduit-client/service-pubsub": "3.6.3",
|
|
71
|
+
"@conduit-client/service-store": "3.6.3",
|
|
72
|
+
"@conduit-client/utils": "3.6.3",
|
|
73
73
|
"@luvio/network-adapter-composable": "0.158.7",
|
|
74
74
|
"@luvio/network-adapter-fetch": "0.158.7",
|
|
75
75
|
"@lwc/state": "^0.23.0",
|
|
76
|
-
"@salesforce/lds-adapters-onestore-graphql": "^1.
|
|
77
|
-
"@salesforce/lds-adapters-uiapi-lex": "^1.
|
|
78
|
-
"@salesforce/lds-luvio-service": "^1.
|
|
79
|
-
"@salesforce/lds-luvio-uiapi-records-service": "^1.
|
|
76
|
+
"@salesforce/lds-adapters-onestore-graphql": "^1.411.0",
|
|
77
|
+
"@salesforce/lds-adapters-uiapi-lex": "^1.411.0",
|
|
78
|
+
"@salesforce/lds-luvio-service": "^1.411.0",
|
|
79
|
+
"@salesforce/lds-luvio-uiapi-records-service": "^1.411.0"
|
|
80
80
|
},
|
|
81
81
|
"luvioBundlesize": [
|
|
82
82
|
{
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"maxSize": {
|
|
85
85
|
"none": "350 kB",
|
|
86
86
|
"min": "190 kB",
|
|
87
|
-
"compressed": "57 kB"
|
|
87
|
+
"compressed": "57.2 kB"
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
],
|