kaiwen-core-js 0.1.0 → 0.1.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/dist/app.d.ts +1 -0
- package/dist/app.js +15 -0
- package/dist/models/record.d.ts +2 -1
- package/dist/models/record.js +3 -2
- package/package.json +1 -1
- package/src/app.ts +15 -0
- package/src/models/record.ts +2 -1
package/dist/app.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export declare class KaiwenApp {
|
|
|
15
15
|
login(mnemonic: string): Promise<void>;
|
|
16
16
|
saveRecord(userId: string, payload: any): Promise<KWRecord>;
|
|
17
17
|
getDecryptedRecord(id: string): Promise<any>;
|
|
18
|
+
deleteRecord(id: string): Promise<boolean>;
|
|
18
19
|
pushSync(): Promise<number>;
|
|
19
20
|
pullSync(): Promise<number>;
|
|
20
21
|
}
|
package/dist/app.js
CHANGED
|
@@ -34,8 +34,23 @@ class KaiwenApp {
|
|
|
34
34
|
const record = await this.storage.getRecord(id);
|
|
35
35
|
if (!record)
|
|
36
36
|
return null;
|
|
37
|
+
if (record.is_deleted === 1)
|
|
38
|
+
return null;
|
|
39
|
+
if (!record.payload)
|
|
40
|
+
return null;
|
|
37
41
|
return await engine_1.KWCryptoEngine.decryptPayload(record.payload, this.vault.getKey());
|
|
38
42
|
}
|
|
43
|
+
async deleteRecord(id) {
|
|
44
|
+
const record = await this.storage.getRecord(id);
|
|
45
|
+
if (!record)
|
|
46
|
+
return false;
|
|
47
|
+
record.is_deleted = 1;
|
|
48
|
+
record.payload = ""; // Empty payload for tombstones
|
|
49
|
+
record.updated_at = Date.now() / 1000;
|
|
50
|
+
record.logical_clock += 1;
|
|
51
|
+
record.is_synced = 0;
|
|
52
|
+
return await this.storage.saveRecord(id, record);
|
|
53
|
+
}
|
|
39
54
|
async pushSync() {
|
|
40
55
|
return await this.pipeline.pushSync(this.appId);
|
|
41
56
|
}
|
package/dist/models/record.d.ts
CHANGED
|
@@ -5,8 +5,9 @@ export declare class KWRecord {
|
|
|
5
5
|
payload: string;
|
|
6
6
|
updated_at: number;
|
|
7
7
|
is_synced: number;
|
|
8
|
+
is_deleted: number;
|
|
8
9
|
schema_version: number;
|
|
9
10
|
logical_clock: number;
|
|
10
|
-
constructor(id: string, app_id: string, user_id: string, payload: string, updated_at: number, is_synced?: number, schema_version?: number, logical_clock?: number);
|
|
11
|
+
constructor(id: string, app_id: string, user_id: string, payload: string, updated_at: number, is_synced?: number, is_deleted?: number, schema_version?: number, logical_clock?: number);
|
|
11
12
|
static fromObject(obj: any): KWRecord;
|
|
12
13
|
}
|
package/dist/models/record.js
CHANGED
|
@@ -2,18 +2,19 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.KWRecord = void 0;
|
|
4
4
|
class KWRecord {
|
|
5
|
-
constructor(id, app_id, user_id, payload, updated_at, is_synced = 0, schema_version = 1, logical_clock = 1) {
|
|
5
|
+
constructor(id, app_id, user_id, payload, updated_at, is_synced = 0, is_deleted = 0, schema_version = 1, logical_clock = 1) {
|
|
6
6
|
this.id = id;
|
|
7
7
|
this.app_id = app_id;
|
|
8
8
|
this.user_id = user_id;
|
|
9
9
|
this.payload = payload;
|
|
10
10
|
this.updated_at = updated_at;
|
|
11
11
|
this.is_synced = is_synced;
|
|
12
|
+
this.is_deleted = is_deleted;
|
|
12
13
|
this.schema_version = schema_version;
|
|
13
14
|
this.logical_clock = logical_clock;
|
|
14
15
|
}
|
|
15
16
|
static fromObject(obj) {
|
|
16
|
-
return new KWRecord(obj.id, obj.app_id, obj.user_id, obj.payload, obj.updated_at, obj.is_synced, obj.schema_version, obj.logical_clock);
|
|
17
|
+
return new KWRecord(obj.id, obj.app_id, obj.user_id, obj.payload, obj.updated_at, obj.is_synced, obj.is_deleted || 0, obj.schema_version, obj.logical_clock);
|
|
17
18
|
}
|
|
18
19
|
}
|
|
19
20
|
exports.KWRecord = KWRecord;
|
package/package.json
CHANGED
package/src/app.ts
CHANGED
|
@@ -47,9 +47,24 @@ export class KaiwenApp {
|
|
|
47
47
|
async getDecryptedRecord(id: string): Promise<any> {
|
|
48
48
|
const record = await this.storage.getRecord(id);
|
|
49
49
|
if (!record) return null;
|
|
50
|
+
if (record.is_deleted === 1) return null;
|
|
51
|
+
if (!record.payload) return null;
|
|
50
52
|
return await KWCryptoEngine.decryptPayload(record.payload, this.vault.getKey());
|
|
51
53
|
}
|
|
52
54
|
|
|
55
|
+
async deleteRecord(id: string): Promise<boolean> {
|
|
56
|
+
const record = await this.storage.getRecord(id);
|
|
57
|
+
if (!record) return false;
|
|
58
|
+
|
|
59
|
+
record.is_deleted = 1;
|
|
60
|
+
record.payload = ""; // Empty payload for tombstones
|
|
61
|
+
record.updated_at = Date.now() / 1000;
|
|
62
|
+
record.logical_clock += 1;
|
|
63
|
+
record.is_synced = 0;
|
|
64
|
+
|
|
65
|
+
return await this.storage.saveRecord(id, record);
|
|
66
|
+
}
|
|
67
|
+
|
|
53
68
|
async pushSync(): Promise<number> {
|
|
54
69
|
return await this.pipeline.pushSync(this.appId);
|
|
55
70
|
}
|
package/src/models/record.ts
CHANGED
|
@@ -6,6 +6,7 @@ export class KWRecord {
|
|
|
6
6
|
public payload: string,
|
|
7
7
|
public updated_at: number,
|
|
8
8
|
public is_synced: number = 0,
|
|
9
|
+
public is_deleted: number = 0,
|
|
9
10
|
public schema_version: number = 1,
|
|
10
11
|
public logical_clock: number = 1
|
|
11
12
|
) {}
|
|
@@ -13,7 +14,7 @@ export class KWRecord {
|
|
|
13
14
|
static fromObject(obj: any): KWRecord {
|
|
14
15
|
return new KWRecord(
|
|
15
16
|
obj.id, obj.app_id, obj.user_id, obj.payload,
|
|
16
|
-
obj.updated_at, obj.is_synced, obj.schema_version, obj.logical_clock
|
|
17
|
+
obj.updated_at, obj.is_synced, obj.is_deleted || 0, obj.schema_version, obj.logical_clock
|
|
17
18
|
);
|
|
18
19
|
}
|
|
19
20
|
}
|