Skip to content

Commit b74b50f

Browse files
committed
[persisters] RemotePersister
1 parent a80174a commit b74b50f

File tree

4 files changed

+61
-9
lines changed

4 files changed

+61
-9
lines changed

src/persisters/persister-remote.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1-
import {Persister, PersisterListener} from '../types/persisters';
1+
import {
2+
RemotePersister,
3+
createRemotePersister as createRemotePersisterDecl,
4+
} from '../types/persisters/persister-remote';
25
import {Store, Tables, Values} from '../types/store';
36
import {isUndefined, startInterval, stopInterval} from '../common/other';
47
import {jsonParse, jsonString} from '../common/json';
8+
import {PersisterListener} from '../types/persisters';
59
import {createCustomPersister} from '../persisters';
6-
import {createRemotePersister as createRemotePersisterDecl} from '../types/persisters/persister-remote';
710

811
const getETag = (response: Response) => response.headers.get('ETag');
912

@@ -13,7 +16,7 @@ export const createRemotePersister = ((
1316
saveUrl: string,
1417
autoLoadIntervalSeconds = 5,
1518
onIgnoredError?: (error: any) => void,
16-
): Persister => {
19+
): RemotePersister => {
1720
let lastEtag: string | null;
1821

1922
const getPersisted = async (): Promise<[Tables, Values]> => {
@@ -56,5 +59,5 @@ export const createRemotePersister = ((
5659
delPersisterListener,
5760
onIgnoredError,
5861
['getUrls', [loadUrl, saveUrl]],
59-
);
62+
) as RemotePersister;
6063
}) as typeof createRemotePersisterDecl;

src/types/docs/persisters/persister-remote.js

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,42 @@
66
* @module persister-remote
77
*/
88
/// persister-remote
9+
/**
10+
* The RemotePersister interface is a minor extension to the Persister
11+
* interface.
12+
*
13+
* It simply provides an extra getUrls method for accessing the URLs the Store
14+
* is being persisted to.
15+
* @since v4.3.14
16+
*/
17+
/// RemotePersister
18+
{
19+
/**
20+
* The getUrls method returns the URLs the Store is being persisted to.
21+
* @returns The load and save URLs as a two-item array.
22+
* @example
23+
* This example creates a RemotePersister object against a newly-created Store
24+
* and then gets the URLs back out again.
25+
*
26+
* ```js
27+
* const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
28+
* const persister = createRemotePersister(
29+
* store,
30+
* 'https://example.com/load',
31+
* 'https://example.com/save',
32+
* 5,
33+
* );
34+
*
35+
* console.log(persister.getUrls());
36+
* // -> ['https://example.com/load', 'https://example.com/save']
37+
*
38+
* persister.destroy();
39+
* ```
40+
* @category Getter
41+
* @since v4.3.14
42+
*/
43+
/// RemotePersister.getUrls
44+
}
945
/**
1046
* The createRemotePersister function creates a Persister object that can
1147
* persist the Store to a remote server.
@@ -26,10 +62,10 @@
2662
* @param onIgnoredError An optional handler for the errors that the Persister
2763
* would otherwise ignore when trying to save or load data. This is suitable for
2864
* debugging persistence issues in a development environment, since v4.0.4.
29-
* @returns A reference to the new Persister object.
65+
* @returns A reference to the new RemotePersister object.
3066
* @example
31-
* This example creates a Persister object and persists the Store to a remote
32-
* server.
67+
* This example creates a RemotePersister object and persists the Store to a
68+
* remote server.
3369
*
3470
* ```js yolo
3571
* const store = createStore().setTables({pets: {fido: {species: 'dog'}}});

src/types/persisters/persister-remote.d.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,17 @@
33
import {Persister} from '../persisters';
44
import {Store} from '../store';
55

6+
/// RemotePersister
7+
export interface RemotePersister extends Persister {
8+
/// RemotePersister.getUrls
9+
getUrls: () => [string, string];
10+
}
11+
612
/// createRemotePersister
713
export function createRemotePersister(
814
store: Store,
915
loadUrl: string,
1016
saveUrl: string,
1117
autoLoadIntervalSeconds?: number,
1218
onIgnoredError?: (error: any) => void,
13-
): Persister;
19+
): RemotePersister;

src/types/with-schemas/persisters/persister-remote.d.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,18 @@
33
import {OptionalSchemas, Store} from '../store';
44
import {Persister} from '../persisters';
55

6+
/// RemotePersister
7+
export interface RemotePersister<Schemas extends OptionalSchemas>
8+
extends Persister<Schemas> {
9+
/// RemotePersister.getUrls
10+
getUrls: () => [string, string];
11+
}
12+
613
/// createRemotePersister
714
export function createRemotePersister<Schemas extends OptionalSchemas>(
815
store: Store<Schemas>,
916
loadUrl: string,
1017
saveUrl: string,
1118
autoLoadIntervalSeconds?: number,
1219
onIgnoredError?: (error: any) => void,
13-
): Persister<Schemas>;
20+
): RemotePersister<Schemas>;

0 commit comments

Comments
 (0)