@mrbelloc/encrypted-store 0.3.0 → 1.3.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.
- package/README.md +367 -179
- package/dist/encryptedStore.d.ts +55 -72
- package/dist/encryptedStore.d.ts.map +1 -1
- package/dist/encryptedStore.js +299 -270
- package/dist/encryptedStore.js.map +1 -1
- package/dist/encryption.d.ts +1 -6
- package/dist/encryption.d.ts.map +1 -1
- package/dist/encryption.js +3 -5
- package/dist/encryption.js.map +1 -1
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -4
- package/dist/index.js.map +1 -1
- package/dist/kb-dir-partykit/_test_db_1_1768430534431_data_.json +4 -0
- package/dist/kb-dir-partykit/_test_db_1_1768430534431_idx_data_.json +4 -0
- package/dist/kb-dir-partykit/_test_db_1_1768430534431_idx_meta_.json +4 -0
- package/dist/kb-dir-partykit/_test_db_1_1768430534431_idx_wal_.json +4 -0
- package/dist/kb-dir-partykit/_test_db_1_1768430534431_meta_.json +4 -0
- package/dist/kb-dir-partykit/_test_db_1_1768430534431_wal_.json +4 -0
- package/dist/kb-dir-partykit/_test_db_2_1768430536612_data_.json +4 -0
- package/dist/kb-dir-partykit/_test_db_2_1768430536612_idx_data_.json +4 -0
- package/dist/kb-dir-partykit/_test_db_2_1768430536612_idx_meta_.json +4 -0
- package/dist/kb-dir-partykit/_test_db_2_1768430536612_idx_wal_.json +4 -0
- package/dist/kb-dir-partykit/_test_db_2_1768430536612_meta_.json +4 -0
- package/dist/kb-dir-partykit/_test_db_2_1768430536612_wal_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768430808558_data_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768430808558_idx_data_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768430808558_idx_meta_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768430808558_idx_wal_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768430808558_meta_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768430808558_wal_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768430839116_data_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768430839116_idx_data_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768430839116_idx_meta_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768430839116_idx_wal_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768430839116_meta_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768430839116_wal_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768430931049_data_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768430931049_idx_data_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768430931049_idx_meta_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768430931049_idx_wal_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768430931049_meta_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768430931049_wal_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768430955075_data_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768430955075_idx_data_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768430955075_idx_meta_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768430955075_idx_wal_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768430955075_meta_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768430955075_wal_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768522643733_data_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768522643733_idx_data_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768522643733_idx_meta_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768522643733_idx_wal_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768522643733_meta_.json +4 -0
- package/dist/kb-dir-partykit/_test_sync_db_1768522643733_wal_.json +4 -0
- package/package.json +14 -9
package/dist/encryptedStore.d.ts
CHANGED
|
@@ -1,97 +1,80 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Encrypted storage with change detection
|
|
3
|
-
*
|
|
2
|
+
* Encrypted storage with change detection using PouchDB
|
|
3
|
+
* Simple API: put, get, delete, loadAll
|
|
4
4
|
*/
|
|
5
|
-
interface Doc {
|
|
5
|
+
export interface Doc {
|
|
6
6
|
_id: string;
|
|
7
|
+
_table: string;
|
|
7
8
|
[key: string]: any;
|
|
8
9
|
}
|
|
9
|
-
export interface
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
export interface DecryptionErrorEvent {
|
|
11
|
+
docId: string;
|
|
12
|
+
error: Error;
|
|
13
|
+
rawDoc: any;
|
|
12
14
|
}
|
|
13
|
-
export interface
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
export interface ConflictInfo {
|
|
16
|
+
docId: string;
|
|
17
|
+
table: string;
|
|
18
|
+
id: string;
|
|
19
|
+
currentRev: string;
|
|
20
|
+
conflictRevs: string[];
|
|
21
|
+
winner: Doc;
|
|
22
|
+
losers: Doc[];
|
|
17
23
|
}
|
|
18
|
-
export interface
|
|
19
|
-
|
|
20
|
-
|
|
24
|
+
export interface SyncInfo {
|
|
25
|
+
direction: "push" | "pull" | "both";
|
|
26
|
+
change: {
|
|
27
|
+
docs_read?: number;
|
|
28
|
+
docs_written?: number;
|
|
29
|
+
doc_write_failures?: number;
|
|
30
|
+
errors?: any[];
|
|
31
|
+
};
|
|
21
32
|
}
|
|
22
|
-
export interface
|
|
23
|
-
|
|
24
|
-
|
|
33
|
+
export interface StoreListener {
|
|
34
|
+
onChange: (docs: Doc[]) => void;
|
|
35
|
+
onDelete: (docs: Doc[]) => void;
|
|
36
|
+
onConflict?: (conflicts: ConflictInfo[]) => void;
|
|
37
|
+
onSync?: (info: SyncInfo) => void;
|
|
38
|
+
onError?: (errors: DecryptionErrorEvent[]) => void;
|
|
25
39
|
}
|
|
26
|
-
export
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
rev?: string;
|
|
31
|
-
}>;
|
|
32
|
-
get(id: string): Promise<any>;
|
|
33
|
-
query(field: string, options?: {
|
|
34
|
-
limit?: number;
|
|
35
|
-
descending?: boolean;
|
|
36
|
-
}): Promise<{
|
|
37
|
-
docs?: any[];
|
|
38
|
-
rows: Array<{
|
|
39
|
-
key: string;
|
|
40
|
-
doc?: any;
|
|
41
|
-
value?: any;
|
|
42
|
-
}>;
|
|
43
|
-
}>;
|
|
44
|
-
subscribe(callback: (changes: any[]) => void, remote?: boolean): () => void;
|
|
45
|
-
del(id: string, rev?: string): Promise<any>;
|
|
46
|
-
changes(clock?: any): Promise<{
|
|
47
|
-
rows: any[];
|
|
48
|
-
clock: any;
|
|
49
|
-
}>;
|
|
40
|
+
export interface RemoteOptions {
|
|
41
|
+
url: string;
|
|
42
|
+
live?: boolean;
|
|
43
|
+
retry?: boolean;
|
|
50
44
|
}
|
|
51
|
-
/**
|
|
52
|
-
* EncryptedStore class
|
|
53
|
-
*
|
|
54
|
-
* Main entry point for encrypted storage with change detection
|
|
55
|
-
*/
|
|
56
45
|
export declare class EncryptedStore {
|
|
57
46
|
private db;
|
|
58
47
|
private encryptionHelper;
|
|
59
48
|
private listener;
|
|
60
|
-
private
|
|
61
|
-
private
|
|
62
|
-
private
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
private clock;
|
|
66
|
-
constructor(db: FireproofDb, password: string, listener: StoreListener);
|
|
67
|
-
/** Load all documents and set up change detection (call once after creating store) */
|
|
49
|
+
private changesHandler;
|
|
50
|
+
private syncHandler;
|
|
51
|
+
private processingChain;
|
|
52
|
+
constructor(db: PouchDB.Database, password: string, listener?: StoreListener);
|
|
53
|
+
/** Load all documents and set up change detection */
|
|
68
54
|
loadAll(): Promise<void>;
|
|
69
55
|
/** Create or update a document */
|
|
70
|
-
put(
|
|
71
|
-
/** Get a document
|
|
72
|
-
get(
|
|
56
|
+
put(table: string, doc: any): Promise<Doc>;
|
|
57
|
+
/** Get a document by table and id */
|
|
58
|
+
get(table: string, id: string): Promise<Doc | null>;
|
|
73
59
|
/** Delete a document */
|
|
74
|
-
delete(
|
|
75
|
-
/**
|
|
76
|
-
|
|
60
|
+
delete(table: string, id: string): Promise<void>;
|
|
61
|
+
/** Get all documents (optionally filtered by table) */
|
|
62
|
+
getAll(table?: string): Promise<Doc[]>;
|
|
63
|
+
/** Connect to remote CouchDB for sync */
|
|
64
|
+
connectRemote(options: RemoteOptions): Promise<void>;
|
|
77
65
|
/** Disconnect from remote sync */
|
|
78
66
|
disconnectRemote(): void;
|
|
79
|
-
/**
|
|
67
|
+
/** Resolve a conflict by choosing the winner */
|
|
68
|
+
resolveConflict(table: string, id: string, winningDoc: Doc): Promise<void>;
|
|
69
|
+
/** Check if a document has conflicts without triggering the callback */
|
|
70
|
+
getConflictInfo(table: string, id: string): Promise<ConflictInfo | null>;
|
|
71
|
+
/** Re-subscribe to changes (useful after disconnect/reconnect) */
|
|
80
72
|
reconnect(): void;
|
|
81
|
-
|
|
82
|
-
private readAllEncrypted;
|
|
83
|
-
/**
|
|
84
|
-
* Query db.changes() and process any new changes (external indexer pattern)
|
|
85
|
-
* This is called whenever the subscription fires
|
|
86
|
-
*/
|
|
73
|
+
private setupSubscription;
|
|
87
74
|
private handleChange;
|
|
88
|
-
private
|
|
89
|
-
private encryptDoc;
|
|
75
|
+
private buildConflictInfo;
|
|
90
76
|
private decryptDoc;
|
|
77
|
+
private encryptDoc;
|
|
91
78
|
private parseFullId;
|
|
92
|
-
private generateId;
|
|
93
|
-
private groupByTable;
|
|
94
|
-
private groupDeletedByTable;
|
|
95
79
|
}
|
|
96
|
-
export {};
|
|
97
80
|
//# sourceMappingURL=encryptedStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encryptedStore.d.ts","sourceRoot":"","sources":["../src/encryptedStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"encryptedStore.d.ts","sourceRoot":"","sources":["../src/encryptedStore.ts"],"names":[],"mappings":"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"}
|