document-model 2.22.0 → 2.23.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/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/src/document/actions/creators.d.ts +2 -2
- package/dist/src/document/actions/creators.d.ts.map +1 -1
- package/dist/src/document/actions/operations.d.ts +2 -2
- package/dist/src/document/actions/operations.d.ts.map +1 -1
- package/dist/src/document/object.d.ts +2 -2
- package/dist/src/document/object.d.ts.map +1 -1
- package/dist/src/document/reducer.d.ts +2 -2
- package/dist/src/document/reducer.d.ts.map +1 -1
- package/dist/src/document/schema/types.d.ts +1 -1
- package/dist/src/document/schema/types.d.ts.map +1 -1
- package/dist/src/document/schema/zod.d.ts +2 -2
- package/dist/src/document/schema/zod.d.ts.map +1 -1
- package/dist/src/document/signal.d.ts +1 -1
- package/dist/src/document/signal.d.ts.map +1 -1
- package/dist/src/document/types.d.ts +4 -4
- package/dist/src/document/types.d.ts.map +1 -1
- package/dist/src/document/utils/base.d.ts +3 -3
- package/dist/src/document/utils/base.d.ts.map +1 -1
- package/dist/src/document/utils/crypto.d.ts +1 -1
- package/dist/src/document/utils/crypto.d.ts.map +1 -1
- package/dist/src/document/utils/document-helpers.d.ts +1 -1
- package/dist/src/document/utils/document-helpers.d.ts.map +1 -1
- package/dist/src/document/utils/errors.d.ts +1 -1
- package/dist/src/document/utils/errors.d.ts.map +1 -1
- package/dist/src/document/utils/file.d.ts +3 -3
- package/dist/src/document/utils/file.d.ts.map +1 -1
- package/dist/src/document/utils/node.d.ts +1 -1
- package/dist/src/document/utils/node.d.ts.map +1 -1
- package/dist/src/document/utils/validation.d.ts +1 -1
- package/dist/src/document/utils/validation.d.ts.map +1 -1
- package/dist/src/document-model/custom/reducers/header.d.ts +1 -1
- package/dist/src/document-model/custom/reducers/header.d.ts.map +1 -1
- package/dist/src/document-model/custom/reducers/module.d.ts +1 -1
- package/dist/src/document-model/custom/reducers/module.d.ts.map +1 -1
- package/dist/src/document-model/custom/reducers/operation-error.d.ts +1 -1
- package/dist/src/document-model/custom/reducers/operation-error.d.ts.map +1 -1
- package/dist/src/document-model/custom/reducers/operation-example.d.ts +1 -1
- package/dist/src/document-model/custom/reducers/operation-example.d.ts.map +1 -1
- package/dist/src/document-model/custom/reducers/operation.d.ts +1 -1
- package/dist/src/document-model/custom/reducers/operation.d.ts.map +1 -1
- package/dist/src/document-model/custom/reducers/state.d.ts +1 -1
- package/dist/src/document-model/custom/reducers/state.d.ts.map +1 -1
- package/dist/src/document-model/custom/reducers/versioning.d.ts +1 -1
- package/dist/src/document-model/custom/reducers/versioning.d.ts.map +1 -1
- package/dist/src/document-model/custom/utils.d.ts +2 -2
- package/dist/src/document-model/custom/utils.d.ts.map +1 -1
- package/dist/src/document-model/types.d.ts +2 -2
- package/dist/src/document-model/types.d.ts.map +1 -1
- package/dist/test/document/utils.test.js +1 -1
- package/dist/test/document-helpers/utils.d.ts +1 -1
- package/dist/test/document-helpers/utils.d.ts.map +1 -1
- package/dist/test/document-model/replay.test.js +8 -1
- package/dist/test/document-model/skip-operations.test.js +15 -12
- package/dist/test/document-model/validation.test.js +1 -1
- package/dist/test/document-model/zip.test.js +1 -2
- package/dist/test/helpers.d.ts +1 -1
- package/dist/test/helpers.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -3
|
@@ -11,6 +11,7 @@ describe("DocumentModel Class", () => {
|
|
|
11
11
|
documentType: "",
|
|
12
12
|
created: "",
|
|
13
13
|
lastModified: "",
|
|
14
|
+
meta: {},
|
|
14
15
|
state: {
|
|
15
16
|
global: {
|
|
16
17
|
count: 0,
|
|
@@ -30,6 +31,7 @@ describe("DocumentModel Class", () => {
|
|
|
30
31
|
documentType: "",
|
|
31
32
|
created: "",
|
|
32
33
|
lastModified: "",
|
|
34
|
+
meta: {},
|
|
33
35
|
state: {
|
|
34
36
|
global: {
|
|
35
37
|
count: 0,
|
|
@@ -79,12 +81,17 @@ describe("DocumentModel Class", () => {
|
|
|
79
81
|
reuseOperationResultingState: true,
|
|
80
82
|
});
|
|
81
83
|
newDocument = reducer(newDocument, increment());
|
|
84
|
+
// path resulting state so it is reused
|
|
85
|
+
const lastOperation = newDocument.operations.global.at(-1);
|
|
86
|
+
if (lastOperation) {
|
|
87
|
+
lastOperation.resultingState = JSON.stringify(newDocument.state.global);
|
|
88
|
+
}
|
|
82
89
|
newDocument = reducer(newDocument, increment());
|
|
83
90
|
newDocument = reducer(newDocument, noop(), undefined, {
|
|
84
91
|
skip: 1,
|
|
85
92
|
reuseOperationResultingState: true,
|
|
86
93
|
});
|
|
87
|
-
expect(mockReducer).toHaveBeenCalledTimes(
|
|
94
|
+
expect(mockReducer).toHaveBeenCalledTimes(4);
|
|
88
95
|
expect(newDocument.state.global.count).toBe(2);
|
|
89
96
|
});
|
|
90
97
|
it("should replay document", () => {
|
|
@@ -13,7 +13,10 @@ describe("Document Operations", () => {
|
|
|
13
13
|
document = reducer(document, setModelExtension({ extension: "phdm" }));
|
|
14
14
|
document = reducer(document, setAuthorName({ authorName: "<authorName>" }));
|
|
15
15
|
document = reducer(document, setAuthorWebsite({ authorWebsite: "<authorWebsite>" }));
|
|
16
|
-
expect(document.revision).
|
|
16
|
+
expect(document.revision).toStrictEqual({
|
|
17
|
+
global: 6,
|
|
18
|
+
local: 0,
|
|
19
|
+
});
|
|
17
20
|
document.operations.global.forEach((op) => {
|
|
18
21
|
expect(op).toHaveProperty("skip", 0);
|
|
19
22
|
});
|
|
@@ -29,7 +32,7 @@ describe("Document Operations", () => {
|
|
|
29
32
|
document = reducer(document, setModelExtension({ extension: "phdm" }), undefined, { skip: 4, ignoreSkipOperations: true });
|
|
30
33
|
document = reducer(document, setAuthorName({ authorName: "<authorName>" }), undefined, { skip: 5, ignoreSkipOperations: true });
|
|
31
34
|
document = reducer(document, setAuthorWebsite({ authorWebsite: "<authorWebsite>" }), undefined, { skip: 6, ignoreSkipOperations: true });
|
|
32
|
-
expect(document.revision).toBe(6);
|
|
35
|
+
expect(document.revision.global).toBe(6);
|
|
33
36
|
document.operations.global.forEach((op, index) => {
|
|
34
37
|
expect(op).toHaveProperty("skip", index + 1);
|
|
35
38
|
});
|
|
@@ -43,7 +46,7 @@ describe("Document Operations", () => {
|
|
|
43
46
|
document = reducer(document, setModelDescription({ description: "<description>" }));
|
|
44
47
|
document = reducer(document, setModelExtension({ extension: "phdm" }));
|
|
45
48
|
document = reducer(document, setAuthorName({ authorName: "<authorName>" }));
|
|
46
|
-
expect(document.revision).toBe(5);
|
|
49
|
+
expect(document.revision.global).toBe(5);
|
|
47
50
|
document.operations.global.forEach((op) => {
|
|
48
51
|
expect(op).toHaveProperty("skip", 0);
|
|
49
52
|
});
|
|
@@ -58,7 +61,7 @@ describe("Document Operations", () => {
|
|
|
58
61
|
document = reducer(document, setModelDescription({ description: "<description>" }), undefined, { skip: 3, ignoreSkipOperations: true });
|
|
59
62
|
document = reducer(document, setModelExtension({ extension: "phdm" }), undefined, { skip: 4, ignoreSkipOperations: true });
|
|
60
63
|
document = reducer(document, setAuthorName({ authorName: "<authorName>" }), undefined, { skip: 5, ignoreSkipOperations: true });
|
|
61
|
-
expect(document.revision).toBe(5);
|
|
64
|
+
expect(document.revision.global).toBe(5);
|
|
62
65
|
document.operations.global.forEach((op, index) => {
|
|
63
66
|
expect(op).toHaveProperty("skip", index + 1);
|
|
64
67
|
});
|
|
@@ -74,7 +77,7 @@ describe("Document Operations", () => {
|
|
|
74
77
|
document = reducer(document, setAuthorName({ authorName: "<authorName>" }));
|
|
75
78
|
document = reducer(document, setAuthorWebsite({ authorWebsite: "<authorWebsite>" }));
|
|
76
79
|
document = reducer(document, setModelId({ id: "<id2>" }));
|
|
77
|
-
expect(document.revision).toBe(7);
|
|
80
|
+
expect(document.revision.global).toBe(7);
|
|
78
81
|
document.operations.global.forEach((op) => {
|
|
79
82
|
expect(op).toHaveProperty("skip", 0);
|
|
80
83
|
});
|
|
@@ -94,7 +97,7 @@ describe("Document Operations", () => {
|
|
|
94
97
|
skip: 7,
|
|
95
98
|
ignoreSkipOperations: true,
|
|
96
99
|
});
|
|
97
|
-
expect(document.revision).toBe(7);
|
|
100
|
+
expect(document.revision.global).toBe(7);
|
|
98
101
|
document.operations.global.forEach((op, index) => {
|
|
99
102
|
expect(op).toHaveProperty("skip", index + 1);
|
|
100
103
|
});
|
|
@@ -108,7 +111,7 @@ describe("Document Operations", () => {
|
|
|
108
111
|
document = reducer(document, setModelDescription({ description: "<description>" }));
|
|
109
112
|
document = reducer(document, setModelExtension({ extension: "phdm" }));
|
|
110
113
|
document = reducer(document, setAuthorName({ authorName: "<authorName>" }));
|
|
111
|
-
expect(document.revision).toBe(5);
|
|
114
|
+
expect(document.revision.global).toBe(5);
|
|
112
115
|
document.operations.global.forEach((op) => {
|
|
113
116
|
expect(op).toHaveProperty("skip", 0);
|
|
114
117
|
});
|
|
@@ -123,7 +126,7 @@ describe("Document Operations", () => {
|
|
|
123
126
|
document = reducer(document, setModelDescription({ description: "<description>" }), undefined, { skip: 3, ignoreSkipOperations: true });
|
|
124
127
|
document = reducer(document, setModelExtension({ extension: "phdm" }), undefined, { skip: 4, ignoreSkipOperations: true });
|
|
125
128
|
document = reducer(document, setAuthorName({ authorName: "<authorName>" }), undefined, { skip: 5, ignoreSkipOperations: true });
|
|
126
|
-
expect(document.revision).toBe(5);
|
|
129
|
+
expect(document.revision.global).toBe(5);
|
|
127
130
|
document.operations.global.forEach((op, index) => {
|
|
128
131
|
expect(op).toHaveProperty("skip", index + 1);
|
|
129
132
|
});
|
|
@@ -138,7 +141,7 @@ describe("Document Operations", () => {
|
|
|
138
141
|
document = reducer(document, setModelExtension({ extension: "phdm" }));
|
|
139
142
|
document = reducer(document, setAuthorName({ authorName: "<authorName>" }));
|
|
140
143
|
document = reducer(document, setAuthorWebsite({ authorWebsite: "<authorWebsite>" }));
|
|
141
|
-
expect(document.revision).toBe(6);
|
|
144
|
+
expect(document.revision.global).toBe(6);
|
|
142
145
|
document.operations.global.forEach((op) => {
|
|
143
146
|
expect(op).toHaveProperty("skip", 0);
|
|
144
147
|
});
|
|
@@ -154,7 +157,7 @@ describe("Document Operations", () => {
|
|
|
154
157
|
document = reducer(document, setModelExtension({ extension: "phdm" }), undefined, { skip: 4, ignoreSkipOperations: true });
|
|
155
158
|
document = reducer(document, setAuthorName({ authorName: "<authorName>" }), undefined, { skip: 5, ignoreSkipOperations: true });
|
|
156
159
|
document = reducer(document, setAuthorWebsite({ authorWebsite: "<authorWebsite>" }), undefined, { skip: 6, ignoreSkipOperations: true });
|
|
157
|
-
expect(document.revision).toBe(6);
|
|
160
|
+
expect(document.revision.global).toBe(6);
|
|
158
161
|
document.operations.global.forEach((op, index) => {
|
|
159
162
|
expect(op).toHaveProperty("skip", index + 1);
|
|
160
163
|
});
|
|
@@ -169,7 +172,7 @@ describe("Document Operations", () => {
|
|
|
169
172
|
document = reducer(document, setModelExtension({ extension: "phdm" }));
|
|
170
173
|
document = reducer(document, setAuthorName({ authorName: "<authorName>" }));
|
|
171
174
|
document = reducer(document, setAuthorWebsite({ authorWebsite: "<authorWebsite>" }));
|
|
172
|
-
expect(document.revision).toBe(6);
|
|
175
|
+
expect(document.revision.global).toBe(6);
|
|
173
176
|
document.operations.global.forEach((op) => {
|
|
174
177
|
expect(op).toHaveProperty("skip", 0);
|
|
175
178
|
});
|
|
@@ -185,7 +188,7 @@ describe("Document Operations", () => {
|
|
|
185
188
|
document = reducer(document, setModelExtension({ extension: "phdm" }), undefined, { skip: 4, ignoreSkipOperations: true });
|
|
186
189
|
document = reducer(document, setAuthorName({ authorName: "<authorName>" }), undefined, { skip: 5, ignoreSkipOperations: true });
|
|
187
190
|
document = reducer(document, setAuthorWebsite({ authorWebsite: "<authorWebsite>" }), undefined, { skip: 6, ignoreSkipOperations: true });
|
|
188
|
-
expect(document.revision).toBe(6);
|
|
191
|
+
expect(document.revision.global).toBe(6);
|
|
189
192
|
document.operations.global.forEach((op, index) => {
|
|
190
193
|
expect(op).toHaveProperty("skip", index + 1);
|
|
191
194
|
});
|
|
@@ -104,7 +104,7 @@ describe("DocumentModel Validation Error", () => {
|
|
|
104
104
|
}));
|
|
105
105
|
errors = [
|
|
106
106
|
...errors,
|
|
107
|
-
...validateStateSchemaName(
|
|
107
|
+
...validateStateSchemaName(newDoc2.state.global.specifications[0].state.local.schema, documentName, "local"),
|
|
108
108
|
];
|
|
109
109
|
const newDoc3 = reducer(newDoc2, setStateSchema({
|
|
110
110
|
scope: "local",
|
|
@@ -68,13 +68,12 @@ describe("DocumentModel", () => {
|
|
|
68
68
|
{
|
|
69
69
|
index: 1,
|
|
70
70
|
skip: 1,
|
|
71
|
-
input: {},
|
|
72
71
|
scope: "global",
|
|
73
72
|
type: "NOOP",
|
|
74
73
|
},
|
|
75
74
|
]);
|
|
76
75
|
const expectedLoadedDocumentModel = { ...documentModel };
|
|
77
76
|
expectedLoadedDocumentModel.clipboard = [];
|
|
78
|
-
expect(loadedDocumentModel).toStrictEqual(expectedLoadedDocumentModel);
|
|
77
|
+
expect(JSON.parse(JSON.stringify(loadedDocumentModel))).toStrictEqual(JSON.parse(JSON.stringify(expectedLoadedDocumentModel)));
|
|
79
78
|
});
|
|
80
79
|
});
|
package/dist/test/helpers.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BaseAction, Operation, OperationScope, PHDocument, StateReducer } from "../src/document/types.js";
|
|
1
|
+
import { type BaseAction, type Operation, type OperationScope, type PHDocument, type StateReducer } from "../src/document/types.js";
|
|
2
2
|
export declare const emptyReducer: StateReducer<PHDocument>;
|
|
3
3
|
export declare const wrappedEmptyReducer: import("../src/document/types.js").Reducer<PHDocument>;
|
|
4
4
|
export type IncrementAction = BaseAction<"INCREMENT", undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../test/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../test/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,0BAA0B,CAAC;AAIlC,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,UAAU,CAEjD,CAAC;AAEF,eAAO,MAAM,mBAAmB,wDAA8B,CAAC;AAG/D,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AACjE,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AACjE,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACzD,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AACtE,MAAM,MAAM,WAAW,GACnB,eAAe,GACf,eAAe,GACf,kBAAkB,GAClB,WAAW,CAAC;AAEhB,MAAM,MAAM,aAAa,GAAG,UAAU,CACpC,UAAU,EACV,eAAe,EACf,WAAW,CACZ,CAAC;AACF,MAAM,MAAM,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/C,eAAO,MAAM,SAAS,uBAAmD,CAAC;AAE1E,eAAO,MAAM,SAAS,uBAAmD,CAAC;AAE1E,eAAO,MAAM,KAAK,mBAA2C,CAAC;AAE9D,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,uBAOtC,CAAC;AAEJ,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,aAAa,CAmBxD,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YAAY,CAAC,aAAa,CAyB3D,CAAC;AAEF,eAAO,MAAM,YAAY,2DAAiD,CAAC;AAE3E,eAAO,MAAM,aAAa,GAAI,YAAY,SAAS,EAAE;;;;;;GAQpD,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,cAAS,EACT,aAAQ,EACR,QAAO,cAAyB,KAU1B,SAAS,CAAC"}
|