@salesforce/lds-adapters-uiapi 1.320.0 → 1.321.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.
@@ -1,8 +1,14 @@
1
- import type { Luvio, IngestPath, StoreRecordError } from '@luvio/engine';
2
- import type { RecordRepresentationNormalized } from '../../generated/types/RecordRepresentation';
1
+ import type { Luvio, IngestPath, StoreRecordError, ProxyGraphNode } from '@luvio/engine';
2
+ import type { RecordRepresentationNormalized, RecordRepresentation } from '../../generated/types/RecordRepresentation';
3
3
  import type { RecordConflictMap } from './resolveConflict';
4
+ export type RecordProxyGraphNode = ProxyGraphNode<RecordRepresentationNormalized, RecordRepresentation>;
5
+ declare function mergePendingFields(newRecord: RecordRepresentationNormalized, oldRecord: RecordRepresentationNormalized, existingNode?: RecordProxyGraphNode): RecordRepresentationNormalized;
4
6
  export default function merge(existing: RecordRepresentationNormalized | undefined | StoreRecordError, incoming: RecordRepresentationNormalized, luvio: Luvio, _path: IngestPath, recordConflictMap: RecordConflictMap): RecordRepresentationNormalized;
5
7
  export declare function dependencyKeyBuilder(config: {
6
8
  /** The ID of this record. */
7
9
  recordId: string;
8
10
  }): string;
11
+ export declare const forTesting: {
12
+ mergePendingFields: typeof mergePendingFields;
13
+ };
14
+ export {};
@@ -52,6 +52,7 @@ export type { GraphQLInputRepresentation } from './generated/types/GraphQLInputR
52
52
  export type { GraphqlConfig as GraphQLConfig, BuildSnapshotContext as GraphQLBuildSnapshotContext, } from './generated/adapters/graphql';
53
53
  export * from './generated/artifacts/main';
54
54
  export * from './util/store-utils';
55
+ export { isSupportedEntity } from './util/records';
55
56
  export type { CreateContentVersionConfig } from './wire/createContentVersion/AdapterConfig';
56
57
  export type { CreateContentDocumentAndVersionConfig } from './wire/createContentDocumentAndVersion/AdapterConfig';
57
58
  export type { ResourceRequestConfig as CreateContentDocumentAndVersionResourceRequestConfig } from './wire/createContentDocumentAndVersion/ResourceRequestConfig';
@@ -27,3 +27,4 @@ export { instrument, Instrument, Registration } from './main';
27
27
  export { CachePolicy, CachePolicyCacheAndNetwork, CachePolicyCacheThenNetwork, CachePolicyNoCache, CachePolicyOnlyIfCached, CachePolicyStaleWhileRevalidate, CachePolicyValidAt, } from './main';
28
28
  export { getRecordId18, coerceFieldIdArray, coerceObjectId, coerceObjectIdArray, getRecordAdapterFactory, getRecordsAdapterFactory, getRecordActionsAdapterFactory, getRecordAvatarsAdapterFactory, getObjectInfoAdapterFactory, getObjectInfosAdapterFactory, getObjectInfoDirectoryAdapterFactory, getRelatedListsActionsAdapterFactory, getRelatedListRecordsAdapterFactory, getRelatedListRecordsBatchAdapterFactory, getTypeCacheKeysRecord, RecordRepresentationVersion, RecordRepresentationTTL, RecordRepresentationType, ObjectInfoRepresentationType, ObjectInfoDirectoryEntryRepresentationType, RecordRepresentationRepresentationType, keyBuilderFromTypeRecordRepresentation, keyBuilderFromTypeContentDocumentCompositeRepresentation, keyBuilderContentDocumentCompositeRepresentation, ingestContentDocumentCompositeRepresentation, getResponseCacheKeysContentDocumentCompositeRepresentation, getRelatedListInfoAdapterFactory, getRelatedListInfoBatchAdapterFactory, getListInfoByNameAdapterFactory, getListObjectInfoAdapterFactory, getListRecordsByNameAdapterFactory, getListInfosByObjectNameAdapterFactory, } from './main';
29
29
  export { UiApiNamespace, InMemoryRecordRepresentationQueryEvaluator } from './main';
30
+ export { isSupportedEntity } from './main';
@@ -37,9 +37,10 @@ export interface TrackedFieldsConfig {
37
37
  maxDepth: number;
38
38
  onlyFetchLeafNodeIdAndName: boolean;
39
39
  }
40
- export declare function isGraphNode(node: ProxyGraphNode<unknown>): node is GraphNode<unknown>;
40
+ export declare function isGraphNode(node: ProxyGraphNode<unknown> | undefined | null): node is GraphNode<unknown>;
41
41
  export declare function extractTrackedFields(node: ProxyGraphNode<RecordRepresentationNormalized, RecordRepresentation>, parentFieldName: string, fieldsList?: string[], visitedRecordIds?: Record<string, boolean>, depth?: number): string[];
42
42
  export declare function extractTrackedFieldsToTrie(recordId: string | NormalizedKeyMetadata, node: ProxyGraphNode<FieldMapRepresentationNormalized, FieldMapRepresentation>, root: RecordFieldTrie, config: TrackedFieldsConfig, visitedRecordIds?: Record<string, boolean>, depth?: number): void;
43
+ export declare function isExternalLookupFieldKey(spanningNode: ProxyGraphNode<RecordRepresentationNormalized, RecordRepresentation>): boolean;
43
44
  export declare function convertTrieToFields(root: RecordFieldTrie): string[];
44
45
  export declare function convertTrieToFieldsRecursively(root: RecordFieldTrie): string[];
45
46
  export declare const BLANK_RECORD_FIELDS_TRIE: Readonly<{
@@ -4921,7 +4921,7 @@ const RECORD_REPRESENTATION_ERROR_STORE_METADATA_PARAMS = {
4921
4921
  version: RECORD_REPRESENTATION_ERROR_VERSION,
4922
4922
  };
4923
4923
  function isGraphNode(node) {
4924
- return node !== null && node.type === 'Node';
4924
+ return !!node && node.type === 'Node';
4925
4925
  }
4926
4926
  function addScalarFieldId(current) {
4927
4927
  addScalarField(current, 'Id');
@@ -4988,6 +4988,8 @@ function extractTrackedFieldsToTrie(recordId, node, root, config, visitedRecordI
4988
4988
  const spanning = spanningLink.follow();
4989
4989
  // W-8058425, do not include external lookups added by getTrackedFields
4990
4990
  if (isExternalLookupFieldKey(spanning)) {
4991
+ // NOTE: the logic to get here is mimicked in RecordRepresentation/merge::mergePendingFields as of
4992
+ // W-11899329 due to issues with external lookups being marked pending but never fetched
4991
4993
  continue;
4992
4994
  }
4993
4995
  extractTrackedFieldsToTrie(spanningLink.data.__ref, spanning, next, config, spanningVisitedRecordIds, depth + 1);
@@ -5020,6 +5022,8 @@ function extractTrackedFieldsToTrie(recordId, node, root, config, visitedRecordI
5020
5022
  const { fields } = state;
5021
5023
  // W-8058425, do not include external lookups added by getTrackedFields
5022
5024
  if (includes.call(fields, 'ExternalId')) {
5025
+ // NOTE: the logic to get here is mimicked in RecordRepresentation/merge::mergePendingFields as of
5026
+ // W-11899329 due to issues with external lookups being marked pending but never fetched
5023
5027
  continue;
5024
5028
  }
5025
5029
  for (let s = 0, len = fields.length; s < len; s += 1) {
@@ -5470,15 +5474,49 @@ function ingestRecordResponse(luvio, response, recordId, recordIngest, conflictM
5470
5474
 
5471
5475
  // This function sets fields that we are refreshing to pending
5472
5476
  // These values will go into the store
5473
- function mergePendingFields(newRecord, oldRecord) {
5474
- // TODO [W-6900046]: avoid casting to any by updating
5475
- // RecordRepresentationNormalized['fields'] to include `pending:true` property
5477
+ function mergePendingFields(newRecord, oldRecord, existingNode) {
5476
5478
  const mergedFields = { ...newRecord.fields };
5477
5479
  const merged = { ...newRecord, fields: mergedFields };
5478
5480
  const existingFields = keys(oldRecord.fields);
5479
5481
  for (let i = 0, len = existingFields.length; i < len; i += 1) {
5480
5482
  const spanningFieldName = existingFields[i];
5481
5483
  if (newRecord.fields[spanningFieldName] === undefined) {
5484
+ /*
5485
+ * Per W-8058425 external lookups fields are excluded from the tracked fields. However, as covered in
5486
+ * W-11899329, situations can arise in which a merge conflict occurs when the existing record has a
5487
+ * reference to an external lookup field. The exclusion ultimately results in a snapshot stuck in the
5488
+ * pending state. This is an approach to prevent that situation.
5489
+ *
5490
+ * The same logic checks for W-8058425 to "continue" as it relates to not tracking external lookups is
5491
+ * mimicked here as it relates to not marking them as pending.
5492
+ */
5493
+ // make sure external lookups are NOT marked as pending when `existingNode` is provided
5494
+ if (isGraphNode(existingNode)) {
5495
+ // get the node for the spanning field
5496
+ const fieldValueRep = existingNode
5497
+ .object('fields')
5498
+ .link(spanningFieldName);
5499
+ const field = fieldValueRep.follow();
5500
+ if (isGraphNode(field)) {
5501
+ if (field.isScalar('value') === false) {
5502
+ const record = field
5503
+ .link('value')
5504
+ .follow();
5505
+ if (isExternalLookupFieldKey(record)) {
5506
+ continue;
5507
+ }
5508
+ }
5509
+ }
5510
+ else {
5511
+ const state = fieldValueRep.linkData();
5512
+ if (state !== undefined) {
5513
+ const { fields } = state;
5514
+ if (includes.call(fields, 'ExternalId')) {
5515
+ continue;
5516
+ }
5517
+ }
5518
+ }
5519
+ }
5482
5520
  // TODO [W-6900046]: fix above casting issue so we're not stuffing arbitrary things
5483
5521
  // into RecordRepresentationNormalized['fields']
5484
5522
  mergedFields[spanningFieldName] = {
@@ -5492,7 +5530,7 @@ function mergePendingFields(newRecord, oldRecord) {
5492
5530
  // This method gets called
5493
5531
  // when incoming record has a higher version
5494
5532
  // than the record that is currently in the store
5495
- function mergeAndRefreshHigherVersionRecord(incoming, existing, incomingTrackedFieldsTrieRoot, existingTrackedFieldsTrieRoot, recordConflictMap) {
5533
+ function mergeAndRefreshHigherVersionRecord(incoming, existing, incomingTrackedFieldsTrieRoot, existingTrackedFieldsTrieRoot, recordConflictMap, existingNode) {
5496
5534
  // If the higher version (incoming) does not contain a superset of fields as existing
5497
5535
  // then we need to refresh to get updated versions of fields in existing
5498
5536
  if (isSuperRecordFieldTrie(incomingTrackedFieldsTrieRoot, existingTrackedFieldsTrieRoot) ===
@@ -5509,14 +5547,14 @@ function mergeAndRefreshHigherVersionRecord(incoming, existing, incomingTrackedF
5509
5547
  };
5510
5548
  // We want to mark fields in the store as pending
5511
5549
  // Because we don't want to emit any data to components
5512
- return mergePendingFields(incoming, existing);
5550
+ return mergePendingFields(incoming, existing, existingNode);
5513
5551
  }
5514
5552
  return incoming;
5515
5553
  }
5516
5554
  // This method gets called
5517
5555
  // when incoming record has a lower version
5518
5556
  // than the record that is currently in the store
5519
- function mergeAndRefreshLowerVersionRecord(luvio, incoming, existing, incomingTrackedFieldsTrieRoot, existingTrackedFieldsTrieRoot, recordConflictMap) {
5557
+ function mergeAndRefreshLowerVersionRecord(luvio, incoming, existing, incomingTrackedFieldsTrieRoot, existingTrackedFieldsTrieRoot, recordConflictMap, existingNode) {
5520
5558
  // If the higher version (existing) does not have a superset of fields as incoming
5521
5559
  // then we need to refresh to get updated versions of fields on incoming
5522
5560
  if (isSuperRecordFieldTrie(existingTrackedFieldsTrieRoot, incomingTrackedFieldsTrieRoot) ===
@@ -5526,7 +5564,7 @@ function mergeAndRefreshLowerVersionRecord(luvio, incoming, existing, incomingTr
5526
5564
  if (isSupportedEntity(incoming.apiName) === false) {
5527
5565
  return mergeRecordFields(existing, incoming);
5528
5566
  }
5529
- const merged = mergePendingFields(existing, incoming);
5567
+ const merged = mergePendingFields(existing, incoming, existingNode);
5530
5568
  // update the conflict map to resolve the record conflict in resolveConflict
5531
5569
  if (recordConflictMap) {
5532
5570
  recordConflictMap.conflicts[incoming.id] = {
@@ -5565,7 +5603,7 @@ function mergeRecordConflict(luvio, incoming, existing, recordConflictMap) {
5565
5603
  extractTrackedFieldsToTrie(recordKey, incomingNode, incomingTrackedFieldsTrieRoot, trackedFieldsConfig);
5566
5604
  extractTrackedFieldsToTrie(recordKey, existingNode, existingTrackedFieldsTrieRoot, trackedFieldsConfig);
5567
5605
  if (incoming.weakEtag > existing.weakEtag) {
5568
- return mergeAndRefreshHigherVersionRecord(incoming, existing, incomingTrackedFieldsTrieRoot, existingTrackedFieldsTrieRoot, recordConflictMap);
5606
+ return mergeAndRefreshHigherVersionRecord(incoming, existing, incomingTrackedFieldsTrieRoot, existingTrackedFieldsTrieRoot, recordConflictMap, existingNode);
5569
5607
  }
5570
5608
  return mergeAndRefreshLowerVersionRecord(luvio, incoming, existing, incomingTrackedFieldsTrieRoot, existingTrackedFieldsTrieRoot, recordConflictMap);
5571
5609
  }
@@ -54444,6 +54482,12 @@ function selectTypeLinkWithPagination(resolvedLink, sel, fieldData, reader, key,
54444
54482
  return;
54445
54483
  }
54446
54484
  }
54485
+ else if (totalEdges === 0 && !listIsComplete) {
54486
+ // empty edge list, but the list isn't complete?
54487
+ if (process.env.NODE_ENV !== 'production') {
54488
+ throw new Error("page size of zero, but pageInfo .hasNextPage is true.");
54489
+ }
54490
+ }
54447
54491
  else {
54448
54492
  if (startOffset === undefined || endOffset === undefined) {
54449
54493
  reader.markMissingLink(fieldData.__ref);
@@ -59658,4 +59702,4 @@ ensureRegisteredOnce({
59658
59702
  instrument,
59659
59703
  });
59660
59704
 
59661
- export { API_NAMESPACE, notifyChangeFactory as GetRecordNotifyChange, InMemoryRecordRepresentationQueryEvaluator, MRU, notifyUpdateAvailableFactory$3 as NotifyListInfoSummaryUpdateAvailable, notifyUpdateAvailableFactory$1 as NotifyListInfoUpdateAvailable, notifyUpdateAvailableFactory$4 as NotifyListRecordCollectionUpdateAvailable, notifyUpdateAvailableFactory$2 as NotifyListViewSummaryUpdateAvailable, notifyUpdateAvailableFactory as NotifyQuickActionDefaultsUpdateAvailable, notifyUpdateAvailableFactory$5 as NotifyRecordUpdateAvailable, RepresentationType$O as ObjectInfoDirectoryEntryRepresentationType, RepresentationType$T as ObjectInfoRepresentationType, RECORD_FIELDS_KEY_JUNCTION, RECORD_ID_PREFIX, RECORD_REPRESENTATION_NAME, RECORD_VIEW_ENTITY_ID_PREFIX, RECORD_VIEW_ENTITY_REPRESENTATION_NAME, RepresentationType$_ as RecordRepresentationRepresentationType, TTL$F as RecordRepresentationTTL, RepresentationType$_ as RecordRepresentationType, VERSION$2E as RecordRepresentationVersion, keyPrefix as UiApiNamespace, buildRecordRepKeyFromId, buildSelectionFromFields, buildSelectionFromRecord, getFieldApiNamesArray as coerceFieldIdArray, getObjectApiName$1 as coerceObjectId, getObjectApiNamesArray as coerceObjectIdArray, configuration, factory$1 as createContentDocumentAndVersionAdapterFactory, factory as createContentVersionAdapterFactory, createIngestRecordWithFields, createLDSAdapterWithPrediction, createListInfoAdapterFactory, factory$4 as createRecordAdapterFactory, createRecordInputFilteredByEditedFields, createRelatedListAdapterWithPrediction, deleteListInfoAdapterFactory, factory$3 as deleteRecordAdapterFactory, factory$f as executeBatchRecordOperationsAdapterFactory, extractRecordIdFromStoreKey, generateRecordInputForCreate, generateRecordInputForUpdate, getActionOverridesAdapterFactory, getAllAppsAdapterFactory, getAppDetailsAdapterFactory, getDuplicateConfigurationAdapterFactory, getDuplicatesAdapterFactory, getFieldDisplayValue$1 as getFieldDisplayValue, getFieldValue, getFlexipageFormulaOverridesAdapterFactory, getGlobalActionsAdapterFactory, getKeywordSearchResultsAdapterFactory, getLayoutAdapterFactory, getLayoutUserStateAdapterFactory, getListInfoByNameAdapterFactory, getListInfosByNameAdapterFactory, getListInfosByObjectNameAdapterFactory, getListObjectInfoAdapterFactory, getListPreferencesAdapterFactory, factory$a as getListRecordsByNameAdapterFactory, factory$j as getListUiAdapterFactory, getListUiByApiNameAdapterFactory, getListUiByListViewIdAdapterFactory, getListViewSummaryCollectionAdapterFactory, getLookupActionsAdapterFactory, getLookupMetadataAdapterFactory, factory$9 as getLookupRecordsAdapterFactory, factory$k as getMruListUiAdapterFactory, getNavItemsAdapterFactory, getObjectCreateActionsAdapterFactory, getObjectInfoAdapterFactory, getObjectInfoDirectoryAdapterFactory, getObjectInfosAdapterFactory, getPathLayoutAdapterFactory, getPicklistValuesAdapterFactory, getPicklistValuesByRecordTypeAdapterFactory, getQuickActionDefaultsAdapterFactory, getQuickActionInfoAdapterFactory, getQuickActionLayoutAdapterFactory, getRecordActionsAdapterFactory, factory$h as getRecordAdapterFactory, getRecordAvatarsAdapterFactory, factory$7 as getRecordCreateDefaultsAdapterFactory, getRecordEditActionsAdapterFactory, getRecordId18, getRecordInput, createFieldsIngestSuccess$3 as getRecordResourceIngest, factory$6 as getRecordTemplateCloneAdapterFactory, factory$5 as getRecordTemplateCreateAdapterFactory, factory$i as getRecordUiAdapterFactory, getRecordsAdapterFactory, getRelatedListActionsAdapterFactory, getRelatedListCountAdapterFactory, getRelatedListInfoAdapterFactory, getRelatedListInfoBatchAdapterFactory, getRelatedListPreferencesAdapterFactory, getRelatedListPreferencesBatchAdapterFactory, getRelatedListRecordActionsAdapterFactory, getRelatedListRecordsAdapterFactory, getRelatedListRecordsBatchAdapterFactory, getRelatedListsActionsAdapterFactory, getRelatedListsCountAdapterFactory, getRelatedListsInfoAdapterFactory, getResponseCacheKeys as getResponseCacheKeysContentDocumentCompositeRepresentation, getSearchFilterMetadataAdapterFactory, getSearchFilterOptionsAdapterFactory, getSearchResultsAdapterFactory, getSelectedAppAdapterFactory, getTypeCacheKeys$2h as getTypeCacheKeysRecord, factory$e as graphqlAdapterFactory, factory$g as graphqlBatchAdapterFactory, ingest$4 as ingestContentDocumentCompositeRepresentation, ingest$1P as ingestDuplicateConfiguration, ingest$1J as ingestDuplicatesRepresentation, ingest$2f as ingestListInfo, ingest$2b as ingestListRecords, ingest$25 as ingestObjectInfo, ingest$1$ as ingestQuickActionExecutionRepresentation, ingest$2c as ingestRecord, ingest$22 as ingestRecordUi, ingest$1B as ingestRelatedListInfo, ingest$2 as ingestRelatedListInfoBatch, ingest$1y as ingestRelatedListRecords, ingest as ingestRelatedListRecordsBatch, ingest$1A as ingestRelatedListSummaryInfoCollection, ingest$7 as ingestUiApiGraphql, instrument, isStoreKeyRecordViewEntity, keyBuilder as keyBuilderContentDocumentCompositeRepresentation, keyBuilderFromType as keyBuilderFromTypeContentDocumentCompositeRepresentation, keyBuilderFromType$D as keyBuilderFromTypeRecordRepresentation, keyBuilder$3j as keyBuilderObjectInfo, keyBuilder$3c as keyBuilderQuickActionExecutionRepresentation, keyBuilder$3A as keyBuilderRecord, factory$c as performQuickActionAdapterFactory, factory$d as performUpdateRecordQuickActionAdapterFactory, registerPrefetcher, untrustedIsObject, factory$b as updateLayoutUserStateAdapterFactory, updateListInfoByNameAdapterFactory, updateListPreferencesAdapterFactory, factory$2 as updateRecordAdapterFactory, factory$8 as updateRecordAvatarAdapterFactory, updateRelatedListInfoAdapterFactory, updateRelatedListPreferencesAdapterFactory };
59705
+ export { API_NAMESPACE, notifyChangeFactory as GetRecordNotifyChange, InMemoryRecordRepresentationQueryEvaluator, MRU, notifyUpdateAvailableFactory$3 as NotifyListInfoSummaryUpdateAvailable, notifyUpdateAvailableFactory$1 as NotifyListInfoUpdateAvailable, notifyUpdateAvailableFactory$4 as NotifyListRecordCollectionUpdateAvailable, notifyUpdateAvailableFactory$2 as NotifyListViewSummaryUpdateAvailable, notifyUpdateAvailableFactory as NotifyQuickActionDefaultsUpdateAvailable, notifyUpdateAvailableFactory$5 as NotifyRecordUpdateAvailable, RepresentationType$O as ObjectInfoDirectoryEntryRepresentationType, RepresentationType$T as ObjectInfoRepresentationType, RECORD_FIELDS_KEY_JUNCTION, RECORD_ID_PREFIX, RECORD_REPRESENTATION_NAME, RECORD_VIEW_ENTITY_ID_PREFIX, RECORD_VIEW_ENTITY_REPRESENTATION_NAME, RepresentationType$_ as RecordRepresentationRepresentationType, TTL$F as RecordRepresentationTTL, RepresentationType$_ as RecordRepresentationType, VERSION$2E as RecordRepresentationVersion, keyPrefix as UiApiNamespace, buildRecordRepKeyFromId, buildSelectionFromFields, buildSelectionFromRecord, getFieldApiNamesArray as coerceFieldIdArray, getObjectApiName$1 as coerceObjectId, getObjectApiNamesArray as coerceObjectIdArray, configuration, factory$1 as createContentDocumentAndVersionAdapterFactory, factory as createContentVersionAdapterFactory, createIngestRecordWithFields, createLDSAdapterWithPrediction, createListInfoAdapterFactory, factory$4 as createRecordAdapterFactory, createRecordInputFilteredByEditedFields, createRelatedListAdapterWithPrediction, deleteListInfoAdapterFactory, factory$3 as deleteRecordAdapterFactory, factory$f as executeBatchRecordOperationsAdapterFactory, extractRecordIdFromStoreKey, generateRecordInputForCreate, generateRecordInputForUpdate, getActionOverridesAdapterFactory, getAllAppsAdapterFactory, getAppDetailsAdapterFactory, getDuplicateConfigurationAdapterFactory, getDuplicatesAdapterFactory, getFieldDisplayValue$1 as getFieldDisplayValue, getFieldValue, getFlexipageFormulaOverridesAdapterFactory, getGlobalActionsAdapterFactory, getKeywordSearchResultsAdapterFactory, getLayoutAdapterFactory, getLayoutUserStateAdapterFactory, getListInfoByNameAdapterFactory, getListInfosByNameAdapterFactory, getListInfosByObjectNameAdapterFactory, getListObjectInfoAdapterFactory, getListPreferencesAdapterFactory, factory$a as getListRecordsByNameAdapterFactory, factory$j as getListUiAdapterFactory, getListUiByApiNameAdapterFactory, getListUiByListViewIdAdapterFactory, getListViewSummaryCollectionAdapterFactory, getLookupActionsAdapterFactory, getLookupMetadataAdapterFactory, factory$9 as getLookupRecordsAdapterFactory, factory$k as getMruListUiAdapterFactory, getNavItemsAdapterFactory, getObjectCreateActionsAdapterFactory, getObjectInfoAdapterFactory, getObjectInfoDirectoryAdapterFactory, getObjectInfosAdapterFactory, getPathLayoutAdapterFactory, getPicklistValuesAdapterFactory, getPicklistValuesByRecordTypeAdapterFactory, getQuickActionDefaultsAdapterFactory, getQuickActionInfoAdapterFactory, getQuickActionLayoutAdapterFactory, getRecordActionsAdapterFactory, factory$h as getRecordAdapterFactory, getRecordAvatarsAdapterFactory, factory$7 as getRecordCreateDefaultsAdapterFactory, getRecordEditActionsAdapterFactory, getRecordId18, getRecordInput, createFieldsIngestSuccess$3 as getRecordResourceIngest, factory$6 as getRecordTemplateCloneAdapterFactory, factory$5 as getRecordTemplateCreateAdapterFactory, factory$i as getRecordUiAdapterFactory, getRecordsAdapterFactory, getRelatedListActionsAdapterFactory, getRelatedListCountAdapterFactory, getRelatedListInfoAdapterFactory, getRelatedListInfoBatchAdapterFactory, getRelatedListPreferencesAdapterFactory, getRelatedListPreferencesBatchAdapterFactory, getRelatedListRecordActionsAdapterFactory, getRelatedListRecordsAdapterFactory, getRelatedListRecordsBatchAdapterFactory, getRelatedListsActionsAdapterFactory, getRelatedListsCountAdapterFactory, getRelatedListsInfoAdapterFactory, getResponseCacheKeys as getResponseCacheKeysContentDocumentCompositeRepresentation, getSearchFilterMetadataAdapterFactory, getSearchFilterOptionsAdapterFactory, getSearchResultsAdapterFactory, getSelectedAppAdapterFactory, getTypeCacheKeys$2h as getTypeCacheKeysRecord, factory$e as graphqlAdapterFactory, factory$g as graphqlBatchAdapterFactory, ingest$4 as ingestContentDocumentCompositeRepresentation, ingest$1P as ingestDuplicateConfiguration, ingest$1J as ingestDuplicatesRepresentation, ingest$2f as ingestListInfo, ingest$2b as ingestListRecords, ingest$25 as ingestObjectInfo, ingest$1$ as ingestQuickActionExecutionRepresentation, ingest$2c as ingestRecord, ingest$22 as ingestRecordUi, ingest$1B as ingestRelatedListInfo, ingest$2 as ingestRelatedListInfoBatch, ingest$1y as ingestRelatedListRecords, ingest as ingestRelatedListRecordsBatch, ingest$1A as ingestRelatedListSummaryInfoCollection, ingest$7 as ingestUiApiGraphql, instrument, isStoreKeyRecordViewEntity, isSupportedEntity, keyBuilder as keyBuilderContentDocumentCompositeRepresentation, keyBuilderFromType as keyBuilderFromTypeContentDocumentCompositeRepresentation, keyBuilderFromType$D as keyBuilderFromTypeRecordRepresentation, keyBuilder$3j as keyBuilderObjectInfo, keyBuilder$3c as keyBuilderQuickActionExecutionRepresentation, keyBuilder$3A as keyBuilderRecord, factory$c as performQuickActionAdapterFactory, factory$d as performUpdateRecordQuickActionAdapterFactory, registerPrefetcher, untrustedIsObject, factory$b as updateLayoutUserStateAdapterFactory, updateListInfoByNameAdapterFactory, updateListPreferencesAdapterFactory, factory$2 as updateRecordAdapterFactory, factory$8 as updateRecordAvatarAdapterFactory, updateRelatedListInfoAdapterFactory, updateRelatedListPreferencesAdapterFactory };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/lds-adapters-uiapi",
3
- "version": "1.320.0",
3
+ "version": "1.321.0",
4
4
  "license": "SEE LICENSE IN LICENSE.txt",
5
5
  "description": "Wire adapters for record related UI API endpoints",
6
6
  "main": "dist/es/es2018/uiapi-records-service.js",
@@ -68,14 +68,14 @@
68
68
  }
69
69
  },
70
70
  "dependencies": {
71
- "@salesforce/lds-bindings": "^1.320.0",
72
- "@salesforce/lds-default-luvio": "^1.320.0"
71
+ "@salesforce/lds-bindings": "^1.321.0",
72
+ "@salesforce/lds-default-luvio": "^1.321.0"
73
73
  },
74
74
  "devDependencies": {
75
75
  "@databases/sqlite": "^3.0.0",
76
- "@salesforce/lds-compiler-plugins": "^1.320.0",
77
- "@salesforce/lds-jest": "^1.320.0",
78
- "@salesforce/lds-store-binary": "^1.320.0"
76
+ "@salesforce/lds-compiler-plugins": "^1.321.0",
77
+ "@salesforce/lds-jest": "^1.321.0",
78
+ "@salesforce/lds-store-binary": "^1.321.0"
79
79
  },
80
80
  "luvioBundlesize": [
81
81
  {
@@ -20622,6 +20622,12 @@ function selectTypeLinkWithPagination(resolvedLink, sel, fieldData, reader, key,
20622
20622
  return;
20623
20623
  }
20624
20624
  }
20625
+ else if (totalEdges === 0 && !listIsComplete) {
20626
+ // empty edge list, but the list isn't complete?
20627
+ if (process.env.NODE_ENV !== 'production') {
20628
+ throw new Error("page size of zero, but pageInfo .hasNextPage is true.");
20629
+ }
20630
+ }
20625
20631
  else {
20626
20632
  if (startOffset === undefined || endOffset === undefined) {
20627
20633
  reader.markMissingLink(fieldData.__ref);
@@ -22263,4 +22269,4 @@ register({
22263
22269
  });
22264
22270
 
22265
22271
  export { configurationForGraphQLAdapters as configuration, graphql, factory$1 as graphqlAdapterFactory, graphqlBatch, graphqlBatch_imperative, graphql_imperative };
22266
- // version: 1.320.0-e3e5f3d984
22272
+ // version: 1.321.0-40847d67a8
package/sfdc/index.js CHANGED
@@ -4978,7 +4978,7 @@ const RECORD_REPRESENTATION_ERROR_STORE_METADATA_PARAMS = {
4978
4978
  version: RECORD_REPRESENTATION_ERROR_VERSION,
4979
4979
  };
4980
4980
  function isGraphNode(node) {
4981
- return node !== null && node.type === 'Node';
4981
+ return !!node && node.type === 'Node';
4982
4982
  }
4983
4983
  function addScalarFieldId(current) {
4984
4984
  addScalarField(current, 'Id');
@@ -5045,6 +5045,8 @@ function extractTrackedFieldsToTrie(recordId, node, root, config, visitedRecordI
5045
5045
  const spanning = spanningLink.follow();
5046
5046
  // W-8058425, do not include external lookups added by getTrackedFields
5047
5047
  if (isExternalLookupFieldKey(spanning)) {
5048
+ // NOTE: the logic to get here is mimicked in RecordRepresentation/merge::mergePendingFields as of
5049
+ // W-11899329 due to issues with external lookups being marked pending but never fetched
5048
5050
  continue;
5049
5051
  }
5050
5052
  extractTrackedFieldsToTrie(spanningLink.data.__ref, spanning, next, config, spanningVisitedRecordIds, depth + 1);
@@ -5077,6 +5079,8 @@ function extractTrackedFieldsToTrie(recordId, node, root, config, visitedRecordI
5077
5079
  const { fields } = state;
5078
5080
  // W-8058425, do not include external lookups added by getTrackedFields
5079
5081
  if (includes.call(fields, 'ExternalId')) {
5082
+ // NOTE: the logic to get here is mimicked in RecordRepresentation/merge::mergePendingFields as of
5083
+ // W-11899329 due to issues with external lookups being marked pending but never fetched
5080
5084
  continue;
5081
5085
  }
5082
5086
  for (let s = 0, len = fields.length; s < len; s += 1) {
@@ -5345,15 +5349,49 @@ function ingestRecordResponse(luvio, response, recordId, recordIngest, conflictM
5345
5349
 
5346
5350
  // This function sets fields that we are refreshing to pending
5347
5351
  // These values will go into the store
5348
- function mergePendingFields(newRecord, oldRecord) {
5349
- // TODO [W-6900046]: avoid casting to any by updating
5350
- // RecordRepresentationNormalized['fields'] to include `pending:true` property
5352
+ function mergePendingFields(newRecord, oldRecord, existingNode) {
5351
5353
  const mergedFields = { ...newRecord.fields };
5352
5354
  const merged = { ...newRecord, fields: mergedFields };
5353
5355
  const existingFields = keys(oldRecord.fields);
5354
5356
  for (let i = 0, len = existingFields.length; i < len; i += 1) {
5355
5357
  const spanningFieldName = existingFields[i];
5356
5358
  if (newRecord.fields[spanningFieldName] === undefined) {
5359
+ /*
5360
+ * Per W-8058425 external lookups fields are excluded from the tracked fields. However, as covered in
5361
+ * W-11899329, situations can arise in which a merge conflict occurs when the existing record has a
5362
+ * reference to an external lookup field. The exclusion ultimately results in a snapshot stuck in the
5363
+ * pending state. This is an approach to prevent that situation.
5364
+ *
5365
+ * The same logic checks for W-8058425 to "continue" as it relates to not tracking external lookups is
5366
+ * mimicked here as it relates to not marking them as pending.
5367
+ */
5368
+ // make sure external lookups are NOT marked as pending when `existingNode` is provided
5369
+ if (isGraphNode(existingNode)) {
5370
+ // get the node for the spanning field
5371
+ const fieldValueRep = existingNode
5372
+ .object('fields')
5373
+ .link(spanningFieldName);
5374
+ const field = fieldValueRep.follow();
5375
+ if (isGraphNode(field)) {
5376
+ if (field.isScalar('value') === false) {
5377
+ const record = field
5378
+ .link('value')
5379
+ .follow();
5380
+ if (isExternalLookupFieldKey(record)) {
5381
+ continue;
5382
+ }
5383
+ }
5384
+ }
5385
+ else {
5386
+ const state = fieldValueRep.linkData();
5387
+ if (state !== undefined) {
5388
+ const { fields } = state;
5389
+ if (includes.call(fields, 'ExternalId')) {
5390
+ continue;
5391
+ }
5392
+ }
5393
+ }
5394
+ }
5357
5395
  // TODO [W-6900046]: fix above casting issue so we're not stuffing arbitrary things
5358
5396
  // into RecordRepresentationNormalized['fields']
5359
5397
  mergedFields[spanningFieldName] = {
@@ -5367,7 +5405,7 @@ function mergePendingFields(newRecord, oldRecord) {
5367
5405
  // This method gets called
5368
5406
  // when incoming record has a higher version
5369
5407
  // than the record that is currently in the store
5370
- function mergeAndRefreshHigherVersionRecord(incoming, existing, incomingTrackedFieldsTrieRoot, existingTrackedFieldsTrieRoot, recordConflictMap) {
5408
+ function mergeAndRefreshHigherVersionRecord(incoming, existing, incomingTrackedFieldsTrieRoot, existingTrackedFieldsTrieRoot, recordConflictMap, existingNode) {
5371
5409
  // If the higher version (incoming) does not contain a superset of fields as existing
5372
5410
  // then we need to refresh to get updated versions of fields in existing
5373
5411
  if (isSuperRecordFieldTrie(incomingTrackedFieldsTrieRoot, existingTrackedFieldsTrieRoot) ===
@@ -5384,14 +5422,14 @@ function mergeAndRefreshHigherVersionRecord(incoming, existing, incomingTrackedF
5384
5422
  };
5385
5423
  // We want to mark fields in the store as pending
5386
5424
  // Because we don't want to emit any data to components
5387
- return mergePendingFields(incoming, existing);
5425
+ return mergePendingFields(incoming, existing, existingNode);
5388
5426
  }
5389
5427
  return incoming;
5390
5428
  }
5391
5429
  // This method gets called
5392
5430
  // when incoming record has a lower version
5393
5431
  // than the record that is currently in the store
5394
- function mergeAndRefreshLowerVersionRecord(luvio, incoming, existing, incomingTrackedFieldsTrieRoot, existingTrackedFieldsTrieRoot, recordConflictMap) {
5432
+ function mergeAndRefreshLowerVersionRecord(luvio, incoming, existing, incomingTrackedFieldsTrieRoot, existingTrackedFieldsTrieRoot, recordConflictMap, existingNode) {
5395
5433
  // If the higher version (existing) does not have a superset of fields as incoming
5396
5434
  // then we need to refresh to get updated versions of fields on incoming
5397
5435
  if (isSuperRecordFieldTrie(existingTrackedFieldsTrieRoot, incomingTrackedFieldsTrieRoot) ===
@@ -5401,7 +5439,7 @@ function mergeAndRefreshLowerVersionRecord(luvio, incoming, existing, incomingTr
5401
5439
  if (isSupportedEntity(incoming.apiName) === false) {
5402
5440
  return mergeRecordFields(existing, incoming);
5403
5441
  }
5404
- const merged = mergePendingFields(existing, incoming);
5442
+ const merged = mergePendingFields(existing, incoming, existingNode);
5405
5443
  // update the conflict map to resolve the record conflict in resolveConflict
5406
5444
  if (recordConflictMap) {
5407
5445
  recordConflictMap.conflicts[incoming.id] = {
@@ -5440,7 +5478,7 @@ function mergeRecordConflict(luvio, incoming, existing, recordConflictMap) {
5440
5478
  extractTrackedFieldsToTrie(recordKey, incomingNode, incomingTrackedFieldsTrieRoot, trackedFieldsConfig);
5441
5479
  extractTrackedFieldsToTrie(recordKey, existingNode, existingTrackedFieldsTrieRoot, trackedFieldsConfig);
5442
5480
  if (incoming.weakEtag > existing.weakEtag) {
5443
- return mergeAndRefreshHigherVersionRecord(incoming, existing, incomingTrackedFieldsTrieRoot, existingTrackedFieldsTrieRoot, recordConflictMap);
5481
+ return mergeAndRefreshHigherVersionRecord(incoming, existing, incomingTrackedFieldsTrieRoot, existingTrackedFieldsTrieRoot, recordConflictMap, existingNode);
5444
5482
  }
5445
5483
  return mergeAndRefreshLowerVersionRecord(luvio, incoming, existing, incomingTrackedFieldsTrieRoot, existingTrackedFieldsTrieRoot, recordConflictMap);
5446
5484
  }
@@ -38446,5 +38484,5 @@ withDefaultLuvio((luvio) => {
38446
38484
  notifyAllListInfoSummaryUpdateAvailable = throttle(60, 60000, setupNotifyAllListInfoSummaryUpdateAvailable(luvio));
38447
38485
  });
38448
38486
 
38449
- export { API_NAMESPACE, InMemoryRecordRepresentationQueryEvaluator, MRU, RepresentationType$J as ObjectInfoDirectoryEntryRepresentationType, RepresentationType$O as ObjectInfoRepresentationType, RECORD_FIELDS_KEY_JUNCTION, RECORD_ID_PREFIX, RECORD_REPRESENTATION_NAME, RECORD_VIEW_ENTITY_ID_PREFIX, RECORD_VIEW_ENTITY_REPRESENTATION_NAME, RepresentationType$V as RecordRepresentationRepresentationType, TTL$z as RecordRepresentationTTL, RepresentationType$V as RecordRepresentationType, VERSION$1e as RecordRepresentationVersion, keyPrefix as UiApiNamespace, buildRecordRepKeyFromId, getFieldApiNamesArray as coerceFieldIdArray, getObjectApiName$1 as coerceObjectId, getObjectApiNamesArray as coerceObjectIdArray, configurationForRestAdapters as configuration, createContentDocumentAndVersion, createContentVersion, createIngestRecordWithFields, createLDSAdapterWithPrediction, createListInfo, createRecord, createRelatedListAdapterWithPrediction, deleteListInfo, deleteRecord, executeBatchRecordOperations, extractRecordIdFromStoreKey, getActionOverrides, getActionOverrides_imperative, getAllApps, getAllApps_imperative, getAppDetails, getAppDetails_imperative, getDuplicateConfiguration, getDuplicateConfiguration_imperative, getDuplicates, getDuplicates_imperative, getFlexipageFormulaOverrides, getFlexipageFormulaOverrides_imperative, getGlobalActions, getGlobalActions_imperative, getKeywordSearchResults, getKeywordSearchResults_imperative, getLayout, getLayoutUserState, getLayoutUserState_imperative, getLayout_imperative, getListInfoByName, getListInfoByNameAdapterFactory, getListInfoByName_imperative, getListInfosByName, getListInfosByName_imperative, getListInfosByObjectName, getListInfosByObjectNameAdapterFactory, getListInfosByObjectName_imperative, getListObjectInfo, getListObjectInfoAdapterFactory, getListObjectInfo_imperative, getListPreferences, getListPreferences_imperative, getListRecordsByName, factory$a as getListRecordsByNameAdapterFactory, getListRecordsByName_imperative, getListUi, getListUi_imperative, getLookupActions, getLookupActions_imperative, getLookupMetadata, getLookupMetadata_imperative, getLookupRecords, getLookupRecords_imperative, getNavItems, getNavItems_imperative, getObjectCreateActions, getObjectCreateActions_imperative, getObjectInfo, getObjectInfoAdapterFactory, getObjectInfoDirectoryAdapterFactory, getObjectInfo_imperative, getObjectInfos, getObjectInfosAdapterFactory, getObjectInfos_imperative, getPathLayout, getPathLayout_imperative, getPicklistValues, getPicklistValuesByRecordType, getPicklistValuesByRecordType_imperative, getPicklistValues_imperative, getQuickActionDefaults, getQuickActionDefaults_imperative, getQuickActionInfo, getQuickActionInfo_imperative, getQuickActionLayout, getQuickActionLayout_imperative, getRecord, getRecordActions, getRecordActionsAdapterFactory, getRecordActions_imperative, factory$f as getRecordAdapterFactory, getRecordAvatars, getRecordAvatarsAdapterFactory, getRecordAvatars_imperative, getRecordCreateDefaults, getRecordCreateDefaults_imperative, getRecordEditActions, getRecordEditActions_imperative, getRecordId18, getRecordNotifyChange, getRecordTemplateClone, getRecordTemplateClone_imperative, getRecordTemplateCreate, getRecordTemplateCreate_imperative, getRecordUi, getRecordUi_imperative, getRecord_imperative, getRecords, getRecordsAdapterFactory, getRecords_imperative, getRelatedListActions, getRelatedListActions_imperative, getRelatedListCount, getRelatedListCount_imperative, getRelatedListInfo, getRelatedListInfoAdapterFactory, getRelatedListInfoBatch, getRelatedListInfoBatchAdapterFactory, getRelatedListInfoBatch_imperative, getRelatedListInfo_imperative, getRelatedListPreferences, getRelatedListPreferencesBatch, getRelatedListPreferencesBatch_imperative, getRelatedListPreferences_imperative, getRelatedListRecordActions, getRelatedListRecordActions_imperative, getRelatedListRecords, getRelatedListRecordsAdapterFactory, getRelatedListRecordsBatch, getRelatedListRecordsBatchAdapterFactory, getRelatedListRecordsBatch_imperative, getRelatedListRecords_imperative, getRelatedListsActions, getRelatedListsActionsAdapterFactory, getRelatedListsActions_imperative, getRelatedListsCount, getRelatedListsCount_imperative, getRelatedListsInfo, getRelatedListsInfo_imperative, getResponseCacheKeys as getResponseCacheKeysContentDocumentCompositeRepresentation, getSearchFilterMetadata, getSearchFilterMetadata_imperative, getSearchFilterOptions, getSearchFilterOptions_imperative, getSearchResults, getSearchResults_imperative, getTypeCacheKeys$X as getTypeCacheKeysRecord, ingest as ingestContentDocumentCompositeRepresentation, ingest$H as ingestObjectInfo, ingest$B as ingestQuickActionExecutionRepresentation, ingest$O as ingestRecord, instrument, isStoreKeyRecordViewEntity, keyBuilder as keyBuilderContentDocumentCompositeRepresentation, keyBuilderFromType as keyBuilderFromTypeContentDocumentCompositeRepresentation, keyBuilderFromType$D as keyBuilderFromTypeRecordRepresentation, keyBuilder$1Y as keyBuilderObjectInfo, keyBuilder$1R as keyBuilderQuickActionExecutionRepresentation, keyBuilder$29 as keyBuilderRecord, notifyAllListInfoSummaryUpdateAvailable, notifyAllListRecordUpdateAvailable, notifyListInfoSummaryUpdateAvailable, notifyListInfoUpdateAvailable, notifyListRecordCollectionUpdateAvailable, notifyListViewSummaryUpdateAvailable, notifyQuickActionDefaultsUpdateAvailable, notifyRecordUpdateAvailable, performQuickAction, performUpdateRecordQuickAction, refresh, registerPrefetcher, updateLayoutUserState, updateListInfoByName, updateListPreferences, updateRecord, updateRecordAvatar, updateRelatedListInfo, updateRelatedListPreferences };
38450
- // version: 1.320.0-e3e5f3d984
38487
+ export { API_NAMESPACE, InMemoryRecordRepresentationQueryEvaluator, MRU, RepresentationType$J as ObjectInfoDirectoryEntryRepresentationType, RepresentationType$O as ObjectInfoRepresentationType, RECORD_FIELDS_KEY_JUNCTION, RECORD_ID_PREFIX, RECORD_REPRESENTATION_NAME, RECORD_VIEW_ENTITY_ID_PREFIX, RECORD_VIEW_ENTITY_REPRESENTATION_NAME, RepresentationType$V as RecordRepresentationRepresentationType, TTL$z as RecordRepresentationTTL, RepresentationType$V as RecordRepresentationType, VERSION$1e as RecordRepresentationVersion, keyPrefix as UiApiNamespace, buildRecordRepKeyFromId, getFieldApiNamesArray as coerceFieldIdArray, getObjectApiName$1 as coerceObjectId, getObjectApiNamesArray as coerceObjectIdArray, configurationForRestAdapters as configuration, createContentDocumentAndVersion, createContentVersion, createIngestRecordWithFields, createLDSAdapterWithPrediction, createListInfo, createRecord, createRelatedListAdapterWithPrediction, deleteListInfo, deleteRecord, executeBatchRecordOperations, extractRecordIdFromStoreKey, getActionOverrides, getActionOverrides_imperative, getAllApps, getAllApps_imperative, getAppDetails, getAppDetails_imperative, getDuplicateConfiguration, getDuplicateConfiguration_imperative, getDuplicates, getDuplicates_imperative, getFlexipageFormulaOverrides, getFlexipageFormulaOverrides_imperative, getGlobalActions, getGlobalActions_imperative, getKeywordSearchResults, getKeywordSearchResults_imperative, getLayout, getLayoutUserState, getLayoutUserState_imperative, getLayout_imperative, getListInfoByName, getListInfoByNameAdapterFactory, getListInfoByName_imperative, getListInfosByName, getListInfosByName_imperative, getListInfosByObjectName, getListInfosByObjectNameAdapterFactory, getListInfosByObjectName_imperative, getListObjectInfo, getListObjectInfoAdapterFactory, getListObjectInfo_imperative, getListPreferences, getListPreferences_imperative, getListRecordsByName, factory$a as getListRecordsByNameAdapterFactory, getListRecordsByName_imperative, getListUi, getListUi_imperative, getLookupActions, getLookupActions_imperative, getLookupMetadata, getLookupMetadata_imperative, getLookupRecords, getLookupRecords_imperative, getNavItems, getNavItems_imperative, getObjectCreateActions, getObjectCreateActions_imperative, getObjectInfo, getObjectInfoAdapterFactory, getObjectInfoDirectoryAdapterFactory, getObjectInfo_imperative, getObjectInfos, getObjectInfosAdapterFactory, getObjectInfos_imperative, getPathLayout, getPathLayout_imperative, getPicklistValues, getPicklistValuesByRecordType, getPicklistValuesByRecordType_imperative, getPicklistValues_imperative, getQuickActionDefaults, getQuickActionDefaults_imperative, getQuickActionInfo, getQuickActionInfo_imperative, getQuickActionLayout, getQuickActionLayout_imperative, getRecord, getRecordActions, getRecordActionsAdapterFactory, getRecordActions_imperative, factory$f as getRecordAdapterFactory, getRecordAvatars, getRecordAvatarsAdapterFactory, getRecordAvatars_imperative, getRecordCreateDefaults, getRecordCreateDefaults_imperative, getRecordEditActions, getRecordEditActions_imperative, getRecordId18, getRecordNotifyChange, getRecordTemplateClone, getRecordTemplateClone_imperative, getRecordTemplateCreate, getRecordTemplateCreate_imperative, getRecordUi, getRecordUi_imperative, getRecord_imperative, getRecords, getRecordsAdapterFactory, getRecords_imperative, getRelatedListActions, getRelatedListActions_imperative, getRelatedListCount, getRelatedListCount_imperative, getRelatedListInfo, getRelatedListInfoAdapterFactory, getRelatedListInfoBatch, getRelatedListInfoBatchAdapterFactory, getRelatedListInfoBatch_imperative, getRelatedListInfo_imperative, getRelatedListPreferences, getRelatedListPreferencesBatch, getRelatedListPreferencesBatch_imperative, getRelatedListPreferences_imperative, getRelatedListRecordActions, getRelatedListRecordActions_imperative, getRelatedListRecords, getRelatedListRecordsAdapterFactory, getRelatedListRecordsBatch, getRelatedListRecordsBatchAdapterFactory, getRelatedListRecordsBatch_imperative, getRelatedListRecords_imperative, getRelatedListsActions, getRelatedListsActionsAdapterFactory, getRelatedListsActions_imperative, getRelatedListsCount, getRelatedListsCount_imperative, getRelatedListsInfo, getRelatedListsInfo_imperative, getResponseCacheKeys as getResponseCacheKeysContentDocumentCompositeRepresentation, getSearchFilterMetadata, getSearchFilterMetadata_imperative, getSearchFilterOptions, getSearchFilterOptions_imperative, getSearchResults, getSearchResults_imperative, getTypeCacheKeys$X as getTypeCacheKeysRecord, ingest as ingestContentDocumentCompositeRepresentation, ingest$H as ingestObjectInfo, ingest$B as ingestQuickActionExecutionRepresentation, ingest$O as ingestRecord, instrument, isStoreKeyRecordViewEntity, isSupportedEntity, keyBuilder as keyBuilderContentDocumentCompositeRepresentation, keyBuilderFromType as keyBuilderFromTypeContentDocumentCompositeRepresentation, keyBuilderFromType$D as keyBuilderFromTypeRecordRepresentation, keyBuilder$1Y as keyBuilderObjectInfo, keyBuilder$1R as keyBuilderQuickActionExecutionRepresentation, keyBuilder$29 as keyBuilderRecord, notifyAllListInfoSummaryUpdateAvailable, notifyAllListRecordUpdateAvailable, notifyListInfoSummaryUpdateAvailable, notifyListInfoUpdateAvailable, notifyListRecordCollectionUpdateAvailable, notifyListViewSummaryUpdateAvailable, notifyQuickActionDefaultsUpdateAvailable, notifyRecordUpdateAvailable, performQuickAction, performUpdateRecordQuickAction, refresh, registerPrefetcher, updateLayoutUserState, updateListInfoByName, updateListPreferences, updateRecord, updateRecordAvatar, updateRelatedListInfo, updateRelatedListPreferences };
38488
+ // version: 1.321.0-40847d67a8
@@ -95,7 +95,7 @@ var TypeCheckShapes;
95
95
  TypeCheckShapes[TypeCheckShapes["Integer"] = 3] = "Integer";
96
96
  TypeCheckShapes[TypeCheckShapes["Unsupported"] = 4] = "Unsupported";
97
97
  })(TypeCheckShapes || (TypeCheckShapes = {}));
98
- // engine version: 0.156.4-a259372b
98
+ // engine version: 0.156.5-f5fd8c7a
99
99
 
100
100
  const { keys: ObjectKeys, create: ObjectCreate } = Object;
101
101