react-native-onyx 2.0.23 → 2.0.25

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/Logger.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  type LogData = {
2
2
  message: string;
3
- level: 'alert' | 'info';
3
+ level: 'alert' | 'info' | 'hmmm';
4
4
  };
5
5
  type LoggerCallback = (data: LogData) => void;
6
6
  /**
@@ -15,4 +15,8 @@ declare function logAlert(message: string): void;
15
15
  * Send an info message to the logger
16
16
  */
17
17
  declare function logInfo(message: string): void;
18
- export { registerLogger, logInfo, logAlert };
18
+ /**
19
+ * Send an hmmm message to the logger
20
+ */
21
+ declare function logHmmm(message: string): void;
22
+ export { registerLogger, logInfo, logAlert, logHmmm };
package/dist/Logger.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.logAlert = exports.logInfo = exports.registerLogger = void 0;
3
+ exports.logHmmm = exports.logAlert = exports.logInfo = exports.registerLogger = void 0;
4
4
  // eslint-disable-next-line @typescript-eslint/no-empty-function
5
5
  let logger = () => { };
6
6
  /**
@@ -24,3 +24,10 @@ function logInfo(message) {
24
24
  logger({ message: `[Onyx] ${message}`, level: 'info' });
25
25
  }
26
26
  exports.logInfo = logInfo;
27
+ /**
28
+ * Send an hmmm message to the logger
29
+ */
30
+ function logHmmm(message) {
31
+ logger({ message: `[Onyx] ${message}`, level: 'hmmm' });
32
+ }
33
+ exports.logHmmm = logHmmm;
@@ -8,6 +8,8 @@ declare const InstanceSync: {
8
8
  setItem: (...args: any[]) => void;
9
9
  removeItem: (...args: any[]) => void;
10
10
  removeItems: (...args: any[]) => void;
11
+ multiMerge: (...args: any[]) => void;
12
+ multiSet: (...args: any[]) => void;
11
13
  mergeItem: (...args: any[]) => void;
12
14
  clear: <T extends () => void>(callback: T) => Promise<void>;
13
15
  };
@@ -14,6 +14,8 @@ const InstanceSync = {
14
14
  setItem: noop_1.default,
15
15
  removeItem: noop_1.default,
16
16
  removeItems: noop_1.default,
17
+ multiMerge: noop_1.default,
18
+ multiSet: noop_1.default,
17
19
  mergeItem: noop_1.default,
18
20
  clear: (callback) => Promise.resolve(callback()),
19
21
  };
@@ -21,6 +21,8 @@ declare const InstanceSync: {
21
21
  setItem: typeof raiseStorageSyncEvent;
22
22
  removeItem: typeof raiseStorageSyncEvent;
23
23
  removeItems: typeof raiseStorageSyncManyKeysEvent;
24
+ multiMerge: typeof raiseStorageSyncManyKeysEvent;
25
+ multiSet: typeof raiseStorageSyncManyKeysEvent;
24
26
  mergeItem: typeof raiseStorageSyncEvent;
25
27
  clear: (clearImplementation: () => void) => Promise<void>;
26
28
  };
@@ -39,6 +39,8 @@ const InstanceSync = {
39
39
  setItem: raiseStorageSyncEvent,
40
40
  removeItem: raiseStorageSyncEvent,
41
41
  removeItems: raiseStorageSyncManyKeysEvent,
42
+ multiMerge: raiseStorageSyncManyKeysEvent,
43
+ multiSet: raiseStorageSyncManyKeysEvent,
42
44
  mergeItem: raiseStorageSyncEvent,
43
45
  clear: (clearImplementation) => {
44
46
  let allKeys;
@@ -6,7 +6,7 @@ declare const StorageMock: {
6
6
  setItem: jest.Mock<Promise<void | import("react-native-quick-sqlite").QueryResult>, [key: any, value: unknown]>;
7
7
  multiSet: jest.Mock<Promise<void | import("react-native-quick-sqlite").BatchQueryResult>, [pairs: import("../providers/types").KeyValuePairList]>;
8
8
  mergeItem: jest.Mock<Promise<void | import("react-native-quick-sqlite").BatchQueryResult>, [key: any, changes: unknown, modifiedData: unknown]>;
9
- multiMerge: jest.Mock<Promise<import("react-native-quick-sqlite").BatchQueryResult | IDBValidKey[]>, [pairs: import("../providers/types").KeyValuePairList]>;
9
+ multiMerge: jest.Mock<Promise<void | import("react-native-quick-sqlite").BatchQueryResult | IDBValidKey[]>, [pairs: import("../providers/types").KeyValuePairList]>;
10
10
  removeItem: jest.Mock<Promise<void | import("react-native-quick-sqlite").QueryResult>, [key: string]>;
11
11
  removeItems: jest.Mock<Promise<void | import("react-native-quick-sqlite").QueryResult>, [keys: import("../providers/types").KeyList]>;
12
12
  clear: jest.Mock<Promise<void | import("react-native-quick-sqlite").QueryResult>, []>;
@@ -40,7 +40,7 @@ const initPromise = new Promise((resolve) => {
40
40
  * Degrade performance by removing the storage provider and only using cache
41
41
  */
42
42
  function degradePerformance(error) {
43
- Logger.logAlert(`Error while using ${provider.name}. Falling back to only using cache and dropping storage.`);
43
+ Logger.logHmmm(`Error while using ${provider.name}. Falling back to only using cache and dropping storage.\n Error: ${error.message}\n Stack: ${error.stack}\n Cause: ${error.cause}`);
44
44
  console.error(error);
45
45
  provider = MemoryOnlyProvider_1.default;
46
46
  }
@@ -108,7 +108,13 @@ const Storage = {
108
108
  /**
109
109
  * Stores multiple key-value pairs in a batch
110
110
  */
111
- multiSet: (pairs) => tryOrDegradePerformance(() => provider.multiSet(pairs)),
111
+ multiSet: (pairs) => tryOrDegradePerformance(() => {
112
+ const promise = provider.multiSet(pairs);
113
+ if (shouldKeepInstancesSync) {
114
+ return promise.then(() => InstanceSync_1.default.multiSet(pairs.map((pair) => pair[0])));
115
+ }
116
+ return promise;
117
+ }),
112
118
  /**
113
119
  * Merging an existing value with a new one
114
120
  */
@@ -123,7 +129,13 @@ const Storage = {
123
129
  * Multiple merging of existing and new values in a batch
124
130
  * This function also removes all nested null values from an object.
125
131
  */
126
- multiMerge: (pairs) => tryOrDegradePerformance(() => provider.multiMerge(pairs)),
132
+ multiMerge: (pairs) => tryOrDegradePerformance(() => {
133
+ const promise = provider.multiMerge(pairs);
134
+ if (shouldKeepInstancesSync) {
135
+ return promise.then(() => InstanceSync_1.default.multiMerge(pairs.map((pair) => pair[0])));
136
+ }
137
+ return promise;
138
+ }),
127
139
  /**
128
140
  * Removes given key and its value
129
141
  */
@@ -32,7 +32,7 @@ type StorageProvider = {
32
32
  /**
33
33
  * Multiple merging of existing and new values in a batch
34
34
  */
35
- multiMerge: (pairs: KeyValuePairList) => Promise<BatchQueryResult | IDBValidKey[]>;
35
+ multiMerge: (pairs: KeyValuePairList) => Promise<BatchQueryResult | IDBValidKey[] | void>;
36
36
  /**
37
37
  * Merges an existing value with a new one by leveraging JSON_PATCH
38
38
  * @param changes - the delta for a specific key
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-onyx",
3
- "version": "2.0.23",
3
+ "version": "2.0.25",
4
4
  "author": "Expensify, Inc.",
5
5
  "homepage": "https://expensify.com",
6
6
  "description": "State management for React Native",