@salesforce/lds-runtime-aura 1.416.1 → 1.417.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.
@@ -31,7 +31,7 @@ import { assertIsValid, MissingRequiredPropertyError, JsonSchemaViolationError }
31
31
  import { dispatchGlobalEvent, unstable_loadComponentDefs, executeGlobalControllerRawResponse } from 'aura';
32
32
  import auraNetworkAdapter, { dispatchAuraAction, defaultActionConfig, instrument as instrument$1, forceRecordTransactionsDisabled as forceRecordTransactionsDisabled$1, ldsNetworkAdapterInstrument, CrudEventState, CrudEventType, UIAPI_RECORDS_PATH, UIAPI_RELATED_LIST_RECORDS_BATCH_PATH, UIAPI_RELATED_LIST_RECORDS_PATH } from 'force/ldsNetwork';
33
33
  import { ThirdPartyTracker } from 'instrumentation:thirdPartyTracker';
34
- import { markStart, markEnd, counter, registerCacheStats, perfStart, perfEnd, registerPeriodicLogger, interaction, timer } from 'instrumentation/service';
34
+ import { markStart, markEnd, counter, registerCacheStats, perfStart, perfEnd, registerPeriodicLogger, interaction, timer, mark } from 'instrumentation/service';
35
35
  import { instrument as instrument$2, setupLexNetworkAdapter } from 'force/ldsNetworkFetch';
36
36
  import { REFRESH_ADAPTER_EVENT, ADAPTER_UNFULFILLED_ERROR, instrument as instrument$3 } from 'force/ldsBindings';
37
37
  import { LRUCache, instrumentAdapter, instrumentLuvio, logMessage as logMessage$1, setupInstrumentation as setupInstrumentation$1, logObjectInfoChanged as logObjectInfoChanged$1, updatePercentileHistogramMetric, incrementCounterMetric, incrementGetRecordNotifyChangeAllowCount, incrementGetRecordNotifyChangeDropCount, incrementNotifyRecordUpdateAvailableAllowCount, incrementNotifyRecordUpdateAvailableDropCount, setLdsAdaptersUiapiInstrumentation, logError as logError$2, setLdsNetworkAdapterInstrumentation, incrementStateCreatedCount, executeAsyncActivity, METRIC_KEYS, onIdleDetected } from 'force/ldsInstrumentation';
@@ -123,7 +123,7 @@ let Err$1 = class Err {
123
123
  const ok$2 = (value) => new Ok$2(value);
124
124
  const err$1 = (err2) => new Err$1(err2);
125
125
  function isResult(value) {
126
- return value != null && typeof value === "object" && "isOk" in value && "isErr" in value && typeof value.isOk === "function" && typeof value.isErr === "function" && (value.isOk() === true && value.isErr() === false && "value" in value || value.isOk() === false && value.isErr() === true && "error" in value);
126
+ return value !== null && value !== void 0 && typeof value === "object" && "isOk" in value && "isErr" in value && typeof value.isOk === "function" && typeof value.isErr === "function" && (value.isOk() === true && value.isErr() === false && "value" in value || value.isOk() === false && value.isErr() === true && "error" in value);
127
127
  }
128
128
  function isSubscribable(obj) {
129
129
  return typeof obj === "object" && obj !== null && "subscribe" in obj && typeof obj.subscribe === "function" && "refresh" in obj && typeof obj.refresh === "function";
@@ -422,7 +422,7 @@ class AuraNetworkCommand extends NetworkCommand$1 {
422
422
  const auraReturnValue = response.getReturnValue();
423
423
  try {
424
424
  this.afterRequestHooks({ statusCode: 200 });
425
- } catch (e) {
425
+ } catch {
426
426
  }
427
427
  return ok$2(auraReturnValue);
428
428
  }).catch((error) => {
@@ -448,7 +448,7 @@ class AuraNetworkCommand extends NetworkCommand$1 {
448
448
  ).finally(() => {
449
449
  try {
450
450
  this.afterRequestHooks({ statusCode: response2.status });
451
- } catch (e) {
451
+ } catch {
452
452
  }
453
453
  });
454
454
  } else {
@@ -457,7 +457,7 @@ class AuraNetworkCommand extends NetworkCommand$1 {
457
457
  }).finally(() => {
458
458
  try {
459
459
  this.afterRequestHooks({ statusCode: response2.status });
460
- } catch (e) {
460
+ } catch {
461
461
  }
462
462
  });
463
463
  }
@@ -1019,7 +1019,7 @@ class CacheControlCommand extends BaseCommand {
1019
1019
  this.subscriptions.forEach((cb) => {
1020
1020
  try {
1021
1021
  cb(data);
1022
- } catch (error) {
1022
+ } catch {
1023
1023
  }
1024
1024
  });
1025
1025
  }
@@ -1108,7 +1108,7 @@ let AuraCacheControlCommand$1 = class AuraCacheControlCommand extends CacheContr
1108
1108
  }).finally(() => {
1109
1109
  try {
1110
1110
  this.afterRequestHooks({ statusCode: 200 });
1111
- } catch (e) {
1111
+ } catch {
1112
1112
  }
1113
1113
  }).catch((error) => {
1114
1114
  if (!error || !error.getError) {
@@ -1135,7 +1135,7 @@ let AuraCacheControlCommand$1 = class AuraCacheControlCommand extends CacheContr
1135
1135
  ).finally(() => {
1136
1136
  try {
1137
1137
  this.afterRequestHooks({ statusCode: response2.status });
1138
- } catch (e) {
1138
+ } catch {
1139
1139
  }
1140
1140
  });
1141
1141
  } else {
@@ -1144,7 +1144,7 @@ let AuraCacheControlCommand$1 = class AuraCacheControlCommand extends CacheContr
1144
1144
  }).finally(() => {
1145
1145
  try {
1146
1146
  this.afterRequestHooks({ statusCode: response2.status });
1147
- } catch (e) {
1147
+ } catch {
1148
1148
  }
1149
1149
  });
1150
1150
  }
@@ -1256,7 +1256,7 @@ class AuraCacheControlCommand extends CacheControlCommand {
1256
1256
  }).finally(() => {
1257
1257
  try {
1258
1258
  this.afterRequestHooks({ statusCode: 200 });
1259
- } catch (e) {
1259
+ } catch {
1260
1260
  }
1261
1261
  }).catch((error) => {
1262
1262
  if (!error || !error.getError) {
@@ -1283,7 +1283,7 @@ class AuraCacheControlCommand extends CacheControlCommand {
1283
1283
  ).finally(() => {
1284
1284
  try {
1285
1285
  this.afterRequestHooks({ statusCode: response2.status });
1286
- } catch (e) {
1286
+ } catch {
1287
1287
  }
1288
1288
  });
1289
1289
  } else {
@@ -1292,7 +1292,7 @@ class AuraCacheControlCommand extends CacheControlCommand {
1292
1292
  }).finally(() => {
1293
1293
  try {
1294
1294
  this.afterRequestHooks({ statusCode: response2.status });
1295
- } catch (e) {
1295
+ } catch {
1296
1296
  }
1297
1297
  });
1298
1298
  }
@@ -1376,7 +1376,7 @@ class HttpCacheControlCommand extends CacheControlCommand {
1376
1376
  ).finally(() => {
1377
1377
  try {
1378
1378
  this.afterRequestHooks({ statusCode: response2.status });
1379
- } catch (e) {
1379
+ } catch {
1380
1380
  }
1381
1381
  });
1382
1382
  } else {
@@ -1385,7 +1385,7 @@ class HttpCacheControlCommand extends CacheControlCommand {
1385
1385
  }).finally(() => {
1386
1386
  try {
1387
1387
  this.afterRequestHooks({ statusCode: response2.status });
1388
- } catch (e) {
1388
+ } catch {
1389
1389
  }
1390
1390
  });
1391
1391
  }
@@ -1578,7 +1578,7 @@ const _FetchNetworkCommand = class _FetchNetworkCommand extends NetworkCommand {
1578
1578
  ).finally(() => {
1579
1579
  try {
1580
1580
  this.afterRequestHooks({ statusCode: response2.status });
1581
- } catch (e) {
1581
+ } catch {
1582
1582
  }
1583
1583
  });
1584
1584
  } else {
@@ -1587,7 +1587,7 @@ const _FetchNetworkCommand = class _FetchNetworkCommand extends NetworkCommand {
1587
1587
  }).finally(() => {
1588
1588
  try {
1589
1589
  this.afterRequestHooks({ statusCode: response2.status });
1590
- } catch (e) {
1590
+ } catch {
1591
1591
  }
1592
1592
  });
1593
1593
  }
@@ -2636,7 +2636,7 @@ class NDJSONParsingStream extends TransformStream {
2636
2636
  try {
2637
2637
  const parsed = JSON.parse(trimmed);
2638
2638
  controller.enqueue(parsed);
2639
- } catch (e) {
2639
+ } catch {
2640
2640
  throw new Error(`Invalid NDJSON line: ${line}`);
2641
2641
  }
2642
2642
  }
@@ -2647,7 +2647,7 @@ class NDJSONParsingStream extends TransformStream {
2647
2647
  try {
2648
2648
  const parsed = JSON.parse(trimmed);
2649
2649
  controller.enqueue(parsed);
2650
- } catch (e) {
2650
+ } catch {
2651
2651
  throw new Error(`Invalid NDJSON final line: ${partialLine}`);
2652
2652
  }
2653
2653
  }
@@ -2705,7 +2705,7 @@ function buildServiceDescriptor$d(luvio) {
2705
2705
  },
2706
2706
  };
2707
2707
  }
2708
- // version: 1.416.1-c10be671f4
2708
+ // version: 1.417.0-83ca87d09c
2709
2709
 
2710
2710
  /*!
2711
2711
  * Copyright (c) 2022, Salesforce, Inc.,
@@ -2745,7 +2745,7 @@ class AuraGraphQLNormalizedCacheControlCommand extends AuraNormalizedCacheContro
2745
2745
  };
2746
2746
  }
2747
2747
  responseHasErrors(data) {
2748
- return data.hasOwnProperty("errors") && data.errors && data.errors.length > 0;
2748
+ return data.errors && data.errors.length > 0;
2749
2749
  }
2750
2750
  processAuraReturnValue(auraReturnValue) {
2751
2751
  if (this.responseHasErrors(auraReturnValue)) {
@@ -2973,7 +2973,7 @@ class HttpGraphQLNormalizedCacheControlCommand extends HttpNormalizedCacheContro
2973
2973
  return { data: data.data, ...extensionResult.value };
2974
2974
  }
2975
2975
  processFetchReturnValue(json) {
2976
- if (json.hasOwnProperty("errors") && json.errors && json.errors.length > 0) {
2976
+ if (json.errors && json.errors.length > 0) {
2977
2977
  return err$1(new UserVisibleError(json));
2978
2978
  }
2979
2979
  return ok$2(json);
@@ -3058,7 +3058,7 @@ function buildServiceDescriptor$9(notifyRecordUpdateAvailable, getNormalizedLuvi
3058
3058
  },
3059
3059
  };
3060
3060
  }
3061
- // version: 1.416.1-c10be671f4
3061
+ // version: 1.417.0-83ca87d09c
3062
3062
 
3063
3063
  /*!
3064
3064
  * Copyright (c) 2022, Salesforce, Inc.,
@@ -3955,13 +3955,17 @@ class GraphQLCommandWireAdapterConstructor extends CommandWireAdapterConstructor
3955
3955
  this.refresh().then((res) => {
3956
3956
  if (res.isOk()) {
3957
3957
  resolve();
3958
- } else {
3959
- reject(
3960
- new Error(
3961
- "Internal error in GraphQL adapter occurred: Failed to refresh GraphQL data"
3962
- )
3963
- );
3958
+ return;
3959
+ }
3960
+ if (isUserVisibleError$1(res.error)) {
3961
+ resolve();
3962
+ return;
3964
3963
  }
3964
+ reject(
3965
+ new Error(
3966
+ "Internal error in GraphQL adapter occurred: Failed to refresh GraphQL data"
3967
+ )
3968
+ );
3965
3969
  });
3966
3970
  });
3967
3971
  };
@@ -4424,6 +4428,41 @@ function buildServiceDescriptor$2(interceptors = {
4424
4428
  }
4425
4429
  };
4426
4430
  }
4431
+ const textEncoder = new TextEncoder();
4432
+ function buildCompressionInterceptor(config) {
4433
+ const threshold = config.threshold ?? 1024;
4434
+ return async (args) => {
4435
+ const [resource, options = {}] = args;
4436
+ if (!options.body || typeof options.body !== "string") {
4437
+ return resolvedPromiseLike$2(args);
4438
+ }
4439
+ if (typeof CompressionStream === "undefined") {
4440
+ return resolvedPromiseLike$2(args);
4441
+ }
4442
+ const headers = new Headers(options.headers);
4443
+ if (headers.has("Content-Encoding")) {
4444
+ return resolvedPromiseLike$2(args);
4445
+ }
4446
+ const encodedBody = textEncoder.encode(options.body);
4447
+ if (encodedBody.byteLength < threshold) {
4448
+ return resolvedPromiseLike$2(args);
4449
+ }
4450
+ try {
4451
+ const stream = new Blob([encodedBody]).stream().pipeThrough(new CompressionStream(config.algorithm));
4452
+ const compressedBody = await new Response(stream).blob();
4453
+ headers.set("Content-Encoding", config.algorithm);
4454
+ headers.delete("Content-Length");
4455
+ const compressedOptions = {
4456
+ ...options,
4457
+ body: compressedBody,
4458
+ headers
4459
+ };
4460
+ return resolvedPromiseLike$2([resource, compressedOptions]);
4461
+ } catch {
4462
+ return resolvedPromiseLike$2(args);
4463
+ }
4464
+ };
4465
+ }
4427
4466
  function setHeader(headerName, headerValue, [resource, options = {}], {
4428
4467
  throwOnExisting = false,
4429
4468
  errorMessage = `Unexpected ${headerName} header encountered`
@@ -4581,7 +4620,7 @@ var TypeCheckShapes;
4581
4620
  TypeCheckShapes[TypeCheckShapes["Integer"] = 3] = "Integer";
4582
4621
  TypeCheckShapes[TypeCheckShapes["Unsupported"] = 4] = "Unsupported";
4583
4622
  })(TypeCheckShapes || (TypeCheckShapes = {}));
4584
- // engine version: 0.159.0-6e2a1824
4623
+ // engine version: 0.160.1-e075b880
4585
4624
 
4586
4625
  const { keys: keys$1 } = Object;
4587
4626
 
@@ -4725,6 +4764,13 @@ const platformSfapJwtResolver = {
4725
4764
  },
4726
4765
  };
4727
4766
  const jwtManager = new JwtManager(new JwtRepository(), platformSfapJwtResolver);
4767
+ function prefetchSfapJwt() {
4768
+ const maybePromise = jwtManager.getJwt();
4769
+ if ('then' in maybePromise) {
4770
+ return maybePromise.then(() => undefined).catch(() => undefined);
4771
+ }
4772
+ return Promise.resolve(undefined);
4773
+ }
4728
4774
  const authenticateRequest = (resourceRequest, jwt) => {
4729
4775
  const { token } = jwt;
4730
4776
  const { headers } = resourceRequest;
@@ -5586,7 +5632,7 @@ function getEnvironmentSetting(name) {
5586
5632
  }
5587
5633
  return undefined;
5588
5634
  }
5589
- // version: 1.416.1-c10be671f4
5635
+ // version: 1.417.0-83ca87d09c
5590
5636
 
5591
5637
  const environmentHasAura = typeof window !== 'undefined' && typeof window.$A !== 'undefined';
5592
5638
  const defaultConfig = {
@@ -6256,7 +6302,7 @@ function createInstrumentationIdContext() {
6256
6302
  instrumentationId: generateRequestId(),
6257
6303
  });
6258
6304
  }
6259
- function createStartMark(requestId) {
6305
+ function createTransportStartMark(requestId) {
6260
6306
  const startMark = markStart('transport', 'request');
6261
6307
  startMark.context = {
6262
6308
  auraXHRId: requestId,
@@ -6266,7 +6312,29 @@ function createStartMark(requestId) {
6266
6312
  requestLength: -1, // not known
6267
6313
  };
6268
6314
  }
6269
- function createEndMark(responseStatus, responseStatusText, url, context, errorMessage) {
6315
+ function createActionStartMark(context) {
6316
+ const startMark = mark('actions', 'enqueue');
6317
+ startMark.context = {
6318
+ id: context.instrumentationId,
6319
+ cmp: context.cmp || 'none',
6320
+ source: 'lds-fetch',
6321
+ };
6322
+ mark('actions', 'sendQueued', startMark.context);
6323
+ mark('actions', 'sendStart', startMark.context);
6324
+ }
6325
+ function createActionEndMark(responseStatus, responseStatusText, serverTiming, url, instrumentationId) {
6326
+ const ctx = {
6327
+ id: instrumentationId,
6328
+ state: responseStatusText || getResponseStatusText(responseStatus.toString()),
6329
+ def: url,
6330
+ };
6331
+ // this step adds the serverTime to the base object, as opposed to being in the context field
6332
+ const receiveCtx = { ...ctx, serverTime: getServerTimeObject(serverTiming) };
6333
+ mark('actions', 'receive', receiveCtx);
6334
+ mark('actions', 'finishStart', ctx);
6335
+ mark('actions', 'finishEnd', ctx);
6336
+ }
6337
+ function createTransportEndMark(responseStatus, responseStatusText, url, context, errorMessage) {
6270
6338
  if (context && context.instrumentationId) {
6271
6339
  const endMark = markEnd('transport', 'request', { auraXHRId: context.instrumentationId });
6272
6340
  if (performance && performance.getEntriesByName) {
@@ -6304,7 +6372,7 @@ function setResourceTimings(id, responseStatus, responseStatusText, endMark, r)
6304
6372
  statusText: responseStatusText,
6305
6373
  // Timings fields
6306
6374
  responseLength: r.decodedBodySize || 0,
6307
- serverTime: r.serverTiming || 0,
6375
+ serverTime: r.serverTiming && r.serverTiming.length ? getServerTiming(r.serverTiming) : 0,
6308
6376
  xhrDuration: Math.floor(r.responseEnd - r.startTime),
6309
6377
  xhrStall: Math.floor(r.requestStart - r.startTime),
6310
6378
  startTime: Math.floor(r.startTime),
@@ -6318,6 +6386,35 @@ function setResourceTimings(id, responseStatus, responseStatusText, endMark, r)
6318
6386
  nextHopProtocol: r['nextHopProtocol'],
6319
6387
  };
6320
6388
  }
6389
+ // this is for action marks
6390
+ function getServerTimeObject(serverTime) {
6391
+ if (serverTime) {
6392
+ const parsedServerTime = serverTime.split(',');
6393
+ const ret = {
6394
+ total: 0,
6395
+ db: 0,
6396
+ };
6397
+ if (parsedServerTime.length === 2) {
6398
+ if (parsedServerTime[0].startsWith('Total;dur=')) {
6399
+ ret.total = parseInt(parsedServerTime[0].split('=')[1]);
6400
+ }
6401
+ if (parsedServerTime[1].startsWith('Db;dur=')) {
6402
+ ret.db = parseInt(parsedServerTime[1].split('=')[1]);
6403
+ }
6404
+ }
6405
+ return ret;
6406
+ }
6407
+ return {};
6408
+ }
6409
+ // this is for transport marks
6410
+ function getServerTiming(serverTiming) {
6411
+ for (let timing in serverTiming) {
6412
+ if (serverTiming[timing].name === 'Total') {
6413
+ return serverTiming[timing].duration;
6414
+ }
6415
+ }
6416
+ return 0;
6417
+ }
6321
6418
  function findCorrectResource(resources, context) {
6322
6419
  if (context && context.startTime) {
6323
6420
  let likelyResource = {
@@ -6334,6 +6431,15 @@ function findCorrectResource(resources, context) {
6334
6431
  }
6335
6432
  return undefined;
6336
6433
  }
6434
+ function getResponseStatusText(responseCode) {
6435
+ if (responseCode.startsWith('2')) {
6436
+ return 'SUCCESS';
6437
+ }
6438
+ else if (responseCode.startsWith('4') || responseCode.startsWith('5')) {
6439
+ return 'ERROR';
6440
+ }
6441
+ return 'UNKNOWN';
6442
+ }
6337
6443
  // Copied from requestId generation on core
6338
6444
  function generateRequestId() {
6339
6445
  function guid() {
@@ -6377,7 +6483,7 @@ function buildTransportMarksSendInterceptor() {
6377
6483
  const requestId = context.instrumentationId;
6378
6484
  fetchArgs = setHeader(SFDC_REQUEST_ID_KEY, requestId, fetchArgs);
6379
6485
  context.startTime = performance.now();
6380
- createStartMark(requestId);
6486
+ createTransportStartMark(requestId);
6381
6487
  }
6382
6488
  return resolvedPromiseLike$2(fetchArgs);
6383
6489
  };
@@ -6388,8 +6494,7 @@ function buildLuvioTransportMarksSendInterceptor() {
6388
6494
  const requestId = context.instrumentationId;
6389
6495
  setLuvioRequestIdHeader(resourceRequest, requestId);
6390
6496
  context.startTime = performance.now();
6391
- context.url = location.origin + resourceRequest.baseUri + resourceRequest.basePath;
6392
- createStartMark(requestId);
6497
+ createTransportStartMark(requestId);
6393
6498
  }
6394
6499
  return resolvedPromiseLike$2(resourceRequest);
6395
6500
  };
@@ -6413,7 +6518,7 @@ function buildTransportMarksReceiveInterceptor() {
6413
6518
  .clone()
6414
6519
  .text()
6415
6520
  .then(() => {
6416
- createEndMark(response.status, response.statusText, response.url, context, `OneStore resource timing failed to match for: ${response.url}`);
6521
+ createTransportEndMark(response.status, response.statusText, response.url, context, `OneStore resource timing failed to match for: ${response.url}`);
6417
6522
  })
6418
6523
  .catch((e) => {
6419
6524
  logMessage(`OneStore transport marks received failed with: ${e}`);
@@ -6426,7 +6531,7 @@ function buildLuvioTransportMarksReceiveInterceptor() {
6426
6531
  if (context && context.url) {
6427
6532
  Promise.resolve(response)
6428
6533
  .then(() => {
6429
- createEndMark(response.status, response.statusText, context.url, context, `Luvio resource timing failed to match for: ${context.url}`);
6534
+ createTransportEndMark(response.status, response.statusText, context.url, context, `Luvio resource timing failed to match for: ${context.url}`);
6430
6535
  })
6431
6536
  .catch((e) => {
6432
6537
  logMessage(`Luvio transport marks received failed with: ${e}`);
@@ -6436,6 +6541,40 @@ function buildLuvioTransportMarksReceiveInterceptor() {
6436
6541
  };
6437
6542
  }
6438
6543
 
6544
+ function buildActionMarksReceiveInterceptor() {
6545
+ return async (response, context) => {
6546
+ if (context && context.instrumentationId) {
6547
+ createActionEndMark(response.status, response.statusText, response.headers.get('server-timing'), response.url, context.instrumentationId);
6548
+ }
6549
+ return response;
6550
+ };
6551
+ }
6552
+ function buildLuvioActionMarksReceiveInterceptor() {
6553
+ return async (response, context) => {
6554
+ if (context && context.instrumentationId) {
6555
+ createActionEndMark(response.status, response.statusText, response.headers['server-timing'], context.url, context.instrumentationId);
6556
+ }
6557
+ return response;
6558
+ };
6559
+ }
6560
+
6561
+ function buildActionMarksSendInterceptor() {
6562
+ return async (fetchArgs, context) => {
6563
+ if (context && context.instrumentationId) {
6564
+ createActionStartMark(context);
6565
+ }
6566
+ return resolvedPromiseLike$2(fetchArgs);
6567
+ };
6568
+ }
6569
+ function buildLuvioActionMarksSendInterceptor() {
6570
+ return (resourceRequest, context) => {
6571
+ if (context && context.instrumentationId) {
6572
+ createActionStartMark(context);
6573
+ }
6574
+ return resolvedPromiseLike$2(resourceRequest);
6575
+ };
6576
+ }
6577
+
6439
6578
  function isOneRuntime() {
6440
6579
  return !!globalThis.LWR;
6441
6580
  }
@@ -6562,6 +6701,7 @@ const composedFetchNetworkAdapter = {
6562
6701
  createContext: createInstrumentationIdContext(),
6563
6702
  request: [
6564
6703
  buildLuvioThirdPartyTrackerRegisterInterceptor(),
6704
+ buildLuvioActionMarksSendInterceptor(),
6565
6705
  buildLuvioTransportMarksSendInterceptor(),
6566
6706
  buildLuvioPageScopedCacheRequestInterceptor(),
6567
6707
  buildLuvioCsrfTokenInterceptor(),
@@ -6570,6 +6710,7 @@ const composedFetchNetworkAdapter = {
6570
6710
  buildLexRuntimeLuvio5xxStatusResponseInterceptor(),
6571
6711
  buildLexRuntimeLuvioAuthExpirationRedirectResponseInterceptor(),
6572
6712
  buildLuvioTransportMarksReceiveInterceptor(),
6713
+ buildLuvioActionMarksReceiveInterceptor(),
6573
6714
  ],
6574
6715
  finally: [buildLuvioThirdPartyTrackerFinishInterceptor()],
6575
6716
  }),
@@ -9540,11 +9681,12 @@ function matchesKey(keyQuery, key) {
9540
9681
  }
9541
9682
  function buildUpdate(update, existing) {
9542
9683
  switch (update.type) {
9543
- case "invalidate":
9684
+ case "invalidate": {
9544
9685
  const updatedCacheControl = buildInvalidatedCacheControl(
9545
9686
  existing.metadata.cacheControl
9546
9687
  );
9547
9688
  return updatedCacheControl !== void 0 ? { type: "metadata", metadata: updatedCacheControl } : { type: "no-op" };
9689
+ }
9548
9690
  default:
9549
9691
  throw new Error(`Invalid update operation: ${update.type}`);
9550
9692
  }
@@ -9559,6 +9701,7 @@ function buildInvalidatedCacheControl(existingCacheControl) {
9559
9701
  maxAge: 0
9560
9702
  };
9561
9703
  }
9704
+ break;
9562
9705
  }
9563
9706
  return void 0;
9564
9707
  }
@@ -9642,12 +9785,17 @@ function buildPageScopedCacheRequestInterceptor() {
9642
9785
  };
9643
9786
  }
9644
9787
 
9645
- function buildLexRuntimeDefaultFetchServiceDescriptor(logger, retryService) {
9646
- const fetchService = buildServiceDescriptor$2({
9788
+ /**
9789
+ * Returns the default interceptor configuration for LEX runtime fetch services.
9790
+ * This shared config ensures consistency across all LEX fetch service variants.
9791
+ */
9792
+ function getLexRuntimeDefaultInterceptorConfig(logger) {
9793
+ return {
9647
9794
  createContext: createInstrumentationIdContext(),
9648
9795
  request: [
9649
9796
  buildThirdPartyTrackerRegisterInterceptor(),
9650
9797
  buildPageScopedCacheRequestInterceptor(),
9798
+ buildActionMarksSendInterceptor(),
9651
9799
  buildTransportMarksSendInterceptor(),
9652
9800
  buildCsrfTokenInterceptor(),
9653
9801
  ],
@@ -9656,34 +9804,43 @@ function buildLexRuntimeDefaultFetchServiceDescriptor(logger, retryService) {
9656
9804
  buildLexRuntime5xxStatusResponseInterceptor(logger),
9657
9805
  buildLexRuntimeAuthExpirationRedirectResponseInterceptor(logger),
9658
9806
  buildTransportMarksReceiveInterceptor(),
9807
+ buildActionMarksReceiveInterceptor(),
9659
9808
  ],
9660
9809
  finally: [buildThirdPartyTrackerFinishInterceptor()],
9661
- }, retryService);
9662
- return {
9663
- ...fetchService,
9664
9810
  };
9665
9811
  }
9812
+ function buildLexRuntimeDefaultFetchServiceDescriptor(logger, retryService) {
9813
+ const fetchService = buildServiceDescriptor$2(getLexRuntimeDefaultInterceptorConfig(logger), retryService);
9814
+ return { ...fetchService };
9815
+ }
9666
9816
  function buildLexRuntimeAllow5xxFetchServiceDescriptor(logger, retryService) {
9817
+ const config = getLexRuntimeDefaultInterceptorConfig(logger);
9667
9818
  const fetchService = buildServiceDescriptor$2({
9668
- createContext: createInstrumentationIdContext(),
9669
- request: [
9670
- buildThirdPartyTrackerRegisterInterceptor(),
9671
- buildPageScopedCacheRequestInterceptor(),
9672
- buildTransportMarksSendInterceptor(),
9673
- buildCsrfTokenInterceptor(),
9674
- ],
9675
- retry: buildCsrfRetryInterceptor(),
9819
+ ...config,
9820
+ // Omit 5xx interceptor - allow 5xx responses to pass through
9676
9821
  response: [
9677
9822
  buildLexRuntimeAuthExpirationRedirectResponseInterceptor(logger),
9678
9823
  buildTransportMarksReceiveInterceptor(),
9824
+ buildActionMarksReceiveInterceptor(),
9679
9825
  ],
9680
- finally: [buildThirdPartyTrackerFinishInterceptor()],
9681
9826
  }, retryService);
9682
9827
  return {
9683
9828
  ...fetchService,
9684
9829
  tags: { interceptors: 'allow_500s' },
9685
9830
  };
9686
9831
  }
9832
+ function buildLexRuntimeCompressedFetchServiceDescriptor(logger, retryService) {
9833
+ const config = getLexRuntimeDefaultInterceptorConfig(logger);
9834
+ const fetchService = buildServiceDescriptor$2({
9835
+ ...config,
9836
+ // Append compression interceptor last, after any body-modifying interceptors
9837
+ request: [...config.request, buildCompressionInterceptor({ algorithm: 'gzip' })],
9838
+ }, retryService);
9839
+ return {
9840
+ ...fetchService,
9841
+ tags: { compression: 'gzip' },
9842
+ };
9843
+ }
9687
9844
 
9688
9845
  const DEFAULT_CONFIG = {
9689
9846
  maxRetries: 3,
@@ -10316,6 +10473,11 @@ function initializeOneStore(luvio) {
10316
10473
  const retryPolicy = new ComposedRetryPolicy([throttlingPolicy, csrfPolicy]);
10317
10474
  const retryServiceDescriptor = buildServiceDescriptor$8(retryPolicy);
10318
10475
  const retryService = retryServiceDescriptor.service;
10476
+ const prefetchSfapJwtServiceDescriptor = {
10477
+ type: 'prefetchSfapJwt',
10478
+ version: '1.0',
10479
+ service: prefetchSfapJwt,
10480
+ };
10319
10481
  // set flags based on gates
10320
10482
  featureFlagsService.set('useOneStoreGraphQL', useOneStoreGraphql.isOpen({ fallback: false }));
10321
10483
  const services = [
@@ -10340,6 +10502,7 @@ function initializeOneStore(luvio) {
10340
10502
  buildServiceDescriptor$n(),
10341
10503
  buildServiceDescriptor$f(),
10342
10504
  buildLexRuntimeAllow5xxFetchServiceDescriptor(loggerService, retryService),
10505
+ buildLexRuntimeCompressedFetchServiceDescriptor(loggerService, retryService),
10343
10506
  buildServiceDescriptor$d(luvio),
10344
10507
  luvioUiapiRecordsServiceDescriptor,
10345
10508
  buildServiceDescriptor$c(),
@@ -10356,6 +10519,7 @@ function initializeOneStore(luvio) {
10356
10519
  buildLWCWireBindingsServiceDescriptor(),
10357
10520
  buildLWCGraphQLWireBindingsServiceDescriptor(),
10358
10521
  configServiceDescriptor,
10522
+ prefetchSfapJwtServiceDescriptor,
10359
10523
  ];
10360
10524
  setServices(services);
10361
10525
  }
@@ -10375,4 +10539,4 @@ function ldsEngineCreator() {
10375
10539
  }
10376
10540
 
10377
10541
  export { LexRequestStrategy, PdlPrefetcherEventType, PdlRequestPriority, buildPredictorForContext, configService, ldsEngineCreator as default, initializeLDS, initializeOneStore, notifyUpdateAvailableFactory, registerRequestStrategy, saveRequestAsPrediction, subscribeToPrefetcherEvents, unregisterRequestStrategy, whenPredictionsReady };
10378
- // version: 1.416.1-0ee8f9a6ba
10542
+ // version: 1.417.0-8e5ac81c4c
@@ -9,7 +9,7 @@ export declare function gauge(): {
9
9
  getValue(): void;
10
10
  reset(): void;
11
11
  };
12
- export declare function mark(): void;
12
+ export declare function mark(): {};
13
13
  export declare function markStart(): {};
14
14
  export declare function markEnd(): {};
15
15
  export declare function perfStart(): void;
@@ -3,3 +3,4 @@ import { type FetchServiceDescriptor } from '@conduit-client/service-fetch-netwo
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 buildLexRuntimeCompressedFetchServiceDescriptor(logger: LoggerService, retryService?: RetryService<Response>): FetchServiceDescriptor;
@@ -1,8 +1,10 @@
1
1
  export declare function createInstrumentationIdContext(): () => {
2
2
  instrumentationId: string;
3
3
  };
4
- export declare function createStartMark(requestId: string): void;
5
- export declare function createEndMark(responseStatus: number, responseStatusText: string, url: string, context?: any, errorMessage?: string): void;
4
+ export declare function createTransportStartMark(requestId: string): void;
5
+ export declare function createActionStartMark(context: any): void;
6
+ export declare function createActionEndMark(responseStatus: number, responseStatusText: string, serverTiming: string | null, url: string, instrumentationId: any): void;
7
+ export declare function createTransportEndMark(responseStatus: number, responseStatusText: string, url: string, context?: any, errorMessage?: string): void;
6
8
  export type RequestTracker = {
7
9
  hasTracker: () => boolean;
8
10
  registerHandler: (request: any, name: string, loadedCheck: () => boolean) => void;
@@ -10,6 +10,7 @@ export type ExtraInfo = {
10
10
  * {@link JwtResolver} for platform SFAP
11
11
  */
12
12
  export declare const platformSfapJwtResolver: JwtResolver<ExtraInfo>;
13
+ export declare function prefetchSfapJwt(): Promise<undefined>;
13
14
  declare const composedNetworkAdapter: {
14
15
  shouldHandleRequest(resourceRequest: ResourceRequest): boolean;
15
16
  adapter: (resourceRequest: ResourceRequest, resourceRequestContext: ResourceRequestContext) => Promise<FetchResponse<any>>;
@@ -0,0 +1,4 @@
1
+ import { RequestInterceptor } from '@conduit-client/service-fetch-network/v1';
2
+ import { ResourceRequest } from '@luvio/engine';
3
+ export declare function buildActionMarksSendInterceptor(): RequestInterceptor;
4
+ export declare function buildLuvioActionMarksSendInterceptor(): (resourceRequest: ResourceRequest, context?: any) => PromiseLike<ResourceRequest>;
@@ -0,0 +1,4 @@
1
+ import { ResponseInterceptor } from '@conduit-client/service-fetch-network/v1';
2
+ import { ResponseInterceptor as LuvioResponseInterceptor } from '@salesforce/lds-network-fetch';
3
+ export declare function buildActionMarksReceiveInterceptor(): ResponseInterceptor;
4
+ export declare function buildLuvioActionMarksReceiveInterceptor(): LuvioResponseInterceptor;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/lds-runtime-aura",
3
- "version": "1.416.1",
3
+ "version": "1.417.0",
4
4
  "license": "SEE LICENSE IN LICENSE.txt",
5
5
  "description": "LDS engine for Aura runtime",
6
6
  "main": "dist/ldsEngineCreator.js",
@@ -34,58 +34,58 @@
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.9.0",
38
- "@conduit-client/tools-core": "3.9.0",
39
- "@salesforce/lds-adapters-apex": "^1.416.1",
40
- "@salesforce/lds-adapters-uiapi": "^1.416.1",
41
- "@salesforce/lds-ads-bridge": "^1.416.1",
42
- "@salesforce/lds-aura-storage": "^1.416.1",
43
- "@salesforce/lds-bindings": "^1.416.1",
44
- "@salesforce/lds-instrumentation": "^1.416.1",
45
- "@salesforce/lds-network-aura": "^1.416.1",
46
- "@salesforce/lds-network-fetch": "^1.416.1",
37
+ "@conduit-client/service-provisioner": "3.13.1",
38
+ "@conduit-client/tools-core": "3.13.1",
39
+ "@salesforce/lds-adapters-apex": "^1.417.0",
40
+ "@salesforce/lds-adapters-uiapi": "^1.417.0",
41
+ "@salesforce/lds-ads-bridge": "^1.417.0",
42
+ "@salesforce/lds-aura-storage": "^1.417.0",
43
+ "@salesforce/lds-bindings": "^1.417.0",
44
+ "@salesforce/lds-instrumentation": "^1.417.0",
45
+ "@salesforce/lds-network-aura": "^1.417.0",
46
+ "@salesforce/lds-network-fetch": "^1.417.0",
47
47
  "jwt-encode": "1.0.1"
48
48
  },
49
49
  "dependencies": {
50
- "@conduit-client/command-aura-graphql-normalized-cache-control": "3.9.0",
51
- "@conduit-client/command-aura-network": "3.9.0",
52
- "@conduit-client/command-aura-normalized-cache-control": "3.9.0",
53
- "@conduit-client/command-aura-resource-cache-control": "3.9.0",
54
- "@conduit-client/command-fetch-network": "3.9.0",
55
- "@conduit-client/command-http-graphql-normalized-cache-control": "3.9.0",
56
- "@conduit-client/command-http-normalized-cache-control": "3.9.0",
57
- "@conduit-client/command-ndjson": "3.9.0",
58
- "@conduit-client/command-network": "3.9.0",
59
- "@conduit-client/command-sse": "3.9.0",
60
- "@conduit-client/command-streaming": "3.9.0",
61
- "@conduit-client/service-aura-network": "3.9.0",
62
- "@conduit-client/service-bindings-imperative": "3.9.0",
63
- "@conduit-client/service-bindings-lwc": "3.9.0",
64
- "@conduit-client/service-cache": "3.9.0",
65
- "@conduit-client/service-cache-control": "3.9.0",
66
- "@conduit-client/service-cache-inclusion-policy": "3.9.0",
67
- "@conduit-client/service-config": "3.9.0",
68
- "@conduit-client/service-feature-flags": "3.9.0",
69
- "@conduit-client/service-fetch-network": "3.9.0",
70
- "@conduit-client/service-instrument-command": "3.9.0",
71
- "@conduit-client/service-pubsub": "3.9.0",
72
- "@conduit-client/service-store": "3.9.0",
73
- "@conduit-client/utils": "3.9.0",
74
- "@luvio/network-adapter-composable": "0.159.0",
75
- "@luvio/network-adapter-fetch": "0.159.0",
50
+ "@conduit-client/command-aura-graphql-normalized-cache-control": "3.13.1",
51
+ "@conduit-client/command-aura-network": "3.13.1",
52
+ "@conduit-client/command-aura-normalized-cache-control": "3.13.1",
53
+ "@conduit-client/command-aura-resource-cache-control": "3.13.1",
54
+ "@conduit-client/command-fetch-network": "3.13.1",
55
+ "@conduit-client/command-http-graphql-normalized-cache-control": "3.13.1",
56
+ "@conduit-client/command-http-normalized-cache-control": "3.13.1",
57
+ "@conduit-client/command-ndjson": "3.13.1",
58
+ "@conduit-client/command-network": "3.13.1",
59
+ "@conduit-client/command-sse": "3.13.1",
60
+ "@conduit-client/command-streaming": "3.13.1",
61
+ "@conduit-client/service-aura-network": "3.13.1",
62
+ "@conduit-client/service-bindings-imperative": "3.13.1",
63
+ "@conduit-client/service-bindings-lwc": "3.13.1",
64
+ "@conduit-client/service-cache": "3.13.1",
65
+ "@conduit-client/service-cache-control": "3.13.1",
66
+ "@conduit-client/service-cache-inclusion-policy": "3.13.1",
67
+ "@conduit-client/service-config": "3.13.1",
68
+ "@conduit-client/service-feature-flags": "3.13.1",
69
+ "@conduit-client/service-fetch-network": "3.13.1",
70
+ "@conduit-client/service-instrument-command": "3.13.1",
71
+ "@conduit-client/service-pubsub": "3.13.1",
72
+ "@conduit-client/service-store": "3.13.1",
73
+ "@conduit-client/utils": "3.13.1",
74
+ "@luvio/network-adapter-composable": "0.160.1",
75
+ "@luvio/network-adapter-fetch": "0.160.1",
76
76
  "@lwc/state": "^0.23.0",
77
- "@salesforce/lds-adapters-onestore-graphql": "^1.416.1",
77
+ "@salesforce/lds-adapters-onestore-graphql": "^1.417.0",
78
78
  "@salesforce/lds-adapters-uiapi-lex": "^1.415.0",
79
- "@salesforce/lds-luvio-service": "^1.416.1",
80
- "@salesforce/lds-luvio-uiapi-records-service": "^1.416.1"
79
+ "@salesforce/lds-luvio-service": "^1.417.0",
80
+ "@salesforce/lds-luvio-uiapi-records-service": "^1.417.0"
81
81
  },
82
82
  "luvioBundlesize": [
83
83
  {
84
84
  "path": "./dist/ldsEngineCreator.js",
85
85
  "maxSize": {
86
- "none": "365 kB",
86
+ "none": "370 kB",
87
87
  "min": "190 kB",
88
- "compressed": "59.2 kB"
88
+ "compressed": "60.8 kB"
89
89
  }
90
90
  }
91
91
  ],