@salesforce/lds-runtime-mobile 1.308.0 → 1.309.0-dev11

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.
Files changed (3) hide show
  1. package/dist/main.js +55 -51
  2. package/package.json +18 -18
  3. package/sfdc/main.js +55 -51
package/dist/main.js CHANGED
@@ -5271,7 +5271,8 @@ function buildLuvioOverrideForDraftAdapters(luvio, handler, extractTargetIdFromC
5271
5271
  resourceRequestCopy.headers[HTTP_HEADER_IDEMPOTENCY_KEY] = uuidv4();
5272
5272
  }
5273
5273
  // enable return extra fields for record creation and record update http call
5274
- if (resourceRequest.basePath === '/ui-api/records' &&
5274
+ if (typeof resourceRequest.basePath === 'string' &&
5275
+ resourceRequest.basePath.startsWith('/ui-api/records') &&
5275
5276
  (resourceRequest.method === 'post' || resourceRequest.method === 'patch')) {
5276
5277
  resourceRequestCopy.queryParams = resourceRequestCopy.queryParams || {};
5277
5278
  resourceRequestCopy.queryParams['includeFieldsInBody'] = true;
@@ -7094,10 +7095,49 @@ const { stringify: stringify$4, parse: parse$4 } = JSON;
7094
7095
  const { shift } = Array.prototype;
7095
7096
  const { isArray: isArray$2, from: from$2 } = Array;
7096
7097
 
7098
+ /**
7099
+ * Retrieves a denormalized record from the store
7100
+ * NOTE: do no use this if you don't know what you're doing, this can still contain normalized record references
7101
+ * @param recordKey record key
7102
+ * @param durableStore the durable store
7103
+ * @returns a DraftRecordRepresentation containing the requested fields
7104
+ */
7105
+ function getDenormalizedRecord(recordKey, durableStore) {
7106
+ return durableStore
7107
+ .getEntries([recordKey], DefaultDurableSegment)
7108
+ .then((entries) => {
7109
+ if (entries === undefined) {
7110
+ return undefined;
7111
+ }
7112
+ const denormalizedEntry = entries[recordKey];
7113
+ if (denormalizedEntry === undefined) {
7114
+ return undefined;
7115
+ }
7116
+ // don't include link information
7117
+ const denormalizedRecord = denormalizedEntry.data;
7118
+ if (isStoreRecordError(denormalizedRecord)) {
7119
+ return undefined;
7120
+ }
7121
+ return denormalizedRecord;
7122
+ });
7123
+ }
7124
+ function isStoreRecordError(storeRecord) {
7125
+ return storeRecord.__type === 'error';
7126
+ }
7127
+ function isDraftFieldPending(field) {
7128
+ return !!(field.__state && field.__state.pending === true);
7129
+ }
7130
+ function isDraftFieldMissing(field) {
7131
+ return !!(field.__state && field.__state.isMissing === true);
7132
+ }
7133
+
7097
7134
  function isFieldLink(field) {
7098
7135
  const { value } = field;
7099
7136
  return value !== null && typeof value === 'object' && value.__ref !== undefined;
7100
7137
  }
7138
+ function isPendingOrMissing(field) {
7139
+ return isDraftFieldMissing(field) || isDraftFieldPending(field);
7140
+ }
7101
7141
 
7102
7142
  const RECORD_ENDPOINT_REGEX$1 = /^\/ui-api\/records\/?(([a-zA-Z0-9]+))?$/;
7103
7143
  /**
@@ -7154,12 +7194,12 @@ function getRecordKeyForId(luvio, recordId) {
7154
7194
  * @param record draft record representation
7155
7195
  * @returns flattened record representation
7156
7196
  */
7157
- function filterOutReferenceFieldsAndLinks(record) {
7197
+ function filterOutReferenceNonScalarFields(record) {
7158
7198
  const filteredFields = {};
7159
7199
  const fieldNames = keys$5(record.fields);
7160
7200
  for (const fieldName of fieldNames) {
7161
7201
  const field = record.fields[fieldName];
7162
- if (isFieldLink(field) === false) {
7202
+ if (isFieldLink(field) === false && isPendingOrMissing(field) === false) {
7163
7203
  filteredFields[fieldName] = field;
7164
7204
  }
7165
7205
  }
@@ -7173,42 +7213,6 @@ function filterOutReferenceFieldsAndLinks(record) {
7173
7213
  return filteredRecords;
7174
7214
  }
7175
7215
 
7176
- /**
7177
- * Retrieves a denormalized record from the store
7178
- * NOTE: do no use this if you don't know what you're doing, this can still contain normalized record references
7179
- * @param recordKey record key
7180
- * @param durableStore the durable store
7181
- * @returns a DraftRecordRepresentation containing the requested fields
7182
- */
7183
- function getDenormalizedRecord(recordKey, durableStore) {
7184
- return durableStore
7185
- .getEntries([recordKey], DefaultDurableSegment)
7186
- .then((entries) => {
7187
- if (entries === undefined) {
7188
- return undefined;
7189
- }
7190
- const denormalizedEntry = entries[recordKey];
7191
- if (denormalizedEntry === undefined) {
7192
- return undefined;
7193
- }
7194
- // don't include link information
7195
- const denormalizedRecord = denormalizedEntry.data;
7196
- if (isStoreRecordError(denormalizedRecord)) {
7197
- return undefined;
7198
- }
7199
- return denormalizedRecord;
7200
- });
7201
- }
7202
- function isStoreRecordError(storeRecord) {
7203
- return storeRecord.__type === 'error';
7204
- }
7205
- function isDraftFieldPending(field) {
7206
- return !!(field.__state && field.__state.pending === true);
7207
- }
7208
- function isDraftFieldMissing(field) {
7209
- return !!(field.__state && field.__state.isMissing === true);
7210
- }
7211
-
7212
7216
  /**
7213
7217
  * Checks if a resource request is a GET method on the record endpoint
7214
7218
  * @param request the resource request
@@ -8246,7 +8250,7 @@ class UiApiActionHandler extends AbstractResourceRequestActionHandler {
8246
8250
  if (recordWithDrafts === undefined) {
8247
8251
  return undefined;
8248
8252
  }
8249
- return filterOutReferenceFieldsAndLinks(recordWithDrafts);
8253
+ return filterOutReferenceNonScalarFields(recordWithDrafts);
8250
8254
  }
8251
8255
  const record = await getDenormalizedRecord(key, this.durableStore);
8252
8256
  if (record === undefined) {
@@ -8257,7 +8261,7 @@ class UiApiActionHandler extends AbstractResourceRequestActionHandler {
8257
8261
  if (recordWithDrafts === undefined) {
8258
8262
  return recordWithDrafts;
8259
8263
  }
8260
- return filterOutReferenceFieldsAndLinks(recordWithDrafts);
8264
+ return filterOutReferenceNonScalarFields(recordWithDrafts);
8261
8265
  }
8262
8266
  applyDraftsToIncomingData(key, data, draftMetadata, publishData) {
8263
8267
  if (draftMetadata === undefined) {
@@ -9153,9 +9157,9 @@ class ContentDocumentCompositeRepresentationActionHandler extends AbstractResour
9153
9157
  return undefined;
9154
9158
  }
9155
9159
  // finally we resolve all references for each record
9156
- const contentDocResolved = await filterOutReferenceFieldsAndLinks(contentDocRecord);
9157
- const contentDocLinkResolved = await filterOutReferenceFieldsAndLinks(contentDocLink);
9158
- const contentVersionResolved = await filterOutReferenceFieldsAndLinks(contentVersion);
9160
+ const contentDocResolved = await filterOutReferenceNonScalarFields(contentDocRecord);
9161
+ const contentDocLinkResolved = await filterOutReferenceNonScalarFields(contentDocLink);
9162
+ const contentVersionResolved = await filterOutReferenceNonScalarFields(contentVersion);
9159
9163
  return {
9160
9164
  contentDocument: contentDocResolved,
9161
9165
  contentDocumentLinks: [contentDocLinkResolved],
@@ -12227,14 +12231,14 @@ async function connectionResolver(obj, args, context, info) {
12227
12231
  limit = args.first;
12228
12232
  }
12229
12233
  let offset = 0;
12230
- if (args.after) {
12231
- let originalCursor = context.mappedCursors.get(queryCacheKey);
12232
- if (!originalCursor) {
12233
- // eslint-disable-next-line @salesforce/lds/no-error-in-production
12234
- throw new Error('Internal Error: unable to determine `after` cursor value');
12235
- }
12234
+ let originalCursor = context.mappedCursors.get(queryCacheKey);
12235
+ if (originalCursor) {
12236
12236
  offset = decodeV1Cursor(originalCursor).i;
12237
12237
  }
12238
+ else if (args.after) {
12239
+ // eslint-disable-next-line @salesforce/lds/no-error-in-production
12240
+ throw new Error('Internal Error: unable to determine `after` cursor value');
12241
+ }
12238
12242
  // if the query wants to know `hasNextPage` then we need to request 1 additional record
12239
12243
  let selections = info.fieldNodes
12240
12244
  .map((n) => (n.selectionSet ? n.selectionSet.selections : []))
@@ -19176,4 +19180,4 @@ register({
19176
19180
  });
19177
19181
 
19178
19182
  export { O11Y_NAMESPACE_LDS_MOBILE, getRuntime, registerReportObserver, reportGraphqlQueryParseError };
19179
- // version: 1.308.0-0a7e378822
19183
+ // version: 1.309.0-dev11-ffe70308a8
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/lds-runtime-mobile",
3
- "version": "1.308.0",
3
+ "version": "1.309.0-dev11",
4
4
  "license": "SEE LICENSE IN LICENSE.txt",
5
5
  "description": "LDS runtime for mobile/hybrid environments.",
6
6
  "main": "dist/main.js",
@@ -32,27 +32,27 @@
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-mobile": "^1.308.0",
36
- "@salesforce/lds-bindings": "^1.308.0",
37
- "@salesforce/lds-instrumentation": "^1.308.0",
38
- "@salesforce/lds-priming": "^1.308.0",
35
+ "@salesforce/lds-adapters-uiapi-mobile": "^1.309.0-dev11",
36
+ "@salesforce/lds-bindings": "^1.309.0-dev11",
37
+ "@salesforce/lds-instrumentation": "^1.309.0-dev11",
38
+ "@salesforce/lds-priming": "^1.309.0-dev11",
39
39
  "@salesforce/user": "0.0.21",
40
40
  "o11y": "250.7.0"
41
41
  },
42
42
  "devDependencies": {
43
- "@salesforce/lds-adapters-graphql": "^1.308.0",
44
- "@salesforce/lds-drafts": "^1.308.0",
45
- "@salesforce/lds-drafts-adapters-uiapi": "^1.308.0",
46
- "@salesforce/lds-durable-records": "^1.308.0",
47
- "@salesforce/lds-graphql-eval": "^1.308.0",
48
- "@salesforce/lds-graphql-local-evaluation": "^1.308.0",
49
- "@salesforce/lds-network-adapter": "^1.308.0",
50
- "@salesforce/lds-network-nimbus": "^1.308.0",
51
- "@salesforce/lds-store-binary": "^1.308.0",
52
- "@salesforce/lds-store-nimbus": "^1.308.0",
53
- "@salesforce/lds-store-sql": "^1.308.0",
54
- "@salesforce/lds-utils-adapters": "^1.308.0",
55
- "@salesforce/nimbus-plugin-lds": "^1.308.0",
43
+ "@salesforce/lds-adapters-graphql": "^1.309.0-dev11",
44
+ "@salesforce/lds-drafts": "^1.309.0-dev11",
45
+ "@salesforce/lds-drafts-adapters-uiapi": "^1.309.0-dev11",
46
+ "@salesforce/lds-durable-records": "^1.309.0-dev11",
47
+ "@salesforce/lds-graphql-eval": "^1.309.0-dev11",
48
+ "@salesforce/lds-graphql-local-evaluation": "^1.309.0-dev11",
49
+ "@salesforce/lds-network-adapter": "^1.309.0-dev11",
50
+ "@salesforce/lds-network-nimbus": "^1.309.0-dev11",
51
+ "@salesforce/lds-store-binary": "^1.309.0-dev11",
52
+ "@salesforce/lds-store-nimbus": "^1.309.0-dev11",
53
+ "@salesforce/lds-store-sql": "^1.309.0-dev11",
54
+ "@salesforce/lds-utils-adapters": "^1.309.0-dev11",
55
+ "@salesforce/nimbus-plugin-lds": "^1.309.0-dev11",
56
56
  "babel-plugin-dynamic-import-node": "^2.3.3",
57
57
  "wait-for-expect": "^3.0.2"
58
58
  },
package/sfdc/main.js CHANGED
@@ -5271,7 +5271,8 @@ function buildLuvioOverrideForDraftAdapters(luvio, handler, extractTargetIdFromC
5271
5271
  resourceRequestCopy.headers[HTTP_HEADER_IDEMPOTENCY_KEY] = uuidv4();
5272
5272
  }
5273
5273
  // enable return extra fields for record creation and record update http call
5274
- if (resourceRequest.basePath === '/ui-api/records' &&
5274
+ if (typeof resourceRequest.basePath === 'string' &&
5275
+ resourceRequest.basePath.startsWith('/ui-api/records') &&
5275
5276
  (resourceRequest.method === 'post' || resourceRequest.method === 'patch')) {
5276
5277
  resourceRequestCopy.queryParams = resourceRequestCopy.queryParams || {};
5277
5278
  resourceRequestCopy.queryParams['includeFieldsInBody'] = true;
@@ -7094,10 +7095,49 @@ const { stringify: stringify$4, parse: parse$4 } = JSON;
7094
7095
  const { shift } = Array.prototype;
7095
7096
  const { isArray: isArray$2, from: from$2 } = Array;
7096
7097
 
7098
+ /**
7099
+ * Retrieves a denormalized record from the store
7100
+ * NOTE: do no use this if you don't know what you're doing, this can still contain normalized record references
7101
+ * @param recordKey record key
7102
+ * @param durableStore the durable store
7103
+ * @returns a DraftRecordRepresentation containing the requested fields
7104
+ */
7105
+ function getDenormalizedRecord(recordKey, durableStore) {
7106
+ return durableStore
7107
+ .getEntries([recordKey], DefaultDurableSegment)
7108
+ .then((entries) => {
7109
+ if (entries === undefined) {
7110
+ return undefined;
7111
+ }
7112
+ const denormalizedEntry = entries[recordKey];
7113
+ if (denormalizedEntry === undefined) {
7114
+ return undefined;
7115
+ }
7116
+ // don't include link information
7117
+ const denormalizedRecord = denormalizedEntry.data;
7118
+ if (isStoreRecordError(denormalizedRecord)) {
7119
+ return undefined;
7120
+ }
7121
+ return denormalizedRecord;
7122
+ });
7123
+ }
7124
+ function isStoreRecordError(storeRecord) {
7125
+ return storeRecord.__type === 'error';
7126
+ }
7127
+ function isDraftFieldPending(field) {
7128
+ return !!(field.__state && field.__state.pending === true);
7129
+ }
7130
+ function isDraftFieldMissing(field) {
7131
+ return !!(field.__state && field.__state.isMissing === true);
7132
+ }
7133
+
7097
7134
  function isFieldLink(field) {
7098
7135
  const { value } = field;
7099
7136
  return value !== null && typeof value === 'object' && value.__ref !== undefined;
7100
7137
  }
7138
+ function isPendingOrMissing(field) {
7139
+ return isDraftFieldMissing(field) || isDraftFieldPending(field);
7140
+ }
7101
7141
 
7102
7142
  const RECORD_ENDPOINT_REGEX$1 = /^\/ui-api\/records\/?(([a-zA-Z0-9]+))?$/;
7103
7143
  /**
@@ -7154,12 +7194,12 @@ function getRecordKeyForId(luvio, recordId) {
7154
7194
  * @param record draft record representation
7155
7195
  * @returns flattened record representation
7156
7196
  */
7157
- function filterOutReferenceFieldsAndLinks(record) {
7197
+ function filterOutReferenceNonScalarFields(record) {
7158
7198
  const filteredFields = {};
7159
7199
  const fieldNames = keys$5(record.fields);
7160
7200
  for (const fieldName of fieldNames) {
7161
7201
  const field = record.fields[fieldName];
7162
- if (isFieldLink(field) === false) {
7202
+ if (isFieldLink(field) === false && isPendingOrMissing(field) === false) {
7163
7203
  filteredFields[fieldName] = field;
7164
7204
  }
7165
7205
  }
@@ -7173,42 +7213,6 @@ function filterOutReferenceFieldsAndLinks(record) {
7173
7213
  return filteredRecords;
7174
7214
  }
7175
7215
 
7176
- /**
7177
- * Retrieves a denormalized record from the store
7178
- * NOTE: do no use this if you don't know what you're doing, this can still contain normalized record references
7179
- * @param recordKey record key
7180
- * @param durableStore the durable store
7181
- * @returns a DraftRecordRepresentation containing the requested fields
7182
- */
7183
- function getDenormalizedRecord(recordKey, durableStore) {
7184
- return durableStore
7185
- .getEntries([recordKey], DefaultDurableSegment)
7186
- .then((entries) => {
7187
- if (entries === undefined) {
7188
- return undefined;
7189
- }
7190
- const denormalizedEntry = entries[recordKey];
7191
- if (denormalizedEntry === undefined) {
7192
- return undefined;
7193
- }
7194
- // don't include link information
7195
- const denormalizedRecord = denormalizedEntry.data;
7196
- if (isStoreRecordError(denormalizedRecord)) {
7197
- return undefined;
7198
- }
7199
- return denormalizedRecord;
7200
- });
7201
- }
7202
- function isStoreRecordError(storeRecord) {
7203
- return storeRecord.__type === 'error';
7204
- }
7205
- function isDraftFieldPending(field) {
7206
- return !!(field.__state && field.__state.pending === true);
7207
- }
7208
- function isDraftFieldMissing(field) {
7209
- return !!(field.__state && field.__state.isMissing === true);
7210
- }
7211
-
7212
7216
  /**
7213
7217
  * Checks if a resource request is a GET method on the record endpoint
7214
7218
  * @param request the resource request
@@ -8246,7 +8250,7 @@ class UiApiActionHandler extends AbstractResourceRequestActionHandler {
8246
8250
  if (recordWithDrafts === undefined) {
8247
8251
  return undefined;
8248
8252
  }
8249
- return filterOutReferenceFieldsAndLinks(recordWithDrafts);
8253
+ return filterOutReferenceNonScalarFields(recordWithDrafts);
8250
8254
  }
8251
8255
  const record = await getDenormalizedRecord(key, this.durableStore);
8252
8256
  if (record === undefined) {
@@ -8257,7 +8261,7 @@ class UiApiActionHandler extends AbstractResourceRequestActionHandler {
8257
8261
  if (recordWithDrafts === undefined) {
8258
8262
  return recordWithDrafts;
8259
8263
  }
8260
- return filterOutReferenceFieldsAndLinks(recordWithDrafts);
8264
+ return filterOutReferenceNonScalarFields(recordWithDrafts);
8261
8265
  }
8262
8266
  applyDraftsToIncomingData(key, data, draftMetadata, publishData) {
8263
8267
  if (draftMetadata === undefined) {
@@ -9153,9 +9157,9 @@ class ContentDocumentCompositeRepresentationActionHandler extends AbstractResour
9153
9157
  return undefined;
9154
9158
  }
9155
9159
  // finally we resolve all references for each record
9156
- const contentDocResolved = await filterOutReferenceFieldsAndLinks(contentDocRecord);
9157
- const contentDocLinkResolved = await filterOutReferenceFieldsAndLinks(contentDocLink);
9158
- const contentVersionResolved = await filterOutReferenceFieldsAndLinks(contentVersion);
9160
+ const contentDocResolved = await filterOutReferenceNonScalarFields(contentDocRecord);
9161
+ const contentDocLinkResolved = await filterOutReferenceNonScalarFields(contentDocLink);
9162
+ const contentVersionResolved = await filterOutReferenceNonScalarFields(contentVersion);
9159
9163
  return {
9160
9164
  contentDocument: contentDocResolved,
9161
9165
  contentDocumentLinks: [contentDocLinkResolved],
@@ -12227,14 +12231,14 @@ async function connectionResolver(obj, args, context, info) {
12227
12231
  limit = args.first;
12228
12232
  }
12229
12233
  let offset = 0;
12230
- if (args.after) {
12231
- let originalCursor = context.mappedCursors.get(queryCacheKey);
12232
- if (!originalCursor) {
12233
- // eslint-disable-next-line @salesforce/lds/no-error-in-production
12234
- throw new Error('Internal Error: unable to determine `after` cursor value');
12235
- }
12234
+ let originalCursor = context.mappedCursors.get(queryCacheKey);
12235
+ if (originalCursor) {
12236
12236
  offset = decodeV1Cursor(originalCursor).i;
12237
12237
  }
12238
+ else if (args.after) {
12239
+ // eslint-disable-next-line @salesforce/lds/no-error-in-production
12240
+ throw new Error('Internal Error: unable to determine `after` cursor value');
12241
+ }
12238
12242
  // if the query wants to know `hasNextPage` then we need to request 1 additional record
12239
12243
  let selections = info.fieldNodes
12240
12244
  .map((n) => (n.selectionSet ? n.selectionSet.selections : []))
@@ -19176,4 +19180,4 @@ register({
19176
19180
  });
19177
19181
 
19178
19182
  export { O11Y_NAMESPACE_LDS_MOBILE, getRuntime, registerReportObserver, reportGraphqlQueryParseError };
19179
- // version: 1.308.0-0a7e378822
19183
+ // version: 1.309.0-dev11-ffe70308a8