@salesforce/lds-worker-api 1.153.0 → 1.154.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.
@@ -3805,7 +3805,7 @@
3805
3805
  }
3806
3806
  callbacks.push(callback);
3807
3807
  }
3808
- // version: 1.153.0-8e8a8177b
3808
+ // version: 1.154.0-3a36aab7e
3809
3809
 
3810
3810
  // TODO [TD-0081508]: once that TD is fulfilled we can probably change this file
3811
3811
  function instrumentAdapter$1(createFunction, _metadata) {
@@ -15238,7 +15238,7 @@
15238
15238
  updateReferenceMapWithKnownKey(ast, luvioDocumentNode);
15239
15239
  return luvioDocumentNode;
15240
15240
  }
15241
- // version: 1.153.0-8e8a8177b
15241
+ // version: 1.154.0-3a36aab7e
15242
15242
 
15243
15243
  function unwrap(data) {
15244
15244
  // The lwc-luvio bindings import a function from lwc called "unwrap".
@@ -16151,7 +16151,7 @@
16151
16151
  const { apiFamily, name } = metadata;
16152
16152
  return createGraphQLWireAdapterConstructor$1(adapter, `${apiFamily}.${name}`, luvio, astResolver);
16153
16153
  }
16154
- // version: 1.153.0-8e8a8177b
16154
+ // version: 1.154.0-3a36aab7e
16155
16155
 
16156
16156
  /**
16157
16157
  * Copyright (c) 2022, Salesforce, Inc.,
@@ -16238,7 +16238,7 @@
16238
16238
 
16239
16239
  const { keys: ObjectKeys$3, create: ObjectCreate$3 } = Object;
16240
16240
 
16241
- const { assign: assign$7, create: create$8, freeze: freeze$4, keys: keys$a } = Object;
16241
+ const { assign: assign$8, create: create$8, freeze: freeze$4, keys: keys$a } = Object;
16242
16242
 
16243
16243
  ObjectCreate$3(null);
16244
16244
 
@@ -17159,7 +17159,7 @@
17159
17159
  return rootKeySet;
17160
17160
  }
17161
17161
 
17162
- const { assign: assign$6, create: create$7, freeze: freeze$3, keys: keys$9 } = Object;
17162
+ const { assign: assign$7, create: create$7, freeze: freeze$3, keys: keys$9 } = Object;
17163
17163
  const { hasOwnProperty: hasOwnProperty$1 } = Object.prototype;
17164
17164
  const { split, endsWith } = String.prototype;
17165
17165
  const { isArray: isArray$7 } = Array;
@@ -25017,7 +25017,7 @@
25017
25017
  const node = luvio.getNode(recordDepKey);
25018
25018
  if (isGraphNode(node)) {
25019
25019
  const recordDeps = node.retrieve();
25020
- assign$6(dependencies, recordDeps);
25020
+ assign$7(dependencies, recordDeps);
25021
25021
  }
25022
25022
  luvio.storePublish(recordDepKey, dependencies);
25023
25023
  }
@@ -25406,7 +25406,7 @@
25406
25406
  }
25407
25407
  const { layoutType, mode, snapshot } = container;
25408
25408
  if (wrapper.layoutMap[layoutType] === undefined) {
25409
- wrapper.layoutMap = assign$6({}, wrapper.layoutMap, {
25409
+ wrapper.layoutMap = assign$7({}, wrapper.layoutMap, {
25410
25410
  [layoutType]: {},
25411
25411
  });
25412
25412
  }
@@ -34192,7 +34192,7 @@
34192
34192
  }
34193
34193
  }
34194
34194
  if (records.length > 0) {
34195
- assign$6(config, { records });
34195
+ assign$7(config, { records });
34196
34196
  }
34197
34197
  }
34198
34198
  return config;
@@ -44022,7 +44022,7 @@
44022
44022
  dropFunction: instrumentation$2.notifyRecordUpdateAvailableDropped,
44023
44023
  });
44024
44024
  });
44025
- // version: 1.153.0-d6fe530aa
44025
+ // version: 1.154.0-492daee11
44026
44026
 
44027
44027
  var caseSensitiveUserId = '005B0000000GR4OIAW';
44028
44028
 
@@ -44609,7 +44609,7 @@
44609
44609
  const DefaultDurableSegment = 'DEFAULT';
44610
44610
  const RedirectDurableSegment = 'REDIRECT_KEYS';
44611
44611
 
44612
- const { keys: keys$6, create: create$5, assign: assign$4, freeze: freeze$1$1 } = Object;
44612
+ const { keys: keys$6, create: create$5, assign: assign$5, freeze: freeze$1$1 } = Object;
44613
44613
 
44614
44614
  //Durable store error instrumentation key
44615
44615
  const DURABLE_STORE_ERROR = 'durable-store-error';
@@ -48977,7 +48977,7 @@
48977
48977
  return new DraftErrorFetchResponse(HttpStatusCode$1.BadRequest, error);
48978
48978
  }
48979
48979
 
48980
- const { keys: keys$4, create: create$4, assign: assign$3, values: values$2 } = Object;
48980
+ const { keys: keys$4, create: create$4, assign: assign$4, values: values$2 } = Object;
48981
48981
  const { stringify: stringify$4, parse: parse$4 } = JSON;
48982
48982
  const { isArray: isArray$3 } = Array;
48983
48983
 
@@ -50542,6 +50542,104 @@
50542
50542
  entry.data.__type === undefined);
50543
50543
  }
50544
50544
 
50545
+ function serializeFieldArguments$1(argumentNodes, variables) {
50546
+ const mutableArgumentNodes = Object.assign([], argumentNodes);
50547
+ return `args__(${mutableArgumentNodes
50548
+ .sort((a, b) => {
50549
+ const aName = a.name.value.toUpperCase();
50550
+ const bName = b.name.value.toUpperCase();
50551
+ return aName < bName ? -1 : aName > bName ? 1 : 0;
50552
+ })
50553
+ .map((node) => serializeArgNode$1(node, variables))
50554
+ .join('::')})`;
50555
+ }
50556
+ function serializeArgNode$1(argumentNode, variables) {
50557
+ const argName = argumentNode.name.value;
50558
+ return `${argName}:${serializeValueNode$2(argumentNode.value, variables)}`;
50559
+ }
50560
+ function serializeValueNode$2(valueNode, variables) {
50561
+ switch (valueNode.kind) {
50562
+ case 'BooleanValue':
50563
+ return valueNode.value + '';
50564
+ case 'IntValue':
50565
+ case 'FloatValue':
50566
+ case 'EnumValue':
50567
+ case 'StringValue':
50568
+ return valueNode.value;
50569
+ case 'ListValue': {
50570
+ const mutableValueNodeList = Object.assign([], valueNode.values);
50571
+ return mutableValueNodeList
50572
+ .sort((a, b) => {
50573
+ const aVal = serializeValueNode$2(a, variables).toUpperCase();
50574
+ const bVal = serializeValueNode$2(b, variables).toUpperCase();
50575
+ return aVal < bVal ? -1 : aVal > bVal ? 1 : 0;
50576
+ })
50577
+ .map((val, i) => `${serializeValueNode$2(val, variables)}[${i}]`)
50578
+ .join(',');
50579
+ }
50580
+ case 'Variable': {
50581
+ const variableValue = variables[valueNode.name.value];
50582
+ return typeof variableValue === 'string'
50583
+ ? variableValue
50584
+ : JSON.stringify(variableValue);
50585
+ }
50586
+ case 'NullValue':
50587
+ return 'null';
50588
+ case 'ObjectValue': {
50589
+ const mutableFieldNodeList = Object.assign([], valueNode.fields);
50590
+ return mutableFieldNodeList
50591
+ .sort((a, b) => {
50592
+ const aName = a.name.value.toUpperCase();
50593
+ const bName = b.name.value.toUpperCase();
50594
+ return aName < bName ? -1 : aName > bName ? 1 : 0;
50595
+ })
50596
+ .map((field) => field.name.value + ':' + serializeValueNode$2(field.value, variables))
50597
+ .join(',');
50598
+ }
50599
+ }
50600
+ }
50601
+
50602
+ function serializeOperationNode$2(operationNode, variables, fragmentMap) {
50603
+ return `${serializeSelectionSet$1(operationNode.selectionSet, variables, fragmentMap)}`;
50604
+ }
50605
+ function serializeSelectionSet$1(selectionSetNode, variables, fragmentMap) {
50606
+ return `${selectionSetNode.selections
50607
+ .map((selection) => serializeSelectionNode$1(selection, variables, fragmentMap))
50608
+ .join()}`;
50609
+ }
50610
+ /**
50611
+ *
50612
+ * @description This function takes a GraphQL SelectionNode from an AST and serializes it in a stable way, so we can
50613
+ * use it for property names and Store keys.
50614
+ * @param selectionNode
50615
+ * @param variables
50616
+ * @param fragmentMap
50617
+ * @returns string
50618
+ */
50619
+ function serializeSelectionNode$1(selectionNode, variables, fragmentMap) {
50620
+ switch (selectionNode.kind) {
50621
+ case 'Field': {
50622
+ const hasArguments = selectionNode.arguments !== undefined && selectionNode.arguments.length > 0;
50623
+ const argumentSuffix = hasArguments
50624
+ ? `__${serializeFieldArguments$1(selectionNode.arguments, variables)}`
50625
+ : '';
50626
+ return `${selectionNode.name.value}${argumentSuffix}`;
50627
+ }
50628
+ case 'FragmentSpread': {
50629
+ const fragment = fragmentMap[selectionNode.name.value];
50630
+ return fragment === undefined
50631
+ ? selectionNode.name.value
50632
+ : serializeSelectionSet$1(fragment.selectionSet, variables, fragmentMap);
50633
+ }
50634
+ case 'InlineFragment':
50635
+ return serializeSelectionSet$1(selectionNode.selectionSet, variables, fragmentMap);
50636
+ }
50637
+ }
50638
+ function buildQueryTypeStringKey$1(args) {
50639
+ const { keyPrefix, schemaName, queryTypeName, operationNode, variables, fragmentMap } = args;
50640
+ return `${keyPrefix}::${schemaName}::${queryTypeName}[${serializeOperationNode$2(operationNode, variables, fragmentMap)}]`;
50641
+ }
50642
+
50545
50643
  /**
50546
50644
  * Copyright (c) 2022, Salesforce, Inc.,
50547
50645
  * All rights reserved.
@@ -50675,7 +50773,7 @@
50675
50773
  (x.length === 0 || (x.length > 0 && Object.prototype.hasOwnProperty.call(x, x.length - 1))));
50676
50774
  }
50677
50775
 
50678
- const { create: create$3, keys: keys$3, values: values$1, entries: entries$2 } = Object;
50776
+ const { create: create$3, keys: keys$3, values: values$1, entries: entries$2, assign: assign$3 } = Object;
50679
50777
  const { stringify: stringify$3, parse: parse$3 } = JSON;
50680
50778
  const { isArray: isArray$2 } = Array;
50681
50779
 
@@ -51119,6 +51217,10 @@
51119
51217
  }
51120
51218
  }
51121
51219
 
51220
+ const JSON_EXTRACT_PATH_INGESTION_TIMESTAMP = '$.ingestionTimestamp';
51221
+ const JSON_EXTRACT_PATH_INGESTION_APINAME = '$.apiName';
51222
+ const JSON_EXTRACT_PATH_DRAFTS = '$.drafts';
51223
+
51122
51224
  const MultiPickListValueSeparator = ';';
51123
51225
  function filterToPredicates(where, recordType, alias, objectInfoMap, joins, draftFunctions) {
51124
51226
  if (!where)
@@ -51180,7 +51282,7 @@
51180
51282
  return [
51181
51283
  {
51182
51284
  alias: childAlias,
51183
- leftPath: '$.apiName',
51285
+ leftPath: JSON_EXTRACT_PATH_INGESTION_APINAME,
51184
51286
  operator: '=',
51185
51287
  value: entityName,
51186
51288
  dataType: 'String',
@@ -51641,11 +51743,18 @@
51641
51743
  const joins = buildJoins(config);
51642
51744
  const predicates = buildPredicates(config);
51643
51745
  const orderBy = buildOrderBy(config);
51746
+ const staleRecordsSql = excludeStaleRecordsGate.isOpen({ fallback: false })
51747
+ ? `AND (
51748
+ json_extract("${config.alias}".metadata, '${JSON_EXTRACT_PATH_INGESTION_TIMESTAMP}') >= ?
51749
+ OR json_extract("${config.alias}".data, '${JSON_EXTRACT_PATH_DRAFTS}') IS NOT NULL
51750
+ )`
51751
+ : '';
51644
51752
  const sql = `
51645
51753
  SELECT "${config.alias}".data
51646
51754
  FROM lds_data "${config.alias}" ${joins.sql}
51647
51755
  WHERE "${config.alias}".key like 'UiApi::RecordRepresentation:%'
51648
- AND json_extract("${config.alias}".data, '$.apiName') = ?
51756
+ AND json_extract("${config.alias}".data, '${JSON_EXTRACT_PATH_INGESTION_APINAME}') = ?
51757
+ ${staleRecordsSql}
51649
51758
  ${predicates.sql}
51650
51759
  ${orderBy.sql}
51651
51760
  LIMIT ?
@@ -51658,6 +51767,7 @@
51658
51767
  ...joins.bindings,
51659
51768
  // the api name for the main record type
51660
51769
  config.alias,
51770
+ ...(excludeStaleRecordsGate.isOpen({ fallback: false }) ? [config.ingestionTimestamp] : []),
51661
51771
  // where clause and parent scope bindings
51662
51772
  ...predicates.bindings,
51663
51773
  // limit binding
@@ -51683,19 +51793,33 @@
51683
51793
  if (allJoins.length === 0)
51684
51794
  return { sql, bindings };
51685
51795
  sql = allJoins.reduce((joinAccumulator, join) => {
51796
+ let timestampAdded = false;
51686
51797
  const joinConditions = join.conditions.reduce((conditionAccumulator, condition) => {
51687
51798
  let joined_sql;
51799
+ const joinMetadataTimestamp = excludeStaleRecordsGate.isOpen({ fallback: false })
51800
+ ? ` AND (json_extract("${join.alias}".metadata, '${JSON_EXTRACT_PATH_INGESTION_TIMESTAMP}') >= ? OR json_extract("${join.alias}".data, '${JSON_EXTRACT_PATH_DRAFTS}') IS NOT NULL)`
51801
+ : '';
51688
51802
  // predicate on a value, use the newly joined table
51689
51803
  if ('type' in condition) {
51690
51804
  const { sql, binding } = predicateToSQL(condition, join.alias);
51691
- joined_sql = ` AND ${sql}`;
51805
+ joined_sql = ` AND ${sql}${timestampAdded ? '' : joinMetadataTimestamp}`;
51692
51806
  bindings.push(...binding);
51807
+ if (excludeStaleRecordsGate.isOpen({ fallback: false }) &&
51808
+ timestampAdded === false) {
51809
+ bindings.push(config.ingestionTimestamp);
51810
+ timestampAdded = true;
51811
+ }
51693
51812
  }
51694
51813
  else {
51695
51814
  // predicate on a path
51696
51815
  const left = ` AND json_extract("${join.to}".data, '${condition.leftPath}')`;
51697
51816
  const right = `json_extract("${join.alias}".data, '${condition.rightPath}')`;
51698
- joined_sql = `${left} = ${right}`;
51817
+ joined_sql = `${left} = ${right}${timestampAdded ? '' : joinMetadataTimestamp}`;
51818
+ if (excludeStaleRecordsGate.isOpen({ fallback: false }) &&
51819
+ timestampAdded === false) {
51820
+ bindings.push(config.ingestionTimestamp);
51821
+ timestampAdded = true;
51822
+ }
51699
51823
  }
51700
51824
  conditionAccumulator += joined_sql;
51701
51825
  return conditionAccumulator;
@@ -52374,7 +52498,7 @@
52374
52498
  function pathForKey(key) {
52375
52499
  switch (key) {
52376
52500
  case 'ApiName':
52377
- return '$.apiName';
52501
+ return JSON_EXTRACT_PATH_INGESTION_APINAME;
52378
52502
  case 'WeakEtag':
52379
52503
  return '$.weakEtag';
52380
52504
  case 'Id':
@@ -52396,7 +52520,7 @@
52396
52520
  {
52397
52521
  type: PredicateType.single,
52398
52522
  alias: 'ServiceAppointment_AssignedResource',
52399
- leftPath: '$.apiName',
52523
+ leftPath: JSON_EXTRACT_PATH_INGESTION_APINAME,
52400
52524
  operator: '=',
52401
52525
  value: 'AssignedResource',
52402
52526
  dataType: 'String',
@@ -52417,7 +52541,7 @@
52417
52541
  {
52418
52542
  type: PredicateType.single,
52419
52543
  alias: 'ServiceAppointment_AssignedResource_ServiceResource',
52420
- leftPath: '$.apiName',
52544
+ leftPath: JSON_EXTRACT_PATH_INGESTION_APINAME,
52421
52545
  operator: '=',
52422
52546
  value: 'ServiceResource',
52423
52547
  dataType: 'String',
@@ -52522,14 +52646,21 @@
52522
52646
  // Fields of the `RecordQuery` type are the record queries for the entity types
52523
52647
  // supported for the org
52524
52648
  for (const recordQuery of fields) {
52525
- recordQuery.resolve = function recordConnectionResolver(record, args) {
52649
+ recordQuery.resolve = async function recordConnectionResolver(record, args, { query }, info) {
52650
+ const { name: currentFieldName } = recordQuery;
52651
+ let ingestionTimestamp = 0;
52652
+ if (excludeStaleRecordsGate.isOpen({ fallback: false })) {
52653
+ // at our record query we fetch each ingestion time stamp and pass it down to each lower resolver to query against
52654
+ ingestionTimestamp = await fetchIngestionTimeStampFromDatabase(currentFieldName, info, args, query);
52655
+ }
52526
52656
  // In the SF schema, the relevant arguments are passed into RecordQuery fields, but actually used
52527
52657
  // down in the edge resolvers. For this resolver, we can just return what was passed in
52528
52658
  // to make it available to the next execution step
52529
52659
  return {
52530
52660
  parentArgs: args,
52531
52661
  parentRecord: record,
52532
- currentFieldName: recordQuery.name,
52662
+ currentFieldName,
52663
+ ingestionTimestamp,
52533
52664
  };
52534
52665
  };
52535
52666
  }
@@ -52575,10 +52706,11 @@
52575
52706
  // }
52576
52707
  for (const field of fields) {
52577
52708
  if (field.name === 'node') {
52578
- field.resolve = function nodeResolver(record, _args, { seenRecordIds }) {
52709
+ field.resolve = function nodeResolver(obj, _args, { seenRecordIds }) {
52710
+ const { record, ingestionTimestamp } = obj;
52579
52711
  const recordRepresentation = parse$3(record);
52580
52712
  seenRecordIds.add(recordRepresentation.id);
52581
- return recordRepresentation;
52713
+ return { recordRepresentation, ingestionTimestamp };
52582
52714
  };
52583
52715
  }
52584
52716
  }
@@ -52601,40 +52733,40 @@
52601
52733
  for (const field of fields) {
52602
52734
  switch (field.name) {
52603
52735
  case 'Id':
52604
- field.resolve = (record) => record.id;
52736
+ field.resolve = ({ recordRepresentation: record }) => record.id;
52605
52737
  break;
52606
52738
  case 'ApiName':
52607
- field.resolve = (record) => record.apiName;
52739
+ field.resolve = ({ recordRepresentation: record }) => record.apiName;
52608
52740
  break;
52609
52741
  case 'WeakEtag':
52610
- field.resolve = (record) => record.weakEtag;
52742
+ field.resolve = ({ recordRepresentation: record }) => record.weakEtag;
52611
52743
  break;
52612
52744
  case '_drafts':
52613
- field.resolve = (record) => {
52745
+ field.resolve = ({ recordRepresentation: record, }) => {
52614
52746
  return record.drafts ? record.drafts : null;
52615
52747
  };
52616
52748
  break;
52617
52749
  case 'LastModifiedById':
52618
- field.resolve = (record) => {
52750
+ field.resolve = ({ recordRepresentation: record }) => {
52619
52751
  return record.lastModifiedById
52620
52752
  ? { value: record.lastModifiedById }
52621
52753
  : null;
52622
52754
  };
52623
52755
  break;
52624
52756
  case 'LastModifiedDate':
52625
- field.resolve = (record) => {
52757
+ field.resolve = ({ recordRepresentation: record }) => {
52626
52758
  return record.lastModifiedDate
52627
52759
  ? { value: record.lastModifiedDate }
52628
52760
  : null;
52629
52761
  };
52630
52762
  break;
52631
52763
  case 'SystemModstamp':
52632
- field.resolve = (record) => {
52764
+ field.resolve = ({ recordRepresentation: record }) => {
52633
52765
  return record.systemModstamp ? { value: record.systemModstamp } : null;
52634
52766
  };
52635
52767
  break;
52636
52768
  case 'RecordTypeId':
52637
- field.resolve = (record) => {
52769
+ field.resolve = ({ recordRepresentation: record }) => {
52638
52770
  return record.recordTypeId ? { value: record.recordTypeId } : null;
52639
52771
  };
52640
52772
  break;
@@ -52646,7 +52778,17 @@
52646
52778
  .getInterfaces()
52647
52779
  .find((iface) => iface.name === 'Record')) ||
52648
52780
  (recordFieldType && recordFieldType.name === 'Record')) {
52649
- field.resolve = function relationResolver(record, _args, { Record, seenRecordIds }) {
52781
+ field.resolve = async function relationResolver(obj, _args, { Record, seenRecordIds }) {
52782
+ const fetchRecordOrNull = async (key) => {
52783
+ const recordRepresentation = await Record.load(key);
52784
+ return recordRepresentation !== null
52785
+ ? {
52786
+ recordRepresentation,
52787
+ ingestionTimestamp,
52788
+ }
52789
+ : null;
52790
+ };
52791
+ const { recordRepresentation: record, ingestionTimestamp } = obj;
52650
52792
  const fieldName = field.name.endsWith('__r')
52651
52793
  ? field.name.replace('__r', '__c')
52652
52794
  : field.name;
@@ -52656,26 +52798,28 @@
52656
52798
  if (!id)
52657
52799
  return null;
52658
52800
  if (id['__ref'] !== undefined) {
52659
- return Record.load(record.fields[`${field.name}Id`].value);
52801
+ return fetchRecordOrNull(record.fields[`${field.name}Id`].value);
52660
52802
  }
52661
52803
  seenRecordIds.add(id);
52662
- return Record.load(id);
52804
+ return fetchRecordOrNull(id);
52663
52805
  };
52664
52806
  }
52665
52807
  else if (isObjectType(recordFieldType) &&
52666
52808
  field.type.name.endsWith('Connection')) {
52667
52809
  // spanning field to a connection
52668
- field.resolve = (record, args, { seenRecordIds }) => {
52669
- seenRecordIds.add(record.id);
52810
+ field.resolve = async ({ recordRepresentation, ingestionTimestamp }, args, { seenRecordIds }) => {
52811
+ seenRecordIds.add(recordRepresentation.id);
52812
+ const { name: currentFieldName } = field;
52670
52813
  return {
52671
52814
  parentArgs: args,
52672
- parentRecord: record,
52673
- currentFieldName: field.name,
52815
+ parentRecord: recordRepresentation,
52816
+ currentFieldName,
52817
+ ingestionTimestamp,
52674
52818
  };
52675
52819
  };
52676
52820
  }
52677
52821
  else {
52678
- field.resolve = function recordFieldResolver(record) {
52822
+ field.resolve = function recordFieldResolver({ recordRepresentation: record, }) {
52679
52823
  return record.fields[field.name] || null;
52680
52824
  };
52681
52825
  }
@@ -52687,7 +52831,7 @@
52687
52831
  if (recordInterface !== undefined && baseRecord !== undefined) {
52688
52832
  // Applys 'resolveType' of GraphQLInterfaceType to 'Record' interface. Since all the heterogenous types are named as 'apiName', the type with same name as the loaded record 'apiName' property is the type wanted.
52689
52833
  // GraphQL executor would match InLineFragment' condition with type and keeps the deeper level field resolving going.
52690
- recordInterface.resolveType = function (value) {
52834
+ recordInterface.resolveType = function ({ recordRepresentation: value, }) {
52691
52835
  const targetType = polyTypes.find((type) => type.name === value.apiName);
52692
52836
  return targetType === undefined ? baseRecord : targetType;
52693
52837
  };
@@ -52695,7 +52839,7 @@
52695
52839
  return schema;
52696
52840
  }
52697
52841
  async function connectionEdgeResolver(obj, _args, context) {
52698
- const { parentArgs = {}, parentRecord, currentFieldName } = obj;
52842
+ const { parentArgs = {}, parentRecord, currentFieldName, ingestionTimestamp } = obj;
52699
52843
  const { query, objectInfos, draftFunctions } = context;
52700
52844
  let joins = [];
52701
52845
  let alias = currentFieldName;
@@ -52726,10 +52870,19 @@
52726
52870
  predicates,
52727
52871
  orderBy: orderByToPredicate(parentArgs.orderBy, alias, alias, context.objectInfos),
52728
52872
  limit: parentArgs.first,
52873
+ ingestionTimestamp,
52729
52874
  };
52730
52875
  const { sql, bindings } = buildQuery(queryConfig);
52731
52876
  const results = await query(sql, bindings);
52732
- return results.rows.map((row) => row[0]);
52877
+ //map each sql result with the ingestion timestamp to pass it down a level
52878
+ return results.rows
52879
+ .map((row) => row[0])
52880
+ .map((record) => {
52881
+ return {
52882
+ record,
52883
+ ingestionTimestamp,
52884
+ };
52885
+ });
52733
52886
  }
52734
52887
  /**
52735
52888
  * Converts a childRelationship into a predicate
@@ -52755,6 +52908,62 @@
52755
52908
  const interfaces = type.getInterfaces();
52756
52909
  return Boolean(interfaces.find((iface) => iface.name === 'Record'));
52757
52910
  }
52911
+ /**
52912
+ * Builds the top level record query key based on AST data
52913
+ * @param operation
52914
+ * @param variables
52915
+ * @param argumentNodes
52916
+ * @param currentFieldName
52917
+ * @returns
52918
+ */
52919
+ function buildKeyStringForRecordQuery(operation, variables, argumentNodes, currentFieldName) {
52920
+ const queryKey = buildQueryTypeStringKey$1({
52921
+ luvio: {},
52922
+ keyPrefix: 'UiApi',
52923
+ schemaName: 'uiapi',
52924
+ queryTypeName: 'Query',
52925
+ operationNode: operation,
52926
+ variables,
52927
+ fragmentMap: {},
52928
+ });
52929
+ const filteredArgumentNodes = assign$3([], argumentNodes).filter((node) => node.name.value !== 'first' && node.name.value !== 'after');
52930
+ const argumentString = filteredArgumentNodes.length > 0
52931
+ ? '__' + serializeFieldArguments$1(filteredArgumentNodes, variables)
52932
+ : '';
52933
+ return `${queryKey}__uiapi__query__${currentFieldName}${argumentString}`;
52934
+ }
52935
+ /**
52936
+ * fetches a query level ingestion time stamp from the L2 cache
52937
+ * if no query has been seen then the timestamp is 0
52938
+ * @param apiName
52939
+ * @param info
52940
+ * @param args
52941
+ * @param query
52942
+ * @returns
52943
+ */
52944
+ async function fetchIngestionTimeStampFromDatabase(apiName, info, args, query) {
52945
+ const { operation, variableValues } = info;
52946
+ // if we cannot find the query key in the database then default to 0 as we assume we have not seen the query
52947
+ // and all the data is not stale
52948
+ let ingestionTimestamp = 0;
52949
+ if (info.fieldNodes.length > 0 && info.fieldNodes[0].arguments !== undefined) {
52950
+ const key = buildKeyStringForRecordQuery(operation,
52951
+ // join varables passed from query to the argument variables given from the AST
52952
+ { ...variableValues, ...args }, info.fieldNodes[0].arguments, apiName);
52953
+ const sql = `
52954
+ SELECT json_extract(metadata, '${JSON_EXTRACT_PATH_INGESTION_TIMESTAMP}')
52955
+ FROM lds_data
52956
+ WHERE key IS ?
52957
+ `;
52958
+ const results = await query(sql, [key]);
52959
+ const [timestamp] = results.rows.map((row) => row[0]);
52960
+ if (timestamp !== null && typeof timestamp === 'number') {
52961
+ //go back 10 ms to adjust for margin of error when top level query is stored and when raml objects are stored
52962
+ ingestionTimestamp = timestamp - 10;
52963
+ }
52964
+ }
52965
+ return ingestionTimestamp;
52966
+ }
52758
52967
 
52759
52968
  var uiapiSchemaString = "scalar String\nscalar DateTime\nscalar Currency\nscalar ID\nscalar Boolean\nscalar Longitude\nscalar Float\nscalar MultiPicklist\nscalar Base64\nscalar Url\nscalar PhoneNumber\nscalar Email\nscalar TextArea\nscalar Latitude\nscalar Picklist\nscalar RichTextArea\nscalar EncryptedString\nscalar Double\nscalar Long\nscalar JSON\nscalar Time\nscalar Int\nscalar Percent\nscalar LongTextArea\nscalar Date\ntype PercentAggregate implements FieldValue {\n value: Percent\n displayValue: String\n avg: DoubleValue\n count: LongValue\n countDistinct: LongValue\n format: String\n max: PercentValue\n min: PercentValue\n sum: PercentValue\n}\n\ntype StringAggregate implements FieldValue {\n value: String\n displayValue: String\n count: LongValue\n countDistinct: LongValue\n grouping: IntValue\n label: String\n max: StringValue\n min: StringValue\n}\n\ntype Query {\n uiapi: UIAPI!\n rateLimit: RateLimit\n}\n\ninput EmailOperators {\n eq: Email\n ne: Email\n like: Email\n lt: Email\n gt: Email\n lte: Email\n gte: Email\n in: [Email]\n nin: [Email]\n}\n\ninput PolymorphicParentRelationshipRecordOrderBy @generic {\n RecordOrderBy: RecordOrderBy @fieldCategory\n}\n\ninput DoubleOperators {\n eq: Double\n ne: Double\n lt: Double\n gt: Double\n lte: Double\n gte: Double\n in: [Double]\n nin: [Double]\n}\n\ntype DateOnlyAggregation {\n value: Date\n format: String\n}\n\ntype DateAggregate implements FieldValue {\n value: Date\n displayValue: String\n calendarMonth: DateFunctionAggregation\n calendarQuarter: DateFunctionAggregation\n calendarYear: DateFunctionAggregation\n count: LongValue\n countDistinct: LongValue\n dayInMonth: DateFunctionAggregation\n dayInWeek: DateFunctionAggregation\n dayInYear: DateFunctionAggregation\n fiscalMonth: DateFunctionAggregation\n fiscalQuarter: DateFunctionAggregation\n fiscalYear: DateFunctionAggregation\n format: String\n grouping: IntValue\n max: DateValue\n min: DateValue\n weekInMonth: DateFunctionAggregation\n weekInYear: DateFunctionAggregation\n}\n\ninput PolymorphicParentRelationshipGroupBy @generic {\n RecordGroupBy: RecordGroupBy @fieldCategory\n}\n\nenum GroupByFunction {\n DAY_IN_WEEK\n DAY_IN_MONTH\n DAY_IN_YEAR\n WEEK_IN_MONTH\n WEEK_IN_YEAR\n CALENDAR_MONTH\n CALENDAR_QUARTER\n CALENDAR_YEAR\n FISCAL_MONTH\n FISCAL_QUARTER\n FISCAL_YEAR\n DAY_ONLY\n HOUR_IN_DAY\n}\n\ntype RecordTypeInfo {\n available: Boolean!\n defaultRecordTypeMapping: Boolean!\n master: Boolean!\n name: String\n recordTypeId: ID\n}\n\ntype BooleanValue implements FieldValue {\n value: Boolean\n displayValue: String\n}\n\ntype ReferenceToInfo {\n ApiName: String!\n nameFields: [String]!\n objectInfo: ObjectInfo\n}\n\ninterface FieldValue {\n displayValue: String\n}\n\ntype LongitudeValue implements FieldValue {\n value: Longitude\n displayValue: String\n}\n\ntype StringValue implements FieldValue {\n value: String\n displayValue: String\n label: String\n}\n\ntype IntValue implements FieldValue {\n value: Int\n displayValue: String\n format: String\n}\n\ntype UrlValue implements FieldValue {\n value: Url\n displayValue: String\n}\n\ninput IdOperators {\n eq: ID\n ne: ID\n lt: ID\n gt: ID\n lte: ID\n gte: ID\n in: [ID]\n nin: [ID]\n inq: JoinInput\n ninq: JoinInput\n}\n\ntype LongAggregate implements FieldValue {\n value: Long\n displayValue: String\n avg: DoubleValue\n count: LongValue\n countDistinct: LongValue\n format: String\n grouping: IntValue\n max: LongValue\n min: LongValue\n sum: LongValue\n}\n\ntype PhoneNumberAggregate implements FieldValue {\n value: PhoneNumber\n displayValue: String\n count: LongValue\n countDistinct: LongValue\n grouping: IntValue\n max: PhoneNumberValue\n min: PhoneNumberValue\n}\n\ninput TimeOperators {\n eq: Time\n ne: Time\n lt: Time\n gt: Time\n lte: Time\n gte: Time\n in: [Time]\n nin: [Time]\n}\n\ntype PicklistValue implements FieldValue {\n value: Picklist\n displayValue: String\n label: String\n}\n\ntype CurrencyAggregate implements FieldValue {\n value: Currency\n displayValue: String\n avg: DoubleValue\n count: LongValue\n countDistinct: LongValue\n format: String\n max: CurrencyValue\n min: CurrencyValue\n sum: CurrencyValue\n}\n\ntype RelatedListInfo {\n childApiName: String!\n relatedListName: String!\n label: String!\n displayColumns: [ListColumn!]!\n orderedByInfo: [ListOrder!]!\n parentApiName: String!\n fieldApiName: String!\n}\n\ninput StringOperators {\n eq: String\n ne: String\n like: String\n lt: String\n gt: String\n lte: String\n gte: String\n in: [String]\n nin: [String]\n}\n\ntype UIAPI {\n query: RecordQuery!\n aggregate: RecordQueryAggregate!\n objectInfos(apiNames: [String]): [ObjectInfo]\n relatedListByName(parentApiName: String!, relatedListName: String!): RelatedListInfo\n}\n\ninput MultiPicklistOperators {\n eq: MultiPicklist\n ne: MultiPicklist\n includes: [MultiPicklist]\n excludes: [MultiPicklist]\n}\n\ntype DateTimeAggregate implements FieldValue {\n value: DateTime\n displayValue: String\n calendarMonth: DateFunctionAggregation\n calendarQuarter: DateFunctionAggregation\n calendarYear: DateFunctionAggregation\n count: LongValue\n countDistinct: LongValue\n dayInMonth: DateFunctionAggregation\n dayInWeek: DateFunctionAggregation\n dayInYear: DateFunctionAggregation\n dayOnly: DateOnlyAggregation\n fiscalMonth: DateFunctionAggregation\n fiscalQuarter: DateFunctionAggregation\n fiscalYear: DateFunctionAggregation\n format: String\n hourInDay: DateFunctionAggregation\n max: DateTimeValue\n min: DateTimeValue\n weekInMonth: DateFunctionAggregation\n weekInYear: DateFunctionAggregation\n}\n\ninput BooleanOperators {\n eq: Boolean\n ne: Boolean\n}\n\ntype EmailAggregate implements FieldValue {\n value: Email\n displayValue: String\n count: LongValue\n countDistinct: LongValue\n grouping: IntValue\n max: EmailValue\n min: EmailValue\n}\n\ninput GroupByDateFunction {\n function: GroupByFunction\n}\n\ntype RichTextAreaValue implements FieldValue {\n value: RichTextArea\n displayValue: String\n}\n\ntype MultiPicklistValue implements FieldValue {\n value: MultiPicklist\n displayValue: String\n label: String\n}\n\ntype TimeAggregate implements FieldValue {\n value: Time\n displayValue: String\n format: String\n hourInDay: DateFunctionAggregation\n}\n\ntype __Type {\n kind: __TypeKind!\n name: String\n description: String\n fields(includeDeprecated: Boolean = false): [__Field!]\n interfaces: [__Type!]\n possibleTypes: [__Type!]\n enumValues(includeDeprecated: Boolean = false): [__EnumValue!]\n inputFields: [__InputValue!]\n ofType: __Type\n}\n\ntype ListColumn {\n fieldApiName: String!\n label: String!\n lookupId: String\n sortable: Boolean\n}\n\ntype LatitudeAggregate implements FieldValue {\n value: Latitude\n displayValue: String\n avg: DoubleValue\n count: LongValue\n countDistinct: LongValue\n max: LatitudeValue\n min: LatitudeValue\n sum: DoubleValue\n}\n\ninput CurrencyOperators {\n eq: Currency\n ne: Currency\n lt: Currency\n gt: Currency\n lte: Currency\n gte: Currency\n in: [Currency]\n nin: [Currency]\n}\n\ninput DistanceInput {\n latitude: Latitude!\n longitude: Longitude!\n}\n\nunion PolymorphicParentRelationship @generic = RecordRepresentation\n\ntype LongTextAreaValue implements FieldValue {\n value: LongTextArea\n displayValue: String\n}\n\ntype LatitudeValue implements FieldValue {\n value: Latitude\n displayValue: String\n}\n\ninput OrderByClause {\n order: ResultOrder\n nulls: NullOrder\n}\n\ninput GroupByClause {\n group: Boolean\n}\n\ntype RecordAggregateConnection @generic {\n edges: [RecordAggregateEdge]\n pageInfo: PageInfo!\n totalCount: Int!\n}\n\ntype LongitudeAggregate implements FieldValue {\n value: Longitude\n displayValue: String\n avg: DoubleValue\n count: LongValue\n countDistinct: LongValue\n max: LongitudeValue\n min: LongitudeValue\n sum: DoubleValue\n}\n\ntype RecordEdge @generic {\n node: RecordRepresentation\n cursor: String!\n}\n\ntype DateValue implements FieldValue {\n value: Date\n displayValue: String\n format: String\n}\n\ninput URLOperators {\n eq: Url\n ne: Url\n like: Url\n lt: Url\n gt: Url\n lte: Url\n gte: Url\n in: [Url]\n nin: [Url]\n}\n\ninput LongOperators {\n eq: Long\n ne: Long\n lt: Long\n gt: Long\n lte: Long\n gte: Long\n in: [Long]\n nin: [Long]\n}\n\nenum DataType {\n STRING\n TEXTAREA\n PHONE\n EMAIL\n URL\n ENCRYPTEDSTRING\n BOOLEAN\n CURRENCY\n INT\n LONG\n DOUBLE\n PERCENT\n DATETIME\n TIME\n DATE\n REFERENCE\n PICKLIST\n MULTIPICKLIST\n ADDRESS\n LOCATION\n BASE64\n COMPLEXVALUE\n COMBOBOX\n JSON\n JUNCTIONIDLIST\n ANYTYPE\n}\n\nenum NullOrder {\n LAST\n FIRST\n}\n\ntype PhoneNumberValue implements FieldValue {\n value: PhoneNumber\n displayValue: String\n}\n\n# Cannot have empty enum\n# enum RecordScope @generic {\n# }\n\ntype DoubleAggregate implements FieldValue {\n value: Double\n displayValue: String\n avg: DoubleValue\n count: LongValue\n countDistinct: LongValue\n format: String\n max: DoubleValue\n min: DoubleValue\n sum: DoubleValue\n}\n\ntype __Field {\n name: String!\n description: String\n args: [__InputValue!]!\n type: __Type!\n isDeprecated: Boolean!\n deprecationReason: String\n}\n\ninput DateOperators {\n eq: DateInput\n ne: DateInput\n lt: DateInput\n gt: DateInput\n lte: DateInput\n gte: DateInput\n in: [DateInput]\n nin: [DateInput]\n DAY_IN_WEEK: DateFunctionInput\n DAY_IN_MONTH: DateFunctionInput\n DAY_IN_YEAR: DateFunctionInput\n WEEK_IN_MONTH: DateFunctionInput\n WEEK_IN_YEAR: DateFunctionInput\n CALENDAR_MONTH: DateFunctionInput\n CALENDAR_QUARTER: DateFunctionInput\n CALENDAR_YEAR: DateFunctionInput\n FISCAL_MONTH: DateFunctionInput\n FISCAL_QUARTER: DateFunctionInput\n FISCAL_YEAR: DateFunctionInput\n}\n\ninput GeolocationInput {\n latitude: Latitude!\n longitude: Longitude!\n radius: Float!\n unit: Unit!\n}\n\ninput JoinInput {\n Record: RecordFilter @fieldCategory\n ApiName: String\n}\n\ninput TextAreaOperators {\n eq: TextArea\n ne: TextArea\n like: TextArea\n lt: TextArea\n gt: TextArea\n lte: TextArea\n gte: TextArea\n in: [TextArea]\n nin: [TextArea]\n}\n\ntype TextAreaValue implements FieldValue {\n value: TextArea\n displayValue: String\n}\n\ninput PercentOperators {\n eq: Percent\n ne: Percent\n lt: Percent\n gt: Percent\n lte: Percent\n gte: Percent\n in: [Percent]\n nin: [Percent]\n}\n\ntype DoubleValue implements FieldValue {\n value: Double\n displayValue: String\n format: String\n}\n\ntype IDAggregate implements FieldValue {\n value: ID\n displayValue: String\n count: LongValue\n countDistinct: LongValue\n grouping: IntValue\n max: IDValue\n min: IDValue\n}\n\ntype __InputValue {\n name: String!\n description: String\n type: __Type!\n defaultValue: String\n}\n\ntype RecordAggregateEdge @generic {\n node: RecordResult\n cursor: String!\n}\n\ntype __Directive {\n name: String\n description: String\n locations: [__DirectiveLocation!]\n args: [__InputValue!]!\n}\n\ntype ThemeInfo {\n color: String\n iconUrl: String\n}\n\ntype UrlAggregate implements FieldValue {\n value: Url\n displayValue: String\n count: LongValue\n countDistinct: LongValue\n grouping: IntValue\n max: UrlValue\n min: UrlValue\n}\n\nenum DateLiteral {\n THIS_WEEK\n THIS_FISCAL_QUARTER\n NEXT_YEAR\n TODAY\n LAST_WEEK\n LAST_YEAR\n YESTERDAY\n NEXT_MONTH\n NEXT_FISCAL_YEAR\n NEXT_WEEK\n NEXT_90_DAYS\n LAST_FISCAL_QUARTER\n LAST_FISCAL_YEAR\n THIS_YEAR\n THIS_MONTH\n THIS_QUARTER\n LAST_90_DAYS\n NEXT_FISCAL_QUARTER\n THIS_FISCAL_YEAR\n TOMORROW\n NEXT_QUARTER\n LAST_MONTH\n LAST_QUARTER\n}\n\ntype __EnumValue {\n name: String!\n description: String\n isDeprecated: Boolean!\n deprecationReason: String\n}\n\ntype RecordRepresentation implements Record @generic{\n Id: ID!\n ApiName: String!\n WeakEtag: Long!\n DisplayValue: String\n LastModifiedById: IDValue\n LastModifiedDate: DateTimeValue\n SystemModstamp: DateTimeValue\n RecordTypeId(fallback: Boolean): IDValue\n IntValue: IntValue @fieldCategory\n StringValue: StringValue @fieldCategory\n BooleanValue: BooleanValue @fieldCategory\n IDValue: IDValue @fieldCategory\n DateTimeValue: DateTimeValue @fieldCategory\n TimeValue: TimeValue @fieldCategory\n DateValue: DateValue @fieldCategory\n TextAreaValue: TextAreaValue @fieldCategory\n LongTextAreaValue: LongTextAreaValue @fieldCategory\n RichTextAreaValue: RichTextAreaValue @fieldCategory\n PhoneNumberValue: PhoneNumberValue @fieldCategory\n EmailValue: EmailValue @fieldCategory\n UrlValue: UrlValue @fieldCategory\n EncryptedStringValue: EncryptedStringValue @fieldCategory\n CurrencyValue: CurrencyValue @fieldCategory\n LongitudeValue: LongitudeValue @fieldCategory\n LatitudeValue: LatitudeValue @fieldCategory\n PicklistValue: PicklistValue @fieldCategory\n MultiPicklistValue: MultiPicklistValue @fieldCategory\n LongValue: LongValue @fieldCategory\n DoubleValue: DoubleValue @fieldCategory\n PercentValue: PercentValue @fieldCategory\n Base64Value: Base64Value @fieldCategory\n JSONValue: JSONValue @fieldCategory\n parentRelationship: RecordRepresentation @fieldCategory\n polymorphicParentRelationship: PolymorphicParentRelationship @fieldCategory\n childRelationship(first: Int, after: String, where: RecordFilter, orderBy: RecordOrderBy): RecordConnection @fieldCategory\n}\n\ntype IDValue implements FieldValue {\n value: ID\n displayValue: String\n}\n\nenum Unit {\n MI\n KM\n}\n\ninput OrderByGeolocationClause {\n distance: DistanceInput\n order: ResultOrder\n nulls: NullOrder\n}\n\ntype TextAreaAggregate implements FieldValue {\n value: TextArea\n displayValue: String\n count: LongValue\n countDistinct: LongValue\n grouping: IntValue\n max: TextAreaValue\n min: TextAreaValue\n}\n\nenum GroupByType {\n GROUP_BY\n ROLLUP\n CUBE\n}\n\nenum ResultOrder {\n DESC\n ASC\n}\n\ninput RecordOrderBy @generic {\n orderableField: OrderByClause @fieldCategory\n orderableGeolocationField: OrderByGeolocationClause @fieldCategory\n orderableParentRelationship: RecordOrderBy @fieldCategory\n orderablePolymorphicParentRelationship: PolymorphicParentRelationshipRecordOrderBy @fieldCategory\n}\n\ninput PicklistOperators {\n eq: Picklist\n ne: Picklist\n in: [Picklist]\n nin: [Picklist]\n}\n\ninput RecordFilter @generic {\n and: [RecordFilter]\n or: [RecordFilter]\n not: RecordFilter\n parentRelationshipRecordFilter: RecordFilter @fieldCategory\n polymorphicParentRelationshipRecordFilter: PolymorphicParentRelationshipRecordFilter @fieldCategory\n IntegerOperator: IntegerOperators @fieldCategory\n LongOperator: LongOperators @fieldCategory\n StringOperator: StringOperators @fieldCategory\n DoubleOperator: DoubleOperators @fieldCategory\n PercentOperator: PercentOperators @fieldCategory\n LongitudeOperator: LongitudeOperators @fieldCategory\n LatitudeOperator: LatitudeOperators @fieldCategory\n EmailOperator: EmailOperators @fieldCategory\n TextAreaOperator: TextAreaOperators @fieldCategory\n LongTextAreaOperator: LongTextAreaOperators @fieldCategory\n URLOperator: URLOperators @fieldCategory\n PhoneNumberOperator: PhoneNumberOperators @fieldCategory\n BooleanOperator: BooleanOperators @fieldCategory\n IdOperator: IdOperators @fieldCategory\n CurrencyOperator: CurrencyOperators @fieldCategory\n TimeOperator: TimeOperators @fieldCategory\n DateOperator: DateOperators @fieldCategory\n DateTimeOperator: DateTimeOperators @fieldCategory\n PicklistOperator: PicklistOperators @fieldCategory\n MultiPicklistOperator: MultiPicklistOperators @fieldCategory\n GeolocationOperator: GeolocationOperators @fieldCategory\n}\n\ntype TimeValue implements FieldValue {\n value: Time\n displayValue: String\n format: String\n}\n\ninput GeolocationOperators {\n lt: GeolocationInput\n gt: GeolocationInput\n}\n\ntype PicklistAggregate implements FieldValue {\n value: Picklist\n displayValue: String\n count: LongValue\n countDistinct: LongValue\n grouping: IntValue\n label: String\n max: PicklistValue\n min: PicklistValue\n}\n\ninput LatitudeOperators {\n eq: Latitude\n ne: Latitude\n lt: Latitude\n gt: Latitude\n lte: Latitude\n gte: Latitude\n in: [Latitude]\n nin: [Latitude]\n}\n\ntype DateTimeValue implements FieldValue {\n value: DateTime\n displayValue: String\n format: String\n}\n\nenum __DirectiveLocation {\n QUERY\n MUTATION\n FIELD\n FRAGMENT_DEFINITION\n FRAGMENT_SPREAD\n INLINE_FRAGMENT\n SCHEMA\n SCALAR\n OBJECT\n FIELD_DEFINITION\n ARGUMENT_DEFINITION\n INTERFACE\n UNION\n ENUM\n ENUM_VALUE\n INPUT_OBJECT\n INPUT_FIELD_DEFINITION\n}\n\ntype IntAggregate implements FieldValue {\n value: Int\n displayValue: String\n avg: DoubleValue\n count: LongValue\n countDistinct: LongValue\n format: String\n grouping: IntValue\n max: IntValue\n min: IntValue\n sum: LongValue\n}\n\ntype ListOrder {\n fieldApiName: String!\n sortDirection: ResultOrder\n}\n\ntype RecordAggregate @generic {\n ApiName: String!\n BooleanAggregate: BooleanAggregate @fieldCategory\n CurrencyAggregate: CurrencyAggregate @fieldCategory\n DateAggregate: DateAggregate @fieldCategory\n DoubleAggregate: DoubleAggregate @fieldCategory\n EmailAggregate: EmailAggregate @fieldCategory\n IDAggregate: IDAggregate @fieldCategory\n IntAggregate: IntAggregate @fieldCategory\n LatitudeAggregate: LatitudeAggregate @fieldCategory\n LongitudeAggregate: LongitudeAggregate @fieldCategory\n LongAggregate: LongAggregate @fieldCategory\n PercentAggregate: PercentAggregate @fieldCategory\n PhoneNumberAggregate: PhoneNumberAggregate @fieldCategory\n PicklistAggregate: PicklistAggregate @fieldCategory\n StringAggregate: StringAggregate @fieldCategory\n TextAreaAggregate: TextAreaAggregate @fieldCategory\n TimeAggregate: TimeAggregate @fieldCategory\n UrlAggregate: UrlAggregate @fieldCategory\n}\n\ntype JSONValue implements FieldValue {\n value: JSON\n displayValue: String\n}\n\ntype EmailValue implements FieldValue {\n value: Email\n displayValue: String\n}\n\ntype LongValue implements FieldValue {\n value: Long\n displayValue: String\n format: String\n}\n\ninput DateFunctionInput {\n value: LongOperators\n convertTimezoneValue: LongOperators\n}\n\ntype DependentField {\n controllingField: String!\n dependentFields: [String]!\n}\n\ninput LongTextAreaOperators {\n eq: LongTextArea\n ne: LongTextArea\n like: LongTextArea\n lt: LongTextArea\n gt: LongTextArea\n lte: LongTextArea\n gte: LongTextArea\n in: [LongTextArea]\n nin: [LongTextArea]\n}\n\nenum __TypeKind {\n SCALAR\n OBJECT\n INTERFACE\n UNION\n ENUM\n INPUT_OBJECT\n LIST\n NON_NULL\n}\n\ntype PercentValue implements FieldValue {\n value: Percent\n displayValue: String\n format: String\n}\n\ninput DateTimeOperators {\n eq: DateTimeInput\n ne: DateTimeInput\n lt: DateTimeInput\n gt: DateTimeInput\n lte: DateTimeInput\n gte: DateTimeInput\n in: [DateTimeInput]\n nin: [DateTimeInput]\n DAY_IN_WEEK: DateFunctionInput\n DAY_IN_MONTH: DateFunctionInput\n DAY_IN_YEAR: DateFunctionInput\n WEEK_IN_MONTH: DateFunctionInput\n WEEK_IN_YEAR: DateFunctionInput\n CALENDAR_MONTH: DateFunctionInput\n CALENDAR_QUARTER: DateFunctionInput\n CALENDAR_YEAR: DateFunctionInput\n FISCAL_MONTH: DateFunctionInput\n FISCAL_QUARTER: DateFunctionInput\n FISCAL_YEAR: DateFunctionInput\n DAY_ONLY: DateTimeFunctionInput\n HOUR_IN_DAY: DateFunctionInput\n}\n\ntype BooleanAggregate implements FieldValue {\n value: Boolean\n displayValue: String\n grouping: IntValue\n}\n\ntype RecordQueryAggregate {\n recordQueryAggregate(first: Int, after: String, where: RecordFilter, orderBy: RecordOrderBy, scope: String, groupBy: RecordGroupBy): RecordAggregateConnection @fieldCategory\n}\n\ntype RecordConnection @generic {\n edges: [RecordEdge]\n pageInfo: PageInfo!\n totalCount: Int!\n}\n\ntype FilteredLookupInfo {\n controllingFields: [String]!\n dependent: Boolean!\n optionalFilter: Boolean!\n}\n\ninput PhoneNumberOperators {\n eq: PhoneNumber\n ne: PhoneNumber\n like: PhoneNumber\n lt: PhoneNumber\n gt: PhoneNumber\n lte: PhoneNumber\n gte: PhoneNumber\n in: [PhoneNumber]\n nin: [PhoneNumber]\n}\n\ntype ObjectInfo {\n ApiName: String!\n childRelationships: [ChildRelationship]!\n createable: Boolean!\n custom: Boolean!\n defaultRecordTypeId: ID\n deletable: Boolean!\n dependentFields: [DependentField]!\n feedEnabled: Boolean!\n fields: [Field]!\n keyPrefix: String\n label: String\n labelPlural: String\n layoutable: Boolean!\n mruEnabled: Boolean!\n nameFields: [String]!\n queryable: Boolean!\n recordTypeInfos: [RecordTypeInfo]!\n searchable: Boolean!\n themeInfo: ThemeInfo\n updateable: Boolean!\n}\n\ninput LongitudeOperators {\n eq: Longitude\n ne: Longitude\n lt: Longitude\n gt: Longitude\n lte: Longitude\n gte: Longitude\n in: [Longitude]\n nin: [Longitude]\n}\n\ntype Field {\n ApiName: String!\n calculated: Boolean!\n compound: Boolean!\n compoundComponentName: String\n compoundFieldName: String\n controllerName: String\n controllingFields: [String]!\n createable: Boolean!\n custom: Boolean!\n dataType: DataType\n extraTypeInfo: FieldExtraTypeInfo\n filterable: Boolean!\n filteredLookupInfo: FilteredLookupInfo\n highScaleNumber: Boolean!\n htmlFormatted: Boolean!\n inlineHelpText: String\n label: String\n nameField: Boolean!\n polymorphicForeignKey: Boolean!\n precision: Int\n reference: Boolean!\n referenceTargetField: String\n referenceToInfos: [ReferenceToInfo]!\n relationshipName: String\n required: Boolean!\n scale: Int\n searchPrefilterable: Boolean\n sortable: Boolean!\n updateable: Boolean!\n}\n\nenum FieldExtraTypeInfo {\n IMAGE_URL\n EXTERNAL_LOOKUP\n INDIRECT_LOOKUP\n PERSONNAME\n SWITCHABLE_PERSONNAME\n PLAINTEXTAREA\n RICHTEXTAREA\n}\n\ntype RateLimit {\n cost: Long\n limit: Long\n remaining: Long\n resetAt: DateTime\n}\n\ninput DateRange {\n last_n_days: Int\n next_n_days: Int\n last_n_weeks: Int\n next_n_weeks: Int\n last_n_months: Int\n next_n_months: Int\n last_n_quarters: Int\n next_n_quarters: Int\n last_n_fiscal_quarters: Int\n next_n_fiscal_quarters: Int\n last_n_years: Int\n next_n_years: Int\n last_n_fiscal_years: Int\n next_n_fiscal_years: Int\n n_days_ago: Int\n n_weeks_ago: Int\n n_months_ago: Int\n n_quarters_ago: Int\n n_years_ago: Int\n n_fiscal_quarters_ago: Int\n n_fiscal_years_ago: Int\n}\n\ninput DateTimeFunctionInput {\n value: DateTimePrimitiveOperators\n convertTimezoneValue: DateTimePrimitiveOperators\n}\n\ntype Base64Value implements FieldValue {\n value: Base64\n displayValue: String\n}\n\ninput IntegerOperators {\n eq: Int\n ne: Int\n lt: Int\n gt: Int\n lte: Int\n gte: Int\n in: [Int]\n nin: [Int]\n}\n\ntype EncryptedStringValue implements FieldValue {\n value: EncryptedString\n displayValue: String\n}\n\ninterface Record {\n Id: ID!\n ApiName: String!\n WeakEtag: Long!\n DisplayValue: String\n LastModifiedById: IDValue\n LastModifiedDate: DateTimeValue\n SystemModstamp: DateTimeValue\n RecordTypeId(fallback: Boolean): IDValue\n}\n\ninput PolymorphicParentRelationshipRecordFilter @generic {\n RecordFilter: RecordFilter @fieldCategory\n}\n\ntype __Schema {\n types: [__Type!]!\n queryType: __Type!\n mutationType: __Type\n directives: [__Directive!]!\n subscriptionType: __Type\n}\n\ninput DateTimeInput {\n value: DateTime\n literal: DateLiteral\n range: DateRange\n}\n\ninput DateTimePrimitiveOperators {\n eq: DateTime\n ne: DateTime\n lt: DateTime\n gt: DateTime\n lte: DateTime\n gte: DateTime\n in: [DateTime]\n nin: [DateTime]\n}\n\ntype ChildRelationship {\n childObjectApiName: String!\n fieldName: String\n junctionIdListNames: [String]!\n junctionReferenceTo: [String]!\n relationshipName: String\n objectInfo: ObjectInfo\n}\n\ntype RecordResult @generic {\n aggregate: RecordAggregate\n}\n\ntype PageInfo {\n hasNextPage: Boolean!\n hasPreviousPage: Boolean!\n startCursor: String\n endCursor: String\n}\n\ntype CurrencyValue implements FieldValue {\n value: Currency\n displayValue: String\n format: String\n}\n\ninput DateInput {\n value: Date\n literal: DateLiteral\n range: DateRange\n}\n\ninput RecordGroupBy @generic {\n groupableField: GroupByClause @fieldCategory\n groupableDateField: GroupByDateFunction @fieldCategory\n groupableParentRelationship: RecordGroupBy @fieldCategory\n groupablePolymorphicParentRelationship: PolymorphicParentRelationshipGroupBy @fieldCategory\n type: GroupByType = GROUP_BY\n}\n\ntype DateFunctionAggregation {\n value: Long\n format: String\n}\n\ntype RecordQuery {\n # scope should be type RecordScope but it cannot currently be used\n recordQuery(first: Int, after: String, where: RecordFilter, orderBy: RecordOrderBy, scope: String): RecordConnection @fieldCategory\n}\n\ndirective @generic on OBJECT | INTERFACE | UNION | ENUM | INPUT_OBJECT\ndirective @fieldCategory on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION | ENUM_VALUE\ndirective @category on FIELD\n\n\n\n\n\n\n\n";
52760
52969
 
@@ -57957,7 +58166,7 @@
57957
58166
  }, networkAdapter);
57958
58167
  }
57959
58168
 
57960
- const { keys: keys$8, create: create$6, assign: assign$5, entries } = Object;
58169
+ const { keys: keys$8, create: create$6, assign: assign$6, entries } = Object;
57961
58170
  const { stringify: stringify$6, parse: parse$6 } = JSON;
57962
58171
  const { push, join, slice } = Array.prototype;
57963
58172
 
@@ -59704,7 +59913,7 @@
59704
59913
  id: '@salesforce/lds-network-adapter',
59705
59914
  instrument: instrument$1,
59706
59915
  });
59707
- // version: 1.153.0-8e8a8177b
59916
+ // version: 1.154.0-3a36aab7e
59708
59917
 
59709
59918
  const { create: create$2, keys: keys$2 } = Object;
59710
59919
  const { stringify: stringify$1, parse: parse$1 } = JSON;
@@ -80549,7 +80758,7 @@
80549
80758
  configuration: { ...configurationForGraphQLAdapters },
80550
80759
  instrument,
80551
80760
  });
80552
- // version: 1.153.0-d6fe530aa
80761
+ // version: 1.154.0-492daee11
80553
80762
 
80554
80763
  // On core the unstable adapters are re-exported with different names,
80555
80764
 
@@ -82796,7 +83005,7 @@
82796
83005
  unstable_graphQL_imperative = createImperativeAdapter(luvio, createInstrumentedAdapter(ldsAdapter, adapterMetadata), adapterMetadata);
82797
83006
  graphQLImperative = ldsAdapter;
82798
83007
  });
82799
- // version: 1.153.0-d6fe530aa
83008
+ // version: 1.154.0-492daee11
82800
83009
 
82801
83010
  var gqlApi = /*#__PURE__*/Object.freeze({
82802
83011
  __proto__: null,
@@ -83502,4 +83711,4 @@
83502
83711
  Object.defineProperty(exports, '__esModule', { value: true });
83503
83712
 
83504
83713
  }));
83505
- // version: 1.153.0-8e8a8177b
83714
+ // version: 1.154.0-3a36aab7e
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/lds-worker-api",
3
- "version": "1.153.0",
3
+ "version": "1.154.0",
4
4
  "license": "SEE LICENSE IN LICENSE.txt",
5
5
  "description": "",
6
6
  "main": "dist/standalone/es/lds-worker-api.js",