@salesforce/lds-runtime-mobile 1.287.0-dev16 → 1.287.0-dev17

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 +56 -2
  2. package/package.json +16 -16
  3. package/sfdc/main.js +56 -2
package/dist/main.js CHANGED
@@ -13835,6 +13835,60 @@ function hasGraphQlErrors(response) {
13835
13835
  response.errors.length > 0);
13836
13836
  }
13837
13837
 
13838
+ const MAX_ID_CHUNK_LENGTH = 100;
13839
+ /**
13840
+ * Adapter for limiting the number of record ids to a maximum of 100 and sending them
13841
+ * out in batches to the getRecords adapter
13842
+ *
13843
+ * @param luvio
13844
+ * @returns
13845
+ */
13846
+ function batchingGetRecordsAdapterFactory(luvio) {
13847
+ const getRecordsAdapter = getRecordsAdapterFactory(luvio);
13848
+ const batchGetRecords = (config, requestContext) => {
13849
+ const seenRecords = new StoreKeySet();
13850
+ const chunks = chunkConfig(config);
13851
+ const promises = chunks.map((conf) => {
13852
+ return getRecordsAdapter(conf, requestContext);
13853
+ });
13854
+ return Promise.all(promises).then((results) => {
13855
+ const data = results.reduce((accu, item) => {
13856
+ if (item !== null && item.data !== undefined) {
13857
+ accu.results = accu.results.concat(item.data.results);
13858
+ seenRecords.merge(item.seenRecords);
13859
+ }
13860
+ return accu;
13861
+ }, { results: [] });
13862
+ return {
13863
+ data: data,
13864
+ seenRecords,
13865
+ state: 'Fulfilled',
13866
+ };
13867
+ });
13868
+ };
13869
+ return batchGetRecords;
13870
+ }
13871
+ /**
13872
+ * Given a GetRecordsConfig it will chunk it into multiple configs with a maximum of 100
13873
+ * record ids per config.
13874
+ *
13875
+ * @param config
13876
+ * @returns
13877
+ */
13878
+ function chunkConfig(config) {
13879
+ const chunks = [];
13880
+ config.records.forEach((record) => {
13881
+ const { recordIds, fields } = record;
13882
+ for (let i = 0, len = recordIds.length; i < len; i += MAX_ID_CHUNK_LENGTH) {
13883
+ const chunk = recordIds.slice(i, i + MAX_ID_CHUNK_LENGTH);
13884
+ chunks.push({
13885
+ records: [{ recordIds: chunk, fields: fields !== undefined ? fields : [] }],
13886
+ });
13887
+ }
13888
+ });
13889
+ return chunks;
13890
+ }
13891
+
13838
13892
  function generateUniqueRecordId() {
13839
13893
  return `UiApi::GraphQLRepresentation:${Date.now() + Math.random().toFixed(5).split('.')[1]}`;
13840
13894
  }
@@ -14106,7 +14160,7 @@ function initiateStaleRecordRefresh(luvio, keyMap) {
14106
14160
  const staleRecordKeys = from$1(keyMap.values())
14107
14161
  .flat()
14108
14162
  .map((id) => `UiApi::RecordRepresentation:${id}`);
14109
- luvio.storeExpirePossibleStaleRecords(staleRecordKeys, makeGetRecordsConfig(keyMap), getRecordsAdapterFactory(luvio));
14163
+ luvio.storeExpirePossibleStaleRecords(staleRecordKeys, makeGetRecordsConfig(keyMap), batchingGetRecordsAdapterFactory(luvio));
14110
14164
  }
14111
14165
  function makeGetRecordsConfig(keyMap) {
14112
14166
  const records = [];
@@ -18429,4 +18483,4 @@ register({
18429
18483
  });
18430
18484
 
18431
18485
  export { O11Y_NAMESPACE_LDS_MOBILE, getRuntime, registerReportObserver, reportGraphqlQueryParseError };
18432
- // version: 1.287.0-dev16-db839640ab
18486
+ // version: 1.287.0-dev17-670374cbf3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/lds-runtime-mobile",
3
- "version": "1.287.0-dev16",
3
+ "version": "1.287.0-dev17",
4
4
  "license": "SEE LICENSE IN LICENSE.txt",
5
5
  "description": "LDS runtime for mobile/hybrid environments.",
6
6
  "main": "dist/main.js",
@@ -32,25 +32,25 @@
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.287.0-dev16",
36
- "@salesforce/lds-bindings": "^1.287.0-dev16",
37
- "@salesforce/lds-instrumentation": "^1.287.0-dev16",
38
- "@salesforce/lds-priming": "^1.287.0-dev16",
35
+ "@salesforce/lds-adapters-uiapi": "^1.287.0-dev17",
36
+ "@salesforce/lds-bindings": "^1.287.0-dev17",
37
+ "@salesforce/lds-instrumentation": "^1.287.0-dev17",
38
+ "@salesforce/lds-priming": "^1.287.0-dev17",
39
39
  "@salesforce/user": "0.0.21",
40
40
  "o11y": "250.7.0"
41
41
  },
42
42
  "devDependencies": {
43
- "@salesforce/lds-adapters-graphql": "^1.287.0-dev16",
44
- "@salesforce/lds-drafts": "^1.287.0-dev16",
45
- "@salesforce/lds-drafts-adapters-uiapi": "^1.287.0-dev16",
46
- "@salesforce/lds-graphql-eval": "^1.287.0-dev16",
47
- "@salesforce/lds-network-adapter": "^1.287.0-dev16",
48
- "@salesforce/lds-network-nimbus": "^1.287.0-dev16",
49
- "@salesforce/lds-store-binary": "^1.287.0-dev16",
50
- "@salesforce/lds-store-nimbus": "^1.287.0-dev16",
51
- "@salesforce/lds-store-sql": "^1.287.0-dev16",
52
- "@salesforce/lds-utils-adapters": "^1.287.0-dev16",
53
- "@salesforce/nimbus-plugin-lds": "^1.287.0-dev16",
43
+ "@salesforce/lds-adapters-graphql": "^1.287.0-dev17",
44
+ "@salesforce/lds-drafts": "^1.287.0-dev17",
45
+ "@salesforce/lds-drafts-adapters-uiapi": "^1.287.0-dev17",
46
+ "@salesforce/lds-graphql-eval": "^1.287.0-dev17",
47
+ "@salesforce/lds-network-adapter": "^1.287.0-dev17",
48
+ "@salesforce/lds-network-nimbus": "^1.287.0-dev17",
49
+ "@salesforce/lds-store-binary": "^1.287.0-dev17",
50
+ "@salesforce/lds-store-nimbus": "^1.287.0-dev17",
51
+ "@salesforce/lds-store-sql": "^1.287.0-dev17",
52
+ "@salesforce/lds-utils-adapters": "^1.287.0-dev17",
53
+ "@salesforce/nimbus-plugin-lds": "^1.287.0-dev17",
54
54
  "babel-plugin-dynamic-import-node": "^2.3.3",
55
55
  "wait-for-expect": "^3.0.2"
56
56
  },
package/sfdc/main.js CHANGED
@@ -13835,6 +13835,60 @@ function hasGraphQlErrors(response) {
13835
13835
  response.errors.length > 0);
13836
13836
  }
13837
13837
 
13838
+ const MAX_ID_CHUNK_LENGTH = 100;
13839
+ /**
13840
+ * Adapter for limiting the number of record ids to a maximum of 100 and sending them
13841
+ * out in batches to the getRecords adapter
13842
+ *
13843
+ * @param luvio
13844
+ * @returns
13845
+ */
13846
+ function batchingGetRecordsAdapterFactory(luvio) {
13847
+ const getRecordsAdapter = getRecordsAdapterFactory(luvio);
13848
+ const batchGetRecords = (config, requestContext) => {
13849
+ const seenRecords = new StoreKeySet();
13850
+ const chunks = chunkConfig(config);
13851
+ const promises = chunks.map((conf) => {
13852
+ return getRecordsAdapter(conf, requestContext);
13853
+ });
13854
+ return Promise.all(promises).then((results) => {
13855
+ const data = results.reduce((accu, item) => {
13856
+ if (item !== null && item.data !== undefined) {
13857
+ accu.results = accu.results.concat(item.data.results);
13858
+ seenRecords.merge(item.seenRecords);
13859
+ }
13860
+ return accu;
13861
+ }, { results: [] });
13862
+ return {
13863
+ data: data,
13864
+ seenRecords,
13865
+ state: 'Fulfilled',
13866
+ };
13867
+ });
13868
+ };
13869
+ return batchGetRecords;
13870
+ }
13871
+ /**
13872
+ * Given a GetRecordsConfig it will chunk it into multiple configs with a maximum of 100
13873
+ * record ids per config.
13874
+ *
13875
+ * @param config
13876
+ * @returns
13877
+ */
13878
+ function chunkConfig(config) {
13879
+ const chunks = [];
13880
+ config.records.forEach((record) => {
13881
+ const { recordIds, fields } = record;
13882
+ for (let i = 0, len = recordIds.length; i < len; i += MAX_ID_CHUNK_LENGTH) {
13883
+ const chunk = recordIds.slice(i, i + MAX_ID_CHUNK_LENGTH);
13884
+ chunks.push({
13885
+ records: [{ recordIds: chunk, fields: fields !== undefined ? fields : [] }],
13886
+ });
13887
+ }
13888
+ });
13889
+ return chunks;
13890
+ }
13891
+
13838
13892
  function generateUniqueRecordId() {
13839
13893
  return `UiApi::GraphQLRepresentation:${Date.now() + Math.random().toFixed(5).split('.')[1]}`;
13840
13894
  }
@@ -14106,7 +14160,7 @@ function initiateStaleRecordRefresh(luvio, keyMap) {
14106
14160
  const staleRecordKeys = from$1(keyMap.values())
14107
14161
  .flat()
14108
14162
  .map((id) => `UiApi::RecordRepresentation:${id}`);
14109
- luvio.storeExpirePossibleStaleRecords(staleRecordKeys, makeGetRecordsConfig(keyMap), getRecordsAdapterFactory(luvio));
14163
+ luvio.storeExpirePossibleStaleRecords(staleRecordKeys, makeGetRecordsConfig(keyMap), batchingGetRecordsAdapterFactory(luvio));
14110
14164
  }
14111
14165
  function makeGetRecordsConfig(keyMap) {
14112
14166
  const records = [];
@@ -18429,4 +18483,4 @@ register({
18429
18483
  });
18430
18484
 
18431
18485
  export { O11Y_NAMESPACE_LDS_MOBILE, getRuntime, registerReportObserver, reportGraphqlQueryParseError };
18432
- // version: 1.287.0-dev16-db839640ab
18486
+ // version: 1.287.0-dev17-670374cbf3