@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/migration.js
DELETED
|
@@ -1,310 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createMigration = exports.createDefaultMigration = exports.migrationRange = exports.migrate = void 0;
|
|
4
|
-
const index_js_1 = require("./index.js");
|
|
5
|
-
const emptySchema = {
|
|
6
|
-
version: 0,
|
|
7
|
-
collections: {},
|
|
8
|
-
};
|
|
9
|
-
function migrate(oldSchemaOrNewSchema, newSchemaOrProcedure, procedureIfTwoSchemas) {
|
|
10
|
-
const isProcedureSecondArgument = typeof newSchemaOrProcedure === 'function';
|
|
11
|
-
const oldSchema = isProcedureSecondArgument
|
|
12
|
-
? emptySchema
|
|
13
|
-
: oldSchemaOrNewSchema;
|
|
14
|
-
const newSchema = isProcedureSecondArgument
|
|
15
|
-
? oldSchemaOrNewSchema
|
|
16
|
-
: newSchemaOrProcedure;
|
|
17
|
-
const procedure = isProcedureSecondArgument
|
|
18
|
-
? newSchemaOrProcedure
|
|
19
|
-
: procedureIfTwoSchemas;
|
|
20
|
-
// diff to determine changed collections
|
|
21
|
-
const changedCollections = Object.keys(newSchema.collections).filter((key) => oldSchema.collections[key] &&
|
|
22
|
-
(0, index_js_1.stableStringify)(oldSchema.collections[key]) !==
|
|
23
|
-
(0, index_js_1.stableStringify)(newSchema.collections[key]));
|
|
24
|
-
const removedCollections = Object.keys(oldSchema.collections).filter((key) => !newSchema.collections[key]);
|
|
25
|
-
const addedCollections = Object.keys(newSchema.collections).filter((key) => !oldSchema.collections[key]);
|
|
26
|
-
// collections which added one or more field defaults
|
|
27
|
-
const autoMigratedCollections = new Set();
|
|
28
|
-
for (const collection of changedCollections) {
|
|
29
|
-
const oldFields = oldSchema.collections[collection].fields;
|
|
30
|
-
const newFields = newSchema.collections[collection].fields;
|
|
31
|
-
// a new default was added - we can auto-migrate it
|
|
32
|
-
if (Object.keys(newFields).some((key) => { var _a, _b; return !((_a = oldFields[key]) === null || _a === void 0 ? void 0 : _a.default) && ((_b = newFields[key]) === null || _b === void 0 ? void 0 : _b.default); })) {
|
|
33
|
-
autoMigratedCollections.add(collection);
|
|
34
|
-
}
|
|
35
|
-
// a field was removed - we can auto-migrate it
|
|
36
|
-
if (Object.keys(oldFields).some((key) => !newFields[key])) {
|
|
37
|
-
autoMigratedCollections.add(collection);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
const addedIndexes = {};
|
|
41
|
-
const removedIndexes = {};
|
|
42
|
-
for (const changed of [...changedCollections, ...addedCollections]) {
|
|
43
|
-
const oldIndexes = getIndexes(oldSchema.collections[changed]);
|
|
44
|
-
const newIndexes = getIndexes(newSchema.collections[changed]);
|
|
45
|
-
const added = newIndexes.filter((index) => !oldIndexes.find((i) => i.name === index.name));
|
|
46
|
-
const removed = oldIndexes.filter((index) => !newIndexes.find((i) => i.name === index.name));
|
|
47
|
-
if (added.length > 0) {
|
|
48
|
-
addedIndexes[changed] = added;
|
|
49
|
-
// FIXME: don't o(n^2) this
|
|
50
|
-
if (changedCollections.includes(changed)) {
|
|
51
|
-
autoMigratedCollections.add(changed);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
if (removed.length > 0) {
|
|
55
|
-
removedIndexes[changed] = removed;
|
|
56
|
-
// FIXME: don't o(n^2) this
|
|
57
|
-
if (changedCollections.includes(changed)) {
|
|
58
|
-
autoMigratedCollections.add(changed);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
const withDefaults = (collectionName, val) => {
|
|
63
|
-
return (0, index_js_1.addFieldDefaults)(newSchema.collections[collectionName], val);
|
|
64
|
-
};
|
|
65
|
-
const autoMigration = (collectionName) => (val) => {
|
|
66
|
-
const collection = newSchema.collections[collectionName];
|
|
67
|
-
return (0, index_js_1.addFieldDefaults)(collection, (0, index_js_1.removeExtraProperties)(collection, val));
|
|
68
|
-
};
|
|
69
|
-
return {
|
|
70
|
-
version: newSchema.version,
|
|
71
|
-
migrate: async (engine) => {
|
|
72
|
-
const migratedCollections = [];
|
|
73
|
-
await procedure({
|
|
74
|
-
migrate: async (collection, strategy) => {
|
|
75
|
-
const auto = autoMigration(collection);
|
|
76
|
-
const wrapped = async (val) => {
|
|
77
|
-
const baseValue = await strategy(val);
|
|
78
|
-
// assign OID from original value in case user's strategy
|
|
79
|
-
// involves cloning
|
|
80
|
-
(0, index_js_1.assignOid)(baseValue, (0, index_js_1.getOid)(val));
|
|
81
|
-
const result = auto(baseValue);
|
|
82
|
-
return result;
|
|
83
|
-
};
|
|
84
|
-
// @ts-ignore
|
|
85
|
-
await engine.migrate(collection, wrapped);
|
|
86
|
-
migratedCollections.push(collection);
|
|
87
|
-
// since the user migrated this one and we wrap their
|
|
88
|
-
// strategy with auto-migration, we can remove it from
|
|
89
|
-
// the auto-migration list
|
|
90
|
-
autoMigratedCollections.delete(collection);
|
|
91
|
-
},
|
|
92
|
-
identity: (val) => val,
|
|
93
|
-
withDefaults,
|
|
94
|
-
info: {
|
|
95
|
-
changedCollections,
|
|
96
|
-
addedCollections,
|
|
97
|
-
removedCollections,
|
|
98
|
-
},
|
|
99
|
-
queries: engine.queries,
|
|
100
|
-
mutations: engine.mutations,
|
|
101
|
-
});
|
|
102
|
-
// mandatory migration of fields which had defaults added or
|
|
103
|
-
// fields removed but weren't migrated by the user
|
|
104
|
-
if (newSchema.version > 1) {
|
|
105
|
-
engine.log('debug', 'auto-migrating collections with new defaults', autoMigratedCollections);
|
|
106
|
-
for (const name of autoMigratedCollections) {
|
|
107
|
-
await engine.migrate(name, autoMigration(name));
|
|
108
|
-
migratedCollections.push(name);
|
|
109
|
-
}
|
|
110
|
-
const unmigrated = changedCollections.filter((collection) => !migratedCollections.includes(collection));
|
|
111
|
-
if (unmigrated.length > 0) {
|
|
112
|
-
// TODO: does this deserve a full-on error?
|
|
113
|
-
console.error(`Unmigrated changed collections from version ${oldSchema.version} to version ${newSchema.version}:`, unmigrated);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
},
|
|
117
|
-
removedCollections,
|
|
118
|
-
addedIndexes,
|
|
119
|
-
removedIndexes,
|
|
120
|
-
allCollections: Object.keys(newSchema.collections),
|
|
121
|
-
changedCollections,
|
|
122
|
-
addedCollections,
|
|
123
|
-
oldCollections: Object.keys(oldSchema.collections),
|
|
124
|
-
oldSchema,
|
|
125
|
-
newSchema,
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
exports.migrate = migrate;
|
|
129
|
-
function migrationRange(from, to) {
|
|
130
|
-
return [...Array(to - from).keys()].map((i) => 1 + i + from);
|
|
131
|
-
}
|
|
132
|
-
exports.migrationRange = migrationRange;
|
|
133
|
-
function getIndexes(collection) {
|
|
134
|
-
if (!collection)
|
|
135
|
-
return [];
|
|
136
|
-
return [
|
|
137
|
-
...Object.keys(collection.indexes || {}).map((key) => ({
|
|
138
|
-
name: key,
|
|
139
|
-
multiEntry: ['array', 'string[]', 'number[]', 'boolean[]'].includes(collection.indexes[key].type),
|
|
140
|
-
synthetic: true,
|
|
141
|
-
compound: false,
|
|
142
|
-
})),
|
|
143
|
-
...Object.keys(collection.compounds || {}).map((key) => ({
|
|
144
|
-
name: key,
|
|
145
|
-
multiEntry: collection.compounds[key].of.some((fieldName) => (collection.fields[fieldName] || collection.indexes[fieldName])
|
|
146
|
-
.type === 'array'),
|
|
147
|
-
synthetic: false,
|
|
148
|
-
compound: true,
|
|
149
|
-
})),
|
|
150
|
-
];
|
|
151
|
-
}
|
|
152
|
-
function createDefaultMigration(schema, newSchema) {
|
|
153
|
-
let oldSchema = newSchema
|
|
154
|
-
? schema
|
|
155
|
-
: {
|
|
156
|
-
version: 0,
|
|
157
|
-
collections: {},
|
|
158
|
-
};
|
|
159
|
-
return migrate(oldSchema, newSchema || schema, async ({ migrate, info }) => {
|
|
160
|
-
if ((newSchema || schema).version === 1)
|
|
161
|
-
return;
|
|
162
|
-
for (const collection of info.changedCollections) {
|
|
163
|
-
// @ts-ignore indefinite type resolution
|
|
164
|
-
await migrate(collection, (old) => old);
|
|
165
|
-
}
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
exports.createDefaultMigration = createDefaultMigration;
|
|
169
|
-
function createMigration(maybeOldSchema, maybeNewSchemaOrProcedure, maybeProcedure) {
|
|
170
|
-
const isProcedureSecondArgument = typeof maybeNewSchemaOrProcedure === 'function' ||
|
|
171
|
-
maybeNewSchemaOrProcedure === undefined;
|
|
172
|
-
const oldSchema = isProcedureSecondArgument ? emptySchema : maybeOldSchema;
|
|
173
|
-
const newSchema = isProcedureSecondArgument
|
|
174
|
-
? maybeOldSchema
|
|
175
|
-
: maybeNewSchemaOrProcedure;
|
|
176
|
-
const procedure = isProcedureSecondArgument
|
|
177
|
-
? maybeNewSchemaOrProcedure
|
|
178
|
-
: maybeProcedure;
|
|
179
|
-
(0, index_js_1.assert)(oldSchema, 'Invalid arguments to createMigration');
|
|
180
|
-
(0, index_js_1.assert)(newSchema, 'Invalid arguments to createMigration');
|
|
181
|
-
const { changedCollections, addedCollections, removedCollections, addedIndexes, removedIndexes, autoMigratedCollections, autoMigration, } = getMigrationInfo(oldSchema, newSchema);
|
|
182
|
-
return {
|
|
183
|
-
version: newSchema.version,
|
|
184
|
-
migrate: async (engine) => {
|
|
185
|
-
const migratedCollections = [];
|
|
186
|
-
const migrate = async (collection, strategy) => {
|
|
187
|
-
const auto = autoMigration(collection);
|
|
188
|
-
const wrapped = async (val) => {
|
|
189
|
-
const baseValue = await strategy(val);
|
|
190
|
-
// assign OID from original value in case user's strategy
|
|
191
|
-
// involves cloning
|
|
192
|
-
(0, index_js_1.assignOid)(baseValue, (0, index_js_1.getOid)(val));
|
|
193
|
-
const result = auto(baseValue);
|
|
194
|
-
const validationError = (0, index_js_1.validateEntity)(newSchema.collections[collection].fields, result);
|
|
195
|
-
if (validationError) {
|
|
196
|
-
// TODO: what? throw?
|
|
197
|
-
}
|
|
198
|
-
return result;
|
|
199
|
-
};
|
|
200
|
-
// @ts-ignore
|
|
201
|
-
await engine.migrate(collection, wrapped);
|
|
202
|
-
migratedCollections.push(collection);
|
|
203
|
-
// since the user migrated this one and we wrap their
|
|
204
|
-
// strategy with auto-migration, we can remove it from
|
|
205
|
-
// the auto-migration list
|
|
206
|
-
autoMigratedCollections.delete(collection);
|
|
207
|
-
};
|
|
208
|
-
await (procedure === null || procedure === void 0 ? void 0 : procedure({
|
|
209
|
-
migrate,
|
|
210
|
-
info: {
|
|
211
|
-
changedCollections,
|
|
212
|
-
addedCollections,
|
|
213
|
-
removedCollections,
|
|
214
|
-
},
|
|
215
|
-
queries: engine.queries,
|
|
216
|
-
mutations: engine.mutations,
|
|
217
|
-
}));
|
|
218
|
-
// mandatory migration of fields which had defaults added or
|
|
219
|
-
// fields removed but weren't migrated by the user
|
|
220
|
-
if (newSchema.version > 1) {
|
|
221
|
-
engine.log('debug', 'auto-migrating collections with new defaults', autoMigratedCollections);
|
|
222
|
-
for (const name of autoMigratedCollections) {
|
|
223
|
-
await engine.migrate(name, autoMigration(name));
|
|
224
|
-
migratedCollections.push(name);
|
|
225
|
-
}
|
|
226
|
-
// delete all documents in deleted collections
|
|
227
|
-
for (const name of removedCollections) {
|
|
228
|
-
await engine.deleteCollection(name);
|
|
229
|
-
}
|
|
230
|
-
const unmigrated = changedCollections.filter((collection) => !migratedCollections.includes(collection));
|
|
231
|
-
if (unmigrated.length > 0) {
|
|
232
|
-
// TODO: does this deserve a full-on error?
|
|
233
|
-
console.error(`Unmigrated changed collections from version ${oldSchema.version} to version ${newSchema.version}:`, unmigrated);
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
},
|
|
237
|
-
removedCollections,
|
|
238
|
-
addedIndexes,
|
|
239
|
-
removedIndexes,
|
|
240
|
-
allCollections: Object.keys(newSchema.collections),
|
|
241
|
-
changedCollections,
|
|
242
|
-
addedCollections,
|
|
243
|
-
oldCollections: Object.keys(oldSchema.collections),
|
|
244
|
-
oldSchema,
|
|
245
|
-
newSchema,
|
|
246
|
-
};
|
|
247
|
-
}
|
|
248
|
-
exports.createMigration = createMigration;
|
|
249
|
-
// common tools
|
|
250
|
-
function getMigrationInfo(oldSchema, newSchema) {
|
|
251
|
-
const changedCollections = Object.keys(newSchema.collections).filter((key) => oldSchema.collections[key] &&
|
|
252
|
-
(0, index_js_1.stableStringify)(oldSchema.collections[key]) !==
|
|
253
|
-
(0, index_js_1.stableStringify)(newSchema.collections[key]));
|
|
254
|
-
const removedCollections = Object.keys(oldSchema.collections).filter((key) => !newSchema.collections[key]);
|
|
255
|
-
const addedCollections = Object.keys(newSchema.collections).filter((key) => !oldSchema.collections[key]);
|
|
256
|
-
// collections which added one or more field defaults
|
|
257
|
-
const autoMigratedCollections = new Set();
|
|
258
|
-
for (const collection of changedCollections) {
|
|
259
|
-
const oldFields = oldSchema.collections[collection].fields;
|
|
260
|
-
const newFields = newSchema.collections[collection].fields;
|
|
261
|
-
// a new default was added - we can auto-migrate it
|
|
262
|
-
if (Object.keys(newFields).some((key) => !(0, index_js_1.hasDefault)(oldFields[key]) && (0, index_js_1.hasDefault)(newFields[key]))) {
|
|
263
|
-
autoMigratedCollections.add(collection);
|
|
264
|
-
}
|
|
265
|
-
// a field was removed - we can auto-migrate it
|
|
266
|
-
if (Object.keys(oldFields).some((key) => !newFields[key])) {
|
|
267
|
-
autoMigratedCollections.add(collection);
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
const addedIndexes = {};
|
|
271
|
-
const removedIndexes = {};
|
|
272
|
-
for (const changed of [...changedCollections, ...addedCollections]) {
|
|
273
|
-
const oldIndexes = getIndexes(oldSchema.collections[changed]);
|
|
274
|
-
const newIndexes = getIndexes(newSchema.collections[changed]);
|
|
275
|
-
const added = newIndexes.filter((index) => !oldIndexes.find((i) => i.name === index.name));
|
|
276
|
-
const removed = oldIndexes.filter((index) => !newIndexes.find((i) => i.name === index.name));
|
|
277
|
-
if (added.length > 0) {
|
|
278
|
-
addedIndexes[changed] = added;
|
|
279
|
-
// FIXME: don't o(n^2) this
|
|
280
|
-
if (changedCollections.includes(changed)) {
|
|
281
|
-
autoMigratedCollections.add(changed);
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
if (removed.length > 0) {
|
|
285
|
-
removedIndexes[changed] = removed;
|
|
286
|
-
// FIXME: don't o(n^2) this
|
|
287
|
-
if (changedCollections.includes(changed)) {
|
|
288
|
-
autoMigratedCollections.add(changed);
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
const withDefaults = (collectionName, val) => {
|
|
293
|
-
return (0, index_js_1.addFieldDefaults)(newSchema.collections[collectionName], val);
|
|
294
|
-
};
|
|
295
|
-
const autoMigration = (collectionName) => (val) => {
|
|
296
|
-
const collection = newSchema.collections[collectionName];
|
|
297
|
-
return (0, index_js_1.addFieldDefaults)(collection, (0, index_js_1.removeExtraProperties)(collection, val));
|
|
298
|
-
};
|
|
299
|
-
return {
|
|
300
|
-
changedCollections,
|
|
301
|
-
addedCollections,
|
|
302
|
-
removedCollections,
|
|
303
|
-
addedIndexes,
|
|
304
|
-
removedIndexes,
|
|
305
|
-
autoMigratedCollections,
|
|
306
|
-
withDefaults,
|
|
307
|
-
autoMigration,
|
|
308
|
-
};
|
|
309
|
-
}
|
|
310
|
-
//# sourceMappingURL=migration.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migration.js","sourceRoot":"","sources":["../../src/migration.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/oids.d.ts
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { ObjectRef } from './operation.js';
|
|
2
|
-
/**
|
|
3
|
-
* OIDs
|
|
4
|
-
*
|
|
5
|
-
* OIDs are used to identify objects in the document. They also encode
|
|
6
|
-
* information about the object useful to identifying an object found
|
|
7
|
-
* on its own and associating it back to its parent.
|
|
8
|
-
*
|
|
9
|
-
* An OID is structured as such:
|
|
10
|
-
* <collection>/<root id>[/<key paths>]:<random>
|
|
11
|
-
*
|
|
12
|
-
* OIDs have a few characteristics:
|
|
13
|
-
* - They include the collection name of the parent document
|
|
14
|
-
* - They include the primary key of the parent document
|
|
15
|
-
* - They include the key path of the object within the document
|
|
16
|
-
* - They include a random sequence to identify different objects which
|
|
17
|
-
* exist at the same key path
|
|
18
|
-
*
|
|
19
|
-
* Collection name and document key are used to link any isolated
|
|
20
|
-
* object back to its parent document.
|
|
21
|
-
*
|
|
22
|
-
* The key path is used for authorization - to associate the object
|
|
23
|
-
* (or an operation related to it by OID) with the field it inhabits
|
|
24
|
-
* to utilize authorization rules from that field in the schema.
|
|
25
|
-
*
|
|
26
|
-
* The random sequence allows the application to encode different
|
|
27
|
-
* identities for objects at the same position in a document for
|
|
28
|
-
* conflict resolution purposes
|
|
29
|
-
*/
|
|
30
|
-
export declare type ObjectIdentifier = string;
|
|
31
|
-
export declare const LEGACY_OID_KEY = "__@@oid_do_not_use";
|
|
32
|
-
export declare const OID_KEY = "@@id";
|
|
33
|
-
export declare function getOid(obj: any): string;
|
|
34
|
-
export declare function maybeGetOid(obj: any): ObjectIdentifier | undefined;
|
|
35
|
-
export declare function assignOid(obj: any, oid: ObjectIdentifier): any;
|
|
36
|
-
export declare function hasOid(obj: any): boolean;
|
|
37
|
-
export declare function removeOid(obj: any): any;
|
|
38
|
-
export declare function isOidKey(key: string): boolean;
|
|
39
|
-
/**
|
|
40
|
-
* For sub-objects, assign a random sub-OID if no OID
|
|
41
|
-
* is already assigned.
|
|
42
|
-
*/
|
|
43
|
-
export declare function ensureOid(obj: any, rootOid: ObjectIdentifier, createSubId?: () => string): string;
|
|
44
|
-
export declare function ensureCompatibleOid(obj: any, rootOid: ObjectIdentifier, createSubId?: () => string): string;
|
|
45
|
-
export declare function createOid(collection: string, documentId: string, subId?: string): string;
|
|
46
|
-
export declare function createSubOid(root: ObjectIdentifier, createSubId?: () => string): string;
|
|
47
|
-
export declare function decomposeOid(oid: ObjectIdentifier): {
|
|
48
|
-
collection: string;
|
|
49
|
-
id: string;
|
|
50
|
-
subId?: string;
|
|
51
|
-
};
|
|
52
|
-
export declare function assertAllLevelsHaveOids(obj: any, root?: any): void;
|
|
53
|
-
export declare function assignOidsToAllSubObjects(obj: any, createSubId?: () => string): void;
|
|
54
|
-
export declare function assignOidProperty(obj: any, oid: ObjectIdentifier): any;
|
|
55
|
-
export declare function maybeGetOidProperty(obj: any): any;
|
|
56
|
-
/**
|
|
57
|
-
* Assigns a special property to all objects in the given object
|
|
58
|
-
* which have an OID
|
|
59
|
-
*/
|
|
60
|
-
export declare function assignOidPropertiesToAllSubObjects(obj: any): void;
|
|
61
|
-
/**
|
|
62
|
-
*
|
|
63
|
-
* Removes the special property from all objects in the given object
|
|
64
|
-
* which have an OID, transferring the OID from the property to the OID
|
|
65
|
-
* system in-memory.
|
|
66
|
-
*/
|
|
67
|
-
export declare function removeOidPropertiesFromAllSubObjects(obj: any): void;
|
|
68
|
-
export declare function removeOidsFromAllSubObjects(obj: any): void;
|
|
69
|
-
export declare function createOidSubId(): string;
|
|
70
|
-
export declare function createRef(oid: ObjectIdentifier): ObjectRef;
|
|
71
|
-
export declare function normalize(obj: any, refs?: Map<ObjectIdentifier, any>): Map<ObjectIdentifier, any>;
|
|
72
|
-
/**
|
|
73
|
-
* Only normalizes direct children. The created map
|
|
74
|
-
* of objects will still have nested objects.
|
|
75
|
-
*/
|
|
76
|
-
export declare function normalizeFirstLevel(obj: any): {
|
|
77
|
-
refs: Map<string, any>;
|
|
78
|
-
oidKeyPairs: Map<string, string | number>;
|
|
79
|
-
};
|
|
80
|
-
export declare function getOidRoot(oid: ObjectIdentifier): string;
|
|
81
|
-
/**
|
|
82
|
-
* Returns an inclusive range of OIDs that represent
|
|
83
|
-
* all of an OID's possible sub-objects.
|
|
84
|
-
*/
|
|
85
|
-
export declare function getOidSubIdRange(oid: ObjectIdentifier): string[];
|
|
86
|
-
export declare function getLegacyDotOidSubIdRange(oid: ObjectIdentifier): string[];
|
|
87
|
-
export declare function getRoots(oids: ObjectIdentifier[]): string[];
|
|
88
|
-
export declare function areOidsRelated(oidA: ObjectIdentifier, oidB: ObjectIdentifier): boolean;
|
|
89
|
-
/**
|
|
90
|
-
* Recursively rewrites any OIDs in an object which are 'foreign' -
|
|
91
|
-
* i.e. relate to some other object/entity - to be local to the
|
|
92
|
-
* current object. This is deterministic, so it can be done
|
|
93
|
-
* on multiple clients independently with predictable results.
|
|
94
|
-
*/
|
|
95
|
-
export declare function fixForeignOids(obj: any): void;
|
|
96
|
-
export declare function isLegacyDotOid(oid: ObjectIdentifier): boolean;
|
|
97
|
-
export declare function convertLegacyOid(oid: ObjectIdentifier): string;
|
|
98
|
-
export declare const MATCH_LEGACY_OID_JSON_STRING: RegExp;
|
|
99
|
-
export declare function replaceLegacyOidsInJsonString(string: string): string;
|
|
100
|
-
export declare function replaceLegacyOidsInObject(obj: any): any;
|
|
101
|
-
export declare function isRootOid(oid: ObjectIdentifier): boolean;
|