@salesforce/lds-worker-api 1.153.0 → 1.155.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.
|
@@ -770,4 +770,4 @@ if (process.env.NODE_ENV !== 'production') {
|
|
|
770
770
|
}
|
|
771
771
|
|
|
772
772
|
export { createPrimingSession, draftManager, draftQueue, executeAdapter, executeMutatingAdapter, getImperativeAdapterNames, invokeAdapter, invokeAdapterWithDraftToReplace, invokeAdapterWithMetadata, nimbusDraftQueue, setMetadataTTL, setUiApiRecordTTL, subscribeToAdapter };
|
|
773
|
-
// version: 1.
|
|
773
|
+
// version: 1.155.0-96e212d1e
|
|
@@ -3799,7 +3799,7 @@ function withDefaultLuvio(callback) {
|
|
|
3799
3799
|
}
|
|
3800
3800
|
callbacks.push(callback);
|
|
3801
3801
|
}
|
|
3802
|
-
// version: 1.
|
|
3802
|
+
// version: 1.155.0-96e212d1e
|
|
3803
3803
|
|
|
3804
3804
|
// TODO [TD-0081508]: once that TD is fulfilled we can probably change this file
|
|
3805
3805
|
function instrumentAdapter$1(createFunction, _metadata) {
|
|
@@ -15232,7 +15232,7 @@ function parseAndVisit(source) {
|
|
|
15232
15232
|
updateReferenceMapWithKnownKey(ast, luvioDocumentNode);
|
|
15233
15233
|
return luvioDocumentNode;
|
|
15234
15234
|
}
|
|
15235
|
-
// version: 1.
|
|
15235
|
+
// version: 1.155.0-96e212d1e
|
|
15236
15236
|
|
|
15237
15237
|
function unwrap(data) {
|
|
15238
15238
|
// The lwc-luvio bindings import a function from lwc called "unwrap".
|
|
@@ -16145,7 +16145,7 @@ function createGraphQLWireAdapterConstructor(luvio, adapter, metadata, astResolv
|
|
|
16145
16145
|
const { apiFamily, name } = metadata;
|
|
16146
16146
|
return createGraphQLWireAdapterConstructor$1(adapter, `${apiFamily}.${name}`, luvio, astResolver);
|
|
16147
16147
|
}
|
|
16148
|
-
// version: 1.
|
|
16148
|
+
// version: 1.155.0-96e212d1e
|
|
16149
16149
|
|
|
16150
16150
|
/**
|
|
16151
16151
|
* Copyright (c) 2022, Salesforce, Inc.,
|
|
@@ -16232,7 +16232,7 @@ var FragmentReadResultState;
|
|
|
16232
16232
|
|
|
16233
16233
|
const { keys: ObjectKeys$3, create: ObjectCreate$3 } = Object;
|
|
16234
16234
|
|
|
16235
|
-
const { assign: assign$
|
|
16235
|
+
const { assign: assign$8, create: create$8, freeze: freeze$4, keys: keys$a } = Object;
|
|
16236
16236
|
|
|
16237
16237
|
ObjectCreate$3(null);
|
|
16238
16238
|
|
|
@@ -17153,7 +17153,7 @@ function getTypeCacheKeys$Q$1(luvio, input, fullPathFactory) {
|
|
|
17153
17153
|
return rootKeySet;
|
|
17154
17154
|
}
|
|
17155
17155
|
|
|
17156
|
-
const { assign: assign$
|
|
17156
|
+
const { assign: assign$7, create: create$7, freeze: freeze$3, keys: keys$9 } = Object;
|
|
17157
17157
|
const { hasOwnProperty: hasOwnProperty$1 } = Object.prototype;
|
|
17158
17158
|
const { split, endsWith } = String.prototype;
|
|
17159
17159
|
const { isArray: isArray$7 } = Array;
|
|
@@ -25011,7 +25011,7 @@ function publishDependencies(luvio, recordIds, depKeys) {
|
|
|
25011
25011
|
const node = luvio.getNode(recordDepKey);
|
|
25012
25012
|
if (isGraphNode(node)) {
|
|
25013
25013
|
const recordDeps = node.retrieve();
|
|
25014
|
-
assign$
|
|
25014
|
+
assign$7(dependencies, recordDeps);
|
|
25015
25015
|
}
|
|
25016
25016
|
luvio.storePublish(recordDepKey, dependencies);
|
|
25017
25017
|
}
|
|
@@ -25400,7 +25400,7 @@ function makeRecordLayoutMap(luvio, config, apiName, recordTypeId, layoutTypes,
|
|
|
25400
25400
|
}
|
|
25401
25401
|
const { layoutType, mode, snapshot } = container;
|
|
25402
25402
|
if (wrapper.layoutMap[layoutType] === undefined) {
|
|
25403
|
-
wrapper.layoutMap = assign$
|
|
25403
|
+
wrapper.layoutMap = assign$7({}, wrapper.layoutMap, {
|
|
25404
25404
|
[layoutType]: {},
|
|
25405
25405
|
});
|
|
25406
25406
|
}
|
|
@@ -34186,7 +34186,7 @@ function typeCheckConfig$u(untrustedConfig) {
|
|
|
34186
34186
|
}
|
|
34187
34187
|
}
|
|
34188
34188
|
if (records.length > 0) {
|
|
34189
|
-
assign$
|
|
34189
|
+
assign$7(config, { records });
|
|
34190
34190
|
}
|
|
34191
34191
|
}
|
|
34192
34192
|
return config;
|
|
@@ -44016,7 +44016,7 @@ withDefaultLuvio((luvio) => {
|
|
|
44016
44016
|
dropFunction: instrumentation$2.notifyRecordUpdateAvailableDropped,
|
|
44017
44017
|
});
|
|
44018
44018
|
});
|
|
44019
|
-
// version: 1.
|
|
44019
|
+
// version: 1.155.0-42bd074c3
|
|
44020
44020
|
|
|
44021
44021
|
var caseSensitiveUserId = '005B0000000GR4OIAW';
|
|
44022
44022
|
|
|
@@ -44603,7 +44603,7 @@ function isDeprecatedDurableStoreEntry(durableRecord) {
|
|
|
44603
44603
|
const DefaultDurableSegment = 'DEFAULT';
|
|
44604
44604
|
const RedirectDurableSegment = 'REDIRECT_KEYS';
|
|
44605
44605
|
|
|
44606
|
-
const { keys: keys$6, create: create$5, assign: assign$
|
|
44606
|
+
const { keys: keys$6, create: create$5, assign: assign$5, freeze: freeze$1$1 } = Object;
|
|
44607
44607
|
|
|
44608
44608
|
//Durable store error instrumentation key
|
|
44609
44609
|
const DURABLE_STORE_ERROR = 'durable-store-error';
|
|
@@ -48971,7 +48971,7 @@ function createDraftSynthesisErrorResponse(message = 'failed to synthesize draft
|
|
|
48971
48971
|
return new DraftErrorFetchResponse(HttpStatusCode$1.BadRequest, error);
|
|
48972
48972
|
}
|
|
48973
48973
|
|
|
48974
|
-
const { keys: keys$4, create: create$4, assign: assign$
|
|
48974
|
+
const { keys: keys$4, create: create$4, assign: assign$4, values: values$2 } = Object;
|
|
48975
48975
|
const { stringify: stringify$4, parse: parse$4 } = JSON;
|
|
48976
48976
|
const { isArray: isArray$3 } = Array;
|
|
48977
48977
|
|
|
@@ -50536,6 +50536,104 @@ function isEntryDurableRecordRepresentation(entry, key) {
|
|
|
50536
50536
|
entry.data.__type === undefined);
|
|
50537
50537
|
}
|
|
50538
50538
|
|
|
50539
|
+
function serializeFieldArguments$1(argumentNodes, variables) {
|
|
50540
|
+
const mutableArgumentNodes = Object.assign([], argumentNodes);
|
|
50541
|
+
return `args__(${mutableArgumentNodes
|
|
50542
|
+
.sort((a, b) => {
|
|
50543
|
+
const aName = a.name.value.toUpperCase();
|
|
50544
|
+
const bName = b.name.value.toUpperCase();
|
|
50545
|
+
return aName < bName ? -1 : aName > bName ? 1 : 0;
|
|
50546
|
+
})
|
|
50547
|
+
.map((node) => serializeArgNode$1(node, variables))
|
|
50548
|
+
.join('::')})`;
|
|
50549
|
+
}
|
|
50550
|
+
function serializeArgNode$1(argumentNode, variables) {
|
|
50551
|
+
const argName = argumentNode.name.value;
|
|
50552
|
+
return `${argName}:${serializeValueNode$2(argumentNode.value, variables)}`;
|
|
50553
|
+
}
|
|
50554
|
+
function serializeValueNode$2(valueNode, variables) {
|
|
50555
|
+
switch (valueNode.kind) {
|
|
50556
|
+
case 'BooleanValue':
|
|
50557
|
+
return valueNode.value + '';
|
|
50558
|
+
case 'IntValue':
|
|
50559
|
+
case 'FloatValue':
|
|
50560
|
+
case 'EnumValue':
|
|
50561
|
+
case 'StringValue':
|
|
50562
|
+
return valueNode.value;
|
|
50563
|
+
case 'ListValue': {
|
|
50564
|
+
const mutableValueNodeList = Object.assign([], valueNode.values);
|
|
50565
|
+
return mutableValueNodeList
|
|
50566
|
+
.sort((a, b) => {
|
|
50567
|
+
const aVal = serializeValueNode$2(a, variables).toUpperCase();
|
|
50568
|
+
const bVal = serializeValueNode$2(b, variables).toUpperCase();
|
|
50569
|
+
return aVal < bVal ? -1 : aVal > bVal ? 1 : 0;
|
|
50570
|
+
})
|
|
50571
|
+
.map((val, i) => `${serializeValueNode$2(val, variables)}[${i}]`)
|
|
50572
|
+
.join(',');
|
|
50573
|
+
}
|
|
50574
|
+
case 'Variable': {
|
|
50575
|
+
const variableValue = variables[valueNode.name.value];
|
|
50576
|
+
return typeof variableValue === 'string'
|
|
50577
|
+
? variableValue
|
|
50578
|
+
: JSON.stringify(variableValue);
|
|
50579
|
+
}
|
|
50580
|
+
case 'NullValue':
|
|
50581
|
+
return 'null';
|
|
50582
|
+
case 'ObjectValue': {
|
|
50583
|
+
const mutableFieldNodeList = Object.assign([], valueNode.fields);
|
|
50584
|
+
return mutableFieldNodeList
|
|
50585
|
+
.sort((a, b) => {
|
|
50586
|
+
const aName = a.name.value.toUpperCase();
|
|
50587
|
+
const bName = b.name.value.toUpperCase();
|
|
50588
|
+
return aName < bName ? -1 : aName > bName ? 1 : 0;
|
|
50589
|
+
})
|
|
50590
|
+
.map((field) => field.name.value + ':' + serializeValueNode$2(field.value, variables))
|
|
50591
|
+
.join(',');
|
|
50592
|
+
}
|
|
50593
|
+
}
|
|
50594
|
+
}
|
|
50595
|
+
|
|
50596
|
+
function serializeOperationNode$2(operationNode, variables, fragmentMap) {
|
|
50597
|
+
return `${serializeSelectionSet$1(operationNode.selectionSet, variables, fragmentMap)}`;
|
|
50598
|
+
}
|
|
50599
|
+
function serializeSelectionSet$1(selectionSetNode, variables, fragmentMap) {
|
|
50600
|
+
return `${selectionSetNode.selections
|
|
50601
|
+
.map((selection) => serializeSelectionNode$1(selection, variables, fragmentMap))
|
|
50602
|
+
.join()}`;
|
|
50603
|
+
}
|
|
50604
|
+
/**
|
|
50605
|
+
*
|
|
50606
|
+
* @description This function takes a GraphQL SelectionNode from an AST and serializes it in a stable way, so we can
|
|
50607
|
+
* use it for property names and Store keys.
|
|
50608
|
+
* @param selectionNode
|
|
50609
|
+
* @param variables
|
|
50610
|
+
* @param fragmentMap
|
|
50611
|
+
* @returns string
|
|
50612
|
+
*/
|
|
50613
|
+
function serializeSelectionNode$1(selectionNode, variables, fragmentMap) {
|
|
50614
|
+
switch (selectionNode.kind) {
|
|
50615
|
+
case 'Field': {
|
|
50616
|
+
const hasArguments = selectionNode.arguments !== undefined && selectionNode.arguments.length > 0;
|
|
50617
|
+
const argumentSuffix = hasArguments
|
|
50618
|
+
? `__${serializeFieldArguments$1(selectionNode.arguments, variables)}`
|
|
50619
|
+
: '';
|
|
50620
|
+
return `${selectionNode.name.value}${argumentSuffix}`;
|
|
50621
|
+
}
|
|
50622
|
+
case 'FragmentSpread': {
|
|
50623
|
+
const fragment = fragmentMap[selectionNode.name.value];
|
|
50624
|
+
return fragment === undefined
|
|
50625
|
+
? selectionNode.name.value
|
|
50626
|
+
: serializeSelectionSet$1(fragment.selectionSet, variables, fragmentMap);
|
|
50627
|
+
}
|
|
50628
|
+
case 'InlineFragment':
|
|
50629
|
+
return serializeSelectionSet$1(selectionNode.selectionSet, variables, fragmentMap);
|
|
50630
|
+
}
|
|
50631
|
+
}
|
|
50632
|
+
function buildQueryTypeStringKey$1(args) {
|
|
50633
|
+
const { keyPrefix, schemaName, queryTypeName, operationNode, variables, fragmentMap } = args;
|
|
50634
|
+
return `${keyPrefix}::${schemaName}::${queryTypeName}[${serializeOperationNode$2(operationNode, variables, fragmentMap)}]`;
|
|
50635
|
+
}
|
|
50636
|
+
|
|
50539
50637
|
/**
|
|
50540
50638
|
* Copyright (c) 2022, Salesforce, Inc.,
|
|
50541
50639
|
* All rights reserved.
|
|
@@ -50669,7 +50767,7 @@ function isArrayLike(x) {
|
|
|
50669
50767
|
(x.length === 0 || (x.length > 0 && Object.prototype.hasOwnProperty.call(x, x.length - 1))));
|
|
50670
50768
|
}
|
|
50671
50769
|
|
|
50672
|
-
const { create: create$3, keys: keys$3, values: values$1, entries: entries$2 } = Object;
|
|
50770
|
+
const { create: create$3, keys: keys$3, values: values$1, entries: entries$2, assign: assign$3 } = Object;
|
|
50673
50771
|
const { stringify: stringify$3, parse: parse$3 } = JSON;
|
|
50674
50772
|
const { isArray: isArray$2 } = Array;
|
|
50675
50773
|
|
|
@@ -51113,6 +51211,10 @@ function dateRangesFrom(dateRange, input, dateFunction) {
|
|
|
51113
51211
|
}
|
|
51114
51212
|
}
|
|
51115
51213
|
|
|
51214
|
+
const JSON_EXTRACT_PATH_INGESTION_TIMESTAMP = '$.ingestionTimestamp';
|
|
51215
|
+
const JSON_EXTRACT_PATH_INGESTION_APINAME = '$.apiName';
|
|
51216
|
+
const JSON_EXTRACT_PATH_DRAFTS = '$.drafts';
|
|
51217
|
+
|
|
51116
51218
|
const MultiPickListValueSeparator = ';';
|
|
51117
51219
|
function filterToPredicates(where, recordType, alias, objectInfoMap, joins, draftFunctions) {
|
|
51118
51220
|
if (!where)
|
|
@@ -51174,7 +51276,7 @@ function filterToPredicates(where, recordType, alias, objectInfoMap, joins, draf
|
|
|
51174
51276
|
return [
|
|
51175
51277
|
{
|
|
51176
51278
|
alias: childAlias,
|
|
51177
|
-
leftPath:
|
|
51279
|
+
leftPath: JSON_EXTRACT_PATH_INGESTION_APINAME,
|
|
51178
51280
|
operator: '=',
|
|
51179
51281
|
value: entityName,
|
|
51180
51282
|
dataType: 'String',
|
|
@@ -51635,11 +51737,18 @@ function buildQuery(config) {
|
|
|
51635
51737
|
const joins = buildJoins(config);
|
|
51636
51738
|
const predicates = buildPredicates(config);
|
|
51637
51739
|
const orderBy = buildOrderBy(config);
|
|
51740
|
+
const staleRecordsSql = excludeStaleRecordsGate.isOpen({ fallback: false })
|
|
51741
|
+
? `AND (
|
|
51742
|
+
json_extract("${config.alias}".metadata, '${JSON_EXTRACT_PATH_INGESTION_TIMESTAMP}') >= ?
|
|
51743
|
+
OR json_extract("${config.alias}".data, '${JSON_EXTRACT_PATH_DRAFTS}') IS NOT NULL
|
|
51744
|
+
)`
|
|
51745
|
+
: '';
|
|
51638
51746
|
const sql = `
|
|
51639
51747
|
SELECT "${config.alias}".data
|
|
51640
51748
|
FROM lds_data "${config.alias}" ${joins.sql}
|
|
51641
51749
|
WHERE "${config.alias}".key like 'UiApi::RecordRepresentation:%'
|
|
51642
|
-
AND json_extract("${config.alias}".data, '
|
|
51750
|
+
AND json_extract("${config.alias}".data, '${JSON_EXTRACT_PATH_INGESTION_APINAME}') = ?
|
|
51751
|
+
${staleRecordsSql}
|
|
51643
51752
|
${predicates.sql}
|
|
51644
51753
|
${orderBy.sql}
|
|
51645
51754
|
LIMIT ?
|
|
@@ -51652,6 +51761,7 @@ function buildQuery(config) {
|
|
|
51652
51761
|
...joins.bindings,
|
|
51653
51762
|
// the api name for the main record type
|
|
51654
51763
|
config.alias,
|
|
51764
|
+
...(excludeStaleRecordsGate.isOpen({ fallback: false }) ? [config.ingestionTimestamp] : []),
|
|
51655
51765
|
// where clause and parent scope bindings
|
|
51656
51766
|
...predicates.bindings,
|
|
51657
51767
|
// limit binding
|
|
@@ -51677,19 +51787,33 @@ function buildJoins(config) {
|
|
|
51677
51787
|
if (allJoins.length === 0)
|
|
51678
51788
|
return { sql, bindings };
|
|
51679
51789
|
sql = allJoins.reduce((joinAccumulator, join) => {
|
|
51790
|
+
let timestampAdded = false;
|
|
51680
51791
|
const joinConditions = join.conditions.reduce((conditionAccumulator, condition) => {
|
|
51681
51792
|
let joined_sql;
|
|
51793
|
+
const joinMetadataTimestamp = excludeStaleRecordsGate.isOpen({ fallback: false })
|
|
51794
|
+
? ` AND (json_extract("${join.alias}".metadata, '${JSON_EXTRACT_PATH_INGESTION_TIMESTAMP}') >= ? OR json_extract("${join.alias}".data, '${JSON_EXTRACT_PATH_DRAFTS}') IS NOT NULL)`
|
|
51795
|
+
: '';
|
|
51682
51796
|
// predicate on a value, use the newly joined table
|
|
51683
51797
|
if ('type' in condition) {
|
|
51684
51798
|
const { sql, binding } = predicateToSQL(condition, join.alias);
|
|
51685
|
-
joined_sql = ` AND ${sql}`;
|
|
51799
|
+
joined_sql = ` AND ${sql}${timestampAdded ? '' : joinMetadataTimestamp}`;
|
|
51686
51800
|
bindings.push(...binding);
|
|
51801
|
+
if (excludeStaleRecordsGate.isOpen({ fallback: false }) &&
|
|
51802
|
+
timestampAdded === false) {
|
|
51803
|
+
bindings.push(config.ingestionTimestamp);
|
|
51804
|
+
timestampAdded = true;
|
|
51805
|
+
}
|
|
51687
51806
|
}
|
|
51688
51807
|
else {
|
|
51689
51808
|
// predicate on a path
|
|
51690
51809
|
const left = ` AND json_extract("${join.to}".data, '${condition.leftPath}')`;
|
|
51691
51810
|
const right = `json_extract("${join.alias}".data, '${condition.rightPath}')`;
|
|
51692
|
-
joined_sql = `${left} = ${right}`;
|
|
51811
|
+
joined_sql = `${left} = ${right}${timestampAdded ? '' : joinMetadataTimestamp}`;
|
|
51812
|
+
if (excludeStaleRecordsGate.isOpen({ fallback: false }) &&
|
|
51813
|
+
timestampAdded === false) {
|
|
51814
|
+
bindings.push(config.ingestionTimestamp);
|
|
51815
|
+
timestampAdded = true;
|
|
51816
|
+
}
|
|
51693
51817
|
}
|
|
51694
51818
|
conditionAccumulator += joined_sql;
|
|
51695
51819
|
return conditionAccumulator;
|
|
@@ -52368,7 +52492,7 @@ function orderByToPredicate(orderBy, recordType, alias, objectInfoMap, joins) {
|
|
|
52368
52492
|
function pathForKey(key) {
|
|
52369
52493
|
switch (key) {
|
|
52370
52494
|
case 'ApiName':
|
|
52371
|
-
return
|
|
52495
|
+
return JSON_EXTRACT_PATH_INGESTION_APINAME;
|
|
52372
52496
|
case 'WeakEtag':
|
|
52373
52497
|
return '$.weakEtag';
|
|
52374
52498
|
case 'Id':
|
|
@@ -52390,7 +52514,7 @@ function scopeToJoins(scope = '', settings) {
|
|
|
52390
52514
|
{
|
|
52391
52515
|
type: PredicateType.single,
|
|
52392
52516
|
alias: 'ServiceAppointment_AssignedResource',
|
|
52393
|
-
leftPath:
|
|
52517
|
+
leftPath: JSON_EXTRACT_PATH_INGESTION_APINAME,
|
|
52394
52518
|
operator: '=',
|
|
52395
52519
|
value: 'AssignedResource',
|
|
52396
52520
|
dataType: 'String',
|
|
@@ -52411,7 +52535,7 @@ function scopeToJoins(scope = '', settings) {
|
|
|
52411
52535
|
{
|
|
52412
52536
|
type: PredicateType.single,
|
|
52413
52537
|
alias: 'ServiceAppointment_AssignedResource_ServiceResource',
|
|
52414
|
-
leftPath:
|
|
52538
|
+
leftPath: JSON_EXTRACT_PATH_INGESTION_APINAME,
|
|
52415
52539
|
operator: '=',
|
|
52416
52540
|
value: 'ServiceResource',
|
|
52417
52541
|
dataType: 'String',
|
|
@@ -52516,14 +52640,21 @@ function addResolversToSchema(schema, polyFields) {
|
|
|
52516
52640
|
// Fields of the `RecordQuery` type are the record queries for the entity types
|
|
52517
52641
|
// supported for the org
|
|
52518
52642
|
for (const recordQuery of fields) {
|
|
52519
|
-
recordQuery.resolve = function recordConnectionResolver(record, args) {
|
|
52643
|
+
recordQuery.resolve = async function recordConnectionResolver(record, args, { query }, info) {
|
|
52644
|
+
const { name: currentFieldName } = recordQuery;
|
|
52645
|
+
let ingestionTimestamp = 0;
|
|
52646
|
+
if (excludeStaleRecordsGate.isOpen({ fallback: false })) {
|
|
52647
|
+
// at our record query we fetch each ingestion time stamp and pass it down to each lower resolver to query against
|
|
52648
|
+
ingestionTimestamp = await fetchIngestionTimeStampFromDatabase(currentFieldName, info, args, query);
|
|
52649
|
+
}
|
|
52520
52650
|
// In the SF schema, the relevant arguments are passed into RecordQuery fields, but actually used
|
|
52521
52651
|
// down in the edge resolvers. For this resolver, we can just return what was passed in
|
|
52522
52652
|
// to make it available to the next execution step
|
|
52523
52653
|
return {
|
|
52524
52654
|
parentArgs: args,
|
|
52525
52655
|
parentRecord: record,
|
|
52526
|
-
currentFieldName
|
|
52656
|
+
currentFieldName,
|
|
52657
|
+
ingestionTimestamp,
|
|
52527
52658
|
};
|
|
52528
52659
|
};
|
|
52529
52660
|
}
|
|
@@ -52569,10 +52700,11 @@ function addResolversToSchema(schema, polyFields) {
|
|
|
52569
52700
|
// }
|
|
52570
52701
|
for (const field of fields) {
|
|
52571
52702
|
if (field.name === 'node') {
|
|
52572
|
-
field.resolve = function nodeResolver(
|
|
52703
|
+
field.resolve = function nodeResolver(obj, _args, { seenRecordIds }) {
|
|
52704
|
+
const { record, ingestionTimestamp } = obj;
|
|
52573
52705
|
const recordRepresentation = parse$3(record);
|
|
52574
52706
|
seenRecordIds.add(recordRepresentation.id);
|
|
52575
|
-
return recordRepresentation;
|
|
52707
|
+
return { recordRepresentation, ingestionTimestamp };
|
|
52576
52708
|
};
|
|
52577
52709
|
}
|
|
52578
52710
|
}
|
|
@@ -52595,40 +52727,40 @@ function addResolversToSchema(schema, polyFields) {
|
|
|
52595
52727
|
for (const field of fields) {
|
|
52596
52728
|
switch (field.name) {
|
|
52597
52729
|
case 'Id':
|
|
52598
|
-
field.resolve = (record) => record.id;
|
|
52730
|
+
field.resolve = ({ recordRepresentation: record }) => record.id;
|
|
52599
52731
|
break;
|
|
52600
52732
|
case 'ApiName':
|
|
52601
|
-
field.resolve = (record) => record.apiName;
|
|
52733
|
+
field.resolve = ({ recordRepresentation: record }) => record.apiName;
|
|
52602
52734
|
break;
|
|
52603
52735
|
case 'WeakEtag':
|
|
52604
|
-
field.resolve = (record) => record.weakEtag;
|
|
52736
|
+
field.resolve = ({ recordRepresentation: record }) => record.weakEtag;
|
|
52605
52737
|
break;
|
|
52606
52738
|
case '_drafts':
|
|
52607
|
-
field.resolve = (record) => {
|
|
52739
|
+
field.resolve = ({ recordRepresentation: record, }) => {
|
|
52608
52740
|
return record.drafts ? record.drafts : null;
|
|
52609
52741
|
};
|
|
52610
52742
|
break;
|
|
52611
52743
|
case 'LastModifiedById':
|
|
52612
|
-
field.resolve = (record) => {
|
|
52744
|
+
field.resolve = ({ recordRepresentation: record }) => {
|
|
52613
52745
|
return record.lastModifiedById
|
|
52614
52746
|
? { value: record.lastModifiedById }
|
|
52615
52747
|
: null;
|
|
52616
52748
|
};
|
|
52617
52749
|
break;
|
|
52618
52750
|
case 'LastModifiedDate':
|
|
52619
|
-
field.resolve = (record) => {
|
|
52751
|
+
field.resolve = ({ recordRepresentation: record }) => {
|
|
52620
52752
|
return record.lastModifiedDate
|
|
52621
52753
|
? { value: record.lastModifiedDate }
|
|
52622
52754
|
: null;
|
|
52623
52755
|
};
|
|
52624
52756
|
break;
|
|
52625
52757
|
case 'SystemModstamp':
|
|
52626
|
-
field.resolve = (record) => {
|
|
52758
|
+
field.resolve = ({ recordRepresentation: record }) => {
|
|
52627
52759
|
return record.systemModstamp ? { value: record.systemModstamp } : null;
|
|
52628
52760
|
};
|
|
52629
52761
|
break;
|
|
52630
52762
|
case 'RecordTypeId':
|
|
52631
|
-
field.resolve = (record) => {
|
|
52763
|
+
field.resolve = ({ recordRepresentation: record }) => {
|
|
52632
52764
|
return record.recordTypeId ? { value: record.recordTypeId } : null;
|
|
52633
52765
|
};
|
|
52634
52766
|
break;
|
|
@@ -52640,7 +52772,17 @@ function addResolversToSchema(schema, polyFields) {
|
|
|
52640
52772
|
.getInterfaces()
|
|
52641
52773
|
.find((iface) => iface.name === 'Record')) ||
|
|
52642
52774
|
(recordFieldType && recordFieldType.name === 'Record')) {
|
|
52643
|
-
field.resolve = function relationResolver(
|
|
52775
|
+
field.resolve = async function relationResolver(obj, _args, { Record, seenRecordIds }) {
|
|
52776
|
+
const fetchRecordOrNull = async (key) => {
|
|
52777
|
+
const recordRepresentation = await Record.load(key);
|
|
52778
|
+
return recordRepresentation !== null
|
|
52779
|
+
? {
|
|
52780
|
+
recordRepresentation,
|
|
52781
|
+
ingestionTimestamp,
|
|
52782
|
+
}
|
|
52783
|
+
: null;
|
|
52784
|
+
};
|
|
52785
|
+
const { recordRepresentation: record, ingestionTimestamp } = obj;
|
|
52644
52786
|
const fieldName = field.name.endsWith('__r')
|
|
52645
52787
|
? field.name.replace('__r', '__c')
|
|
52646
52788
|
: field.name;
|
|
@@ -52650,26 +52792,28 @@ function addResolversToSchema(schema, polyFields) {
|
|
|
52650
52792
|
if (!id)
|
|
52651
52793
|
return null;
|
|
52652
52794
|
if (id['__ref'] !== undefined) {
|
|
52653
|
-
return
|
|
52795
|
+
return fetchRecordOrNull(record.fields[`${field.name}Id`].value);
|
|
52654
52796
|
}
|
|
52655
52797
|
seenRecordIds.add(id);
|
|
52656
|
-
return
|
|
52798
|
+
return fetchRecordOrNull(id);
|
|
52657
52799
|
};
|
|
52658
52800
|
}
|
|
52659
52801
|
else if (isObjectType(recordFieldType) &&
|
|
52660
52802
|
field.type.name.endsWith('Connection')) {
|
|
52661
52803
|
// spanning field to a connection
|
|
52662
|
-
field.resolve = (
|
|
52663
|
-
seenRecordIds.add(
|
|
52804
|
+
field.resolve = async ({ recordRepresentation, ingestionTimestamp }, args, { seenRecordIds }) => {
|
|
52805
|
+
seenRecordIds.add(recordRepresentation.id);
|
|
52806
|
+
const { name: currentFieldName } = field;
|
|
52664
52807
|
return {
|
|
52665
52808
|
parentArgs: args,
|
|
52666
|
-
parentRecord:
|
|
52667
|
-
currentFieldName
|
|
52809
|
+
parentRecord: recordRepresentation,
|
|
52810
|
+
currentFieldName,
|
|
52811
|
+
ingestionTimestamp,
|
|
52668
52812
|
};
|
|
52669
52813
|
};
|
|
52670
52814
|
}
|
|
52671
52815
|
else {
|
|
52672
|
-
field.resolve = function recordFieldResolver(record) {
|
|
52816
|
+
field.resolve = function recordFieldResolver({ recordRepresentation: record, }) {
|
|
52673
52817
|
return record.fields[field.name] || null;
|
|
52674
52818
|
};
|
|
52675
52819
|
}
|
|
@@ -52681,7 +52825,7 @@ function addResolversToSchema(schema, polyFields) {
|
|
|
52681
52825
|
if (recordInterface !== undefined && baseRecord !== undefined) {
|
|
52682
52826
|
// 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.
|
|
52683
52827
|
// GraphQL executor would match InLineFragment' condition with type and keeps the deeper level field resolving going.
|
|
52684
|
-
recordInterface.resolveType = function (value) {
|
|
52828
|
+
recordInterface.resolveType = function ({ recordRepresentation: value, }) {
|
|
52685
52829
|
const targetType = polyTypes.find((type) => type.name === value.apiName);
|
|
52686
52830
|
return targetType === undefined ? baseRecord : targetType;
|
|
52687
52831
|
};
|
|
@@ -52689,7 +52833,7 @@ function addResolversToSchema(schema, polyFields) {
|
|
|
52689
52833
|
return schema;
|
|
52690
52834
|
}
|
|
52691
52835
|
async function connectionEdgeResolver(obj, _args, context) {
|
|
52692
|
-
const { parentArgs = {}, parentRecord, currentFieldName } = obj;
|
|
52836
|
+
const { parentArgs = {}, parentRecord, currentFieldName, ingestionTimestamp } = obj;
|
|
52693
52837
|
const { query, objectInfos, draftFunctions } = context;
|
|
52694
52838
|
let joins = [];
|
|
52695
52839
|
let alias = currentFieldName;
|
|
@@ -52720,10 +52864,19 @@ async function connectionEdgeResolver(obj, _args, context) {
|
|
|
52720
52864
|
predicates,
|
|
52721
52865
|
orderBy: orderByToPredicate(parentArgs.orderBy, alias, alias, context.objectInfos),
|
|
52722
52866
|
limit: parentArgs.first,
|
|
52867
|
+
ingestionTimestamp,
|
|
52723
52868
|
};
|
|
52724
52869
|
const { sql, bindings } = buildQuery(queryConfig);
|
|
52725
52870
|
const results = await query(sql, bindings);
|
|
52726
|
-
|
|
52871
|
+
//map each sql result with the ingestion timestamp to pass it down a level
|
|
52872
|
+
return results.rows
|
|
52873
|
+
.map((row) => row[0])
|
|
52874
|
+
.map((record) => {
|
|
52875
|
+
return {
|
|
52876
|
+
record,
|
|
52877
|
+
ingestionTimestamp,
|
|
52878
|
+
};
|
|
52879
|
+
});
|
|
52727
52880
|
}
|
|
52728
52881
|
/**
|
|
52729
52882
|
* Converts a childRelationship into a predicate
|
|
@@ -52749,6 +52902,62 @@ function isRecordType(type) {
|
|
|
52749
52902
|
const interfaces = type.getInterfaces();
|
|
52750
52903
|
return Boolean(interfaces.find((iface) => iface.name === 'Record'));
|
|
52751
52904
|
}
|
|
52905
|
+
/**
|
|
52906
|
+
* Builds the top level record query key based on AST data
|
|
52907
|
+
* @param operation
|
|
52908
|
+
* @param variables
|
|
52909
|
+
* @param argumentNodes
|
|
52910
|
+
* @param currentFieldName
|
|
52911
|
+
* @returns
|
|
52912
|
+
*/
|
|
52913
|
+
function buildKeyStringForRecordQuery(operation, variables, argumentNodes, currentFieldName) {
|
|
52914
|
+
const queryKey = buildQueryTypeStringKey$1({
|
|
52915
|
+
luvio: {},
|
|
52916
|
+
keyPrefix: 'UiApi',
|
|
52917
|
+
schemaName: 'uiapi',
|
|
52918
|
+
queryTypeName: 'Query',
|
|
52919
|
+
operationNode: operation,
|
|
52920
|
+
variables,
|
|
52921
|
+
fragmentMap: {},
|
|
52922
|
+
});
|
|
52923
|
+
const filteredArgumentNodes = assign$3([], argumentNodes).filter((node) => node.name.value !== 'first' && node.name.value !== 'after');
|
|
52924
|
+
const argumentString = filteredArgumentNodes.length > 0
|
|
52925
|
+
? '__' + serializeFieldArguments$1(filteredArgumentNodes, variables)
|
|
52926
|
+
: '';
|
|
52927
|
+
return `${queryKey}__uiapi__query__${currentFieldName}${argumentString}`;
|
|
52928
|
+
}
|
|
52929
|
+
/**
|
|
52930
|
+
* fetches a query level ingestion time stamp from the L2 cache
|
|
52931
|
+
* if no query has been seen then the timestamp is 0
|
|
52932
|
+
* @param apiName
|
|
52933
|
+
* @param info
|
|
52934
|
+
* @param args
|
|
52935
|
+
* @param query
|
|
52936
|
+
* @returns
|
|
52937
|
+
*/
|
|
52938
|
+
async function fetchIngestionTimeStampFromDatabase(apiName, info, args, query) {
|
|
52939
|
+
const { operation, variableValues } = info;
|
|
52940
|
+
// if we cannot find the query key in the database then default to 0 as we assume we have not seen the query
|
|
52941
|
+
// and all the data is not stale
|
|
52942
|
+
let ingestionTimestamp = 0;
|
|
52943
|
+
if (info.fieldNodes.length > 0 && info.fieldNodes[0].arguments !== undefined) {
|
|
52944
|
+
const key = buildKeyStringForRecordQuery(operation,
|
|
52945
|
+
// join varables passed from query to the argument variables given from the AST
|
|
52946
|
+
{ ...variableValues, ...args }, info.fieldNodes[0].arguments, apiName);
|
|
52947
|
+
const sql = `
|
|
52948
|
+
SELECT json_extract(metadata, '${JSON_EXTRACT_PATH_INGESTION_TIMESTAMP}')
|
|
52949
|
+
FROM lds_data
|
|
52950
|
+
WHERE key IS ?
|
|
52951
|
+
`;
|
|
52952
|
+
const results = await query(sql, [key]);
|
|
52953
|
+
const [timestamp] = results.rows.map((row) => row[0]);
|
|
52954
|
+
if (timestamp !== null && typeof timestamp === 'number') {
|
|
52955
|
+
//go back 10 ms to adjust for margin of error when top level query is stored and when raml objects are stored
|
|
52956
|
+
ingestionTimestamp = timestamp - 10;
|
|
52957
|
+
}
|
|
52958
|
+
}
|
|
52959
|
+
return ingestionTimestamp;
|
|
52960
|
+
}
|
|
52752
52961
|
|
|
52753
52962
|
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";
|
|
52754
52963
|
|
|
@@ -57951,7 +58160,7 @@ function makeNetworkAdapterChunkRecordFields(networkAdapter) {
|
|
|
57951
58160
|
}, networkAdapter);
|
|
57952
58161
|
}
|
|
57953
58162
|
|
|
57954
|
-
const { keys: keys$8, create: create$6, assign: assign$
|
|
58163
|
+
const { keys: keys$8, create: create$6, assign: assign$6, entries } = Object;
|
|
57955
58164
|
const { stringify: stringify$6, parse: parse$6 } = JSON;
|
|
57956
58165
|
const { push, join, slice } = Array.prototype;
|
|
57957
58166
|
|
|
@@ -59698,7 +59907,7 @@ register({
|
|
|
59698
59907
|
id: '@salesforce/lds-network-adapter',
|
|
59699
59908
|
instrument: instrument$1,
|
|
59700
59909
|
});
|
|
59701
|
-
// version: 1.
|
|
59910
|
+
// version: 1.155.0-96e212d1e
|
|
59702
59911
|
|
|
59703
59912
|
const { create: create$2, keys: keys$2 } = Object;
|
|
59704
59913
|
const { stringify: stringify$1, parse: parse$1 } = JSON;
|
|
@@ -80543,7 +80752,7 @@ register({
|
|
|
80543
80752
|
configuration: { ...configurationForGraphQLAdapters },
|
|
80544
80753
|
instrument,
|
|
80545
80754
|
});
|
|
80546
|
-
// version: 1.
|
|
80755
|
+
// version: 1.155.0-42bd074c3
|
|
80547
80756
|
|
|
80548
80757
|
// On core the unstable adapters are re-exported with different names,
|
|
80549
80758
|
|
|
@@ -82790,7 +82999,7 @@ withDefaultLuvio((luvio) => {
|
|
|
82790
82999
|
unstable_graphQL_imperative = createImperativeAdapter(luvio, createInstrumentedAdapter(ldsAdapter, adapterMetadata), adapterMetadata);
|
|
82791
83000
|
graphQLImperative = ldsAdapter;
|
|
82792
83001
|
});
|
|
82793
|
-
// version: 1.
|
|
83002
|
+
// version: 1.155.0-42bd074c3
|
|
82794
83003
|
|
|
82795
83004
|
var gqlApi = /*#__PURE__*/Object.freeze({
|
|
82796
83005
|
__proto__: null,
|
|
@@ -83479,4 +83688,4 @@ const { luvio } = getRuntime();
|
|
|
83479
83688
|
setDefaultLuvio({ luvio });
|
|
83480
83689
|
|
|
83481
83690
|
export { createPrimingSession, draftManager, draftQueue, executeAdapter, executeMutatingAdapter, getImperativeAdapterNames, invokeAdapter, invokeAdapterWithDraftToReplace, invokeAdapterWithMetadata, nimbusDraftQueue, registerReportObserver, setMetadataTTL, setUiApiRecordTTL, subscribeToAdapter };
|
|
83482
|
-
// version: 1.
|
|
83691
|
+
// version: 1.155.0-96e212d1e
|