@verdant-web/common 1.11.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/LICENSE +21 -0
- package/dist/cjs/EventSubscriber.d.ts +17 -0
- package/dist/cjs/EventSubscriber.js +67 -0
- package/dist/cjs/EventSubscriber.js.map +1 -0
- package/dist/cjs/baseline.d.ts +5 -0
- package/dist/cjs/baseline.js +3 -0
- package/dist/cjs/baseline.js.map +1 -0
- package/dist/cjs/batching.d.ts +41 -0
- package/dist/cjs/batching.js +89 -0
- package/dist/cjs/batching.js.map +1 -0
- package/dist/cjs/files.d.ts +19 -0
- package/dist/cjs/files.js +19 -0
- package/dist/cjs/files.js.map +1 -0
- package/dist/cjs/files.test.d.ts +1 -0
- package/dist/cjs/files.test.js +81 -0
- package/dist/cjs/files.test.js.map +1 -0
- package/dist/cjs/index.d.ts +18 -0
- package/dist/cjs/index.js +36 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/indexes.d.ts +14 -0
- package/dist/cjs/indexes.js +116 -0
- package/dist/cjs/indexes.js.map +1 -0
- package/dist/cjs/indexes.test.d.ts +1 -0
- package/dist/cjs/indexes.test.js +128 -0
- package/dist/cjs/indexes.test.js.map +1 -0
- package/dist/cjs/migration.d.ts +98 -0
- package/dist/cjs/migration.js +128 -0
- package/dist/cjs/migration.js.map +1 -0
- package/dist/cjs/oids.d.ts +87 -0
- package/dist/cjs/oids.js +375 -0
- package/dist/cjs/oids.js.map +1 -0
- package/dist/cjs/oids.test.d.ts +1 -0
- package/dist/cjs/oids.test.js +282 -0
- package/dist/cjs/oids.test.js.map +1 -0
- package/dist/cjs/operation.d.ts +139 -0
- package/dist/cjs/operation.js +533 -0
- package/dist/cjs/operation.js.map +1 -0
- package/dist/cjs/operation.test.d.ts +1 -0
- package/dist/cjs/operation.test.js +827 -0
- package/dist/cjs/operation.test.js.map +1 -0
- package/dist/cjs/patch.d.ts +26 -0
- package/dist/cjs/patch.js +227 -0
- package/dist/cjs/patch.js.map +1 -0
- package/dist/cjs/presence.d.ts +27 -0
- package/dist/cjs/presence.js +3 -0
- package/dist/cjs/presence.js.map +1 -0
- package/dist/cjs/protocol.d.ts +145 -0
- package/dist/cjs/protocol.js +4 -0
- package/dist/cjs/protocol.js.map +1 -0
- package/dist/cjs/refs.d.ts +5 -0
- package/dist/cjs/refs.js +22 -0
- package/dist/cjs/refs.js.map +1 -0
- package/dist/cjs/replica.d.ts +28 -0
- package/dist/cjs/replica.js +29 -0
- package/dist/cjs/replica.js.map +1 -0
- package/dist/cjs/schema/defaults.d.ts +4 -0
- package/dist/cjs/schema/defaults.js +72 -0
- package/dist/cjs/schema/defaults.js.map +1 -0
- package/dist/cjs/schema/defaults.test.d.ts +1 -0
- package/dist/cjs/schema/defaults.test.js +21 -0
- package/dist/cjs/schema/defaults.test.js.map +1 -0
- package/dist/cjs/schema/index.d.ts +8 -0
- package/dist/cjs/schema/index.js +29 -0
- package/dist/cjs/schema/index.js.map +1 -0
- package/dist/cjs/schema/indexFilters.d.ts +6 -0
- package/dist/cjs/schema/indexFilters.js +31 -0
- package/dist/cjs/schema/indexFilters.js.map +1 -0
- package/dist/cjs/schema/types/collection.d.ts +51 -0
- package/dist/cjs/schema/types/collection.js +3 -0
- package/dist/cjs/schema/types/collection.js.map +1 -0
- package/dist/cjs/schema/types/compounds.d.ts +12 -0
- package/dist/cjs/schema/types/compounds.js +3 -0
- package/dist/cjs/schema/types/compounds.js.map +1 -0
- package/dist/cjs/schema/types/fields.d.ts +59 -0
- package/dist/cjs/schema/types/fields.js +3 -0
- package/dist/cjs/schema/types/fields.js.map +1 -0
- package/dist/cjs/schema/types/filters.d.ts +29 -0
- package/dist/cjs/schema/types/filters.js +3 -0
- package/dist/cjs/schema/types/filters.js.map +1 -0
- package/dist/cjs/schema/types/shapes.d.ts +21 -0
- package/dist/cjs/schema/types/shapes.js +3 -0
- package/dist/cjs/schema/types/shapes.js.map +1 -0
- package/dist/cjs/schema/types/synthetics.d.ts +28 -0
- package/dist/cjs/schema/types/synthetics.js +3 -0
- package/dist/cjs/schema/types/synthetics.js.map +1 -0
- package/dist/cjs/schema/types.d.ts +18 -0
- package/dist/cjs/schema/types.js +23 -0
- package/dist/cjs/schema/types.js.map +1 -0
- package/dist/cjs/timestamp.d.ts +48 -0
- package/dist/cjs/timestamp.js +244 -0
- package/dist/cjs/timestamp.js.map +1 -0
- package/dist/cjs/timestamp.test.d.ts +1 -0
- package/dist/cjs/timestamp.test.js +94 -0
- package/dist/cjs/timestamp.test.js.map +1 -0
- package/dist/cjs/undo.d.ts +3 -0
- package/dist/cjs/undo.js +199 -0
- package/dist/cjs/undo.js.map +1 -0
- package/dist/cjs/utils.d.ts +15 -0
- package/dist/cjs/utils.js +128 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/cjs/utils.test.d.ts +1 -0
- package/dist/cjs/utils.test.js +37 -0
- package/dist/cjs/utils.test.js.map +1 -0
- package/dist/esm/EventSubscriber.d.ts +17 -0
- package/dist/esm/EventSubscriber.js +63 -0
- package/dist/esm/EventSubscriber.js.map +1 -0
- package/dist/esm/baseline.d.ts +5 -0
- package/dist/esm/baseline.js +2 -0
- package/dist/esm/baseline.js.map +1 -0
- package/dist/esm/batching.d.ts +41 -0
- package/dist/esm/batching.js +84 -0
- package/dist/esm/batching.js.map +1 -0
- package/dist/esm/files.d.ts +19 -0
- package/dist/esm/files.js +13 -0
- package/dist/esm/files.js.map +1 -0
- package/dist/esm/files.test.d.ts +1 -0
- package/dist/esm/files.test.js +79 -0
- package/dist/esm/files.test.js.map +1 -0
- package/dist/esm/index.d.ts +18 -0
- package/dist/esm/index.js +16 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/indexes.d.ts +14 -0
- package/dist/esm/indexes.js +106 -0
- package/dist/esm/indexes.js.map +1 -0
- package/dist/esm/indexes.test.d.ts +1 -0
- package/dist/esm/indexes.test.js +126 -0
- package/dist/esm/indexes.test.js.map +1 -0
- package/dist/esm/migration.d.ts +98 -0
- package/dist/esm/migration.js +122 -0
- package/dist/esm/migration.js.map +1 -0
- package/dist/esm/oids.d.ts +87 -0
- package/dist/esm/oids.js +348 -0
- package/dist/esm/oids.js.map +1 -0
- package/dist/esm/oids.test.d.ts +1 -0
- package/dist/esm/oids.test.js +280 -0
- package/dist/esm/oids.test.js.map +1 -0
- package/dist/esm/operation.d.ts +139 -0
- package/dist/esm/operation.js +518 -0
- package/dist/esm/operation.js.map +1 -0
- package/dist/esm/operation.test.d.ts +1 -0
- package/dist/esm/operation.test.js +825 -0
- package/dist/esm/operation.test.js.map +1 -0
- package/dist/esm/patch.d.ts +26 -0
- package/dist/esm/patch.js +223 -0
- package/dist/esm/patch.js.map +1 -0
- package/dist/esm/presence.d.ts +27 -0
- package/dist/esm/presence.js +2 -0
- package/dist/esm/presence.js.map +1 -0
- package/dist/esm/protocol.d.ts +145 -0
- package/dist/esm/protocol.js +3 -0
- package/dist/esm/protocol.js.map +1 -0
- package/dist/esm/refs.d.ts +5 -0
- package/dist/esm/refs.js +17 -0
- package/dist/esm/refs.js.map +1 -0
- package/dist/esm/replica.d.ts +28 -0
- package/dist/esm/replica.js +26 -0
- package/dist/esm/replica.js.map +1 -0
- package/dist/esm/schema/defaults.d.ts +4 -0
- package/dist/esm/schema/defaults.js +66 -0
- package/dist/esm/schema/defaults.js.map +1 -0
- package/dist/esm/schema/defaults.test.d.ts +1 -0
- package/dist/esm/schema/defaults.test.js +19 -0
- package/dist/esm/schema/defaults.test.js.map +1 -0
- package/dist/esm/schema/index.d.ts +8 -0
- package/dist/esm/schema/index.js +10 -0
- package/dist/esm/schema/index.js.map +1 -0
- package/dist/esm/schema/indexFilters.d.ts +6 -0
- package/dist/esm/schema/indexFilters.js +23 -0
- package/dist/esm/schema/indexFilters.js.map +1 -0
- package/dist/esm/schema/types/collection.d.ts +51 -0
- package/dist/esm/schema/types/collection.js +2 -0
- package/dist/esm/schema/types/collection.js.map +1 -0
- package/dist/esm/schema/types/compounds.d.ts +12 -0
- package/dist/esm/schema/types/compounds.js +2 -0
- package/dist/esm/schema/types/compounds.js.map +1 -0
- package/dist/esm/schema/types/fields.d.ts +59 -0
- package/dist/esm/schema/types/fields.js +2 -0
- package/dist/esm/schema/types/fields.js.map +1 -0
- package/dist/esm/schema/types/filters.d.ts +29 -0
- package/dist/esm/schema/types/filters.js +2 -0
- package/dist/esm/schema/types/filters.js.map +1 -0
- package/dist/esm/schema/types/shapes.d.ts +21 -0
- package/dist/esm/schema/types/shapes.js +2 -0
- package/dist/esm/schema/types/shapes.js.map +1 -0
- package/dist/esm/schema/types/synthetics.d.ts +28 -0
- package/dist/esm/schema/types/synthetics.js +2 -0
- package/dist/esm/schema/types/synthetics.js.map +1 -0
- package/dist/esm/schema/types.d.ts +18 -0
- package/dist/esm/schema/types.js +7 -0
- package/dist/esm/schema/types.js.map +1 -0
- package/dist/esm/timestamp.d.ts +48 -0
- package/dist/esm/timestamp.js +229 -0
- package/dist/esm/timestamp.js.map +1 -0
- package/dist/esm/timestamp.test.d.ts +1 -0
- package/dist/esm/timestamp.test.js +92 -0
- package/dist/esm/timestamp.test.js.map +1 -0
- package/dist/esm/undo.d.ts +3 -0
- package/dist/esm/undo.js +195 -0
- package/dist/esm/undo.js.map +1 -0
- package/dist/esm/utils.d.ts +15 -0
- package/dist/esm/utils.js +114 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/esm/utils.test.d.ts +1 -0
- package/dist/esm/utils.test.js +35 -0
- package/dist/esm/utils.test.js.map +1 -0
- package/dist/tsconfig-cjs.tsbuildinfo +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +38 -0
- package/src/EventSubscriber.ts +81 -0
- package/src/baseline.ts +9 -0
- package/src/batching.ts +135 -0
- package/src/files.ts +34 -0
- package/src/index.ts +26 -0
- package/src/indexes.test.ts +158 -0
- package/src/indexes.ts +151 -0
- package/src/migration.ts +391 -0
- package/src/oids.test.ts +395 -0
- package/src/oids.ts +442 -0
- package/src/operation.test.ts +966 -0
- package/src/operation.ts +755 -0
- package/src/patch.ts +277 -0
- package/src/presence.ts +29 -0
- package/src/protocol.ts +184 -0
- package/src/refs.ts +16 -0
- package/src/replica.ts +29 -0
- package/src/schema/defaults.test.ts +19 -0
- package/src/schema/defaults.ts +72 -0
- package/src/schema/index.ts +28 -0
- package/src/schema/indexFilters.ts +49 -0
- package/src/schema/types/collection.ts +133 -0
- package/src/schema/types/compounds.ts +33 -0
- package/src/schema/types/fields.ts +85 -0
- package/src/schema/types/filters.ts +39 -0
- package/src/schema/types/shapes.ts +83 -0
- package/src/schema/types/synthetics.ts +45 -0
- package/src/schema/types.ts +28 -0
- package/src/timestamp.test.ts +113 -0
- package/src/timestamp.ts +284 -0
- package/src/undo.ts +205 -0
- package/src/utils.test.ts +38 -0
- package/src/utils.ts +137 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.findLastIndex = exports.generateId = exports.assert = exports.roughSizeOfObject = exports.isObject = exports.hashObject = exports.cloneDeep = exports.stableStringify = exports.getSortedIndex = exports.omit = exports.take = void 0;
|
|
4
|
+
const uuid_1 = require("uuid");
|
|
5
|
+
const oids_js_1 = require("./oids.js");
|
|
6
|
+
function take(obj, keys) {
|
|
7
|
+
const result = {};
|
|
8
|
+
for (const key of keys) {
|
|
9
|
+
result[key] = obj[key];
|
|
10
|
+
}
|
|
11
|
+
return result;
|
|
12
|
+
}
|
|
13
|
+
exports.take = take;
|
|
14
|
+
function omit(obj, keys) {
|
|
15
|
+
const result = {};
|
|
16
|
+
for (const key of Object.keys(obj)) {
|
|
17
|
+
if (!keys.includes(key)) {
|
|
18
|
+
result[key] = obj[key];
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return result;
|
|
22
|
+
}
|
|
23
|
+
exports.omit = omit;
|
|
24
|
+
function getSortedIndex(array, insert, compare) {
|
|
25
|
+
let low = 0;
|
|
26
|
+
let high = array.length;
|
|
27
|
+
while (low < high) {
|
|
28
|
+
const mid = (low + high) >>> 1;
|
|
29
|
+
const cmp = compare(array[mid], insert);
|
|
30
|
+
if (cmp < 0) {
|
|
31
|
+
low = mid + 1;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
high = mid;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return low;
|
|
38
|
+
}
|
|
39
|
+
exports.getSortedIndex = getSortedIndex;
|
|
40
|
+
function orderedReplacer(_, v) {
|
|
41
|
+
if (typeof v !== 'object' || v === null || Array.isArray(v)) {
|
|
42
|
+
return v;
|
|
43
|
+
}
|
|
44
|
+
return Object.fromEntries(Object.entries(v).sort(([ka], [kb]) => (ka < kb ? -1 : ka > kb ? 1 : 0)));
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Consistently stringifies an object regardless
|
|
48
|
+
* of key insertion order
|
|
49
|
+
*/
|
|
50
|
+
function stableStringify(obj) {
|
|
51
|
+
return JSON.stringify(obj, orderedReplacer);
|
|
52
|
+
}
|
|
53
|
+
exports.stableStringify = stableStringify;
|
|
54
|
+
function cloneDeep(obj) {
|
|
55
|
+
if (isObject(obj)) {
|
|
56
|
+
const oid = (0, oids_js_1.maybeGetOid)(obj);
|
|
57
|
+
let clone;
|
|
58
|
+
if (Array.isArray(obj)) {
|
|
59
|
+
clone = obj.map(cloneDeep);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
clone = {};
|
|
63
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
64
|
+
clone[key] = cloneDeep(value);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (oid) {
|
|
68
|
+
(0, oids_js_1.assignOid)(clone, oid);
|
|
69
|
+
}
|
|
70
|
+
return clone;
|
|
71
|
+
}
|
|
72
|
+
return obj;
|
|
73
|
+
}
|
|
74
|
+
exports.cloneDeep = cloneDeep;
|
|
75
|
+
// TODO: better hash
|
|
76
|
+
function hashObject(obj) {
|
|
77
|
+
return stableStringify(obj);
|
|
78
|
+
}
|
|
79
|
+
exports.hashObject = hashObject;
|
|
80
|
+
function isObject(obj) {
|
|
81
|
+
return obj && typeof obj === 'object';
|
|
82
|
+
}
|
|
83
|
+
exports.isObject = isObject;
|
|
84
|
+
function roughSizeOfObject(object) {
|
|
85
|
+
var objectList = [];
|
|
86
|
+
var stack = [object];
|
|
87
|
+
var bytes = 0;
|
|
88
|
+
while (stack.length) {
|
|
89
|
+
var value = stack.pop();
|
|
90
|
+
if (typeof value === 'boolean') {
|
|
91
|
+
bytes += 4;
|
|
92
|
+
}
|
|
93
|
+
else if (typeof value === 'string') {
|
|
94
|
+
bytes += value.length * 2;
|
|
95
|
+
}
|
|
96
|
+
else if (typeof value === 'number') {
|
|
97
|
+
bytes += 8;
|
|
98
|
+
}
|
|
99
|
+
else if (typeof value === 'object' && objectList.indexOf(value) === -1) {
|
|
100
|
+
objectList.push(value);
|
|
101
|
+
for (var i in value) {
|
|
102
|
+
stack.push(value[i]);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return bytes;
|
|
107
|
+
}
|
|
108
|
+
exports.roughSizeOfObject = roughSizeOfObject;
|
|
109
|
+
function assert(condition, message = 'assertion failed') {
|
|
110
|
+
if (!condition) {
|
|
111
|
+
throw new Error(message);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
exports.assert = assert;
|
|
115
|
+
function generateId(length = 16) {
|
|
116
|
+
return (0, uuid_1.v4)().replace('-', '').slice(0, length);
|
|
117
|
+
}
|
|
118
|
+
exports.generateId = generateId;
|
|
119
|
+
function findLastIndex(array, predicate) {
|
|
120
|
+
for (let i = array.length - 1; i >= 0; i--) {
|
|
121
|
+
if (predicate(array[i])) {
|
|
122
|
+
return i;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return -1;
|
|
126
|
+
}
|
|
127
|
+
exports.findLastIndex = findLastIndex;
|
|
128
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare class EventSubscriber<Events extends {
|
|
2
|
+
[key: string]: (...args: any[]) => void;
|
|
3
|
+
}> {
|
|
4
|
+
private _onAllUnsubscribed?;
|
|
5
|
+
protected subscribers: Record<string, Record<string, (...args: any[]) => void>>;
|
|
6
|
+
protected counts: Record<string, number>;
|
|
7
|
+
private _disabled;
|
|
8
|
+
constructor(_onAllUnsubscribed?: ((event: keyof Events) => void) | undefined);
|
|
9
|
+
get disabled(): boolean;
|
|
10
|
+
subscriberCount: (event: Extract<keyof Events, string>) => number;
|
|
11
|
+
totalSubscriberCount: () => number;
|
|
12
|
+
subscribe: <K extends Extract<keyof Events, string>>(event: K, callback: Events[K]) => () => void;
|
|
13
|
+
emit: <K extends Extract<keyof Events, string>>(event: K, ...args: Parameters<Events[K]>) => void;
|
|
14
|
+
dispose: () => void;
|
|
15
|
+
disable: () => void;
|
|
16
|
+
}
|
|
17
|
+
export declare type EventsOf<T extends EventSubscriber<any>> = T extends EventSubscriber<infer E> ? keyof E : never;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { generateId } from './utils.js';
|
|
2
|
+
export class EventSubscriber {
|
|
3
|
+
constructor(_onAllUnsubscribed) {
|
|
4
|
+
this._onAllUnsubscribed = _onAllUnsubscribed;
|
|
5
|
+
this.subscribers = {};
|
|
6
|
+
this.counts = {};
|
|
7
|
+
this._disabled = false;
|
|
8
|
+
this.subscriberCount = (event) => {
|
|
9
|
+
var _a;
|
|
10
|
+
return (_a = this.counts[event]) !== null && _a !== void 0 ? _a : 0;
|
|
11
|
+
};
|
|
12
|
+
this.totalSubscriberCount = () => {
|
|
13
|
+
return Object.values(this.counts).reduce((acc, count) => acc + count, 0);
|
|
14
|
+
};
|
|
15
|
+
this.subscribe = (event, callback) => {
|
|
16
|
+
const key = generateId();
|
|
17
|
+
let subscribers = this.subscribers[event];
|
|
18
|
+
if (!subscribers) {
|
|
19
|
+
subscribers = this.subscribers[event] = {};
|
|
20
|
+
}
|
|
21
|
+
subscribers[key] = callback;
|
|
22
|
+
this.counts[event] = (this.counts[event] || 0) + 1;
|
|
23
|
+
return () => {
|
|
24
|
+
// already removed
|
|
25
|
+
if (!this.subscribers[event])
|
|
26
|
+
return;
|
|
27
|
+
delete this.subscribers[event][key];
|
|
28
|
+
this.counts[event]--;
|
|
29
|
+
if (this.counts[event] === 0) {
|
|
30
|
+
delete this.subscribers[event];
|
|
31
|
+
delete this.counts[event];
|
|
32
|
+
if (this._onAllUnsubscribed) {
|
|
33
|
+
this._onAllUnsubscribed(event);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
this.emit = (event, ...args) => {
|
|
39
|
+
if (this._disabled)
|
|
40
|
+
return;
|
|
41
|
+
if (this.subscribers[event]) {
|
|
42
|
+
Object.values(this.subscribers[event]).forEach((c) => c(...args));
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
this.dispose = () => {
|
|
46
|
+
const events = Object.keys(this.subscribers);
|
|
47
|
+
this.subscribers = {};
|
|
48
|
+
this.counts = {};
|
|
49
|
+
events.forEach((event) => {
|
|
50
|
+
if (this._onAllUnsubscribed) {
|
|
51
|
+
this._onAllUnsubscribed(event);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
this.disable = () => {
|
|
56
|
+
this._disabled = true;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
get disabled() {
|
|
60
|
+
return this._disabled;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=EventSubscriber.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventSubscriber.js","sourceRoot":"","sources":["../../src/EventSubscriber.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../src/baseline.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
export declare class Batcher<T, UserData = any> {
|
|
3
|
+
private flusher;
|
|
4
|
+
private batches;
|
|
5
|
+
constructor(flusher: (items: T[], batchKey: string, userData: UserData) => any);
|
|
6
|
+
add({ key, userData, items, max, timeout, }: {
|
|
7
|
+
key: string;
|
|
8
|
+
userData?: UserData;
|
|
9
|
+
items: T[];
|
|
10
|
+
max?: number | null;
|
|
11
|
+
timeout?: number | null;
|
|
12
|
+
}): Batch<T, UserData>;
|
|
13
|
+
flush: (key: string) => any;
|
|
14
|
+
discard: (key: string) => void;
|
|
15
|
+
}
|
|
16
|
+
export declare class Batch<T, UserData = any> {
|
|
17
|
+
items: Array<T>;
|
|
18
|
+
max: number | null;
|
|
19
|
+
startedAt: number;
|
|
20
|
+
timeout: number | null;
|
|
21
|
+
flushTimeout?: NodeJS.Timeout;
|
|
22
|
+
userData?: any;
|
|
23
|
+
flusher: (items: T[], batchKey: string, userData: UserData) => any;
|
|
24
|
+
key: string;
|
|
25
|
+
constructor({ max, startedAt, timeout, userData, flusher, key, }: {
|
|
26
|
+
key: string;
|
|
27
|
+
max: number | null;
|
|
28
|
+
startedAt: number;
|
|
29
|
+
timeout: number | null;
|
|
30
|
+
userData?: UserData;
|
|
31
|
+
flusher: (items: T[], batchKey: string, userData: UserData) => any;
|
|
32
|
+
});
|
|
33
|
+
update: ({ items, max, timeout, userData, }: {
|
|
34
|
+
items: Array<T>;
|
|
35
|
+
max?: number | null | undefined;
|
|
36
|
+
timeout?: number | null | undefined;
|
|
37
|
+
userData?: UserData | undefined;
|
|
38
|
+
}) => void;
|
|
39
|
+
flush: () => any;
|
|
40
|
+
discard: () => void;
|
|
41
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
export class Batcher {
|
|
2
|
+
constructor(flusher) {
|
|
3
|
+
this.flusher = flusher;
|
|
4
|
+
this.batches = new Map();
|
|
5
|
+
this.flush = (key) => {
|
|
6
|
+
const batch = this.batches.get(key);
|
|
7
|
+
if (!batch)
|
|
8
|
+
return;
|
|
9
|
+
return batch.flush();
|
|
10
|
+
};
|
|
11
|
+
this.discard = (key) => {
|
|
12
|
+
const batch = this.batches.get(key);
|
|
13
|
+
if (!batch)
|
|
14
|
+
return;
|
|
15
|
+
batch.discard();
|
|
16
|
+
this.batches.delete(key);
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
add({ key, userData, items, max, timeout, }) {
|
|
20
|
+
let batch = this.batches.get(key);
|
|
21
|
+
if (!batch) {
|
|
22
|
+
batch = new Batch({
|
|
23
|
+
max: max || null,
|
|
24
|
+
startedAt: Date.now(),
|
|
25
|
+
userData,
|
|
26
|
+
timeout: timeout || null,
|
|
27
|
+
flusher: this.flusher,
|
|
28
|
+
key,
|
|
29
|
+
});
|
|
30
|
+
this.batches.set(key, batch);
|
|
31
|
+
}
|
|
32
|
+
batch.update({
|
|
33
|
+
items,
|
|
34
|
+
max,
|
|
35
|
+
timeout,
|
|
36
|
+
userData,
|
|
37
|
+
});
|
|
38
|
+
return batch;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export class Batch {
|
|
42
|
+
constructor({ max, startedAt, timeout, userData, flusher, key, }) {
|
|
43
|
+
this.items = [];
|
|
44
|
+
this.update = ({ items, max, timeout, userData, }) => {
|
|
45
|
+
this.items.push(...items);
|
|
46
|
+
if (max !== undefined)
|
|
47
|
+
this.max = max;
|
|
48
|
+
if (timeout !== undefined)
|
|
49
|
+
this.timeout = timeout;
|
|
50
|
+
if (userData)
|
|
51
|
+
this.userData = userData;
|
|
52
|
+
// if the batch has items and a timeout but has not
|
|
53
|
+
// scheduled yet, schedule it
|
|
54
|
+
const needsSchedule = this.items.length !== 0 && this.timeout !== null && !this.flushTimeout;
|
|
55
|
+
// if the batch has already reached its max, skip scheduling
|
|
56
|
+
// and flush immediately
|
|
57
|
+
if (this.max !== null && this.items.length >= this.max) {
|
|
58
|
+
this.flush();
|
|
59
|
+
}
|
|
60
|
+
else if (needsSchedule && this.timeout !== null) {
|
|
61
|
+
this.flushTimeout = setTimeout(this.flush, this.timeout);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
this.flush = () => {
|
|
65
|
+
this.flushTimeout && clearTimeout(this.flushTimeout);
|
|
66
|
+
this.flushTimeout = undefined;
|
|
67
|
+
const items = this.items;
|
|
68
|
+
this.items = [];
|
|
69
|
+
return this.flusher(items, this.key, this.userData);
|
|
70
|
+
};
|
|
71
|
+
this.discard = () => {
|
|
72
|
+
this.flushTimeout && clearTimeout(this.flushTimeout);
|
|
73
|
+
this.flushTimeout = undefined;
|
|
74
|
+
this.items = [];
|
|
75
|
+
};
|
|
76
|
+
this.max = max;
|
|
77
|
+
this.startedAt = startedAt;
|
|
78
|
+
this.timeout = timeout;
|
|
79
|
+
this.userData = userData;
|
|
80
|
+
this.flusher = flusher;
|
|
81
|
+
this.key = key;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=batching.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batching.js","sourceRoot":"","sources":["../../src/batching.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,OAAO;IAGnB,YACS,OAAkE;QAAlE,YAAO,GAAP,OAAO,CAA2D;QAHnE,YAAO,GAAoC,IAAI,GAAG,EAAE,CAAC;QAyC7D,UAAK,GAAG,CAAC,GAAW,EAAE,EAAE;YACvB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK;gBAAE,OAAO;YAEnB,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC,CAAC;QAEF,YAAO,GAAG,CAAC,GAAW,EAAE,EAAE;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK;gBAAE,OAAO;YAEnB,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC,CAAC;IAlDC,CAAC;IAEJ,GAAG,CAAC,EACH,GAAG,EACH,QAAQ,EACR,KAAK,EACL,GAAG,EACH,OAAO,GAOP;QACA,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,EAAE;YACX,KAAK,GAAG,IAAI,KAAK,CAAC;gBACjB,GAAG,EAAE,GAAG,IAAI,IAAI;gBAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,QAAQ;gBACR,OAAO,EAAE,OAAO,IAAI,IAAI;gBACxB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,GAAG;aACH,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SAC7B;QACD,KAAK,CAAC,MAAM,CAAC;YACZ,KAAK;YACL,GAAG;YACH,OAAO;YACP,QAAQ;SACR,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACd,CAAC;CAgBD;AAED,MAAM,OAAO,KAAK;IAUjB,YAAY,EACX,GAAG,EACH,SAAS,EACT,OAAO,EACP,QAAQ,EACR,OAAO,EACP,GAAG,GAQH;QAvBD,UAAK,GAAa,EAAE,CAAC;QAgCrB,WAAM,GAAG,CAAC,EACT,KAAK,EACL,GAAG,EACH,OAAO,EACP,QAAQ,GAMR,EAAE,EAAE;YACJ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;YAC1B,IAAI,GAAG,KAAK,SAAS;gBAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;YACtC,IAAI,OAAO,KAAK,SAAS;gBAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YAClD,IAAI,QAAQ;gBAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAEvC,mDAAmD;YACnD,6BAA6B;YAC7B,MAAM,aAAa,GAClB,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;YAExE,4DAA4D;YAC5D,wBAAwB;YACxB,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE;gBACvD,IAAI,CAAC,KAAK,EAAE,CAAC;aACb;iBAAM,IAAI,aAAa,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;gBAClD,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aACzD;QACF,CAAC,CAAC;QAEF,UAAK,GAAG,GAAG,EAAE;YACZ,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACrD,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC,CAAC;QAEF,YAAO,GAAG,GAAG,EAAE;YACd,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACrD,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QACjB,CAAC,CAAC;QAlDD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,CAAC;CA6CD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare type FileRef = {
|
|
2
|
+
'@@type': 'file';
|
|
3
|
+
id: string;
|
|
4
|
+
};
|
|
5
|
+
export declare function isFileRef(value: any): value is FileRef;
|
|
6
|
+
export declare function createFileRef(id: string): FileRef;
|
|
7
|
+
export declare type FileData = {
|
|
8
|
+
id: string;
|
|
9
|
+
/**
|
|
10
|
+
* For locally created files, this starts false, until it's uploaded
|
|
11
|
+
* Remote files this is always true
|
|
12
|
+
*/
|
|
13
|
+
remote: boolean;
|
|
14
|
+
name: string;
|
|
15
|
+
type: string;
|
|
16
|
+
file?: Blob;
|
|
17
|
+
url?: string;
|
|
18
|
+
};
|
|
19
|
+
export declare function getAllFileFields(snapshot: any): [string, FileRef][];
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function isFileRef(value) {
|
|
2
|
+
return value && value['@@type'] === 'file';
|
|
3
|
+
}
|
|
4
|
+
export function createFileRef(id) {
|
|
5
|
+
return {
|
|
6
|
+
'@@type': 'file',
|
|
7
|
+
id,
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export function getAllFileFields(snapshot) {
|
|
11
|
+
return Object.entries(snapshot).filter((entry) => isFileRef(entry[1]));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/files.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,SAAS,CAAC,KAAU;IACnC,OAAO,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC;AAC5C,CAAC;AACD,MAAM,UAAU,aAAa,CAAC,EAAU;IACvC,OAAO;QACN,QAAQ,EAAE,MAAM;QAChB,EAAE;KACF,CAAC;AACH,CAAC;AAeD,MAAM,UAAU,gBAAgB,CAAC,QAAa;IAC7C,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAGlE,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { processValueFiles } from './files.js';
|
|
3
|
+
function makeFile() {
|
|
4
|
+
return new File([''], 'test.txt', { type: 'text/plain' });
|
|
5
|
+
}
|
|
6
|
+
describe('processing files in a value', () => {
|
|
7
|
+
it('replaces a single file with a reference', () => {
|
|
8
|
+
const file = makeFile();
|
|
9
|
+
const list = [];
|
|
10
|
+
const result = processValueFiles(file, list.push.bind(list));
|
|
11
|
+
expect(result).toEqual({
|
|
12
|
+
'@@type': 'file',
|
|
13
|
+
id: expect.stringContaining(''),
|
|
14
|
+
});
|
|
15
|
+
expect(list).toEqual([
|
|
16
|
+
{
|
|
17
|
+
id: expect.stringContaining(''),
|
|
18
|
+
blob: file,
|
|
19
|
+
url: null,
|
|
20
|
+
remote: false,
|
|
21
|
+
name: 'test.txt',
|
|
22
|
+
type: 'text/plain',
|
|
23
|
+
},
|
|
24
|
+
]);
|
|
25
|
+
});
|
|
26
|
+
it('replaces a list of files with references', () => {
|
|
27
|
+
const file1 = makeFile();
|
|
28
|
+
const file2 = makeFile();
|
|
29
|
+
const list = [];
|
|
30
|
+
const result = processValueFiles([file1, file2], list.push.bind(list));
|
|
31
|
+
expect(result).toEqual([
|
|
32
|
+
{ '@@type': 'file', id: expect.stringContaining('') },
|
|
33
|
+
{ '@@type': 'file', id: expect.stringContaining('') },
|
|
34
|
+
]);
|
|
35
|
+
expect(list).toEqual([
|
|
36
|
+
{
|
|
37
|
+
id: expect.stringContaining(''),
|
|
38
|
+
blob: file1,
|
|
39
|
+
url: null,
|
|
40
|
+
remote: false,
|
|
41
|
+
name: 'test.txt',
|
|
42
|
+
type: 'text/plain',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
id: expect.stringContaining(''),
|
|
46
|
+
blob: file2,
|
|
47
|
+
url: null,
|
|
48
|
+
remote: false,
|
|
49
|
+
name: 'test.txt',
|
|
50
|
+
type: 'text/plain',
|
|
51
|
+
},
|
|
52
|
+
]);
|
|
53
|
+
expect(result[0].id).not.toEqual(result[1].id);
|
|
54
|
+
});
|
|
55
|
+
it('replaces nested files with references', () => {
|
|
56
|
+
const file = makeFile();
|
|
57
|
+
const list = [];
|
|
58
|
+
const result = processValueFiles({ a: { b: file } }, list.push.bind(list));
|
|
59
|
+
expect(result).toEqual({
|
|
60
|
+
a: {
|
|
61
|
+
b: {
|
|
62
|
+
'@@type': 'file',
|
|
63
|
+
id: expect.stringContaining(''),
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
expect(list).toEqual([
|
|
68
|
+
{
|
|
69
|
+
id: expect.stringContaining(''),
|
|
70
|
+
blob: file,
|
|
71
|
+
url: null,
|
|
72
|
+
remote: false,
|
|
73
|
+
name: 'test.txt',
|
|
74
|
+
type: 'text/plain',
|
|
75
|
+
},
|
|
76
|
+
]);
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
//# sourceMappingURL=files.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.test.js","sourceRoot":"","sources":["../../src/files.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export * from './protocol.js';
|
|
2
|
+
export * from './timestamp.js';
|
|
3
|
+
export * from './operation.js';
|
|
4
|
+
export * from './baseline.js';
|
|
5
|
+
export * from './replica.js';
|
|
6
|
+
export * from './schema/index.js';
|
|
7
|
+
export * from './utils.js';
|
|
8
|
+
export * from './indexes.js';
|
|
9
|
+
export { migrate, migrationRange, createDefaultMigration, } from './migration.js';
|
|
10
|
+
export type { Migration, MigrationIndexDescription, MigrationEngine, } from './migration.js';
|
|
11
|
+
export type { UserInfo } from './presence.js';
|
|
12
|
+
export * from './patch.js';
|
|
13
|
+
export * from './oids.js';
|
|
14
|
+
export * from './EventSubscriber.js';
|
|
15
|
+
export * from './undo.js';
|
|
16
|
+
export * from './batching.js';
|
|
17
|
+
export * from './files.js';
|
|
18
|
+
export type { Ref } from './refs.js';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * from './protocol.js';
|
|
2
|
+
export * from './timestamp.js';
|
|
3
|
+
export * from './operation.js';
|
|
4
|
+
export * from './baseline.js';
|
|
5
|
+
export * from './replica.js';
|
|
6
|
+
export * from './schema/index.js';
|
|
7
|
+
export * from './utils.js';
|
|
8
|
+
export * from './indexes.js';
|
|
9
|
+
export { migrate, migrationRange, createDefaultMigration, } from './migration.js';
|
|
10
|
+
export * from './patch.js';
|
|
11
|
+
export * from './oids.js';
|
|
12
|
+
export * from './EventSubscriber.js';
|
|
13
|
+
export * from './undo.js';
|
|
14
|
+
export * from './batching.js';
|
|
15
|
+
export * from './files.js';
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,OAAO,EACN,OAAO,EACP,cAAc,EACd,sBAAsB,GACtB,MAAM,gBAAgB,CAAC;AAOxB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { StorageCollectionSchema } from './index.js';
|
|
2
|
+
export declare const COMPOUND_INDEX_SEPARATOR = "\uFFFFFE";
|
|
3
|
+
export declare const COMPOUND_INDEX_LOWER_BOUND_SEPARATOR = "\0";
|
|
4
|
+
export declare const COMPOUND_INDEX_UPPER_BOUND_SEPARATOR = "\uFFFFFF";
|
|
5
|
+
declare type IndexableFieldValue = string | number | boolean | any[];
|
|
6
|
+
export declare type CompoundIndexValue = string | string[];
|
|
7
|
+
export declare function createCompoundIndexValue(...fields: IndexableFieldValue[]): CompoundIndexValue;
|
|
8
|
+
export declare function createUpperBoundIndexValue(...fields: IndexableFieldValue[]): string;
|
|
9
|
+
export declare function createLowerBoundIndexValue(...fields: IndexableFieldValue[]): string;
|
|
10
|
+
export declare function computeSynthetics(schema: StorageCollectionSchema, obj: any): Record<string, any>;
|
|
11
|
+
export declare function computeCompoundIndices(schema: StorageCollectionSchema<any, any, any>, doc: any): any;
|
|
12
|
+
export declare function assignIndexValues(schema: StorageCollectionSchema<any, any, any>, doc: any): any;
|
|
13
|
+
export declare function sanitizeIndexValue(value: unknown): string | number | (string | number)[];
|
|
14
|
+
export {};
|