@verdant-web/common 2.2.0 → 2.3.0
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/esm/EventSubscriber.d.ts +1 -1
- package/dist/esm/EventSubscriber.js.map +1 -1
- package/dist/esm/baseline.d.ts +1 -1
- package/dist/esm/batching.js.map +1 -1
- package/dist/esm/error.d.ts +1 -0
- package/dist/esm/error.js +2 -1
- package/dist/esm/error.js.map +1 -1
- package/dist/esm/files.d.ts +3 -2
- package/dist/esm/indexes.d.ts +2 -2
- package/dist/esm/indexes.js.map +1 -1
- package/dist/esm/memo.js.map +1 -1
- package/dist/esm/migration.d.ts +23 -23
- package/dist/esm/migration.js.map +1 -1
- package/dist/esm/oids.d.ts +1 -1
- package/dist/esm/oids.js.map +1 -1
- package/dist/esm/operation.d.ts +8 -8
- package/dist/esm/operation.js.map +1 -1
- package/dist/esm/patch.js.map +1 -1
- package/dist/esm/protocol.d.ts +18 -18
- package/dist/esm/refs.d.ts +1 -1
- package/dist/esm/replica.js +1 -1
- package/dist/esm/replica.js.map +1 -1
- package/dist/esm/schema/children.js.map +1 -1
- package/dist/esm/schema/fieldHelpers.d.ts +5 -5
- package/dist/esm/schema/fields.js.map +1 -1
- package/dist/esm/schema/index.js.map +1 -1
- package/dist/esm/schema/types/collection.d.ts +1 -1
- package/dist/esm/schema/types/compounds.d.ts +4 -4
- package/dist/esm/schema/types/fields.d.ts +11 -11
- package/dist/esm/schema/types/filters.d.ts +7 -7
- package/dist/esm/schema/types/shapes.d.ts +10 -9
- package/dist/esm/schema/types/synthetics.d.ts +12 -12
- package/dist/esm/schema/types.d.ts +3 -3
- package/dist/esm/schema/validation.d.ts +1 -1
- package/dist/esm/schema/validation.js.map +1 -1
- package/dist/esm/timestamp.js.map +1 -1
- package/dist/esm/timestamp.test.js.map +1 -1
- package/dist/esm/undo.js.map +1 -1
- package/dist/esm/utils.js.map +1 -1
- package/package.json +5 -8
- package/src/error.ts +1 -0
- package/src/protocol.ts +1 -1
- package/dist/cjs/EventSubscriber.d.ts +0 -18
- package/dist/cjs/EventSubscriber.js +0 -70
- package/dist/cjs/EventSubscriber.js.map +0 -1
- package/dist/cjs/baseline.d.ts +0 -5
- package/dist/cjs/baseline.js +0 -3
- package/dist/cjs/baseline.js.map +0 -1
- package/dist/cjs/batching.d.ts +0 -43
- package/dist/cjs/batching.js +0 -98
- package/dist/cjs/batching.js.map +0 -1
- package/dist/cjs/error.d.ts +0 -21
- package/dist/cjs/error.js +0 -42
- package/dist/cjs/error.js.map +0 -1
- package/dist/cjs/files.d.ts +0 -19
- package/dist/cjs/files.js +0 -19
- package/dist/cjs/files.js.map +0 -1
- package/dist/cjs/index.d.ts +0 -21
- package/dist/cjs/index.js +0 -44
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/indexes.d.ts +0 -17
- package/dist/cjs/indexes.js +0 -146
- package/dist/cjs/indexes.js.map +0 -1
- package/dist/cjs/indexes.test.d.ts +0 -1
- package/dist/cjs/indexes.test.js +0 -156
- package/dist/cjs/indexes.test.js.map +0 -1
- package/dist/cjs/memo.d.ts +0 -6
- package/dist/cjs/memo.js +0 -25
- package/dist/cjs/memo.js.map +0 -1
- package/dist/cjs/memo.test.d.ts +0 -1
- package/dist/cjs/memo.test.js +0 -29
- package/dist/cjs/memo.test.js.map +0 -1
- package/dist/cjs/migration.d.ts +0 -174
- package/dist/cjs/migration.js +0 -310
- package/dist/cjs/migration.js.map +0 -1
- package/dist/cjs/oids.d.ts +0 -101
- package/dist/cjs/oids.js +0 -466
- package/dist/cjs/oids.js.map +0 -1
- package/dist/cjs/oids.test.d.ts +0 -1
- package/dist/cjs/oids.test.js +0 -409
- package/dist/cjs/oids.test.js.map +0 -1
- package/dist/cjs/operation.d.ts +0 -142
- package/dist/cjs/operation.js +0 -549
- package/dist/cjs/operation.js.map +0 -1
- package/dist/cjs/operation.test.d.ts +0 -1
- package/dist/cjs/operation.test.js +0 -977
- package/dist/cjs/operation.test.js.map +0 -1
- package/dist/cjs/patch.d.ts +0 -28
- package/dist/cjs/patch.js +0 -230
- package/dist/cjs/patch.js.map +0 -1
- package/dist/cjs/presence.d.ts +0 -29
- package/dist/cjs/presence.js +0 -3
- package/dist/cjs/presence.js.map +0 -1
- package/dist/cjs/protocol.d.ts +0 -145
- package/dist/cjs/protocol.js +0 -4
- package/dist/cjs/protocol.js.map +0 -1
- package/dist/cjs/refs.d.ts +0 -7
- package/dist/cjs/refs.js +0 -30
- package/dist/cjs/refs.js.map +0 -1
- package/dist/cjs/replica.d.ts +0 -28
- package/dist/cjs/replica.js +0 -29
- package/dist/cjs/replica.js.map +0 -1
- package/dist/cjs/schema/children.d.ts +0 -2
- package/dist/cjs/schema/children.js +0 -24
- package/dist/cjs/schema/children.js.map +0 -1
- package/dist/cjs/schema/defaults.test.d.ts +0 -1
- package/dist/cjs/schema/defaults.test.js +0 -34
- package/dist/cjs/schema/defaults.test.js.map +0 -1
- package/dist/cjs/schema/fieldHelpers.d.ts +0 -35
- package/dist/cjs/schema/fieldHelpers.js +0 -38
- package/dist/cjs/schema/fieldHelpers.js.map +0 -1
- package/dist/cjs/schema/fields.d.ts +0 -10
- package/dist/cjs/schema/fields.js +0 -172
- package/dist/cjs/schema/fields.js.map +0 -1
- package/dist/cjs/schema/index.d.ts +0 -54
- package/dist/cjs/schema/index.js +0 -63
- package/dist/cjs/schema/index.js.map +0 -1
- package/dist/cjs/schema/indexFilters.d.ts +0 -6
- package/dist/cjs/schema/indexFilters.js +0 -31
- package/dist/cjs/schema/indexFilters.js.map +0 -1
- package/dist/cjs/schema/types/collection.d.ts +0 -23
- package/dist/cjs/schema/types/collection.js +0 -3
- package/dist/cjs/schema/types/collection.js.map +0 -1
- package/dist/cjs/schema/types/compounds.d.ts +0 -11
- package/dist/cjs/schema/types/compounds.js +0 -3
- package/dist/cjs/schema/types/compounds.js.map +0 -1
- package/dist/cjs/schema/types/fields.d.ts +0 -55
- package/dist/cjs/schema/types/fields.js +0 -3
- package/dist/cjs/schema/types/fields.js.map +0 -1
- package/dist/cjs/schema/types/filters.d.ts +0 -29
- package/dist/cjs/schema/types/filters.js +0 -3
- package/dist/cjs/schema/types/filters.js.map +0 -1
- package/dist/cjs/schema/types/shapes.d.ts +0 -24
- package/dist/cjs/schema/types/shapes.js +0 -3
- package/dist/cjs/schema/types/shapes.js.map +0 -1
- package/dist/cjs/schema/types/synthetics.d.ts +0 -37
- package/dist/cjs/schema/types/synthetics.js +0 -3
- package/dist/cjs/schema/types/synthetics.js.map +0 -1
- package/dist/cjs/schema/types.d.ts +0 -18
- package/dist/cjs/schema/types.js +0 -23
- package/dist/cjs/schema/types.js.map +0 -1
- package/dist/cjs/schema/validation.d.ts +0 -14
- package/dist/cjs/schema/validation.js +0 -158
- package/dist/cjs/schema/validation.js.map +0 -1
- package/dist/cjs/timestamp.d.ts +0 -51
- package/dist/cjs/timestamp.js +0 -254
- package/dist/cjs/timestamp.js.map +0 -1
- package/dist/cjs/timestamp.test.d.ts +0 -1
- package/dist/cjs/timestamp.test.js +0 -105
- package/dist/cjs/timestamp.test.js.map +0 -1
- package/dist/cjs/undo.d.ts +0 -3
- package/dist/cjs/undo.js +0 -201
- package/dist/cjs/undo.js.map +0 -1
- package/dist/cjs/utils.d.ts +0 -20
- package/dist/cjs/utils.js +0 -146
- package/dist/cjs/utils.js.map +0 -1
- package/dist/cjs/utils.test.d.ts +0 -1
- package/dist/cjs/utils.test.js +0 -37
- package/dist/cjs/utils.test.js.map +0 -1
- package/dist/tsconfig-cjs.tsbuildinfo +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const vitest_1 = require("vitest");
|
|
4
|
-
const timestamp_js_1 = require("./timestamp.js");
|
|
5
|
-
(0, vitest_1.describe)('the hybrid logical clock', () => {
|
|
6
|
-
(0, vitest_1.it)('always produces incrementing timestamps', async () => {
|
|
7
|
-
const clock = new timestamp_js_1.HybridLogicalClockTimestampProvider();
|
|
8
|
-
let prev = clock.now(1);
|
|
9
|
-
clock.update(prev);
|
|
10
|
-
let now;
|
|
11
|
-
for (let i = 0; i < 1000; i++) {
|
|
12
|
-
now = clock.now(1);
|
|
13
|
-
(0, vitest_1.expect)(now > prev, `${now} not later than ${prev}`).toBe(true);
|
|
14
|
-
clock.update(now);
|
|
15
|
-
prev = now;
|
|
16
|
-
}
|
|
17
|
-
let time = new Date().getTime();
|
|
18
|
-
for (let i = 0; i < 1000; i++) {
|
|
19
|
-
vitest_1.vitest.setSystemTime(time++);
|
|
20
|
-
now = clock.now(1);
|
|
21
|
-
(0, vitest_1.expect)(now > prev, `${now} not later than ${prev}`).toBe(true);
|
|
22
|
-
clock.update(now);
|
|
23
|
-
prev = now;
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
(0, vitest_1.it)('groups blocks of time by version', () => {
|
|
27
|
-
const clock = new timestamp_js_1.HybridLogicalClockTimestampProvider();
|
|
28
|
-
let prev = clock.now(1);
|
|
29
|
-
clock.update(prev);
|
|
30
|
-
let now;
|
|
31
|
-
for (let i = 0; i < 10; i++) {
|
|
32
|
-
now = clock.now(1);
|
|
33
|
-
(0, vitest_1.expect)(now > prev, `${now} not later than ${prev}`).toBe(true);
|
|
34
|
-
clock.update(now);
|
|
35
|
-
prev = now;
|
|
36
|
-
}
|
|
37
|
-
for (let i = 0; i < 10; i++) {
|
|
38
|
-
now = clock.now(2);
|
|
39
|
-
(0, vitest_1.expect)(now > prev, `${now} not later than ${prev}`).toBe(true);
|
|
40
|
-
clock.update(now);
|
|
41
|
-
prev = now;
|
|
42
|
-
}
|
|
43
|
-
const startOfVersion2 = now;
|
|
44
|
-
// jump back to 1
|
|
45
|
-
prev = clock.now(1);
|
|
46
|
-
clock.update(prev);
|
|
47
|
-
for (let i = 0; i < 10; i++) {
|
|
48
|
-
now = clock.now(1);
|
|
49
|
-
(0, vitest_1.expect)(now > prev, `${now} not later than ${prev}`).toBe(true);
|
|
50
|
-
(0, vitest_1.expect)(now < startOfVersion2, `${now} not earlier than ${startOfVersion2}`).toBe(true);
|
|
51
|
-
clock.update(now);
|
|
52
|
-
prev = now;
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
(0, vitest_1.it)('is shorter than the previous format', () => {
|
|
56
|
-
const clock = new timestamp_js_1.HybridLogicalClockTimestampProvider();
|
|
57
|
-
(0, vitest_1.expect)(clock.now(1).length).toBeLessThan(clock.OLD_now(1).length);
|
|
58
|
-
});
|
|
59
|
-
(0, vitest_1.it)('correctly converts old to new format', () => {
|
|
60
|
-
const clock = new timestamp_js_1.HybridLogicalClockTimestampProvider();
|
|
61
|
-
const oldFormat = clock.OLD_now(1);
|
|
62
|
-
const value = clock.timerState();
|
|
63
|
-
const converted = (0, timestamp_js_1.convertOldHlcTimestamp)(oldFormat);
|
|
64
|
-
const newFormat = clock.get(1, value);
|
|
65
|
-
(0, vitest_1.expect)(converted).toEqual(newFormat);
|
|
66
|
-
});
|
|
67
|
-
// this is mostly to verify as I move to the new format.
|
|
68
|
-
// instead of attempting a distributed migration of timestamps, it
|
|
69
|
-
// will be easier that the new format just acts as always in the
|
|
70
|
-
// future of the old one. this will only mess with offline clients,
|
|
71
|
-
// but nobody is using verdant but me yet at time of this change (2022-12-19)
|
|
72
|
-
// which is kind of why I'm doing it now anyway.
|
|
73
|
-
(0, vitest_1.it)('old format always comes before new format', () => {
|
|
74
|
-
const clock = new timestamp_js_1.HybridLogicalClockTimestampProvider();
|
|
75
|
-
const newFormat = clock.now(1);
|
|
76
|
-
const oldFormat = clock.OLD_now(1);
|
|
77
|
-
(0, vitest_1.expect)(oldFormat < newFormat).toBe(true);
|
|
78
|
-
// even far-future old timestamps are before new timestamps
|
|
79
|
-
const oldFormat2 = (0, timestamp_js_1.OLD_serializeHlcTimestamp)({
|
|
80
|
-
counter: 999,
|
|
81
|
-
node: '9876543210',
|
|
82
|
-
time: new Date(3000, 1, 1).getTime(),
|
|
83
|
-
});
|
|
84
|
-
(0, vitest_1.expect)((0, timestamp_js_1.OLD_encodeVersion)(1) + oldFormat2 < newFormat).toBe(true);
|
|
85
|
-
});
|
|
86
|
-
(0, vitest_1.it)('decodes timestamps', () => {
|
|
87
|
-
const time = new Date();
|
|
88
|
-
vitest_1.vitest.setSystemTime(time);
|
|
89
|
-
const clock = new timestamp_js_1.HybridLogicalClockTimestampProvider();
|
|
90
|
-
const now = clock.now(1);
|
|
91
|
-
(0, vitest_1.expect)(clock.getWallClockTime(now)).toEqual(time.getTime());
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
(0, vitest_1.describe)('version encoding', () => {
|
|
95
|
-
(0, vitest_1.it)('orders 1 before 2', () => {
|
|
96
|
-
(0, vitest_1.expect)((0, timestamp_js_1.encodeVersion)(1) < (0, timestamp_js_1.encodeVersion)(2)).toBe(true);
|
|
97
|
-
});
|
|
98
|
-
(0, vitest_1.it)('orders 32 before 33', () => {
|
|
99
|
-
(0, vitest_1.expect)((0, timestamp_js_1.encodeVersion)(32) < (0, timestamp_js_1.encodeVersion)(33)).toBe(true);
|
|
100
|
-
});
|
|
101
|
-
(0, vitest_1.it)('orders 34 before 35', () => {
|
|
102
|
-
(0, vitest_1.expect)((0, timestamp_js_1.encodeVersion)(34) < (0, timestamp_js_1.encodeVersion)(35)).toBe(true);
|
|
103
|
-
});
|
|
104
|
-
});
|
|
105
|
-
//# sourceMappingURL=timestamp.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"timestamp.test.js","sourceRoot":"","sources":["../../src/timestamp.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/undo.d.ts
DELETED
package/dist/cjs/undo.js
DELETED
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getUndoOperations = void 0;
|
|
4
|
-
const operation_js_1 = require("./operation.js");
|
|
5
|
-
const utils_js_1 = require("./utils.js");
|
|
6
|
-
function getUndoOperations(oid, initial, operations, getNow) {
|
|
7
|
-
if (initial === undefined || initial === null) {
|
|
8
|
-
// if the initial state is nothing, then the undo is to delete everything.
|
|
9
|
-
// there's nothing else to worry about!
|
|
10
|
-
return [
|
|
11
|
-
{
|
|
12
|
-
oid,
|
|
13
|
-
timestamp: getNow(),
|
|
14
|
-
data: {
|
|
15
|
-
op: 'delete',
|
|
16
|
-
},
|
|
17
|
-
},
|
|
18
|
-
];
|
|
19
|
-
}
|
|
20
|
-
// otherwise, traverse the operations one by one,
|
|
21
|
-
// applying them, and using the prior state to determine
|
|
22
|
-
// what the undo operation is.
|
|
23
|
-
let state = (0, utils_js_1.cloneDeep)(initial);
|
|
24
|
-
const undoOperations = [];
|
|
25
|
-
for (const operation of operations) {
|
|
26
|
-
const undo = getUndoOperation(oid, state, operation, getNow);
|
|
27
|
-
undoOperations.unshift(...undo);
|
|
28
|
-
(0, operation_js_1.applyPatch)(state, operation.data);
|
|
29
|
-
}
|
|
30
|
-
return undoOperations;
|
|
31
|
-
}
|
|
32
|
-
exports.getUndoOperations = getUndoOperations;
|
|
33
|
-
function getUndoOperation(oid, initial, operation, getNow) {
|
|
34
|
-
const data = operation.data;
|
|
35
|
-
switch (data.op) {
|
|
36
|
-
case 'set':
|
|
37
|
-
case 'remove':
|
|
38
|
-
return [
|
|
39
|
-
{
|
|
40
|
-
oid,
|
|
41
|
-
timestamp: getNow(),
|
|
42
|
-
data: {
|
|
43
|
-
op: 'set',
|
|
44
|
-
name: data.name,
|
|
45
|
-
value: initial[data.name],
|
|
46
|
-
},
|
|
47
|
-
},
|
|
48
|
-
];
|
|
49
|
-
case 'list-insert':
|
|
50
|
-
return [
|
|
51
|
-
{
|
|
52
|
-
oid,
|
|
53
|
-
timestamp: getNow(),
|
|
54
|
-
data: {
|
|
55
|
-
op: 'list-delete',
|
|
56
|
-
index: data.index,
|
|
57
|
-
count: 1,
|
|
58
|
-
},
|
|
59
|
-
},
|
|
60
|
-
];
|
|
61
|
-
case 'list-delete':
|
|
62
|
-
return [
|
|
63
|
-
{
|
|
64
|
-
oid,
|
|
65
|
-
timestamp: getNow(),
|
|
66
|
-
data: {
|
|
67
|
-
op: 'list-insert',
|
|
68
|
-
index: data.index,
|
|
69
|
-
values: initial.slice(data.index, data.count),
|
|
70
|
-
},
|
|
71
|
-
},
|
|
72
|
-
];
|
|
73
|
-
case 'list-move-by-ref':
|
|
74
|
-
return [
|
|
75
|
-
{
|
|
76
|
-
oid,
|
|
77
|
-
timestamp: getNow(),
|
|
78
|
-
data: {
|
|
79
|
-
op: 'list-move-by-ref',
|
|
80
|
-
value: data.value,
|
|
81
|
-
index: initial.indexOf(data.value),
|
|
82
|
-
},
|
|
83
|
-
},
|
|
84
|
-
];
|
|
85
|
-
case 'list-move-by-index':
|
|
86
|
-
return [
|
|
87
|
-
{
|
|
88
|
-
oid,
|
|
89
|
-
timestamp: getNow(),
|
|
90
|
-
data: {
|
|
91
|
-
op: 'list-move-by-index',
|
|
92
|
-
from: data.to,
|
|
93
|
-
to: data.from,
|
|
94
|
-
},
|
|
95
|
-
},
|
|
96
|
-
];
|
|
97
|
-
case 'delete':
|
|
98
|
-
return [
|
|
99
|
-
{
|
|
100
|
-
oid,
|
|
101
|
-
timestamp: getNow(),
|
|
102
|
-
data: {
|
|
103
|
-
op: 'initialize',
|
|
104
|
-
value: initial,
|
|
105
|
-
},
|
|
106
|
-
},
|
|
107
|
-
];
|
|
108
|
-
case 'list-push':
|
|
109
|
-
return [
|
|
110
|
-
{
|
|
111
|
-
oid,
|
|
112
|
-
timestamp: getNow(),
|
|
113
|
-
data: {
|
|
114
|
-
op: 'list-remove',
|
|
115
|
-
value: data.value,
|
|
116
|
-
// best heuristic here - remove the last instance of the item.
|
|
117
|
-
only: 'last',
|
|
118
|
-
},
|
|
119
|
-
},
|
|
120
|
-
];
|
|
121
|
-
case 'list-remove':
|
|
122
|
-
if (data.only === 'last') {
|
|
123
|
-
const index = initial.lastIndexOf(data.value);
|
|
124
|
-
return [
|
|
125
|
-
{
|
|
126
|
-
oid,
|
|
127
|
-
timestamp: getNow(),
|
|
128
|
-
data: {
|
|
129
|
-
op: 'list-insert',
|
|
130
|
-
index,
|
|
131
|
-
values: [data.value],
|
|
132
|
-
},
|
|
133
|
-
},
|
|
134
|
-
];
|
|
135
|
-
}
|
|
136
|
-
else if (data.only === 'first') {
|
|
137
|
-
const index = initial.indexOf(data.value);
|
|
138
|
-
return [
|
|
139
|
-
{
|
|
140
|
-
oid,
|
|
141
|
-
timestamp: getNow(),
|
|
142
|
-
data: {
|
|
143
|
-
op: 'list-insert',
|
|
144
|
-
index,
|
|
145
|
-
values: [data.value],
|
|
146
|
-
},
|
|
147
|
-
},
|
|
148
|
-
];
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
// find all instances of value and restore them at their
|
|
152
|
-
// original index
|
|
153
|
-
const indexesOfValue = [];
|
|
154
|
-
let index = initial.indexOf(data.value);
|
|
155
|
-
while (index !== -1) {
|
|
156
|
-
indexesOfValue.push(index);
|
|
157
|
-
index = initial.indexOf(data.value, index + 1);
|
|
158
|
-
}
|
|
159
|
-
return indexesOfValue.map((index) => ({
|
|
160
|
-
oid,
|
|
161
|
-
timestamp: getNow(),
|
|
162
|
-
data: {
|
|
163
|
-
op: 'list-insert',
|
|
164
|
-
index,
|
|
165
|
-
value: data.value,
|
|
166
|
-
},
|
|
167
|
-
}));
|
|
168
|
-
}
|
|
169
|
-
case 'list-add':
|
|
170
|
-
// this one is kind of ambiguous. in theory the set may have
|
|
171
|
-
// already included the value and so no change happened. but
|
|
172
|
-
// basically we infer the intent is to remove what was meant
|
|
173
|
-
// to be added by this change.
|
|
174
|
-
return [
|
|
175
|
-
{
|
|
176
|
-
oid,
|
|
177
|
-
timestamp: getNow(),
|
|
178
|
-
data: {
|
|
179
|
-
op: 'list-remove',
|
|
180
|
-
value: data.value,
|
|
181
|
-
only: 'last',
|
|
182
|
-
},
|
|
183
|
-
},
|
|
184
|
-
];
|
|
185
|
-
case 'initialize':
|
|
186
|
-
return [
|
|
187
|
-
{
|
|
188
|
-
oid,
|
|
189
|
-
timestamp: getNow(),
|
|
190
|
-
data: {
|
|
191
|
-
op: 'delete',
|
|
192
|
-
},
|
|
193
|
-
},
|
|
194
|
-
];
|
|
195
|
-
case 'touch':
|
|
196
|
-
return [];
|
|
197
|
-
default:
|
|
198
|
-
throw new Error(`Cannot undo operation type: ${data.op}`);
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
//# sourceMappingURL=undo.js.map
|
package/dist/cjs/undo.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"undo.js","sourceRoot":"","sources":["../../src/undo.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/utils.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export declare function take<T extends object, Keys extends keyof T>(obj: T, keys: Keys[]): Pick<T, Keys>;
|
|
2
|
-
export declare function omit<T extends object, Keys extends keyof T>(obj: T, keys: Keys[]): Omit<T, Keys>;
|
|
3
|
-
export declare function getSortedIndex<T>(array: T[], insert: T, compare: (a: T, b: T) => number): number;
|
|
4
|
-
/**
|
|
5
|
-
* Consistently stringifies an object regardless
|
|
6
|
-
* of key insertion order
|
|
7
|
-
*/
|
|
8
|
-
export declare function stableStringify(obj: any): string;
|
|
9
|
-
/**
|
|
10
|
-
* A version of structured cloning which preserves object identity
|
|
11
|
-
* references in the system.
|
|
12
|
-
*/
|
|
13
|
-
export declare function cloneDeep<T>(obj: T, copyOids?: boolean): T;
|
|
14
|
-
export declare function hashObject(obj: any): string;
|
|
15
|
-
export declare function isObject(obj: any): any;
|
|
16
|
-
export declare function roughSizeOfObject(object: any): number;
|
|
17
|
-
export declare function assert(condition: any, message?: string): asserts condition;
|
|
18
|
-
export declare function generateId(length?: number): string;
|
|
19
|
-
export declare function findLastIndex<T>(array: T[], predicate: (item: T) => boolean): number;
|
|
20
|
-
export declare function debounce<T extends (...args: any[]) => any>(fn: T, wait: number): T;
|
package/dist/cjs/utils.js
DELETED
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.debounce = exports.findLastIndex = exports.generateId = exports.assert = exports.roughSizeOfObject = exports.isObject = exports.hashObject = exports.cloneDeep = exports.stableStringify = exports.getSortedIndex = exports.omit = exports.take = void 0;
|
|
7
|
-
const uuid_1 = require("uuid");
|
|
8
|
-
const oids_js_1 = require("./oids.js");
|
|
9
|
-
const object_hash_1 = __importDefault(require("object-hash"));
|
|
10
|
-
function take(obj, keys) {
|
|
11
|
-
const result = {};
|
|
12
|
-
for (const key of keys) {
|
|
13
|
-
result[key] = obj[key];
|
|
14
|
-
}
|
|
15
|
-
return result;
|
|
16
|
-
}
|
|
17
|
-
exports.take = take;
|
|
18
|
-
function omit(obj, keys) {
|
|
19
|
-
const result = {};
|
|
20
|
-
for (const key of Object.keys(obj)) {
|
|
21
|
-
if (!keys.includes(key)) {
|
|
22
|
-
result[key] = obj[key];
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return result;
|
|
26
|
-
}
|
|
27
|
-
exports.omit = omit;
|
|
28
|
-
function getSortedIndex(array, insert, compare) {
|
|
29
|
-
let low = 0;
|
|
30
|
-
let high = array.length;
|
|
31
|
-
while (low < high) {
|
|
32
|
-
const mid = (low + high) >>> 1;
|
|
33
|
-
const cmp = compare(array[mid], insert);
|
|
34
|
-
if (cmp < 0) {
|
|
35
|
-
low = mid + 1;
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
high = mid;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
return low;
|
|
42
|
-
}
|
|
43
|
-
exports.getSortedIndex = getSortedIndex;
|
|
44
|
-
function orderedReplacer(_, v) {
|
|
45
|
-
if (typeof v !== 'object' || v === null || Array.isArray(v)) {
|
|
46
|
-
return v;
|
|
47
|
-
}
|
|
48
|
-
return Object.fromEntries(Object.entries(v).sort(([ka], [kb]) => (ka < kb ? -1 : ka > kb ? 1 : 0)));
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Consistently stringifies an object regardless
|
|
52
|
-
* of key insertion order
|
|
53
|
-
*/
|
|
54
|
-
function stableStringify(obj) {
|
|
55
|
-
return JSON.stringify(obj, orderedReplacer);
|
|
56
|
-
}
|
|
57
|
-
exports.stableStringify = stableStringify;
|
|
58
|
-
/**
|
|
59
|
-
* A version of structured cloning which preserves object identity
|
|
60
|
-
* references in the system.
|
|
61
|
-
*/
|
|
62
|
-
function cloneDeep(obj, copyOids = true) {
|
|
63
|
-
if (isObject(obj) || Array.isArray(obj)) {
|
|
64
|
-
const oid = (0, oids_js_1.maybeGetOid)(obj);
|
|
65
|
-
let clone;
|
|
66
|
-
if (Array.isArray(obj)) {
|
|
67
|
-
clone = obj.map((v) => cloneDeep(v, copyOids));
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
clone = {};
|
|
71
|
-
for (const [key, value] of Object.entries(obj)) {
|
|
72
|
-
clone[key] = cloneDeep(value, copyOids);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
if (copyOids && oid) {
|
|
76
|
-
(0, oids_js_1.assignOid)(clone, oid);
|
|
77
|
-
}
|
|
78
|
-
return clone;
|
|
79
|
-
}
|
|
80
|
-
return obj;
|
|
81
|
-
}
|
|
82
|
-
exports.cloneDeep = cloneDeep;
|
|
83
|
-
// TODO: better hash
|
|
84
|
-
function hashObject(obj) {
|
|
85
|
-
// hash the object into a unique string
|
|
86
|
-
return (0, object_hash_1.default)(obj);
|
|
87
|
-
}
|
|
88
|
-
exports.hashObject = hashObject;
|
|
89
|
-
function isObject(obj) {
|
|
90
|
-
return obj && typeof obj === 'object';
|
|
91
|
-
}
|
|
92
|
-
exports.isObject = isObject;
|
|
93
|
-
function roughSizeOfObject(object) {
|
|
94
|
-
var objectList = [];
|
|
95
|
-
var stack = [object];
|
|
96
|
-
var bytes = 0;
|
|
97
|
-
while (stack.length) {
|
|
98
|
-
var value = stack.pop();
|
|
99
|
-
if (typeof value === 'boolean') {
|
|
100
|
-
bytes += 4;
|
|
101
|
-
}
|
|
102
|
-
else if (typeof value === 'string') {
|
|
103
|
-
bytes += value.length * 2;
|
|
104
|
-
}
|
|
105
|
-
else if (typeof value === 'number') {
|
|
106
|
-
bytes += 8;
|
|
107
|
-
}
|
|
108
|
-
else if (typeof value === 'object' && objectList.indexOf(value) === -1) {
|
|
109
|
-
objectList.push(value);
|
|
110
|
-
for (var i in value) {
|
|
111
|
-
stack.push(value[i]);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
return bytes;
|
|
116
|
-
}
|
|
117
|
-
exports.roughSizeOfObject = roughSizeOfObject;
|
|
118
|
-
function assert(condition, message = 'assertion failed') {
|
|
119
|
-
if (!condition) {
|
|
120
|
-
throw new Error(message);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
exports.assert = assert;
|
|
124
|
-
function generateId(length = 16) {
|
|
125
|
-
return (0, uuid_1.v4)().replace('-', '').slice(0, length);
|
|
126
|
-
}
|
|
127
|
-
exports.generateId = generateId;
|
|
128
|
-
function findLastIndex(array, predicate) {
|
|
129
|
-
for (let i = array.length - 1; i >= 0; i--) {
|
|
130
|
-
if (predicate(array[i])) {
|
|
131
|
-
return i;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
return -1;
|
|
135
|
-
}
|
|
136
|
-
exports.findLastIndex = findLastIndex;
|
|
137
|
-
function debounce(fn, wait) {
|
|
138
|
-
let timeout;
|
|
139
|
-
return function (...args) {
|
|
140
|
-
const context = this;
|
|
141
|
-
clearTimeout(timeout);
|
|
142
|
-
timeout = setTimeout(() => fn.apply(context, args), wait);
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
exports.debounce = debounce;
|
|
146
|
-
//# sourceMappingURL=utils.js.map
|
package/dist/cjs/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/utils.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/cjs/utils.test.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const vitest_1 = require("vitest");
|
|
4
|
-
const oids_js_1 = require("./oids.js");
|
|
5
|
-
const utils_js_1 = require("./utils.js");
|
|
6
|
-
(0, vitest_1.describe)('utils', () => {
|
|
7
|
-
(0, vitest_1.describe)('get sorted index', () => {
|
|
8
|
-
(0, vitest_1.it)('finds the right insertion index', () => {
|
|
9
|
-
function compare(a, b) {
|
|
10
|
-
return a - b;
|
|
11
|
-
}
|
|
12
|
-
(0, vitest_1.expect)((0, utils_js_1.getSortedIndex)([1, 2, 3, 4, 5], 6, compare)).toBe(5);
|
|
13
|
-
(0, vitest_1.expect)((0, utils_js_1.getSortedIndex)([1, 2, 3, 4, 5], 0, compare)).toBe(0);
|
|
14
|
-
(0, vitest_1.expect)((0, utils_js_1.getSortedIndex)([1, 2, 3, 4, 5], -1, compare)).toBe(0);
|
|
15
|
-
(0, vitest_1.expect)((0, utils_js_1.getSortedIndex)([1, 2, 3, 4, 5], 20, compare)).toBe(5);
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
(0, vitest_1.describe)('clone deep', () => {
|
|
19
|
-
(0, vitest_1.it)('preserves OIDs', () => {
|
|
20
|
-
const obj = {
|
|
21
|
-
foo: 'bar',
|
|
22
|
-
qux: [
|
|
23
|
-
{
|
|
24
|
-
corge: true,
|
|
25
|
-
},
|
|
26
|
-
],
|
|
27
|
-
};
|
|
28
|
-
(0, oids_js_1.assignOid)(obj, 'test/a');
|
|
29
|
-
(0, oids_js_1.assignOidsToAllSubObjects)(obj);
|
|
30
|
-
const cloned = (0, utils_js_1.cloneDeep)(obj);
|
|
31
|
-
(0, vitest_1.expect)((0, oids_js_1.getOid)(cloned)).toEqual((0, oids_js_1.getOid)(obj));
|
|
32
|
-
(0, vitest_1.expect)((0, oids_js_1.getOid)(cloned.qux)).toEqual((0, oids_js_1.getOid)(obj.qux));
|
|
33
|
-
(0, vitest_1.expect)((0, oids_js_1.getOid)(cloned.qux[0])).toEqual((0, oids_js_1.getOid)(obj.qux[0]));
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
//# sourceMappingURL=utils.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../src/utils.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,uCAAyE;AACzE,yCAAuD;AAEvD,IAAA,iBAAQ,EAAC,OAAO,EAAE,GAAG,EAAE;IACtB,IAAA,iBAAQ,EAAC,kBAAkB,EAAE,GAAG,EAAE;QACjC,IAAA,WAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;YAC1C,SAAS,OAAO,CAAC,CAAS,EAAE,CAAS;gBACpC,OAAO,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;YACD,IAAA,eAAM,EAAC,IAAA,yBAAc,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC5D,IAAA,eAAM,EAAC,IAAA,yBAAc,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC5D,IAAA,eAAM,EAAC,IAAA,yBAAc,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7D,IAAA,eAAM,EAAC,IAAA,yBAAc,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,YAAY,EAAE,GAAG,EAAE;QAC3B,IAAA,WAAE,EAAC,gBAAgB,EAAE,GAAG,EAAE;YACzB,MAAM,GAAG,GAAG;gBACX,GAAG,EAAE,KAAK;gBACV,GAAG,EAAE;oBACJ;wBACC,KAAK,EAAE,IAAI;qBACX;iBACD;aACD,CAAC;YACF,IAAA,mBAAS,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACzB,IAAA,mCAAyB,EAAC,GAAG,CAAC,CAAC;YAE/B,MAAM,MAAM,GAAG,IAAA,oBAAS,EAAC,GAAG,CAAC,CAAC;YAE9B,IAAA,eAAM,EAAC,IAAA,gBAAM,EAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAA,gBAAM,EAAC,GAAG,CAAC,CAAC,CAAC;YAC5C,IAAA,eAAM,EAAC,IAAA,gBAAM,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAA,gBAAM,EAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YACpD,IAAA,eAAM,EAAC,IAAA,gBAAM,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAA,gBAAM,EAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|