@salesforce/lds-runtime-aura 1.416.1 → 1.418.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.418.0-68f5961c99
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.418.0-68f5961c99
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;
3964
3959
  }
3960
+ if (isUserVisibleError$1(res.error)) {
3961
+ resolve();
3962
+ return;
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,52 @@ function buildServiceDescriptor$2(interceptors = {
4424
4428
  }
4425
4429
  };
4426
4430
  }
4431
+ let textEncoder;
4432
+ function getTextEncoder() {
4433
+ if (!textEncoder) {
4434
+ if (typeof TextEncoder === "undefined") {
4435
+ throw new Error(
4436
+ "TextEncoder is not available in this environment. Request body compression requires TextEncoder support."
4437
+ );
4438
+ }
4439
+ textEncoder = new TextEncoder();
4440
+ }
4441
+ return textEncoder;
4442
+ }
4443
+ function buildCompressionInterceptor(config) {
4444
+ const threshold = config.threshold ?? 1024;
4445
+ return async (args) => {
4446
+ const [resource, options = {}] = args;
4447
+ if (!options.body || typeof options.body !== "string") {
4448
+ return resolvedPromiseLike$2(args);
4449
+ }
4450
+ if (typeof CompressionStream === "undefined") {
4451
+ return resolvedPromiseLike$2(args);
4452
+ }
4453
+ const headers = new Headers(options.headers);
4454
+ if (headers.has("Content-Encoding")) {
4455
+ return resolvedPromiseLike$2(args);
4456
+ }
4457
+ const encodedBody = getTextEncoder().encode(options.body);
4458
+ if (encodedBody.byteLength < threshold) {
4459
+ return resolvedPromiseLike$2(args);
4460
+ }
4461
+ try {
4462
+ const stream = new Blob([encodedBody]).stream().pipeThrough(new CompressionStream(config.algorithm));
4463
+ const compressedBody = await new Response(stream).blob();
4464
+ headers.set("Content-Encoding", config.algorithm);
4465
+ headers.delete("Content-Length");
4466
+ const compressedOptions = {
4467
+ ...options,
4468
+ body: compressedBody,
4469
+ headers
4470
+ };
4471
+ return resolvedPromiseLike$2([resource, compressedOptions]);
4472
+ } catch {
4473
+ return resolvedPromiseLike$2(args);
4474
+ }
4475
+ };
4476
+ }
4427
4477
  function setHeader(headerName, headerValue, [resource, options = {}], {
4428
4478
  throwOnExisting = false,
4429
4479
  errorMessage = `Unexpected ${headerName} header encountered`
@@ -4581,7 +4631,7 @@ var TypeCheckShapes;
4581
4631
  TypeCheckShapes[TypeCheckShapes["Integer"] = 3] = "Integer";
4582
4632
  TypeCheckShapes[TypeCheckShapes["Unsupported"] = 4] = "Unsupported";
4583
4633
  })(TypeCheckShapes || (TypeCheckShapes = {}));
4584
- // engine version: 0.159.0-6e2a1824
4634
+ // engine version: 0.160.1-e075b880
4585
4635
 
4586
4636
  const { keys: keys$1 } = Object;
4587
4637
 
@@ -4725,6 +4775,13 @@ const platformSfapJwtResolver = {
4725
4775
  },
4726
4776
  };
4727
4777
  const jwtManager = new JwtManager(new JwtRepository(), platformSfapJwtResolver);
4778
+ function prefetchSfapJwt() {
4779
+ const maybePromise = jwtManager.getJwt();
4780
+ if ('then' in maybePromise) {
4781
+ return maybePromise.then(() => undefined).catch(() => undefined);
4782
+ }
4783
+ return Promise.resolve(undefined);
4784
+ }
4728
4785
  const authenticateRequest = (resourceRequest, jwt) => {
4729
4786
  const { token } = jwt;
4730
4787
  const { headers } = resourceRequest;
@@ -5586,7 +5643,7 @@ function getEnvironmentSetting(name) {
5586
5643
  }
5587
5644
  return undefined;
5588
5645
  }
5589
- // version: 1.416.1-c10be671f4
5646
+ // version: 1.418.0-68f5961c99
5590
5647
 
5591
5648
  const environmentHasAura = typeof window !== 'undefined' && typeof window.$A !== 'undefined';
5592
5649
  const defaultConfig = {
@@ -6256,7 +6313,7 @@ function createInstrumentationIdContext() {
6256
6313
  instrumentationId: generateRequestId(),
6257
6314
  });
6258
6315
  }
6259
- function createStartMark(requestId) {
6316
+ function createTransportStartMark(requestId) {
6260
6317
  const startMark = markStart('transport', 'request');
6261
6318
  startMark.context = {
6262
6319
  auraXHRId: requestId,
@@ -6266,7 +6323,29 @@ function createStartMark(requestId) {
6266
6323
  requestLength: -1, // not known
6267
6324
  };
6268
6325
  }
6269
- function createEndMark(responseStatus, responseStatusText, url, context, errorMessage) {
6326
+ function createActionStartMark(context) {
6327
+ const startMark = mark('actions', 'enqueue');
6328
+ startMark.context = {
6329
+ id: context.instrumentationId,
6330
+ cmp: context.cmp || 'none',
6331
+ source: 'lds-fetch',
6332
+ };
6333
+ mark('actions', 'sendQueued', startMark.context);
6334
+ mark('actions', 'sendStart', startMark.context);
6335
+ }
6336
+ function createActionEndMark(responseStatus, responseStatusText, serverTiming, url, instrumentationId) {
6337
+ const ctx = {
6338
+ id: instrumentationId,
6339
+ state: responseStatusText || getResponseStatusText(responseStatus.toString()),
6340
+ def: url,
6341
+ };
6342
+ // this step adds the serverTime to the base object, as opposed to being in the context field
6343
+ const receiveCtx = { ...ctx, serverTime: getServerTimeObject(serverTiming) };
6344
+ mark('actions', 'receive', receiveCtx);
6345
+ mark('actions', 'finishStart', ctx);
6346
+ mark('actions', 'finishEnd', ctx);
6347
+ }
6348
+ function createTransportEndMark(responseStatus, responseStatusText, url, context, errorMessage) {
6270
6349
  if (context && context.instrumentationId) {
6271
6350
  const endMark = markEnd('transport', 'request', { auraXHRId: context.instrumentationId });
6272
6351
  if (performance && performance.getEntriesByName) {
@@ -6304,7 +6383,7 @@ function setResourceTimings(id, responseStatus, responseStatusText, endMark, r)
6304
6383
  statusText: responseStatusText,
6305
6384
  // Timings fields
6306
6385
  responseLength: r.decodedBodySize || 0,
6307
- serverTime: r.serverTiming || 0,
6386
+ serverTime: r.serverTiming && r.serverTiming.length ? getServerTiming(r.serverTiming) : 0,
6308
6387
  xhrDuration: Math.floor(r.responseEnd - r.startTime),
6309
6388
  xhrStall: Math.floor(r.requestStart - r.startTime),
6310
6389
  startTime: Math.floor(r.startTime),
@@ -6318,6 +6397,35 @@ function setResourceTimings(id, responseStatus, responseStatusText, endMark, r)
6318
6397
  nextHopProtocol: r['nextHopProtocol'],
6319
6398
  };
6320
6399
  }
6400
+ // this is for action marks
6401
+ function getServerTimeObject(serverTime) {
6402
+ if (serverTime) {
6403
+ const parsedServerTime = serverTime.split(',');
6404
+ const ret = {
6405
+ total: 0,
6406
+ db: 0,
6407
+ };
6408
+ if (parsedServerTime.length === 2) {
6409
+ if (parsedServerTime[0].startsWith('Total;dur=')) {
6410
+ ret.total = parseInt(parsedServerTime[0].split('=')[1]);
6411
+ }
6412
+ if (parsedServerTime[1].startsWith('Db;dur=')) {
6413
+ ret.db = parseInt(parsedServerTime[1].split('=')[1]);
6414
+ }
6415
+ }
6416
+ return ret;
6417
+ }
6418
+ return {};
6419
+ }
6420
+ // this is for transport marks
6421
+ function getServerTiming(serverTiming) {
6422
+ for (let timing in serverTiming) {
6423
+ if (serverTiming[timing].name === 'Total') {
6424
+ return serverTiming[timing].duration;
6425
+ }
6426
+ }
6427
+ return 0;
6428
+ }
6321
6429
  function findCorrectResource(resources, context) {
6322
6430
  if (context && context.startTime) {
6323
6431
  let likelyResource = {
@@ -6334,6 +6442,15 @@ function findCorrectResource(resources, context) {
6334
6442
  }
6335
6443
  return undefined;
6336
6444
  }
6445
+ function getResponseStatusText(responseCode) {
6446
+ if (responseCode.startsWith('2')) {
6447
+ return 'SUCCESS';
6448
+ }
6449
+ else if (responseCode.startsWith('4') || responseCode.startsWith('5')) {
6450
+ return 'ERROR';
6451
+ }
6452
+ return 'UNKNOWN';
6453
+ }
6337
6454
  // Copied from requestId generation on core
6338
6455
  function generateRequestId() {
6339
6456
  function guid() {
@@ -6377,7 +6494,7 @@ function buildTransportMarksSendInterceptor() {
6377
6494
  const requestId = context.instrumentationId;
6378
6495
  fetchArgs = setHeader(SFDC_REQUEST_ID_KEY, requestId, fetchArgs);
6379
6496
  context.startTime = performance.now();
6380
- createStartMark(requestId);
6497
+ createTransportStartMark(requestId);
6381
6498
  }
6382
6499
  return resolvedPromiseLike$2(fetchArgs);
6383
6500
  };
@@ -6388,8 +6505,7 @@ function buildLuvioTransportMarksSendInterceptor() {
6388
6505
  const requestId = context.instrumentationId;
6389
6506
  setLuvioRequestIdHeader(resourceRequest, requestId);
6390
6507
  context.startTime = performance.now();
6391
- context.url = location.origin + resourceRequest.baseUri + resourceRequest.basePath;
6392
- createStartMark(requestId);
6508
+ createTransportStartMark(requestId);
6393
6509
  }
6394
6510
  return resolvedPromiseLike$2(resourceRequest);
6395
6511
  };
@@ -6413,7 +6529,7 @@ function buildTransportMarksReceiveInterceptor() {
6413
6529
  .clone()
6414
6530
  .text()
6415
6531
  .then(() => {
6416
- createEndMark(response.status, response.statusText, response.url, context, `OneStore resource timing failed to match for: ${response.url}`);
6532
+ createTransportEndMark(response.status, response.statusText, response.url, context, `OneStore resource timing failed to match for: ${response.url}`);
6417
6533
  })
6418
6534
  .catch((e) => {
6419
6535
  logMessage(`OneStore transport marks received failed with: ${e}`);
@@ -6426,7 +6542,7 @@ function buildLuvioTransportMarksReceiveInterceptor() {
6426
6542
  if (context && context.url) {
6427
6543
  Promise.resolve(response)
6428
6544
  .then(() => {
6429
- createEndMark(response.status, response.statusText, context.url, context, `Luvio resource timing failed to match for: ${context.url}`);
6545
+ createTransportEndMark(response.status, response.statusText, context.url, context, `Luvio resource timing failed to match for: ${context.url}`);
6430
6546
  })
6431
6547
  .catch((e) => {
6432
6548
  logMessage(`Luvio transport marks received failed with: ${e}`);
@@ -6436,6 +6552,40 @@ function buildLuvioTransportMarksReceiveInterceptor() {
6436
6552
  };
6437
6553
  }
6438
6554
 
6555
+ function buildActionMarksReceiveInterceptor() {
6556
+ return async (response, context) => {
6557
+ if (context && context.instrumentationId) {
6558
+ createActionEndMark(response.status, response.statusText, response.headers.get('server-timing'), response.url, context.instrumentationId);
6559
+ }
6560
+ return response;
6561
+ };
6562
+ }
6563
+ function buildLuvioActionMarksReceiveInterceptor() {
6564
+ return async (response, context) => {
6565
+ if (context && context.instrumentationId) {
6566
+ createActionEndMark(response.status, response.statusText, response.headers['server-timing'], context.url, context.instrumentationId);
6567
+ }
6568
+ return response;
6569
+ };
6570
+ }
6571
+
6572
+ function buildActionMarksSendInterceptor() {
6573
+ return async (fetchArgs, context) => {
6574
+ if (context && context.instrumentationId) {
6575
+ createActionStartMark(context);
6576
+ }
6577
+ return resolvedPromiseLike$2(fetchArgs);
6578
+ };
6579
+ }
6580
+ function buildLuvioActionMarksSendInterceptor() {
6581
+ return (resourceRequest, context) => {
6582
+ if (context && context.instrumentationId) {
6583
+ createActionStartMark(context);
6584
+ }
6585
+ return resolvedPromiseLike$2(resourceRequest);
6586
+ };
6587
+ }
6588
+
6439
6589
  function isOneRuntime() {
6440
6590
  return !!globalThis.LWR;
6441
6591
  }
@@ -6562,6 +6712,7 @@ const composedFetchNetworkAdapter = {
6562
6712
  createContext: createInstrumentationIdContext(),
6563
6713
  request: [
6564
6714
  buildLuvioThirdPartyTrackerRegisterInterceptor(),
6715
+ buildLuvioActionMarksSendInterceptor(),
6565
6716
  buildLuvioTransportMarksSendInterceptor(),
6566
6717
  buildLuvioPageScopedCacheRequestInterceptor(),
6567
6718
  buildLuvioCsrfTokenInterceptor(),
@@ -6570,6 +6721,7 @@ const composedFetchNetworkAdapter = {
6570
6721
  buildLexRuntimeLuvio5xxStatusResponseInterceptor(),
6571
6722
  buildLexRuntimeLuvioAuthExpirationRedirectResponseInterceptor(),
6572
6723
  buildLuvioTransportMarksReceiveInterceptor(),
6724
+ buildLuvioActionMarksReceiveInterceptor(),
6573
6725
  ],
6574
6726
  finally: [buildLuvioThirdPartyTrackerFinishInterceptor()],
6575
6727
  }),
@@ -9540,11 +9692,12 @@ function matchesKey(keyQuery, key) {
9540
9692
  }
9541
9693
  function buildUpdate(update, existing) {
9542
9694
  switch (update.type) {
9543
- case "invalidate":
9695
+ case "invalidate": {
9544
9696
  const updatedCacheControl = buildInvalidatedCacheControl(
9545
9697
  existing.metadata.cacheControl
9546
9698
  );
9547
9699
  return updatedCacheControl !== void 0 ? { type: "metadata", metadata: updatedCacheControl } : { type: "no-op" };
9700
+ }
9548
9701
  default:
9549
9702
  throw new Error(`Invalid update operation: ${update.type}`);
9550
9703
  }
@@ -9559,6 +9712,7 @@ function buildInvalidatedCacheControl(existingCacheControl) {
9559
9712
  maxAge: 0
9560
9713
  };
9561
9714
  }
9715
+ break;
9562
9716
  }
9563
9717
  return void 0;
9564
9718
  }
@@ -9642,12 +9796,17 @@ function buildPageScopedCacheRequestInterceptor() {
9642
9796
  };
9643
9797
  }
9644
9798
 
9645
- function buildLexRuntimeDefaultFetchServiceDescriptor(logger, retryService) {
9646
- const fetchService = buildServiceDescriptor$2({
9799
+ /**
9800
+ * Returns the default interceptor configuration for LEX runtime fetch services.
9801
+ * This shared config ensures consistency across all LEX fetch service variants.
9802
+ */
9803
+ function getLexRuntimeDefaultInterceptorConfig(logger) {
9804
+ return {
9647
9805
  createContext: createInstrumentationIdContext(),
9648
9806
  request: [
9649
9807
  buildThirdPartyTrackerRegisterInterceptor(),
9650
9808
  buildPageScopedCacheRequestInterceptor(),
9809
+ buildActionMarksSendInterceptor(),
9651
9810
  buildTransportMarksSendInterceptor(),
9652
9811
  buildCsrfTokenInterceptor(),
9653
9812
  ],
@@ -9656,34 +9815,43 @@ function buildLexRuntimeDefaultFetchServiceDescriptor(logger, retryService) {
9656
9815
  buildLexRuntime5xxStatusResponseInterceptor(logger),
9657
9816
  buildLexRuntimeAuthExpirationRedirectResponseInterceptor(logger),
9658
9817
  buildTransportMarksReceiveInterceptor(),
9818
+ buildActionMarksReceiveInterceptor(),
9659
9819
  ],
9660
9820
  finally: [buildThirdPartyTrackerFinishInterceptor()],
9661
- }, retryService);
9662
- return {
9663
- ...fetchService,
9664
9821
  };
9665
9822
  }
9823
+ function buildLexRuntimeDefaultFetchServiceDescriptor(logger, retryService) {
9824
+ const fetchService = buildServiceDescriptor$2(getLexRuntimeDefaultInterceptorConfig(logger), retryService);
9825
+ return { ...fetchService };
9826
+ }
9666
9827
  function buildLexRuntimeAllow5xxFetchServiceDescriptor(logger, retryService) {
9828
+ const config = getLexRuntimeDefaultInterceptorConfig(logger);
9667
9829
  const fetchService = buildServiceDescriptor$2({
9668
- createContext: createInstrumentationIdContext(),
9669
- request: [
9670
- buildThirdPartyTrackerRegisterInterceptor(),
9671
- buildPageScopedCacheRequestInterceptor(),
9672
- buildTransportMarksSendInterceptor(),
9673
- buildCsrfTokenInterceptor(),
9674
- ],
9675
- retry: buildCsrfRetryInterceptor(),
9830
+ ...config,
9831
+ // Omit 5xx interceptor - allow 5xx responses to pass through
9676
9832
  response: [
9677
9833
  buildLexRuntimeAuthExpirationRedirectResponseInterceptor(logger),
9678
9834
  buildTransportMarksReceiveInterceptor(),
9835
+ buildActionMarksReceiveInterceptor(),
9679
9836
  ],
9680
- finally: [buildThirdPartyTrackerFinishInterceptor()],
9681
9837
  }, retryService);
9682
9838
  return {
9683
9839
  ...fetchService,
9684
9840
  tags: { interceptors: 'allow_500s' },
9685
9841
  };
9686
9842
  }
9843
+ function buildLexRuntimeCompressedFetchServiceDescriptor(logger, retryService) {
9844
+ const config = getLexRuntimeDefaultInterceptorConfig(logger);
9845
+ const fetchService = buildServiceDescriptor$2({
9846
+ ...config,
9847
+ // Append compression interceptor last, after any body-modifying interceptors
9848
+ request: [...config.request, buildCompressionInterceptor({ algorithm: 'gzip' })],
9849
+ }, retryService);
9850
+ return {
9851
+ ...fetchService,
9852
+ tags: { compression: 'gzip' },
9853
+ };
9854
+ }
9687
9855
 
9688
9856
  const DEFAULT_CONFIG = {
9689
9857
  maxRetries: 3,
@@ -10316,6 +10484,11 @@ function initializeOneStore(luvio) {
10316
10484
  const retryPolicy = new ComposedRetryPolicy([throttlingPolicy, csrfPolicy]);
10317
10485
  const retryServiceDescriptor = buildServiceDescriptor$8(retryPolicy);
10318
10486
  const retryService = retryServiceDescriptor.service;
10487
+ const prefetchSfapJwtServiceDescriptor = {
10488
+ type: 'prefetchSfapJwt',
10489
+ version: '1.0',
10490
+ service: prefetchSfapJwt,
10491
+ };
10319
10492
  // set flags based on gates
10320
10493
  featureFlagsService.set('useOneStoreGraphQL', useOneStoreGraphql.isOpen({ fallback: false }));
10321
10494
  const services = [
@@ -10340,6 +10513,7 @@ function initializeOneStore(luvio) {
10340
10513
  buildServiceDescriptor$n(),
10341
10514
  buildServiceDescriptor$f(),
10342
10515
  buildLexRuntimeAllow5xxFetchServiceDescriptor(loggerService, retryService),
10516
+ buildLexRuntimeCompressedFetchServiceDescriptor(loggerService, retryService),
10343
10517
  buildServiceDescriptor$d(luvio),
10344
10518
  luvioUiapiRecordsServiceDescriptor,
10345
10519
  buildServiceDescriptor$c(),
@@ -10356,6 +10530,7 @@ function initializeOneStore(luvio) {
10356
10530
  buildLWCWireBindingsServiceDescriptor(),
10357
10531
  buildLWCGraphQLWireBindingsServiceDescriptor(),
10358
10532
  configServiceDescriptor,
10533
+ prefetchSfapJwtServiceDescriptor,
10359
10534
  ];
10360
10535
  setServices(services);
10361
10536
  }
@@ -10375,4 +10550,4 @@ function ldsEngineCreator() {
10375
10550
  }
10376
10551
 
10377
10552
  export { LexRequestStrategy, PdlPrefetcherEventType, PdlRequestPriority, buildPredictorForContext, configService, ldsEngineCreator as default, initializeLDS, initializeOneStore, notifyUpdateAvailableFactory, registerRequestStrategy, saveRequestAsPrediction, subscribeToPrefetcherEvents, unregisterRequestStrategy, whenPredictionsReady };
10378
- // version: 1.416.1-0ee8f9a6ba
10553
+ // version: 1.418.0-b4def2b6ce
@@ -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.418.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.14.0",
38
+ "@conduit-client/tools-core": "3.14.0",
39
+ "@salesforce/lds-adapters-apex": "^1.418.0",
40
+ "@salesforce/lds-adapters-uiapi": "^1.418.0",
41
+ "@salesforce/lds-ads-bridge": "^1.418.0",
42
+ "@salesforce/lds-aura-storage": "^1.418.0",
43
+ "@salesforce/lds-bindings": "^1.418.0",
44
+ "@salesforce/lds-instrumentation": "^1.418.0",
45
+ "@salesforce/lds-network-aura": "^1.418.0",
46
+ "@salesforce/lds-network-fetch": "^1.418.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.14.0",
51
+ "@conduit-client/command-aura-network": "3.14.0",
52
+ "@conduit-client/command-aura-normalized-cache-control": "3.14.0",
53
+ "@conduit-client/command-aura-resource-cache-control": "3.14.0",
54
+ "@conduit-client/command-fetch-network": "3.14.0",
55
+ "@conduit-client/command-http-graphql-normalized-cache-control": "3.14.0",
56
+ "@conduit-client/command-http-normalized-cache-control": "3.14.0",
57
+ "@conduit-client/command-ndjson": "3.14.0",
58
+ "@conduit-client/command-network": "3.14.0",
59
+ "@conduit-client/command-sse": "3.14.0",
60
+ "@conduit-client/command-streaming": "3.14.0",
61
+ "@conduit-client/service-aura-network": "3.14.0",
62
+ "@conduit-client/service-bindings-imperative": "3.14.0",
63
+ "@conduit-client/service-bindings-lwc": "3.14.0",
64
+ "@conduit-client/service-cache": "3.14.0",
65
+ "@conduit-client/service-cache-control": "3.14.0",
66
+ "@conduit-client/service-cache-inclusion-policy": "3.14.0",
67
+ "@conduit-client/service-config": "3.14.0",
68
+ "@conduit-client/service-feature-flags": "3.14.0",
69
+ "@conduit-client/service-fetch-network": "3.14.0",
70
+ "@conduit-client/service-instrument-command": "3.14.0",
71
+ "@conduit-client/service-pubsub": "3.14.0",
72
+ "@conduit-client/service-store": "3.14.0",
73
+ "@conduit-client/utils": "3.14.0",
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.418.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.418.0",
80
+ "@salesforce/lds-luvio-uiapi-records-service": "^1.418.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
  ],