@salesforce/lds-runtime-aura 1.404.0-dev4 → 1.404.0-dev5

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.
@@ -22,8 +22,9 @@ import useCmpDefPredictions from '@salesforce/gate/lds.pdl.useCmpDefPredictions'
22
22
  import applyPredictionRequestLimit from '@salesforce/gate/lds.pdl.applyRequestLimit';
23
23
  import useLocalStorage from '@salesforce/gate/lds.pdl.useLocalStorage';
24
24
  import useOneStoreGraphql from '@salesforce/gate/lds.oneStoreGraphqlEnabled.ltng';
25
+ import canCombineRecordLayoutRequests from '@salesforce/gate/lds.pdl.canCombineRecordLayoutRequests';
25
26
  import { GetApexWireAdapterFactory, registerPrefetcher as registerPrefetcher$1 } from 'force/ldsAdaptersApex';
26
- import { instrument, getRecordAvatarsAdapterFactory, getRecordAdapterFactory, coerceFieldIdArray, getRecordsAdapterFactory, getRecordActionsAdapterFactory, getObjectInfosAdapterFactory, coerceObjectIdArray, getObjectInfoAdapterFactory, coerceObjectId, getRelatedListsActionsAdapterFactory, getRelatedListInfoBatchAdapterFactory, getRelatedListInfoAdapterFactory, getRelatedListRecordsBatchAdapterFactory, getRelatedListRecordsAdapterFactory, getListInfoByNameAdapterFactory, getListInfosByObjectNameAdapterFactory, getListRecordsByNameAdapterFactory, getListObjectInfoAdapterFactory, getRelatedListsInfoAdapterFactory, getRelatedListActionsAdapterFactory, getRecordId18Array, buildRecordRepKeyFromId, configuration, InMemoryRecordRepresentationQueryEvaluator, UiApiNamespace, RecordRepresentationRepresentationType, registerPrefetcher, RecordRepresentationVersion } from 'force/ldsAdaptersUiapi';
27
+ import { instrument, getRecordAvatarsAdapterFactory, getRecordAdapterFactory, coerceFieldIdArray, coerceLayoutTypeArray, coerceLayoutModeArray, getRecordsAdapterFactory, getRecordActionsAdapterFactory, getObjectInfosAdapterFactory, coerceObjectIdArray, getObjectInfoAdapterFactory, coerceObjectId, getRelatedListsActionsAdapterFactory, getRelatedListInfoBatchAdapterFactory, getRelatedListInfoAdapterFactory, getRelatedListRecordsBatchAdapterFactory, getRelatedListRecordsAdapterFactory, getListInfoByNameAdapterFactory, getListInfosByObjectNameAdapterFactory, getListRecordsByNameAdapterFactory, getListObjectInfoAdapterFactory, getRelatedListsInfoAdapterFactory, getRelatedListActionsAdapterFactory, getRecordId18Array, buildRecordRepKeyFromId, configuration, InMemoryRecordRepresentationQueryEvaluator, UiApiNamespace, RecordRepresentationRepresentationType, registerPrefetcher, RecordRepresentationVersion } from 'force/ldsAdaptersUiapi';
27
28
  import { getInstrumentation } from 'o11y/client';
28
29
  import { findExecutableOperation, buildGraphQLInputExtension, addTypenameToDocument } from 'force/luvioGraphqlNormalization';
29
30
  import { print, wrapConfigAndVerify, resolveAst, validateGraphQLOperations } from 'force/luvioOnestoreGraphqlParser';
@@ -2666,7 +2667,7 @@ function buildServiceDescriptor$d(luvio) {
2666
2667
  },
2667
2668
  };
2668
2669
  }
2669
- // version: 1.404.0-dev4-42147f9daa
2670
+ // version: 1.404.0-dev5-38a59c52aa
2670
2671
 
2671
2672
  /*!
2672
2673
  * Copyright (c) 2022, Salesforce, Inc.,
@@ -3004,7 +3005,7 @@ function buildServiceDescriptor$9(notifyRecordUpdateAvailable, getNormalizedLuvi
3004
3005
  },
3005
3006
  };
3006
3007
  }
3007
- // version: 1.404.0-dev4-42147f9daa
3008
+ // version: 1.404.0-dev5-38a59c52aa
3008
3009
 
3009
3010
  /*!
3010
3011
  * Copyright (c) 2022, Salesforce, Inc.,
@@ -4707,7 +4708,7 @@ function getEnvironmentSetting(name) {
4707
4708
  }
4708
4709
  return undefined;
4709
4710
  }
4710
- // version: 1.404.0-dev4-42147f9daa
4711
+ // version: 1.404.0-dev5-38a59c52aa
4711
4712
 
4712
4713
  /**
4713
4714
  * Observability / Critical Availability Program (230+)
@@ -6775,9 +6776,31 @@ function isFieldsRequest(config) {
6775
6776
  config.modes === undefined &&
6776
6777
  (config.fields !== undefined || config.optionalFields !== undefined));
6777
6778
  }
6779
+ function isCombinableLayoutRequest(config) {
6780
+ // We will only consider a layout request combinable if it is a single layout type request
6781
+ // and the only request parameters are:
6782
+ // - layoutTypes
6783
+ // - optionalFields
6784
+ // - modes
6785
+ const hasExtraParams = config.childRelationships !== undefined ||
6786
+ config.pageSize !== undefined ||
6787
+ config.updateMru !== undefined;
6788
+ return config.layoutTypes !== undefined && !hasExtraParams;
6789
+ }
6790
+ function areCombinableLayoutRequests(reqA, reqB) {
6791
+ const normilizedLayoutTypesA = coerceLayoutTypeArray(reqA.layoutTypes) || [];
6792
+ const normilizedLayoutTypesB = coerceLayoutTypeArray(reqB.layoutTypes) || [];
6793
+ // Let's only combine when the layoutTypes are the same
6794
+ return (isCombinableLayoutRequest(reqA) &&
6795
+ isCombinableLayoutRequest(reqB) &&
6796
+ reqA.recordId === reqB.recordId &&
6797
+ normilizedLayoutTypesA.length === normilizedLayoutTypesB.length &&
6798
+ normilizedLayoutTypesA.every((type, index) => type === normilizedLayoutTypesB[index]));
6799
+ }
6778
6800
  class GetRecordRequestStrategy extends LuvioAdapterRequestStrategy {
6779
- constructor() {
6780
- super(...arguments);
6801
+ constructor(luvio, canCombineRecordLayoutRequests = false) {
6802
+ super(luvio);
6803
+ this.canCombineRecordLayoutRequests = canCombineRecordLayoutRequests;
6781
6804
  this.adapterName = GET_RECORD_ADAPTER_NAME;
6782
6805
  this.adapterFactory = getRecordAdapterFactory;
6783
6806
  }
@@ -6806,10 +6829,41 @@ class GetRecordRequestStrategy extends LuvioAdapterRequestStrategy {
6806
6829
  };
6807
6830
  }
6808
6831
  canCombine(reqA, reqB) {
6809
- // must be same record and
6810
- return reqA.recordId === reqB.recordId && isFieldsRequest(reqA) && isFieldsRequest(reqB);
6832
+ // must be same record and either both are fields requests or both are combinable layout requests
6833
+ return (reqA.recordId === reqB.recordId &&
6834
+ ((isFieldsRequest(reqA) && isFieldsRequest(reqB)) ||
6835
+ (this.canCombineRecordLayoutRequests && areCombinableLayoutRequests(reqA, reqB))));
6811
6836
  }
6812
6837
  combineRequests(reqA, reqB) {
6838
+ if (isFieldsRequest(reqA)) {
6839
+ return this.combineFieldsRequests(reqA, reqB);
6840
+ }
6841
+ else {
6842
+ return this.combineLayoutRequests(reqA, reqB);
6843
+ }
6844
+ }
6845
+ combineLayoutRequests(reqA, reqB) {
6846
+ const combined = {
6847
+ recordId: reqA.recordId,
6848
+ layoutTypes: coerceLayoutTypeArray(reqA.layoutTypes),
6849
+ };
6850
+ // combine Modes.
6851
+ // Note: the || ['View'] is important; it is to cover the case in which it needs to
6852
+ // combine mode: undefined (defaults to View) with mode: ['something else than View']
6853
+ const modeA = coerceLayoutModeArray(reqA.modes) || ['View'];
6854
+ const modeB = coerceLayoutModeArray(reqB.modes) || ['View'];
6855
+ if (reqA.modes !== undefined || reqB.modes !== undefined) {
6856
+ combined.modes = Array.from(new Set([...modeA, ...modeB]));
6857
+ }
6858
+ // combine Optional Fields.
6859
+ const optionalFieldsA = coerceFieldIdArray(reqA.optionalFields, COERCE_FIELD_ID_ARRAY_OPTIONS) || [];
6860
+ const optionalFieldsB = coerceFieldIdArray(reqB.optionalFields, COERCE_FIELD_ID_ARRAY_OPTIONS) || [];
6861
+ if (optionalFieldsA !== undefined || optionalFieldsB !== undefined) {
6862
+ combined.optionalFields = Array.from(new Set([...optionalFieldsA, ...optionalFieldsB]));
6863
+ }
6864
+ return combined;
6865
+ }
6866
+ combineFieldsRequests(reqA, reqB) {
6813
6867
  const fields = new Set();
6814
6868
  const optionalFields = new Set();
6815
6869
  if (reqA.fields !== undefined) {
@@ -9495,7 +9549,7 @@ function whenPredictionsReady(callback) {
9495
9549
  }
9496
9550
  function setupPredictivePrefetcher(luvio) {
9497
9551
  const allStrategies = [
9498
- new GetRecordRequestStrategy(luvio),
9552
+ new GetRecordRequestStrategy(luvio, canCombineRecordLayoutRequests.isOpen({ fallback: false })),
9499
9553
  new GetRecordsRequestStrategy(luvio),
9500
9554
  new GetRecordActionsRequestStrategy(luvio),
9501
9555
  new GetRecordAvatarsRequestStrategy(luvio),
@@ -9788,4 +9842,4 @@ function ldsEngineCreator() {
9788
9842
  }
9789
9843
 
9790
9844
  export { LexRequestStrategy, PdlRequestPriority, buildPredictorForContext, ldsEngineCreator as default, initializeLDS, initializeOneStore, notifyUpdateAvailableFactory, registerRequestStrategy, saveRequestAsPrediction, unregisterRequestStrategy, whenPredictionsReady };
9791
- // version: 1.404.0-dev4-e7390885d6
9845
+ // version: 1.404.0-dev5-924c469d6b
@@ -1,3 +1,4 @@
1
+ import type { Luvio } from '@luvio/engine';
1
2
  import type { GetRecordConfig } from '@salesforce/lds-adapters-uiapi';
2
3
  import { LuvioAdapterRequestStrategy } from './luvio-adapter-request-strategy';
3
4
  export type GetRecordRequest = {
@@ -9,12 +10,16 @@ type GetRecordContext = {
9
10
  };
10
11
  export declare const GET_RECORD_ADAPTER_NAME = "getRecord";
11
12
  export declare class GetRecordRequestStrategy extends LuvioAdapterRequestStrategy<GetRecordConfig, GetRecordRequest, GetRecordContext> {
13
+ private readonly canCombineRecordLayoutRequests;
12
14
  adapterName: string;
13
15
  adapterFactory: import("@luvio/engine").AdapterFactory<GetRecordConfig, import("@salesforce/lds-adapters-uiapi").RecordRepresentation>;
16
+ constructor(luvio: Luvio, canCombineRecordLayoutRequests?: boolean);
14
17
  buildConcreteRequest(similarRequest: GetRecordRequest, context: GetRecordContext): GetRecordRequest;
15
18
  transformForSave(request: GetRecordRequest): GetRecordRequest;
16
19
  canCombine(reqA: GetRecordConfig, reqB: GetRecordConfig): boolean;
17
20
  combineRequests(reqA: GetRecordConfig, reqB: GetRecordConfig): GetRecordConfig;
21
+ combineLayoutRequests(reqA: GetRecordConfig, reqB: GetRecordConfig): GetRecordConfig;
22
+ combineFieldsRequests(reqA: GetRecordConfig, reqB: GetRecordConfig): GetRecordConfig;
18
23
  isContextDependent(context: GetRecordContext, request: GetRecordRequest): boolean;
19
24
  transformForSaveSimilarRequest(request: GetRecordRequest): GetRecordRequest;
20
25
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/lds-runtime-aura",
3
- "version": "1.404.0-dev4",
3
+ "version": "1.404.0-dev5",
4
4
  "license": "SEE LICENSE IN LICENSE.txt",
5
5
  "description": "LDS engine for Aura runtime",
6
6
  "main": "dist/ldsEngineCreator.js",
@@ -36,14 +36,14 @@
36
36
  "devDependencies": {
37
37
  "@conduit-client/service-provisioner": "3.2.0",
38
38
  "@conduit-client/tools-core": "3.2.0",
39
- "@salesforce/lds-adapters-apex": "^1.404.0-dev4",
40
- "@salesforce/lds-adapters-uiapi": "^1.404.0-dev4",
41
- "@salesforce/lds-ads-bridge": "^1.404.0-dev4",
42
- "@salesforce/lds-aura-storage": "^1.404.0-dev4",
43
- "@salesforce/lds-bindings": "^1.404.0-dev4",
44
- "@salesforce/lds-instrumentation": "^1.404.0-dev4",
45
- "@salesforce/lds-network-aura": "^1.404.0-dev4",
46
- "@salesforce/lds-network-fetch": "^1.404.0-dev4",
39
+ "@salesforce/lds-adapters-apex": "^1.404.0-dev5",
40
+ "@salesforce/lds-adapters-uiapi": "^1.404.0-dev5",
41
+ "@salesforce/lds-ads-bridge": "^1.404.0-dev5",
42
+ "@salesforce/lds-aura-storage": "^1.404.0-dev5",
43
+ "@salesforce/lds-bindings": "^1.404.0-dev5",
44
+ "@salesforce/lds-instrumentation": "^1.404.0-dev5",
45
+ "@salesforce/lds-network-aura": "^1.404.0-dev5",
46
+ "@salesforce/lds-network-fetch": "^1.404.0-dev5",
47
47
  "jwt-encode": "1.0.1"
48
48
  },
49
49
  "dependencies": {
@@ -73,10 +73,10 @@
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.404.0-dev4",
77
- "@salesforce/lds-adapters-uiapi-lex": "^1.404.0-dev4",
78
- "@salesforce/lds-luvio-service": "^1.404.0-dev4",
79
- "@salesforce/lds-luvio-uiapi-records-service": "^1.404.0-dev4"
76
+ "@salesforce/lds-adapters-onestore-graphql": "^1.404.0-dev5",
77
+ "@salesforce/lds-adapters-uiapi-lex": "^1.404.0-dev5",
78
+ "@salesforce/lds-luvio-service": "^1.404.0-dev5",
79
+ "@salesforce/lds-luvio-uiapi-records-service": "^1.404.0-dev5"
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": "56 kB"
87
+ "compressed": "57 kB"
88
88
  }
89
89
  }
90
90
  ],