@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.
|
|
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.
|
|
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.
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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.
|
|
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$
|
|
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$
|
|
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:
|
|
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, '
|
|
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
|
|
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:
|
|
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:
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
52801
|
+
return fetchRecordOrNull(record.fields[`${field.name}Id`].value);
|
|
52660
52802
|
}
|
|
52661
52803
|
seenRecordIds.add(id);
|
|
52662
|
-
return
|
|
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 = (
|
|
52669
|
-
seenRecordIds.add(
|
|
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:
|
|
52673
|
-
currentFieldName
|
|
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
|
-
|
|
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$
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
83714
|
+
// version: 1.154.0-3a36aab7e
|