@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.
@@ -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
- return this.convertFetchResponseToData(this.services.fetch(...this.fetchParams));
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
- return this.convertFetchResponseToData(this.services.fetch(...this.fetchParams));
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
- return this.convertFetchResponseToData(this.services.fetch(...this.fetchParams));
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
- return this.convertFetchResponseToData(this.services.fetch(...this.fetchParams));
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
- return this.convertFetchResponseToData(this.services.fetch(...this.fetchParams));
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
- return this.convertFetchStreamResponseToData(this.services.fetch(...this.fetchParams));
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
- (cacheControlMetadata) => cacheControlMetadata.type === "no-store"
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.410.0-7c228ee347
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
- return this.convertFetchResponseToData(
2792
- this.services.fetch(...this.originalFetchParams)
2793
- ).then((result) => {
2794
- return buildSubscribableResult$1(result, this.buildSubscribe(), () => this.refresh());
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.410.0-7c228ee347
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$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.410.0-7c228ee347
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 buildLexRuntimeDefaultFetchServiceDescriptor(logger, retryService) {
6249
- const fetchService = buildLexConnectFetchServiceDescriptor({
6250
- createContext: createInstrumentationIdContext(),
6251
- request: [
6252
- buildThirdPartyTrackerRegisterInterceptor(),
6253
- buildPageScopedCacheRequestInterceptor(),
6254
- buildTransportMarksSendInterceptor(),
6255
- buildCsrfTokenInterceptor(),
6256
- ],
6257
- response: [
6258
- buildLexRuntime5xxStatusResponseInterceptor(logger),
6259
- buildLexRuntimeAuthExpirationRedirectResponseInterceptor(logger),
6260
- ],
6261
- finally: [
6262
- buildTransportMarksReceiveInterceptor(),
6263
- buildThirdPartyTrackerFinishInterceptor(),
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 = buildLexConnectFetchServiceDescriptor({
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
- ...buildLexConnectFetchServiceDescriptor({
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 = buildLexConnectFetchServiceDescriptor({
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 prefetcher = new LexPredictivePrefetcher({ context: 'unknown' }, repository, requestRunner, requestStrategyManager, prefetcherOptions);
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
- // We only want to use cmpDef predictions on PROD code,
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$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.410.0-19e0e5d352
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 { Interceptors, type FetchServiceDescriptor } from '@conduit-client/service-fetch-network/v1';
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;
@@ -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 {};
@@ -1,2 +1,4 @@
1
1
  export * from './predictive-prefetcher';
2
2
  export * from './lex-predictive-prefetcher';
3
+ export type { PrefetcherEvent, StartedRecordingEvent, StoppedRecordingEvent, PrefetcherEventMap, } from './events';
4
+ export { PdlPrefetcherEventType } from './events';
@@ -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;
@@ -0,0 +1,2 @@
1
+ import { RetryInterceptor } from '@conduit-client/service-fetch-network/v1';
2
+ export declare function buildCsrfRetryInterceptor(): RetryInterceptor;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/lds-runtime-aura",
3
- "version": "1.410.0",
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.1",
38
- "@conduit-client/tools-core": "3.6.1",
39
- "@salesforce/lds-adapters-apex": "^1.410.0",
40
- "@salesforce/lds-adapters-uiapi": "^1.410.0",
41
- "@salesforce/lds-ads-bridge": "^1.410.0",
42
- "@salesforce/lds-aura-storage": "^1.410.0",
43
- "@salesforce/lds-bindings": "^1.410.0",
44
- "@salesforce/lds-instrumentation": "^1.410.0",
45
- "@salesforce/lds-network-aura": "^1.410.0",
46
- "@salesforce/lds-network-fetch": "^1.410.0",
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.1",
51
- "@conduit-client/command-aura-network": "3.6.1",
52
- "@conduit-client/command-aura-normalized-cache-control": "3.6.1",
53
- "@conduit-client/command-aura-resource-cache-control": "3.6.1",
54
- "@conduit-client/command-fetch-network": "3.6.1",
55
- "@conduit-client/command-http-graphql-normalized-cache-control": "3.6.1",
56
- "@conduit-client/command-http-normalized-cache-control": "3.6.1",
57
- "@conduit-client/command-ndjson": "3.6.1",
58
- "@conduit-client/command-network": "3.6.1",
59
- "@conduit-client/command-sse": "3.6.1",
60
- "@conduit-client/command-streaming": "3.6.1",
61
- "@conduit-client/service-aura-network": "3.6.1",
62
- "@conduit-client/service-bindings-imperative": "3.6.1",
63
- "@conduit-client/service-bindings-lwc": "3.6.1",
64
- "@conduit-client/service-cache": "3.6.1",
65
- "@conduit-client/service-cache-control": "3.6.1",
66
- "@conduit-client/service-cache-inclusion-policy": "3.6.1",
67
- "@conduit-client/service-feature-flags": "3.6.1",
68
- "@conduit-client/service-fetch-network": "3.6.1",
69
- "@conduit-client/service-instrument-command": "3.6.1",
70
- "@conduit-client/service-pubsub": "3.6.1",
71
- "@conduit-client/service-store": "3.6.1",
72
- "@conduit-client/utils": "3.6.1",
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.410.0",
77
- "@salesforce/lds-adapters-uiapi-lex": "^1.410.0",
78
- "@salesforce/lds-luvio-service": "^1.410.0",
79
- "@salesforce/lds-luvio-uiapi-records-service": "^1.410.0"
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
  ],