@salesforce/lds-runtime-mobile 1.326.0 → 1.327.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js
CHANGED
|
@@ -19,14 +19,11 @@ 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, setBypassDeepFreeze, StoreKeySet, serializeStructuredKey, StringKeyInMemoryStore, Reader, deepFreeze, 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 ldsIdempotencyWriteDisabled from '@salesforce/gate/lds.idempotencyWriteDisabled';
|
|
23
|
-
import ldsBackdatingEnabled from '@salesforce/gate/lds.backdatingEnabled';
|
|
24
22
|
import { Kind as Kind$1, visit as visit$1, isObjectType, defaultFieldResolver, buildSchema, parse as parse$5, extendSchema, isScalarType, execute, print } from '@luvio/graphql-parser';
|
|
25
23
|
import FIRST_DAY_OF_WEEK from '@salesforce/i18n/firstDayOfWeek';
|
|
26
24
|
import graphqQueryFieldLimit from '@salesforce/gate/lmr.graphqQueryFieldLimit';
|
|
27
25
|
import caseSensitiveUserId from '@salesforce/user/Id';
|
|
28
26
|
import { idleDetector, getInstrumentation } from 'o11y/client';
|
|
29
|
-
import ldsUseShortUrlGate from '@salesforce/gate/lds.useShortUrl';
|
|
30
27
|
import { instrument as instrument$1 } from '@salesforce/lds-bindings';
|
|
31
28
|
import ldsAdapterO11yLoggingGate from '@salesforce/gate/lmr.ldsAdapterO11yLogging';
|
|
32
29
|
import LOCALE from '@salesforce/i18n/locale';
|
|
@@ -37,12 +34,8 @@ import shortTimeFormat from '@salesforce/i18n/dateTime.shortTimeFormat';
|
|
|
37
34
|
import shortDateTimeFormat from '@salesforce/i18n/dateTime.shortDateTimeFormat';
|
|
38
35
|
import { getDateTimeFormat, getDateTimeISO8601Parser, getNumberFormat } from 'lightning/i18nService';
|
|
39
36
|
import formattingOptions from 'lightning/i18nCldrOptions';
|
|
40
|
-
import eagerEvalValidAt from '@salesforce/gate/lds.eagerEvalValidAt';
|
|
41
|
-
import eagerEvalStaleWhileRevalidate from '@salesforce/gate/lds.eagerEvalStaleWhileRevalidate';
|
|
42
|
-
import eagerEvalDefaultCachePolicy from '@salesforce/gate/lds.eagerEvalDefaultCachePolicy';
|
|
43
37
|
import ldsPrimingGraphqlBatch from '@salesforce/gate/lds.primingGraphqlBatch';
|
|
44
38
|
import lmrPrimingUseSoql from '@salesforce/gate/lmr.primingUseSoql';
|
|
45
|
-
import ldsMetadataRefreshEnabled from '@salesforce/gate/lds.metadataRefreshEnabled';
|
|
46
39
|
import graphqlL2AdapterGate from '@salesforce/gate/lmr.graphqlL2Adapter';
|
|
47
40
|
|
|
48
41
|
/**
|
|
@@ -77,7 +70,7 @@ function instrument(newInstrumentation) {
|
|
|
77
70
|
const LDS_RECORDS_AGGREGATE_UI = 'LDS_Records_AggregateUi';
|
|
78
71
|
// Boundary which represents the limit that we start chunking at,
|
|
79
72
|
// determined by comma separated string length of fields
|
|
80
|
-
const MAX_STRING_LENGTH_PER_CHUNK
|
|
73
|
+
const MAX_STRING_LENGTH_PER_CHUNK = 10000;
|
|
81
74
|
// UIAPI limit
|
|
82
75
|
const MAX_AGGREGATE_UI_CHUNK_LIMIT = 50;
|
|
83
76
|
function createOkResponse$1(body) {
|
|
@@ -181,7 +174,7 @@ function dispatchSplitRecordAggregateUiAction(recordId, networkAdapter, resource
|
|
|
181
174
|
});
|
|
182
175
|
}
|
|
183
176
|
function shouldUseAggregateUiForGetRecord(fieldsArray, optionalFieldsArray) {
|
|
184
|
-
return fieldsArray.length + optionalFieldsArray.length >= MAX_STRING_LENGTH_PER_CHUNK
|
|
177
|
+
return fieldsArray.length + optionalFieldsArray.length >= MAX_STRING_LENGTH_PER_CHUNK;
|
|
185
178
|
}
|
|
186
179
|
function buildAggregateUiUrl$1(params, resourceRequest) {
|
|
187
180
|
const { fields, optionalFields } = params;
|
|
@@ -200,7 +193,7 @@ function buildGetRecordByFieldsCompositeRequest(resourceRequest, recordsComposit
|
|
|
200
193
|
const { fieldsArray, optionalFieldsArray, fieldsLength, optionalFieldsLength } = recordsCompositeRequest;
|
|
201
194
|
// Formula: # of fields per chunk = floor(avg field length / max length per chunk)
|
|
202
195
|
const averageFieldStringLength = Math.floor((fieldsLength + optionalFieldsLength) / (fieldsArray.length + optionalFieldsArray.length));
|
|
203
|
-
const fieldsPerChunk = Math.floor(MAX_STRING_LENGTH_PER_CHUNK
|
|
196
|
+
const fieldsPerChunk = Math.floor(MAX_STRING_LENGTH_PER_CHUNK / averageFieldStringLength);
|
|
204
197
|
const optionalFieldsChunks = [];
|
|
205
198
|
// Do the same for optional tracked fields
|
|
206
199
|
for (let i = 0, j = optionalFieldsArray.length; i < j; i += fieldsPerChunk) {
|
|
@@ -41834,11 +41827,6 @@ class AbstractResourceRequestActionHandler {
|
|
|
41834
41827
|
this.recordService = recordService;
|
|
41835
41828
|
// determined by Server setup.
|
|
41836
41829
|
this.isIdempotencySupported = true;
|
|
41837
|
-
// idempotency write flag set by lds
|
|
41838
|
-
this.isLdsIdempotencyWriteDisabled = ldsIdempotencyWriteDisabled.isOpen({
|
|
41839
|
-
fallback: false,
|
|
41840
|
-
});
|
|
41841
|
-
this.isBackdatingEnabled = ldsBackdatingEnabled.isOpen({ fallback: false });
|
|
41842
41830
|
}
|
|
41843
41831
|
enqueue(data) {
|
|
41844
41832
|
return this.draftQueue.enqueue(this.handlerId, data);
|
|
@@ -41937,8 +41925,7 @@ class AbstractResourceRequestActionHandler {
|
|
|
41937
41925
|
updatedAction.data.headers[HTTP_HEADER_IDEMPOTENCY_KEY] = uuidv4();
|
|
41938
41926
|
actionDataChanged = true;
|
|
41939
41927
|
}
|
|
41940
|
-
if (
|
|
41941
|
-
response.status === HttpStatusCode.BadRequest &&
|
|
41928
|
+
if (response.status === HttpStatusCode.BadRequest &&
|
|
41942
41929
|
this.isBackdatingError(response.body, action)) {
|
|
41943
41930
|
updatedAction.timestamp = Date.now();
|
|
41944
41931
|
updatedAction.data.body.fields = {
|
|
@@ -42213,7 +42200,7 @@ class AbstractResourceRequestActionHandler {
|
|
|
42213
42200
|
return [action.targetId];
|
|
42214
42201
|
}
|
|
42215
42202
|
hasIdempotencySupport() {
|
|
42216
|
-
return this.isIdempotencySupported
|
|
42203
|
+
return this.isIdempotencySupported;
|
|
42217
42204
|
}
|
|
42218
42205
|
async ingestResponses(responses, action) {
|
|
42219
42206
|
const luvio = this.getLuvio();
|
|
@@ -42341,8 +42328,7 @@ class UiApiActionHandler extends AbstractResourceRequestActionHandler {
|
|
|
42341
42328
|
}
|
|
42342
42329
|
// handles backdating
|
|
42343
42330
|
const objectInfo = await this.objectInfoService.getObjectInfo(targetApiName);
|
|
42344
|
-
if (
|
|
42345
|
-
pendingAction.data &&
|
|
42331
|
+
if (pendingAction.data &&
|
|
42346
42332
|
pendingAction.data.method !== 'delete' && //'delete' action does not have fields
|
|
42347
42333
|
objectInfo) {
|
|
42348
42334
|
const appendedFields = this.getBackdatingFields(objectInfo, resolvedRequest.method, pendingAction);
|
|
@@ -43053,7 +43039,7 @@ class ContentDocumentCompositeRepresentationActionHandler extends AbstractResour
|
|
|
43053
43039
|
if (objectInfo === undefined) {
|
|
43054
43040
|
throw Error(`Could not generate draft. Object info is missing`);
|
|
43055
43041
|
}
|
|
43056
|
-
if (
|
|
43042
|
+
if (pendingAction.data) {
|
|
43057
43043
|
pendingAction.data.body.namedEntries = [
|
|
43058
43044
|
...pendingAction.data.body.namedEntries,
|
|
43059
43045
|
...this.getBackdatingNameEntries(objectInfo, pendingAction.timestamp),
|
|
@@ -50378,7 +50364,7 @@ class ScopedFieldsCollection {
|
|
|
50378
50364
|
* which there max fields list length will not exceeded the specified maxLength
|
|
50379
50365
|
* @param maxLength
|
|
50380
50366
|
*/
|
|
50381
|
-
split(maxLength =
|
|
50367
|
+
split(maxLength = MAX_URL_LENGTH) {
|
|
50382
50368
|
const size = this.size();
|
|
50383
50369
|
if (size > maxLength) {
|
|
50384
50370
|
const fieldsArray = [];
|
|
@@ -50465,7 +50451,6 @@ class ScopedFieldsCollection {
|
|
|
50465
50451
|
}
|
|
50466
50452
|
}
|
|
50467
50453
|
|
|
50468
|
-
const MAX_STRING_LENGTH_PER_CHUNK = 10000;
|
|
50469
50454
|
//Salesforce/Akamai cdn uri max size is 8898 bytes, short than normal. Per
|
|
50470
50455
|
//https://help.salesforce.com/s/articleView?id=sf.community_builder_cdn_considerations.htm&type=5
|
|
50471
50456
|
//Due to we don't know the domain ResourceRequest, here we give 8000
|
|
@@ -50700,22 +50685,18 @@ function arrayOrEmpty(array) {
|
|
|
50700
50685
|
return array !== undefined && isArray(array) ? array : [];
|
|
50701
50686
|
}
|
|
50702
50687
|
/**
|
|
50703
|
-
* Calculate the max
|
|
50704
|
-
*
|
|
50705
|
-
*
|
|
50688
|
+
* Calculate the max length per chunk.
|
|
50689
|
+
* Max chunk size is MAX_URL_LENGTH - the url without fields and optional fields.
|
|
50690
|
+
*
|
|
50706
50691
|
* @param resourceRequest
|
|
50707
50692
|
* @returns
|
|
50708
50693
|
*/
|
|
50709
50694
|
function getMaxLengthPerChunkAllowed(request) {
|
|
50710
|
-
if (!ldsUseShortUrlGate.isOpen({ fallback: false })) {
|
|
50711
|
-
return MAX_STRING_LENGTH_PER_CHUNK;
|
|
50712
|
-
}
|
|
50713
50695
|
// Too much work to get exact length of the final url, so use stringified json to get the rough length.
|
|
50714
50696
|
const roughUrlLengthWithoutFieldsAndOptionFields = request.basePath.length +
|
|
50715
50697
|
request.baseUri.length +
|
|
50716
50698
|
(request.urlParams ? stringify$1(request.urlParams).length : 0) +
|
|
50717
50699
|
stringify$1({ ...request.queryParams, fields: {}, optionalFields: {} }).length;
|
|
50718
|
-
// MAX_URL_LENGTH - full lenght without fields, optionalFields
|
|
50719
50700
|
return MAX_URL_LENGTH - roughUrlLengthWithoutFieldsAndOptionFields;
|
|
50720
50701
|
}
|
|
50721
50702
|
// we don't have access to the host so we cannot calculate the exact length of the url
|
|
@@ -52294,22 +52275,14 @@ function makeEnvironmentGraphqlAware(environment) {
|
|
|
52294
52275
|
return upstream;
|
|
52295
52276
|
};
|
|
52296
52277
|
const { cachePolicy } = adapterRequestContext;
|
|
52297
|
-
if (
|
|
52298
|
-
cachePolicy &&
|
|
52278
|
+
if (cachePolicy &&
|
|
52299
52279
|
cachePolicy.type === 'valid-at' &&
|
|
52300
52280
|
cachePolicy.timestamp === 0 &&
|
|
52301
52281
|
cachePolicy.basePolicy &&
|
|
52302
52282
|
cachePolicy.basePolicy.type === 'stale-while-revalidate') {
|
|
52303
52283
|
localBuildCachedSnapshot = hoistUnfulfilledToStale;
|
|
52304
52284
|
}
|
|
52305
|
-
if (
|
|
52306
|
-
cachePolicy &&
|
|
52307
|
-
cachePolicy.type === 'stale-while-revalidate' &&
|
|
52308
|
-
cachePolicy.staleDurationSeconds >= Number.MAX_SAFE_INTEGER) {
|
|
52309
|
-
localBuildCachedSnapshot = hoistUnfulfilledToStale;
|
|
52310
|
-
}
|
|
52311
|
-
if (eagerEvalDefaultCachePolicy.isOpen({ fallback: false }) &&
|
|
52312
|
-
(cachePolicy === undefined || cachePolicy === null)) {
|
|
52285
|
+
if (cachePolicy === undefined || cachePolicy === null) {
|
|
52313
52286
|
localBuildCachedSnapshot = hoistUnfulfilledToStale;
|
|
52314
52287
|
}
|
|
52315
52288
|
return environment.applyCachePolicy(luvio, adapterRequestContext, buildSnapshotContext, localBuildCachedSnapshot, buildNetworkSnapshot);
|
|
@@ -55203,7 +55176,7 @@ function getRuntime() {
|
|
|
55203
55176
|
const gqlEnv = makeEnvironmentGraphqlAware(baseEnv);
|
|
55204
55177
|
const durableEnv = makeDurable(gqlEnv, {
|
|
55205
55178
|
durableStore: lazyDurableStore,
|
|
55206
|
-
enableDurableMetadataRefresh:
|
|
55179
|
+
enableDurableMetadataRefresh: true,
|
|
55207
55180
|
// disable luvio deep freeze in headless environments
|
|
55208
55181
|
disableDeepFreeze: typeof window === 'undefined',
|
|
55209
55182
|
shouldFlush,
|
|
@@ -55324,4 +55297,4 @@ register({
|
|
|
55324
55297
|
});
|
|
55325
55298
|
|
|
55326
55299
|
export { O11Y_NAMESPACE_LDS_MOBILE, getRuntime, registerReportObserver, reportGraphqlQueryParseError };
|
|
55327
|
-
// version: 1.
|
|
55300
|
+
// version: 1.327.0-8614d511e1
|
|
@@ -21,8 +21,6 @@ export declare abstract class AbstractResourceRequestActionHandler<ResponseType>
|
|
|
21
21
|
protected readonly getLuvio: () => Luvio;
|
|
22
22
|
protected readonly recordService: UiApiDraftRecordService;
|
|
23
23
|
isIdempotencySupported: boolean;
|
|
24
|
-
isLdsIdempotencyWriteDisabled: boolean;
|
|
25
|
-
isBackdatingEnabled: boolean;
|
|
26
24
|
constructor(draftQueue: DraftQueue, networkAdapter: NetworkAdapter, getLuvio: () => Luvio, recordService: UiApiDraftRecordService);
|
|
27
25
|
enqueue(data: ResourceRequest): Promise<PendingDraftAction<ResourceRequest>>;
|
|
28
26
|
buildPendingAction(request: ResourceRequest, queue: DraftAction<unknown, unknown>[]): Promise<PendingDraftAction<ResourceRequest>>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salesforce/lds-runtime-mobile",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.327.0",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
5
5
|
"description": "LDS runtime for mobile/hybrid environments.",
|
|
6
6
|
"main": "dist/main.js",
|
|
@@ -32,23 +32,23 @@
|
|
|
32
32
|
"release:corejar": "yarn build && ../core-build/scripts/core.js --name=lds-runtime-mobile"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@salesforce/lds-adapters-uiapi": "^1.
|
|
36
|
-
"@salesforce/lds-bindings": "^1.
|
|
37
|
-
"@salesforce/lds-instrumentation": "^1.
|
|
35
|
+
"@salesforce/lds-adapters-uiapi": "^1.327.0",
|
|
36
|
+
"@salesforce/lds-bindings": "^1.327.0",
|
|
37
|
+
"@salesforce/lds-instrumentation": "^1.327.0",
|
|
38
38
|
"@salesforce/user": "0.0.21",
|
|
39
39
|
"o11y": "250.7.0"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@salesforce/lds-adapters-graphql": "^1.
|
|
43
|
-
"@salesforce/lds-drafts": "^1.
|
|
44
|
-
"@salesforce/lds-durable-records": "^1.
|
|
45
|
-
"@salesforce/lds-network-adapter": "^1.
|
|
46
|
-
"@salesforce/lds-network-nimbus": "^1.
|
|
47
|
-
"@salesforce/lds-store-binary": "^1.
|
|
48
|
-
"@salesforce/lds-store-nimbus": "^1.
|
|
49
|
-
"@salesforce/lds-store-sql": "^1.
|
|
50
|
-
"@salesforce/lds-utils-adapters": "^1.
|
|
51
|
-
"@salesforce/nimbus-plugin-lds": "^1.
|
|
42
|
+
"@salesforce/lds-adapters-graphql": "^1.327.0",
|
|
43
|
+
"@salesforce/lds-drafts": "^1.327.0",
|
|
44
|
+
"@salesforce/lds-durable-records": "^1.327.0",
|
|
45
|
+
"@salesforce/lds-network-adapter": "^1.327.0",
|
|
46
|
+
"@salesforce/lds-network-nimbus": "^1.327.0",
|
|
47
|
+
"@salesforce/lds-store-binary": "^1.327.0",
|
|
48
|
+
"@salesforce/lds-store-nimbus": "^1.327.0",
|
|
49
|
+
"@salesforce/lds-store-sql": "^1.327.0",
|
|
50
|
+
"@salesforce/lds-utils-adapters": "^1.327.0",
|
|
51
|
+
"@salesforce/nimbus-plugin-lds": "^1.327.0",
|
|
52
52
|
"babel-plugin-dynamic-import-node": "^2.3.3",
|
|
53
53
|
"wait-for-expect": "^3.0.2"
|
|
54
54
|
},
|
package/sfdc/main.js
CHANGED
|
@@ -19,14 +19,11 @@ import { withRegistration, register } from 'force/ldsEngine';
|
|
|
19
19
|
import { setupInstrumentation, instrumentAdapter as instrumentAdapter$1, instrumentLuvio, setLdsAdaptersUiapiInstrumentation, setLdsNetworkAdapterInstrumentation } from 'force/ldsInstrumentation';
|
|
20
20
|
import { HttpStatusCode, setBypassDeepFreeze, StoreKeySet, serializeStructuredKey, StringKeyInMemoryStore, Reader, deepFreeze, 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 'force/luvioEngine';
|
|
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 'force/ldsAdaptersUiapi';
|
|
22
|
-
import ldsIdempotencyWriteDisabled from '@salesforce/gate/lds.idempotencyWriteDisabled';
|
|
23
|
-
import ldsBackdatingEnabled from '@salesforce/gate/lds.backdatingEnabled';
|
|
24
22
|
import { Kind as Kind$1, visit as visit$1, isObjectType, defaultFieldResolver, buildSchema, parse as parse$5, extendSchema, isScalarType, execute, print } from 'force/ldsGraphqlParser';
|
|
25
23
|
import FIRST_DAY_OF_WEEK from '@salesforce/i18n/firstDayOfWeek';
|
|
26
24
|
import graphqQueryFieldLimit from '@salesforce/gate/lmr.graphqQueryFieldLimit';
|
|
27
25
|
import caseSensitiveUserId from '@salesforce/user/Id';
|
|
28
26
|
import { idleDetector, getInstrumentation } from 'o11y/client';
|
|
29
|
-
import ldsUseShortUrlGate from '@salesforce/gate/lds.useShortUrl';
|
|
30
27
|
import { instrument as instrument$1 } from 'force/ldsBindings';
|
|
31
28
|
import ldsAdapterO11yLoggingGate from '@salesforce/gate/lmr.ldsAdapterO11yLogging';
|
|
32
29
|
import LOCALE from '@salesforce/i18n/locale';
|
|
@@ -37,12 +34,8 @@ import shortTimeFormat from '@salesforce/i18n/dateTime.shortTimeFormat';
|
|
|
37
34
|
import shortDateTimeFormat from '@salesforce/i18n/dateTime.shortDateTimeFormat';
|
|
38
35
|
import { getDateTimeFormat, getDateTimeISO8601Parser, getNumberFormat } from 'lightning/i18nService';
|
|
39
36
|
import formattingOptions from 'lightning/i18nCldrOptions';
|
|
40
|
-
import eagerEvalValidAt from '@salesforce/gate/lds.eagerEvalValidAt';
|
|
41
|
-
import eagerEvalStaleWhileRevalidate from '@salesforce/gate/lds.eagerEvalStaleWhileRevalidate';
|
|
42
|
-
import eagerEvalDefaultCachePolicy from '@salesforce/gate/lds.eagerEvalDefaultCachePolicy';
|
|
43
37
|
import ldsPrimingGraphqlBatch from '@salesforce/gate/lds.primingGraphqlBatch';
|
|
44
38
|
import lmrPrimingUseSoql from '@salesforce/gate/lmr.primingUseSoql';
|
|
45
|
-
import ldsMetadataRefreshEnabled from '@salesforce/gate/lds.metadataRefreshEnabled';
|
|
46
39
|
import graphqlL2AdapterGate from '@salesforce/gate/lmr.graphqlL2Adapter';
|
|
47
40
|
|
|
48
41
|
/**
|
|
@@ -77,7 +70,7 @@ function instrument(newInstrumentation) {
|
|
|
77
70
|
const LDS_RECORDS_AGGREGATE_UI = 'LDS_Records_AggregateUi';
|
|
78
71
|
// Boundary which represents the limit that we start chunking at,
|
|
79
72
|
// determined by comma separated string length of fields
|
|
80
|
-
const MAX_STRING_LENGTH_PER_CHUNK
|
|
73
|
+
const MAX_STRING_LENGTH_PER_CHUNK = 10000;
|
|
81
74
|
// UIAPI limit
|
|
82
75
|
const MAX_AGGREGATE_UI_CHUNK_LIMIT = 50;
|
|
83
76
|
function createOkResponse$1(body) {
|
|
@@ -181,7 +174,7 @@ function dispatchSplitRecordAggregateUiAction(recordId, networkAdapter, resource
|
|
|
181
174
|
});
|
|
182
175
|
}
|
|
183
176
|
function shouldUseAggregateUiForGetRecord(fieldsArray, optionalFieldsArray) {
|
|
184
|
-
return fieldsArray.length + optionalFieldsArray.length >= MAX_STRING_LENGTH_PER_CHUNK
|
|
177
|
+
return fieldsArray.length + optionalFieldsArray.length >= MAX_STRING_LENGTH_PER_CHUNK;
|
|
185
178
|
}
|
|
186
179
|
function buildAggregateUiUrl$1(params, resourceRequest) {
|
|
187
180
|
const { fields, optionalFields } = params;
|
|
@@ -200,7 +193,7 @@ function buildGetRecordByFieldsCompositeRequest(resourceRequest, recordsComposit
|
|
|
200
193
|
const { fieldsArray, optionalFieldsArray, fieldsLength, optionalFieldsLength } = recordsCompositeRequest;
|
|
201
194
|
// Formula: # of fields per chunk = floor(avg field length / max length per chunk)
|
|
202
195
|
const averageFieldStringLength = Math.floor((fieldsLength + optionalFieldsLength) / (fieldsArray.length + optionalFieldsArray.length));
|
|
203
|
-
const fieldsPerChunk = Math.floor(MAX_STRING_LENGTH_PER_CHUNK
|
|
196
|
+
const fieldsPerChunk = Math.floor(MAX_STRING_LENGTH_PER_CHUNK / averageFieldStringLength);
|
|
204
197
|
const optionalFieldsChunks = [];
|
|
205
198
|
// Do the same for optional tracked fields
|
|
206
199
|
for (let i = 0, j = optionalFieldsArray.length; i < j; i += fieldsPerChunk) {
|
|
@@ -41834,11 +41827,6 @@ class AbstractResourceRequestActionHandler {
|
|
|
41834
41827
|
this.recordService = recordService;
|
|
41835
41828
|
// determined by Server setup.
|
|
41836
41829
|
this.isIdempotencySupported = true;
|
|
41837
|
-
// idempotency write flag set by lds
|
|
41838
|
-
this.isLdsIdempotencyWriteDisabled = ldsIdempotencyWriteDisabled.isOpen({
|
|
41839
|
-
fallback: false,
|
|
41840
|
-
});
|
|
41841
|
-
this.isBackdatingEnabled = ldsBackdatingEnabled.isOpen({ fallback: false });
|
|
41842
41830
|
}
|
|
41843
41831
|
enqueue(data) {
|
|
41844
41832
|
return this.draftQueue.enqueue(this.handlerId, data);
|
|
@@ -41937,8 +41925,7 @@ class AbstractResourceRequestActionHandler {
|
|
|
41937
41925
|
updatedAction.data.headers[HTTP_HEADER_IDEMPOTENCY_KEY] = uuidv4();
|
|
41938
41926
|
actionDataChanged = true;
|
|
41939
41927
|
}
|
|
41940
|
-
if (
|
|
41941
|
-
response.status === HttpStatusCode.BadRequest &&
|
|
41928
|
+
if (response.status === HttpStatusCode.BadRequest &&
|
|
41942
41929
|
this.isBackdatingError(response.body, action)) {
|
|
41943
41930
|
updatedAction.timestamp = Date.now();
|
|
41944
41931
|
updatedAction.data.body.fields = {
|
|
@@ -42213,7 +42200,7 @@ class AbstractResourceRequestActionHandler {
|
|
|
42213
42200
|
return [action.targetId];
|
|
42214
42201
|
}
|
|
42215
42202
|
hasIdempotencySupport() {
|
|
42216
|
-
return this.isIdempotencySupported
|
|
42203
|
+
return this.isIdempotencySupported;
|
|
42217
42204
|
}
|
|
42218
42205
|
async ingestResponses(responses, action) {
|
|
42219
42206
|
const luvio = this.getLuvio();
|
|
@@ -42341,8 +42328,7 @@ class UiApiActionHandler extends AbstractResourceRequestActionHandler {
|
|
|
42341
42328
|
}
|
|
42342
42329
|
// handles backdating
|
|
42343
42330
|
const objectInfo = await this.objectInfoService.getObjectInfo(targetApiName);
|
|
42344
|
-
if (
|
|
42345
|
-
pendingAction.data &&
|
|
42331
|
+
if (pendingAction.data &&
|
|
42346
42332
|
pendingAction.data.method !== 'delete' && //'delete' action does not have fields
|
|
42347
42333
|
objectInfo) {
|
|
42348
42334
|
const appendedFields = this.getBackdatingFields(objectInfo, resolvedRequest.method, pendingAction);
|
|
@@ -43053,7 +43039,7 @@ class ContentDocumentCompositeRepresentationActionHandler extends AbstractResour
|
|
|
43053
43039
|
if (objectInfo === undefined) {
|
|
43054
43040
|
throw Error(`Could not generate draft. Object info is missing`);
|
|
43055
43041
|
}
|
|
43056
|
-
if (
|
|
43042
|
+
if (pendingAction.data) {
|
|
43057
43043
|
pendingAction.data.body.namedEntries = [
|
|
43058
43044
|
...pendingAction.data.body.namedEntries,
|
|
43059
43045
|
...this.getBackdatingNameEntries(objectInfo, pendingAction.timestamp),
|
|
@@ -50378,7 +50364,7 @@ class ScopedFieldsCollection {
|
|
|
50378
50364
|
* which there max fields list length will not exceeded the specified maxLength
|
|
50379
50365
|
* @param maxLength
|
|
50380
50366
|
*/
|
|
50381
|
-
split(maxLength =
|
|
50367
|
+
split(maxLength = MAX_URL_LENGTH) {
|
|
50382
50368
|
const size = this.size();
|
|
50383
50369
|
if (size > maxLength) {
|
|
50384
50370
|
const fieldsArray = [];
|
|
@@ -50465,7 +50451,6 @@ class ScopedFieldsCollection {
|
|
|
50465
50451
|
}
|
|
50466
50452
|
}
|
|
50467
50453
|
|
|
50468
|
-
const MAX_STRING_LENGTH_PER_CHUNK = 10000;
|
|
50469
50454
|
//Salesforce/Akamai cdn uri max size is 8898 bytes, short than normal. Per
|
|
50470
50455
|
//https://help.salesforce.com/s/articleView?id=sf.community_builder_cdn_considerations.htm&type=5
|
|
50471
50456
|
//Due to we don't know the domain ResourceRequest, here we give 8000
|
|
@@ -50700,22 +50685,18 @@ function arrayOrEmpty(array) {
|
|
|
50700
50685
|
return array !== undefined && isArray(array) ? array : [];
|
|
50701
50686
|
}
|
|
50702
50687
|
/**
|
|
50703
|
-
* Calculate the max
|
|
50704
|
-
*
|
|
50705
|
-
*
|
|
50688
|
+
* Calculate the max length per chunk.
|
|
50689
|
+
* Max chunk size is MAX_URL_LENGTH - the url without fields and optional fields.
|
|
50690
|
+
*
|
|
50706
50691
|
* @param resourceRequest
|
|
50707
50692
|
* @returns
|
|
50708
50693
|
*/
|
|
50709
50694
|
function getMaxLengthPerChunkAllowed(request) {
|
|
50710
|
-
if (!ldsUseShortUrlGate.isOpen({ fallback: false })) {
|
|
50711
|
-
return MAX_STRING_LENGTH_PER_CHUNK;
|
|
50712
|
-
}
|
|
50713
50695
|
// Too much work to get exact length of the final url, so use stringified json to get the rough length.
|
|
50714
50696
|
const roughUrlLengthWithoutFieldsAndOptionFields = request.basePath.length +
|
|
50715
50697
|
request.baseUri.length +
|
|
50716
50698
|
(request.urlParams ? stringify$1(request.urlParams).length : 0) +
|
|
50717
50699
|
stringify$1({ ...request.queryParams, fields: {}, optionalFields: {} }).length;
|
|
50718
|
-
// MAX_URL_LENGTH - full lenght without fields, optionalFields
|
|
50719
50700
|
return MAX_URL_LENGTH - roughUrlLengthWithoutFieldsAndOptionFields;
|
|
50720
50701
|
}
|
|
50721
50702
|
// we don't have access to the host so we cannot calculate the exact length of the url
|
|
@@ -52294,22 +52275,14 @@ function makeEnvironmentGraphqlAware(environment) {
|
|
|
52294
52275
|
return upstream;
|
|
52295
52276
|
};
|
|
52296
52277
|
const { cachePolicy } = adapterRequestContext;
|
|
52297
|
-
if (
|
|
52298
|
-
cachePolicy &&
|
|
52278
|
+
if (cachePolicy &&
|
|
52299
52279
|
cachePolicy.type === 'valid-at' &&
|
|
52300
52280
|
cachePolicy.timestamp === 0 &&
|
|
52301
52281
|
cachePolicy.basePolicy &&
|
|
52302
52282
|
cachePolicy.basePolicy.type === 'stale-while-revalidate') {
|
|
52303
52283
|
localBuildCachedSnapshot = hoistUnfulfilledToStale;
|
|
52304
52284
|
}
|
|
52305
|
-
if (
|
|
52306
|
-
cachePolicy &&
|
|
52307
|
-
cachePolicy.type === 'stale-while-revalidate' &&
|
|
52308
|
-
cachePolicy.staleDurationSeconds >= Number.MAX_SAFE_INTEGER) {
|
|
52309
|
-
localBuildCachedSnapshot = hoistUnfulfilledToStale;
|
|
52310
|
-
}
|
|
52311
|
-
if (eagerEvalDefaultCachePolicy.isOpen({ fallback: false }) &&
|
|
52312
|
-
(cachePolicy === undefined || cachePolicy === null)) {
|
|
52285
|
+
if (cachePolicy === undefined || cachePolicy === null) {
|
|
52313
52286
|
localBuildCachedSnapshot = hoistUnfulfilledToStale;
|
|
52314
52287
|
}
|
|
52315
52288
|
return environment.applyCachePolicy(luvio, adapterRequestContext, buildSnapshotContext, localBuildCachedSnapshot, buildNetworkSnapshot);
|
|
@@ -55203,7 +55176,7 @@ function getRuntime() {
|
|
|
55203
55176
|
const gqlEnv = makeEnvironmentGraphqlAware(baseEnv);
|
|
55204
55177
|
const durableEnv = makeDurable(gqlEnv, {
|
|
55205
55178
|
durableStore: lazyDurableStore,
|
|
55206
|
-
enableDurableMetadataRefresh:
|
|
55179
|
+
enableDurableMetadataRefresh: true,
|
|
55207
55180
|
// disable luvio deep freeze in headless environments
|
|
55208
55181
|
disableDeepFreeze: typeof window === 'undefined',
|
|
55209
55182
|
shouldFlush,
|
|
@@ -55324,4 +55297,4 @@ register({
|
|
|
55324
55297
|
});
|
|
55325
55298
|
|
|
55326
55299
|
export { O11Y_NAMESPACE_LDS_MOBILE, getRuntime, registerReportObserver, reportGraphqlQueryParseError };
|
|
55327
|
-
// version: 1.
|
|
55300
|
+
// version: 1.327.0-8614d511e1
|
|
@@ -21,8 +21,6 @@ export declare abstract class AbstractResourceRequestActionHandler<ResponseType>
|
|
|
21
21
|
protected readonly getLuvio: () => Luvio;
|
|
22
22
|
protected readonly recordService: UiApiDraftRecordService;
|
|
23
23
|
isIdempotencySupported: boolean;
|
|
24
|
-
isLdsIdempotencyWriteDisabled: boolean;
|
|
25
|
-
isBackdatingEnabled: boolean;
|
|
26
24
|
constructor(draftQueue: DraftQueue, networkAdapter: NetworkAdapter, getLuvio: () => Luvio, recordService: UiApiDraftRecordService);
|
|
27
25
|
enqueue(data: ResourceRequest): Promise<PendingDraftAction<ResourceRequest>>;
|
|
28
26
|
buildPendingAction(request: ResourceRequest, queue: DraftAction<unknown, unknown>[]): Promise<PendingDraftAction<ResourceRequest>>;
|