@verdant-web/common 2.8.0 → 2.9.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/authz.js.map +1 -1
- package/dist/esm/baseline.d.ts +2 -1
- package/dist/esm/diffing.d.ts +3 -2
- package/dist/esm/diffing.js +79 -19
- package/dist/esm/diffing.js.map +1 -1
- package/dist/esm/diffing.test.js +967 -183
- package/dist/esm/diffing.test.js.map +1 -1
- package/dist/esm/oids.d.ts +5 -0
- package/dist/esm/oids.js +23 -1
- package/dist/esm/oids.js.map +1 -1
- package/dist/esm/operation.d.ts +5 -4
- package/dist/esm/operation.js +4 -4
- package/dist/esm/operation.js.map +1 -1
- package/dist/esm/patch.d.ts +17 -13
- package/dist/esm/patch.js +42 -6
- package/dist/esm/patch.js.map +1 -1
- package/dist/esm/schema/validation.d.ts +8 -1
- package/dist/esm/schema/validation.js +133 -63
- package/dist/esm/schema/validation.js.map +1 -1
- package/dist/esm/schema/validation.test.d.ts +1 -0
- package/dist/esm/schema/validation.test.js +60 -0
- package/dist/esm/schema/validation.test.js.map +1 -0
- package/dist/esm/undo.d.ts +2 -1
- package/dist/esm/undo.js +52 -158
- package/dist/esm/undo.js.map +1 -1
- package/dist/esm/undo.test.js +68 -7
- package/dist/esm/undo.test.js.map +1 -1
- package/package.json +1 -1
- package/src/authz.ts +2 -0
- package/src/baseline.ts +3 -1
- package/src/diffing.test.ts +1089 -225
- package/src/diffing.ts +99 -22
- package/src/oids.ts +23 -1
- package/src/operation.ts +9 -8
- package/src/patch.ts +92 -17
- package/src/schema/validation.test.ts +66 -0
- package/src/schema/validation.ts +156 -73
- package/src/undo.test.ts +87 -8
- package/src/undo.ts +83 -157
package/dist/esm/authz.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authz.js","sourceRoot":"","sources":["../../src/authz.ts"],"names":[],"mappings":"AAGA,SAAS,MAAM,CAAC,GAAW;IAC1B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChD,OAAO,GAAuB,CAAC;IAChC,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,GAAuB,CAAC;AAChC,CAAC;AAED,SAAS,MAAM,CAAC,GAAW;IAC1B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC;
|
|
1
|
+
{"version":3,"file":"authz.js","sourceRoot":"","sources":["../../src/authz.ts"],"names":[],"mappings":"AAGA,SAAS,MAAM,CAAC,GAAW;IAC1B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChD,OAAO,GAAuB,CAAC;IAChC,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,GAAuB,CAAC;AAChC,CAAC;AAED,SAAS,MAAM,CAAC,GAAW;IAC1B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC;AAQD,MAAM,CAAC,MAAM,KAAK,GAAG;IACpB,QAAQ,EAAE,CAAC,MAAc,EAAoB,EAAE,CAAC,MAAM,CAAC,KAAK,MAAM,IAAI,CAAC;IACvE,MAAM,EAAE,GAAqB,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAClE,MAAM,EAAE,CAAC,OAAe,EAAE,EAAE;QAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACzC,CAAC;QACD,OAAO;YACN,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YACf,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;YACjB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;SAChB,CAAC;IACH,CAAC;CACD,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC;AAErD;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACrC,IAAkE,EAClE,UAAkB;IAElB,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IACvC,IAAI,UAAU,EAAE,CAAC;QAChB,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;YAC7B,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;gBACd,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;gBACvC,IAAI,OAAO,CAAC,OAAO,KAAK,kBAAkB,EAAE,CAAC;oBAC5C,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACvC,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IACD,IAAI,SAAS,EAAE,CAAC;QACf,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACpB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC7C,IAAI,OAAO,CAAC,OAAO,KAAK,kBAAkB,EAAE,CAAC;oBAC5C,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAC7C,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;AACF,CAAC"}
|
package/dist/esm/baseline.d.ts
CHANGED
package/dist/esm/diffing.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AuthorizationKey } from './authz.js';
|
|
1
2
|
import { Operation } from './operation.js';
|
|
2
3
|
import { PatchCreator } from './patch.js';
|
|
3
4
|
export type DiffContext = {
|
|
@@ -15,7 +16,7 @@ export type DiffContext = {
|
|
|
15
16
|
/**
|
|
16
17
|
* Authorization to apply to all created operations
|
|
17
18
|
*/
|
|
18
|
-
authz?:
|
|
19
|
+
authz?: AuthorizationKey;
|
|
19
20
|
patchCreator: PatchCreator;
|
|
20
21
|
};
|
|
21
22
|
export declare function diffToPatches(from: any, to: any, getNow: () => string, createSubId?: () => string, _?: any, // legacy, TODO: remove
|
|
@@ -24,7 +25,7 @@ options?: {
|
|
|
24
25
|
merge?: boolean;
|
|
25
26
|
/** @deprecated - use 'merge' */
|
|
26
27
|
defaultUndefined?: boolean;
|
|
27
|
-
authz?:
|
|
28
|
+
authz?: AuthorizationKey;
|
|
28
29
|
}): Operation[];
|
|
29
30
|
export declare function diff(from: any, to: any, ctx: DiffContext): void;
|
|
30
31
|
/**
|
package/dist/esm/diffing.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { VerdantError } from './error.js';
|
|
2
|
-
import { areOidsRelated, assignOid, getOid, maybeGetOid, } from './oids.js';
|
|
2
|
+
import { areOidsRelated, assignOid, createRef, getOid, maybeGetOid, } from './oids.js';
|
|
3
3
|
import { isOidKey } from './oidsLegacy.js';
|
|
4
4
|
import { PatchCreator } from './patch.js';
|
|
5
5
|
import { compareRefs, isRef } from './refs.js';
|
|
@@ -39,19 +39,11 @@ function enforceAssignedOid(parentOid, newObject, existingObjectOid, ctx) {
|
|
|
39
39
|
assignOid(newObject, existingObjectOid);
|
|
40
40
|
}
|
|
41
41
|
// NOTE: new OID assignments are done in patchCreator.
|
|
42
|
-
// else {
|
|
43
|
-
// assignOid(
|
|
44
|
-
// newObject,
|
|
45
|
-
// createSubOid(parentOid, ctx.patchCreator.createSubId),
|
|
46
|
-
// );
|
|
47
|
-
// }
|
|
48
42
|
}
|
|
49
43
|
else if (!areOidsRelated(parentOid, oid)) {
|
|
50
44
|
// when there's any doubt, clone the whole object. false -> do not copy OIDs
|
|
51
45
|
const clone = cloneDeep(newObject, false);
|
|
52
46
|
// NOTE: new OID assignments are done in patchCreator.
|
|
53
|
-
// const cloneOid = createSubOid(parentOid, ctx.patchCreator.createSubId);
|
|
54
|
-
// assignOid(clone, cloneOid);
|
|
55
47
|
return clone;
|
|
56
48
|
}
|
|
57
49
|
return newObject;
|
|
@@ -94,7 +86,17 @@ export function diffLists(from, to, ctx) {
|
|
|
94
86
|
// from object must be registered with an OID.
|
|
95
87
|
const oid = getOid(from);
|
|
96
88
|
// this copy will be mutated to align with inserts, making things easier to compare.
|
|
97
|
-
const fromCopy = [
|
|
89
|
+
const fromCopy = [];
|
|
90
|
+
// while iterating from, also collect some metadata.
|
|
91
|
+
const oidsInFrom = new Set();
|
|
92
|
+
for (let i = 0; i < from.length; i++) {
|
|
93
|
+
const value = from[i];
|
|
94
|
+
fromCopy[i] = value;
|
|
95
|
+
const oid = maybeGetOid(value);
|
|
96
|
+
if (oid) {
|
|
97
|
+
oidsInFrom.add(oid);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
98
100
|
// first, normalize incoming data according to OID rules. this is done early
|
|
99
101
|
// so future equality checks are according to configuration like mergeUnknownObjects.
|
|
100
102
|
// for example, if a bare (no oid) object is supplied for an item and mergeUnknownObjects
|
|
@@ -108,12 +110,17 @@ export function diffLists(from, to, ctx) {
|
|
|
108
110
|
// track whether the new list has gaps in it. a gap
|
|
109
111
|
// means we can no longer use list-push for new items.
|
|
110
112
|
let noGaps = true;
|
|
113
|
+
// track any items we move by reference, so we remember to
|
|
114
|
+
// not delete them later.
|
|
115
|
+
const movedItems = new Set();
|
|
116
|
+
const overwrittenItems = new Set();
|
|
111
117
|
for (let i = 0; i < to.length; i++) {
|
|
112
118
|
const value = to[i];
|
|
113
119
|
const oldValue = fromCopy[i];
|
|
114
120
|
if (value === undefined) {
|
|
115
121
|
noGaps = false;
|
|
116
122
|
}
|
|
123
|
+
const itemOid = maybeGetOid(value);
|
|
117
124
|
// we decide if this item is being added to the end of the list if:
|
|
118
125
|
// - there were no empty spaces before it in the new list
|
|
119
126
|
// - the index is beyond the scope of the original list.
|
|
@@ -122,13 +129,42 @@ export function diffLists(from, to, ctx) {
|
|
|
122
129
|
// defined item even if gaps were there previously. we don't want to
|
|
123
130
|
// accidentally 'push' into a gap, which would put the item in the wrong place.
|
|
124
131
|
const isEndOfList = noGaps && i >= fromCopy.length;
|
|
125
|
-
|
|
132
|
+
// this branch exclusively deals with object references.
|
|
133
|
+
if (itemOid && oidsInFrom.has(itemOid)) {
|
|
134
|
+
// this item was in the old list, so no matter what we want to
|
|
135
|
+
// preserve its identity. the rest of the branches here all
|
|
136
|
+
// assume the item is new and initialize it.
|
|
137
|
+
if (areTheSameIdentity(value, oldValue)) {
|
|
138
|
+
// the item hasn't moved. we just diff it in place.
|
|
139
|
+
diff(oldValue, value, ctx);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
// the item has moved. we are currently visiting its new index,
|
|
143
|
+
// so we can move it by reference now
|
|
144
|
+
ctx.patches.push(...ctx.patchCreator.createListMoveByRef(oid, createRef(itemOid), i, ctx.authz));
|
|
145
|
+
// the problem is, a move by ref is not the same as what
|
|
146
|
+
// we really observed here, since it's more like an insertion
|
|
147
|
+
// and not an overwrite. to complicate this, the replaced item
|
|
148
|
+
// at this index might actually have moved, not been replaced.
|
|
149
|
+
// we mark the item that was at this index previously, and if
|
|
150
|
+
// we don't see it later, we'll delete it.
|
|
151
|
+
const fromOid = maybeGetOid(oldValue);
|
|
152
|
+
if (fromOid) {
|
|
153
|
+
overwrittenItems.add(fromOid);
|
|
154
|
+
}
|
|
155
|
+
// remember this item so we don't delete it later.
|
|
156
|
+
movedItems.add(itemOid);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
else if (isEndOfList) {
|
|
126
160
|
// this will initialize all sub-objects in the item, too
|
|
127
161
|
ctx.patches.push(...ctx.patchCreator.createListPush(oid, value, ctx.authz));
|
|
128
162
|
}
|
|
129
163
|
else if (areTheSameIdentity(value, oldValue)) {
|
|
130
|
-
//
|
|
131
|
-
//
|
|
164
|
+
// note : since the branch above covers object references which
|
|
165
|
+
// were present in the original list, logically this branch only
|
|
166
|
+
// covers primitives. either way, call diff, it's just more
|
|
167
|
+
// proper to do so.
|
|
132
168
|
diff(oldValue, value, ctx);
|
|
133
169
|
}
|
|
134
170
|
else {
|
|
@@ -160,18 +196,42 @@ export function diffLists(from, to, ctx) {
|
|
|
160
196
|
}
|
|
161
197
|
}
|
|
162
198
|
}
|
|
163
|
-
// remove any remaining items at the end of the array
|
|
199
|
+
// remove any remaining items at the end of the array.
|
|
164
200
|
const deletedItemsAtEnd = fromCopy.length - to.length;
|
|
165
201
|
if (deletedItemsAtEnd > 0) {
|
|
202
|
+
for (let i = fromCopy.length - 1; i >= to.length; i--) {
|
|
203
|
+
const value = fromCopy[i];
|
|
204
|
+
const itemOid = maybeGetOid(value);
|
|
205
|
+
if (itemOid) {
|
|
206
|
+
// avoid deleting moved objects that were at the end of the list before.
|
|
207
|
+
// their reference was moved elsewhere, but their contents must be retained.
|
|
208
|
+
if (!movedItems.has(itemOid)) {
|
|
209
|
+
// if sub-items were objects, we need to delete them all
|
|
210
|
+
// this should recursively delete children of these items
|
|
211
|
+
// also!
|
|
212
|
+
deleteWithSubObjects(value, ctx);
|
|
213
|
+
ctx.patches.push(...ctx.patchCreator.createListRemove(oid, createRef(itemOid), 'last', ctx.authz));
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
ctx.patches.push(...ctx.patchCreator.createListRemove(oid, value, 'last', ctx.authz));
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
for (const overwrittenOid of overwrittenItems) {
|
|
222
|
+
if (movedItems.has(overwrittenOid)) {
|
|
223
|
+
// this item was moved, not overwritten. we don't want to delete it.
|
|
224
|
+
continue;
|
|
225
|
+
}
|
|
226
|
+
// this item was overwritten, not moved. we need to delete it.
|
|
166
227
|
// if sub-items were objects, we need to delete them all
|
|
167
228
|
// this should recursively delete children of these items
|
|
168
229
|
// also!
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
deleteWithSubObjects(
|
|
230
|
+
const item = from.find((x) => maybeGetOid(x) === overwrittenOid);
|
|
231
|
+
if (item) {
|
|
232
|
+
deleteWithSubObjects(item, ctx);
|
|
172
233
|
}
|
|
173
|
-
|
|
174
|
-
ctx.patches.push(...ctx.patchCreator.createListDelete(oid, to.length, deletedItemsAtEnd, ctx.authz));
|
|
234
|
+
ctx.patches.push(...ctx.patchCreator.createListRemove(oid, createRef(overwrittenOid), 'last', ctx.authz));
|
|
175
235
|
}
|
|
176
236
|
}
|
|
177
237
|
export function diffObjects(from, to, ctx) {
|
package/dist/esm/diffing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diffing.js","sourceRoot":"","sources":["../../src/diffing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"diffing.js","sourceRoot":"","sources":["../../src/diffing.ts"],"names":[],"mappings":"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"}
|