@salesforce/lds-worker-api 1.131.0-dev10 → 1.131.0-dev12

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.
@@ -758,4 +758,4 @@ if (process.env.NODE_ENV !== 'production') {
758
758
  }
759
759
 
760
760
  export { createPrimingSession, draftManager, draftQueue, executeAdapter, executeMutatingAdapter, getImperativeAdapterNames, invokeAdapter, invokeAdapterWithDraftToReplace, invokeAdapterWithMetadata, nimbusDraftQueue, setMetadataTTL, setUiApiRecordTTL, subscribeToAdapter };
761
- // version: 1.131.0-dev10-b950ecbb3
761
+ // version: 1.131.0-dev12-f6948e56d
@@ -3780,7 +3780,7 @@ function withDefaultLuvio(callback) {
3780
3780
  }
3781
3781
  callbacks.push(callback);
3782
3782
  }
3783
- // version: 1.131.0-dev10-b950ecbb3
3783
+ // version: 1.131.0-dev12-f6948e56d
3784
3784
 
3785
3785
  // TODO [TD-0081508]: once that TD is fulfilled we can probably change this file
3786
3786
  function instrumentAdapter$1(createFunction, _metadata) {
@@ -15213,7 +15213,7 @@ function parseAndVisit(source) {
15213
15213
  updateReferenceMapWithKnownKey(ast, luvioDocumentNode);
15214
15214
  return luvioDocumentNode;
15215
15215
  }
15216
- // version: 1.131.0-dev10-b950ecbb3
15216
+ // version: 1.131.0-dev12-f6948e56d
15217
15217
 
15218
15218
  function unwrap(data) {
15219
15219
  // The lwc-luvio bindings import a function from lwc called "unwrap".
@@ -16126,7 +16126,7 @@ function createGraphQLWireAdapterConstructor(luvio, adapter, metadata, astResolv
16126
16126
  const { apiFamily, name } = metadata;
16127
16127
  return createGraphQLWireAdapterConstructor$1(adapter, `${apiFamily}.${name}`, luvio, astResolver);
16128
16128
  }
16129
- // version: 1.131.0-dev10-b950ecbb3
16129
+ // version: 1.131.0-dev12-f6948e56d
16130
16130
 
16131
16131
  /**
16132
16132
  * Copyright (c) 2022, Salesforce, Inc.,
@@ -44472,7 +44472,7 @@ withDefaultLuvio((luvio) => {
44472
44472
  dropFunction: instrumentation$2.notifyRecordUpdateAvailableDropped,
44473
44473
  });
44474
44474
  });
44475
- // version: 1.131.0-dev10-5a970f64a
44475
+ // version: 1.131.0-dev12-53a795775
44476
44476
 
44477
44477
  var caseSensitiveUserId = '005B0000000GR4OIAW';
44478
44478
 
@@ -55531,6 +55531,14 @@ function getRecordKeyFromRecordRequest(luvio, resourceRequest) {
55531
55531
  function getRecordKeyForId(luvio, recordId) {
55532
55532
  return keyBuilder$1Q(luvio, { recordId });
55533
55533
  }
55534
+ /**
55535
+ * Drafts are stored with denormalized fields and normalized field links. This method
55536
+ * filters out the field links and returns a flattened record representation.
55537
+ *
55538
+ * Note that reference field links get re-applied during draft record ingestion
55539
+ * @param record draft record representation
55540
+ * @returns flattened record representation
55541
+ */
55534
55542
  function filterOutReferenceFieldsAndLinks(record) {
55535
55543
  const filteredFields = {};
55536
55544
  const fieldNames = keys$2$1(record.fields);
@@ -55549,32 +55557,6 @@ function filterOutReferenceFieldsAndLinks(record) {
55549
55557
  delete filteredRecords.links;
55550
55558
  return filteredRecords;
55551
55559
  }
55552
- async function resolveReferencesOneLevelDeep(record, getRecordFromKey) {
55553
- const fieldNames = keys$2$1(record.fields);
55554
- const resolvedFields = {};
55555
- for (const fieldName of fieldNames) {
55556
- const field = record.fields[fieldName];
55557
- if (isFieldLink(field)) {
55558
- const denormalizedRecord = await getRecordFromKey(field.value.__ref);
55559
- if (denormalizedRecord !== undefined) {
55560
- resolvedFields[fieldName] = {
55561
- value: filterOutReferenceFieldsAndLinks(denormalizedRecord),
55562
- displayValue: null,
55563
- };
55564
- }
55565
- else {
55566
- resolvedFields[fieldName] = {
55567
- value: null,
55568
- displayValue: null,
55569
- };
55570
- }
55571
- }
55572
- else {
55573
- resolvedFields[fieldName] = field;
55574
- }
55575
- }
55576
- return { ...record, fields: resolvedFields };
55577
- }
55578
55560
 
55579
55561
  /**
55580
55562
  * Checks if a resource request is a GET method on the record endpoint
@@ -55871,11 +55853,15 @@ const DEFAULT_FIELD_RECORD_TYPE_ID = 'RecordTypeId';
55871
55853
  */
55872
55854
  function replayDraftsOnRecord(record, draftMetadata) {
55873
55855
  let objectInfo;
55856
+ let luvio;
55874
55857
  if (record && draftMetadata) {
55875
55858
  objectInfo = draftMetadata.objectInfos.get(record.apiName);
55876
55859
  }
55860
+ if (draftMetadata) {
55861
+ luvio = draftMetadata.luvio;
55862
+ }
55877
55863
  // remove drafts before reapply
55878
- const baseRecord = record === undefined ? undefined : removeDrafts(record, objectInfo);
55864
+ const baseRecord = record === undefined ? undefined : removeDrafts(record, luvio, objectInfo);
55879
55865
  // record is a draft create
55880
55866
  if (baseRecord === undefined) {
55881
55867
  if (draftMetadata === undefined) {
@@ -55998,7 +55984,7 @@ function recursivelyApplyDraftsToRecord(record, draftMetadata, recordOperations)
55998
55984
  * @param record record with drafts applied
55999
55985
  * @returns
56000
55986
  */
56001
- function removeDrafts(record, objectInfo) {
55987
+ function removeDrafts(record, luvio, objectInfo) {
56002
55988
  const { drafts, fields } = record;
56003
55989
  if (drafts === undefined) {
56004
55990
  return record;
@@ -56014,6 +56000,12 @@ function removeDrafts(record, objectInfo) {
56014
56000
  const originalField = drafts.serverValues[fieldName];
56015
56001
  if (originalField !== undefined) {
56016
56002
  updatedFields[fieldName] = originalField;
56003
+ if (objectInfo && luvio) {
56004
+ const reference = getReferenceInfoForKey(fieldName, originalField, luvio, objectInfo);
56005
+ if (reference) {
56006
+ updatedFields[reference.referenceFieldName] = reference.field;
56007
+ }
56008
+ }
56017
56009
  // restore the record type id on the root of the record
56018
56010
  if (fieldName === DEFAULT_FIELD_RECORD_TYPE_ID) {
56019
56011
  const originalRecordTypeId = originalField.value;
@@ -56051,7 +56043,6 @@ function removeDrafts(record, objectInfo) {
56051
56043
  * @param fields List of draft record fields
56052
56044
  */
56053
56045
  function buildRecordFieldValueRepresentationsFromDraftFields(luvio, apiName, fields, objectInfos, referencedRecords, formatDisplayValue) {
56054
- var _a;
56055
56046
  const fieldNames = keys$2$1(fields);
56056
56047
  const recordFields = {};
56057
56048
  const objectInfo = objectInfos.get(apiName);
@@ -56065,7 +56056,7 @@ function buildRecordFieldValueRepresentationsFromDraftFields(luvio, apiName, fie
56065
56056
  if (objectInfo !== undefined) {
56066
56057
  const fieldInfo = objectInfo.fields[fieldName];
56067
56058
  if (fieldInfo !== undefined) {
56068
- const { dataType, relationshipName, referenceToInfos } = fieldInfo;
56059
+ const { dataType } = fieldInfo;
56069
56060
  recordFields[fieldName].displayValue = formatDisplayValue(draftField, dataType);
56070
56061
  if (dataType === 'DateTime' &&
56071
56062
  draftField !== null &&
@@ -56077,46 +56068,6 @@ function buildRecordFieldValueRepresentationsFromDraftFields(luvio, apiName, fie
56077
56068
  throw Error('date field value not valid');
56078
56069
  }
56079
56070
  }
56080
- if (dataType === 'Reference' && relationshipName !== null && draftField !== null) {
56081
- if (typeof draftField !== 'string') {
56082
- throw Error('reference field value is not a string');
56083
- }
56084
- const key = getRecordKeyForId(luvio, draftField);
56085
- const referencedRecord = referencedRecords.get(key);
56086
- if (referencedRecord) {
56087
- recordFields[relationshipName] = {
56088
- displayValue: null,
56089
- value: createLink$2(key),
56090
- };
56091
- }
56092
- else {
56093
- recordFields[relationshipName] = {
56094
- displayValue: null,
56095
- value: null,
56096
- };
56097
- }
56098
- // for custom objects, we select the 'Name' field
56099
- // otherwise we check the object info for name fields.
56100
- //if there are multiple we select 'Name' if it exists, otherwise the first one
56101
- if (referencedRecord !== undefined && referenceToInfos.length > 0) {
56102
- let nameField;
56103
- const referenceToInfo = referenceToInfos[0];
56104
- const nameFields = referenceToInfo.nameFields;
56105
- if (nameFields.length !== 0) {
56106
- nameField = nameFields.find((x) => x === 'Name');
56107
- if (nameField === undefined) {
56108
- nameField = nameFields[0];
56109
- }
56110
- }
56111
- if (nameField !== undefined) {
56112
- const nameFieldRef = referencedRecord.fields[nameField];
56113
- if (nameFieldRef) {
56114
- recordFields[relationshipName].displayValue =
56115
- (_a = nameFieldRef.displayValue) !== null && _a !== void 0 ? _a : nameFieldRef.value;
56116
- }
56117
- }
56118
- }
56119
- }
56120
56071
  }
56121
56072
  }
56122
56073
  }
@@ -56190,9 +56141,78 @@ function buildSyntheticRecordRepresentation(luvio, createOperation, userId, obje
56190
56141
  },
56191
56142
  };
56192
56143
  }
56144
+ function applyReferenceLinksToDraft(record, draftMetadata) {
56145
+ var _a;
56146
+ const { objectInfos, referencedRecords, luvio } = draftMetadata;
56147
+ const objectInfo = objectInfos.get(record.apiName);
56148
+ if (objectInfo === undefined) {
56149
+ return record;
56150
+ }
56151
+ let fieldNames = Object.keys(record.fields);
56152
+ const recordFields = { ...record.fields };
56153
+ for (const draftField of fieldNames) {
56154
+ const fieldInfo = objectInfo.fields[draftField];
56155
+ if (fieldInfo === undefined) {
56156
+ continue;
56157
+ }
56158
+ const { dataType, relationshipName, referenceToInfos } = fieldInfo;
56159
+ const draftFieldValue = record.fields[draftField].value;
56160
+ if (dataType === 'Reference' && relationshipName !== null && draftFieldValue !== null) {
56161
+ if (typeof draftFieldValue !== 'string') {
56162
+ throw Error('reference field value is not a string');
56163
+ }
56164
+ const key = getRecordKeyForId(luvio, draftFieldValue);
56165
+ const referencedRecord = referencedRecords.get(key);
56166
+ recordFields[relationshipName] = {
56167
+ displayValue: null,
56168
+ value: createLink$2(key),
56169
+ };
56170
+ // for custom objects, we select the 'Name' field
56171
+ // otherwise we check the object info for name fields.
56172
+ //if there are multiple we select 'Name' if it exists, otherwise the first one
56173
+ if (referencedRecord !== undefined && referenceToInfos.length > 0) {
56174
+ let nameField;
56175
+ const referenceToInfo = referenceToInfos[0];
56176
+ const nameFields = referenceToInfo.nameFields;
56177
+ if (nameFields.length !== 0) {
56178
+ nameField = nameFields.find((x) => x === 'Name');
56179
+ if (nameField === undefined) {
56180
+ nameField = nameFields[0];
56181
+ }
56182
+ }
56183
+ if (nameField !== undefined) {
56184
+ const nameFieldRef = referencedRecord.fields[nameField];
56185
+ if (nameFieldRef) {
56186
+ recordFields[relationshipName].displayValue =
56187
+ (_a = nameFieldRef.displayValue) !== null && _a !== void 0 ? _a : nameFieldRef.value;
56188
+ }
56189
+ }
56190
+ }
56191
+ }
56192
+ }
56193
+ return { ...record, fields: recordFields };
56194
+ }
56193
56195
  function createLink$2(key) {
56194
56196
  return { __ref: key };
56195
56197
  }
56198
+ function getReferenceInfoForKey(fieldName, field, luvio, objectInfo) {
56199
+ const { dataType, relationshipName } = objectInfo.fields[fieldName];
56200
+ const draftFieldValue = field.value;
56201
+ if (dataType === 'Reference' && relationshipName !== null && draftFieldValue !== null) {
56202
+ if (typeof draftFieldValue !== 'string') {
56203
+ throw Error('reference field value is not a string');
56204
+ }
56205
+ const key = getRecordKeyForId(luvio, draftFieldValue);
56206
+ return {
56207
+ referenceFieldName: relationshipName,
56208
+ field: {
56209
+ displayValue: null,
56210
+ value: createLink$2(key),
56211
+ },
56212
+ };
56213
+ }
56214
+ return undefined;
56215
+ }
56196
56216
 
56197
56217
  async function getAdapterData(adapter, config) {
56198
56218
  const snapshot = await adapter(config);
@@ -56337,8 +56357,7 @@ class UiApiActionHandler extends AbstractResourceRequestActionHandler {
56337
56357
  *
56338
56358
  * @param action The draft action related to this record
56339
56359
  * @param _queue The draft queue
56340
- * @returns The record with the updated draft queue applied. This record is resolved with references one-level
56341
- * deep to ensure that reference links are properly established during ingestion to it
56360
+ * @returns The record with the updated draft queue applied. References are not included and must be applied at ingest.
56342
56361
  *
56343
56362
  * or
56344
56363
  *
@@ -56362,7 +56381,7 @@ class UiApiActionHandler extends AbstractResourceRequestActionHandler {
56362
56381
  if (recordWithDrafts === undefined) {
56363
56382
  return undefined;
56364
56383
  }
56365
- return resolveReferencesOneLevelDeep(recordWithDrafts, this.durableStore.getDenormalizedRecord.bind(this.durableStore));
56384
+ return filterOutReferenceFieldsAndLinks(recordWithDrafts);
56366
56385
  }
56367
56386
  const record = await this.durableStore.getDenormalizedRecord(key);
56368
56387
  if (record === undefined) {
@@ -56373,7 +56392,7 @@ class UiApiActionHandler extends AbstractResourceRequestActionHandler {
56373
56392
  if (recordWithDrafts === undefined) {
56374
56393
  return recordWithDrafts;
56375
56394
  }
56376
- return resolveReferencesOneLevelDeep(recordWithDrafts, this.durableStore.getDenormalizedRecord.bind(this.durableStore));
56395
+ return filterOutReferenceFieldsAndLinks(recordWithDrafts);
56377
56396
  }
56378
56397
  applyDraftsToIncomingData(key, data, draftMetadata, publishData) {
56379
56398
  if (isField(key)) {
@@ -56400,19 +56419,26 @@ class UiApiActionHandler extends AbstractResourceRequestActionHandler {
56400
56419
  }
56401
56420
  }
56402
56421
  const recordWithDrafts = replayDraftsOnRecord(partialRecord, draftMetadata);
56422
+ const recordWithSpanningRefLinks = applyReferenceLinksToDraft(recordWithDrafts, draftMetadata);
56403
56423
  // publish the normalized fields
56404
56424
  const normalizedRecord = {
56405
- ...recordWithDrafts,
56425
+ ...recordWithSpanningRefLinks,
56406
56426
  ...data,
56407
56427
  fields: { ...data.fields },
56408
56428
  };
56409
- for (const fieldName of recordFieldNames) {
56429
+ for (const fieldName of keys$2$1(recordWithSpanningRefLinks.fields)) {
56410
56430
  const fieldKey = buildRecordFieldStoreKey(key, fieldName);
56411
56431
  if (this.collectedFields[fieldKey] !== undefined) {
56412
- const fieldData = recordWithDrafts.fields[fieldName];
56432
+ const fieldData = recordWithSpanningRefLinks.fields[fieldName];
56413
56433
  normalizedRecord.fields[fieldName] = { __ref: fieldKey };
56414
56434
  publishData(fieldKey, fieldData);
56415
56435
  }
56436
+ else if (recordWithSpanningRefLinks.fields[fieldName] &&
56437
+ recordWithSpanningRefLinks.fields[fieldName].value &&
56438
+ recordWithSpanningRefLinks.fields[fieldName].value.__ref !== undefined) {
56439
+ normalizedRecord.fields[fieldName] = { __ref: fieldKey };
56440
+ publishData(fieldKey, recordWithSpanningRefLinks.fields[fieldName]);
56441
+ }
56416
56442
  }
56417
56443
  // publish the normalized record
56418
56444
  publishData(key, normalizedRecord);
@@ -57586,27 +57612,10 @@ class ContentDocumentCompositeRepresentationActionHandler extends AbstractResour
57586
57612
  if (contentVersion === undefined) {
57587
57613
  return undefined;
57588
57614
  }
57589
- // this lambda can be shared across the calls to resolveReferencesOneLevelDeep
57590
- const luvio = this.getLuvio();
57591
- const contentDocumentKey = getRecordKeyForId(luvio, contentDocumentId);
57592
- const contentDocumentLinkKey = getRecordKeyForId(luvio, contentDocumentLinkId);
57593
- const contentVersionKey = getRecordKeyForId(luvio, contentVersionId);
57594
- const getRecordFromKey = async (key) => {
57595
- if (key === contentDocumentKey) {
57596
- return contentDocRecord;
57597
- }
57598
- if (key === contentDocumentLinkKey) {
57599
- return contentDocLink;
57600
- }
57601
- if (key === contentVersionKey) {
57602
- return contentVersion;
57603
- }
57604
- return this.durableStore.getDenormalizedRecord(key);
57605
- };
57606
57615
  // finally we resolve all references for each record
57607
- const contentDocResolved = await resolveReferencesOneLevelDeep(contentDocRecord, getRecordFromKey);
57608
- const contentDocLinkResolved = await resolveReferencesOneLevelDeep(contentDocLink, getRecordFromKey);
57609
- const contentVersionResolved = await resolveReferencesOneLevelDeep(contentVersion, getRecordFromKey);
57616
+ const contentDocResolved = await filterOutReferenceFieldsAndLinks(contentDocRecord);
57617
+ const contentDocLinkResolved = await filterOutReferenceFieldsAndLinks(contentDocLink);
57618
+ const contentVersionResolved = await filterOutReferenceFieldsAndLinks(contentVersion);
57610
57619
  return {
57611
57620
  contentDocument: contentDocResolved,
57612
57621
  contentDocumentLinks: [contentDocLinkResolved],
@@ -60579,7 +60588,7 @@ register({
60579
60588
  id: '@salesforce/lds-network-adapter',
60580
60589
  instrument: instrument$1,
60581
60590
  });
60582
- // version: 1.131.0-dev10-b950ecbb3
60591
+ // version: 1.131.0-dev12-f6948e56d
60583
60592
 
60584
60593
  const { create: create$2, keys: keys$2 } = Object;
60585
60594
  const { stringify: stringify$1, parse: parse$1 } = JSON;
@@ -74887,7 +74896,7 @@ register({
74887
74896
  configuration: { ...configurationForGraphQLAdapters },
74888
74897
  instrument,
74889
74898
  });
74890
- // version: 1.131.0-dev10-5a970f64a
74899
+ // version: 1.131.0-dev12-53a795775
74891
74900
 
74892
74901
  // On core the unstable adapters are re-exported with different names,
74893
74902
 
@@ -77143,7 +77152,7 @@ withDefaultLuvio((luvio) => {
77143
77152
  unstable_graphQL_imperative = createImperativeAdapter(luvio, createInstrumentedAdapter(ldsAdapter, adapterMetadata), adapterMetadata);
77144
77153
  graphQLImperative = ldsAdapter;
77145
77154
  });
77146
- // version: 1.131.0-dev10-5a970f64a
77155
+ // version: 1.131.0-dev12-53a795775
77147
77156
 
77148
77157
  var gqlApi = /*#__PURE__*/Object.freeze({
77149
77158
  __proto__: null,
@@ -77832,4 +77841,4 @@ const { luvio } = getRuntime();
77832
77841
  setDefaultLuvio({ luvio });
77833
77842
 
77834
77843
  export { createPrimingSession, draftManager, draftQueue, executeAdapter, executeMutatingAdapter, getImperativeAdapterNames, invokeAdapter, invokeAdapterWithDraftToReplace, invokeAdapterWithMetadata, nimbusDraftQueue, registerReportObserver, setMetadataTTL, setUiApiRecordTTL, subscribeToAdapter };
77835
- // version: 1.131.0-dev10-b950ecbb3
77844
+ // version: 1.131.0-dev12-f6948e56d
@@ -3786,7 +3786,7 @@
3786
3786
  }
3787
3787
  callbacks.push(callback);
3788
3788
  }
3789
- // version: 1.131.0-dev10-b950ecbb3
3789
+ // version: 1.131.0-dev12-f6948e56d
3790
3790
 
3791
3791
  // TODO [TD-0081508]: once that TD is fulfilled we can probably change this file
3792
3792
  function instrumentAdapter$1(createFunction, _metadata) {
@@ -15219,7 +15219,7 @@
15219
15219
  updateReferenceMapWithKnownKey(ast, luvioDocumentNode);
15220
15220
  return luvioDocumentNode;
15221
15221
  }
15222
- // version: 1.131.0-dev10-b950ecbb3
15222
+ // version: 1.131.0-dev12-f6948e56d
15223
15223
 
15224
15224
  function unwrap(data) {
15225
15225
  // The lwc-luvio bindings import a function from lwc called "unwrap".
@@ -16132,7 +16132,7 @@
16132
16132
  const { apiFamily, name } = metadata;
16133
16133
  return createGraphQLWireAdapterConstructor$1(adapter, `${apiFamily}.${name}`, luvio, astResolver);
16134
16134
  }
16135
- // version: 1.131.0-dev10-b950ecbb3
16135
+ // version: 1.131.0-dev12-f6948e56d
16136
16136
 
16137
16137
  /**
16138
16138
  * Copyright (c) 2022, Salesforce, Inc.,
@@ -44478,7 +44478,7 @@
44478
44478
  dropFunction: instrumentation$2.notifyRecordUpdateAvailableDropped,
44479
44479
  });
44480
44480
  });
44481
- // version: 1.131.0-dev10-5a970f64a
44481
+ // version: 1.131.0-dev12-53a795775
44482
44482
 
44483
44483
  var caseSensitiveUserId = '005B0000000GR4OIAW';
44484
44484
 
@@ -55537,6 +55537,14 @@
55537
55537
  function getRecordKeyForId(luvio, recordId) {
55538
55538
  return keyBuilder$1Q(luvio, { recordId });
55539
55539
  }
55540
+ /**
55541
+ * Drafts are stored with denormalized fields and normalized field links. This method
55542
+ * filters out the field links and returns a flattened record representation.
55543
+ *
55544
+ * Note that reference field links get re-applied during draft record ingestion
55545
+ * @param record draft record representation
55546
+ * @returns flattened record representation
55547
+ */
55540
55548
  function filterOutReferenceFieldsAndLinks(record) {
55541
55549
  const filteredFields = {};
55542
55550
  const fieldNames = keys$2$1(record.fields);
@@ -55555,32 +55563,6 @@
55555
55563
  delete filteredRecords.links;
55556
55564
  return filteredRecords;
55557
55565
  }
55558
- async function resolveReferencesOneLevelDeep(record, getRecordFromKey) {
55559
- const fieldNames = keys$2$1(record.fields);
55560
- const resolvedFields = {};
55561
- for (const fieldName of fieldNames) {
55562
- const field = record.fields[fieldName];
55563
- if (isFieldLink(field)) {
55564
- const denormalizedRecord = await getRecordFromKey(field.value.__ref);
55565
- if (denormalizedRecord !== undefined) {
55566
- resolvedFields[fieldName] = {
55567
- value: filterOutReferenceFieldsAndLinks(denormalizedRecord),
55568
- displayValue: null,
55569
- };
55570
- }
55571
- else {
55572
- resolvedFields[fieldName] = {
55573
- value: null,
55574
- displayValue: null,
55575
- };
55576
- }
55577
- }
55578
- else {
55579
- resolvedFields[fieldName] = field;
55580
- }
55581
- }
55582
- return { ...record, fields: resolvedFields };
55583
- }
55584
55566
 
55585
55567
  /**
55586
55568
  * Checks if a resource request is a GET method on the record endpoint
@@ -55877,11 +55859,15 @@
55877
55859
  */
55878
55860
  function replayDraftsOnRecord(record, draftMetadata) {
55879
55861
  let objectInfo;
55862
+ let luvio;
55880
55863
  if (record && draftMetadata) {
55881
55864
  objectInfo = draftMetadata.objectInfos.get(record.apiName);
55882
55865
  }
55866
+ if (draftMetadata) {
55867
+ luvio = draftMetadata.luvio;
55868
+ }
55883
55869
  // remove drafts before reapply
55884
- const baseRecord = record === undefined ? undefined : removeDrafts(record, objectInfo);
55870
+ const baseRecord = record === undefined ? undefined : removeDrafts(record, luvio, objectInfo);
55885
55871
  // record is a draft create
55886
55872
  if (baseRecord === undefined) {
55887
55873
  if (draftMetadata === undefined) {
@@ -56004,7 +55990,7 @@
56004
55990
  * @param record record with drafts applied
56005
55991
  * @returns
56006
55992
  */
56007
- function removeDrafts(record, objectInfo) {
55993
+ function removeDrafts(record, luvio, objectInfo) {
56008
55994
  const { drafts, fields } = record;
56009
55995
  if (drafts === undefined) {
56010
55996
  return record;
@@ -56020,6 +56006,12 @@
56020
56006
  const originalField = drafts.serverValues[fieldName];
56021
56007
  if (originalField !== undefined) {
56022
56008
  updatedFields[fieldName] = originalField;
56009
+ if (objectInfo && luvio) {
56010
+ const reference = getReferenceInfoForKey(fieldName, originalField, luvio, objectInfo);
56011
+ if (reference) {
56012
+ updatedFields[reference.referenceFieldName] = reference.field;
56013
+ }
56014
+ }
56023
56015
  // restore the record type id on the root of the record
56024
56016
  if (fieldName === DEFAULT_FIELD_RECORD_TYPE_ID) {
56025
56017
  const originalRecordTypeId = originalField.value;
@@ -56057,7 +56049,6 @@
56057
56049
  * @param fields List of draft record fields
56058
56050
  */
56059
56051
  function buildRecordFieldValueRepresentationsFromDraftFields(luvio, apiName, fields, objectInfos, referencedRecords, formatDisplayValue) {
56060
- var _a;
56061
56052
  const fieldNames = keys$2$1(fields);
56062
56053
  const recordFields = {};
56063
56054
  const objectInfo = objectInfos.get(apiName);
@@ -56071,7 +56062,7 @@
56071
56062
  if (objectInfo !== undefined) {
56072
56063
  const fieldInfo = objectInfo.fields[fieldName];
56073
56064
  if (fieldInfo !== undefined) {
56074
- const { dataType, relationshipName, referenceToInfos } = fieldInfo;
56065
+ const { dataType } = fieldInfo;
56075
56066
  recordFields[fieldName].displayValue = formatDisplayValue(draftField, dataType);
56076
56067
  if (dataType === 'DateTime' &&
56077
56068
  draftField !== null &&
@@ -56083,46 +56074,6 @@
56083
56074
  throw Error('date field value not valid');
56084
56075
  }
56085
56076
  }
56086
- if (dataType === 'Reference' && relationshipName !== null && draftField !== null) {
56087
- if (typeof draftField !== 'string') {
56088
- throw Error('reference field value is not a string');
56089
- }
56090
- const key = getRecordKeyForId(luvio, draftField);
56091
- const referencedRecord = referencedRecords.get(key);
56092
- if (referencedRecord) {
56093
- recordFields[relationshipName] = {
56094
- displayValue: null,
56095
- value: createLink$2(key),
56096
- };
56097
- }
56098
- else {
56099
- recordFields[relationshipName] = {
56100
- displayValue: null,
56101
- value: null,
56102
- };
56103
- }
56104
- // for custom objects, we select the 'Name' field
56105
- // otherwise we check the object info for name fields.
56106
- //if there are multiple we select 'Name' if it exists, otherwise the first one
56107
- if (referencedRecord !== undefined && referenceToInfos.length > 0) {
56108
- let nameField;
56109
- const referenceToInfo = referenceToInfos[0];
56110
- const nameFields = referenceToInfo.nameFields;
56111
- if (nameFields.length !== 0) {
56112
- nameField = nameFields.find((x) => x === 'Name');
56113
- if (nameField === undefined) {
56114
- nameField = nameFields[0];
56115
- }
56116
- }
56117
- if (nameField !== undefined) {
56118
- const nameFieldRef = referencedRecord.fields[nameField];
56119
- if (nameFieldRef) {
56120
- recordFields[relationshipName].displayValue =
56121
- (_a = nameFieldRef.displayValue) !== null && _a !== void 0 ? _a : nameFieldRef.value;
56122
- }
56123
- }
56124
- }
56125
- }
56126
56077
  }
56127
56078
  }
56128
56079
  }
@@ -56196,9 +56147,78 @@
56196
56147
  },
56197
56148
  };
56198
56149
  }
56150
+ function applyReferenceLinksToDraft(record, draftMetadata) {
56151
+ var _a;
56152
+ const { objectInfos, referencedRecords, luvio } = draftMetadata;
56153
+ const objectInfo = objectInfos.get(record.apiName);
56154
+ if (objectInfo === undefined) {
56155
+ return record;
56156
+ }
56157
+ let fieldNames = Object.keys(record.fields);
56158
+ const recordFields = { ...record.fields };
56159
+ for (const draftField of fieldNames) {
56160
+ const fieldInfo = objectInfo.fields[draftField];
56161
+ if (fieldInfo === undefined) {
56162
+ continue;
56163
+ }
56164
+ const { dataType, relationshipName, referenceToInfos } = fieldInfo;
56165
+ const draftFieldValue = record.fields[draftField].value;
56166
+ if (dataType === 'Reference' && relationshipName !== null && draftFieldValue !== null) {
56167
+ if (typeof draftFieldValue !== 'string') {
56168
+ throw Error('reference field value is not a string');
56169
+ }
56170
+ const key = getRecordKeyForId(luvio, draftFieldValue);
56171
+ const referencedRecord = referencedRecords.get(key);
56172
+ recordFields[relationshipName] = {
56173
+ displayValue: null,
56174
+ value: createLink$2(key),
56175
+ };
56176
+ // for custom objects, we select the 'Name' field
56177
+ // otherwise we check the object info for name fields.
56178
+ //if there are multiple we select 'Name' if it exists, otherwise the first one
56179
+ if (referencedRecord !== undefined && referenceToInfos.length > 0) {
56180
+ let nameField;
56181
+ const referenceToInfo = referenceToInfos[0];
56182
+ const nameFields = referenceToInfo.nameFields;
56183
+ if (nameFields.length !== 0) {
56184
+ nameField = nameFields.find((x) => x === 'Name');
56185
+ if (nameField === undefined) {
56186
+ nameField = nameFields[0];
56187
+ }
56188
+ }
56189
+ if (nameField !== undefined) {
56190
+ const nameFieldRef = referencedRecord.fields[nameField];
56191
+ if (nameFieldRef) {
56192
+ recordFields[relationshipName].displayValue =
56193
+ (_a = nameFieldRef.displayValue) !== null && _a !== void 0 ? _a : nameFieldRef.value;
56194
+ }
56195
+ }
56196
+ }
56197
+ }
56198
+ }
56199
+ return { ...record, fields: recordFields };
56200
+ }
56199
56201
  function createLink$2(key) {
56200
56202
  return { __ref: key };
56201
56203
  }
56204
+ function getReferenceInfoForKey(fieldName, field, luvio, objectInfo) {
56205
+ const { dataType, relationshipName } = objectInfo.fields[fieldName];
56206
+ const draftFieldValue = field.value;
56207
+ if (dataType === 'Reference' && relationshipName !== null && draftFieldValue !== null) {
56208
+ if (typeof draftFieldValue !== 'string') {
56209
+ throw Error('reference field value is not a string');
56210
+ }
56211
+ const key = getRecordKeyForId(luvio, draftFieldValue);
56212
+ return {
56213
+ referenceFieldName: relationshipName,
56214
+ field: {
56215
+ displayValue: null,
56216
+ value: createLink$2(key),
56217
+ },
56218
+ };
56219
+ }
56220
+ return undefined;
56221
+ }
56202
56222
 
56203
56223
  async function getAdapterData(adapter, config) {
56204
56224
  const snapshot = await adapter(config);
@@ -56343,8 +56363,7 @@
56343
56363
  *
56344
56364
  * @param action The draft action related to this record
56345
56365
  * @param _queue The draft queue
56346
- * @returns The record with the updated draft queue applied. This record is resolved with references one-level
56347
- * deep to ensure that reference links are properly established during ingestion to it
56366
+ * @returns The record with the updated draft queue applied. References are not included and must be applied at ingest.
56348
56367
  *
56349
56368
  * or
56350
56369
  *
@@ -56368,7 +56387,7 @@
56368
56387
  if (recordWithDrafts === undefined) {
56369
56388
  return undefined;
56370
56389
  }
56371
- return resolveReferencesOneLevelDeep(recordWithDrafts, this.durableStore.getDenormalizedRecord.bind(this.durableStore));
56390
+ return filterOutReferenceFieldsAndLinks(recordWithDrafts);
56372
56391
  }
56373
56392
  const record = await this.durableStore.getDenormalizedRecord(key);
56374
56393
  if (record === undefined) {
@@ -56379,7 +56398,7 @@
56379
56398
  if (recordWithDrafts === undefined) {
56380
56399
  return recordWithDrafts;
56381
56400
  }
56382
- return resolveReferencesOneLevelDeep(recordWithDrafts, this.durableStore.getDenormalizedRecord.bind(this.durableStore));
56401
+ return filterOutReferenceFieldsAndLinks(recordWithDrafts);
56383
56402
  }
56384
56403
  applyDraftsToIncomingData(key, data, draftMetadata, publishData) {
56385
56404
  if (isField(key)) {
@@ -56406,19 +56425,26 @@
56406
56425
  }
56407
56426
  }
56408
56427
  const recordWithDrafts = replayDraftsOnRecord(partialRecord, draftMetadata);
56428
+ const recordWithSpanningRefLinks = applyReferenceLinksToDraft(recordWithDrafts, draftMetadata);
56409
56429
  // publish the normalized fields
56410
56430
  const normalizedRecord = {
56411
- ...recordWithDrafts,
56431
+ ...recordWithSpanningRefLinks,
56412
56432
  ...data,
56413
56433
  fields: { ...data.fields },
56414
56434
  };
56415
- for (const fieldName of recordFieldNames) {
56435
+ for (const fieldName of keys$2$1(recordWithSpanningRefLinks.fields)) {
56416
56436
  const fieldKey = buildRecordFieldStoreKey(key, fieldName);
56417
56437
  if (this.collectedFields[fieldKey] !== undefined) {
56418
- const fieldData = recordWithDrafts.fields[fieldName];
56438
+ const fieldData = recordWithSpanningRefLinks.fields[fieldName];
56419
56439
  normalizedRecord.fields[fieldName] = { __ref: fieldKey };
56420
56440
  publishData(fieldKey, fieldData);
56421
56441
  }
56442
+ else if (recordWithSpanningRefLinks.fields[fieldName] &&
56443
+ recordWithSpanningRefLinks.fields[fieldName].value &&
56444
+ recordWithSpanningRefLinks.fields[fieldName].value.__ref !== undefined) {
56445
+ normalizedRecord.fields[fieldName] = { __ref: fieldKey };
56446
+ publishData(fieldKey, recordWithSpanningRefLinks.fields[fieldName]);
56447
+ }
56422
56448
  }
56423
56449
  // publish the normalized record
56424
56450
  publishData(key, normalizedRecord);
@@ -57592,27 +57618,10 @@
57592
57618
  if (contentVersion === undefined) {
57593
57619
  return undefined;
57594
57620
  }
57595
- // this lambda can be shared across the calls to resolveReferencesOneLevelDeep
57596
- const luvio = this.getLuvio();
57597
- const contentDocumentKey = getRecordKeyForId(luvio, contentDocumentId);
57598
- const contentDocumentLinkKey = getRecordKeyForId(luvio, contentDocumentLinkId);
57599
- const contentVersionKey = getRecordKeyForId(luvio, contentVersionId);
57600
- const getRecordFromKey = async (key) => {
57601
- if (key === contentDocumentKey) {
57602
- return contentDocRecord;
57603
- }
57604
- if (key === contentDocumentLinkKey) {
57605
- return contentDocLink;
57606
- }
57607
- if (key === contentVersionKey) {
57608
- return contentVersion;
57609
- }
57610
- return this.durableStore.getDenormalizedRecord(key);
57611
- };
57612
57621
  // finally we resolve all references for each record
57613
- const contentDocResolved = await resolveReferencesOneLevelDeep(contentDocRecord, getRecordFromKey);
57614
- const contentDocLinkResolved = await resolveReferencesOneLevelDeep(contentDocLink, getRecordFromKey);
57615
- const contentVersionResolved = await resolveReferencesOneLevelDeep(contentVersion, getRecordFromKey);
57622
+ const contentDocResolved = await filterOutReferenceFieldsAndLinks(contentDocRecord);
57623
+ const contentDocLinkResolved = await filterOutReferenceFieldsAndLinks(contentDocLink);
57624
+ const contentVersionResolved = await filterOutReferenceFieldsAndLinks(contentVersion);
57616
57625
  return {
57617
57626
  contentDocument: contentDocResolved,
57618
57627
  contentDocumentLinks: [contentDocLinkResolved],
@@ -60585,7 +60594,7 @@
60585
60594
  id: '@salesforce/lds-network-adapter',
60586
60595
  instrument: instrument$1,
60587
60596
  });
60588
- // version: 1.131.0-dev10-b950ecbb3
60597
+ // version: 1.131.0-dev12-f6948e56d
60589
60598
 
60590
60599
  const { create: create$2, keys: keys$2 } = Object;
60591
60600
  const { stringify: stringify$1, parse: parse$1 } = JSON;
@@ -74893,7 +74902,7 @@
74893
74902
  configuration: { ...configurationForGraphQLAdapters },
74894
74903
  instrument,
74895
74904
  });
74896
- // version: 1.131.0-dev10-5a970f64a
74905
+ // version: 1.131.0-dev12-53a795775
74897
74906
 
74898
74907
  // On core the unstable adapters are re-exported with different names,
74899
74908
 
@@ -77149,7 +77158,7 @@
77149
77158
  unstable_graphQL_imperative = createImperativeAdapter(luvio, createInstrumentedAdapter(ldsAdapter, adapterMetadata), adapterMetadata);
77150
77159
  graphQLImperative = ldsAdapter;
77151
77160
  });
77152
- // version: 1.131.0-dev10-5a970f64a
77161
+ // version: 1.131.0-dev12-53a795775
77153
77162
 
77154
77163
  var gqlApi = /*#__PURE__*/Object.freeze({
77155
77164
  __proto__: null,
@@ -77855,4 +77864,4 @@
77855
77864
  Object.defineProperty(exports, '__esModule', { value: true });
77856
77865
 
77857
77866
  }));
77858
- // version: 1.131.0-dev10-b950ecbb3
77867
+ // version: 1.131.0-dev12-f6948e56d
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/lds-worker-api",
3
- "version": "1.131.0-dev10",
3
+ "version": "1.131.0-dev12",
4
4
  "license": "SEE LICENSE IN LICENSE.txt",
5
5
  "description": "",
6
6
  "main": "dist/standalone/es/lds-worker-api.js",
@@ -34,15 +34,15 @@
34
34
  },
35
35
  "devDependencies": {
36
36
  "@oat-sa/rollup-plugin-wildcard-external": "^0.1.0",
37
- "@salesforce/lds-adapters-graphql": "1.131.0-dev10",
38
- "@salesforce/lds-adapters-uiapi": "1.131.0-dev10",
39
- "@salesforce/lds-default-luvio": "1.131.0-dev10",
40
- "@salesforce/lds-drafts": "1.131.0-dev10",
41
- "@salesforce/lds-graphql-parser": "1.131.0-dev10",
42
- "@salesforce/lds-luvio-engine": "1.131.0-dev10",
43
- "@salesforce/lds-priming": "1.131.0-dev10",
44
- "@salesforce/lds-runtime-mobile": "1.131.0-dev10",
45
- "@salesforce/nimbus-plugin-lds": "1.131.0-dev10",
37
+ "@salesforce/lds-adapters-graphql": "1.131.0-dev12",
38
+ "@salesforce/lds-adapters-uiapi": "1.131.0-dev12",
39
+ "@salesforce/lds-default-luvio": "1.131.0-dev12",
40
+ "@salesforce/lds-drafts": "1.131.0-dev12",
41
+ "@salesforce/lds-graphql-parser": "1.131.0-dev12",
42
+ "@salesforce/lds-luvio-engine": "1.131.0-dev12",
43
+ "@salesforce/lds-priming": "1.131.0-dev12",
44
+ "@salesforce/lds-runtime-mobile": "1.131.0-dev12",
45
+ "@salesforce/nimbus-plugin-lds": "1.131.0-dev12",
46
46
  "ajv": "^8.11.0",
47
47
  "glob": "^7.1.5",
48
48
  "nimbus-types": "^2.0.0-alpha1",