@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
package/dist/cjs/indexes.js
DELETED
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.sanitizeIndexValue = exports.NULL_INDEX_VALUE = exports.assignIndexValues = exports.getIndexValues = exports.computeCompoundIndices = exports.computeSynthetics = exports.isDirectSynthetic = exports.createLowerBoundIndexValue = exports.createUpperBoundIndexValue = exports.createCompoundIndexValue = exports.COMPOUND_INDEX_UPPER_BOUND_SEPARATOR = exports.COMPOUND_INDEX_LOWER_BOUND_SEPARATOR = exports.COMPOUND_INDEX_SEPARATOR = void 0;
|
|
4
|
-
// unlikely to be used unicode character
|
|
5
|
-
exports.COMPOUND_INDEX_SEPARATOR = '\uFFFFFE';
|
|
6
|
-
// 1 lower than separator
|
|
7
|
-
exports.COMPOUND_INDEX_LOWER_BOUND_SEPARATOR = '\u0000';
|
|
8
|
-
// 1 higher than separator
|
|
9
|
-
exports.COMPOUND_INDEX_UPPER_BOUND_SEPARATOR = '\uFFFFFF';
|
|
10
|
-
function createCompoundIndexValue(...fields) {
|
|
11
|
-
const value = expandArrayIndex(fields);
|
|
12
|
-
if (value.length === 1) {
|
|
13
|
-
return value[0];
|
|
14
|
-
}
|
|
15
|
-
return value;
|
|
16
|
-
}
|
|
17
|
-
exports.createCompoundIndexValue = createCompoundIndexValue;
|
|
18
|
-
function createUpperBoundIndexValue(...fields) {
|
|
19
|
-
return (fields.join(exports.COMPOUND_INDEX_SEPARATOR) +
|
|
20
|
-
`${exports.COMPOUND_INDEX_UPPER_BOUND_SEPARATOR}`);
|
|
21
|
-
}
|
|
22
|
-
exports.createUpperBoundIndexValue = createUpperBoundIndexValue;
|
|
23
|
-
function createLowerBoundIndexValue(...fields) {
|
|
24
|
-
return (fields.join(exports.COMPOUND_INDEX_SEPARATOR) +
|
|
25
|
-
`${exports.COMPOUND_INDEX_SEPARATOR}${exports.COMPOUND_INDEX_LOWER_BOUND_SEPARATOR}`);
|
|
26
|
-
}
|
|
27
|
-
exports.createLowerBoundIndexValue = createLowerBoundIndexValue;
|
|
28
|
-
/**
|
|
29
|
-
* Whenever an array value is included in a compound index, we have to expand
|
|
30
|
-
* the value to include all permutations of values in the array.
|
|
31
|
-
* For example if we had an index id + tags on a document
|
|
32
|
-
*
|
|
33
|
-
* {
|
|
34
|
-
* id: '1',
|
|
35
|
-
* tags: ['a', 'b']
|
|
36
|
-
* }
|
|
37
|
-
*
|
|
38
|
-
* we want to create an index:
|
|
39
|
-
*
|
|
40
|
-
* id_tags: ['1#a', '1#b']
|
|
41
|
-
*
|
|
42
|
-
* If multiple arrays are indexed we have to exponentially expand...
|
|
43
|
-
*
|
|
44
|
-
* id_tags_tags2: ['1#a#a', '1#a#b', '1#b#a', '1#b#b']
|
|
45
|
-
*
|
|
46
|
-
* To generalize this we construct a 2-level array of strings.
|
|
47
|
-
* Iterating over indexed values, we expand each item into N items if
|
|
48
|
-
* the current value is an array.
|
|
49
|
-
*
|
|
50
|
-
* Then we combine all nested arrays into compound index values.
|
|
51
|
-
* This will produce an array of 1 element if none of the indexed values
|
|
52
|
-
* were arrays. The caller should unwrap that.
|
|
53
|
-
*
|
|
54
|
-
* This function also deduplicates values.
|
|
55
|
-
*/
|
|
56
|
-
function expandArrayIndex(fields) {
|
|
57
|
-
let value = [[]];
|
|
58
|
-
for (const field of fields) {
|
|
59
|
-
if (Array.isArray(field)) {
|
|
60
|
-
const newValue = [];
|
|
61
|
-
for (const previousValue of value) {
|
|
62
|
-
for (const fieldValue of field) {
|
|
63
|
-
newValue.push(previousValue.concat(fieldValue));
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
value = newValue;
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
for (const item of value) {
|
|
70
|
-
item.push(`${field}`);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
return Array.from(new Set(value.map((item) => {
|
|
75
|
-
return item.join(exports.COMPOUND_INDEX_SEPARATOR);
|
|
76
|
-
})));
|
|
77
|
-
}
|
|
78
|
-
function isDirectSynthetic(index) {
|
|
79
|
-
return !!index.field;
|
|
80
|
-
}
|
|
81
|
-
exports.isDirectSynthetic = isDirectSynthetic;
|
|
82
|
-
function computeSynthetics(schema, obj) {
|
|
83
|
-
const result = {};
|
|
84
|
-
for (const [name, property] of Object.entries(schema.indexes || {})) {
|
|
85
|
-
const index = property;
|
|
86
|
-
if (isDirectSynthetic(index)) {
|
|
87
|
-
result[name] = sanitizeIndexValue(obj[index.field]);
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
result[name] = sanitizeIndexValue(index.compute(obj));
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return result;
|
|
94
|
-
}
|
|
95
|
-
exports.computeSynthetics = computeSynthetics;
|
|
96
|
-
function computeCompoundIndices(schema, doc) {
|
|
97
|
-
return Object.entries(schema.compounds || {}).reduce((acc, [indexKey, index]) => {
|
|
98
|
-
acc[indexKey] = createCompoundIndexValue(...index.of.map((key) => doc[key]));
|
|
99
|
-
return acc;
|
|
100
|
-
}, {});
|
|
101
|
-
}
|
|
102
|
-
exports.computeCompoundIndices = computeCompoundIndices;
|
|
103
|
-
function computeIndexedFields(schema, doc) {
|
|
104
|
-
return Object.entries(schema.fields).reduce((acc, [key, field]) => {
|
|
105
|
-
// TODO: remove once I'm comfortable dropping 'indexed' support
|
|
106
|
-
if ('indexed' in field) {
|
|
107
|
-
acc[key] = sanitizeIndexValue(doc[key]);
|
|
108
|
-
}
|
|
109
|
-
return acc;
|
|
110
|
-
}, {});
|
|
111
|
-
}
|
|
112
|
-
function getIndexValues(schema, doc) {
|
|
113
|
-
const basicIndexes = Object.assign(Object.assign({ [schema.primaryKey]: doc[schema.primaryKey] }, computeIndexedFields(schema, doc)), computeSynthetics(schema, doc));
|
|
114
|
-
Object.assign(basicIndexes, computeCompoundIndices(schema, Object.assign(Object.assign({}, doc), basicIndexes)));
|
|
115
|
-
basicIndexes['@@@snapshot'] = doc;
|
|
116
|
-
return basicIndexes;
|
|
117
|
-
}
|
|
118
|
-
exports.getIndexValues = getIndexValues;
|
|
119
|
-
function assignIndexValues(schema, doc) {
|
|
120
|
-
Object.assign(doc, computeSynthetics(schema, doc));
|
|
121
|
-
Object.assign(doc, computeCompoundIndices(schema, doc));
|
|
122
|
-
return doc;
|
|
123
|
-
}
|
|
124
|
-
exports.assignIndexValues = assignIndexValues;
|
|
125
|
-
exports.NULL_INDEX_VALUE = 'null';
|
|
126
|
-
function sanitizeIndexValue(value) {
|
|
127
|
-
if (value === null) {
|
|
128
|
-
return exports.NULL_INDEX_VALUE;
|
|
129
|
-
}
|
|
130
|
-
if (typeof value === 'string' || typeof value === 'number') {
|
|
131
|
-
return value;
|
|
132
|
-
}
|
|
133
|
-
if (typeof value === 'boolean' || value === null) {
|
|
134
|
-
return `${value}`;
|
|
135
|
-
}
|
|
136
|
-
if (value === undefined) {
|
|
137
|
-
// this shouldn't happen ,but for resiliency...
|
|
138
|
-
return 'undefined';
|
|
139
|
-
}
|
|
140
|
-
if (Array.isArray(value)) {
|
|
141
|
-
return value.map(sanitizeIndexValue);
|
|
142
|
-
}
|
|
143
|
-
throw new Error(`Unsupported index value: ${value}`);
|
|
144
|
-
}
|
|
145
|
-
exports.sanitizeIndexValue = sanitizeIndexValue;
|
|
146
|
-
//# sourceMappingURL=indexes.js.map
|
package/dist/cjs/indexes.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"indexes.js","sourceRoot":"","sources":["../../src/indexes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/cjs/indexes.test.js
DELETED
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const vitest_1 = require("vitest");
|
|
4
|
-
const indexes_js_1 = require("./indexes.js");
|
|
5
|
-
(0, vitest_1.describe)('compound indexes', () => {
|
|
6
|
-
(0, vitest_1.it)('can be created from two string values', () => {
|
|
7
|
-
(0, vitest_1.expect)((0, indexes_js_1.createCompoundIndexValue)('a', 'b')).toEqual(`a${indexes_js_1.COMPOUND_INDEX_SEPARATOR}b`);
|
|
8
|
-
});
|
|
9
|
-
(0, vitest_1.it)('can be created from two number values', () => {
|
|
10
|
-
(0, vitest_1.expect)((0, indexes_js_1.createCompoundIndexValue)(1, 2)).toEqual(`1${indexes_js_1.COMPOUND_INDEX_SEPARATOR}2`);
|
|
11
|
-
});
|
|
12
|
-
(0, vitest_1.it)('can be created from an array and string value', () => {
|
|
13
|
-
(0, vitest_1.expect)((0, indexes_js_1.createCompoundIndexValue)(['a', 'b'], 'c')).toEqual([
|
|
14
|
-
`a${indexes_js_1.COMPOUND_INDEX_SEPARATOR}c`,
|
|
15
|
-
`b${indexes_js_1.COMPOUND_INDEX_SEPARATOR}c`,
|
|
16
|
-
]);
|
|
17
|
-
});
|
|
18
|
-
(0, vitest_1.it)('can be created from a string and array of numbers', () => {
|
|
19
|
-
(0, vitest_1.expect)((0, indexes_js_1.createCompoundIndexValue)('a', [1, 2])).toEqual([
|
|
20
|
-
`a${indexes_js_1.COMPOUND_INDEX_SEPARATOR}1`,
|
|
21
|
-
`a${indexes_js_1.COMPOUND_INDEX_SEPARATOR}2`,
|
|
22
|
-
]);
|
|
23
|
-
});
|
|
24
|
-
(0, vitest_1.it)('can be created from an array of strings and an array of booleans', () => {
|
|
25
|
-
(0, vitest_1.expect)((0, indexes_js_1.createCompoundIndexValue)(['a', 'b'], [true, false])).toEqual([
|
|
26
|
-
`a${indexes_js_1.COMPOUND_INDEX_SEPARATOR}true`,
|
|
27
|
-
`a${indexes_js_1.COMPOUND_INDEX_SEPARATOR}false`,
|
|
28
|
-
`b${indexes_js_1.COMPOUND_INDEX_SEPARATOR}true`,
|
|
29
|
-
`b${indexes_js_1.COMPOUND_INDEX_SEPARATOR}false`,
|
|
30
|
-
]);
|
|
31
|
-
});
|
|
32
|
-
(0, vitest_1.it)('remove duplicate array compound index values', () => {
|
|
33
|
-
(0, vitest_1.expect)((0, indexes_js_1.createCompoundIndexValue)(['a', 'b', 'b'], [true, false, true])).toEqual([
|
|
34
|
-
`a${indexes_js_1.COMPOUND_INDEX_SEPARATOR}true`,
|
|
35
|
-
`a${indexes_js_1.COMPOUND_INDEX_SEPARATOR}false`,
|
|
36
|
-
`b${indexes_js_1.COMPOUND_INDEX_SEPARATOR}true`,
|
|
37
|
-
`b${indexes_js_1.COMPOUND_INDEX_SEPARATOR}false`,
|
|
38
|
-
]);
|
|
39
|
-
});
|
|
40
|
-
(0, vitest_1.it)('creates lower bound value for multi-value indexes', () => {
|
|
41
|
-
(0, vitest_1.expect)((0, indexes_js_1.createLowerBoundIndexValue)('a', 'b')).toEqual(`a${indexes_js_1.COMPOUND_INDEX_SEPARATOR}b${indexes_js_1.COMPOUND_INDEX_SEPARATOR}${indexes_js_1.COMPOUND_INDEX_LOWER_BOUND_SEPARATOR}`);
|
|
42
|
-
});
|
|
43
|
-
(0, vitest_1.it)('creates upper bound value for multi-value indexes', () => {
|
|
44
|
-
(0, vitest_1.expect)((0, indexes_js_1.createUpperBoundIndexValue)('a', 'b')).toEqual(`a${indexes_js_1.COMPOUND_INDEX_SEPARATOR}b${indexes_js_1.COMPOUND_INDEX_UPPER_BOUND_SEPARATOR}`);
|
|
45
|
-
}),
|
|
46
|
-
(0, vitest_1.it)('will always be grouped by the first item', () => {
|
|
47
|
-
(0, vitest_1.expect)([
|
|
48
|
-
(0, indexes_js_1.createCompoundIndexValue)('aaaaaa', 'b'),
|
|
49
|
-
(0, indexes_js_1.createCompoundIndexValue)('aaaaaa', 'c'),
|
|
50
|
-
(0, indexes_js_1.createCompoundIndexValue)('aaaaaa', 'd'),
|
|
51
|
-
(0, indexes_js_1.createCompoundIndexValue)('aaaaaa', 'e'),
|
|
52
|
-
// extra nefarious!
|
|
53
|
-
(0, indexes_js_1.createCompoundIndexValue)('aaaaaaa', 'no!'),
|
|
54
|
-
(0, indexes_js_1.createCompoundIndexValue)('aaaaaa ', 'no!'),
|
|
55
|
-
(0, indexes_js_1.createCompoundIndexValue)(`aaaaaa😎`, 'no!'),
|
|
56
|
-
(0, indexes_js_1.createCompoundIndexValue)(`aaaaaa😎😎`, 'no!'),
|
|
57
|
-
(0, indexes_js_1.createCompoundIndexValue)('aaa', 'no!'),
|
|
58
|
-
(0, indexes_js_1.createCompoundIndexValue)(`aaaaaaa😎no!`, 'no!'),
|
|
59
|
-
].sort()).toEqual([
|
|
60
|
-
`aaaaaa ${indexes_js_1.COMPOUND_INDEX_SEPARATOR}no!`,
|
|
61
|
-
`aaaaaaa😎no!${indexes_js_1.COMPOUND_INDEX_SEPARATOR}no!`,
|
|
62
|
-
`aaaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}no!`,
|
|
63
|
-
`aaaaaa😎😎${indexes_js_1.COMPOUND_INDEX_SEPARATOR}no!`,
|
|
64
|
-
`aaaaaa😎${indexes_js_1.COMPOUND_INDEX_SEPARATOR}no!`,
|
|
65
|
-
// this is the contiguous block of relevant values
|
|
66
|
-
`aaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}b`,
|
|
67
|
-
`aaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}c`,
|
|
68
|
-
`aaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}d`,
|
|
69
|
-
`aaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}e`,
|
|
70
|
-
// here ends the block
|
|
71
|
-
`aaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}no!`,
|
|
72
|
-
]);
|
|
73
|
-
});
|
|
74
|
-
(0, vitest_1.it)('will be bounded by upper and lower bound values', () => {
|
|
75
|
-
const match = 'aaaaaa';
|
|
76
|
-
const sorted = [
|
|
77
|
-
(0, indexes_js_1.createCompoundIndexValue)(match, 'b'),
|
|
78
|
-
(0, indexes_js_1.createCompoundIndexValue)(match, 'c'),
|
|
79
|
-
(0, indexes_js_1.createCompoundIndexValue)(match, 'd'),
|
|
80
|
-
(0, indexes_js_1.createCompoundIndexValue)(match, 'e'),
|
|
81
|
-
// extra nefarious!
|
|
82
|
-
(0, indexes_js_1.createCompoundIndexValue)(`${match}a`, 'no!'),
|
|
83
|
-
(0, indexes_js_1.createCompoundIndexValue)(`${match} `, 'no!'),
|
|
84
|
-
(0, indexes_js_1.createCompoundIndexValue)(`${match}😎`, 'no!'),
|
|
85
|
-
(0, indexes_js_1.createCompoundIndexValue)(`${match}😎😎`, 'no!'),
|
|
86
|
-
(0, indexes_js_1.createCompoundIndexValue)('aaa', 'no!'),
|
|
87
|
-
(0, indexes_js_1.createCompoundIndexValue)(`${match}a😎no!`, 'no!'),
|
|
88
|
-
].sort();
|
|
89
|
-
const boundedBlock = sorted.filter((value) => value > (0, indexes_js_1.createLowerBoundIndexValue)(match) &&
|
|
90
|
-
value < (0, indexes_js_1.createUpperBoundIndexValue)(match));
|
|
91
|
-
(0, vitest_1.expect)(boundedBlock).toEqual([
|
|
92
|
-
`aaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}b`,
|
|
93
|
-
`aaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}c`,
|
|
94
|
-
`aaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}d`,
|
|
95
|
-
`aaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}e`,
|
|
96
|
-
]);
|
|
97
|
-
});
|
|
98
|
-
(0, vitest_1.it)('will be bounded by upper and lower bounds when matching multiple sections', () => {
|
|
99
|
-
const match1 = 'aaaaaa';
|
|
100
|
-
const match2 = 'bbbbbb';
|
|
101
|
-
const sorted = [
|
|
102
|
-
(0, indexes_js_1.createCompoundIndexValue)(match1, match2, 'b'),
|
|
103
|
-
(0, indexes_js_1.createCompoundIndexValue)(match1, match2, 'c'),
|
|
104
|
-
(0, indexes_js_1.createCompoundIndexValue)(match1, match2, 'd'),
|
|
105
|
-
(0, indexes_js_1.createCompoundIndexValue)(match1, match2, 'e'),
|
|
106
|
-
// extra nefarious!
|
|
107
|
-
(0, indexes_js_1.createCompoundIndexValue)(`${match1}a`, match2, 'no!'),
|
|
108
|
-
(0, indexes_js_1.createCompoundIndexValue)(`${match1} `, match2, 'no!'),
|
|
109
|
-
(0, indexes_js_1.createCompoundIndexValue)(`${match1}😎`, match2, 'no!'),
|
|
110
|
-
(0, indexes_js_1.createCompoundIndexValue)(`${match1}😎😎`, match2, 'no!'),
|
|
111
|
-
(0, indexes_js_1.createCompoundIndexValue)('aaa', match2, 'no!'),
|
|
112
|
-
(0, indexes_js_1.createCompoundIndexValue)(`${match1}a😎no!`, match2, 'no!'),
|
|
113
|
-
(0, indexes_js_1.createCompoundIndexValue)(match1, `${match2}a😎no!`, 'no!'),
|
|
114
|
-
(0, indexes_js_1.createCompoundIndexValue)(match1, `${match2} `, 'no!'),
|
|
115
|
-
(0, indexes_js_1.createCompoundIndexValue)(match1, ' ', 'no!'),
|
|
116
|
-
(0, indexes_js_1.createCompoundIndexValue)(match1, '\u00001', 'no!'),
|
|
117
|
-
(0, indexes_js_1.createCompoundIndexValue)(match1, '\uE007f', 'no!'),
|
|
118
|
-
].sort();
|
|
119
|
-
(0, vitest_1.expect)(sorted.filter((value) => value > (0, indexes_js_1.createLowerBoundIndexValue)(match1, match2) &&
|
|
120
|
-
value < (0, indexes_js_1.createUpperBoundIndexValue)(match1, match2))).toEqual([
|
|
121
|
-
`aaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}bbbbbb${indexes_js_1.COMPOUND_INDEX_SEPARATOR}b`,
|
|
122
|
-
`aaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}bbbbbb${indexes_js_1.COMPOUND_INDEX_SEPARATOR}c`,
|
|
123
|
-
`aaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}bbbbbb${indexes_js_1.COMPOUND_INDEX_SEPARATOR}d`,
|
|
124
|
-
`aaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}bbbbbb${indexes_js_1.COMPOUND_INDEX_SEPARATOR}e`,
|
|
125
|
-
]);
|
|
126
|
-
});
|
|
127
|
-
});
|
|
128
|
-
(0, vitest_1.describe)('all indexes', () => {
|
|
129
|
-
(0, vitest_1.it)('computes compound indexes from other indexes', () => {
|
|
130
|
-
(0, vitest_1.expect)((0, indexes_js_1.getIndexValues)({
|
|
131
|
-
name: 'test',
|
|
132
|
-
primaryKey: 'foo',
|
|
133
|
-
fields: {
|
|
134
|
-
foo: {
|
|
135
|
-
type: 'string',
|
|
136
|
-
},
|
|
137
|
-
},
|
|
138
|
-
indexes: {
|
|
139
|
-
bar: {
|
|
140
|
-
compute: (doc) => doc.foo + 'bar',
|
|
141
|
-
},
|
|
142
|
-
},
|
|
143
|
-
compounds: {
|
|
144
|
-
foobar: {
|
|
145
|
-
of: ['foo', 'bar'],
|
|
146
|
-
},
|
|
147
|
-
},
|
|
148
|
-
}, { foo: 'foo' })).toEqual({
|
|
149
|
-
foobar: 'foo' + indexes_js_1.COMPOUND_INDEX_SEPARATOR + 'foobar',
|
|
150
|
-
'@@@snapshot': { foo: 'foo' },
|
|
151
|
-
foo: 'foo',
|
|
152
|
-
bar: 'foobar',
|
|
153
|
-
});
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
//# sourceMappingURL=indexes.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"indexes.test.js","sourceRoot":"","sources":["../../src/indexes.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/memo.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Memoizes the last invocation of a function with the same memo keys.
|
|
3
|
-
* As long as key identity and set doesn't change, the last computed
|
|
4
|
-
* value will be returned.
|
|
5
|
-
*/
|
|
6
|
-
export declare function memoByKeys<TRet, TKeys extends any[]>(fn: (...args: unknown[]) => TRet, getKeys: () => TKeys): (...args: unknown[]) => TRet;
|
package/dist/cjs/memo.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.memoByKeys = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Memoizes the last invocation of a function with the same memo keys.
|
|
6
|
-
* As long as key identity and set doesn't change, the last computed
|
|
7
|
-
* value will be returned.
|
|
8
|
-
*/
|
|
9
|
-
function memoByKeys(fn, getKeys) {
|
|
10
|
-
let cachedKeys;
|
|
11
|
-
let cachedResult;
|
|
12
|
-
return (...args) => {
|
|
13
|
-
const keys = getKeys();
|
|
14
|
-
if (cachedKeys &&
|
|
15
|
-
cachedKeys.length === keys.length &&
|
|
16
|
-
cachedKeys.every((key, i) => key === keys[i])) {
|
|
17
|
-
return cachedResult;
|
|
18
|
-
}
|
|
19
|
-
cachedKeys = [...keys];
|
|
20
|
-
cachedResult = fn(...args);
|
|
21
|
-
return cachedResult;
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
exports.memoByKeys = memoByKeys;
|
|
25
|
-
//# sourceMappingURL=memo.js.map
|
package/dist/cjs/memo.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memo.js","sourceRoot":"","sources":["../../src/memo.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,SAAgB,UAAU,CACzB,EAAgC,EAChC,OAAoB;IAEpB,IAAI,UAA6B,CAAC;IAClC,IAAI,YAA8B,CAAC;IACnC,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,IACC,UAAU;YACV,UAAU,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;YACjC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,EAC5C;YACD,OAAO,YAAa,CAAC;SACrB;QACD,UAAU,GAAG,CAAC,GAAG,IAAI,CAAU,CAAC;QAChC,YAAY,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3B,OAAO,YAAY,CAAC;IACrB,CAAC,CAAC;AACH,CAAC;AAnBD,gCAmBC"}
|
package/dist/cjs/memo.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/cjs/memo.test.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const vitest_1 = require("vitest");
|
|
4
|
-
const memo_js_1 = require("./memo.js");
|
|
5
|
-
(0, vitest_1.describe)('memoByKeys', () => {
|
|
6
|
-
(0, vitest_1.it)('memoizes from provided key list', () => {
|
|
7
|
-
let i = 0;
|
|
8
|
-
const a = {
|
|
9
|
-
value: 0,
|
|
10
|
-
};
|
|
11
|
-
const b = {
|
|
12
|
-
value: 0,
|
|
13
|
-
};
|
|
14
|
-
const compute = vitest_1.vi.fn(() => a.value + b.value);
|
|
15
|
-
const keys = [a, b];
|
|
16
|
-
const memoized = (0, memo_js_1.memoByKeys)(compute, () => keys);
|
|
17
|
-
(0, vitest_1.expect)(memoized()).toEqual(0);
|
|
18
|
-
(0, vitest_1.expect)(memoized()).toEqual(0);
|
|
19
|
-
// ok, change the values - but not key identities
|
|
20
|
-
a.value = 1;
|
|
21
|
-
(0, vitest_1.expect)(memoized()).toEqual(0);
|
|
22
|
-
(0, vitest_1.expect)(compute).toHaveBeenCalledOnce();
|
|
23
|
-
keys.push({ value: 0 });
|
|
24
|
-
(0, vitest_1.expect)(memoized()).toEqual(1);
|
|
25
|
-
(0, vitest_1.expect)(memoized()).toEqual(1);
|
|
26
|
-
(0, vitest_1.expect)(compute).toHaveBeenCalledTimes(2);
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
//# sourceMappingURL=memo.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memo.test.js","sourceRoot":"","sources":["../../src/memo.test.ts"],"names":[],"mappings":";;AAAA,mCAAkD;AAClD,uCAAuC;AAEvC,IAAA,iBAAQ,EAAC,YAAY,EAAE,GAAG,EAAE;IAC3B,IAAA,WAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;QAC1C,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,MAAM,CAAC,GAAG;YACT,KAAK,EAAE,CAAC;SACR,CAAC;QACF,MAAM,CAAC,GAAG;YACT,KAAK,EAAE,CAAC;SACR,CAAC;QACF,MAAM,OAAO,GAAG,WAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEpB,MAAM,QAAQ,GAAG,IAAA,oBAAU,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAEjD,IAAA,eAAM,EAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAA,eAAM,EAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,iDAAiD;QACjD,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QACZ,IAAA,eAAM,EAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAE9B,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,oBAAoB,EAAE,CAAC;QAEvC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAA,eAAM,EAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
package/dist/cjs/migration.d.ts
DELETED
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
import { StorageCollectionSchema, StorageSchema, StorageDocument, CollectionFilter, StorageDocumentInit } from './index.js';
|
|
2
|
-
/**@deprecated */
|
|
3
|
-
export interface DroppedCollectionMigrationStrategy<Old extends StorageCollectionSchema<any, any, any>> {
|
|
4
|
-
(old: Old): void | Promise<void>;
|
|
5
|
-
}
|
|
6
|
-
/**@deprecated */
|
|
7
|
-
export interface PreservedCollectionMigrationStrategy<Old extends StorageCollectionSchema<any, any, any>, New extends StorageCollectionSchema<any, any, any>> {
|
|
8
|
-
(old: StorageDocument<Old>): StorageDocument<New> | Promise<StorageDocument<New>>;
|
|
9
|
-
}
|
|
10
|
-
/** @deprecated */
|
|
11
|
-
export declare type MigrationsKeyedOnCollection<Old extends StorageSchema<any>, New extends StorageSchema<any>> = PreservedCollectionMigrations<Old, New> | DroppedCollectionMigrations<Old, New>;
|
|
12
|
-
/**@deprecated */
|
|
13
|
-
declare type NotInSchema<Name extends string | number | symbol, Schema extends StorageSchema<any>> = Name extends keyof Schema['collections'] ? never : Name;
|
|
14
|
-
/** @deprecated */
|
|
15
|
-
declare type InSchema<Name extends string | number | symbol, Schema extends StorageSchema<any>> = Name extends keyof Schema['collections'] ? Name : never;
|
|
16
|
-
/** @deprecated */
|
|
17
|
-
declare type DroppedCollections<Old extends StorageSchema<any>, New extends StorageSchema<any>> = {
|
|
18
|
-
[Key in keyof Old['collections'] as NotInSchema<Key, New>]: StorageCollectionSchema<any, any, any>;
|
|
19
|
-
};
|
|
20
|
-
/** @deprecated */
|
|
21
|
-
declare type PreservedCollections<Old extends StorageSchema<any>, New extends StorageSchema<any>> = {
|
|
22
|
-
[Key in keyof Old['collections'] as InSchema<Key, New>]: StorageCollectionSchema<any, any, any>;
|
|
23
|
-
};
|
|
24
|
-
/** @deprecated */
|
|
25
|
-
declare type DroppedCollectionMigrations<Old extends StorageSchema<any>, New extends StorageSchema<any>> = {
|
|
26
|
-
[Key in keyof DroppedCollections<Old, New>]: DroppedCollectionMigrationStrategy<Old['collections'][Key]>;
|
|
27
|
-
};
|
|
28
|
-
/** @deprecated */
|
|
29
|
-
declare type PreservedCollectionMigrations<Old extends StorageSchema<any>, New extends StorageSchema<any>> = {
|
|
30
|
-
[Key in keyof PreservedCollections<Old, New>]: PreservedCollectionMigrationStrategy<Old['collections'][Key], New['collections'][Key]>;
|
|
31
|
-
};
|
|
32
|
-
/** @deprecated */
|
|
33
|
-
declare type StrategyFor<Key extends string, Old extends StorageSchema<any>, New extends StorageSchema<any>> = Key extends keyof New['collections'] ? PreservedCollectionMigrationStrategy<Old['collections'][Key], New['collections'][Key]> : DroppedCollectionMigrationStrategy<Old['collections'][Key]>;
|
|
34
|
-
/** @deprecated */
|
|
35
|
-
declare type DeprecatedMigrationRunner<Old extends StorageSchema<any>, New extends StorageSchema<any>> = <Collection extends Extract<keyof Old['collections'], string>>(collection: Collection, strategy: StrategyFor<Collection, Old, New>) => Promise<void>;
|
|
36
|
-
/** @deprecated */
|
|
37
|
-
declare type DeprecatedMigrationQueryMaker<Collection extends StorageCollectionSchema<any, any, any>> = {
|
|
38
|
-
get(primaryKey: string): Promise<StorageDocument<Collection> | undefined>;
|
|
39
|
-
findOne(query: CollectionFilter): Promise<StorageDocument<Collection> | undefined>;
|
|
40
|
-
findAll(query?: CollectionFilter): Promise<StorageDocument<Collection>[]>;
|
|
41
|
-
};
|
|
42
|
-
/** @deprecated */
|
|
43
|
-
declare type DeprecatedMigrationQueries<Old extends StorageSchema<any>> = {
|
|
44
|
-
[Key in keyof Old['collections']]: DeprecatedMigrationQueryMaker<Old['collections'][Key]>;
|
|
45
|
-
};
|
|
46
|
-
/** @deprecated */
|
|
47
|
-
declare type DeprecatedMigrationMutations<New extends StorageSchema> = {
|
|
48
|
-
[Key in keyof New['collections']]: {
|
|
49
|
-
put(document: StorageDocumentInit<New['collections'][Key]>): Promise<StorageDocument<New['collections'][Key]>>;
|
|
50
|
-
delete(primaryKey: string): Promise<void>;
|
|
51
|
-
};
|
|
52
|
-
};
|
|
53
|
-
/** @deprecated */
|
|
54
|
-
export interface DeprecatedMigrationTools<Old extends StorageSchema<any>, New extends StorageSchema<any>> {
|
|
55
|
-
migrate: DeprecatedMigrationRunner<Old, New>;
|
|
56
|
-
identity: <T>(val: T) => T;
|
|
57
|
-
/**
|
|
58
|
-
* @deprecated - default field values are automatically
|
|
59
|
-
* applied during migration, you don't need to use this.
|
|
60
|
-
* Please remove it from your migrations - even old ones
|
|
61
|
-
* (old migrations can be updated!)
|
|
62
|
-
*/
|
|
63
|
-
withDefaults: (collectionName: string, value: any) => any;
|
|
64
|
-
queries: DeprecatedMigrationQueries<Old>;
|
|
65
|
-
mutations: DeprecatedMigrationMutations<New>;
|
|
66
|
-
info: {
|
|
67
|
-
changedCollections: keyof Old['collections'][];
|
|
68
|
-
addedCollections: keyof New['collections'][];
|
|
69
|
-
removedCollections: keyof Old['collections'][];
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
export interface MigrationEngine {
|
|
73
|
-
migrate: (collection: string, strategy: (val: any) => any) => Promise<void>;
|
|
74
|
-
queries: MigrationQueries<any>;
|
|
75
|
-
mutations: MigrationMutations<any>;
|
|
76
|
-
/** OIDs of any new documents created during the migration */
|
|
77
|
-
newOids: string[];
|
|
78
|
-
/** Promises that should be resolved before completing the migration */
|
|
79
|
-
awaitables: Promise<any>[];
|
|
80
|
-
/** Deletes all documents in a collection - used for removed collections */
|
|
81
|
-
deleteCollection: (collection: string) => Promise<void>;
|
|
82
|
-
log: (...messages: any[]) => void;
|
|
83
|
-
}
|
|
84
|
-
/** @deprecated */
|
|
85
|
-
declare type DeprecatedMigrationProcedure<Old extends StorageSchema, New extends StorageSchema> = (tools: DeprecatedMigrationTools<Old, New>) => Promise<void>;
|
|
86
|
-
declare type EmptySchema = {
|
|
87
|
-
version: 0;
|
|
88
|
-
collections: {};
|
|
89
|
-
};
|
|
90
|
-
/** @deprecated - use createMigration */
|
|
91
|
-
export declare function migrate<Schema extends StorageSchema>(schema: Schema, procedure: DeprecatedMigrationProcedure<EmptySchema, Schema>): Migration<EmptySchema, Schema>;
|
|
92
|
-
/** @deprecated = use createMigration */
|
|
93
|
-
export declare function migrate<Old extends StorageSchema, New extends StorageSchema>(oldSchema: Old, newSchema: New, procedure: DeprecatedMigrationProcedure<Old, New>): Migration<Old, New>;
|
|
94
|
-
export interface MigrationIndexDescription {
|
|
95
|
-
name: string;
|
|
96
|
-
multiEntry: boolean;
|
|
97
|
-
synthetic: boolean;
|
|
98
|
-
compound: boolean;
|
|
99
|
-
}
|
|
100
|
-
export interface Migration<Old extends StorageSchema = any, New extends StorageSchema = any> {
|
|
101
|
-
version: number;
|
|
102
|
-
oldSchema: Old;
|
|
103
|
-
newSchema: New;
|
|
104
|
-
migrate: (engine: MigrationEngine) => Promise<void>;
|
|
105
|
-
/** Collections which are added in the new schema and not present in the old */
|
|
106
|
-
addedCollections: string[];
|
|
107
|
-
/** Collections which were removed from the old schema */
|
|
108
|
-
removedCollections: string[];
|
|
109
|
-
/** All collections which exist after the migration has completed - i.e. the ones in the new schema */
|
|
110
|
-
allCollections: string[];
|
|
111
|
-
/** Only the collections which were in the old schema */
|
|
112
|
-
oldCollections: string[];
|
|
113
|
-
/** Collections whose fields or indexes changed between schemas */
|
|
114
|
-
changedCollections: string[];
|
|
115
|
-
addedIndexes: Record<string, MigrationIndexDescription[]>;
|
|
116
|
-
removedIndexes: Record<string, MigrationIndexDescription[]>;
|
|
117
|
-
}
|
|
118
|
-
export declare function migrationRange(from: number, to: number): number[];
|
|
119
|
-
/** @deprecated - use createMigration with no procedure function */
|
|
120
|
-
export declare function createDefaultMigration(schema: StorageSchema): Migration<{
|
|
121
|
-
version: 0;
|
|
122
|
-
collections: {};
|
|
123
|
-
}>;
|
|
124
|
-
/** @deprecated - use createMigration with no procedure function */
|
|
125
|
-
export declare function createDefaultMigration<Old extends StorageSchema>(oldSchema: Old, newSchema: StorageSchema): Migration<Old>;
|
|
126
|
-
/** New, simpler type-safety migration tools */
|
|
127
|
-
declare type DocumentShape<Init = any, Snapshot = any> = {
|
|
128
|
-
init: Init;
|
|
129
|
-
snapshot: Snapshot;
|
|
130
|
-
};
|
|
131
|
-
declare type SchemaDocuments = Record<string, DocumentShape>;
|
|
132
|
-
declare type CollectionProcedure<OldSnapshot, NewInit> = {
|
|
133
|
-
(old: OldSnapshot): NewInit | Promise<NewInit>;
|
|
134
|
-
};
|
|
135
|
-
declare type MigrationQueries<Old extends SchemaDocuments> = {
|
|
136
|
-
[Key in keyof Old]: {
|
|
137
|
-
get(primaryKey: string): Promise<Old[Key]['snapshot'] | undefined>;
|
|
138
|
-
findOne(query: CollectionFilter): Promise<Old[Key]['snapshot'] | undefined>;
|
|
139
|
-
findAll(query?: CollectionFilter): Promise<Old[Key]['snapshot'][]>;
|
|
140
|
-
};
|
|
141
|
-
};
|
|
142
|
-
declare type MigrationMutations<New extends SchemaDocuments> = {
|
|
143
|
-
[Key in keyof New]: {
|
|
144
|
-
put(document: New[Key]['init']): Promise<New[Key]['snapshot']>;
|
|
145
|
-
delete(primaryKey: string): Promise<void>;
|
|
146
|
-
};
|
|
147
|
-
};
|
|
148
|
-
declare type MigrationTools<Old extends SchemaDocuments, New extends SchemaDocuments> = {
|
|
149
|
-
/**
|
|
150
|
-
* Process a change in a collection's documents by taking in each existing
|
|
151
|
-
* document and returning its new shape. This is typed so you can be
|
|
152
|
-
* confident the proper transformations are made.
|
|
153
|
-
*/
|
|
154
|
-
migrate: <Collection extends keyof Old & keyof New>(collection: Collection, strategy: CollectionProcedure<Old[Collection]['snapshot'], New[Collection]['init']>) => Promise<void>;
|
|
155
|
-
mutations: MigrationMutations<New>;
|
|
156
|
-
queries: MigrationQueries<Old>;
|
|
157
|
-
info: {
|
|
158
|
-
changedCollections: (keyof Old & keyof New)[];
|
|
159
|
-
addedCollections: (keyof New)[];
|
|
160
|
-
removedCollections: (keyof Old)[];
|
|
161
|
-
};
|
|
162
|
-
};
|
|
163
|
-
declare type MigrationProcedure<Old extends SchemaDocuments, New extends SchemaDocuments> = {
|
|
164
|
-
(tools: MigrationTools<Old, New>): Promise<void>;
|
|
165
|
-
};
|
|
166
|
-
declare type InitialMigrationTools<New extends SchemaDocuments> = {
|
|
167
|
-
mutations: MigrationMutations<New>;
|
|
168
|
-
};
|
|
169
|
-
declare type InitialMigrationProcedure<New extends SchemaDocuments> = {
|
|
170
|
-
(tools: InitialMigrationTools<New>): Promise<void>;
|
|
171
|
-
};
|
|
172
|
-
export declare function createMigration<New extends SchemaDocuments>(newSchema: StorageSchema, procedure?: InitialMigrationProcedure<New>): any;
|
|
173
|
-
export declare function createMigration<Old extends SchemaDocuments, New extends SchemaDocuments>(oldSchema: StorageSchema, newSchema: StorageSchema, procedure?: MigrationProcedure<Old, New>): any;
|
|
174
|
-
export {};
|