@salesforce/lds-worker-api 1.242.0 → 1.242.1
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.
|
@@ -3905,7 +3905,7 @@
|
|
|
3905
3905
|
}
|
|
3906
3906
|
return resourceParams;
|
|
3907
3907
|
}
|
|
3908
|
-
// engine version: 0.150.
|
|
3908
|
+
// engine version: 0.150.2-5dcb5d26
|
|
3909
3909
|
|
|
3910
3910
|
/**
|
|
3911
3911
|
* Copyright (c) 2022, Salesforce, Inc.,
|
|
@@ -4033,7 +4033,7 @@
|
|
|
4033
4033
|
}
|
|
4034
4034
|
callbacks.push(callback);
|
|
4035
4035
|
}
|
|
4036
|
-
// version: 1.242.
|
|
4036
|
+
// version: 1.242.1-58f8f4bb1
|
|
4037
4037
|
|
|
4038
4038
|
// TODO [TD-0081508]: once that TD is fulfilled we can probably change this file
|
|
4039
4039
|
function instrumentAdapter$1(createFunction, _metadata) {
|
|
@@ -15494,7 +15494,7 @@
|
|
|
15494
15494
|
}
|
|
15495
15495
|
return superResult;
|
|
15496
15496
|
}
|
|
15497
|
-
// version: 1.242.
|
|
15497
|
+
// version: 1.242.1-58f8f4bb1
|
|
15498
15498
|
|
|
15499
15499
|
function unwrap(data) {
|
|
15500
15500
|
// The lwc-luvio bindings import a function from lwc called "unwrap".
|
|
@@ -16419,7 +16419,7 @@
|
|
|
16419
16419
|
const { apiFamily, name } = metadata;
|
|
16420
16420
|
return createGraphQLWireAdapterConstructor$1(adapter, `${apiFamily}.${name}`, luvio, astResolver);
|
|
16421
16421
|
}
|
|
16422
|
-
// version: 1.242.
|
|
16422
|
+
// version: 1.242.1-58f8f4bb1
|
|
16423
16423
|
|
|
16424
16424
|
/**
|
|
16425
16425
|
* Copyright (c) 2022, Salesforce, Inc.,
|
|
@@ -16518,7 +16518,7 @@
|
|
|
16518
16518
|
TypeCheckShapes[TypeCheckShapes["Integer"] = 3] = "Integer";
|
|
16519
16519
|
TypeCheckShapes[TypeCheckShapes["Unsupported"] = 4] = "Unsupported";
|
|
16520
16520
|
})(TypeCheckShapes || (TypeCheckShapes = {}));
|
|
16521
|
-
// engine version: 0.150.
|
|
16521
|
+
// engine version: 0.150.2-5dcb5d26
|
|
16522
16522
|
|
|
16523
16523
|
const { keys: ObjectKeys$3, create: ObjectCreate$3 } = Object;
|
|
16524
16524
|
|
|
@@ -34823,16 +34823,6 @@
|
|
|
34823
34823
|
};
|
|
34824
34824
|
}
|
|
34825
34825
|
|
|
34826
|
-
const adapterName$k = 'updateRelatedListInfo';
|
|
34827
|
-
const updateRelatedListInfo_ConfigPropertyMetadata = [
|
|
34828
|
-
generateParamConfigMetadata$2('parentObjectApiName', true, 0 /* UrlParameter */, 0 /* String */, false, getObjectApiName$1$1),
|
|
34829
|
-
generateParamConfigMetadata$2('relatedListId', true, 0 /* UrlParameter */, 0 /* String */),
|
|
34830
|
-
generateParamConfigMetadata$2('recordTypeId', false, 1 /* QueryParameter */, 0 /* String */),
|
|
34831
|
-
generateParamConfigMetadata$2('orderedByInfo', true, 2 /* Body */, 4 /* Unsupported */, true),
|
|
34832
|
-
generateParamConfigMetadata$2('userPreferences', true, 2 /* Body */, 4 /* Unsupported */),
|
|
34833
|
-
];
|
|
34834
|
-
const updateRelatedListInfo_ConfigPropertyNames = /*#__PURE__*/ buildAdapterValidationConfig$2(adapterName$k, updateRelatedListInfo_ConfigPropertyMetadata);
|
|
34835
|
-
const createResourceParams$m = /*#__PURE__*/ createResourceParams$Z(updateRelatedListInfo_ConfigPropertyMetadata);
|
|
34836
34826
|
function typeCheckConfig$o(untrustedConfig) {
|
|
34837
34827
|
const config = {};
|
|
34838
34828
|
typeCheckConfig$12(untrustedConfig, config, updateRelatedListInfo_ConfigPropertyMetadata);
|
|
@@ -34853,8 +34843,22 @@
|
|
|
34853
34843
|
if (referenceListUserPreferenceInputRepresentationValidationError === null) {
|
|
34854
34844
|
config.userPreferences = untrustedConfig_userPreferences;
|
|
34855
34845
|
}
|
|
34846
|
+
else {
|
|
34847
|
+
throw referenceListUserPreferenceInputRepresentationValidationError;
|
|
34848
|
+
}
|
|
34856
34849
|
return config;
|
|
34857
34850
|
}
|
|
34851
|
+
|
|
34852
|
+
const adapterName$k = 'updateRelatedListInfo';
|
|
34853
|
+
const updateRelatedListInfo_ConfigPropertyMetadata = [
|
|
34854
|
+
generateParamConfigMetadata$2('parentObjectApiName', true, 0 /* UrlParameter */, 0 /* String */, false, getObjectApiName$1$1),
|
|
34855
|
+
generateParamConfigMetadata$2('relatedListId', true, 0 /* UrlParameter */, 0 /* String */),
|
|
34856
|
+
generateParamConfigMetadata$2('recordTypeId', false, 1 /* QueryParameter */, 0 /* String */),
|
|
34857
|
+
generateParamConfigMetadata$2('orderedByInfo', true, 2 /* Body */, 4 /* Unsupported */, true),
|
|
34858
|
+
generateParamConfigMetadata$2('userPreferences', true, 2 /* Body */, 4 /* Unsupported */),
|
|
34859
|
+
];
|
|
34860
|
+
const updateRelatedListInfo_ConfigPropertyNames = /*#__PURE__*/ buildAdapterValidationConfig$2(adapterName$k, updateRelatedListInfo_ConfigPropertyMetadata);
|
|
34861
|
+
const createResourceParams$m = /*#__PURE__*/ createResourceParams$Z(updateRelatedListInfo_ConfigPropertyMetadata);
|
|
34858
34862
|
function validateAdapterConfig$n(untrustedConfig, configPropertyNames) {
|
|
34859
34863
|
if (!untrustedIsObject$2(untrustedConfig)) {
|
|
34860
34864
|
return null;
|
|
@@ -41743,7 +41747,7 @@
|
|
|
41743
41747
|
throttle(60, 60000, createLDSAdapter(luvio, 'notifyListInfoUpdateAvailable', notifyUpdateAvailableFactory$1));
|
|
41744
41748
|
throttle(60, 60000, createLDSAdapter(luvio, 'notifyQuickActionDefaultsUpdateAvailable', notifyUpdateAvailableFactory));
|
|
41745
41749
|
});
|
|
41746
|
-
// version: 1.242.
|
|
41750
|
+
// version: 1.242.1-5a8ee3f4c
|
|
41747
41751
|
|
|
41748
41752
|
var caseSensitiveUserId = '005B0000000GR4OIAW';
|
|
41749
41753
|
|
|
@@ -42385,6 +42389,9 @@
|
|
|
42385
42389
|
}
|
|
42386
42390
|
|
|
42387
42391
|
function isStoreEntryError(storeRecord) {
|
|
42392
|
+
if (!storeRecord || typeof storeRecord !== 'object') {
|
|
42393
|
+
return false;
|
|
42394
|
+
}
|
|
42388
42395
|
return storeRecord.__type === 'error';
|
|
42389
42396
|
}
|
|
42390
42397
|
|
|
@@ -49978,6 +49985,10 @@
|
|
|
49978
49985
|
return node.kind === 'OperationDefinition';
|
|
49979
49986
|
}
|
|
49980
49987
|
|
|
49988
|
+
const POLYMORPHIC_PARENT_RELATIONSHIP = 'polymorphicParentRelationship';
|
|
49989
|
+
const PARENT_RELATIONSHIP = 'parentRelationship';
|
|
49990
|
+
const CHILD_RELATIONSHIP = 'childRelationship';
|
|
49991
|
+
const RECORD_QUERY = 'recordQuery';
|
|
49981
49992
|
function requestsDraftsField(recordFieldNode) {
|
|
49982
49993
|
if (!recordFieldNode.selectionSet)
|
|
49983
49994
|
return false;
|
|
@@ -49993,18 +50004,41 @@
|
|
|
49993
50004
|
directive.arguments
|
|
49994
50005
|
.map((argument) => argument.value)
|
|
49995
50006
|
.filter(isStringValueNode)
|
|
49996
|
-
.some((categoryName) => categoryName.value ===
|
|
50007
|
+
.some((categoryName) => categoryName.value === RECORD_QUERY));
|
|
49997
50008
|
});
|
|
49998
50009
|
}
|
|
49999
50010
|
return false;
|
|
50000
50011
|
}
|
|
50001
|
-
// finds field with 'recordQuery' and 'childRelationship' directive
|
|
50002
|
-
function
|
|
50003
|
-
const
|
|
50004
|
-
return
|
|
50012
|
+
// finds connection field with 'recordQuery' and 'childRelationship' directive.
|
|
50013
|
+
function findNearestConnection(ancestors) {
|
|
50014
|
+
const connectionAncestor = findNearestAncesterPath(ancestors, true).node;
|
|
50015
|
+
return connectionAncestor === undefined ? undefined : connectionAncestor;
|
|
50016
|
+
}
|
|
50017
|
+
// convinient method to find nearest connection with its path
|
|
50018
|
+
function findNearestConnectionWithPath(ancestors) {
|
|
50019
|
+
const closestAncestorPath = findNearestAncesterPath(ancestors, true);
|
|
50020
|
+
let connection = undefined;
|
|
50021
|
+
let connectionPath = undefined;
|
|
50022
|
+
if (closestAncestorPath.parentIndex > 0) {
|
|
50023
|
+
const connectionAncestor = closestAncestorPath.node;
|
|
50024
|
+
const connectionAncestors = ancestors.slice(0, closestAncestorPath.parentIndex);
|
|
50025
|
+
connection =
|
|
50026
|
+
connectionAncestor === undefined ? undefined : connectionAncestor;
|
|
50027
|
+
if (connection !== undefined) {
|
|
50028
|
+
const ancesterPath = findAncesterPath(connectionAncestors);
|
|
50029
|
+
connectionPath =
|
|
50030
|
+
ancesterPath === ''
|
|
50031
|
+
? connection.name.value
|
|
50032
|
+
: `${ancesterPath}#${connection.name.value}`;
|
|
50033
|
+
}
|
|
50034
|
+
}
|
|
50035
|
+
return {
|
|
50036
|
+
connection,
|
|
50037
|
+
path: connectionPath,
|
|
50038
|
+
};
|
|
50005
50039
|
}
|
|
50006
|
-
// finds
|
|
50007
|
-
function findNearestAncesterPath(ancestors,
|
|
50040
|
+
// finds closest ancestor. If node with 'parentRelationship' is the ancester, the end result could be 'InlineFragmentNode' since it inherits the 'parent' relationship. 'InlineFragmentNode' makes sure that only one 'apiName' returns when tree is traversed.
|
|
50041
|
+
function findNearestAncesterPath(ancestors, connectionOnly) {
|
|
50008
50042
|
let recordQueryPath = { node: undefined, parentIndex: -1 };
|
|
50009
50043
|
let relationship = '';
|
|
50010
50044
|
for (let i = ancestors.length - 1; i >= 0; i--) {
|
|
@@ -50018,9 +50052,11 @@
|
|
|
50018
50052
|
continue;
|
|
50019
50053
|
for (let arg of directive.arguments) {
|
|
50020
50054
|
if (arg.value &&
|
|
50021
|
-
(arg.value.value ===
|
|
50022
|
-
arg.value.value ===
|
|
50023
|
-
(!
|
|
50055
|
+
(arg.value.value === RECORD_QUERY ||
|
|
50056
|
+
arg.value.value === CHILD_RELATIONSHIP ||
|
|
50057
|
+
(!connectionOnly &&
|
|
50058
|
+
(arg.value.value === PARENT_RELATIONSHIP ||
|
|
50059
|
+
arg.value.value === POLYMORPHIC_PARENT_RELATIONSHIP)))) {
|
|
50024
50060
|
recordQueryPath = { node: node, parentIndex: i };
|
|
50025
50061
|
relationship = arg.value.value;
|
|
50026
50062
|
break;
|
|
@@ -50035,17 +50071,19 @@
|
|
|
50035
50071
|
//checks if nearest ancester could be an inline fragment
|
|
50036
50072
|
if (recordQueryPath.node !== undefined &&
|
|
50037
50073
|
recordQueryPath.node.selectionSet &&
|
|
50038
|
-
relationship ===
|
|
50039
|
-
//
|
|
50040
|
-
|
|
50041
|
-
|
|
50042
|
-
|
|
50043
|
-
if (
|
|
50074
|
+
(relationship === PARENT_RELATIONSHIP || relationship === POLYMORPHIC_PARENT_RELATIONSHIP)) {
|
|
50075
|
+
// InlineFragment is usually 3 steps aways from its FieldNode parent within ancester hierarchy if it exists. The below search
|
|
50076
|
+
// is applied to adapt to future AST structure change
|
|
50077
|
+
let parentIndex = recordQueryPath.parentIndex + 1;
|
|
50078
|
+
while (parentIndex < ancestors.length) {
|
|
50079
|
+
if (isInlineFragmentNode(ancestors[parentIndex])) {
|
|
50044
50080
|
recordQueryPath = {
|
|
50045
|
-
node: ancestors[
|
|
50046
|
-
parentIndex
|
|
50081
|
+
node: ancestors[parentIndex],
|
|
50082
|
+
parentIndex,
|
|
50047
50083
|
};
|
|
50084
|
+
break;
|
|
50048
50085
|
}
|
|
50086
|
+
parentIndex++;
|
|
50049
50087
|
}
|
|
50050
50088
|
}
|
|
50051
50089
|
return recordQueryPath;
|
|
@@ -50069,7 +50107,7 @@
|
|
|
50069
50107
|
? sectionPath
|
|
50070
50108
|
: sectionPath === ''
|
|
50071
50109
|
? path
|
|
50072
|
-
: `${sectionPath}
|
|
50110
|
+
: `${sectionPath}#${path}`;
|
|
50073
50111
|
}
|
|
50074
50112
|
}
|
|
50075
50113
|
boundaryIndex = parentIndex;
|
|
@@ -50127,9 +50165,9 @@
|
|
|
50127
50165
|
const relationships = args
|
|
50128
50166
|
.map((arg) => arg.value)
|
|
50129
50167
|
.filter(isStringValueNode)
|
|
50130
|
-
.filter((valueNode) => valueNode.value ===
|
|
50131
|
-
valueNode.value ===
|
|
50132
|
-
valueNode.value ===
|
|
50168
|
+
.filter((valueNode) => valueNode.value === CHILD_RELATIONSHIP ||
|
|
50169
|
+
valueNode.value === PARENT_RELATIONSHIP ||
|
|
50170
|
+
valueNode.value === POLYMORPHIC_PARENT_RELATIONSHIP)
|
|
50133
50171
|
.map((relationshipNode) => relationshipNode.value);
|
|
50134
50172
|
if (relationships.length > 0) {
|
|
50135
50173
|
return relationships[0];
|
|
@@ -50186,8 +50224,8 @@
|
|
|
50186
50224
|
*/
|
|
50187
50225
|
function isParentRelationship(node) {
|
|
50188
50226
|
return (node &&
|
|
50189
|
-
(isRelationship(node,
|
|
50190
|
-
isRelationship(node,
|
|
50227
|
+
(isRelationship(node, PARENT_RELATIONSHIP) ||
|
|
50228
|
+
isRelationship(node, POLYMORPHIC_PARENT_RELATIONSHIP)));
|
|
50191
50229
|
}
|
|
50192
50230
|
/*
|
|
50193
50231
|
checks if the InlineFragment spans
|
|
@@ -51279,7 +51317,7 @@
|
|
|
51279
51317
|
},
|
|
51280
51318
|
value: {
|
|
51281
51319
|
kind: Kind$1.STRING,
|
|
51282
|
-
value:
|
|
51320
|
+
value: PARENT_RELATIONSHIP,
|
|
51283
51321
|
block: false,
|
|
51284
51322
|
},
|
|
51285
51323
|
},
|
|
@@ -51293,7 +51331,7 @@
|
|
|
51293
51331
|
// example 2 'ServiceAppointment' -> ['Owner']; 'Owner' -> ['User', 'Group']
|
|
51294
51332
|
const objectNodeInfoTree = {};
|
|
51295
51333
|
// save the field path to apiName map
|
|
51296
|
-
// example 1: 'ServiceAppointment' -> ['ServiceAppointment']; '
|
|
51334
|
+
// example 1: 'ServiceAppointment' -> ['ServiceAppointment']; 'ServiceAppointment#ccount' -> ['Account']; 'ServiceAppointment#Account#Owner' -> ['User']
|
|
51297
51335
|
const pathToObjectApiNamesMap = {};
|
|
51298
51336
|
let startNodes = new Set();
|
|
51299
51337
|
let totalNodes = new Set();
|
|
@@ -51308,11 +51346,11 @@
|
|
|
51308
51346
|
visit$1(originalAST, {
|
|
51309
51347
|
Argument: {
|
|
51310
51348
|
enter(node, key, parent, path, ancestors) {
|
|
51311
|
-
const
|
|
51312
|
-
if (!
|
|
51349
|
+
const { connection: recordConnectionNode, path: ancesterPath } = findNearestConnectionWithPath(ancestors);
|
|
51350
|
+
if (!recordConnectionNode || !ancesterPath)
|
|
51313
51351
|
return;
|
|
51314
|
-
if (!objectNodeInfoTree[
|
|
51315
|
-
objectNodeInfoTree[
|
|
51352
|
+
if (!objectNodeInfoTree[ancesterPath]) {
|
|
51353
|
+
objectNodeInfoTree[ancesterPath] = [];
|
|
51316
51354
|
}
|
|
51317
51355
|
switch (node.name.value) {
|
|
51318
51356
|
case 'orderBy':
|
|
@@ -51320,12 +51358,12 @@
|
|
|
51320
51358
|
if (node.value.kind !== 'ObjectValue') {
|
|
51321
51359
|
return;
|
|
51322
51360
|
}
|
|
51323
|
-
totalNodes.add(
|
|
51361
|
+
totalNodes.add(ancesterPath);
|
|
51324
51362
|
// 'childRelationship' node is not taken as the startNode of the 'NodeInfoTree' graph. The field scanning will construct the graph which lead here.
|
|
51325
|
-
if (isRecordQuery(
|
|
51326
|
-
startNodes.add(
|
|
51363
|
+
if (isRecordQuery(recordConnectionNode)) {
|
|
51364
|
+
startNodes.add(recordConnectionNode.name.value);
|
|
51327
51365
|
}
|
|
51328
|
-
growObjectFieldTree(objectNodeInfoTree,
|
|
51366
|
+
growObjectFieldTree(objectNodeInfoTree, ancesterPath, node.value, totalNodes, startNodes);
|
|
51329
51367
|
break;
|
|
51330
51368
|
case 'scope':
|
|
51331
51369
|
if (!isScopeArgumentNodeWithType(node, 'ASSIGNEDTOME', variables)) {
|
|
@@ -51340,17 +51378,16 @@
|
|
|
51340
51378
|
name: 'ServiceResources',
|
|
51341
51379
|
});
|
|
51342
51380
|
}
|
|
51343
|
-
if (objectNodeInfoTree['ServiceResources'] === undefined) {
|
|
51344
|
-
objectNodeInfoTree['ServiceResources'] = [
|
|
51345
|
-
|
|
51346
|
-
|
|
51347
|
-
|
|
51348
|
-
|
|
51349
|
-
|
|
51350
|
-
});
|
|
51381
|
+
if (objectNodeInfoTree['ServiceAppointment#ServiceResources'] === undefined) {
|
|
51382
|
+
objectNodeInfoTree['ServiceAppointment#ServiceResources'] = [
|
|
51383
|
+
{
|
|
51384
|
+
relation: 'parent',
|
|
51385
|
+
name: 'ServiceResource',
|
|
51386
|
+
},
|
|
51387
|
+
];
|
|
51351
51388
|
}
|
|
51352
|
-
if (objectNodeInfoTree['ServiceResource'] === undefined) {
|
|
51353
|
-
objectNodeInfoTree['ServiceResource'] = [];
|
|
51389
|
+
if (objectNodeInfoTree['ServiceAppointment#ServiceResources#ServiceResource'] === undefined) {
|
|
51390
|
+
objectNodeInfoTree['ServiceAppointment#ServiceResources#ServiceResource'] = [];
|
|
51354
51391
|
}
|
|
51355
51392
|
break;
|
|
51356
51393
|
default:
|
|
@@ -51364,7 +51401,7 @@
|
|
|
51364
51401
|
return;
|
|
51365
51402
|
if (!node.selectionSet)
|
|
51366
51403
|
return;
|
|
51367
|
-
const recordQueryField =
|
|
51404
|
+
const recordQueryField = findNearestConnection(ancestors);
|
|
51368
51405
|
//only injects fields for 'recordQuery' field. ignores the 'childRelationship' field since it will be traversed as the child of the 'recordQuery'
|
|
51369
51406
|
if (isRecordQuery(recordQueryField) && recordQueryField) {
|
|
51370
51407
|
totalNodes.add(recordQueryField.name.value);
|
|
@@ -51381,7 +51418,7 @@
|
|
|
51381
51418
|
visit$1(originalAST, {
|
|
51382
51419
|
Argument: {
|
|
51383
51420
|
leave(node, key, parent, path, ancestors) {
|
|
51384
|
-
const recordQueryField =
|
|
51421
|
+
const recordQueryField = findNearestConnection(ancestors);
|
|
51385
51422
|
if (!recordQueryField)
|
|
51386
51423
|
return;
|
|
51387
51424
|
const ancestorPath = findAncesterPath(ancestors);
|
|
@@ -51429,7 +51466,7 @@
|
|
|
51429
51466
|
case 'where': {
|
|
51430
51467
|
inlineFragmentSelections[ancestorPath] = [
|
|
51431
51468
|
...inlineFragmentSelections[ancestorPath],
|
|
51432
|
-
...injectFilter(node, idState, ancestorPath, objectInfos, pathToObjectApiNamesMap, draftFunctions, recordReferenceNode),
|
|
51469
|
+
...injectFilter(node, idState, ancestorPath, false, objectInfos, pathToObjectApiNamesMap, draftFunctions, recordReferenceNode),
|
|
51433
51470
|
];
|
|
51434
51471
|
break;
|
|
51435
51472
|
}
|
|
@@ -51445,7 +51482,7 @@
|
|
|
51445
51482
|
if (!node.selectionSet)
|
|
51446
51483
|
return;
|
|
51447
51484
|
// it could be 'recordQuery' or 'childRelationship'
|
|
51448
|
-
const recordQueryField =
|
|
51485
|
+
const recordQueryField = findNearestConnection(ancestors);
|
|
51449
51486
|
if (!recordQueryField)
|
|
51450
51487
|
return;
|
|
51451
51488
|
const ancestorPath = findAncesterPath(ancestors);
|
|
@@ -51457,7 +51494,7 @@
|
|
|
51457
51494
|
spanningSelections.push(selection);
|
|
51458
51495
|
}
|
|
51459
51496
|
}
|
|
51460
|
-
const injectedFields = injectFields(spanningSelections, node, ancestors, objectInfos, pathToObjectApiNamesMap);
|
|
51497
|
+
const injectedFields = injectFields(spanningSelections, node, ancestorPath, ancestors, objectInfos, pathToObjectApiNamesMap);
|
|
51461
51498
|
const mergedInjectedFields = mergeSelectionNodes$1(inlineFragmentSelections[ancestorPath], injectedFields);
|
|
51462
51499
|
inlineFragmentSelections[ancestorPath] = mergedInjectedFields;
|
|
51463
51500
|
},
|
|
@@ -51470,7 +51507,7 @@
|
|
|
51470
51507
|
// removes 'ServicesResources' query field node if 'assignedtome' scope shows up
|
|
51471
51508
|
if (assignedtomeQueryFieldNode !== undefined &&
|
|
51472
51509
|
node.name.value === 'ServiceResources') {
|
|
51473
|
-
const serviceResourcesAncestor =
|
|
51510
|
+
const serviceResourcesAncestor = findNearestConnection(ancestors);
|
|
51474
51511
|
if (serviceResourcesAncestor === assignedtomeQueryFieldNode) {
|
|
51475
51512
|
return null;
|
|
51476
51513
|
}
|
|
@@ -51479,7 +51516,7 @@
|
|
|
51479
51516
|
return;
|
|
51480
51517
|
if (!node.selectionSet)
|
|
51481
51518
|
return;
|
|
51482
|
-
const recordQueryField =
|
|
51519
|
+
const recordQueryField = findNearestConnection(ancestors);
|
|
51483
51520
|
if (!recordQueryField)
|
|
51484
51521
|
return;
|
|
51485
51522
|
const ancestorPath = findAncesterPath(ancestors);
|
|
@@ -51682,15 +51719,16 @@
|
|
|
51682
51719
|
}
|
|
51683
51720
|
// example: 'Account'
|
|
51684
51721
|
const childNode = objectFieldNode.name.value;
|
|
51722
|
+
const childNodepath = `${parentNode}#${childNode}`;
|
|
51685
51723
|
if (!tree[parentNode].some((child) => child.name === childNode)) {
|
|
51686
51724
|
tree[parentNode].push({
|
|
51687
51725
|
relation: 'parent',
|
|
51688
51726
|
name: childNode,
|
|
51689
51727
|
});
|
|
51690
|
-
totalNodes.add(
|
|
51728
|
+
totalNodes.add(childNodepath);
|
|
51691
51729
|
}
|
|
51692
51730
|
// recursively go to deeper level of filter.
|
|
51693
|
-
growObjectFieldTree(tree,
|
|
51731
|
+
growObjectFieldTree(tree, childNodepath, objectFieldNode.value, totalNodes, startNodes);
|
|
51694
51732
|
}
|
|
51695
51733
|
}
|
|
51696
51734
|
}
|
|
@@ -51725,19 +51763,20 @@
|
|
|
51725
51763
|
}
|
|
51726
51764
|
if (!tree[parentSectionPath].some((field) => field.name === fieldName)) {
|
|
51727
51765
|
tree[parentSectionPath].push({
|
|
51728
|
-
relation: relationType ===
|
|
51729
|
-
relationType ===
|
|
51766
|
+
relation: relationType === PARENT_RELATIONSHIP ||
|
|
51767
|
+
relationType === POLYMORPHIC_PARENT_RELATIONSHIP
|
|
51730
51768
|
? 'parent'
|
|
51731
51769
|
: 'child',
|
|
51732
51770
|
name: fieldName,
|
|
51733
51771
|
});
|
|
51734
|
-
totalNodes.add(fieldName);
|
|
51772
|
+
totalNodes.add(`${parentSectionPath}#${fieldName}`);
|
|
51735
51773
|
}
|
|
51736
51774
|
if (entryNode.selectionSet && entryNode.selectionSet.selections) {
|
|
51737
51775
|
const childNodes = entryNode.selectionSet.selections.filter(isFieldOrInlineFragmentNode);
|
|
51738
51776
|
// recursively build the traversal tree
|
|
51739
51777
|
for (const child of childNodes) {
|
|
51740
|
-
|
|
51778
|
+
const path = `${parentSectionPath}#${fieldName}`;
|
|
51779
|
+
growFieldTree(tree, path, child, entryNode, totalNodes, startNodes);
|
|
51741
51780
|
}
|
|
51742
51781
|
}
|
|
51743
51782
|
}
|
|
@@ -51767,23 +51806,23 @@
|
|
|
51767
51806
|
}
|
|
51768
51807
|
if (!tree[parentSectionPath].some((field) => field.name === conditionName)) {
|
|
51769
51808
|
tree[parentSectionPath].push({
|
|
51770
|
-
relation: relationType ===
|
|
51771
|
-
relationType ===
|
|
51809
|
+
relation: relationType === PARENT_RELATIONSHIP ||
|
|
51810
|
+
relationType === POLYMORPHIC_PARENT_RELATIONSHIP
|
|
51772
51811
|
? 'parent'
|
|
51773
51812
|
: 'child',
|
|
51774
51813
|
name: conditionName,
|
|
51775
51814
|
});
|
|
51776
|
-
|
|
51815
|
+
const path = `${parentSectionPath}#${conditionName}`;
|
|
51816
|
+
totalNodes.add(path);
|
|
51777
51817
|
}
|
|
51778
51818
|
}
|
|
51779
51819
|
}
|
|
51780
51820
|
// dive deep immediately for 'InlineFragment'
|
|
51781
51821
|
const childNodes = entryNode.selectionSet.selections.filter(isFieldOrInlineFragmentNode);
|
|
51822
|
+
const path = `${parentSectionPath}${entryNode.typeCondition ? '#' + entryNode.typeCondition.name.value : ''}`;
|
|
51782
51823
|
// Navigates into InLineFragment
|
|
51783
51824
|
for (const child of childNodes) {
|
|
51784
|
-
growFieldTree(tree, entryNode
|
|
51785
|
-
? entryNode.typeCondition.name.value
|
|
51786
|
-
: parentSectionPath, child, entryNode, totalNodes, startNodes);
|
|
51825
|
+
growFieldTree(tree, path, child, entryNode, totalNodes, startNodes);
|
|
51787
51826
|
}
|
|
51788
51827
|
}
|
|
51789
51828
|
}
|
|
@@ -51827,7 +51866,7 @@
|
|
|
51827
51866
|
}
|
|
51828
51867
|
const validObjectInfoNodes = [];
|
|
51829
51868
|
let updatedObjectInfoMap = {};
|
|
51830
|
-
// InlineFragment and polymorphic field support fits into this scenario pathToObjectApiNamesMap Entry: '
|
|
51869
|
+
// InlineFragment and polymorphic field support fits into this scenario pathToObjectApiNamesMap Entry: 'ServiceAppointment#Owner' -> ['User', 'Group']; ServiceAppointment#Owner#User' -> ['User']
|
|
51831
51870
|
if (objectInfoApiNames.length > 0 &&
|
|
51832
51871
|
nodesAtSameLevel.length > 0 &&
|
|
51833
51872
|
objectInfoApiNames.includes(nodesAtSameLevel[0].name)) {
|
|
@@ -51839,7 +51878,7 @@
|
|
|
51839
51878
|
// eslint-disable-next-line
|
|
51840
51879
|
throw new Error(`Condition ${field.name} does not exists for ${parentPath}`);
|
|
51841
51880
|
}
|
|
51842
|
-
const path = `${parentPath}
|
|
51881
|
+
const path = `${parentPath}#${field.name}`;
|
|
51843
51882
|
pathToObjectApiNamesMap[path] = [field.name];
|
|
51844
51883
|
}
|
|
51845
51884
|
validObjectInfoNodes.push(...nodesAtSameLevel);
|
|
@@ -51855,7 +51894,7 @@
|
|
|
51855
51894
|
let apiNames = [];
|
|
51856
51895
|
for (const nodeInfo of nodesAtSameLevel) {
|
|
51857
51896
|
const field = nodeInfo.name;
|
|
51858
|
-
const path = `${parentPath}
|
|
51897
|
+
const path = `${parentPath}#${field}`;
|
|
51859
51898
|
// Handle 'parentRelationship'
|
|
51860
51899
|
if (nodeInfo.relation === 'parent') {
|
|
51861
51900
|
const relationshipId = referenceIdFieldForRelationship(field);
|
|
@@ -51873,12 +51912,12 @@
|
|
|
51873
51912
|
}
|
|
51874
51913
|
}
|
|
51875
51914
|
// This is a polymorphic field
|
|
51876
|
-
if (fieldDefinition.referenceToInfos.length > 1 && objectInfotree[
|
|
51915
|
+
if (fieldDefinition.referenceToInfos.length > 1 && objectInfotree[path]) {
|
|
51877
51916
|
// Fields needs to expand and heterogenous entity ObjectInfo needs to be fetched
|
|
51878
|
-
const referencedNodeInfos = objectInfotree[
|
|
51917
|
+
const referencedNodeInfos = objectInfotree[path];
|
|
51879
51918
|
const requestedApiNames = referencedNodeInfos.map((referenceNodeInfo) => referenceNodeInfo.name);
|
|
51880
51919
|
// Fetches requested ObjectInfo only. Some entity's relation field could define more than 6 references. Only references show up in query need to be handled.
|
|
51881
|
-
if (requestedApiNames.length > 0 && objectInfotree[
|
|
51920
|
+
if (requestedApiNames.length > 0 && objectInfotree[path]) {
|
|
51882
51921
|
fieldDefinition.referenceToInfos
|
|
51883
51922
|
.filter((referenceToInfo) => requestedApiNames.includes(referenceToInfo.apiName))
|
|
51884
51923
|
.forEach((ref) => {
|
|
@@ -51938,8 +51977,8 @@
|
|
|
51938
51977
|
}
|
|
51939
51978
|
for (const nodeInfo of validObjectInfoNodes) {
|
|
51940
51979
|
const field = nodeInfo.name;
|
|
51941
|
-
const
|
|
51942
|
-
const
|
|
51980
|
+
const path = `${parentPath}#${field}`;
|
|
51981
|
+
const subLevelFields = objectInfotree[path];
|
|
51943
51982
|
if (subLevelFields && subLevelFields.length > 0) {
|
|
51944
51983
|
const subObjectInfos = await fetchObjectInfos(objectInfotree, pathToObjectApiNamesMap, updatedObjectInfoMap, subLevelFields, path, objectInfoService);
|
|
51945
51984
|
updatedObjectInfoMap = { ...updatedObjectInfoMap, ...subObjectInfos };
|
|
@@ -51956,27 +51995,29 @@
|
|
|
51956
51995
|
* 'path' and 'queryNode' is 1 level above the 'filterNode'
|
|
51957
51996
|
* @param filterNode filter node which needs to be injected. For example, 'State' ObjectFieldNode within filter 'where: { State: { eq: "Nova Scotia" }}'
|
|
51958
51997
|
* @param idState ID state will be updated to determine if the ID fields in AST need to be swapped. The swapping happens later.
|
|
51959
|
-
* @param
|
|
51998
|
+
* @param parentPath path to the current filterNode's parent. For example, path could be 'ServiceApointment' when filterNode is 'State'. If the path does not exist in 'pathToObjectApiNamesMap', parent node is not an field of relationship or recordQuery
|
|
51999
|
+
* @param isParentPolymorphic true if parent points to a polymorphic field.
|
|
51960
52000
|
* @param queryNode referece FieldNode which provides the information if 'filterNode' exist in it nor not.
|
|
51961
52001
|
* @param objectInfos ObjectInfo map used in injection. If ObjectInfo misses or field does not exist in ObjectInfo, the error will be thrown
|
|
51962
52002
|
* @param pathToObjectApiNamesMap map used to locate the ObjectInfo. The key is path to a field, value is the ObjectInfo's apiName array. In the case of polymorphic fields, the apiName array have 2 or more elements. For example, 'ServiceAppointment' -> ['ServiceAppointment']; 'ServiceAppointment_Account' -> ['Account'], 'ServiceAppointment_Owner' -> ['User', 'Group'].
|
|
51963
52003
|
* @param draftFunctions functions for working with record ids that may be draft-created ids
|
|
51964
52004
|
* @returns an array of nodes with injected fields
|
|
51965
52005
|
*/
|
|
51966
|
-
function injectFilter(filterNode, idState,
|
|
52006
|
+
function injectFilter(filterNode, idState, parentPath, isParentPolymorphic, objectInfos, pathToObjectApiNamesMap, draftFunctions, queryNode) {
|
|
51967
52007
|
const injectedSelections = [];
|
|
52008
|
+
let isPolymorphicField = false;
|
|
51968
52009
|
switch (filterNode.kind) {
|
|
51969
52010
|
case Kind$1.ARGUMENT:
|
|
51970
52011
|
if (filterNode.value.kind !== 'ObjectValue')
|
|
51971
52012
|
return [];
|
|
51972
52013
|
filterNode.value.fields.forEach((objectFieldNode) => {
|
|
51973
|
-
let subResults = injectFilter(objectFieldNode, idState,
|
|
52014
|
+
let subResults = injectFilter(objectFieldNode, idState, parentPath, isParentPolymorphic, objectInfos, pathToObjectApiNamesMap, draftFunctions, queryNode);
|
|
51974
52015
|
for (const subResult of subResults) {
|
|
51975
52016
|
mergeOrAddToGroup(injectedSelections, subResult);
|
|
51976
52017
|
}
|
|
51977
52018
|
// multiple Ids might need to be swapped. remember their paths for faster write.
|
|
51978
52019
|
if (idState.swapNeeded) {
|
|
51979
|
-
idState.paths.push(
|
|
52020
|
+
idState.paths.push(parentPath);
|
|
51980
52021
|
}
|
|
51981
52022
|
});
|
|
51982
52023
|
return injectedSelections;
|
|
@@ -51985,7 +52026,7 @@
|
|
|
51985
52026
|
case Kind$1.LIST: {
|
|
51986
52027
|
filterNode.value.values.filter(isObjectValueNode).forEach((objectValueNode) => {
|
|
51987
52028
|
objectValueNode.fields.forEach((objectFieldNode) => {
|
|
51988
|
-
const subResults = injectFilter(objectFieldNode, idState,
|
|
52029
|
+
const subResults = injectFilter(objectFieldNode, idState, parentPath, isParentPolymorphic, objectInfos, pathToObjectApiNamesMap, draftFunctions, queryNode);
|
|
51989
52030
|
for (const subResult of subResults) {
|
|
51990
52031
|
mergeOrAddToGroup(injectedSelections, subResult);
|
|
51991
52032
|
}
|
|
@@ -51996,7 +52037,7 @@
|
|
|
51996
52037
|
case Kind$1.OBJECT: {
|
|
51997
52038
|
if (filterNode.name.value === 'not') {
|
|
51998
52039
|
filterNode.value.fields.forEach((objectFieldNode) => {
|
|
51999
|
-
const subResults = injectFilter(objectFieldNode, idState,
|
|
52040
|
+
const subResults = injectFilter(objectFieldNode, idState, parentPath, isParentPolymorphic, objectInfos, pathToObjectApiNamesMap, draftFunctions, queryNode);
|
|
52000
52041
|
for (const subResult of subResults) {
|
|
52001
52042
|
mergeOrAddToGroup(injectedSelections, subResult);
|
|
52002
52043
|
}
|
|
@@ -52006,15 +52047,15 @@
|
|
|
52006
52047
|
let apiNames = [];
|
|
52007
52048
|
let isScalarField = false;
|
|
52008
52049
|
//It is possible that this is a polymorphic field
|
|
52009
|
-
apiNames = pathToObjectApiNamesMap[
|
|
52010
|
-
// example: path: '
|
|
52050
|
+
apiNames = pathToObjectApiNamesMap[parentPath];
|
|
52051
|
+
// example: path: 'ServiceAppointment#LastModifiedDate'; filterNode: '{eq: {literal: LAST_WEEK}}'. queryNode: 'LastModifedDate { value}' FilterNode's parent has been verifed as a valid node
|
|
52011
52052
|
if (apiNames === undefined) {
|
|
52012
52053
|
isScalarField = true;
|
|
52013
52054
|
}
|
|
52014
52055
|
else {
|
|
52015
52056
|
if (apiNames.some((apiName) => objectInfos[apiName] === undefined)) {
|
|
52016
52057
|
// eslint-disable-next-line
|
|
52017
|
-
throw new Error(`ObjectInfo is missing for ${
|
|
52058
|
+
throw new Error(`ObjectInfo is missing for ${parentPath}`);
|
|
52018
52059
|
}
|
|
52019
52060
|
}
|
|
52020
52061
|
if (isScalarField) {
|
|
@@ -52038,21 +52079,17 @@
|
|
|
52038
52079
|
let isSpanning = false;
|
|
52039
52080
|
// if true, current node is a polymorphic concrete type node. For example, field node `User` under `Owner`
|
|
52040
52081
|
let isInlineFragment = false;
|
|
52041
|
-
let isPolymorphicField = false;
|
|
52042
52082
|
let isTypeNameExisting = false;
|
|
52043
52083
|
let curPath;
|
|
52044
52084
|
let fieldName = filterNode.name.value;
|
|
52045
|
-
curPath = `${
|
|
52085
|
+
curPath = `${parentPath}#${fieldName}`;
|
|
52046
52086
|
if (pathToObjectApiNamesMap[curPath] &&
|
|
52047
52087
|
pathToObjectApiNamesMap[curPath].length > 0) {
|
|
52048
52088
|
isSpanning = true;
|
|
52049
|
-
|
|
52050
|
-
|
|
52051
|
-
|
|
52052
|
-
|
|
52053
|
-
isInlineFragment = isPolymorphicFieldPath(path, pathToObjectApiNamesMap);
|
|
52054
|
-
}
|
|
52055
|
-
isPolymorphicField = isPolymorphicFieldPath(curPath, pathToObjectApiNamesMap);
|
|
52089
|
+
isInlineFragment =
|
|
52090
|
+
isParentPolymorphic &&
|
|
52091
|
+
pathToObjectApiNamesMap[curPath].length === 1;
|
|
52092
|
+
isPolymorphicField = isPolymorphicFieldPath(curPath, pathToObjectApiNamesMap, objectInfos);
|
|
52056
52093
|
}
|
|
52057
52094
|
// When filter node is at InLineFragment Level(a concrete entity of polymorphic field), query node is one level up. For example, ObjectFieldNode is ...{User:{...}}, queryNode is Owner:[User]
|
|
52058
52095
|
if (isInlineFragment) {
|
|
@@ -52098,7 +52135,7 @@
|
|
|
52098
52135
|
}
|
|
52099
52136
|
const objectInfoName = pathToObjectApiNamesMap[curPath] !== undefined
|
|
52100
52137
|
? pathToObjectApiNamesMap[curPath][0]
|
|
52101
|
-
: pathToObjectApiNamesMap[
|
|
52138
|
+
: pathToObjectApiNamesMap[parentPath][0];
|
|
52102
52139
|
const isIdField = isFieldAnIdField(filterNode.name.value, objectInfos[objectInfoName]);
|
|
52103
52140
|
if (!isIdField) {
|
|
52104
52141
|
let subSelectionNodes = [];
|
|
@@ -52110,7 +52147,7 @@
|
|
|
52110
52147
|
updateIDInfo(subFieldNode, idState, draftFunctions);
|
|
52111
52148
|
}
|
|
52112
52149
|
// try injecting the fields within predicate no matter it has relation or not.
|
|
52113
|
-
let subResults = injectFilter(subFieldNode, idState, curPath, objectInfos, pathToObjectApiNamesMap, draftFunctions, existingFields ? existingFields[0] : undefined);
|
|
52150
|
+
let subResults = injectFilter(subFieldNode, idState, curPath, isPolymorphicField, objectInfos, pathToObjectApiNamesMap, draftFunctions, existingFields ? existingFields[0] : undefined);
|
|
52114
52151
|
subSelectionNodes = subSelectionNodes.concat(subResults);
|
|
52115
52152
|
});
|
|
52116
52153
|
if (!subFieldsHasId) {
|
|
@@ -52271,15 +52308,43 @@
|
|
|
52271
52308
|
}
|
|
52272
52309
|
group.push(element);
|
|
52273
52310
|
}
|
|
52274
|
-
// checks if the path points to a polymorphic field.
|
|
52275
|
-
//
|
|
52276
|
-
//
|
|
52277
|
-
|
|
52278
|
-
|
|
52279
|
-
|
|
52280
|
-
|
|
52281
|
-
|
|
52282
|
-
|
|
52311
|
+
// checks if the path points to a polymorphic field. For example, for the below `pathToObjectApiNamesMap`
|
|
52312
|
+
// {
|
|
52313
|
+
// 'ServiceAppointment' -> ['ServiceAppointment']
|
|
52314
|
+
// 'ServiceAppointment#Owner' --> ['User'],
|
|
52315
|
+
// 'ServiceAppointment#Owner#User' --> ['User']
|
|
52316
|
+
// }
|
|
52317
|
+
// path `ServiceAppointment#Owner` points to a polymorphic field, but path `ServiceAppointment#Owner#User` does not.
|
|
52318
|
+
function isPolymorphicFieldPath(path, pathToObjectApiNamesMap, objectInfos) {
|
|
52319
|
+
const lastSegmentIndex = path.lastIndexOf('#');
|
|
52320
|
+
if (lastSegmentIndex < 0) {
|
|
52321
|
+
return false;
|
|
52322
|
+
}
|
|
52323
|
+
const lastSegment = path.slice(lastSegmentIndex + 1);
|
|
52324
|
+
const parentApiPath = path.slice(0, lastSegmentIndex);
|
|
52325
|
+
if (pathToObjectApiNamesMap[parentApiPath] === undefined) {
|
|
52326
|
+
return false;
|
|
52327
|
+
}
|
|
52328
|
+
const parentObjectApiNames = pathToObjectApiNamesMap[parentApiPath];
|
|
52329
|
+
// If the last segment is a Polymorphic field, its immediate parent is a concrete object entity, which has 1 objectApiName mapped to the parent path in `pathToObjectApiNamesMap`.
|
|
52330
|
+
// For example, we like to check if `ServiceAppointment#Owner` path is polymorphic. The last segment is `Owner` and its parent `ServiceAppointment` has one element (which is also `ServiceAppointment`) array as its value.
|
|
52331
|
+
// Below are the entries in `pathToObjectApiNamesMap`
|
|
52332
|
+
// {
|
|
52333
|
+
// `ServiceAppointmen`t: [`ServiceAppointment`],
|
|
52334
|
+
// `ServiceAppointment#Owner`: [`User`, `Group`],
|
|
52335
|
+
// `ServiceAppointment#Owner#User`: [`User`],
|
|
52336
|
+
// `ServiceAppointment#Owner#Group`: [`Group`],
|
|
52337
|
+
// }
|
|
52338
|
+
if (parentObjectApiNames.length !== 1) {
|
|
52339
|
+
return false;
|
|
52340
|
+
}
|
|
52341
|
+
const parentObjectInfo = objectInfos[parentObjectApiNames[0]];
|
|
52342
|
+
const relationshipField = referenceIdFieldForRelationship(lastSegment);
|
|
52343
|
+
let fieldDefinition = parentObjectInfo.fields[relationshipField];
|
|
52344
|
+
if (fieldDefinition === undefined) {
|
|
52345
|
+
return false;
|
|
52346
|
+
}
|
|
52347
|
+
return fieldDefinition.polymorphicForeignKey;
|
|
52283
52348
|
}
|
|
52284
52349
|
function isFieldAnIdField(fieldName, objectInfo) {
|
|
52285
52350
|
if (fieldName === 'Id')
|
|
@@ -52333,10 +52398,10 @@
|
|
|
52333
52398
|
* @param parentNode parent node of param 1
|
|
52334
52399
|
* @param ancestors ancester of param 1
|
|
52335
52400
|
* @param objectInfos ObjectInfo map used in injection. If ObjectInfo misses or field does not exist in ObjectInfo, the error will be thrown
|
|
52336
|
-
* @param pathToObjectApiNamesMap map used to locate the ObjectInfo. The key is path to a field, value is the ObjectInfo's apiName array. In the case of polymorphic fields, the apiName array have 2 or more elements. For example, 'ServiceAppointment' -> ['ServiceAppointment']; '
|
|
52401
|
+
* @param pathToObjectApiNamesMap map used to locate the ObjectInfo. The key is path to a field, value is the ObjectInfo's apiName array. In the case of polymorphic fields, the apiName array have 2 or more elements. For example, 'ServiceAppointment' -> ['ServiceAppointment']; 'ServiceAppointment#Account' -> ['Account'], 'ServiceAppointment#Owner' -> ['User', 'Group'].
|
|
52337
52402
|
* @return injected SelectionNodes used to construct the InlineFragment.
|
|
52338
52403
|
*/
|
|
52339
|
-
function injectFields(selections, parentNode, ancestors, objectInfos, pathToObjectApiNamesMap) {
|
|
52404
|
+
function injectFields(selections, parentNode, parentPath, ancestors, objectInfos, pathToObjectApiNamesMap) {
|
|
52340
52405
|
/**
|
|
52341
52406
|
* 1 parentship can return 2 FieldNode which need to be flattened
|
|
52342
52407
|
* Concact: { ** Contact { ** ContactId {
|
|
@@ -52354,6 +52419,10 @@
|
|
|
52354
52419
|
if (!selection.selectionSet) {
|
|
52355
52420
|
return selection;
|
|
52356
52421
|
}
|
|
52422
|
+
const segment = isFieldNode(selection)
|
|
52423
|
+
? selection.name.value
|
|
52424
|
+
: selection.typeCondition.name.value;
|
|
52425
|
+
const curPath = `${parentPath}#${segment}`;
|
|
52357
52426
|
const spanningSubSelections = [];
|
|
52358
52427
|
for (const subSelection of selection.selectionSet.selections) {
|
|
52359
52428
|
if (isFieldSpanning(subSelection, selection)) {
|
|
@@ -52361,7 +52430,7 @@
|
|
|
52361
52430
|
}
|
|
52362
52431
|
}
|
|
52363
52432
|
// Handles multiple level field injection like 'ServiceAppointment' --> 'Account' --> 'Owner'
|
|
52364
|
-
const subInjectedSelections = injectFields(spanningSubSelections, selection, ancestors, objectInfos, pathToObjectApiNamesMap);
|
|
52433
|
+
const subInjectedSelections = injectFields(spanningSubSelections, selection, curPath, ancestors, objectInfos, pathToObjectApiNamesMap);
|
|
52365
52434
|
if (!selection.selectionSet) {
|
|
52366
52435
|
return selection;
|
|
52367
52436
|
}
|
|
@@ -52404,7 +52473,7 @@
|
|
|
52404
52473
|
}
|
|
52405
52474
|
}
|
|
52406
52475
|
// For polymorphic fields, the Id field is excluded.
|
|
52407
|
-
const excludeId =
|
|
52476
|
+
const excludeId = isPolymorphicFieldPath(curPath, pathToObjectApiNamesMap, objectInfos);
|
|
52408
52477
|
const idSelection = [];
|
|
52409
52478
|
if (!excludeId && !hasIdAlready) {
|
|
52410
52479
|
idSelection.push({
|
|
@@ -52415,8 +52484,8 @@
|
|
|
52415
52484
|
},
|
|
52416
52485
|
});
|
|
52417
52486
|
}
|
|
52418
|
-
// Inject '__typename' for
|
|
52419
|
-
// please reference 'removeSyntheticFields'.
|
|
52487
|
+
// Inject '__typename' for InlineFragment. '__typename' field acts as a reference to concrete type of a polymorphic field or a standard field in the returned GQL response, which equals to
|
|
52488
|
+
// `typedCondition` of the InlineFragment in the query AST. It is used to match JSON response with AST node. For more detail, please reference 'removeSyntheticFields'.
|
|
52420
52489
|
if (isInlineFragmentNode(selection) &&
|
|
52421
52490
|
!selection.selectionSet.selections.find((selection) => isFieldNode(selection) && selection.name.value === '__typename')) {
|
|
52422
52491
|
idSelection.push({
|
|
@@ -52450,7 +52519,7 @@
|
|
|
52450
52519
|
if (isFieldNode(parentNode) && parentNode.selectionSet && parentNode.name.value === 'node') {
|
|
52451
52520
|
if (parentNode.selectionSet.selections
|
|
52452
52521
|
.filter(isFieldOrInlineFragmentNode)
|
|
52453
|
-
.some((selectionNode) => isRelationship(selectionNode,
|
|
52522
|
+
.some((selectionNode) => isRelationship(selectionNode, CHILD_RELATIONSHIP))) {
|
|
52454
52523
|
if (!parentNode.selectionSet.selections
|
|
52455
52524
|
.filter(isFieldNode)
|
|
52456
52525
|
.some((sibling) => sibling.name.value === 'Id')) {
|
|
@@ -52469,7 +52538,7 @@
|
|
|
52469
52538
|
if (parentInfo.parentIndex >= 0) {
|
|
52470
52539
|
// example node { TimeSheetEntries { edges { node { Id }}}}
|
|
52471
52540
|
const parent = parentInfo.node;
|
|
52472
|
-
if (isRelationship(parent,
|
|
52541
|
+
if (isRelationship(parent, CHILD_RELATIONSHIP)) {
|
|
52473
52542
|
const unVisitedAncestors = ancestors.slice(0, parentInfo.parentIndex);
|
|
52474
52543
|
// path : "TimeSheet"
|
|
52475
52544
|
const grandParentPath = findAncesterPath(unVisitedAncestors);
|
|
@@ -52598,7 +52667,7 @@
|
|
|
52598
52667
|
},
|
|
52599
52668
|
value: {
|
|
52600
52669
|
kind: 'StringValue',
|
|
52601
|
-
value:
|
|
52670
|
+
value: CHILD_RELATIONSHIP,
|
|
52602
52671
|
block: false,
|
|
52603
52672
|
},
|
|
52604
52673
|
},
|
|
@@ -52690,7 +52759,7 @@
|
|
|
52690
52759
|
},
|
|
52691
52760
|
value: {
|
|
52692
52761
|
kind: 'StringValue',
|
|
52693
|
-
value:
|
|
52762
|
+
value: PARENT_RELATIONSHIP,
|
|
52694
52763
|
block: false,
|
|
52695
52764
|
},
|
|
52696
52765
|
},
|
|
@@ -52827,7 +52896,9 @@
|
|
|
52827
52896
|
jsonOutput[fieldName] = null;
|
|
52828
52897
|
return;
|
|
52829
52898
|
}
|
|
52830
|
-
jsonOutput[fieldName]
|
|
52899
|
+
if (jsonOutput[fieldName] === undefined) {
|
|
52900
|
+
jsonOutput[fieldName] = {};
|
|
52901
|
+
}
|
|
52831
52902
|
createUserJsonOutput(selection, jsonInput[fieldName], jsonOutput[fieldName]);
|
|
52832
52903
|
}
|
|
52833
52904
|
else {
|
|
@@ -58717,7 +58788,7 @@
|
|
|
58717
58788
|
id: '@salesforce/lds-network-adapter',
|
|
58718
58789
|
instrument: instrument$2,
|
|
58719
58790
|
});
|
|
58720
|
-
// version: 1.242.
|
|
58791
|
+
// version: 1.242.1-58f8f4bb1
|
|
58721
58792
|
|
|
58722
58793
|
const { create: create$3, keys: keys$3 } = Object;
|
|
58723
58794
|
const { stringify: stringify$1, parse: parse$1 } = JSON;
|
|
@@ -77185,7 +77256,7 @@
|
|
|
77185
77256
|
configuration: { ...configurationForGraphQLAdapters$1 },
|
|
77186
77257
|
instrument: instrument$1,
|
|
77187
77258
|
});
|
|
77188
|
-
// version: 1.242.
|
|
77259
|
+
// version: 1.242.1-5a8ee3f4c
|
|
77189
77260
|
|
|
77190
77261
|
// On core the unstable adapters are re-exported with different names,
|
|
77191
77262
|
// we want to match them here.
|
|
@@ -79434,7 +79505,7 @@
|
|
|
79434
79505
|
unstable_graphQL_imperative = createImperativeAdapter(luvio, createInstrumentedAdapter(ldsAdapter, adapterMetadata), adapterMetadata);
|
|
79435
79506
|
graphQLImperative = ldsAdapter;
|
|
79436
79507
|
});
|
|
79437
|
-
// version: 1.242.
|
|
79508
|
+
// version: 1.242.1-5a8ee3f4c
|
|
79438
79509
|
|
|
79439
79510
|
var gqlApi = /*#__PURE__*/Object.freeze({
|
|
79440
79511
|
__proto__: null,
|
|
@@ -80132,7 +80203,7 @@
|
|
|
80132
80203
|
function register(r) {
|
|
80133
80204
|
callbacks$1.forEach((callback) => callback(r));
|
|
80134
80205
|
}
|
|
80135
|
-
// version: 1.242.
|
|
80206
|
+
// version: 1.242.1-58f8f4bb1
|
|
80136
80207
|
|
|
80137
80208
|
/**
|
|
80138
80209
|
* Returns true if the value acts like a Promise, i.e. has a "then" function,
|
|
@@ -84793,4 +84864,4 @@
|
|
|
84793
84864
|
exports.subscribeToAdapter = subscribeToAdapter;
|
|
84794
84865
|
|
|
84795
84866
|
}));
|
|
84796
|
-
// version: 1.242.
|
|
84867
|
+
// version: 1.242.1-58f8f4bb1
|