@salesforce/lds-runtime-mobile 1.428.0-dev2 → 1.428.0-dev21
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.
- package/dist/main.js +703 -285
- package/dist/types/drafts/AbstractResourceRequestActionHandler.d.ts +23 -0
- package/dist/types/drafts/IdempotentWrite.d.ts +1 -0
- package/dist/types/drafts/utils/error.d.ts +29 -0
- package/dist/types/instrumentation/metrics.d.ts +36 -0
- package/package.json +36 -36
- package/sfdc/main.js +703 -285
- package/sfdc/types/drafts/AbstractResourceRequestActionHandler.d.ts +23 -0
- package/sfdc/types/drafts/IdempotentWrite.d.ts +1 -0
- package/sfdc/types/drafts/utils/error.d.ts +29 -0
- package/sfdc/types/instrumentation/metrics.d.ts +36 -0
package/dist/main.js
CHANGED
|
@@ -19,8 +19,10 @@ import { withRegistration, register } from '@salesforce/lds-default-luvio';
|
|
|
19
19
|
import { setupInstrumentation, instrumentAdapter as instrumentAdapter$1, instrumentLuvio, setLdsAdaptersUiapiInstrumentation, setLdsNetworkAdapterInstrumentation } from '@salesforce/lds-instrumentation';
|
|
20
20
|
import { HttpStatusCode as HttpStatusCode$1, setBypassDeepFreeze, StoreKeySet, StringKeyInMemoryStore, Reader, serializeStructuredKey, deepFreeze as deepFreeze$1, emitAdapterEvent, ingestShape, coerceConfig as coerceConfig$1, typeCheckConfig as typeCheckConfig$h, createResourceParams as createResourceParams$h, StoreKeyMap, buildNetworkSnapshotCachePolicy as buildNetworkSnapshotCachePolicy$f, resolveLink, createCustomAdapterEventEmitter, isFileReference, Environment, Luvio, InMemoryStore } from '@luvio/engine';
|
|
21
21
|
import { isSupportedEntity, configuration, getObjectInfoAdapterFactory, RECORD_ID_PREFIX, RECORD_FIELDS_KEY_JUNCTION, isStoreKeyRecordViewEntity, extractRecordIdFromStoreKey, buildRecordRepKeyFromId, keyBuilderRecord, RecordRepresentationTTL, keyBuilderQuickActionExecutionRepresentation, ingestQuickActionExecutionRepresentation, getRecordId18 as getRecordId18$1, getRecordsAdapterFactory as getRecordsAdapterFactory$1, RecordRepresentationRepresentationType, ObjectInfoRepresentationType, getObjectInfosAdapterFactory, getObjectInfoDirectoryAdapterFactory, UiApiNamespace, RecordRepresentationType, RecordRepresentationVersion } from '@salesforce/lds-adapters-uiapi';
|
|
22
|
-
import
|
|
22
|
+
import draftQueueMaxRetryAttemptsGate from '@salesforce/gate/lmr.draft-queue-max-retry-attempts';
|
|
23
|
+
import preserveIdempotencyKeyOn400Gate from '@salesforce/gate/lds.preserve-idempotency-key-on-400-enabled';
|
|
23
24
|
import { getInstrumentation, idleDetector } from 'o11y/client';
|
|
25
|
+
import allowUpdatesForNonCachedRecords from '@salesforce/gate/lmr.allowUpdatesForNonCachedRecords';
|
|
24
26
|
import caseSensitiveUserId from '@salesforce/user/Id';
|
|
25
27
|
import { Kind as Kind$1, visit as visit$1, isObjectType, defaultFieldResolver, buildSchema, parse as parse$8, extendSchema, isScalarType, execute, print } from '@luvio/graphql-parser';
|
|
26
28
|
import graphqlRelationshipFieldsPerf from '@salesforce/gate/lds.graphqlRelationshipFieldsPerf';
|
|
@@ -2338,6 +2340,13 @@ function customActionHandler(executor, id, draftQueue) {
|
|
|
2338
2340
|
}
|
|
2339
2341
|
|
|
2340
2342
|
const DRAFT_SEGMENT = 'DRAFT';
|
|
2343
|
+
/**
|
|
2344
|
+
* Metadata key under which an action's upload retry-attempt count is persisted.
|
|
2345
|
+
* Lives in the action's durable `metadata` bag so the count survives app restarts
|
|
2346
|
+
* (the in-memory backoff interval resets on every startQueue()). Written by the
|
|
2347
|
+
* action handler on each retry and cleared when an action is manually retried.
|
|
2348
|
+
*/
|
|
2349
|
+
const DRAFT_ACTION_RETRY_COUNT_METADATA_KEY = 'retryCount';
|
|
2341
2350
|
class DurableDraftQueue {
|
|
2342
2351
|
getHandler(id) {
|
|
2343
2352
|
const handler = this.handlers[id];
|
|
@@ -2696,10 +2705,14 @@ class DurableDraftQueue {
|
|
|
2696
2705
|
if (!isDraftError(target)) {
|
|
2697
2706
|
throw Error(`Action ${actionId} is not in Error state`);
|
|
2698
2707
|
}
|
|
2708
|
+
// A manual retry is a fresh start: clear the persisted upload retry-attempt
|
|
2709
|
+
// count so the action doesn't immediately re-cap after a single failure.
|
|
2710
|
+
const { [DRAFT_ACTION_RETRY_COUNT_METADATA_KEY]: _retryCount, ...metadataWithoutRetryCount } = target.metadata || {};
|
|
2699
2711
|
let pendingAction = {
|
|
2700
2712
|
...target,
|
|
2701
2713
|
status: DraftActionStatus.Pending,
|
|
2702
2714
|
error: undefined,
|
|
2715
|
+
metadata: metadataWithoutRetryCount,
|
|
2703
2716
|
};
|
|
2704
2717
|
await this.draftStore.writeAction(pendingAction);
|
|
2705
2718
|
await this.notifyChangedListeners({
|
|
@@ -42127,6 +42140,356 @@ function makeEnvironmentUiApiRecordDraftAware(luvio, options, env) {
|
|
|
42127
42140
|
return create$3(adapterSpecificEnvironments, {});
|
|
42128
42141
|
}
|
|
42129
42142
|
|
|
42143
|
+
/**
|
|
42144
|
+
* This function takes an unknown error and normalizes it to an Error object
|
|
42145
|
+
*/
|
|
42146
|
+
function normalizeError$1(error) {
|
|
42147
|
+
if (typeof error === 'object' && error instanceof Error) {
|
|
42148
|
+
return error;
|
|
42149
|
+
}
|
|
42150
|
+
else if (typeof error === 'string') {
|
|
42151
|
+
return new Error(error);
|
|
42152
|
+
}
|
|
42153
|
+
return new Error(stringify$5(error));
|
|
42154
|
+
}
|
|
42155
|
+
/**
|
|
42156
|
+
* Maximum number of times an action's upload will be retried before the action is
|
|
42157
|
+
* transitioned to Error and surfaced to the consumer. Caps the otherwise-unbounded
|
|
42158
|
+
* retry loop that can wedge the single-worker draft queue when an upload fails
|
|
42159
|
+
* deterministically on every dispatch. Only enforced when the
|
|
42160
|
+
* `lmr.draft-queue-max-retry-attempts` gate is open.
|
|
42161
|
+
*/
|
|
42162
|
+
const MAX_RETRY_ATTEMPTS = 5;
|
|
42163
|
+
const MAX_RETRY_ERROR_CODE = 'MAX_RETRY_ATTEMPTS_EXCEEDED';
|
|
42164
|
+
function isFetchResponse(failure) {
|
|
42165
|
+
// The union is exactly FetchResponse | Error, so "not an Error" is the FetchResponse.
|
|
42166
|
+
// This is safer than duck-typing on status/ok: a custom Error subclass that happens to
|
|
42167
|
+
// carry those properties would be misclassified by a structural check.
|
|
42168
|
+
return !(failure instanceof Error);
|
|
42169
|
+
}
|
|
42170
|
+
/**
|
|
42171
|
+
* Builds the FetchResponse-shaped error attached to an action that has exhausted its
|
|
42172
|
+
* upload retries. Shaped like a real network error response (status/statusText/ok/
|
|
42173
|
+
* headers/body) so downstream consumers (DraftManager, queue instrumentation) that
|
|
42174
|
+
* read `action.error.status`/`.body`/etc. behave consistently with a server error.
|
|
42175
|
+
*
|
|
42176
|
+
* The failure that caused the final attempt — a non-ok response (HTTP path) or a thrown
|
|
42177
|
+
* error (catch path) — is folded into the body so the surfaced error says WHAT failed,
|
|
42178
|
+
* not merely that the attempt cap was reached.
|
|
42179
|
+
*/
|
|
42180
|
+
function buildMaxRetryError(lastFailure) {
|
|
42181
|
+
const capMessage = `Draft action exceeded ${MAX_RETRY_ATTEMPTS} upload retry attempts`;
|
|
42182
|
+
if (isFetchResponse(lastFailure)) {
|
|
42183
|
+
// Preserve the server's own error detail (status + body) so the surfaced error
|
|
42184
|
+
// carries the last response that caused us to give up retrying.
|
|
42185
|
+
return {
|
|
42186
|
+
status: HttpStatusCode$1.ServerError,
|
|
42187
|
+
statusText: capMessage,
|
|
42188
|
+
ok: false,
|
|
42189
|
+
headers: {},
|
|
42190
|
+
body: {
|
|
42191
|
+
errorCode: MAX_RETRY_ERROR_CODE,
|
|
42192
|
+
message: `${capMessage}. Last response: status=${lastFailure.status} ${lastFailure.statusText}`,
|
|
42193
|
+
lastResponseStatus: lastFailure.status,
|
|
42194
|
+
lastResponseBody: lastFailure.body,
|
|
42195
|
+
},
|
|
42196
|
+
};
|
|
42197
|
+
}
|
|
42198
|
+
return {
|
|
42199
|
+
status: HttpStatusCode$1.ServerError,
|
|
42200
|
+
statusText: capMessage,
|
|
42201
|
+
ok: false,
|
|
42202
|
+
headers: {},
|
|
42203
|
+
body: {
|
|
42204
|
+
errorCode: MAX_RETRY_ERROR_CODE,
|
|
42205
|
+
message: `${capMessage}. Last error: ${lastFailure.name}: ${lastFailure.message}`,
|
|
42206
|
+
lastErrorName: lastFailure.name,
|
|
42207
|
+
lastErrorMessage: lastFailure.message,
|
|
42208
|
+
},
|
|
42209
|
+
};
|
|
42210
|
+
}
|
|
42211
|
+
|
|
42212
|
+
function attachObserversToAdapterRequestContext(observers, adapterRequestContext) {
|
|
42213
|
+
if (adapterRequestContext === undefined) {
|
|
42214
|
+
return { eventObservers: observers };
|
|
42215
|
+
}
|
|
42216
|
+
if (adapterRequestContext.eventObservers === undefined) {
|
|
42217
|
+
return { ...adapterRequestContext, eventObservers: observers };
|
|
42218
|
+
}
|
|
42219
|
+
return {
|
|
42220
|
+
...adapterRequestContext,
|
|
42221
|
+
eventObservers: adapterRequestContext.eventObservers.concat(observers),
|
|
42222
|
+
};
|
|
42223
|
+
}
|
|
42224
|
+
/**
|
|
42225
|
+
* Use this method to sanitize the unknown error object when
|
|
42226
|
+
* we are unsure of the type of the error thrown
|
|
42227
|
+
*
|
|
42228
|
+
* @param err Unknown object to sanitize
|
|
42229
|
+
* @returns an instance of error
|
|
42230
|
+
*/
|
|
42231
|
+
function normalizeError(err) {
|
|
42232
|
+
if (err instanceof Error) {
|
|
42233
|
+
return err;
|
|
42234
|
+
}
|
|
42235
|
+
else if (typeof err === 'string') {
|
|
42236
|
+
return new Error(err);
|
|
42237
|
+
}
|
|
42238
|
+
return new Error(stringify$5(err));
|
|
42239
|
+
}
|
|
42240
|
+
|
|
42241
|
+
const O11Y_NAMESPACE_LDS_MOBILE = 'lds-mobile';
|
|
42242
|
+
// metrics
|
|
42243
|
+
/** GraphQL */
|
|
42244
|
+
const GRAPHQL_EVAL_ERROR = 'gql-eval-error';
|
|
42245
|
+
const GRAPHQL_EVAL_DB_READ_DURATION = 'gql-eval-db-read-duration';
|
|
42246
|
+
const GRAPHQL_EVAL_ROOT_QUERY_COUNT = 'gql-eval-root-query-count';
|
|
42247
|
+
const GRAPHQL_EVAL_TOTAL_QUERY_COUNT = 'gql-eval-total-query-count';
|
|
42248
|
+
const GRAPHQL_EVAL_MAX_CHILD_RELATIONSHIPS_COUNT = 'gql-eval-max-child-count';
|
|
42249
|
+
const GRAPHQL_EVAL_QUERY_RECORD_COUNT = 'gql-eval-query-record-count';
|
|
42250
|
+
const GRAPHQL_SNAPSHOT_REFRESH_UNDEFINED = 'gql-snapshot-refresh-undefined';
|
|
42251
|
+
/** Draft Queue */
|
|
42252
|
+
const DRAFT_QUEUE_STATE_STARTED = 'draft-queue-state-started';
|
|
42253
|
+
const DRAFT_QUEUE_STATE_ERROR = 'draft-queue-state-error';
|
|
42254
|
+
const DRAFT_QUEUE_STATE_WAITING = 'draft-queue-state-waiting';
|
|
42255
|
+
const DRAFT_QUEUE_STATE_STOPPED = 'draft-queue-state-stopped';
|
|
42256
|
+
const DRAFT_QUEUE_ACTION_ADDED = 'draft-queue-action-added';
|
|
42257
|
+
const DRAFT_QUEUE_ACTION_UPLOADING = 'draft-queue-action-uploading';
|
|
42258
|
+
const DRAFT_QUEUE_ACTION_COMPLETED = 'draft-queue-action-completed';
|
|
42259
|
+
const DRAFT_QUEUE_ACTION_DELETED = 'draft-queue-action-deleted';
|
|
42260
|
+
const DRAFT_QUEUE_ACTION_UPDATED = 'draft-queue-action-updated';
|
|
42261
|
+
const DRAFT_QUEUE_ACTION_FAILED = 'draft-queue-action-failed';
|
|
42262
|
+
const DRAFT_QUEUE_ACTION_UPLOAD_ERROR = 'draft-queue-action-upload-error';
|
|
42263
|
+
const DRAFT_QUEUE_TOTAL_MERGE_ACTIONS_CALLS = 'draft-queue-total-mergeActions-calls';
|
|
42264
|
+
// Emitted every time a draft's Idempotency-Key is rotated (replaced with a fresh uuid).
|
|
42265
|
+
// Used to triage the WOLI duplicate-record investigation in Splunk — correlate by draftId
|
|
42266
|
+
// with the other draft-queue events. @W-23428669
|
|
42267
|
+
const DRAFT_QUEUE_IDEMPOTENCY_KEY_ROTATED = 'draft-queue-idempotency-key-rotated';
|
|
42268
|
+
/** Content Document */
|
|
42269
|
+
const CREATE_CONTENT_DOCUMENT_AND_VERSION_TOTAL_SYNTHESIZE_CALLS = 'content-document-version-total-synthesize-calls';
|
|
42270
|
+
const CREATE_CONTENT_DOCUMENT_AND_VERSION_DRAFT_SYNTHESIZE_ERROR = 'create-content-document-version-draft-synthesize-error';
|
|
42271
|
+
/** Priming */
|
|
42272
|
+
const PRIMING_TOTAL_SESSION_COUNT = 'priming-total-session-count';
|
|
42273
|
+
const PRIMING_TOTAL_ERROR_COUNT = 'priming-total-error-count';
|
|
42274
|
+
const PRIMING_TOTAL_PRIMED_COUNT = 'priming-total-primed-count';
|
|
42275
|
+
const PRIMING_TOTAL_CONFLICT_COUNT = 'priming-total-conflict-count';
|
|
42276
|
+
// logs
|
|
42277
|
+
const GRAPHQL_QUERY_PARSE_ERROR = 'gql-query-parse-error';
|
|
42278
|
+
const GRAPHQL_SQL_EVAL_PRECONDITION_ERROR = 'gql-sql-pre-eval-error';
|
|
42279
|
+
const GRAPHQL_CREATE_SNAPSHOT_ERROR = 'gql-create-snapshot-error';
|
|
42280
|
+
const DRAFT_AWARE_CREATE_CONTENT_DOCUMENT_AND_VERSION_ERROR = 'draft-aware-create-content-document-and-version-error';
|
|
42281
|
+
/** Garbage Collection */
|
|
42282
|
+
const GARBAGE_COLLECTION_AGGRESSIVE_TRIM_COUNT = 'garbage-collection-aggressive-trim-count';
|
|
42283
|
+
const GARBAGE_COLLECTION_AGGRESSIVE_TRIM_RECORDS_TRIMMED = 'garbage-collection-aggressive-trim-records-trimmed';
|
|
42284
|
+
const GARBAGE_COLLECTION_AGGRESSIVE_TRIM_TOTAL_RECORDS_BEFORE_TRIM = 'garbage-collection-aggressive-trim-total-records-before-trim';
|
|
42285
|
+
const ldsMobileInstrumentation = getInstrumentation(O11Y_NAMESPACE_LDS_MOBILE);
|
|
42286
|
+
const nimbusLogger = typeof __nimbus !== 'undefined' &&
|
|
42287
|
+
__nimbus.plugins !== undefined &&
|
|
42288
|
+
__nimbus.plugins.JSLoggerPlugin !== undefined
|
|
42289
|
+
? __nimbus.plugins.JSLoggerPlugin
|
|
42290
|
+
: undefined;
|
|
42291
|
+
function reportGraphqlQueryParseError(err) {
|
|
42292
|
+
const error = normalizeError(err);
|
|
42293
|
+
const errorCode = GRAPHQL_QUERY_PARSE_ERROR;
|
|
42294
|
+
// Metric
|
|
42295
|
+
reportGraphqlAdapterError(errorCode);
|
|
42296
|
+
// Log
|
|
42297
|
+
ldsMobileInstrumentation.error(error, errorCode);
|
|
42298
|
+
}
|
|
42299
|
+
function reportGraphqlSqlEvalPreconditionError(err) {
|
|
42300
|
+
const error = normalizeError(err);
|
|
42301
|
+
const errorCode = GRAPHQL_SQL_EVAL_PRECONDITION_ERROR;
|
|
42302
|
+
// Metric
|
|
42303
|
+
reportGraphqlAdapterError(errorCode);
|
|
42304
|
+
// Log
|
|
42305
|
+
ldsMobileInstrumentation.error(error, errorCode);
|
|
42306
|
+
}
|
|
42307
|
+
function reportGraphqlCreateSnapshotError(err) {
|
|
42308
|
+
const error = normalizeError(err);
|
|
42309
|
+
const errorCode = GRAPHQL_CREATE_SNAPSHOT_ERROR;
|
|
42310
|
+
// Metric
|
|
42311
|
+
reportGraphqlAdapterError(errorCode);
|
|
42312
|
+
// Log
|
|
42313
|
+
ldsMobileInstrumentation.error(error, errorCode);
|
|
42314
|
+
}
|
|
42315
|
+
function reportGraphQlEvalDbReadDuration(duration) {
|
|
42316
|
+
ldsMobileInstrumentation.trackValue(GRAPHQL_EVAL_DB_READ_DURATION, duration);
|
|
42317
|
+
}
|
|
42318
|
+
function reportGraphqlAdapterError(errorCode) {
|
|
42319
|
+
// Increment overall count with errorCode as tag
|
|
42320
|
+
ldsMobileInstrumentation.incrementCounter(GRAPHQL_EVAL_ERROR, 1, true, { errorCode });
|
|
42321
|
+
}
|
|
42322
|
+
function reportGraphqlQueryInstrumentation(data) {
|
|
42323
|
+
const queryBuckets = [1, 2, 3, 4, 5, 10, 20, 50, 100];
|
|
42324
|
+
const recordBuckets = [
|
|
42325
|
+
1, 5, 10, 20, 50, 100, 1000, 2000, 5000, 10000, 50000, 100000, 1000000,
|
|
42326
|
+
];
|
|
42327
|
+
ldsMobileInstrumentation.bucketValue(GRAPHQL_EVAL_ROOT_QUERY_COUNT, data.rootQueryCount, queryBuckets);
|
|
42328
|
+
ldsMobileInstrumentation.bucketValue(GRAPHQL_EVAL_TOTAL_QUERY_COUNT, data.totalQueryCount, queryBuckets);
|
|
42329
|
+
ldsMobileInstrumentation.bucketValue(GRAPHQL_EVAL_MAX_CHILD_RELATIONSHIPS_COUNT, data.maxChildRelationships, queryBuckets);
|
|
42330
|
+
ldsMobileInstrumentation.bucketValue(GRAPHQL_EVAL_QUERY_RECORD_COUNT, data.requestedRecordCount, recordBuckets);
|
|
42331
|
+
}
|
|
42332
|
+
function incrementGraphQLRefreshUndfined() {
|
|
42333
|
+
ldsMobileInstrumentation.incrementCounter(GRAPHQL_SNAPSHOT_REFRESH_UNDEFINED);
|
|
42334
|
+
}
|
|
42335
|
+
function reportDraftActionEvent(state, draftCount, message) {
|
|
42336
|
+
if (nimbusLogger) {
|
|
42337
|
+
nimbusLogger.logInfo(`Draft action event: ${state}, depth: ${draftCount}${message ? `, message: ${message}` : ''}`);
|
|
42338
|
+
}
|
|
42339
|
+
switch (state) {
|
|
42340
|
+
case 'added':
|
|
42341
|
+
ldsMobileInstrumentation.incrementCounter(DRAFT_QUEUE_ACTION_ADDED);
|
|
42342
|
+
break;
|
|
42343
|
+
case 'uploading':
|
|
42344
|
+
ldsMobileInstrumentation.incrementCounter(DRAFT_QUEUE_ACTION_UPLOADING);
|
|
42345
|
+
break;
|
|
42346
|
+
case 'completed':
|
|
42347
|
+
ldsMobileInstrumentation.incrementCounter(DRAFT_QUEUE_ACTION_COMPLETED);
|
|
42348
|
+
break;
|
|
42349
|
+
case 'deleted':
|
|
42350
|
+
ldsMobileInstrumentation.incrementCounter(DRAFT_QUEUE_ACTION_DELETED);
|
|
42351
|
+
break;
|
|
42352
|
+
case 'failed':
|
|
42353
|
+
ldsMobileInstrumentation.incrementCounter(DRAFT_QUEUE_ACTION_FAILED, 1, true);
|
|
42354
|
+
break;
|
|
42355
|
+
case 'updated':
|
|
42356
|
+
ldsMobileInstrumentation.incrementCounter(DRAFT_QUEUE_ACTION_UPDATED);
|
|
42357
|
+
break;
|
|
42358
|
+
}
|
|
42359
|
+
}
|
|
42360
|
+
/**
|
|
42361
|
+
* Reports an exception thrown while uploading a draft action. The thrown error is
|
|
42362
|
+
* otherwise swallowed by the upload handler's retry path, leaving the failure
|
|
42363
|
+
* invisible in telemetry; this surfaces it to o11y (log + counter) so a deterministic
|
|
42364
|
+
* upload failure can be diagnosed instead of silently retried forever.
|
|
42365
|
+
*
|
|
42366
|
+
* PII: the device log line carries only the handler id, retry attempt, and the error
|
|
42367
|
+
* NAME (e.g. "TypeError") — never the free-text error message, which can embed record
|
|
42368
|
+
* ids (URL path segments) or server field-validation strings. The full normalized error
|
|
42369
|
+
* (message + stack) is handed only to `ldsMobileInstrumentation.error`, the structured
|
|
42370
|
+
* o11y error pipeline responsible for scrubbing/handling that detail. Also does NOT log
|
|
42371
|
+
* the action's targetId/tag or any request body/field values.
|
|
42372
|
+
*/
|
|
42373
|
+
function reportDraftActionUploadError(error, handlerId, attempt) {
|
|
42374
|
+
const normalized = normalizeError(error);
|
|
42375
|
+
if (nimbusLogger) {
|
|
42376
|
+
nimbusLogger.logError(`Draft action upload error: handler=${handlerId}, attempt=${attempt}, name=${normalized.name}`);
|
|
42377
|
+
}
|
|
42378
|
+
ldsMobileInstrumentation.incrementCounter(DRAFT_QUEUE_ACTION_UPLOAD_ERROR, 1, true, {
|
|
42379
|
+
handlerId,
|
|
42380
|
+
});
|
|
42381
|
+
ldsMobileInstrumentation.error(normalized, DRAFT_QUEUE_ACTION_UPLOAD_ERROR);
|
|
42382
|
+
}
|
|
42383
|
+
/**
|
|
42384
|
+
* Emits a single greppable Splunk log line (and an o11y counter) every time a draft's
|
|
42385
|
+
* Idempotency-Key is rotated — i.e. replaced with a fresh uuid rather than reused on
|
|
42386
|
+
* retry. This is the instrumentation for the WOLI duplicate-record investigation
|
|
42387
|
+
* (@W-23428669): a rotation mid-flight is the mechanism by which an already-committed
|
|
42388
|
+
* write can be re-sent under a new key and duplicated on the server, so recording every
|
|
42389
|
+
* rotation lets us reconstruct, on a future reproduction, exactly where and how often a
|
|
42390
|
+
* key changed for a given draft.
|
|
42391
|
+
*
|
|
42392
|
+
* The message is prefixed with a stable literal ("Idempotency key rotated") so it can be
|
|
42393
|
+
* pulled out of Splunk with a substring match, and carries:
|
|
42394
|
+
* - draftId: the local (client-synthesized) draft-action target id, so this event can be
|
|
42395
|
+
* correlated with the other draft-queue events for the same draft. This is NOT a server
|
|
42396
|
+
* record id or any field value — it is the same local id already surfaced by the queue's
|
|
42397
|
+
* other lifecycle logs, so it introduces no new PII.
|
|
42398
|
+
* - reason: which rotation call site fired, to disambiguate the distinct rotation paths.
|
|
42399
|
+
*
|
|
42400
|
+
* @param draftId the local draft-action target id whose key was rotated
|
|
42401
|
+
* @param reason the rotation call site (see IdempotencyKeyRotationReason)
|
|
42402
|
+
*/
|
|
42403
|
+
function reportIdempotencyKeyRotated(draftId, reason) {
|
|
42404
|
+
if (nimbusLogger) {
|
|
42405
|
+
nimbusLogger.logInfo(`Idempotency key rotated: draftId=${draftId}, reason=${reason}`);
|
|
42406
|
+
}
|
|
42407
|
+
ldsMobileInstrumentation.incrementCounter(DRAFT_QUEUE_IDEMPOTENCY_KEY_ROTATED, 1, undefined, {
|
|
42408
|
+
reason,
|
|
42409
|
+
});
|
|
42410
|
+
}
|
|
42411
|
+
function reportDraftQueueState(state, draftCount) {
|
|
42412
|
+
if (nimbusLogger) {
|
|
42413
|
+
nimbusLogger.logInfo(`Draft state changed: ${state}, depth: ${draftCount}`);
|
|
42414
|
+
}
|
|
42415
|
+
switch (state) {
|
|
42416
|
+
case 'started':
|
|
42417
|
+
ldsMobileInstrumentation.incrementCounter(DRAFT_QUEUE_STATE_STARTED);
|
|
42418
|
+
break;
|
|
42419
|
+
case 'error':
|
|
42420
|
+
ldsMobileInstrumentation.incrementCounter(DRAFT_QUEUE_STATE_ERROR, 1, true);
|
|
42421
|
+
break;
|
|
42422
|
+
case 'waiting':
|
|
42423
|
+
ldsMobileInstrumentation.incrementCounter(DRAFT_QUEUE_STATE_WAITING);
|
|
42424
|
+
break;
|
|
42425
|
+
case 'stopped':
|
|
42426
|
+
ldsMobileInstrumentation.incrementCounter(DRAFT_QUEUE_STATE_STOPPED);
|
|
42427
|
+
break;
|
|
42428
|
+
}
|
|
42429
|
+
}
|
|
42430
|
+
function reportDraftAwareContentDocumentVersionSynthesizeError(err) {
|
|
42431
|
+
let error;
|
|
42432
|
+
if (err.body !== undefined) {
|
|
42433
|
+
error = err.body;
|
|
42434
|
+
}
|
|
42435
|
+
else {
|
|
42436
|
+
error = normalizeError(err);
|
|
42437
|
+
}
|
|
42438
|
+
const errorCode = DRAFT_AWARE_CREATE_CONTENT_DOCUMENT_AND_VERSION_ERROR;
|
|
42439
|
+
const errorType = error.errorType;
|
|
42440
|
+
const tags = {
|
|
42441
|
+
errorCode,
|
|
42442
|
+
};
|
|
42443
|
+
if (errorType !== undefined) {
|
|
42444
|
+
tags.errorType = errorType;
|
|
42445
|
+
}
|
|
42446
|
+
// Metric
|
|
42447
|
+
ldsMobileInstrumentation.incrementCounter(CREATE_CONTENT_DOCUMENT_AND_VERSION_DRAFT_SYNTHESIZE_ERROR, 1, true, tags);
|
|
42448
|
+
// Log
|
|
42449
|
+
ldsMobileInstrumentation.error(error, errorCode);
|
|
42450
|
+
}
|
|
42451
|
+
function reportDraftAwareContentVersionSynthesizeCalls(mimeType) {
|
|
42452
|
+
ldsMobileInstrumentation.incrementCounter(CREATE_CONTENT_DOCUMENT_AND_VERSION_TOTAL_SYNTHESIZE_CALLS, 1, undefined, { mimeType });
|
|
42453
|
+
}
|
|
42454
|
+
/** Priming */
|
|
42455
|
+
function reportPrimingSessionCreated() {
|
|
42456
|
+
ldsMobileInstrumentation.incrementCounter(PRIMING_TOTAL_SESSION_COUNT, 1, undefined, {});
|
|
42457
|
+
}
|
|
42458
|
+
function reportPrimingError(errorType, recordCount) {
|
|
42459
|
+
ldsMobileInstrumentation.incrementCounter(PRIMING_TOTAL_ERROR_COUNT, recordCount, undefined, {
|
|
42460
|
+
errorType,
|
|
42461
|
+
});
|
|
42462
|
+
}
|
|
42463
|
+
function reportPrimingSuccess(recordCount) {
|
|
42464
|
+
ldsMobileInstrumentation.incrementCounter(PRIMING_TOTAL_PRIMED_COUNT, recordCount, undefined);
|
|
42465
|
+
}
|
|
42466
|
+
function reportPrimingConflict(resolutionType, recordCount) {
|
|
42467
|
+
ldsMobileInstrumentation.incrementCounter(PRIMING_TOTAL_CONFLICT_COUNT, recordCount, undefined, {
|
|
42468
|
+
resolutionType,
|
|
42469
|
+
});
|
|
42470
|
+
}
|
|
42471
|
+
/** Network */
|
|
42472
|
+
function reportChunkCandidateUrlLength(urlLength) {
|
|
42473
|
+
const buckets = [8000, 10000, 12000, 14000, 16000];
|
|
42474
|
+
ldsMobileInstrumentation.bucketValue('chunk-candidate-url-length-histogram', urlLength, buckets);
|
|
42475
|
+
}
|
|
42476
|
+
/** Garbage Collection */
|
|
42477
|
+
function reportAggressiveTrimTriggered(trimCount, beforeTrimRecordCount, totalRecordsTrimmed) {
|
|
42478
|
+
ldsMobileInstrumentation.trackValue(GARBAGE_COLLECTION_AGGRESSIVE_TRIM_COUNT, trimCount);
|
|
42479
|
+
ldsMobileInstrumentation.trackValue(GARBAGE_COLLECTION_AGGRESSIVE_TRIM_TOTAL_RECORDS_BEFORE_TRIM, beforeTrimRecordCount);
|
|
42480
|
+
ldsMobileInstrumentation.trackValue(GARBAGE_COLLECTION_AGGRESSIVE_TRIM_RECORDS_TRIMMED, totalRecordsTrimmed);
|
|
42481
|
+
}
|
|
42482
|
+
/** One Store Cache Purge */
|
|
42483
|
+
const ONESTORE_CACHE_PURGING_RECORDS_PURGED = 'onestore-cache-purging-records-purged';
|
|
42484
|
+
const ONESTORE_CACHE_PURGING_RECORDS_ERROR = 'onestore-cache-purging-records-error';
|
|
42485
|
+
function reportOneStoreRecordsPurgedFromCache(recordsPurged) {
|
|
42486
|
+
ldsMobileInstrumentation.trackValue(ONESTORE_CACHE_PURGING_RECORDS_PURGED, recordsPurged);
|
|
42487
|
+
}
|
|
42488
|
+
function reportOneStoreCachePurgingError(error) {
|
|
42489
|
+
const errorMessage = normalizeError(error);
|
|
42490
|
+
ldsMobileInstrumentation.error(errorMessage, ONESTORE_CACHE_PURGING_RECORDS_ERROR);
|
|
42491
|
+
}
|
|
42492
|
+
|
|
42130
42493
|
const HTTP_HEADER_RETRY_AFTER = 'Retry-After';
|
|
42131
42494
|
const HTTP_HEADER_IDEMPOTENCY_KEY = 'Idempotency-Key';
|
|
42132
42495
|
const ERROR_CODE_IDEMPOTENCY_FEATURE_NOT_ENABLED = 'IDEMPOTENCY_FEATURE_NOT_ENABLED';
|
|
@@ -42215,6 +42578,14 @@ class AbstractResourceRequestActionHandler {
|
|
|
42215
42578
|
if (request && request.headers && request.headers[HTTP_HEADER_IDEMPOTENCY_KEY]) {
|
|
42216
42579
|
const status = response.status;
|
|
42217
42580
|
switch (status) {
|
|
42581
|
+
case 0 /* IdempotentWriteSpecificHttpStatusCode.NoResponse */:
|
|
42582
|
+
// statusCode 0 = the client sent the request but received no response
|
|
42583
|
+
// (connection dropped / app suspended in flight). The write may already
|
|
42584
|
+
// have committed at the origin, so we MUST retry with the SAME idempotency
|
|
42585
|
+
// key and let the server dedupe — rotating the key here would duplicate an
|
|
42586
|
+
// already-committed record.
|
|
42587
|
+
shouldRetry = true;
|
|
42588
|
+
break;
|
|
42218
42589
|
case 408 /* IdempotentWriteSpecificHttpStatusCode.RequestTimeout */:
|
|
42219
42590
|
case 503 /* IdempotentWriteSpecificHttpStatusCode.ServiceUnavailable */:
|
|
42220
42591
|
retryDelayInMs = getRetryAfterInMs(response.headers);
|
|
@@ -42261,11 +42632,34 @@ class AbstractResourceRequestActionHandler {
|
|
|
42261
42632
|
}
|
|
42262
42633
|
}
|
|
42263
42634
|
}
|
|
42635
|
+
// A generic 400 that none of the idempotency-specific branches above claimed
|
|
42636
|
+
// (shouldRetry still false) and that is not a backdating collision. @W-23445154
|
|
42264
42637
|
if (response.status === HttpStatusCode$1.BadRequest &&
|
|
42638
|
+
!shouldRetry &&
|
|
42265
42639
|
this.hasIdempotencySupport() &&
|
|
42266
|
-
updatedAction.data.headers[HTTP_HEADER_IDEMPOTENCY_KEY] !== undefined
|
|
42267
|
-
|
|
42268
|
-
|
|
42640
|
+
updatedAction.data.headers[HTTP_HEADER_IDEMPOTENCY_KEY] !== undefined &&
|
|
42641
|
+
!this.isBackdatingError(response.body, action)) {
|
|
42642
|
+
if (!preserveIdempotencyKeyOn400Gate.isOpen({ fallback: false })) {
|
|
42643
|
+
// Gate CLOSED (default) — legacy behavior: rotate the key and let the draft
|
|
42644
|
+
// error (shouldRetry stays false). Retained as the default until the fix is
|
|
42645
|
+
// enabled; this is the path that duplicated already-committed writes.
|
|
42646
|
+
updatedAction.data.headers[HTTP_HEADER_IDEMPOTENCY_KEY] = uuidv4();
|
|
42647
|
+
reportIdempotencyKeyRotated(updatedAction.targetId, 'generic-400-killswitch');
|
|
42648
|
+
actionDataChanged = true;
|
|
42649
|
+
}
|
|
42650
|
+
else if (!this.isServerGeneratedError(response.body)) {
|
|
42651
|
+
// Gate OPEN — the fix: only an edge/gateway-injected 400 (no recognizable
|
|
42652
|
+
// server error body) is retried with the SAME key, so the server can dedupe a
|
|
42653
|
+
// write that may already have committed at the origin. A real, server-generated
|
|
42654
|
+
// 400 (UiApiError[] or an enhancedErrorType body, e.g. a field-validation
|
|
42655
|
+
// failure) falls through to the error path below: retrying it unchanged would
|
|
42656
|
+
// only be rejected again, so the draft is errored for the user to fix or discard
|
|
42657
|
+
// — the same terminal outcome as the legacy path, minus the duplicating key
|
|
42658
|
+
// rotation. The key is only ever rotated by the recognized idempotency error
|
|
42659
|
+
// codes above, by a backdating collision (new body), or when the user edits an
|
|
42660
|
+
// errored draft (mergeActions/handleReplaceAction).
|
|
42661
|
+
shouldRetry = true;
|
|
42662
|
+
}
|
|
42269
42663
|
}
|
|
42270
42664
|
if (response.status === HttpStatusCode$1.BadRequest &&
|
|
42271
42665
|
this.isBackdatingError(response.body, action)) {
|
|
@@ -42274,23 +42668,102 @@ class AbstractResourceRequestActionHandler {
|
|
|
42274
42668
|
...updatedAction.data.body.fields,
|
|
42275
42669
|
LastModifiedDate: new Date(updatedAction.timestamp).toISOString(),
|
|
42276
42670
|
};
|
|
42671
|
+
// The record content changed (LastModifiedDate is bumped), so this is a NEW
|
|
42672
|
+
// logical write. Rotate the idempotency key so the server treats it as such
|
|
42673
|
+
// rather than deduping it against the stale, pre-backdate request. This is a
|
|
42674
|
+
// legitimate rotation — the request body is modified — unlike the generic-400
|
|
42675
|
+
// fallback above which must preserve the key when the fix is enabled. @W-23445154
|
|
42676
|
+
if (this.hasIdempotencySupport() &&
|
|
42677
|
+
updatedAction.data.headers[HTTP_HEADER_IDEMPOTENCY_KEY] !== undefined) {
|
|
42678
|
+
updatedAction.data.headers[HTTP_HEADER_IDEMPOTENCY_KEY] = uuidv4();
|
|
42679
|
+
reportIdempotencyKeyRotated(updatedAction.targetId, 'backdating-collision');
|
|
42680
|
+
}
|
|
42277
42681
|
shouldRetry = true;
|
|
42278
42682
|
actionDataChanged = true;
|
|
42279
42683
|
}
|
|
42280
|
-
|
|
42281
|
-
|
|
42282
|
-
|
|
42684
|
+
if (shouldRetry) {
|
|
42685
|
+
// Funnel the retry through the cap: when the gate is open this persists
|
|
42686
|
+
// the attempt count and errors out once the cap is hit; when the gate is
|
|
42687
|
+
// closed it behaves exactly as before. The non-ok response is the failure
|
|
42688
|
+
// that would otherwise be retried.
|
|
42689
|
+
await this.retryOrCap(updatedAction, response, actionErrored, retryDelayInMs, actionDataChanged);
|
|
42690
|
+
}
|
|
42691
|
+
else {
|
|
42692
|
+
await actionErrored({
|
|
42283
42693
|
...updatedAction,
|
|
42284
42694
|
error: response,
|
|
42285
42695
|
status: DraftActionStatus.Error,
|
|
42286
|
-
},
|
|
42696
|
+
}, false, retryDelayInMs, actionDataChanged);
|
|
42697
|
+
}
|
|
42287
42698
|
return ProcessActionResult.ACTION_ERRORED;
|
|
42288
42699
|
}
|
|
42289
42700
|
catch (e) {
|
|
42290
|
-
|
|
42701
|
+
// #3 (ungated): the thrown exception is otherwise swallowed here, leaving a
|
|
42702
|
+
// deterministic upload failure invisible in telemetry. Surface it to o11y
|
|
42703
|
+
// before deciding whether to retry.
|
|
42704
|
+
const error = normalizeError$1(e);
|
|
42705
|
+
const attempt = this.getUploadRetryCount(action) + 1;
|
|
42706
|
+
reportDraftActionUploadError(error, this.handlerId, attempt);
|
|
42707
|
+
await this.retryOrCap(action, error, actionErrored);
|
|
42291
42708
|
return ProcessActionResult.NETWORK_ERROR;
|
|
42292
42709
|
}
|
|
42293
42710
|
}
|
|
42711
|
+
/**
|
|
42712
|
+
* Reads the persisted upload retry-attempt count from the action's durable metadata
|
|
42713
|
+
* bag. The count lives in metadata (rather than in-memory) so it survives app
|
|
42714
|
+
* restarts and queue re-creation — the failure modes that let the unbounded retry
|
|
42715
|
+
* loop run for days.
|
|
42716
|
+
*/
|
|
42717
|
+
getUploadRetryCount(action) {
|
|
42718
|
+
const parsed = Number(action.metadata?.[DRAFT_ACTION_RETRY_COUNT_METADATA_KEY]);
|
|
42719
|
+
// Guard against a missing/corrupt persisted value: a NaN, fractional, or negative
|
|
42720
|
+
// count must never weaken the cap. Floor to a non-negative integer, defaulting to 0.
|
|
42721
|
+
if (!Number.isFinite(parsed) || parsed < 0) {
|
|
42722
|
+
return 0;
|
|
42723
|
+
}
|
|
42724
|
+
return Math.floor(parsed);
|
|
42725
|
+
}
|
|
42726
|
+
/**
|
|
42727
|
+
* Enforces the upload retry-attempt cap around the queue's `actionErrored` callback.
|
|
42728
|
+
* Both retry paths — a retryable HTTP error and a thrown exception — funnel through
|
|
42729
|
+
* here.
|
|
42730
|
+
*
|
|
42731
|
+
* The entire cap behavior is gated behind `lmr.draft-queue-max-retry-attempts`. When
|
|
42732
|
+
* the gate is CLOSED this is a transparent passthrough: it issues the same
|
|
42733
|
+
* `actionErrored(action, true, ...)` retry the queue made before this change, and
|
|
42734
|
+
* writes no extra metadata. When the gate is OPEN it persists an incremented attempt
|
|
42735
|
+
* count to the action's durable metadata and, once the action has failed
|
|
42736
|
+
* {@link MAX_RETRY_ATTEMPTS} times, transitions it to Error (carrying a
|
|
42737
|
+
* FetchResponse-shaped error that names the failure that exhausted the retries)
|
|
42738
|
+
* instead of scheduling yet another retry.
|
|
42739
|
+
*/
|
|
42740
|
+
async retryOrCap(action, lastFailure, actionErrored, retryDelayInMs, actionDataChanged) {
|
|
42741
|
+
if (!draftQueueMaxRetryAttemptsGate.isOpen({ fallback: false })) {
|
|
42742
|
+
// Gate closed: preserve the pre-existing unbounded-retry behavior exactly.
|
|
42743
|
+
await actionErrored(action, true, retryDelayInMs, actionDataChanged);
|
|
42744
|
+
return;
|
|
42745
|
+
}
|
|
42746
|
+
const attempt = this.getUploadRetryCount(action) + 1;
|
|
42747
|
+
if (attempt >= MAX_RETRY_ATTEMPTS) {
|
|
42748
|
+
await actionErrored({
|
|
42749
|
+
...action,
|
|
42750
|
+
error: buildMaxRetryError(lastFailure),
|
|
42751
|
+
status: DraftActionStatus.Error,
|
|
42752
|
+
}, false);
|
|
42753
|
+
return;
|
|
42754
|
+
}
|
|
42755
|
+
// Persist the incremented attempt count so it survives restarts. Forcing
|
|
42756
|
+
// actionDataChanged ensures the queue writes the updated metadata before the
|
|
42757
|
+
// action is rescheduled for retry.
|
|
42758
|
+
const retryingAction = {
|
|
42759
|
+
...action,
|
|
42760
|
+
metadata: {
|
|
42761
|
+
...action.metadata,
|
|
42762
|
+
[DRAFT_ACTION_RETRY_COUNT_METADATA_KEY]: String(attempt),
|
|
42763
|
+
},
|
|
42764
|
+
};
|
|
42765
|
+
await actionErrored(retryingAction, true, retryDelayInMs, true);
|
|
42766
|
+
}
|
|
42294
42767
|
async handleActionEnqueued(action) {
|
|
42295
42768
|
const impactedKeys = await this.recordService.setSideEffectsForActions([action]);
|
|
42296
42769
|
await this.recordService.reapplyRecordSideEffects(impactedKeys);
|
|
@@ -42454,6 +42927,13 @@ class AbstractResourceRequestActionHandler {
|
|
|
42454
42927
|
this.isActionOfType(sourceAction)) {
|
|
42455
42928
|
targetAction.status = DraftActionStatus.Pending;
|
|
42456
42929
|
targetAction.data = sourceAction.data;
|
|
42930
|
+
// Replacing an action's data re-queues it as a fresh upload, so the persisted
|
|
42931
|
+
// upload retry-attempt count must not carry over — otherwise a previously-
|
|
42932
|
+
// throttled action could immediately re-hit the cap on its first new attempt.
|
|
42933
|
+
// (Mirrors the same clear in mergeActions.)
|
|
42934
|
+
if (targetAction.metadata !== undefined) {
|
|
42935
|
+
delete targetAction.metadata[DRAFT_ACTION_RETRY_COUNT_METADATA_KEY];
|
|
42936
|
+
}
|
|
42457
42937
|
return targetAction;
|
|
42458
42938
|
}
|
|
42459
42939
|
else {
|
|
@@ -42490,9 +42970,15 @@ class AbstractResourceRequestActionHandler {
|
|
|
42490
42970
|
// Updates Idempotency key if target has one
|
|
42491
42971
|
if (targetData.headers && targetData.headers[HTTP_HEADER_IDEMPOTENCY_KEY]) {
|
|
42492
42972
|
merged.data.headers[HTTP_HEADER_IDEMPOTENCY_KEY] = uuidv4();
|
|
42973
|
+
reportIdempotencyKeyRotated(merged.targetId, 'merge-actions');
|
|
42493
42974
|
}
|
|
42494
42975
|
// overlay metadata
|
|
42495
42976
|
merged.metadata = { ...targetMetadata, ...sourceMetadata };
|
|
42977
|
+
// A merge folds new user data into the action and re-queues it as a fresh upload,
|
|
42978
|
+
// so the persisted upload retry-attempt count must not carry over — otherwise a
|
|
42979
|
+
// previously-throttled action could immediately re-hit the cap on its first new
|
|
42980
|
+
// attempt.
|
|
42981
|
+
delete merged.metadata[DRAFT_ACTION_RETRY_COUNT_METADATA_KEY];
|
|
42496
42982
|
// put status back to pending to auto upload if queue is active and targed is at the head.
|
|
42497
42983
|
merged.status = DraftActionStatus.Pending;
|
|
42498
42984
|
return merged;
|
|
@@ -42514,6 +43000,7 @@ class AbstractResourceRequestActionHandler {
|
|
|
42514
43000
|
action.data.headers = action.data.headers || {};
|
|
42515
43001
|
if (updateIdempotencyKey) {
|
|
42516
43002
|
action.data.headers[HTTP_HEADER_IDEMPOTENCY_KEY] = uuidv4();
|
|
43003
|
+
reportIdempotencyKeyRotated(action.targetId, 'idempotency-error');
|
|
42517
43004
|
}
|
|
42518
43005
|
else {
|
|
42519
43006
|
delete action.data.headers[HTTP_HEADER_IDEMPOTENCY_KEY];
|
|
@@ -42527,8 +43014,36 @@ class AbstractResourceRequestActionHandler {
|
|
|
42527
43014
|
isUiApiErrors(body) {
|
|
42528
43015
|
return body !== undefined && isArray$3(body) && body.length > 0 && body[0].errorCode;
|
|
42529
43016
|
}
|
|
43017
|
+
// Distinguishes a real, server-generated 400 from an edge/gateway-injected one.
|
|
43018
|
+
//
|
|
43019
|
+
// A 400 the origin (UiApi/APREST) actually produced carries a structured error body:
|
|
43020
|
+
// either a `UiApiError[]` (see isUiApiErrors) or an enhanced-error object tagged with
|
|
43021
|
+
// `enhancedErrorType` (e.g. 'RecordError' for field-validation failures). These describe
|
|
43022
|
+
// a request the server understood and deliberately rejected — retrying it unchanged would
|
|
43023
|
+
// just be rejected again, so the draft must be errored for the user to fix or discard.
|
|
43024
|
+
//
|
|
43025
|
+
// An edge/gateway-injected 400 (the duplicate-record incident, @W-23445154) has NO such
|
|
43026
|
+
// body — it's a tiny generic error page ({ message: 'Bad Request' }), a plain string, or
|
|
43027
|
+
// empty — and is returned on a request that may already have committed at the origin.
|
|
43028
|
+
// Only those should be retried with the same idempotency key so the server can dedupe.
|
|
43029
|
+
isServerGeneratedError(body) {
|
|
43030
|
+
if (this.isUiApiErrors(body)) {
|
|
43031
|
+
return true;
|
|
43032
|
+
}
|
|
43033
|
+
// enhancedErrorType is the origin's marker for a structured record error (field
|
|
43034
|
+
// validation, backdating collision, etc.). Guard the deref so a string/undefined
|
|
43035
|
+
// edge body doesn't throw.
|
|
43036
|
+
return (body !== null &&
|
|
43037
|
+
typeof body === 'object' &&
|
|
43038
|
+
body.enhancedErrorType !== undefined);
|
|
43039
|
+
}
|
|
42530
43040
|
isBackdatingError(body, action) {
|
|
42531
|
-
if (
|
|
43041
|
+
if (
|
|
43042
|
+
// An edge/gateway-injected 400 can carry an empty, string, or missing body; guard
|
|
43043
|
+
// the deref so classifying such a response never throws. @W-23445154
|
|
43044
|
+
body !== null &&
|
|
43045
|
+
typeof body === 'object' &&
|
|
43046
|
+
body.enhancedErrorType &&
|
|
42532
43047
|
body.enhancedErrorType === 'RecordError' &&
|
|
42533
43048
|
body.output &&
|
|
42534
43049
|
body.output.errors &&
|
|
@@ -43103,231 +43618,6 @@ class AbstractQuickActionHandler extends AbstractResourceRequestActionHandler {
|
|
|
43103
43618
|
}
|
|
43104
43619
|
}
|
|
43105
43620
|
|
|
43106
|
-
function attachObserversToAdapterRequestContext(observers, adapterRequestContext) {
|
|
43107
|
-
if (adapterRequestContext === undefined) {
|
|
43108
|
-
return { eventObservers: observers };
|
|
43109
|
-
}
|
|
43110
|
-
if (adapterRequestContext.eventObservers === undefined) {
|
|
43111
|
-
return { ...adapterRequestContext, eventObservers: observers };
|
|
43112
|
-
}
|
|
43113
|
-
return {
|
|
43114
|
-
...adapterRequestContext,
|
|
43115
|
-
eventObservers: adapterRequestContext.eventObservers.concat(observers),
|
|
43116
|
-
};
|
|
43117
|
-
}
|
|
43118
|
-
/**
|
|
43119
|
-
* Use this method to sanitize the unknown error object when
|
|
43120
|
-
* we are unsure of the type of the error thrown
|
|
43121
|
-
*
|
|
43122
|
-
* @param err Unknown object to sanitize
|
|
43123
|
-
* @returns an instance of error
|
|
43124
|
-
*/
|
|
43125
|
-
function normalizeError(err) {
|
|
43126
|
-
if (err instanceof Error) {
|
|
43127
|
-
return err;
|
|
43128
|
-
}
|
|
43129
|
-
else if (typeof err === 'string') {
|
|
43130
|
-
return new Error(err);
|
|
43131
|
-
}
|
|
43132
|
-
return new Error(stringify$5(err));
|
|
43133
|
-
}
|
|
43134
|
-
|
|
43135
|
-
const O11Y_NAMESPACE_LDS_MOBILE = 'lds-mobile';
|
|
43136
|
-
// metrics
|
|
43137
|
-
/** GraphQL */
|
|
43138
|
-
const GRAPHQL_EVAL_ERROR = 'gql-eval-error';
|
|
43139
|
-
const GRAPHQL_EVAL_DB_READ_DURATION = 'gql-eval-db-read-duration';
|
|
43140
|
-
const GRAPHQL_EVAL_ROOT_QUERY_COUNT = 'gql-eval-root-query-count';
|
|
43141
|
-
const GRAPHQL_EVAL_TOTAL_QUERY_COUNT = 'gql-eval-total-query-count';
|
|
43142
|
-
const GRAPHQL_EVAL_MAX_CHILD_RELATIONSHIPS_COUNT = 'gql-eval-max-child-count';
|
|
43143
|
-
const GRAPHQL_EVAL_QUERY_RECORD_COUNT = 'gql-eval-query-record-count';
|
|
43144
|
-
const GRAPHQL_SNAPSHOT_REFRESH_UNDEFINED = 'gql-snapshot-refresh-undefined';
|
|
43145
|
-
/** Draft Queue */
|
|
43146
|
-
const DRAFT_QUEUE_STATE_STARTED = 'draft-queue-state-started';
|
|
43147
|
-
const DRAFT_QUEUE_STATE_ERROR = 'draft-queue-state-error';
|
|
43148
|
-
const DRAFT_QUEUE_STATE_WAITING = 'draft-queue-state-waiting';
|
|
43149
|
-
const DRAFT_QUEUE_STATE_STOPPED = 'draft-queue-state-stopped';
|
|
43150
|
-
const DRAFT_QUEUE_ACTION_ADDED = 'draft-queue-action-added';
|
|
43151
|
-
const DRAFT_QUEUE_ACTION_UPLOADING = 'draft-queue-action-uploading';
|
|
43152
|
-
const DRAFT_QUEUE_ACTION_COMPLETED = 'draft-queue-action-completed';
|
|
43153
|
-
const DRAFT_QUEUE_ACTION_DELETED = 'draft-queue-action-deleted';
|
|
43154
|
-
const DRAFT_QUEUE_ACTION_UPDATED = 'draft-queue-action-updated';
|
|
43155
|
-
const DRAFT_QUEUE_ACTION_FAILED = 'draft-queue-action-failed';
|
|
43156
|
-
const DRAFT_QUEUE_TOTAL_MERGE_ACTIONS_CALLS = 'draft-queue-total-mergeActions-calls';
|
|
43157
|
-
/** Content Document */
|
|
43158
|
-
const CREATE_CONTENT_DOCUMENT_AND_VERSION_TOTAL_SYNTHESIZE_CALLS = 'content-document-version-total-synthesize-calls';
|
|
43159
|
-
const CREATE_CONTENT_DOCUMENT_AND_VERSION_DRAFT_SYNTHESIZE_ERROR = 'create-content-document-version-draft-synthesize-error';
|
|
43160
|
-
/** Priming */
|
|
43161
|
-
const PRIMING_TOTAL_SESSION_COUNT = 'priming-total-session-count';
|
|
43162
|
-
const PRIMING_TOTAL_ERROR_COUNT = 'priming-total-error-count';
|
|
43163
|
-
const PRIMING_TOTAL_PRIMED_COUNT = 'priming-total-primed-count';
|
|
43164
|
-
const PRIMING_TOTAL_CONFLICT_COUNT = 'priming-total-conflict-count';
|
|
43165
|
-
// logs
|
|
43166
|
-
const GRAPHQL_QUERY_PARSE_ERROR = 'gql-query-parse-error';
|
|
43167
|
-
const GRAPHQL_SQL_EVAL_PRECONDITION_ERROR = 'gql-sql-pre-eval-error';
|
|
43168
|
-
const GRAPHQL_CREATE_SNAPSHOT_ERROR = 'gql-create-snapshot-error';
|
|
43169
|
-
const DRAFT_AWARE_CREATE_CONTENT_DOCUMENT_AND_VERSION_ERROR = 'draft-aware-create-content-document-and-version-error';
|
|
43170
|
-
/** Garbage Collection */
|
|
43171
|
-
const GARBAGE_COLLECTION_AGGRESSIVE_TRIM_COUNT = 'garbage-collection-aggressive-trim-count';
|
|
43172
|
-
const GARBAGE_COLLECTION_AGGRESSIVE_TRIM_RECORDS_TRIMMED = 'garbage-collection-aggressive-trim-records-trimmed';
|
|
43173
|
-
const GARBAGE_COLLECTION_AGGRESSIVE_TRIM_TOTAL_RECORDS_BEFORE_TRIM = 'garbage-collection-aggressive-trim-total-records-before-trim';
|
|
43174
|
-
const ldsMobileInstrumentation = getInstrumentation(O11Y_NAMESPACE_LDS_MOBILE);
|
|
43175
|
-
const nimbusLogger = typeof __nimbus !== 'undefined' &&
|
|
43176
|
-
__nimbus.plugins !== undefined &&
|
|
43177
|
-
__nimbus.plugins.JSLoggerPlugin !== undefined
|
|
43178
|
-
? __nimbus.plugins.JSLoggerPlugin
|
|
43179
|
-
: undefined;
|
|
43180
|
-
function reportGraphqlQueryParseError(err) {
|
|
43181
|
-
const error = normalizeError(err);
|
|
43182
|
-
const errorCode = GRAPHQL_QUERY_PARSE_ERROR;
|
|
43183
|
-
// Metric
|
|
43184
|
-
reportGraphqlAdapterError(errorCode);
|
|
43185
|
-
// Log
|
|
43186
|
-
ldsMobileInstrumentation.error(error, errorCode);
|
|
43187
|
-
}
|
|
43188
|
-
function reportGraphqlSqlEvalPreconditionError(err) {
|
|
43189
|
-
const error = normalizeError(err);
|
|
43190
|
-
const errorCode = GRAPHQL_SQL_EVAL_PRECONDITION_ERROR;
|
|
43191
|
-
// Metric
|
|
43192
|
-
reportGraphqlAdapterError(errorCode);
|
|
43193
|
-
// Log
|
|
43194
|
-
ldsMobileInstrumentation.error(error, errorCode);
|
|
43195
|
-
}
|
|
43196
|
-
function reportGraphqlCreateSnapshotError(err) {
|
|
43197
|
-
const error = normalizeError(err);
|
|
43198
|
-
const errorCode = GRAPHQL_CREATE_SNAPSHOT_ERROR;
|
|
43199
|
-
// Metric
|
|
43200
|
-
reportGraphqlAdapterError(errorCode);
|
|
43201
|
-
// Log
|
|
43202
|
-
ldsMobileInstrumentation.error(error, errorCode);
|
|
43203
|
-
}
|
|
43204
|
-
function reportGraphQlEvalDbReadDuration(duration) {
|
|
43205
|
-
ldsMobileInstrumentation.trackValue(GRAPHQL_EVAL_DB_READ_DURATION, duration);
|
|
43206
|
-
}
|
|
43207
|
-
function reportGraphqlAdapterError(errorCode) {
|
|
43208
|
-
// Increment overall count with errorCode as tag
|
|
43209
|
-
ldsMobileInstrumentation.incrementCounter(GRAPHQL_EVAL_ERROR, 1, true, { errorCode });
|
|
43210
|
-
}
|
|
43211
|
-
function reportGraphqlQueryInstrumentation(data) {
|
|
43212
|
-
const queryBuckets = [1, 2, 3, 4, 5, 10, 20, 50, 100];
|
|
43213
|
-
const recordBuckets = [
|
|
43214
|
-
1, 5, 10, 20, 50, 100, 1000, 2000, 5000, 10000, 50000, 100000, 1000000,
|
|
43215
|
-
];
|
|
43216
|
-
ldsMobileInstrumentation.bucketValue(GRAPHQL_EVAL_ROOT_QUERY_COUNT, data.rootQueryCount, queryBuckets);
|
|
43217
|
-
ldsMobileInstrumentation.bucketValue(GRAPHQL_EVAL_TOTAL_QUERY_COUNT, data.totalQueryCount, queryBuckets);
|
|
43218
|
-
ldsMobileInstrumentation.bucketValue(GRAPHQL_EVAL_MAX_CHILD_RELATIONSHIPS_COUNT, data.maxChildRelationships, queryBuckets);
|
|
43219
|
-
ldsMobileInstrumentation.bucketValue(GRAPHQL_EVAL_QUERY_RECORD_COUNT, data.requestedRecordCount, recordBuckets);
|
|
43220
|
-
}
|
|
43221
|
-
function incrementGraphQLRefreshUndfined() {
|
|
43222
|
-
ldsMobileInstrumentation.incrementCounter(GRAPHQL_SNAPSHOT_REFRESH_UNDEFINED);
|
|
43223
|
-
}
|
|
43224
|
-
function reportDraftActionEvent(state, draftCount, message) {
|
|
43225
|
-
if (nimbusLogger) {
|
|
43226
|
-
nimbusLogger.logInfo(`Draft action event: ${state}, depth: ${draftCount}${message ? `, message: ${message}` : ''}`);
|
|
43227
|
-
}
|
|
43228
|
-
switch (state) {
|
|
43229
|
-
case 'added':
|
|
43230
|
-
ldsMobileInstrumentation.incrementCounter(DRAFT_QUEUE_ACTION_ADDED);
|
|
43231
|
-
break;
|
|
43232
|
-
case 'uploading':
|
|
43233
|
-
ldsMobileInstrumentation.incrementCounter(DRAFT_QUEUE_ACTION_UPLOADING);
|
|
43234
|
-
break;
|
|
43235
|
-
case 'completed':
|
|
43236
|
-
ldsMobileInstrumentation.incrementCounter(DRAFT_QUEUE_ACTION_COMPLETED);
|
|
43237
|
-
break;
|
|
43238
|
-
case 'deleted':
|
|
43239
|
-
ldsMobileInstrumentation.incrementCounter(DRAFT_QUEUE_ACTION_DELETED);
|
|
43240
|
-
break;
|
|
43241
|
-
case 'failed':
|
|
43242
|
-
ldsMobileInstrumentation.incrementCounter(DRAFT_QUEUE_ACTION_FAILED, 1, true);
|
|
43243
|
-
break;
|
|
43244
|
-
case 'updated':
|
|
43245
|
-
ldsMobileInstrumentation.incrementCounter(DRAFT_QUEUE_ACTION_UPDATED);
|
|
43246
|
-
break;
|
|
43247
|
-
}
|
|
43248
|
-
}
|
|
43249
|
-
function reportDraftQueueState(state, draftCount) {
|
|
43250
|
-
if (nimbusLogger) {
|
|
43251
|
-
nimbusLogger.logInfo(`Draft state changed: ${state}, depth: ${draftCount}`);
|
|
43252
|
-
}
|
|
43253
|
-
switch (state) {
|
|
43254
|
-
case 'started':
|
|
43255
|
-
ldsMobileInstrumentation.incrementCounter(DRAFT_QUEUE_STATE_STARTED);
|
|
43256
|
-
break;
|
|
43257
|
-
case 'error':
|
|
43258
|
-
ldsMobileInstrumentation.incrementCounter(DRAFT_QUEUE_STATE_ERROR, 1, true);
|
|
43259
|
-
break;
|
|
43260
|
-
case 'waiting':
|
|
43261
|
-
ldsMobileInstrumentation.incrementCounter(DRAFT_QUEUE_STATE_WAITING);
|
|
43262
|
-
break;
|
|
43263
|
-
case 'stopped':
|
|
43264
|
-
ldsMobileInstrumentation.incrementCounter(DRAFT_QUEUE_STATE_STOPPED);
|
|
43265
|
-
break;
|
|
43266
|
-
}
|
|
43267
|
-
}
|
|
43268
|
-
function reportDraftAwareContentDocumentVersionSynthesizeError(err) {
|
|
43269
|
-
let error;
|
|
43270
|
-
if (err.body !== undefined) {
|
|
43271
|
-
error = err.body;
|
|
43272
|
-
}
|
|
43273
|
-
else {
|
|
43274
|
-
error = normalizeError(err);
|
|
43275
|
-
}
|
|
43276
|
-
const errorCode = DRAFT_AWARE_CREATE_CONTENT_DOCUMENT_AND_VERSION_ERROR;
|
|
43277
|
-
const errorType = error.errorType;
|
|
43278
|
-
const tags = {
|
|
43279
|
-
errorCode,
|
|
43280
|
-
};
|
|
43281
|
-
if (errorType !== undefined) {
|
|
43282
|
-
tags.errorType = errorType;
|
|
43283
|
-
}
|
|
43284
|
-
// Metric
|
|
43285
|
-
ldsMobileInstrumentation.incrementCounter(CREATE_CONTENT_DOCUMENT_AND_VERSION_DRAFT_SYNTHESIZE_ERROR, 1, true, tags);
|
|
43286
|
-
// Log
|
|
43287
|
-
ldsMobileInstrumentation.error(error, errorCode);
|
|
43288
|
-
}
|
|
43289
|
-
function reportDraftAwareContentVersionSynthesizeCalls(mimeType) {
|
|
43290
|
-
ldsMobileInstrumentation.incrementCounter(CREATE_CONTENT_DOCUMENT_AND_VERSION_TOTAL_SYNTHESIZE_CALLS, 1, undefined, { mimeType });
|
|
43291
|
-
}
|
|
43292
|
-
/** Priming */
|
|
43293
|
-
function reportPrimingSessionCreated() {
|
|
43294
|
-
ldsMobileInstrumentation.incrementCounter(PRIMING_TOTAL_SESSION_COUNT, 1, undefined, {});
|
|
43295
|
-
}
|
|
43296
|
-
function reportPrimingError(errorType, recordCount) {
|
|
43297
|
-
ldsMobileInstrumentation.incrementCounter(PRIMING_TOTAL_ERROR_COUNT, recordCount, undefined, {
|
|
43298
|
-
errorType,
|
|
43299
|
-
});
|
|
43300
|
-
}
|
|
43301
|
-
function reportPrimingSuccess(recordCount) {
|
|
43302
|
-
ldsMobileInstrumentation.incrementCounter(PRIMING_TOTAL_PRIMED_COUNT, recordCount, undefined);
|
|
43303
|
-
}
|
|
43304
|
-
function reportPrimingConflict(resolutionType, recordCount) {
|
|
43305
|
-
ldsMobileInstrumentation.incrementCounter(PRIMING_TOTAL_CONFLICT_COUNT, recordCount, undefined, {
|
|
43306
|
-
resolutionType,
|
|
43307
|
-
});
|
|
43308
|
-
}
|
|
43309
|
-
/** Network */
|
|
43310
|
-
function reportChunkCandidateUrlLength(urlLength) {
|
|
43311
|
-
const buckets = [8000, 10000, 12000, 14000, 16000];
|
|
43312
|
-
ldsMobileInstrumentation.bucketValue('chunk-candidate-url-length-histogram', urlLength, buckets);
|
|
43313
|
-
}
|
|
43314
|
-
/** Garbage Collection */
|
|
43315
|
-
function reportAggressiveTrimTriggered(trimCount, beforeTrimRecordCount, totalRecordsTrimmed) {
|
|
43316
|
-
ldsMobileInstrumentation.trackValue(GARBAGE_COLLECTION_AGGRESSIVE_TRIM_COUNT, trimCount);
|
|
43317
|
-
ldsMobileInstrumentation.trackValue(GARBAGE_COLLECTION_AGGRESSIVE_TRIM_TOTAL_RECORDS_BEFORE_TRIM, beforeTrimRecordCount);
|
|
43318
|
-
ldsMobileInstrumentation.trackValue(GARBAGE_COLLECTION_AGGRESSIVE_TRIM_RECORDS_TRIMMED, totalRecordsTrimmed);
|
|
43319
|
-
}
|
|
43320
|
-
/** One Store Cache Purge */
|
|
43321
|
-
const ONESTORE_CACHE_PURGING_RECORDS_PURGED = 'onestore-cache-purging-records-purged';
|
|
43322
|
-
const ONESTORE_CACHE_PURGING_RECORDS_ERROR = 'onestore-cache-purging-records-error';
|
|
43323
|
-
function reportOneStoreRecordsPurgedFromCache(recordsPurged) {
|
|
43324
|
-
ldsMobileInstrumentation.trackValue(ONESTORE_CACHE_PURGING_RECORDS_PURGED, recordsPurged);
|
|
43325
|
-
}
|
|
43326
|
-
function reportOneStoreCachePurgingError(error) {
|
|
43327
|
-
const errorMessage = normalizeError(error);
|
|
43328
|
-
ldsMobileInstrumentation.error(errorMessage, ONESTORE_CACHE_PURGING_RECORDS_ERROR);
|
|
43329
|
-
}
|
|
43330
|
-
|
|
43331
43621
|
const QUICK_ACTION_HANDLER = 'QUICK_ACTION_HANDLER';
|
|
43332
43622
|
class QuickActionExecutionRepresentationHandler extends AbstractQuickActionHandler {
|
|
43333
43623
|
constructor(getLuvio, draftRecordService, draftQueue, networkAdapter, isDraftId, sideEffectService, objectInfoService, getRecord) {
|
|
@@ -48039,7 +48329,7 @@ function isRecordType(type) {
|
|
|
48039
48329
|
return Boolean(interfaces.find((iface) => iface.name === 'Record'));
|
|
48040
48330
|
}
|
|
48041
48331
|
|
|
48042
|
-
var uiapiSchemaString = "# Auto-generated merged GraphQL schema\n# Generated at: 2025-10-14T15:00:19.876399281Z\n# Source files: ui-services-private/java/resources/graphql-schemas/analytics.graphqls, ui-services-private/java/resources/graphql-schemas/setup-listview.graphqls, ui-services-private/java/resources/graphql-schemas/setup.graphqls, ui-services-private/java/resources/graphql-schemas/uiapi.graphqls\n\n# ============================================================\n# Source: ui-services-private/java/resources/graphql-schemas/analytics.graphqls\n# ============================================================\ninput Analytics__AnalyticsFilter @team(name: \"TUA-Admin-Home-Search\") {\n Id: Setup__IdOperators\n MasterLabel: StringOperators\n DeveloperName: StringOperators\n NamespacePrefix: StringOperators\n AssetApiName: StringOperators\n DataConnectorType: StringOperators\n CreatedById: Setup__IdOperators\n LastModifiedById: Setup__IdOperators\n SemanticMetricId: Setup__IdOperators\n SemanticModelId: Setup__IdOperators\n LastModifiedDate: DateTimeOperators\n CreatedDate: DateTimeOperators\n AssetUsageType: PicklistOperators\n ActivePromotionRequestId: Setup__IdOperators\n SemanticModel: Analytics__SemanticModelFilter\n and: [Analytics__AnalyticsFilter]\n or: [Analytics__AnalyticsFilter]\n not: Analytics__AnalyticsFilter\n}\n\ninput Analytics__SemanticModelFilter @team(name: \"TUA-Admin-Home-Search\") {\n DeveloperName: StringOperators\n MasterLabel: StringOperators\n}\n\nenum Analytics__SortEnumType @team(name: \"TUA-Admin-Home-Search\") {\n ASC\n DESC\n}\n\ntype Analytics__SemanticSubMetricDefinitionConnection @team(name: \"TUA-Admin-Home-Search\") {\n edges: [Analytics__SemanticSubMetricDefinitionEdge]\n totalCount: Int!\n pageResultCount: Int!\n pageInfo: PageInfo!\n}\n\ntype Analytics__SemanticSubMetricDefinitionEdge @team(name: \"TUA-Admin-Home-Search\") {\n node: Analytics__SemanticSubMetricDefinitionRepresentation\n cursor: String!\n}\n\ntype Analytics__DataspaceRepresentation @team(name: \"TUA-Admin-Home-Search\") {\n Id: ID!\n ApiName: String!\n MasterLabel: String\n DeveloperName: String\n}\n\ninterface Analytics__AnalyticsRepresentationInterface @team(name: \"TUA-Admin-Home-Search\") {\n MasterLabel: StringValue\n DeveloperName: StringValue\n Description: StringValue\n CreatedById: IDValue\n LastModifiedById: IDValue\n LastModifiedDate: DateTimeValue\n CreatedDate: DateTimeValue\n Id: ID!\n ApiName: String!\n NamespacePrefix: StringValue\n AnalyticsWorkspaces(first: Int, after: String): Analytics__AnalyticsWorkspaceAssetConnection\n Dataspaces: [Analytics__DataspaceRepresentation]\n RecordOperations: [String]\n AssetApiName: String\n DloActiveStatus: Boolean\n}\n\ntype Analytics__AnalyticsBrowse @team(name: \"TUA-Admin-Home-Search\") {\n edges: [Analytics__AnalyticsEdge]\n totalCount: Int!\n pageResultCount: Int!\n pageInfo: PageInfo!\n}\n\n# Empty enum is invalid GraphQL\n# enum AnalyticsAssetType @team(name: \"TUA-Admin-Home-Search\") @generic {\n# }\n\ntype Analytics__AnalyticsWorkspaceAssetConnection @team(name: \"TUA-Admin-Home-Search\") {\n edges: [Analytics__AnalyticsWorkspaceAssetEdge]\n totalCount: Int!\n pageResultCount: Int!\n pageInfo: PageInfo!\n}\n\ntype Analytics__SemanticDefinition implements Analytics__AnalyticsRepresentationInterface @team(name: \"TUA-Admin-Home-Search\") {\n MasterLabel: StringValue\n DeveloperName: StringValue\n Description: StringValue\n CreatedById: IDValue\n LastModifiedById: IDValue\n LastModifiedDate: DateTimeValue\n CreatedDate: DateTimeValue\n Id: ID!\n ApiName: String!\n NamespacePrefix: StringValue\n SemanticModelId: IDValue\n SemanticModel: Analytics__SemanticModel\n AnalyticsWorkspaces(first: Int, after: String): Analytics__AnalyticsWorkspaceAssetConnection\n SubMetrics(first: Int, after: String): Analytics__SemanticSubMetricDefinitionConnection\n Dataspaces: [Analytics__DataspaceRepresentation]\n RecordOperations: [String]\n AssetApiName: String\n DloActiveStatus: Boolean\n}\n\ntype Analytics__DominoTemplate implements Analytics__AnalyticsRepresentationInterface @team(name: \"TUA Intel MarketPlace\") {\n MasterLabel: StringValue\n DeveloperName: StringValue\n Description: StringValue\n CreatedById: IDValue\n LastModifiedById: IDValue\n LastModifiedDate: DateTimeValue\n CreatedDate: DateTimeValue\n Id: ID!\n ApiName: String!\n NamespacePrefix: StringValue\n TemplateStatus: StringValue\n TemplateType: StringValue\n AnalyticsWorkspaces(first: Int, after: String): Analytics__AnalyticsWorkspaceAssetConnection\n Dataspaces: [Analytics__DataspaceRepresentation]\n RecordOperations: [String]\n AssetApiName: String\n DloActiveStatus: Boolean\n}\n\ntype Analytics__AnalyticsEdge @team(name: \"TUA-Admin-Home-Search\") {\n node: Analytics__AnalyticsRepresentationInterface\n cursor: String!\n}\n\ntype Analytics__AnalyticsWorkspace @team(name: \"TUA-Admin-Home-Search\") {\n MasterLabel: StringValue\n DeveloperName: StringValue\n Description: StringValue\n CreatedById: IDValue\n LastModifiedById: IDValue\n LastModifiedDate: DateTimeValue\n CreatedDate: DateTimeValue\n Id: ID!\n ApiName: String!\n}\n\ntype Analytics__SemanticSubMetricDefinitionRepresentation @team(name: \"TUA-Admin-Home-Search\") {\n Id: ID!\n ApiName: String!\n SemanticModelId: IDValue\n SemanticMetricId: IDValue\n MasterLabel: StringValue\n DeveloperName: StringValue\n Description: StringValue\n CreatedById: IDValue\n LastModifiedById: IDValue\n LastModifiedDate: DateTimeValue\n CreatedDate: DateTimeValue\n}\n\ntype Analytics__AnalyticsWorkspaceAssetEdge @team(name: \"TUA-Admin-Home-Search\") {\n node: Analytics__AnalyticsWorkspaceAsset\n cursor: String!\n}\n\ninput Analytics__OrderByInput @team(name: \"TUA-Admin-Home-Search\") {\n order: Analytics__SortEnumType\n}\n\ntype Analytics__AnalyticsRepresentation implements Analytics__AnalyticsRepresentationInterface @team(name: \"TUA-Admin-Home-Search\") {\n MasterLabel: StringValue\n DeveloperName: StringValue\n Description: StringValue\n CreatedById: IDValue\n LastModifiedById: IDValue\n LastModifiedDate: DateTimeValue\n CreatedDate: DateTimeValue\n Id: ID!\n ApiName: String!\n NamespacePrefix: StringValue\n RecordOperations: [String]\n AnalyticsWorkspaces(first: Int, after: String): Analytics__AnalyticsWorkspaceAssetConnection\n Dataspaces: [Analytics__DataspaceRepresentation]\n AssetApiName: String\n DloActiveStatus: Boolean\n}\n\ntype Analytics__SemanticModelRelatedModelConnection @team(name: \"TUA-Admin-Home-Search\") {\n edges: [Analytics__SemanticModelRelatedModelEdge]\n totalCount: Int!\n pageResultCount: Int!\n pageInfo: PageInfo!\n}\n\ntype Analytics__SemanticModelRelatedModelRepresentation @team(name: \"TUA-Admin-Home-Search\") {\n Id: ID!\n ApiName: String!\n SemanticModelId: IDValue\n RelatedSemanticModel: Analytics__SemanticModel\n}\n\ntype Analytics__SemanticModelRelatedModelEdge @team(name: \"TUA-Admin-Home-Search\") {\n node: Analytics__SemanticModelRelatedModelRepresentation\n cursor: String!\n}\n\ntype Analytics__SemanticModel implements Analytics__AnalyticsRepresentationInterface @team(name: \"TUA-Admin-Home-Search\") {\n MasterLabel: StringValue\n DeveloperName: StringValue\n Description: StringValue\n CreatedById: IDValue\n LastModifiedById: IDValue\n LastModifiedDate: DateTimeValue\n CreatedDate: DateTimeValue\n Id: ID!\n ApiName: String!\n AnalyticsWorkspaces(first: Int, after: String): Analytics__AnalyticsWorkspaceAssetConnection\n NamespacePrefix: StringValue\n RelatedModel(first: Int, after: String): Analytics__SemanticModelRelatedModelConnection\n Dataspaces: [Analytics__DataspaceRepresentation]\n RecordOperations: [String]\n AssetApiName: String\n DloActiveStatus: Boolean\n}\n\n# assetTypes: AnalyticsAssetType - empty enum is invalid GraphQL so replace with String\ntype Analytics__Analytics @team(name: \"TUA-Admin-Home-Search\") {\n browse(where: Analytics__AnalyticsFilter, assetTypes: [String], orderBy: Analytics__AnalyticsOrderBy, first: Int, orgId: ID, after: String): Analytics__AnalyticsBrowse! @fieldCategory\n}\n\ntype Analytics__AnalyticsWorkspaceAsset @team(name: \"TUA-Admin-Home-Search\") {\n AnalyticsWorkspace: Analytics__AnalyticsWorkspace\n AssetUsageType: PicklistValue\n ActivePromotionRequestId: IDValue\n MetadataSourceType: PicklistValue\n}\n\ninput Analytics__AnalyticsOrderBy @team(name: \"TUA-Admin-Home-Search\") {\n MasterLabel: Analytics__OrderByInput\n Id: Analytics__OrderByInput\n ApiName: Analytics__OrderByInput\n LastModifiedById: Analytics__OrderByInput\n CreatedById: Analytics__OrderByInput\n LastModifiedDate: Analytics__OrderByInput\n CreatedDate: Analytics__OrderByInput\n}\n\ntype Analytics__MktDataConnector implements Analytics__AnalyticsRepresentationInterface @team(name: \"TUA-Admin-Home-Search\") {\n MasterLabel: StringValue\n DeveloperName: StringValue\n Description: StringValue\n CreatedById: IDValue\n LastModifiedById: IDValue\n LastModifiedDate: DateTimeValue\n CreatedDate: DateTimeValue\n Id: ID!\n ApiName: String!\n AnalyticsWorkspaces(first: Int, after: String): Analytics__AnalyticsWorkspaceAssetConnection\n NamespacePrefix: StringValue\n Dataspaces: [Analytics__DataspaceRepresentation]\n RecordOperations: [String]\n DataConnectorType: StringValue\n AssetApiName: String\n DloActiveStatus: Boolean\n}\n\n# ============================================================\n# Source: ui-services-private/java/resources/graphql-schemas/setup-listview.graphqls\n# ============================================================\ninput Setup__ListOrderInput {\n apiName: String!\n order: ResultsOrder\n}\n\ntype Setup__ListOrder {\n apiName: String!\n order: ResultsOrder\n label: String\n}\n\ntype Setup__ListViewRowConnection {\n edges: [Setup__ListViewRowEdge]\n pageInfo: PageInfo!\n totalCount: Int!\n}\n\ntype Setup__ListView {\n listViewType: String!\n label: String\n displayColumns: [Setup__ListColumn!]!\n filters: [Setup__ListFilter!]\n filterLogic: String\n orderedByInfo: [Setup__ListOrder!]!\n searchable: Boolean!\n rows(first: Int, after: String, upperBound: Int, orderBy: Setup__ListOrderInput, searchTerm: String): Setup__ListViewRowConnection\n}\n\nenum Setup__ListFilterOperator {\n EQUALS\n NOT_EQUAL\n LESS_THAN\n GREATER_THAN\n LESS_OR_EQUAL\n GREATER_OR_EQUAL\n CONTAINS\n NOT_CONTAIN\n STARTS_WITH\n INCLUDES\n EXCLUDES\n WITHIN\n}\n\ntype Setup__ListFilter {\n apiName: String!\n operator: Setup__ListFilterOperator!\n operand: [String!]!\n label: String\n}\n\ntype Setup__ListColumn {\n apiName: String!\n label: String!\n type: DataType!\n displayable: Boolean!\n filterable: Boolean!\n defaultOperator: Setup__ListFilterOperator\n allowedOperators: [Setup__ListFilterOperator!]\n sortable: Boolean\n navigable: Boolean\n}\n\ntype Setup__ListScalarField {\n apiName: String!\n value: String\n dataType: DataType\n displayValue: String\n format: String\n label: String\n lookupRecordId: String\n lookupObjectApiName: String\n}\n\ntype Setup__ListViewRow {\n id: String\n columns(apiNames: [String!]): [Setup__ListScalarField]!\n}\n\ntype Setup__ListViewRowEdge {\n cursor: String!\n node: Setup__ListViewRow\n}\n\ntype Setup__ListViewObjectInfo {\n columns(apiNames: [String!], displayable: Boolean, filterable: Boolean) : [Setup__ListColumn!]!\n}\n\ninput Setup__ListFilterInput {\n apiName: String!\n operator: Setup__ListFilterOperator!\n operand: [String!]!\n}\n\nextend type Setup__Setup {\n ListView(listViewType: String!, label: String, displayColumns: [String!], filters: [Setup__ListFilterInput!], filterLogic: String): Setup__ListView!\n ListViewObjectInfo(listViewType: String!): Setup__ListViewObjectInfo!\n}\n\n# ============================================================\n# Source: ui-services-private/java/resources/graphql-schemas/setup.graphqls\n# ============================================================\n# scope should be RecordScope, but it is an empty enum\ntype Setup__SetupQueryAggregate {\n recordQueryAggregate(first: Int, after: String, where: Setup__SetupFilter, orderBy: Setup__SetupAggregateOrderBy, scope: String, groupBy: Setup__SetupGroupBy, upperBound: Int, includeDeleted: Boolean): Setup__SetupAggregateConnection @fieldCategory\n}\n\nunion Setup__SetupPolymorphicParentRelationship @generic = Setup__EntityRepresentation\n\ninput Setup__SetupPolymorphicParentRelationshipRecordOrderBy @generic {\n Setup__SetupOrderBy: Setup__SetupOrderBy @fieldCategory\n}\n\ninput Setup__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: Setup__JoinInput\n ninq: Setup__JoinInput\n}\n\ninput Setup__JoinInput {\n Record: Setup__SetupFilter @fieldCategory\n ApiName: String\n}\n\ntype Setup__SetupAggregateConnection @generic {\n edges: [Setup__SetupAggregateEdge]\n pageInfo: PageInfo!\n totalCount: Int!\n}\n\ninput Setup__SetupAggregateOrderBy @generic {\n orderableNumberField: AggregateOrderByNumberClause @fieldCategory\n orderableStringField: AggregateOrderByStringClause @fieldCategory\n orderableField: NoFunctionAggregateOrderByClause @fieldCategory\n orderableGeolocationField: OrderByGeolocationClause @fieldCategory\n orderableParentRelationship: Setup__SetupAggregateOrderBy @fieldCategory\n orderablePolymorphicParentRelationship: Setup__SetupPolymorphicParentRelationshipOrderBy @fieldCategory\n}\n\ntype Setup__SetupConnection @generic {\n edges: [Setup__SetupEdge]\n pageInfo: PageInfo!\n totalCount: Int!\n pageResultCount: Int!\n}\n\ntype Setup__SetupAggregateEdge @generic {\n node: Setup__SetupRecordResult\n cursor: String!\n}\n\ninput Setup__SetupPolymorphicParentRelationshipRecordFilter @generic {\n Setup__SetupFilter: Setup__SetupFilter @fieldCategory\n}\n\ntype Setup__SetupRecordResult @generic {\n aggregate: Setup__SetupRecordAggregate\n}\n\ntype Setup__SetupRecordAggregate @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 parentRelationship: Setup__SetupRecordAggregate @fieldCategory\n polymorphicParentRelationship: Setup__SetupPolymorphicAggregateParentRelationship @fieldCategory\n}\n\ninput Setup__SetupOrderBy @generic {\n orderableField: OrderByClause @fieldCategory\n orderableGeolocationField: OrderByGeolocationClause @fieldCategory\n orderableParentRelationship: Setup__SetupOrderBy @fieldCategory\n orderablePolymorphicParentRelationship: Setup__SetupPolymorphicParentRelationshipRecordOrderBy @fieldCategory\n}\n\ninput Setup__SetupPolymorphicParentRelationshipOrderBy @generic {\n Setup__SetupAggregateOrderBy: Setup__SetupAggregateOrderBy @fieldCategory\n}\n\ntype Setup__SetupEdge @generic {\n node: Setup__EntityRepresentation\n cursor: String!\n}\n\n # scope should be RecordScope, but it is an empty enum\ntype Setup__SetupQuery {\n recordQuery(first: Int, after: String, where: Setup__SetupFilter, orderBy: Setup__SetupOrderBy, scope: String, upperBound: Int, includeDeleted: Boolean, updateMRU: Boolean): Setup__SetupConnection @fieldCategory\n}\n\ntype Setup__EntityRepresentation @generic {\n Id: ID!\n ApiName: String!\n Entity__fields(type: SObject__FieldType): [SObject__Field]! @ignoreRule(rules:[{ rule: \"FieldCamelOrPascalCaseRule\" teamName: \"UI Experience API\" justification: \"SObject__ prefix added to prevent name collisions.\" }])\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 AnyType: AnyType @fieldCategory\n parentRelationship: Setup__EntityRepresentation @fieldCategory\n polymorphicParentRelationship: Setup__SetupPolymorphicParentRelationship @fieldCategory\n childRelationship(first: Int, after: String, where: Setup__SetupFilter, orderBy: Setup__SetupOrderBy, upperBound: Int): Setup__SetupConnection @fieldCategory\n CompoundField: CompoundField @fieldCategory\n}\n\ninput Setup__SetupFilter @generic {\n and: [Setup__SetupFilter]\n or: [Setup__SetupFilter]\n not: Setup__SetupFilter\n parentRelationshipRecordFilter: Setup__SetupFilter @fieldCategory\n polymorphicParentRelationshipRecordFilter: Setup__SetupPolymorphicParentRelationshipRecordFilter @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 Setup__IdOperator: Setup__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\ninput Setup__SetupGroupBy @generic {\n groupableField: GroupByClause @fieldCategory\n groupableDateField: GroupByDateFunction @fieldCategory\n groupableParentRelationship: Setup__SetupGroupBy @fieldCategory\n groupablePolymorphicParentRelationship: Setup__SetupPolymorphicParentRelationshipGroupBy @fieldCategory\n type: GroupByType = GROUP_BY\n}\n\nunion Setup__SetupPolymorphicAggregateParentRelationship @generic = Setup__SetupRecordAggregate\n\ntype Setup__Setup {\n query: Setup__SetupQuery!\n aggregate: Setup__SetupQueryAggregate!\n objectInfos(apiNames: [String!], locale: String, objectInfoInputs: [ObjectInfoInput!]): [ObjectInfo]\n}\n\ninput Setup__SetupPolymorphicParentRelationshipGroupBy @generic {\n Setup__SetupGroupBy: Setup__SetupGroupBy @fieldCategory\n}\n\n\n# ============================================================\n# Source: ui-services-private/java/resources/graphql-schemas/uiapi.graphqls\n# ============================================================\nscalar BigDecimal\nscalar Byte\nscalar Char\nscalar BigInteger\nscalar Short\nscalar String\nscalar Currency\nscalar Longitude\nscalar Float\nscalar PhoneNumber\nscalar Email\nscalar TextArea\nscalar Latitude\nscalar RichTextArea\nscalar EncryptedString\nscalar Long\nscalar JSON\nscalar Time\nscalar Percent\nscalar LongTextArea\nscalar DateTime\nscalar ID\nscalar Boolean\nscalar MultiPicklist\nscalar Base64\nscalar Url\nscalar Picklist\nscalar Double\nscalar Int\nscalar IdOrRef\nscalar Date\n\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 setup: Setup__Setup! @fieldCategory\n analytics: Analytics__Analytics! @fieldCategory\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 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\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\ninput UIAPIMutationsInput {\n \"Determines whether or not all the operations should be rolled back in the event one or more operations fail.\"\n allOrNone: Boolean = true\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 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\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\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 RelatedListInfo @team(name: \"Lists Platform\") {\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!], locale: String, objectInfoInputs: [ObjectInfoInput!]): [ObjectInfo]\n relatedListByName(parentApiName: String!, relatedListName: String!): RelatedListInfo\n}\n\n\"Input for ObjectInfo and PickValues\"\ninput ObjectInfoInput {\n apiName: String!\n recordTypeIDs: [ID!]\n fieldNames: [String!]\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\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 label: String\n}\n\ninput DatePrimitiveOperators {\n eq: Date\n ne: Date\n lt: Date\n gt: Date\n lte: Date\n gte: Date\n in: [Date]\n nin: [Date]\n}\n\ntype TimeAggregate implements FieldValue {\n value: Time\n displayValue: String\n format: String\n hourInDay: DateFunctionAggregation\n}\n\ninput DistanceInput {\n latitude: Latitude!\n longitude: Longitude!\n}\n\nunion PolymorphicParentRelationship @generic = RecordRepresentation\n\nenum AggregateOrderByNumberFunction {\n AVG\n COUNT\n COUNT_DISTINCT\n MAX\n MIN\n SUM\n}\n\ntype LongTextAreaValue implements FieldValue {\n value: LongTextArea\n displayValue: String\n label: String\n}\n\ninput OrderByClause {\n order: ResultOrder\n nulls: NullOrder\n}\n\ntype SObject__Field {\n name: String!\n value: String\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 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\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\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\ntype RecordUpdatePayload @generic {\n Record: RecordRepresentation\n success: Boolean @deprecated\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\ninput RecordCreateInput @generic {\n record: RecordCreateRepresentation! @fieldCategory\n}\n\ninput AggregateOrderByStringClause {\n function: AggregateOrderByStringFunction\n order: ResultsOrder\n nulls: NullsOrder\n}\n\n\"The return value for the mutation to delete a Record\"\ntype RecordDeletePayload {\n \"The ID of the deleted Record\"\n Id: ID\n}\n\nenum DateLiteral {\n YESTERDAY\n TODAY\n TOMORROW\n LAST_WEEK\n THIS_WEEK\n NEXT_WEEK\n LAST_MONTH\n THIS_MONTH\n NEXT_MONTH\n LAST_90_DAYS\n NEXT_90_DAYS\n LAST_QUARTER\n THIS_QUARTER\n NEXT_QUARTER\n LAST_FISCAL_QUARTER\n THIS_FISCAL_QUARTER\n NEXT_FISCAL_QUARTER\n LAST_YEAR\n THIS_YEAR\n NEXT_YEAR\n LAST_FISCAL_YEAR\n THIS_FISCAL_YEAR\n NEXT_FISCAL_YEAR\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 SetupUserSpecialField: BooleanValue @fieldCategory\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 AnyType: AnyType @fieldCategory\n parentRelationship: RecordRepresentation @fieldCategory\n polymorphicParentRelationship: PolymorphicParentRelationship @fieldCategory\n childRelationship(first: Int, after: String, where: RecordFilter, orderBy: RecordOrderBy, upperBound: Int): RecordConnection @fieldCategory\n CompoundField: CompoundField @fieldCategory\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 label: String\n max: TextAreaValue\n min: TextAreaValue\n}\n\nenum GroupByType {\n GROUP_BY\n ROLLUP\n CUBE\n}\n\nenum ResultsOrder {\n ASC\n DESC\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 RecordUpdateRepresentation @generic {\n Int: Int @fieldCategory\n String: String @fieldCategory\n Boolean: Boolean @fieldCategory\n ID: IdOrRef @fieldCategory\n DateTime: DateTime @fieldCategory\n Time: Time @fieldCategory\n Date: Date @fieldCategory\n TextArea: TextArea @fieldCategory\n LongTextArea: LongTextArea @fieldCategory\n RichTextArea: RichTextArea @fieldCategory\n PhoneNumber: PhoneNumber @fieldCategory\n Email: Email @fieldCategory\n Url: Url @fieldCategory\n EncryptedString: EncryptedString @fieldCategory\n Currency: Currency @fieldCategory\n Longitude: Longitude @fieldCategory\n Latitude: Latitude @fieldCategory\n Picklist: Picklist @fieldCategory\n MultiPicklist: MultiPicklist @fieldCategory\n Long: Long @fieldCategory\n Double: Double @fieldCategory\n Percent: Percent @fieldCategory\n Base64: Base64 @fieldCategory\n JSON: JSON @fieldCategory\n}\n\ntype DateTimeValue implements FieldValue {\n value: DateTime\n displayValue: String\n format: String\n}\n\n\"Input to the mutation to delete a Record\"\ninput RecordDeleteInput {\n \"The ID of the Record to delete\"\n Id: IdOrRef!\n}\n\ntype ListOrder @team(name: \"Lists Platform\") {\n fieldApiName: String!\n sortDirection: ResultOrder\n}\n\nenum AggregateOrderByStringFunction {\n COUNT\n COUNT_DISTINCT\n MAX\n MIN\n}\n\ntype LongValue implements FieldValue {\n value: Long\n displayValue: String\n format: String\n}\n\ntype DependentField {\n controllingField: String!\n dependentFields: [String]!\n}\n\ntype PercentValue implements FieldValue {\n value: Percent\n displayValue: String\n format: String\n}\n\ninput NoFunctionAggregateOrderByClause {\n order: ResultsOrder\n nulls: NullsOrder\n}\n\ntype RecordConnection @generic {\n edges: [RecordEdge]\n pageInfo: PageInfo!\n totalCount: Int!\n pageResultCount: 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 locale: String\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\ninterface 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\ntype StandardField implements 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\ntype PicklistField implements 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 picklistValuesByRecordTypeIDs: [PicklistValueByRecordTypeIDs]\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\ntype PicklistValueByRecordTypeIDs {\n recordTypeID: String!\n controllerValues: [ControllerValues!]\n picklistValues: [PicklistValues!]\n defaultValue: PicklistValues\n}\n\ntype ControllerValues {\n value: String\n index: Int\n}\n\ntype PicklistValues {\n value: String\n label: String\n validFor: [Int]\n attributes: PicklistAttributes\n}\n\ntype PicklistAttributes {\n picklistAtrributesValueType: String\n connectDisplayName: String\n internalName: String\n}\n\ninput DateTimeFunctionInput {\n value: DatePrimitiveOperators\n convertTimezoneValue: DatePrimitiveOperators\n}\n\ntype Base64Value implements FieldValue {\n value: Base64\n displayValue: String\n}\n\ntype CompoundField @generic {\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}\n\ninput RecordUpdateInput @generic {\n Id: IdOrRef!\n record: RecordUpdateRepresentation! @fieldCategory\n}\n\ninput DateTimeInput {\n value: DateTime\n literal: DateLiteral\n range: DateRange\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 convertCurrency: Currency\n}\n\ntype DateFunctionAggregation {\n value: Long\n format: String\n}\n\ninput PolymorphicParentRelationshipRecordOrderBy @generic {\n RecordOrderBy: RecordOrderBy @fieldCategory\n}\n\ntype RecordCreatePayload @generic {\n Record: RecordRepresentation\n}\n\ninput PolymorphicParentRelationshipGroupBy @generic {\n RecordGroupBy: RecordGroupBy @fieldCategory\n}\n\ntype BooleanValue implements FieldValue {\n value: Boolean\n displayValue: String\n}\n\ntype StringValue implements FieldValue {\n value: String\n displayValue: String\n label: 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 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\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\ninput BooleanOperators {\n eq: Boolean\n ne: Boolean\n}\n\ntype MultiPicklistValue implements FieldValue {\n value: MultiPicklist\n displayValue: String\n label: String\n}\n\ntype ListColumn @team(name: \"Lists Platform\") {\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\ntype LatitudeValue implements FieldValue {\n value: Latitude\n displayValue: String\n}\n\ninput GroupByClause {\n group: Boolean\n}\n\ntype RecordEdge @generic {\n node: RecordRepresentation\n cursor: String!\n}\n\nenum NullOrder {\n FIRST\n LAST\n}\n\ntype PhoneNumberValue implements FieldValue {\n value: PhoneNumber\n displayValue: String\n}\n\n# RecordScope is an empty enum\n# enum RecordScope @generic {\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 label: String\n}\n\ntype RecordAggregateEdge @generic {\n node: RecordResult\n cursor: String!\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\ntype IDValue implements FieldValue {\n value: ID\n displayValue: String\n}\n\nenum Unit {\n MI\n KM\n}\n\ninput PolymorphicParentRelationshipOrderBy @generic {\n RecordAggregateOrderBy: RecordAggregateOrderBy @fieldCategory\n}\n\nenum NullsOrder {\n FIRST\n LAST\n}\n\nenum ResultOrder {\n ASC\n DESC\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 like: Picklist\n lt: Picklist\n gt: Picklist\n lte: Picklist\n gte: 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\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 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 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 parentRelationship: RecordAggregate @fieldCategory\n polymorphicParentRelationship: PolymorphicAggregateParentRelationship @fieldCategory\n}\n\nenum SObject__FieldType {\n ALL\n STANDARD\n CUSTOM\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\ninput DateFunctionInput {\n value: LongOperators\n convertTimezoneValue: LongOperators\n}\n\n# Mutations are not supported by Luvio.\n# type Mutation {\n# uiapi(input: UIAPIMutationsInput): UIAPIMutations!\n# }\n\nunion PolymorphicAggregateParentRelationship @generic = RecordAggregate\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\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 # scope should be RecordScope, but it is an empty enum\n recordQueryAggregate(first: Int, after: String, where: RecordFilter, orderBy: RecordAggregateOrderBy, scope: String, groupBy: RecordGroupBy, upperBound: Int): RecordAggregateConnection @fieldCategory\n}\n\ninput RecordCreateRepresentation @generic {\n Int: Int @fieldCategory\n String: String @fieldCategory\n Boolean: Boolean @fieldCategory\n ID: IdOrRef @fieldCategory\n DateTime: DateTime @fieldCategory\n Time: Time @fieldCategory\n Date: Date @fieldCategory\n TextArea: TextArea @fieldCategory\n LongTextArea: LongTextArea @fieldCategory\n RichTextArea: RichTextArea @fieldCategory\n PhoneNumber: PhoneNumber @fieldCategory\n Email: Email @fieldCategory\n Url: Url @fieldCategory\n EncryptedString: EncryptedString @fieldCategory\n Currency: Currency @fieldCategory\n Longitude: Longitude @fieldCategory\n Latitude: Latitude @fieldCategory\n Picklist: Picklist @fieldCategory\n MultiPicklist: MultiPicklist @fieldCategory\n Long: Long @fieldCategory\n Double: Double @fieldCategory\n Percent: Percent @fieldCategory\n Base64: Base64 @fieldCategory\n JSON: JSON @fieldCategory\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\ntype UIAPIMutations {\n recordCreate(input: RecordCreateInput!): RecordCreatePayload @fieldCategory\n recordDelete(input: RecordDeleteInput!): RecordDeletePayload @fieldCategory\n recordUpdate(input: RecordUpdateInput!): RecordUpdatePayload @fieldCategory\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\n\"\"\"\nA type that can contain any of the following types: Boolean, Date, DateTime, Double, String.\nFormat and Label are not supported by AnyType and displayValue is an unformatted string representation of the value.\n\"\"\"\nunion AnyType = BooleanValue | DateValue | DateTimeValue | DoubleValue | StringValue\n\ninput AggregateOrderByNumberClause {\n function: AggregateOrderByNumberFunction\n order: ResultsOrder\n nulls: NullsOrder\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 RecordQuery {\n # scope should be RecordScope, but it is an empty enum\n recordQuery(first: Int, after: String, where: RecordFilter, orderBy: RecordOrderBy, scope: String, upperBound: Int, updateMRU: Boolean): RecordConnection @fieldCategory\n}\n\ninput RecordAggregateOrderBy @generic {\n orderableNumberField: AggregateOrderByNumberClause @fieldCategory\n orderableStringField: AggregateOrderByStringClause @fieldCategory\n orderableField: NoFunctionAggregateOrderByClause @fieldCategory\n orderableGeolocationField: OrderByGeolocationClause @fieldCategory\n orderableParentRelationship: RecordAggregateOrderBy @fieldCategory\n orderablePolymorphicParentRelationship: PolymorphicParentRelationshipOrderBy @fieldCategory\n}\n\ninput IgnoreRule {\n rule: String!\n teamName: String!\n justification: String!\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(name: String!) on FIELD\n\"Specifies the team name for a type\"\ndirective @team(name: String!) on OBJECT | INPUT_OBJECT | INTERFACE | ENUM | UNION | SCALAR\n\"Specifies the validation rules to ignore for this element.\"\ndirective @ignoreRule(rules: [IgnoreRule!]!) on OBJECT\n | INPUT_OBJECT\n | INTERFACE\n | ENUM\n | UNION\n | SCALAR\n | FIELD_DEFINITION\n | INPUT_FIELD_DEFINITION\n | ARGUMENT_DEFINITION\n | ENUM_VALUE\ndirective @optional on FIELD\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}";
|
|
48332
|
+
var uiapiSchemaString = "# Auto-generated merged GraphQL schema\n# Generated at: 2025-10-14T15:00:19.876399281Z\n# Source files: ui-services-private/java/resources/graphql-schemas/analytics.graphqls, ui-services-private/java/resources/graphql-schemas/setup-listview.graphqls, ui-services-private/java/resources/graphql-schemas/setup.graphqls, ui-services-private/java/resources/graphql-schemas/uiapi.graphqls\n\n# ============================================================\n# Source: ui-services-private/java/resources/graphql-schemas/analytics.graphqls\n# ============================================================\ninput Analytics__AnalyticsFilter @team(name: \"TUA-Admin-Home-Search\") {\n Id: Setup__IdOperators\n MasterLabel: StringOperators\n DeveloperName: StringOperators\n NamespacePrefix: StringOperators\n AssetApiName: StringOperators\n DataConnectorType: StringOperators\n CreatedById: Setup__IdOperators\n LastModifiedById: Setup__IdOperators\n SemanticMetricId: Setup__IdOperators\n SemanticModelId: Setup__IdOperators\n LastModifiedDate: DateTimeOperators\n CreatedDate: DateTimeOperators\n AssetUsageType: PicklistOperators\n ActivePromotionRequestId: Setup__IdOperators\n SemanticModel: Analytics__SemanticModelFilter\n and: [Analytics__AnalyticsFilter]\n or: [Analytics__AnalyticsFilter]\n not: Analytics__AnalyticsFilter\n}\n\ninput Analytics__SemanticModelFilter @team(name: \"TUA-Admin-Home-Search\") {\n DeveloperName: StringOperators\n MasterLabel: StringOperators\n}\n\nenum Analytics__SortEnumType @team(name: \"TUA-Admin-Home-Search\") {\n ASC\n DESC\n}\n\ntype Analytics__SemanticSubMetricDefinitionConnection @team(name: \"TUA-Admin-Home-Search\") {\n edges: [Analytics__SemanticSubMetricDefinitionEdge]\n totalCount: Int!\n pageResultCount: Int!\n pageInfo: PageInfo!\n}\n\ntype Analytics__SemanticSubMetricDefinitionEdge @team(name: \"TUA-Admin-Home-Search\") {\n node: Analytics__SemanticSubMetricDefinitionRepresentation\n cursor: String!\n}\n\ntype Analytics__DataspaceRepresentation @team(name: \"TUA-Admin-Home-Search\") {\n Id: ID!\n ApiName: String!\n MasterLabel: String\n DeveloperName: String\n}\n\ninterface Analytics__AnalyticsRepresentationInterface @team(name: \"TUA-Admin-Home-Search\") {\n MasterLabel: StringValue\n DeveloperName: StringValue\n Description: StringValue\n CreatedById: IDValue\n LastModifiedById: IDValue\n LastModifiedDate: DateTimeValue\n CreatedDate: DateTimeValue\n Id: ID!\n ApiName: String!\n NamespacePrefix: StringValue\n AnalyticsWorkspaces(first: Int, after: String): Analytics__AnalyticsWorkspaceAssetConnection\n Dataspaces: [Analytics__DataspaceRepresentation]\n RecordOperations: [String]\n AssetApiName: String\n DloActiveStatus: Boolean\n ReusedAssetStatus: String\n}\n\ntype Analytics__AnalyticsBrowse @team(name: \"TUA-Admin-Home-Search\") {\n edges: [Analytics__AnalyticsEdge]\n totalCount: Int!\n pageResultCount: Int!\n pageInfo: PageInfo!\n}\n\n# Empty enum is invalid GraphQL\n# enum AnalyticsAssetType @team(name: \"TUA-Admin-Home-Search\") @generic {\n# }\n\ntype Analytics__AnalyticsWorkspaceAssetConnection @team(name: \"TUA-Admin-Home-Search\") {\n edges: [Analytics__AnalyticsWorkspaceAssetEdge]\n totalCount: Int!\n pageResultCount: Int!\n pageInfo: PageInfo!\n}\n\ntype Analytics__SemanticDefinition implements Analytics__AnalyticsRepresentationInterface @team(name: \"TUA-Admin-Home-Search\") {\n MasterLabel: StringValue\n DeveloperName: StringValue\n Description: StringValue\n CreatedById: IDValue\n LastModifiedById: IDValue\n LastModifiedDate: DateTimeValue\n CreatedDate: DateTimeValue\n Id: ID!\n ApiName: String!\n NamespacePrefix: StringValue\n SemanticModelId: IDValue\n SemanticModel: Analytics__SemanticModel\n AnalyticsWorkspaces(first: Int, after: String): Analytics__AnalyticsWorkspaceAssetConnection\n SubMetrics(first: Int, after: String): Analytics__SemanticSubMetricDefinitionConnection\n Dataspaces: [Analytics__DataspaceRepresentation]\n RecordOperations: [String]\n AssetApiName: String\n DloActiveStatus: Boolean\n ReusedAssetStatus: String\n}\n\ntype Analytics__DominoTemplate implements Analytics__AnalyticsRepresentationInterface @team(name: \"TUA Intel MarketPlace\") {\n MasterLabel: StringValue\n DeveloperName: StringValue\n Description: StringValue\n CreatedById: IDValue\n LastModifiedById: IDValue\n LastModifiedDate: DateTimeValue\n CreatedDate: DateTimeValue\n Id: ID!\n ApiName: String!\n NamespacePrefix: StringValue\n TemplateStatus: StringValue\n TemplateType: StringValue\n AnalyticsWorkspaces(first: Int, after: String): Analytics__AnalyticsWorkspaceAssetConnection\n Dataspaces: [Analytics__DataspaceRepresentation]\n RecordOperations: [String]\n AssetApiName: String\n DloActiveStatus: Boolean\n ReusedAssetStatus: String\n}\n\ntype Analytics__AnalyticsEdge @team(name: \"TUA-Admin-Home-Search\") {\n node: Analytics__AnalyticsRepresentationInterface\n cursor: String!\n}\n\ntype Analytics__AnalyticsWorkspace @team(name: \"TUA-Admin-Home-Search\") {\n MasterLabel: StringValue\n DeveloperName: StringValue\n Description: StringValue\n CreatedById: IDValue\n LastModifiedById: IDValue\n LastModifiedDate: DateTimeValue\n CreatedDate: DateTimeValue\n Id: ID!\n ApiName: String!\n}\n\ntype Analytics__SemanticSubMetricDefinitionRepresentation @team(name: \"TUA-Admin-Home-Search\") {\n Id: ID!\n ApiName: String!\n SemanticModelId: IDValue\n SemanticMetricId: IDValue\n MasterLabel: StringValue\n DeveloperName: StringValue\n Description: StringValue\n CreatedById: IDValue\n LastModifiedById: IDValue\n LastModifiedDate: DateTimeValue\n CreatedDate: DateTimeValue\n}\n\ntype Analytics__AnalyticsWorkspaceAssetEdge @team(name: \"TUA-Admin-Home-Search\") {\n node: Analytics__AnalyticsWorkspaceAsset\n cursor: String!\n}\n\ninput Analytics__OrderByInput @team(name: \"TUA-Admin-Home-Search\") {\n order: Analytics__SortEnumType\n}\n\ntype Analytics__AnalyticsRepresentation implements Analytics__AnalyticsRepresentationInterface @team(name: \"TUA-Admin-Home-Search\") {\n MasterLabel: StringValue\n DeveloperName: StringValue\n Description: StringValue\n CreatedById: IDValue\n LastModifiedById: IDValue\n LastModifiedDate: DateTimeValue\n CreatedDate: DateTimeValue\n Id: ID!\n ApiName: String!\n NamespacePrefix: StringValue\n RecordOperations: [String]\n AnalyticsWorkspaces(first: Int, after: String): Analytics__AnalyticsWorkspaceAssetConnection\n Dataspaces: [Analytics__DataspaceRepresentation]\n AssetApiName: String\n DloActiveStatus: Boolean\n ReusedAssetStatus: String\n}\n\ntype Analytics__SemanticModelRelatedModelConnection @team(name: \"TUA-Admin-Home-Search\") {\n edges: [Analytics__SemanticModelRelatedModelEdge]\n totalCount: Int!\n pageResultCount: Int!\n pageInfo: PageInfo!\n}\n\ntype Analytics__SemanticModelRelatedModelRepresentation @team(name: \"TUA-Admin-Home-Search\") {\n Id: ID!\n ApiName: String!\n SemanticModelId: IDValue\n RelatedSemanticModel: Analytics__SemanticModel\n}\n\ntype Analytics__SemanticModelRelatedModelEdge @team(name: \"TUA-Admin-Home-Search\") {\n node: Analytics__SemanticModelRelatedModelRepresentation\n cursor: String!\n}\n\ntype Analytics__SemanticModel implements Analytics__AnalyticsRepresentationInterface @team(name: \"TUA-Admin-Home-Search\") {\n MasterLabel: StringValue\n DeveloperName: StringValue\n Description: StringValue\n CreatedById: IDValue\n LastModifiedById: IDValue\n LastModifiedDate: DateTimeValue\n CreatedDate: DateTimeValue\n Id: ID!\n ApiName: String!\n AnalyticsWorkspaces(first: Int, after: String): Analytics__AnalyticsWorkspaceAssetConnection\n NamespacePrefix: StringValue\n RelatedModel(first: Int, after: String): Analytics__SemanticModelRelatedModelConnection\n Dataspaces: [Analytics__DataspaceRepresentation]\n RecordOperations: [String]\n AssetApiName: String\n DloActiveStatus: Boolean\n ReusedAssetStatus: String\n}\n\n# assetTypes: AnalyticsAssetType - empty enum is invalid GraphQL so replace with String\ntype Analytics__Analytics @team(name: \"TUA-Admin-Home-Search\") {\n browse(where: Analytics__AnalyticsFilter, assetTypes: [String], orderBy: Analytics__AnalyticsOrderBy, first: Int, orgId: ID, after: String): Analytics__AnalyticsBrowse! @fieldCategory\n}\n\ntype Analytics__AnalyticsWorkspaceAsset @team(name: \"TUA-Admin-Home-Search\") {\n AnalyticsWorkspace: Analytics__AnalyticsWorkspace\n AssetUsageType: PicklistValue\n ActivePromotionRequestId: IDValue\n MetadataSourceType: PicklistValue\n}\n\ninput Analytics__AnalyticsOrderBy @team(name: \"TUA-Admin-Home-Search\") {\n MasterLabel: Analytics__OrderByInput\n Id: Analytics__OrderByInput\n ApiName: Analytics__OrderByInput\n LastModifiedById: Analytics__OrderByInput\n CreatedById: Analytics__OrderByInput\n LastModifiedDate: Analytics__OrderByInput\n CreatedDate: Analytics__OrderByInput\n}\n\ntype Analytics__MktDataConnector implements Analytics__AnalyticsRepresentationInterface @team(name: \"TUA-Admin-Home-Search\") {\n MasterLabel: StringValue\n DeveloperName: StringValue\n Description: StringValue\n CreatedById: IDValue\n LastModifiedById: IDValue\n LastModifiedDate: DateTimeValue\n CreatedDate: DateTimeValue\n Id: ID!\n ApiName: String!\n AnalyticsWorkspaces(first: Int, after: String): Analytics__AnalyticsWorkspaceAssetConnection\n NamespacePrefix: StringValue\n Dataspaces: [Analytics__DataspaceRepresentation]\n RecordOperations: [String]\n DataConnectorType: StringValue\n AssetApiName: String\n DloActiveStatus: Boolean\n ReusedAssetStatus: String\n}\n\n# ============================================================\n# Source: ui-services-private/java/resources/graphql-schemas/setup-listview.graphqls\n# ============================================================\ninput Setup__ListOrderInput {\n apiName: String!\n order: ResultsOrder\n}\n\ntype Setup__ListOrder {\n apiName: String!\n order: ResultsOrder\n label: String\n}\n\ntype Setup__ListViewRowConnection {\n edges: [Setup__ListViewRowEdge]\n pageInfo: PageInfo!\n totalCount: Int!\n}\n\ntype Setup__ListView {\n listViewType: String!\n label: String\n displayColumns: [Setup__ListColumn!]!\n filters: [Setup__ListFilter!]\n filterLogic: String\n orderedByInfo: [Setup__ListOrder!]!\n searchable: Boolean!\n rows(first: Int, after: String, upperBound: Int, orderBy: Setup__ListOrderInput, searchTerm: String): Setup__ListViewRowConnection\n}\n\nenum Setup__ListFilterOperator {\n EQUALS\n NOT_EQUAL\n LESS_THAN\n GREATER_THAN\n LESS_OR_EQUAL\n GREATER_OR_EQUAL\n CONTAINS\n NOT_CONTAIN\n STARTS_WITH\n INCLUDES\n EXCLUDES\n WITHIN\n}\n\ntype Setup__ListFilter {\n apiName: String!\n operator: Setup__ListFilterOperator!\n operand: [String!]!\n label: String\n}\n\ntype Setup__ListColumn {\n apiName: String!\n label: String!\n type: DataType!\n displayable: Boolean!\n filterable: Boolean!\n defaultOperator: Setup__ListFilterOperator\n allowedOperators: [Setup__ListFilterOperator!]\n sortable: Boolean\n navigable: Boolean\n}\n\ntype Setup__ListScalarField {\n apiName: String!\n value: String\n dataType: DataType\n displayValue: String\n format: String\n label: String\n lookupRecordId: String\n lookupObjectApiName: String\n}\n\ntype Setup__ListViewRow {\n id: String\n columns(apiNames: [String!]): [Setup__ListScalarField]!\n}\n\ntype Setup__ListViewRowEdge {\n cursor: String!\n node: Setup__ListViewRow\n}\n\ntype Setup__ListViewObjectInfo {\n columns(apiNames: [String!], displayable: Boolean, filterable: Boolean) : [Setup__ListColumn!]!\n}\n\ninput Setup__ListFilterInput {\n apiName: String!\n operator: Setup__ListFilterOperator!\n operand: [String!]!\n}\n\nextend type Setup__Setup {\n ListView(listViewType: String!, label: String, displayColumns: [String!], filters: [Setup__ListFilterInput!], filterLogic: String): Setup__ListView!\n ListViewObjectInfo(listViewType: String!): Setup__ListViewObjectInfo!\n}\n\n# ============================================================\n# Source: ui-services-private/java/resources/graphql-schemas/setup.graphqls\n# ============================================================\n# scope should be RecordScope, but it is an empty enum\ntype Setup__SetupQueryAggregate {\n recordQueryAggregate(first: Int, after: String, where: Setup__SetupFilter, orderBy: Setup__SetupAggregateOrderBy, scope: String, groupBy: Setup__SetupGroupBy, upperBound: Int, includeDeleted: Boolean): Setup__SetupAggregateConnection @fieldCategory\n}\n\nunion Setup__SetupPolymorphicParentRelationship @generic = Setup__EntityRepresentation\n\ninput Setup__SetupPolymorphicParentRelationshipRecordOrderBy @generic {\n Setup__SetupOrderBy: Setup__SetupOrderBy @fieldCategory\n}\n\ninput Setup__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: Setup__JoinInput\n ninq: Setup__JoinInput\n}\n\ninput Setup__JoinInput {\n Record: Setup__SetupFilter @fieldCategory\n ApiName: String\n}\n\ntype Setup__SetupAggregateConnection @generic {\n edges: [Setup__SetupAggregateEdge]\n pageInfo: PageInfo!\n totalCount: Int!\n}\n\ninput Setup__SetupAggregateOrderBy @generic {\n orderableNumberField: AggregateOrderByNumberClause @fieldCategory\n orderableStringField: AggregateOrderByStringClause @fieldCategory\n orderableField: NoFunctionAggregateOrderByClause @fieldCategory\n orderableGeolocationField: OrderByGeolocationClause @fieldCategory\n orderableParentRelationship: Setup__SetupAggregateOrderBy @fieldCategory\n orderablePolymorphicParentRelationship: Setup__SetupPolymorphicParentRelationshipOrderBy @fieldCategory\n}\n\ntype Setup__SetupConnection @generic {\n edges: [Setup__SetupEdge]\n pageInfo: PageInfo!\n totalCount: Int!\n pageResultCount: Int!\n}\n\ntype Setup__SetupAggregateEdge @generic {\n node: Setup__SetupRecordResult\n cursor: String!\n}\n\ninput Setup__SetupPolymorphicParentRelationshipRecordFilter @generic {\n Setup__SetupFilter: Setup__SetupFilter @fieldCategory\n}\n\ntype Setup__SetupRecordResult @generic {\n aggregate: Setup__SetupRecordAggregate\n}\n\ntype Setup__SetupRecordAggregate @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 parentRelationship: Setup__SetupRecordAggregate @fieldCategory\n polymorphicParentRelationship: Setup__SetupPolymorphicAggregateParentRelationship @fieldCategory\n}\n\ninput Setup__SetupOrderBy @generic {\n orderableField: OrderByClause @fieldCategory\n orderableGeolocationField: OrderByGeolocationClause @fieldCategory\n orderableParentRelationship: Setup__SetupOrderBy @fieldCategory\n orderablePolymorphicParentRelationship: Setup__SetupPolymorphicParentRelationshipRecordOrderBy @fieldCategory\n}\n\ninput Setup__SetupPolymorphicParentRelationshipOrderBy @generic {\n Setup__SetupAggregateOrderBy: Setup__SetupAggregateOrderBy @fieldCategory\n}\n\ntype Setup__SetupEdge @generic {\n node: Setup__EntityRepresentation\n cursor: String!\n}\n\n # scope should be RecordScope, but it is an empty enum\ntype Setup__SetupQuery {\n recordQuery(first: Int, after: String, where: Setup__SetupFilter, orderBy: Setup__SetupOrderBy, scope: String, upperBound: Int, includeDeleted: Boolean, updateMRU: Boolean): Setup__SetupConnection @fieldCategory\n}\n\ntype Setup__EntityRepresentation @generic {\n Id: ID!\n ApiName: String!\n Entity__fields(type: SObject__FieldType): [SObject__Field]! @ignoreRule(rules:[{ rule: \"FieldCamelOrPascalCaseRule\" teamName: \"UI Experience API\" justification: \"SObject__ prefix added to prevent name collisions.\" }])\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 AnyType: AnyType @fieldCategory\n parentRelationship: Setup__EntityRepresentation @fieldCategory\n polymorphicParentRelationship: Setup__SetupPolymorphicParentRelationship @fieldCategory\n childRelationship(first: Int, after: String, where: Setup__SetupFilter, orderBy: Setup__SetupOrderBy, upperBound: Int): Setup__SetupConnection @fieldCategory\n CompoundField: CompoundField @fieldCategory\n}\n\ninput Setup__SetupFilter @generic {\n and: [Setup__SetupFilter]\n or: [Setup__SetupFilter]\n not: Setup__SetupFilter\n parentRelationshipRecordFilter: Setup__SetupFilter @fieldCategory\n polymorphicParentRelationshipRecordFilter: Setup__SetupPolymorphicParentRelationshipRecordFilter @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 Setup__IdOperator: Setup__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\ninput Setup__SetupGroupBy @generic {\n groupableField: GroupByClause @fieldCategory\n groupableDateField: GroupByDateFunction @fieldCategory\n groupableParentRelationship: Setup__SetupGroupBy @fieldCategory\n groupablePolymorphicParentRelationship: Setup__SetupPolymorphicParentRelationshipGroupBy @fieldCategory\n type: GroupByType = GROUP_BY\n}\n\nunion Setup__SetupPolymorphicAggregateParentRelationship @generic = Setup__SetupRecordAggregate\n\ntype Setup__Setup {\n query: Setup__SetupQuery!\n aggregate: Setup__SetupQueryAggregate!\n objectInfos(apiNames: [String!], locale: String, objectInfoInputs: [ObjectInfoInput!]): [ObjectInfo]\n}\n\ninput Setup__SetupPolymorphicParentRelationshipGroupBy @generic {\n Setup__SetupGroupBy: Setup__SetupGroupBy @fieldCategory\n}\n\n\n# ============================================================\n# Source: ui-services-private/java/resources/graphql-schemas/uiapi.graphqls\n# ============================================================\nscalar BigDecimal\nscalar Byte\nscalar Char\nscalar BigInteger\nscalar Short\nscalar String\nscalar Currency\nscalar Longitude\nscalar Float\nscalar PhoneNumber\nscalar Email\nscalar TextArea\nscalar Latitude\nscalar RichTextArea\nscalar EncryptedString\nscalar Long\nscalar JSON\nscalar Time\nscalar Percent\nscalar LongTextArea\nscalar DateTime\nscalar ID\nscalar Boolean\nscalar MultiPicklist\nscalar Base64\nscalar Url\nscalar Picklist\nscalar Double\nscalar Int\nscalar IdOrRef\nscalar Date\n\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 setup: Setup__Setup! @fieldCategory\n analytics: Analytics__Analytics! @fieldCategory\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 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\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\ninput UIAPIMutationsInput {\n \"Determines whether or not all the operations should be rolled back in the event one or more operations fail.\"\n allOrNone: Boolean = true\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 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\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\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 RelatedListInfo @team(name: \"Lists Platform\") {\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!], locale: String, objectInfoInputs: [ObjectInfoInput!]): [ObjectInfo]\n relatedListByName(parentApiName: String!, relatedListName: String!): RelatedListInfo\n}\n\n\"Input for ObjectInfo and PickValues\"\ninput ObjectInfoInput {\n apiName: String!\n recordTypeIDs: [ID!]\n fieldNames: [String!]\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\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 label: String\n}\n\ninput DatePrimitiveOperators {\n eq: Date\n ne: Date\n lt: Date\n gt: Date\n lte: Date\n gte: Date\n in: [Date]\n nin: [Date]\n}\n\ntype TimeAggregate implements FieldValue {\n value: Time\n displayValue: String\n format: String\n hourInDay: DateFunctionAggregation\n}\n\ninput DistanceInput {\n latitude: Latitude!\n longitude: Longitude!\n}\n\nunion PolymorphicParentRelationship @generic = RecordRepresentation\n\nenum AggregateOrderByNumberFunction {\n AVG\n COUNT\n COUNT_DISTINCT\n MAX\n MIN\n SUM\n}\n\ntype LongTextAreaValue implements FieldValue {\n value: LongTextArea\n displayValue: String\n label: String\n}\n\ninput OrderByClause {\n order: ResultOrder\n nulls: NullOrder\n}\n\ntype SObject__Field {\n name: String!\n value: String\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 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\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\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\ntype RecordUpdatePayload @generic {\n Record: RecordRepresentation\n success: Boolean @deprecated\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\ninput RecordCreateInput @generic {\n record: RecordCreateRepresentation! @fieldCategory\n}\n\ninput AggregateOrderByStringClause {\n function: AggregateOrderByStringFunction\n order: ResultsOrder\n nulls: NullsOrder\n}\n\n\"The return value for the mutation to delete a Record\"\ntype RecordDeletePayload {\n \"The ID of the deleted Record\"\n Id: ID\n}\n\nenum DateLiteral {\n YESTERDAY\n TODAY\n TOMORROW\n LAST_WEEK\n THIS_WEEK\n NEXT_WEEK\n LAST_MONTH\n THIS_MONTH\n NEXT_MONTH\n LAST_90_DAYS\n NEXT_90_DAYS\n LAST_QUARTER\n THIS_QUARTER\n NEXT_QUARTER\n LAST_FISCAL_QUARTER\n THIS_FISCAL_QUARTER\n NEXT_FISCAL_QUARTER\n LAST_YEAR\n THIS_YEAR\n NEXT_YEAR\n LAST_FISCAL_YEAR\n THIS_FISCAL_YEAR\n NEXT_FISCAL_YEAR\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 SetupUserSpecialField: BooleanValue @fieldCategory\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 AnyType: AnyType @fieldCategory\n parentRelationship: RecordRepresentation @fieldCategory\n polymorphicParentRelationship: PolymorphicParentRelationship @fieldCategory\n childRelationship(first: Int, after: String, where: RecordFilter, orderBy: RecordOrderBy, upperBound: Int): RecordConnection @fieldCategory\n CompoundField: CompoundField @fieldCategory\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 label: String\n max: TextAreaValue\n min: TextAreaValue\n}\n\nenum GroupByType {\n GROUP_BY\n ROLLUP\n CUBE\n}\n\nenum ResultsOrder {\n ASC\n DESC\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 RecordUpdateRepresentation @generic {\n Int: Int @fieldCategory\n String: String @fieldCategory\n Boolean: Boolean @fieldCategory\n ID: IdOrRef @fieldCategory\n DateTime: DateTime @fieldCategory\n Time: Time @fieldCategory\n Date: Date @fieldCategory\n TextArea: TextArea @fieldCategory\n LongTextArea: LongTextArea @fieldCategory\n RichTextArea: RichTextArea @fieldCategory\n PhoneNumber: PhoneNumber @fieldCategory\n Email: Email @fieldCategory\n Url: Url @fieldCategory\n EncryptedString: EncryptedString @fieldCategory\n Currency: Currency @fieldCategory\n Longitude: Longitude @fieldCategory\n Latitude: Latitude @fieldCategory\n Picklist: Picklist @fieldCategory\n MultiPicklist: MultiPicklist @fieldCategory\n Long: Long @fieldCategory\n Double: Double @fieldCategory\n Percent: Percent @fieldCategory\n Base64: Base64 @fieldCategory\n JSON: JSON @fieldCategory\n}\n\ntype DateTimeValue implements FieldValue {\n value: DateTime\n displayValue: String\n format: String\n}\n\n\"Input to the mutation to delete a Record\"\ninput RecordDeleteInput {\n \"The ID of the Record to delete\"\n Id: IdOrRef!\n}\n\ntype ListOrder @team(name: \"Lists Platform\") {\n fieldApiName: String!\n sortDirection: ResultOrder\n}\n\nenum AggregateOrderByStringFunction {\n COUNT\n COUNT_DISTINCT\n MAX\n MIN\n}\n\ntype LongValue implements FieldValue {\n value: Long\n displayValue: String\n format: String\n}\n\ntype DependentField {\n controllingField: String!\n dependentFields: [String]!\n}\n\ntype PercentValue implements FieldValue {\n value: Percent\n displayValue: String\n format: String\n}\n\ninput NoFunctionAggregateOrderByClause {\n order: ResultsOrder\n nulls: NullsOrder\n}\n\ntype RecordConnection @generic {\n edges: [RecordEdge]\n pageInfo: PageInfo!\n totalCount: Int!\n pageResultCount: 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 locale: String\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\ninterface 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\ntype StandardField implements 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\ntype PicklistField implements 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 picklistValuesByRecordTypeIDs: [PicklistValueByRecordTypeIDs]\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\ntype PicklistValueByRecordTypeIDs {\n recordTypeID: String!\n controllerValues: [ControllerValues!]\n picklistValues: [PicklistValues!]\n defaultValue: PicklistValues\n}\n\ntype ControllerValues {\n value: String\n index: Int\n}\n\ntype PicklistValues {\n value: String\n label: String\n validFor: [Int]\n attributes: PicklistAttributes\n}\n\ntype PicklistAttributes {\n picklistAtrributesValueType: String\n connectDisplayName: String\n internalName: String\n}\n\ninput DateTimeFunctionInput {\n value: DatePrimitiveOperators\n convertTimezoneValue: DatePrimitiveOperators\n}\n\ntype Base64Value implements FieldValue {\n value: Base64\n displayValue: String\n}\n\ntype CompoundField @generic {\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}\n\ninput RecordUpdateInput @generic {\n Id: IdOrRef!\n record: RecordUpdateRepresentation! @fieldCategory\n}\n\ninput DateTimeInput {\n value: DateTime\n literal: DateLiteral\n range: DateRange\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 convertCurrency: Currency\n}\n\ntype DateFunctionAggregation {\n value: Long\n format: String\n}\n\ninput PolymorphicParentRelationshipRecordOrderBy @generic {\n RecordOrderBy: RecordOrderBy @fieldCategory\n}\n\ntype RecordCreatePayload @generic {\n Record: RecordRepresentation\n}\n\ninput PolymorphicParentRelationshipGroupBy @generic {\n RecordGroupBy: RecordGroupBy @fieldCategory\n}\n\ntype BooleanValue implements FieldValue {\n value: Boolean\n displayValue: String\n}\n\ntype StringValue implements FieldValue {\n value: String\n displayValue: String\n label: 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 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\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\ninput BooleanOperators {\n eq: Boolean\n ne: Boolean\n}\n\ntype MultiPicklistValue implements FieldValue {\n value: MultiPicklist\n displayValue: String\n label: String\n}\n\ntype ListColumn @team(name: \"Lists Platform\") {\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\ntype LatitudeValue implements FieldValue {\n value: Latitude\n displayValue: String\n}\n\ninput GroupByClause {\n group: Boolean\n}\n\ntype RecordEdge @generic {\n node: RecordRepresentation\n cursor: String!\n}\n\nenum NullOrder {\n FIRST\n LAST\n}\n\ntype PhoneNumberValue implements FieldValue {\n value: PhoneNumber\n displayValue: String\n}\n\n# RecordScope is an empty enum\n# enum RecordScope @generic {\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 label: String\n}\n\ntype RecordAggregateEdge @generic {\n node: RecordResult\n cursor: String!\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\ntype IDValue implements FieldValue {\n value: ID\n displayValue: String\n}\n\nenum Unit {\n MI\n KM\n}\n\ninput PolymorphicParentRelationshipOrderBy @generic {\n RecordAggregateOrderBy: RecordAggregateOrderBy @fieldCategory\n}\n\nenum NullsOrder {\n FIRST\n LAST\n}\n\nenum ResultOrder {\n ASC\n DESC\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 like: Picklist\n lt: Picklist\n gt: Picklist\n lte: Picklist\n gte: 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\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 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 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 parentRelationship: RecordAggregate @fieldCategory\n polymorphicParentRelationship: PolymorphicAggregateParentRelationship @fieldCategory\n}\n\nenum SObject__FieldType {\n ALL\n STANDARD\n CUSTOM\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\ninput DateFunctionInput {\n value: LongOperators\n convertTimezoneValue: LongOperators\n}\n\n# Mutations are not supported by Luvio.\n# type Mutation {\n# uiapi(input: UIAPIMutationsInput): UIAPIMutations!\n# }\n\nunion PolymorphicAggregateParentRelationship @generic = RecordAggregate\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\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 # scope should be RecordScope, but it is an empty enum\n recordQueryAggregate(first: Int, after: String, where: RecordFilter, orderBy: RecordAggregateOrderBy, scope: String, groupBy: RecordGroupBy, upperBound: Int): RecordAggregateConnection @fieldCategory\n}\n\ninput RecordCreateRepresentation @generic {\n Int: Int @fieldCategory\n String: String @fieldCategory\n Boolean: Boolean @fieldCategory\n ID: IdOrRef @fieldCategory\n DateTime: DateTime @fieldCategory\n Time: Time @fieldCategory\n Date: Date @fieldCategory\n TextArea: TextArea @fieldCategory\n LongTextArea: LongTextArea @fieldCategory\n RichTextArea: RichTextArea @fieldCategory\n PhoneNumber: PhoneNumber @fieldCategory\n Email: Email @fieldCategory\n Url: Url @fieldCategory\n EncryptedString: EncryptedString @fieldCategory\n Currency: Currency @fieldCategory\n Longitude: Longitude @fieldCategory\n Latitude: Latitude @fieldCategory\n Picklist: Picklist @fieldCategory\n MultiPicklist: MultiPicklist @fieldCategory\n Long: Long @fieldCategory\n Double: Double @fieldCategory\n Percent: Percent @fieldCategory\n Base64: Base64 @fieldCategory\n JSON: JSON @fieldCategory\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\ntype UIAPIMutations {\n recordCreate(input: RecordCreateInput!): RecordCreatePayload @fieldCategory\n recordDelete(input: RecordDeleteInput!): RecordDeletePayload @fieldCategory\n recordUpdate(input: RecordUpdateInput!): RecordUpdatePayload @fieldCategory\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\n\"\"\"\nA type that can contain any of the following types: Boolean, Date, DateTime, Double, String.\nFormat and Label are not supported by AnyType and displayValue is an unformatted string representation of the value.\n\"\"\"\nunion AnyType = BooleanValue | DateValue | DateTimeValue | DoubleValue | StringValue\n\ninput AggregateOrderByNumberClause {\n function: AggregateOrderByNumberFunction\n order: ResultsOrder\n nulls: NullsOrder\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 RecordQuery {\n # scope should be RecordScope, but it is an empty enum\n recordQuery(first: Int, after: String, where: RecordFilter, orderBy: RecordOrderBy, scope: String, upperBound: Int, updateMRU: Boolean): RecordConnection @fieldCategory\n}\n\ninput RecordAggregateOrderBy @generic {\n orderableNumberField: AggregateOrderByNumberClause @fieldCategory\n orderableStringField: AggregateOrderByStringClause @fieldCategory\n orderableField: NoFunctionAggregateOrderByClause @fieldCategory\n orderableGeolocationField: OrderByGeolocationClause @fieldCategory\n orderableParentRelationship: RecordAggregateOrderBy @fieldCategory\n orderablePolymorphicParentRelationship: PolymorphicParentRelationshipOrderBy @fieldCategory\n}\n\ninput IgnoreRule {\n rule: String!\n teamName: String!\n justification: String!\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(name: String!) on FIELD\n\"Specifies the team name for a type\"\ndirective @team(name: String!) on OBJECT | INPUT_OBJECT | INTERFACE | ENUM | UNION | SCALAR\n\"Specifies the validation rules to ignore for this element.\"\ndirective @ignoreRule(rules: [IgnoreRule!]!) on OBJECT\n | INPUT_OBJECT\n | INTERFACE\n | ENUM\n | UNION\n | SCALAR\n | FIELD_DEFINITION\n | INPUT_FIELD_DEFINITION\n | ARGUMENT_DEFINITION\n | ENUM_VALUE\ndirective @optional on FIELD\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}";
|
|
48043
48333
|
|
|
48044
48334
|
// Define additional schema that is missing from uiapi that we use in local evaluation
|
|
48045
48335
|
const additionalSchemaDefinitions = /* GraphQL */ `
|
|
@@ -57804,14 +58094,27 @@ const _FetchNetworkCommand = class _FetchNetworkCommand extends NetworkCommand {
|
|
|
57804
58094
|
constructor(services) {
|
|
57805
58095
|
super(services);
|
|
57806
58096
|
this.services = services;
|
|
58097
|
+
this.additionalNullResponses = [];
|
|
57807
58098
|
}
|
|
57808
|
-
fetch() {
|
|
58099
|
+
fetch(contextSeed) {
|
|
57809
58100
|
try {
|
|
57810
|
-
|
|
58101
|
+
const [input, init] = this.fetchParams;
|
|
58102
|
+
const initWithSeed = contextSeed === void 0 ? init : { ...init, __contextSeed: contextSeed };
|
|
58103
|
+
const fetchCall = initWithSeed === void 0 ? this.services.fetch(input) : this.services.fetch(input, initWithSeed);
|
|
58104
|
+
return this.convertFetchResponseToData(fetchCall);
|
|
57811
58105
|
} catch (reason) {
|
|
57812
58106
|
return resolvedPromiseLike$2(err$1(toError(reason)));
|
|
57813
58107
|
}
|
|
57814
58108
|
}
|
|
58109
|
+
isSemanticNullResponse(response) {
|
|
58110
|
+
return this.additionalNullResponses.includes(response.status);
|
|
58111
|
+
}
|
|
58112
|
+
isProtocolNoBodyStatus(status) {
|
|
58113
|
+
return status === 204 || status === 205;
|
|
58114
|
+
}
|
|
58115
|
+
isUndeclaredNoBodyResponse(response) {
|
|
58116
|
+
return this.isProtocolNoBodyStatus(response.status) && !this.isSemanticNullResponse(response);
|
|
58117
|
+
}
|
|
57815
58118
|
async coerceError(errorResponse) {
|
|
57816
58119
|
return toError(errorResponse.statusText);
|
|
57817
58120
|
}
|
|
@@ -57819,10 +58122,24 @@ const _FetchNetworkCommand = class _FetchNetworkCommand extends NetworkCommand {
|
|
|
57819
58122
|
return response.then(
|
|
57820
58123
|
(response2) => {
|
|
57821
58124
|
if (response2.ok) {
|
|
57822
|
-
|
|
57823
|
-
|
|
57824
|
-
|
|
57825
|
-
|
|
58125
|
+
let resultPromise;
|
|
58126
|
+
if (this.isSemanticNullResponse(response2)) {
|
|
58127
|
+
resultPromise = Promise.resolve(ok$1(null));
|
|
58128
|
+
} else if (this.isUndeclaredNoBodyResponse(response2)) {
|
|
58129
|
+
resultPromise = Promise.resolve(
|
|
58130
|
+
err$1(
|
|
58131
|
+
toError(
|
|
58132
|
+
`Unexpected ${response2.status} response: no-content status was not declared in the API specification. Declare this response in your OAS without a content property.`
|
|
58133
|
+
)
|
|
58134
|
+
)
|
|
58135
|
+
);
|
|
58136
|
+
} else {
|
|
58137
|
+
resultPromise = response2.json().then(
|
|
58138
|
+
(json) => ok$1(json),
|
|
58139
|
+
(reason) => err$1(toError(reason))
|
|
58140
|
+
);
|
|
58141
|
+
}
|
|
58142
|
+
return resultPromise.finally(() => {
|
|
57826
58143
|
try {
|
|
57827
58144
|
this.afterRequestHooks({ statusCode: response2.status });
|
|
57828
58145
|
} catch {
|
|
@@ -57869,6 +58186,7 @@ class HttpCacheControlCommand extends CacheControlCommand {
|
|
|
57869
58186
|
constructor(services) {
|
|
57870
58187
|
super(services);
|
|
57871
58188
|
this.services = services;
|
|
58189
|
+
this.additionalNullResponses = [];
|
|
57872
58190
|
}
|
|
57873
58191
|
requestFromNetwork() {
|
|
57874
58192
|
return this.fetch();
|
|
@@ -57880,6 +58198,15 @@ class HttpCacheControlCommand extends CacheControlCommand {
|
|
|
57880
58198
|
return resolvedPromiseLike$2(err$1(toError(reason)));
|
|
57881
58199
|
}
|
|
57882
58200
|
}
|
|
58201
|
+
isSemanticNullResponse(response) {
|
|
58202
|
+
return this.additionalNullResponses.includes(response.status);
|
|
58203
|
+
}
|
|
58204
|
+
isProtocolNoBodyStatus(status) {
|
|
58205
|
+
return status === 204 || status === 205;
|
|
58206
|
+
}
|
|
58207
|
+
isUndeclaredNoBodyResponse(response) {
|
|
58208
|
+
return this.isProtocolNoBodyStatus(response.status) && !this.isSemanticNullResponse(response);
|
|
58209
|
+
}
|
|
57883
58210
|
async coerceError(errorResponse) {
|
|
57884
58211
|
return toError(errorResponse.statusText);
|
|
57885
58212
|
}
|
|
@@ -57890,12 +58217,26 @@ class HttpCacheControlCommand extends CacheControlCommand {
|
|
|
57890
58217
|
return response.then(
|
|
57891
58218
|
(response2) => {
|
|
57892
58219
|
if (response2.ok) {
|
|
57893
|
-
|
|
57894
|
-
|
|
57895
|
-
|
|
57896
|
-
|
|
57897
|
-
|
|
57898
|
-
|
|
58220
|
+
let resultPromise;
|
|
58221
|
+
if (this.isSemanticNullResponse(response2)) {
|
|
58222
|
+
resultPromise = Promise.resolve(ok$1(null));
|
|
58223
|
+
} else if (this.isUndeclaredNoBodyResponse(response2)) {
|
|
58224
|
+
resultPromise = Promise.resolve(
|
|
58225
|
+
err$1(
|
|
58226
|
+
toError(
|
|
58227
|
+
`Unexpected ${response2.status} response: no-content status was not declared in the API specification. Declare this response in your OAS without a content property.`
|
|
58228
|
+
)
|
|
58229
|
+
)
|
|
58230
|
+
);
|
|
58231
|
+
} else {
|
|
58232
|
+
resultPromise = response2.json().then(
|
|
58233
|
+
(json) => {
|
|
58234
|
+
return this.processFetchReturnValue(json);
|
|
58235
|
+
},
|
|
58236
|
+
(reason) => err$1(toError(reason))
|
|
58237
|
+
);
|
|
58238
|
+
}
|
|
58239
|
+
return resultPromise.finally(() => {
|
|
57899
58240
|
try {
|
|
57900
58241
|
this.afterRequestHooks({ statusCode: response2.status });
|
|
57901
58242
|
} catch {
|
|
@@ -58883,7 +59224,7 @@ function buildServiceDescriptor$b(luvio) {
|
|
|
58883
59224
|
},
|
|
58884
59225
|
};
|
|
58885
59226
|
}
|
|
58886
|
-
// version: 1.428.0-
|
|
59227
|
+
// version: 1.428.0-dev21-133a7da4f5
|
|
58887
59228
|
|
|
58888
59229
|
/**
|
|
58889
59230
|
* Copyright (c) 2022, Salesforce, Inc.,
|
|
@@ -58909,7 +59250,7 @@ function buildServiceDescriptor$a(notifyRecordUpdateAvailable, getNormalizedLuvi
|
|
|
58909
59250
|
},
|
|
58910
59251
|
};
|
|
58911
59252
|
}
|
|
58912
|
-
// version: 1.428.0-
|
|
59253
|
+
// version: 1.428.0-dev21-133a7da4f5
|
|
58913
59254
|
|
|
58914
59255
|
/*!
|
|
58915
59256
|
* Copyright (c) 2022, Salesforce, Inc.,
|
|
@@ -59394,6 +59735,9 @@ function invalidSchemaResponseWithError(error) {
|
|
|
59394
59735
|
return err$1([error]);
|
|
59395
59736
|
}
|
|
59396
59737
|
function validateJsonSchema(data, schema, path = "$", document = schema) {
|
|
59738
|
+
return validateJsonSchemaInternal(data, schema, path, document, /* @__PURE__ */ new Map());
|
|
59739
|
+
}
|
|
59740
|
+
function validateJsonSchemaInternal(data, schema, path, document, visited) {
|
|
59397
59741
|
if (schema === true) return validSchemaResponse();
|
|
59398
59742
|
if (schema === false)
|
|
59399
59743
|
return invalidSchemaResponseWithError(
|
|
@@ -59402,22 +59746,22 @@ function validateJsonSchema(data, schema, path = "$", document = schema) {
|
|
|
59402
59746
|
const dataType = data === null ? "null" : Array.isArray(data) ? "array" : typeof data;
|
|
59403
59747
|
const errorCollector = new JsonSchemaErrorCollector();
|
|
59404
59748
|
if ("anyOf" in schema) {
|
|
59405
|
-
errorCollector.append(validateAnyOf(data, schema, path, document));
|
|
59749
|
+
errorCollector.append(validateAnyOf(data, schema, path, document, visited));
|
|
59406
59750
|
} else if ("oneOf" in schema) {
|
|
59407
|
-
errorCollector.append(validateOneOf(data, schema, path, document));
|
|
59751
|
+
errorCollector.append(validateOneOf(data, schema, path, document, visited));
|
|
59408
59752
|
} else if ("allOf" in schema) {
|
|
59409
|
-
errorCollector.append(validateAllOf(data, schema, path, document));
|
|
59753
|
+
errorCollector.append(validateAllOf(data, schema, path, document, visited));
|
|
59410
59754
|
} else if ("not" in schema) {
|
|
59411
|
-
errorCollector.append(validateNot(data, schema, path, document));
|
|
59755
|
+
errorCollector.append(validateNot(data, schema, path, document, visited));
|
|
59412
59756
|
} else if ("$ref" in schema) {
|
|
59413
|
-
errorCollector.append(validateRef(data, schema, path, document));
|
|
59757
|
+
errorCollector.append(validateRef(data, schema, path, document, visited));
|
|
59414
59758
|
} else if ("type" in schema) {
|
|
59415
59759
|
if (schema.type === "object") {
|
|
59416
59760
|
if (dataType !== "object") {
|
|
59417
59761
|
errorCollector.add(incorrectTypeError("object", dataType, path));
|
|
59418
59762
|
} else {
|
|
59419
59763
|
errorCollector.append(
|
|
59420
|
-
validateObject(data, schema, path, document)
|
|
59764
|
+
validateObject(data, schema, path, document, visited)
|
|
59421
59765
|
);
|
|
59422
59766
|
}
|
|
59423
59767
|
} else if (schema.type === "array") {
|
|
@@ -59425,7 +59769,7 @@ function validateJsonSchema(data, schema, path = "$", document = schema) {
|
|
|
59425
59769
|
errorCollector.add(incorrectTypeError("array", dataType, path));
|
|
59426
59770
|
} else {
|
|
59427
59771
|
errorCollector.append(
|
|
59428
|
-
validateArray(data, schema, path, document)
|
|
59772
|
+
validateArray(data, schema, path, document, visited)
|
|
59429
59773
|
);
|
|
59430
59774
|
}
|
|
59431
59775
|
} else {
|
|
@@ -59442,16 +59786,17 @@ function validateJsonSchema(data, schema, path = "$", document = schema) {
|
|
|
59442
59786
|
}
|
|
59443
59787
|
return errorCollector.toValidationResponse();
|
|
59444
59788
|
}
|
|
59445
|
-
function validateAnyOf(data, schema, path, document) {
|
|
59789
|
+
function validateAnyOf(data, schema, path, document, visited) {
|
|
59446
59790
|
let isValid = false;
|
|
59447
59791
|
const errorCollector = new JsonSchemaErrorCollector();
|
|
59448
59792
|
for (let i = 0, { length } = schema.anyOf; i < length; i++) {
|
|
59449
59793
|
const element = schema.anyOf[i];
|
|
59450
|
-
const validationResponse =
|
|
59794
|
+
const validationResponse = validateJsonSchemaInternal(
|
|
59451
59795
|
data,
|
|
59452
59796
|
element,
|
|
59453
59797
|
`${path}.anyOf[${i}]`,
|
|
59454
|
-
document
|
|
59798
|
+
document,
|
|
59799
|
+
visited
|
|
59455
59800
|
);
|
|
59456
59801
|
if (validationResponse.isOk()) {
|
|
59457
59802
|
isValid = true;
|
|
@@ -59468,13 +59813,22 @@ function validateAnyOf(data, schema, path, document) {
|
|
|
59468
59813
|
}
|
|
59469
59814
|
return validSchemaResponse();
|
|
59470
59815
|
}
|
|
59471
|
-
function validateOneOf(data, schema, path, document) {
|
|
59816
|
+
function validateOneOf(data, schema, path, document, visited) {
|
|
59817
|
+
if (schema.discriminator !== void 0) {
|
|
59818
|
+
return validateDiscriminatedOneOf(data, schema.discriminator, path, document, visited);
|
|
59819
|
+
}
|
|
59472
59820
|
let validSubShemaPaths = [];
|
|
59473
59821
|
const errorCollector = new JsonSchemaErrorCollector();
|
|
59474
59822
|
for (let i = 0, { length } = schema.oneOf; i < length; i++) {
|
|
59475
59823
|
const element = schema.oneOf[i];
|
|
59476
59824
|
const oneOfPath = `${path}.oneOf[${i}]`;
|
|
59477
|
-
const validationResponse =
|
|
59825
|
+
const validationResponse = validateJsonSchemaInternal(
|
|
59826
|
+
data,
|
|
59827
|
+
element,
|
|
59828
|
+
oneOfPath,
|
|
59829
|
+
document,
|
|
59830
|
+
visited
|
|
59831
|
+
);
|
|
59478
59832
|
if (validationResponse.isOk()) {
|
|
59479
59833
|
validSubShemaPaths.push(oneOfPath);
|
|
59480
59834
|
} else {
|
|
@@ -59496,16 +59850,45 @@ function validateOneOf(data, schema, path, document) {
|
|
|
59496
59850
|
}
|
|
59497
59851
|
return validSchemaResponse();
|
|
59498
59852
|
}
|
|
59499
|
-
function
|
|
59853
|
+
function validateDiscriminatedOneOf(data, discriminator, path, document, visited) {
|
|
59854
|
+
if (data === null || typeof data !== "object" || Array.isArray(data)) {
|
|
59855
|
+
return invalidSchemaResponseWithError(incorrectTypeError("object", typeof data, path));
|
|
59856
|
+
}
|
|
59857
|
+
const { propertyName, mapping } = discriminator;
|
|
59858
|
+
const discriminatorValue = data[propertyName];
|
|
59859
|
+
if (discriminatorValue === void 0) {
|
|
59860
|
+
return invalidSchemaResponseWithError(
|
|
59861
|
+
new MissingRequiredPropertyError(
|
|
59862
|
+
`Object at path '${path}' is missing required discriminator property '${propertyName}'.`
|
|
59863
|
+
)
|
|
59864
|
+
);
|
|
59865
|
+
}
|
|
59866
|
+
if (typeof discriminatorValue !== "string") {
|
|
59867
|
+
return invalidSchemaResponseWithError(
|
|
59868
|
+
incorrectTypeError("string", typeof discriminatorValue, `${path}.${propertyName}`)
|
|
59869
|
+
);
|
|
59870
|
+
}
|
|
59871
|
+
const targetRef = mapping[discriminatorValue];
|
|
59872
|
+
if (targetRef === void 0) {
|
|
59873
|
+
return invalidSchemaResponseWithError(
|
|
59874
|
+
new JsonSchemaViolationError(
|
|
59875
|
+
`Discriminator value '${discriminatorValue}' at '${path}.${propertyName}' is not in the mapping. Expected one of: [${Object.keys(mapping).join(", ")}].`
|
|
59876
|
+
)
|
|
59877
|
+
);
|
|
59878
|
+
}
|
|
59879
|
+
return validateJsonSchemaInternal(data, { $ref: targetRef }, path, document, visited);
|
|
59880
|
+
}
|
|
59881
|
+
function validateAllOf(data, schema, path, document, visited) {
|
|
59500
59882
|
let isValid = true;
|
|
59501
59883
|
const errorCollector = new JsonSchemaErrorCollector();
|
|
59502
59884
|
for (let i = 0, { length } = schema.allOf; i < length; i++) {
|
|
59503
59885
|
const element = schema.allOf[i];
|
|
59504
|
-
const validationResponse =
|
|
59886
|
+
const validationResponse = validateJsonSchemaInternal(
|
|
59505
59887
|
data,
|
|
59506
59888
|
element,
|
|
59507
59889
|
`${path}.allOf[${i}]`,
|
|
59508
|
-
document
|
|
59890
|
+
document,
|
|
59891
|
+
visited
|
|
59509
59892
|
);
|
|
59510
59893
|
if (!validationResponse.isOk()) {
|
|
59511
59894
|
errorCollector.append(validationResponse);
|
|
@@ -59519,8 +59902,14 @@ function validateAllOf(data, schema, path, document) {
|
|
|
59519
59902
|
}
|
|
59520
59903
|
return errorCollector.toValidationResponse();
|
|
59521
59904
|
}
|
|
59522
|
-
function validateNot(data, schema, path, document) {
|
|
59523
|
-
const validationResponse =
|
|
59905
|
+
function validateNot(data, schema, path, document, visited) {
|
|
59906
|
+
const validationResponse = validateJsonSchemaInternal(
|
|
59907
|
+
data,
|
|
59908
|
+
schema.not,
|
|
59909
|
+
path,
|
|
59910
|
+
document,
|
|
59911
|
+
visited
|
|
59912
|
+
);
|
|
59524
59913
|
if (validationResponse.isOk()) {
|
|
59525
59914
|
return invalidSchemaResponseWithError(
|
|
59526
59915
|
new JsonSchemaViolationError(
|
|
@@ -59530,7 +59919,7 @@ function validateNot(data, schema, path, document) {
|
|
|
59530
59919
|
}
|
|
59531
59920
|
return validSchemaResponse();
|
|
59532
59921
|
}
|
|
59533
|
-
function validateObject(data, schema, path, document) {
|
|
59922
|
+
function validateObject(data, schema, path, document, visited) {
|
|
59534
59923
|
const schemaKeys = Object.keys(schema.properties);
|
|
59535
59924
|
const requiredKeys = new Set(schema.required);
|
|
59536
59925
|
const schemaKeySet = new Set(schemaKeys);
|
|
@@ -59538,11 +59927,12 @@ function validateObject(data, schema, path, document) {
|
|
|
59538
59927
|
Object.keys(data).forEach((key) => {
|
|
59539
59928
|
if (!schemaKeySet.has(key)) {
|
|
59540
59929
|
errorCollector.append(
|
|
59541
|
-
|
|
59930
|
+
validateJsonSchemaInternal(
|
|
59542
59931
|
data[key],
|
|
59543
59932
|
schema.additionalProperties,
|
|
59544
59933
|
`${path}.additionalProperties[${key}]`,
|
|
59545
|
-
document
|
|
59934
|
+
document,
|
|
59935
|
+
visited
|
|
59546
59936
|
)
|
|
59547
59937
|
);
|
|
59548
59938
|
}
|
|
@@ -59559,18 +59949,19 @@ function validateObject(data, schema, path, document) {
|
|
|
59559
59949
|
}
|
|
59560
59950
|
if (keyInData) {
|
|
59561
59951
|
errorCollector.append(
|
|
59562
|
-
|
|
59952
|
+
validateJsonSchemaInternal(
|
|
59563
59953
|
data[key],
|
|
59564
59954
|
schema.properties[key],
|
|
59565
59955
|
`${path}.${key}`,
|
|
59566
|
-
document
|
|
59956
|
+
document,
|
|
59957
|
+
visited
|
|
59567
59958
|
)
|
|
59568
59959
|
);
|
|
59569
59960
|
}
|
|
59570
59961
|
}
|
|
59571
59962
|
return errorCollector.toValidationResponse();
|
|
59572
59963
|
}
|
|
59573
|
-
function validateArray(data, schema, path, document) {
|
|
59964
|
+
function validateArray(data, schema, path, document, visited) {
|
|
59574
59965
|
if (schema.minItems !== void 0 && data.length < schema.minItems) {
|
|
59575
59966
|
return invalidSchemaResponseWithError(
|
|
59576
59967
|
new MinItemsViolationError(
|
|
@@ -59588,7 +59979,13 @@ function validateArray(data, schema, path, document) {
|
|
|
59588
59979
|
const errorCollector = new JsonSchemaErrorCollector();
|
|
59589
59980
|
data.forEach(
|
|
59590
59981
|
(element, index) => errorCollector.append(
|
|
59591
|
-
|
|
59982
|
+
validateJsonSchemaInternal(
|
|
59983
|
+
element,
|
|
59984
|
+
schema.items,
|
|
59985
|
+
`${path}[${index}]`,
|
|
59986
|
+
document,
|
|
59987
|
+
visited
|
|
59988
|
+
)
|
|
59592
59989
|
)
|
|
59593
59990
|
);
|
|
59594
59991
|
return errorCollector.toValidationResponse();
|
|
@@ -59623,7 +60020,7 @@ function validateScalar(data, schema, path) {
|
|
|
59623
60020
|
}
|
|
59624
60021
|
return validSchemaResponse();
|
|
59625
60022
|
}
|
|
59626
|
-
function validateRef(data, schema, path, document) {
|
|
60023
|
+
function validateRef(data, schema, path, document, visited) {
|
|
59627
60024
|
if (!schema.$ref.startsWith("#")) {
|
|
59628
60025
|
return invalidSchemaResponseWithError(
|
|
59629
60026
|
new InvalidRefError(
|
|
@@ -59631,11 +60028,23 @@ function validateRef(data, schema, path, document) {
|
|
|
59631
60028
|
)
|
|
59632
60029
|
);
|
|
59633
60030
|
}
|
|
60031
|
+
let refsForData = visited.get(data);
|
|
60032
|
+
if (refsForData !== void 0 && refsForData.has(schema.$ref)) {
|
|
60033
|
+
return validSchemaResponse();
|
|
60034
|
+
}
|
|
60035
|
+
if (refsForData === void 0) {
|
|
60036
|
+
refsForData = /* @__PURE__ */ new Set();
|
|
60037
|
+
visited.set(data, refsForData);
|
|
60038
|
+
}
|
|
60039
|
+
refsForData.add(schema.$ref);
|
|
59634
60040
|
try {
|
|
59635
60041
|
const schemaToValidate = findSchemaAtPath(document, schema.$ref);
|
|
59636
|
-
return
|
|
60042
|
+
return validateJsonSchemaInternal(data, schemaToValidate, path, document, visited);
|
|
59637
60043
|
} catch (e) {
|
|
59638
60044
|
return invalidSchemaResponseWithError(e);
|
|
60045
|
+
} finally {
|
|
60046
|
+
refsForData.delete(schema.$ref);
|
|
60047
|
+
if (refsForData.size === 0) visited.delete(data);
|
|
59639
60048
|
}
|
|
59640
60049
|
}
|
|
59641
60050
|
function validateEnum(data, enumValue, path) {
|
|
@@ -60520,9 +60929,18 @@ function buildServiceDescriptor$1(interceptors = {
|
|
|
60520
60929
|
return {
|
|
60521
60930
|
type: "fetch",
|
|
60522
60931
|
version: "1.0",
|
|
60523
|
-
service: function(
|
|
60932
|
+
service: function(input, init) {
|
|
60524
60933
|
var _a;
|
|
60525
|
-
|
|
60934
|
+
let contextSeed;
|
|
60935
|
+
let cleanInit = init;
|
|
60936
|
+
if (init !== void 0 && "__contextSeed" in init) {
|
|
60937
|
+
const { __contextSeed, ...initWithoutSeed } = init;
|
|
60938
|
+
contextSeed = __contextSeed;
|
|
60939
|
+
cleanInit = Object.keys(initWithoutSeed).length === 0 ? void 0 : initWithoutSeed;
|
|
60940
|
+
}
|
|
60941
|
+
const fetchArgs = cleanInit === void 0 ? [input] : [input, cleanInit];
|
|
60942
|
+
const baseContext = (_a = interceptors.createContext) == null ? void 0 : _a.call(interceptors);
|
|
60943
|
+
const context = contextSeed === void 0 ? baseContext : { ...baseContext, ...contextSeed };
|
|
60526
60944
|
const {
|
|
60527
60945
|
request: requestInterceptors = [],
|
|
60528
60946
|
retry: retryInterceptor = void 0,
|
|
@@ -60530,17 +60948,17 @@ function buildServiceDescriptor$1(interceptors = {
|
|
|
60530
60948
|
finally: finallyInterceptors = []
|
|
60531
60949
|
} = interceptors;
|
|
60532
60950
|
const pending = requestInterceptors.reduce(
|
|
60533
|
-
(previousPromise, interceptor) => previousPromise.then((
|
|
60534
|
-
resolvedPromiseLike$2(
|
|
60951
|
+
(previousPromise, interceptor) => previousPromise.then((args) => interceptor(args, context)),
|
|
60952
|
+
resolvedPromiseLike$2(fetchArgs)
|
|
60535
60953
|
);
|
|
60536
|
-
return Promise.resolve(pending).then((
|
|
60954
|
+
return Promise.resolve(pending).then((args) => {
|
|
60537
60955
|
if (retryInterceptor) {
|
|
60538
|
-
return retryInterceptor(
|
|
60956
|
+
return retryInterceptor(args, retryService, context);
|
|
60539
60957
|
} else {
|
|
60540
60958
|
if (retryService) {
|
|
60541
|
-
return retryService.applyRetry(() => fetch(...
|
|
60959
|
+
return retryService.applyRetry(() => fetch(...args));
|
|
60542
60960
|
}
|
|
60543
|
-
return fetch(...
|
|
60961
|
+
return fetch(...args);
|
|
60544
60962
|
}
|
|
60545
60963
|
}).then((response) => {
|
|
60546
60964
|
return responseInterceptors.reduce(
|
|
@@ -61569,4 +61987,4 @@ register({
|
|
|
61569
61987
|
});
|
|
61570
61988
|
|
|
61571
61989
|
export { O11Y_NAMESPACE_LDS_MOBILE, getRuntime, ingest$1o as ingestDenormalizedRecordRepresentation, initializeOneStore, registerReportObserver, reportGraphqlQueryParseError };
|
|
61572
|
-
// version: 1.428.0-
|
|
61990
|
+
// version: 1.428.0-dev21-c9faba50c9
|