@peers-app/peers-device 0.15.0 → 0.15.2
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/chunk-download-manager.d.ts +2 -2
- package/dist/chunk-download-manager.js +1 -1
- package/dist/chunk-download-manager.js.map +1 -1
- package/dist/chunk-download-manager.test.js +57 -57
- package/dist/chunk-download-manager.test.js.map +1 -1
- package/dist/chunk-download.types.d.ts +1 -1
- package/dist/connection-manager/connection-manager-priorities.d.ts +1 -1
- package/dist/connection-manager/connection-manager-priorities.js +10 -6
- package/dist/connection-manager/connection-manager-priorities.js.map +1 -1
- package/dist/connection-manager/connection-manager-priorities.test.js +192 -194
- package/dist/connection-manager/connection-manager-priorities.test.js.map +1 -1
- package/dist/connection-manager/connection-manager.d.ts +2 -2
- package/dist/connection-manager/connection-manager.js +71 -55
- package/dist/connection-manager/connection-manager.js.map +1 -1
- package/dist/connection-manager/connection-manager.test.js +165 -147
- package/dist/connection-manager/connection-manager.test.js.map +1 -1
- package/dist/connection-manager/connection-state.type.d.ts +1 -1
- package/dist/connection-manager/device-message-handler.types.d.ts +6 -6
- package/dist/connection-manager/device-messages.d.ts +4 -4
- package/dist/connection-manager/device-messages.js +56 -40
- package/dist/connection-manager/device-messages.js.map +1 -1
- package/dist/connection-manager/group-invite-messages.d.ts +2 -2
- package/dist/connection-manager/group-invite-messages.js +36 -47
- package/dist/connection-manager/group-invite-messages.js.map +1 -1
- package/dist/connection-manager/hops-map.js +4 -4
- package/dist/connection-manager/hops-map.js.map +1 -1
- package/dist/connection-manager/hops-map.test.js +3 -3
- package/dist/connection-manager/hops-map.test.js.map +1 -1
- package/dist/connection-manager/network-manager.d.ts +2 -2
- package/dist/connection-manager/network-manager.js +81 -75
- package/dist/connection-manager/network-manager.js.map +1 -1
- package/dist/index.d.ts +12 -12
- package/dist/json-diff.d.ts +2 -2
- package/dist/json-diff.js +30 -27
- package/dist/json-diff.js.map +1 -1
- package/dist/local.data-source.d.ts +1 -1
- package/dist/local.data-source.js +23 -23
- package/dist/local.data-source.js.map +1 -1
- package/dist/local.data-source.test.js +17 -17
- package/dist/local.data-source.test.js.map +1 -1
- package/dist/machine-stats.js +57 -51
- package/dist/machine-stats.js.map +1 -1
- package/dist/machine-stats.test.js +42 -42
- package/dist/machine-stats.test.js.map +1 -1
- package/dist/main.d.ts +2 -2
- package/dist/main.js +10 -8
- package/dist/main.js.map +1 -1
- package/dist/packages.tracked-data-source.d.ts +1 -1
- package/dist/packages.tracked-data-source.js.map +1 -1
- package/dist/persistent-vars.test.js +148 -148
- package/dist/persistent-vars.test.js.map +1 -1
- package/dist/pvars.tracked-data-source.d.ts +1 -1
- package/dist/pvars.tracked-data-source.js +12 -10
- package/dist/pvars.tracked-data-source.js.map +1 -1
- package/dist/sync-group.d.ts +2 -2
- package/dist/sync-group.js +110 -88
- package/dist/sync-group.js.map +1 -1
- package/dist/sync-group.test.js +157 -120
- package/dist/sync-group.test.js.map +1 -1
- package/dist/tracked-data-source.d.ts +1 -1
- package/dist/tracked-data-source.js +61 -62
- package/dist/tracked-data-source.js.map +1 -1
- package/dist/tracked-data-source.test.js +507 -299
- package/dist/tracked-data-source.test.js.map +1 -1
- package/dist/websocket-client.d.ts +1 -1
- package/dist/websocket-client.js +50 -41
- package/dist/websocket-client.js.map +1 -1
- package/package.json +3 -3
package/dist/json-diff.js
CHANGED
|
@@ -44,8 +44,11 @@ const lodash_1 = require("lodash");
|
|
|
44
44
|
const peers_sdk_1 = require("@peers-app/peers-sdk");
|
|
45
45
|
// export type IDiffOp = AddOperation<any> | RemoveOperation | ReplaceOperation<any> | TextPatchOperation;
|
|
46
46
|
function createJsonDiff(oldObj, newObj) {
|
|
47
|
-
if (typeof oldObj !==
|
|
48
|
-
|
|
47
|
+
if (typeof oldObj !== "object" ||
|
|
48
|
+
typeof newObj !== "object" ||
|
|
49
|
+
oldObj === null ||
|
|
50
|
+
newObj === null) {
|
|
51
|
+
throw new Error("Both oldObj and newObj must be non-null objects");
|
|
49
52
|
}
|
|
50
53
|
// Normalize to plain JSON first
|
|
51
54
|
const oldJson = (0, peers_sdk_1.toJSON)(oldObj);
|
|
@@ -65,16 +68,16 @@ function createJsonDiff(oldObj, newObj) {
|
|
|
65
68
|
// "/foo/bar" -> null (no numeric segment)
|
|
66
69
|
function findArrayPath(path) {
|
|
67
70
|
// JSON Pointer segments: "/foo/0/bar" -> ["foo", "0", "bar"]
|
|
68
|
-
const segments = path.split(
|
|
71
|
+
const segments = path.split("/").slice(1); // drop leading ""
|
|
69
72
|
for (let i = 0; i < segments.length; i++) {
|
|
70
73
|
const seg = segments[i];
|
|
71
74
|
if (/^\d+$/.test(seg)) {
|
|
72
75
|
// Numeric segment means "this index of an array"
|
|
73
76
|
if (i === 0) {
|
|
74
77
|
// Array at the root, e.g. "/0/..." => array path is "/"
|
|
75
|
-
return
|
|
78
|
+
return "/";
|
|
76
79
|
}
|
|
77
|
-
return
|
|
80
|
+
return `/${segments.slice(0, i).join("/")}`;
|
|
78
81
|
}
|
|
79
82
|
}
|
|
80
83
|
return null;
|
|
@@ -82,7 +85,7 @@ function createJsonDiff(oldObj, newObj) {
|
|
|
82
85
|
// 1) Collect all array paths that are touched by per-item ops
|
|
83
86
|
const arrayPaths = new Set();
|
|
84
87
|
for (const op of standardPatch) {
|
|
85
|
-
if (op.op ===
|
|
88
|
+
if (op.op === "add" || op.op === "remove" || op.op === "replace") {
|
|
86
89
|
const arrayPath = findArrayPath(op.path);
|
|
87
90
|
if (arrayPath !== null) {
|
|
88
91
|
arrayPaths.add(arrayPath);
|
|
@@ -108,9 +111,9 @@ function createJsonDiff(oldObj, newObj) {
|
|
|
108
111
|
const newArrayValue = (0, fast_json_patch_1.getValueByPointer)(newJson, arrayPath);
|
|
109
112
|
// If the array was deleted entirely, standardPatch should already contain
|
|
110
113
|
// a remove at the array path; we only add a replace when it exists.
|
|
111
|
-
if (typeof newArrayValue !==
|
|
114
|
+
if (typeof newArrayValue !== "undefined") {
|
|
112
115
|
newPatch.push({
|
|
113
|
-
op:
|
|
116
|
+
op: "replace",
|
|
114
117
|
path: arrayPath,
|
|
115
118
|
value: newArrayValue,
|
|
116
119
|
});
|
|
@@ -125,8 +128,8 @@ function applyJsonDiff(obj, patch) {
|
|
|
125
128
|
// Make a copy of the object
|
|
126
129
|
const objCopy = (0, lodash_1.cloneDeep)(obj);
|
|
127
130
|
// Split standard operations from text patch operations
|
|
128
|
-
const standardOps = patch.filter(op => op.op !==
|
|
129
|
-
const textPatchOps = patch.filter(op => op.op ===
|
|
131
|
+
const standardOps = patch.filter((op) => op.op !== "patch-text");
|
|
132
|
+
const textPatchOps = patch.filter((op) => op.op === "patch-text");
|
|
130
133
|
// Apply standard JSON Patch operations
|
|
131
134
|
if (standardOps.length > 0) {
|
|
132
135
|
(0, fast_json_patch_1.applyPatch)(objCopy, standardOps);
|
|
@@ -134,7 +137,7 @@ function applyJsonDiff(obj, patch) {
|
|
|
134
137
|
// Apply text patches
|
|
135
138
|
const dmp = new DiffMatchPatch.default();
|
|
136
139
|
for (const op of textPatchOps) {
|
|
137
|
-
const currentText = objCopy[op.path] ||
|
|
140
|
+
const currentText = objCopy[op.path] || "";
|
|
138
141
|
const patches = dmp.patch_fromText(op.value);
|
|
139
142
|
const [patchedText, _] = dmp.patch_apply(patches, currentText);
|
|
140
143
|
objCopy[op.path] = patchedText;
|
|
@@ -143,14 +146,14 @@ function applyJsonDiff(obj, patch) {
|
|
|
143
146
|
}
|
|
144
147
|
function isChildPathOrSame(parentPath, childPath) {
|
|
145
148
|
// Root supersedes everything
|
|
146
|
-
if (parentPath ===
|
|
149
|
+
if (parentPath === "/")
|
|
147
150
|
return true;
|
|
148
151
|
// Exact same path
|
|
149
152
|
if (parentPath === childPath)
|
|
150
153
|
return true;
|
|
151
154
|
// laterPath is ancestor of earlierPath, respecting segment boundaries
|
|
152
155
|
return (childPath.length > parentPath.length &&
|
|
153
|
-
childPath[parentPath.length] ===
|
|
156
|
+
childPath[parentPath.length] === "/" &&
|
|
154
157
|
childPath.startsWith(parentPath));
|
|
155
158
|
}
|
|
156
159
|
/**
|
|
@@ -174,8 +177,8 @@ function unescapePointerToken(token) {
|
|
|
174
177
|
return token.replace(/~1/g, "/").replace(/~0/g, "~");
|
|
175
178
|
}
|
|
176
179
|
function old_createJsonDiff(oldObj, newObj) {
|
|
177
|
-
if (typeof oldObj !==
|
|
178
|
-
throw new Error(
|
|
180
|
+
if (typeof oldObj !== "object" || typeof newObj !== "object") {
|
|
181
|
+
throw new Error("Both oldObj and newObj must be objects");
|
|
179
182
|
}
|
|
180
183
|
const allKeys = (0, lodash_1.uniq)([...Object.keys(oldObj), ...Object.keys(newObj)]);
|
|
181
184
|
// Remove keys that are undefined in either object so the result is a `replace` operation
|
|
@@ -194,29 +197,29 @@ function old_createJsonDiff(oldObj, newObj) {
|
|
|
194
197
|
// convert ops on array items to a replace op on the whole array
|
|
195
198
|
for (let i = standardPatch.length - 1; i >= 0; i--) {
|
|
196
199
|
const op = standardPatch[i];
|
|
197
|
-
if (op.op ===
|
|
200
|
+
if (op.op === "add" || op.op === "remove" || op.op === "replace") {
|
|
198
201
|
if (op.path.match(/\/.+\/\d+/)) {
|
|
199
202
|
// it's an operation on an array item
|
|
200
|
-
const arrayPath = op.path.replace(/\/\d+$/,
|
|
203
|
+
const arrayPath = op.path.replace(/\/\d+$/, "");
|
|
201
204
|
const newArrayValue = (0, fast_json_patch_1.getValueByPointer)(newObj, arrayPath);
|
|
202
205
|
// remove all ops on this array path
|
|
203
206
|
for (let j = standardPatch.length - 1; j >= 0; j--) {
|
|
204
|
-
if (standardPatch[j].path.startsWith(arrayPath
|
|
207
|
+
if (standardPatch[j].path.startsWith(`${arrayPath}/`)) {
|
|
205
208
|
standardPatch.splice(j, 1);
|
|
206
209
|
}
|
|
207
210
|
}
|
|
208
211
|
// add a single replace op for the whole array
|
|
209
|
-
standardPatch.push({ op:
|
|
212
|
+
standardPatch.push({ op: "replace", path: arrayPath, value: newArrayValue });
|
|
210
213
|
}
|
|
211
214
|
}
|
|
212
215
|
}
|
|
213
216
|
// currently text patches are disabled
|
|
214
217
|
return standardPatch;
|
|
215
218
|
// TODO: this only works for top-level fields - keep an eye out for nested fields being regularly used
|
|
216
|
-
const longTextFieldPaths = allKeys.filter(key => {
|
|
219
|
+
const longTextFieldPaths = allKeys.filter((key) => {
|
|
217
220
|
const oldVal = oldObj[key];
|
|
218
221
|
const newVal = newObj[key];
|
|
219
|
-
if (typeof oldVal !==
|
|
222
|
+
if (typeof oldVal !== "string" || typeof newVal !== "string")
|
|
220
223
|
return false;
|
|
221
224
|
if (!oldVal.length || !newVal.length)
|
|
222
225
|
return false;
|
|
@@ -236,16 +239,16 @@ function old_createJsonDiff(oldObj, newObj) {
|
|
|
236
239
|
return percentDiff < 0.1;
|
|
237
240
|
});
|
|
238
241
|
// Initialize result array with non-text field operations
|
|
239
|
-
const efficientPatch = standardPatch.filter(op => {
|
|
242
|
+
const efficientPatch = standardPatch.filter((op) => {
|
|
240
243
|
// Keep all operations except replacements on text fields
|
|
241
|
-
return !(op.op ===
|
|
244
|
+
return !(op.op === "replace" && longTextFieldPaths.includes(op.path.substring(1)));
|
|
242
245
|
});
|
|
243
246
|
const dmp = new DiffMatchPatch.default();
|
|
244
247
|
// Process text fields separately
|
|
245
248
|
for (const path of longTextFieldPaths) {
|
|
246
249
|
// Get the old and new values for this path (if they exist)
|
|
247
|
-
const oldText = oldObj[path] ||
|
|
248
|
-
const newText = newObj[path] ||
|
|
250
|
+
const oldText = oldObj[path] || "";
|
|
251
|
+
const newText = newObj[path] || "";
|
|
249
252
|
// Skip if both are empty or unchanged
|
|
250
253
|
if (oldText === newText)
|
|
251
254
|
continue;
|
|
@@ -256,9 +259,9 @@ function old_createJsonDiff(oldObj, newObj) {
|
|
|
256
259
|
const textPatchStr = dmp.patch_toText(textPatch);
|
|
257
260
|
// Add custom operation for text patch
|
|
258
261
|
efficientPatch.push({
|
|
259
|
-
op:
|
|
262
|
+
op: "patch-text", // Custom operation
|
|
260
263
|
path: path,
|
|
261
|
-
value: textPatchStr
|
|
264
|
+
value: textPatchStr,
|
|
262
265
|
});
|
|
263
266
|
}
|
|
264
267
|
if (efficientPatch.length === 0) {
|
package/dist/json-diff.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-diff.js","sourceRoot":"","sources":["../src/json-diff.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"json-diff.js","sourceRoot":"","sources":["../src/json-diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.DBLocal = void 0;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
7
|
+
const node_fs_1 = require("node:fs");
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
9
|
const DB_VERSION = "9";
|
|
10
10
|
const DB_NAME = `PeersDB_v${DB_VERSION}.sqlite`;
|
|
11
11
|
class DBLocal {
|
|
@@ -17,23 +17,23 @@ class DBLocal {
|
|
|
17
17
|
this.dbDir = dbDir;
|
|
18
18
|
this.getSecretKey = getSecretKey;
|
|
19
19
|
// Only register process handlers in Node.js environments
|
|
20
|
-
if (typeof process !==
|
|
21
|
-
process.on(
|
|
20
|
+
if (typeof process !== "undefined" && typeof process.on === "function") {
|
|
21
|
+
process.on("exit", () => {
|
|
22
22
|
this.close();
|
|
23
23
|
});
|
|
24
|
-
process.on(
|
|
24
|
+
process.on("SIGINT", async () => {
|
|
25
25
|
this.close();
|
|
26
26
|
});
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
get dbFilePath() {
|
|
30
|
-
if (this.dbDir ===
|
|
31
|
-
return
|
|
30
|
+
if (this.dbDir === ":memory:") {
|
|
31
|
+
return ":memory:";
|
|
32
32
|
}
|
|
33
|
-
const unitTests = process.env.NODE_ENV ===
|
|
34
|
-
const rootDir = this.dbDir || unitTests &&
|
|
35
|
-
(0,
|
|
36
|
-
return
|
|
33
|
+
const unitTests = process.env.NODE_ENV === "test";
|
|
34
|
+
const rootDir = this.dbDir || (unitTests && "./test-data") || ".";
|
|
35
|
+
(0, node_fs_1.mkdirSync)(rootDir, { recursive: true });
|
|
36
|
+
return node_path_1.default.join(rootDir, DB_NAME);
|
|
37
37
|
}
|
|
38
38
|
openDbPromise = null;
|
|
39
39
|
async openDb() {
|
|
@@ -42,29 +42,29 @@ class DBLocal {
|
|
|
42
42
|
}
|
|
43
43
|
this.openDbPromise = new Promise(async (resolve, reject) => {
|
|
44
44
|
try {
|
|
45
|
-
const Database = require(
|
|
45
|
+
const Database = require("better-sqlite3-multiple-ciphers");
|
|
46
46
|
const dbPath = this.dbFilePath;
|
|
47
|
-
const db = new Database(dbPath, { readonly: false
|
|
47
|
+
const db = new Database(dbPath, { readonly: false });
|
|
48
48
|
const secretKey = await this.getSecretKey?.();
|
|
49
49
|
if (secretKey) {
|
|
50
50
|
db.pragma(`key='${secretKey}'`);
|
|
51
51
|
}
|
|
52
|
-
db.pragma(
|
|
52
|
+
db.pragma("journal_mode = WAL");
|
|
53
53
|
this.db = db;
|
|
54
|
-
if (dbPath ===
|
|
54
|
+
if (dbPath === ":memory:") {
|
|
55
55
|
this.dbReadOnly = db;
|
|
56
56
|
}
|
|
57
57
|
else {
|
|
58
|
-
const dbReadOnly = new Database(dbPath, { readonly: true
|
|
58
|
+
const dbReadOnly = new Database(dbPath, { readonly: true });
|
|
59
59
|
if (secretKey) {
|
|
60
60
|
dbReadOnly.pragma(`key='${secretKey}'`);
|
|
61
61
|
}
|
|
62
|
-
dbReadOnly.pragma(
|
|
62
|
+
dbReadOnly.pragma("journal_mode = WAL");
|
|
63
63
|
for (let i = 0; i < 10000; i++) {
|
|
64
64
|
if (db.open && dbReadOnly.open) {
|
|
65
65
|
break;
|
|
66
66
|
}
|
|
67
|
-
await new Promise(resolve => setTimeout(resolve, 10));
|
|
67
|
+
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
68
68
|
}
|
|
69
69
|
this.dbReadOnly = dbReadOnly;
|
|
70
70
|
}
|
|
@@ -104,26 +104,26 @@ class DBLocal {
|
|
|
104
104
|
return { changes: result.changes };
|
|
105
105
|
}
|
|
106
106
|
catch (err) {
|
|
107
|
-
// console.error(`error running db.exec`, sql, params, err);
|
|
107
|
+
// console.error(`error running db.exec`, sql, params, err);
|
|
108
108
|
throw err;
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
// Synchronous methods for use within transactions
|
|
112
112
|
execSync(sql, params = []) {
|
|
113
113
|
if (!this.db) {
|
|
114
|
-
throw new Error(
|
|
114
|
+
throw new Error("Database not open. Call openDb() first or use async exec().");
|
|
115
115
|
}
|
|
116
116
|
this.db.prepare(sql).run(params);
|
|
117
117
|
}
|
|
118
118
|
getSync(sql, params = []) {
|
|
119
119
|
if (!this.dbReadOnly) {
|
|
120
|
-
throw new Error(
|
|
120
|
+
throw new Error("Database not open. Call openDb() first or use async get().");
|
|
121
121
|
}
|
|
122
122
|
return this.dbReadOnly.prepare(sql).get(params);
|
|
123
123
|
}
|
|
124
124
|
allSync(sql, params = []) {
|
|
125
125
|
if (!this.dbReadOnly) {
|
|
126
|
-
throw new Error(
|
|
126
|
+
throw new Error("Database not open. Call openDb() first or use async all().");
|
|
127
127
|
}
|
|
128
128
|
return this.dbReadOnly.prepare(sql).all(params);
|
|
129
129
|
}
|
|
@@ -137,7 +137,7 @@ class DBLocal {
|
|
|
137
137
|
*/
|
|
138
138
|
runInTransaction(fn) {
|
|
139
139
|
if (!this.db) {
|
|
140
|
-
throw new Error(
|
|
140
|
+
throw new Error("Database not open. Call openDb() first.");
|
|
141
141
|
}
|
|
142
142
|
const transaction = this.db.transaction(fn);
|
|
143
143
|
return transaction();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.data-source.js","sourceRoot":"","sources":["../src/local.data-source.ts"],"names":[],"mappings":";;;;;;AACA,
|
|
1
|
+
{"version":3,"file":"local.data-source.js","sourceRoot":"","sources":["../src/local.data-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const peers_sdk_1 = require("@peers-app/peers-sdk");
|
|
4
4
|
const local_data_source_1 = require("./local.data-source");
|
|
5
|
-
describe(
|
|
5
|
+
describe("db-local", () => {
|
|
6
6
|
let localDb;
|
|
7
7
|
beforeAll(async () => {
|
|
8
|
-
localDb = new local_data_source_1.DBLocal(
|
|
8
|
+
localDb = new local_data_source_1.DBLocal(":memory:");
|
|
9
9
|
});
|
|
10
10
|
afterAll(async () => {
|
|
11
11
|
if (localDb) {
|
|
@@ -14,15 +14,15 @@ describe('db-local', () => {
|
|
|
14
14
|
// await sleep(100); // wait for close to complete
|
|
15
15
|
}
|
|
16
16
|
});
|
|
17
|
-
it(
|
|
17
|
+
it("should read and write data", async () => {
|
|
18
18
|
const tableMetaData = {
|
|
19
|
-
name:
|
|
20
|
-
description:
|
|
21
|
-
primaryKeyName:
|
|
19
|
+
name: "notes",
|
|
20
|
+
description: "",
|
|
21
|
+
primaryKeyName: "noteId",
|
|
22
22
|
fields: [
|
|
23
|
-
{ name:
|
|
24
|
-
{ name:
|
|
25
|
-
{ name:
|
|
23
|
+
{ name: "noteId", type: peers_sdk_1.FieldType.id },
|
|
24
|
+
{ name: "title", type: peers_sdk_1.FieldType.string },
|
|
25
|
+
{ name: "completed", type: peers_sdk_1.FieldType.boolean, optional: true },
|
|
26
26
|
],
|
|
27
27
|
};
|
|
28
28
|
const sqlDataSource = new peers_sdk_1.SQLDataSource(localDb, tableMetaData);
|
|
@@ -31,28 +31,28 @@ describe('db-local', () => {
|
|
|
31
31
|
eventRegistry: {
|
|
32
32
|
getEmitter: () => ({
|
|
33
33
|
event: { subscribe: () => { } },
|
|
34
|
-
emit: () => { }
|
|
35
|
-
})
|
|
36
|
-
}
|
|
34
|
+
emit: () => { },
|
|
35
|
+
}),
|
|
36
|
+
},
|
|
37
37
|
};
|
|
38
38
|
const deps = {
|
|
39
39
|
dataSource: sqlDataSource,
|
|
40
|
-
eventRegistry: mockDataContext.eventRegistry
|
|
40
|
+
eventRegistry: mockDataContext.eventRegistry,
|
|
41
41
|
};
|
|
42
42
|
const Notes = new peers_sdk_1.Table(tableMetaData, deps);
|
|
43
43
|
// await Notes.dropTableIfExists();
|
|
44
44
|
const notes = await Notes.list();
|
|
45
45
|
expect(notes).toEqual([]);
|
|
46
46
|
// Create
|
|
47
|
-
const note = await Notes.save({ title:
|
|
47
|
+
const note = await Notes.save({ title: "test note" });
|
|
48
48
|
expect(note.noteId).toBeDefined();
|
|
49
|
-
expect(note.title).toBe(
|
|
49
|
+
expect(note.title).toBe("test note");
|
|
50
50
|
expect(note.completed).toBeUndefined();
|
|
51
51
|
// Update
|
|
52
|
-
note.title =
|
|
52
|
+
note.title = "updated note";
|
|
53
53
|
note.completed = true;
|
|
54
54
|
const updatedNote = await Notes.save(note);
|
|
55
|
-
expect(updatedNote.title).toBe(
|
|
55
|
+
expect(updatedNote.title).toBe("updated note");
|
|
56
56
|
expect(updatedNote.completed).toBe(true);
|
|
57
57
|
// Read
|
|
58
58
|
const notes2 = await Notes.list();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.data-source.test.js","sourceRoot":"","sources":["../src/local.data-source.test.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"local.data-source.test.js","sourceRoot":"","sources":["../src/local.data-source.test.ts"],"names":[],"mappings":"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"}
|