@openmrs/esm-offline 4.0.0-pre.0 → 4.0.0-pre.1

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.
@@ -1,17 +1,17 @@
1
- @openmrs/esm-offline:build: cache hit, replaying output e298da5a38250435
1
+ @openmrs/esm-offline:build: cache hit, replaying output 1364214084b08f2a
2
2
  @openmrs/esm-offline:build: $ webpack --mode=production
3
- @openmrs/esm-offline:build: asset openmrs-esm-offline.js 110 KiB [emitted] [minimized] (name: main) 1 related asset
4
- @openmrs/esm-offline:build: orphan modules 157 KiB [orphan] 24 modules
3
+ @openmrs/esm-offline:build: asset openmrs-esm-offline.js 112 KiB [emitted] [minimized] (name: main) 1 related asset
4
+ @openmrs/esm-offline:build: orphan modules 164 KiB [orphan] 26 modules
5
5
  @openmrs/esm-offline:build: runtime modules 2.02 KiB 7 modules
6
- @openmrs/esm-offline:build: built modules 169 KiB [built]
7
- @openmrs/esm-offline:build:  cacheable modules 169 KiB
6
+ @openmrs/esm-offline:build: built modules 177 KiB [built]
7
+ @openmrs/esm-offline:build:  cacheable modules 176 KiB
8
8
  @openmrs/esm-offline:build:  modules by path ../../../node_modules/systemjs-webpack-interop/ 3.27 KiB
9
9
  @openmrs/esm-offline:build:  ../../../node_modules/systemjs-webpack-interop/auto-public-path/1.js 89 bytes [built] [code generated]
10
10
  @openmrs/esm-offline:build:  ../../../node_modules/systemjs-webpack-interop/auto-public-path/auto-public-path.js 846 bytes [built] [code generated]
11
11
  @openmrs/esm-offline:build:  ../../../node_modules/systemjs-webpack-interop/public-path.js 2.36 KiB [built] [code generated]
12
- @openmrs/esm-offline:build:  ./src/index.ts + 14 modules 141 KiB [built] [code generated]
12
+ @openmrs/esm-offline:build:  ./src/index.ts + 16 modules 149 KiB [built] [code generated]
13
13
  @openmrs/esm-offline:build:  ../../../node_modules/regenerator-runtime/runtime.js 24.3 KiB [built] [code generated]
14
14
  @openmrs/esm-offline:build:  modules by path external "@openmrs/ 84 bytes
15
15
  @openmrs/esm-offline:build:  external "@openmrs/esm-api" 42 bytes [built] [code generated]
16
16
  @openmrs/esm-offline:build:  external "@openmrs/esm-state" 42 bytes [built] [code generated]
17
- @openmrs/esm-offline:build: webpack 5.70.0 compiled successfully in 5157 ms
17
+ @openmrs/esm-offline:build: webpack 5.70.0 compiled successfully in 10780 ms
@@ -1,2 +1,2 @@
1
- @openmrs/esm-offline:lint: cache hit, replaying output 4ce4f62d619b4bde
1
+ @openmrs/esm-offline:lint: cache hit, replaying output ea6024db99e36a2e
2
2
  @openmrs/esm-offline:lint: $ eslint src --ext ts,tsx
@@ -1,24 +1,123 @@
1
- @openmrs/esm-offline:test: cache hit, replaying output eafdeb8d1b32138c
2
- @openmrs/esm-offline:test: $ jest --config jest.config.js --passWithNoTests
3
- @openmrs/esm-offline:test: PASS src/sync.test.ts
4
- @openmrs/esm-offline:test:  Sync Queue
5
- @openmrs/esm-offline:test:  enqueues sync item with expected attributes (107 ms)
6
- @openmrs/esm-offline:test:  ✓ allows querying for items of all types at once (29 ms)
7
- @openmrs/esm-offline:test:  Logged-in user specific functions
8
- @openmrs/esm-offline:test:  enqueue and return sync items of currently logged-in user (40 ms)
9
- @openmrs/esm-offline:test:  getSynchronizationItems
10
- @openmrs/esm-offline:test:  returns `content` of corresponding `getFullSynchronizationItems` call (5 ms)
11
- @openmrs/esm-offline:test:  getSynchronizationItemsFor
12
- @openmrs/esm-offline:test:  returns `content` of corresponding `getFullSynchronizationItemsFor` call (10 ms)
13
- @openmrs/esm-offline:test:  getSynchronizationItem
14
- @openmrs/esm-offline:test:  returns the specific sync item with given ID (35 ms)
15
- @openmrs/esm-offline:test:  returns undefined when no item with given ID exists (6 ms)
16
- @openmrs/esm-offline:test:  deleteSynchronizationItem
17
- @openmrs/esm-offline:test:  ✓ deletes sync item with given ID (18 ms)
18
- @openmrs/esm-offline:test:  does not throw when no item with given ID exists (2 ms)
19
- @openmrs/esm-offline:test: 
20
- @openmrs/esm-offline:test: Test Suites: 1 passed, 1 total
21
- @openmrs/esm-offline:test: Tests: 9 passed, 9 total
22
- @openmrs/esm-offline:test: Snapshots: 0 total
23
- @openmrs/esm-offline:test: Time: 3.775 s
24
- @openmrs/esm-offline:test: Ran all test suites.
1
+ @openmrs/esm-offline:test: cache hit, replaying output 1a48812f0c130a46
2
+ @openmrs/esm-offline:test: $ jest --config jest.config.js --passWithNoTests
3
+ @openmrs/esm-offline:test: PASS src/sync.test.ts (14.915 s)
4
+ @openmrs/esm-offline:test: PASS src/dynamic-offline-data.test.ts (16.473 s)
5
+ @openmrs/esm-offline:test:  Console
6
+ @openmrs/esm-offline:test: 
7
+ @openmrs/esm-offline:test:  console.warn
8
+ @openmrs/esm-offline:test:  The query {"type":"test","users":"00000000-0000-0000-0000-000000000000"} on dynamicOfflineData would benefit of a compound index [type+users]
9
+ @openmrs/esm-offline:test: 
10
+ @openmrs/esm-offline:test:  149 | const db = new OfflineDb();
11
+ @openmrs/esm-offline:test:  150 | return await db.dynamicOfflineData
12
+ @openmrs/esm-offline:test:  > 151 | .where(filter)
13
+ @openmrs/esm-offline:test:  | ^
14
+ @openmrs/esm-offline:test:  152 | .toArray()
15
+ @openmrs/esm-offline:test:  153 | .catch(Dexie.errnames.DatabaseClosed, () => []);
16
+ @openmrs/esm-offline:test:  154 | }
17
+ @openmrs/esm-offline:test: 
18
+ @openmrs/esm-offline:test:  at Table.Object.<anonymous>.Table.where (../../../node_modules/dexie/src/classes/table/table.ts:118:42)
19
+ @openmrs/esm-offline:test:  at where (src/dynamic-offline-data.ts:151:6)
20
+ @openmrs/esm-offline:test:  at Object.getDynamicOfflineDataEntriesFor [as getDynamicOfflineDataEntries] (src/dynamic-offline-data.ts:135:16)
21
+ @openmrs/esm-offline:test:  at Object.<anonymous> (src/dynamic-offline-data.test.ts:28:21)
22
+ @openmrs/esm-offline:test: 
23
+ @openmrs/esm-offline:test:  console.warn
24
+ @openmrs/esm-offline:test:  The query {"type":"test","users":"00000000-0000-0000-0000-000000000000"} on dynamicOfflineData would benefit of a compound index [type+users]
25
+ @openmrs/esm-offline:test: 
26
+ @openmrs/esm-offline:test:  149 | const db = new OfflineDb();
27
+ @openmrs/esm-offline:test:  150 | return await db.dynamicOfflineData
28
+ @openmrs/esm-offline:test:  > 151 | .where(filter)
29
+ @openmrs/esm-offline:test:  | ^
30
+ @openmrs/esm-offline:test:  152 | .toArray()
31
+ @openmrs/esm-offline:test:  153 | .catch(Dexie.errnames.DatabaseClosed, () => []);
32
+ @openmrs/esm-offline:test:  154 | }
33
+ @openmrs/esm-offline:test: 
34
+ @openmrs/esm-offline:test:  at Table.Object.<anonymous>.Table.where (../../../node_modules/dexie/src/classes/table/table.ts:118:42)
35
+ @openmrs/esm-offline:test:  at where (src/dynamic-offline-data.ts:151:6)
36
+ @openmrs/esm-offline:test:  at Object.getDynamicOfflineDataEntriesFor [as getDynamicOfflineDataEntries] (src/dynamic-offline-data.ts:135:16)
37
+ @openmrs/esm-offline:test:  at Object.<anonymous> (src/dynamic-offline-data.test.ts:39:21)
38
+ @openmrs/esm-offline:test: 
39
+ @openmrs/esm-offline:test:  console.warn
40
+ @openmrs/esm-offline:test:  The query {"type":"test","users":"user-id-1"} on dynamicOfflineData would benefit of a compound index [type+users]
41
+ @openmrs/esm-offline:test: 
42
+ @openmrs/esm-offline:test:  149 | const db = new OfflineDb();
43
+ @openmrs/esm-offline:test:  150 | return await db.dynamicOfflineData
44
+ @openmrs/esm-offline:test:  > 151 | .where(filter)
45
+ @openmrs/esm-offline:test:  | ^
46
+ @openmrs/esm-offline:test:  152 | .toArray()
47
+ @openmrs/esm-offline:test:  153 | .catch(Dexie.errnames.DatabaseClosed, () => []);
48
+ @openmrs/esm-offline:test:  154 | }
49
+ @openmrs/esm-offline:test: 
50
+ @openmrs/esm-offline:test:  at Table.Object.<anonymous>.Table.where (../../../node_modules/dexie/src/classes/table/table.ts:118:42)
51
+ @openmrs/esm-offline:test:  at Object.where [as getDynamicOfflineDataEntriesFor] (src/dynamic-offline-data.ts:151:6)
52
+ @openmrs/esm-offline:test:  at Object.<anonymous> (src/dynamic-offline-data.test.ts:47:79)
53
+ @openmrs/esm-offline:test: 
54
+ @openmrs/esm-offline:test:  console.warn
55
+ @openmrs/esm-offline:test:  The query {"type":"test","identifier":"123","users":"00000000-0000-0000-0000-000000000000"} on dynamicOfflineData would benefit of a compound index [type+identifier+users]
56
+ @openmrs/esm-offline:test: 
57
+ @openmrs/esm-offline:test:  233 | const db = new OfflineDb();
58
+ @openmrs/esm-offline:test:  234 | const existingEntry = await db.dynamicOfflineData
59
+ @openmrs/esm-offline:test:  > 235 | .get({
60
+ @openmrs/esm-offline:test:  | ^
61
+ @openmrs/esm-offline:test:  236 | type,
62
+ @openmrs/esm-offline:test:  237 | identifier,
63
+ @openmrs/esm-offline:test:  238 | users: userId,
64
+ @openmrs/esm-offline:test: 
65
+ @openmrs/esm-offline:test:  at Table.Object.<anonymous>.Table.where (../../../node_modules/dexie/src/classes/table/table.ts:118:42)
66
+ @openmrs/esm-offline:test:  at Table.Object.<anonymous>.Table.get (../../../node_modules/dexie/src/classes/table/table.ts:77:19)
67
+ @openmrs/esm-offline:test:  at get (src/dynamic-offline-data.ts:235:6)
68
+ @openmrs/esm-offline:test:  at Object.removeDynamicOfflineDataFor [as removeDynamicOfflineData] (src/dynamic-offline-data.ts:218:16)
69
+ @openmrs/esm-offline:test:  at Object.<anonymous> (src/dynamic-offline-data.test.ts:56:5)
70
+ @openmrs/esm-offline:test: 
71
+ @openmrs/esm-offline:test:  console.warn
72
+ @openmrs/esm-offline:test:  The query {"type":"test","users":"00000000-0000-0000-0000-000000000000"} on dynamicOfflineData would benefit of a compound index [type+users]
73
+ @openmrs/esm-offline:test: 
74
+ @openmrs/esm-offline:test:  149 | const db = new OfflineDb();
75
+ @openmrs/esm-offline:test:  150 | return await db.dynamicOfflineData
76
+ @openmrs/esm-offline:test:  > 151 | .where(filter)
77
+ @openmrs/esm-offline:test:  | ^
78
+ @openmrs/esm-offline:test:  152 | .toArray()
79
+ @openmrs/esm-offline:test:  153 | .catch(Dexie.errnames.DatabaseClosed, () => []);
80
+ @openmrs/esm-offline:test:  154 | }
81
+ @openmrs/esm-offline:test: 
82
+ @openmrs/esm-offline:test:  at Table.Object.<anonymous>.Table.where (../../../node_modules/dexie/src/classes/table/table.ts:118:42)
83
+ @openmrs/esm-offline:test:  at where (src/dynamic-offline-data.ts:151:6)
84
+ @openmrs/esm-offline:test:  at Object.getDynamicOfflineDataEntriesFor [as getDynamicOfflineDataEntries] (src/dynamic-offline-data.ts:135:16)
85
+ @openmrs/esm-offline:test:  at Object.<anonymous> (src/dynamic-offline-data.test.ts:57:21)
86
+ @openmrs/esm-offline:test: 
87
+ @openmrs/esm-offline:test:  console.warn
88
+ @openmrs/esm-offline:test:  The query {"type":"test","identifier":"123","users":"user-id-1"} on dynamicOfflineData would benefit of a compound index [type+identifier+users]
89
+ @openmrs/esm-offline:test: 
90
+ @openmrs/esm-offline:test:  233 | const db = new OfflineDb();
91
+ @openmrs/esm-offline:test:  234 | const existingEntry = await db.dynamicOfflineData
92
+ @openmrs/esm-offline:test:  > 235 | .get({
93
+ @openmrs/esm-offline:test:  | ^
94
+ @openmrs/esm-offline:test:  236 | type,
95
+ @openmrs/esm-offline:test:  237 | identifier,
96
+ @openmrs/esm-offline:test:  238 | users: userId,
97
+ @openmrs/esm-offline:test: 
98
+ @openmrs/esm-offline:test:  at Table.Object.<anonymous>.Table.where (../../../node_modules/dexie/src/classes/table/table.ts:118:42)
99
+ @openmrs/esm-offline:test:  at Table.Object.<anonymous>.Table.get (../../../node_modules/dexie/src/classes/table/table.ts:77:19)
100
+ @openmrs/esm-offline:test:  at Object.get [as removeDynamicOfflineDataFor] (src/dynamic-offline-data.ts:235:6)
101
+ @openmrs/esm-offline:test:  at Object.<anonymous> (src/dynamic-offline-data.test.ts:64:66)
102
+ @openmrs/esm-offline:test: 
103
+ @openmrs/esm-offline:test:  console.warn
104
+ @openmrs/esm-offline:test:  The query {"type":"test","users":"user-id-2"} on dynamicOfflineData would benefit of a compound index [type+users]
105
+ @openmrs/esm-offline:test: 
106
+ @openmrs/esm-offline:test:  149 | const db = new OfflineDb();
107
+ @openmrs/esm-offline:test:  150 | return await db.dynamicOfflineData
108
+ @openmrs/esm-offline:test:  > 151 | .where(filter)
109
+ @openmrs/esm-offline:test:  | ^
110
+ @openmrs/esm-offline:test:  152 | .toArray()
111
+ @openmrs/esm-offline:test:  153 | .catch(Dexie.errnames.DatabaseClosed, () => []);
112
+ @openmrs/esm-offline:test:  154 | }
113
+ @openmrs/esm-offline:test: 
114
+ @openmrs/esm-offline:test:  at Table.Object.<anonymous>.Table.where (../../../node_modules/dexie/src/classes/table/table.ts:118:42)
115
+ @openmrs/esm-offline:test:  at Object.where [as getDynamicOfflineDataEntriesFor] (src/dynamic-offline-data.ts:151:6)
116
+ @openmrs/esm-offline:test:  at Object.<anonymous> (src/dynamic-offline-data.test.ts:66:79)
117
+ @openmrs/esm-offline:test: 
118
+ @openmrs/esm-offline:test: 
119
+ @openmrs/esm-offline:test: Test Suites: 2 passed, 2 total
120
+ @openmrs/esm-offline:test: Tests: 14 passed, 14 total
121
+ @openmrs/esm-offline:test: Snapshots: 0 total
122
+ @openmrs/esm-offline:test: Time: 20.647 s
123
+ @openmrs/esm-offline:test: Ran all test suites.
@@ -1,2 +1,2 @@
1
- @openmrs/esm-offline:typescript: cache hit, replaying output bf90fba61d756973
2
- @openmrs/esm-offline:typescript: $ tsc
1
+ @openmrs/esm-offline:typescript: cache hit, replaying output 7455ab648603336c
2
+ @openmrs/esm-offline:typescript: $ tsc
@@ -0,0 +1,156 @@
1
+ /**
2
+ * A handler for synchronizing dynamically declared offline data.
3
+ * Can be setup using the {@link setupDynamicOfflineDataHandler} function.
4
+ */
5
+ export interface DynamicOfflineDataHandler {
6
+ /**
7
+ * A string uniquely identifying the handler.
8
+ */
9
+ id: string;
10
+ /**
11
+ * The type of offline data handled by this handler.
12
+ * See {@link DynamicOfflineData.type} for details.
13
+ */
14
+ type: string;
15
+ /**
16
+ * A human-readable string representing the handler.
17
+ * If provided, the handler can be rendered in the UI using that string.
18
+ */
19
+ displayName?: string;
20
+ /**
21
+ * Evaluates whether the given offline data is correctly synced at this point in time from the perspective
22
+ * of this single handler.
23
+ * If `false`, the handler would have to (re-)sync the data in order for offline mode to properly work.
24
+ * @param identifier The identifier of the offline data. See {@link DynamicOfflineData} for details.
25
+ * @param abortSignal An {@link AbortSignal} which can be used to cancel the operation.
26
+ */
27
+ isSynced(identifier: string, abortSignal?: AbortSignal): Promise<boolean>;
28
+ /**
29
+ * Synchronizes the given offline data.
30
+ * @param identifier The identifier of the offline data. See {@link DynamicOfflineData} for details.
31
+ * @param abortSignal An {@link AbortSignal} which can be used to cancel the operation.
32
+ */
33
+ sync(identifier: string, abortSignal?: AbortSignal): Promise<void>;
34
+ }
35
+ /**
36
+ * Represents the registration of a single dynamic offline data entry.
37
+ */
38
+ export interface DynamicOfflineData {
39
+ /**
40
+ * The internal ID of the data entry, as assigned by the IndexedDB where it is stored.
41
+ */
42
+ id?: number;
43
+ /**
44
+ * The underlying type used for categorizing the data entry.
45
+ * Examples could be `"patient"` or `"form"`.
46
+ */
47
+ type: string;
48
+ /**
49
+ * The externally provided identifier of the data entry.
50
+ * This is typically the ID of the resource as assigned by a remote API.
51
+ */
52
+ identifier: string;
53
+ /**
54
+ * The UUIDs of the users who need this data entry available offline.
55
+ */
56
+ users: Array<string>;
57
+ /**
58
+ * If this entry has already been synced, returns the result of that last sync attempt.
59
+ * Otherwise this is `undefined`.
60
+ */
61
+ syncState?: DynamicOfflineDataSyncState;
62
+ }
63
+ /**
64
+ * Represents the result of syncing a given {@link DynamicOfflineData} entry.
65
+ */
66
+ export interface DynamicOfflineDataSyncState {
67
+ /**
68
+ * The time when the entry has been synced the last time.
69
+ */
70
+ syncedOn: Date;
71
+ /**
72
+ * The ID of the user who has triggered the data synchronization.
73
+ */
74
+ syncedBy: string;
75
+ /**
76
+ * The IDs of the handlers which successfully synchronized their data.
77
+ */
78
+ succeededHandlers: Array<string>;
79
+ /**
80
+ * The IDs of the handlers which failed to synchronize their data.
81
+ */
82
+ erroredHandlers: Array<string>;
83
+ /**
84
+ * A collection of the errors caught while synchronizing, per handler.
85
+ */
86
+ errors: Array<{
87
+ handlerId: string;
88
+ message: string;
89
+ }>;
90
+ }
91
+ /**
92
+ * Returns all handlers which have been setup using the {@link setupDynamicOfflineDataHandler} function.
93
+ */
94
+ export declare function getDynamicOfflineDataHandlers(): DynamicOfflineDataHandler[];
95
+ /**
96
+ * Sets up a handler for synchronizing dynamic offline data.
97
+ * See {@link DynamicOfflineDataHandler} for details.
98
+ * @param handler The handler to be setup.
99
+ */
100
+ export declare function setupDynamicOfflineDataHandler(handler: DynamicOfflineDataHandler): void;
101
+ /**
102
+ * Returns all {@link DynamicOfflineData} entries which registered for the currently logged in user.
103
+ * Optionally returns only entries of a given type.
104
+ * @param type The type of the entries to be returned. If `undefined`, returns all types.
105
+ */
106
+ export declare function getDynamicOfflineDataEntries(type?: string): Promise<Array<DynamicOfflineData>>;
107
+ /**
108
+ * Returns all {@link DynamicOfflineData} entries which registered for the given user.
109
+ * Optionally returns only entries of a given type.
110
+ * @param userId The ID of the user whose entries are to be retrieved.
111
+ * @param type The type of the entries to be returned. If `undefined`, returns all types.
112
+ */
113
+ export declare function getDynamicOfflineDataEntriesFor(userId: string, type?: string): Promise<Array<DynamicOfflineData>>;
114
+ /**
115
+ * Declares that dynamic offline data of the given {@link type} with the given {@link identifier}
116
+ * should be made available offline for the currently logged in user.
117
+ * @param type The type of the offline data. See {@link DynamicOfflineData} for details.
118
+ * @param identifier The identifier of the offline data. See {@link DynamicOfflineData} for details.
119
+ */
120
+ export declare function putDynamicOfflineData(type: string, identifier: string): Promise<void>;
121
+ /**
122
+ * Declares that dynamic offline data of the given {@link type} with the given {@link identifier}
123
+ * should be made available offline for the user with the given ID.
124
+ * @param userId The ID of the user for whom the dynamic offline data should be made available.
125
+ * @param type The type of the offline data. See {@link DynamicOfflineData} for details.
126
+ * @param identifier The identifier of the offline data. See {@link DynamicOfflineData} for details.
127
+ */
128
+ export declare function putDynamicOfflineDataFor(userId: string, type: string, identifier: string): Promise<void>;
129
+ /**
130
+ * Declares that dynamic offline data of the given {@link type} with the given {@link identifier}
131
+ * no longer needs to be available offline for the currently logged in user.
132
+ * @param type The type of the offline data. See {@link DynamicOfflineData} for details.
133
+ * @param identifier The identifier of the offline data. See {@link DynamicOfflineData} for details.
134
+ */
135
+ export declare function removeDynamicOfflineData(type: string, identifier: string): Promise<void>;
136
+ /**
137
+ * Declares that dynamic offline data of the given {@link type} with the given {@link identifier}
138
+ * no longer needs to be available offline for the user with the given ID.
139
+ * @param userId The ID of the user who doesn't require the specified offline data.
140
+ * @param type The type of the offline data. See {@link DynamicOfflineData} for details.
141
+ * @param identifier The identifier of the offline data. See {@link DynamicOfflineData} for details.
142
+ */
143
+ export declare function removeDynamicOfflineDataFor(userId: string, type: string, identifier: string): Promise<void>;
144
+ /**
145
+ * Synchronizes all offline data entries of the given {@link type} for the currently logged in user.
146
+ * @param type The type of the offline data. See {@link DynamicOfflineData} for details.
147
+ * @param abortSignal An {@link AbortSignal} which can be used to cancel the operation.
148
+ */
149
+ export declare function syncAllDynamicOfflineData(type: string, abortSignal?: AbortSignal): Promise<void>;
150
+ /**
151
+ * Synchronizes a single offline data entry of the given {@link type} for the currently logged in user.
152
+ * @param type The type of the offline data. See {@link DynamicOfflineData} for details.
153
+ * @param identifier The identifier of the offline data. See {@link DynamicOfflineData} for details.
154
+ * @param abortSignal An {@link AbortSignal} which can be used to cancel the operation.
155
+ */
156
+ export declare function syncDynamicOfflineData(type: string, identifier: string, abortSignal?: AbortSignal): Promise<void>;
@@ -0,0 +1 @@
1
+ import "fake-indexeddb/auto";
@@ -0,0 +1,9 @@
1
+ export * from "./service-worker";
2
+ export * from "./service-worker-http-headers";
3
+ export * from "./service-worker-messaging";
4
+ export * from "./mode";
5
+ export * from "./sync";
6
+ export * from "./uuid";
7
+ export * from "./offline-patient-data";
8
+ export * from "./dynamic-offline-data";
9
+ export { getOfflineDb } from "./offline-db";
package/dist/mode.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ /** @module @category Offline */
2
+ export declare type OfflineMode = "on" | "off" | "unavailable";
3
+ export interface OfflineModeResult {
4
+ current: OfflineMode;
5
+ notAvailable: boolean;
6
+ active: boolean;
7
+ }
8
+ export declare function getCurrentOfflineMode(): OfflineModeResult;
9
+ export declare function setCurrentOfflineMode(mode: OfflineMode): void;
10
+ export declare function activateOfflineCapability(): Promise<void>;
@@ -0,0 +1,20 @@
1
+ import Dexie, { Table } from "dexie";
2
+ import { DynamicOfflineData } from "./dynamic-offline-data";
3
+ import { SyncItem } from "./sync";
4
+ /**
5
+ * Accesses the central IndexedDB used by the `esm-offline` module to persist offline related state.
6
+ * Leverages the `dexie` library for IndexedDB management.
7
+ */
8
+ export declare class OfflineDb extends Dexie {
9
+ /**
10
+ * The table used to store the data of the offline synchronization queue (aka "sync queue" / "offline actions").
11
+ */
12
+ syncQueue: Table<SyncItem, number>;
13
+ dynamicOfflineData: Table<DynamicOfflineData, number>;
14
+ constructor();
15
+ }
16
+ /**
17
+ * @internal Temporarily added for esm-offline-tools-app and workarounds. Please don't use elsewhere.
18
+ * @deprecated Should/Will be removed in the future per the above reason.
19
+ */
20
+ export declare function getOfflineDb(): OfflineDb;
@@ -0,0 +1,30 @@
1
+ /** @deprecated Will be removed once all modules have been migrated to the new dynamic offline data API. */
2
+ export interface OfflinePatientDataSyncStore {
3
+ offlinePatientDataSyncState: Record<string, OfflinePatientDataSyncState>;
4
+ handlers: Record<string, OfflinePatientDataSyncHandler>;
5
+ }
6
+ /** @deprecated Will be removed once all modules have been migrated to the new dynamic offline data API. */
7
+ export interface OfflinePatientDataSyncState {
8
+ readonly timestamp: Date;
9
+ readonly syncingHandlers: Array<string>;
10
+ readonly syncedHandlers: Array<string>;
11
+ readonly failedHandlers: Array<string>;
12
+ readonly errors: Record<string, string>;
13
+ abort(): boolean;
14
+ }
15
+ /** @deprecated Will be removed once all modules have been migrated to the new dynamic offline data API. */
16
+ export interface OfflinePatientDataSyncHandler {
17
+ readonly displayName: string;
18
+ onOfflinePatientAdded(args: OfflinePatientArgs): Promise<void>;
19
+ }
20
+ /** @deprecated Will be removed once all modules have been migrated to the new dynamic offline data API. */
21
+ export interface OfflinePatientArgs {
22
+ patientUuid: string;
23
+ signal: AbortSignal;
24
+ }
25
+ /** @deprecated Will be removed once all modules have been migrated to the new dynamic offline data API. */
26
+ export declare function getOfflinePatientDataStore(): import("unistore").Store<OfflinePatientDataSyncStore>;
27
+ /** @deprecated Will be removed once all modules have been migrated to the new dynamic offline data API. */
28
+ export declare function registerOfflinePatientHandler(identifier: string, handler: OfflinePatientDataSyncHandler): void;
29
+ /** @deprecated Will be removed once all modules have been migrated to the new dynamic offline data API. */
30
+ export declare function syncOfflinePatientData(patientUuid: string): Promise<void>;