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.
Files changed (62) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -0
  4. package/dist/src/document/actions/creators.d.ts +2 -2
  5. package/dist/src/document/actions/creators.d.ts.map +1 -1
  6. package/dist/src/document/actions/operations.d.ts +2 -2
  7. package/dist/src/document/actions/operations.d.ts.map +1 -1
  8. package/dist/src/document/object.d.ts +2 -2
  9. package/dist/src/document/object.d.ts.map +1 -1
  10. package/dist/src/document/reducer.d.ts +2 -2
  11. package/dist/src/document/reducer.d.ts.map +1 -1
  12. package/dist/src/document/schema/types.d.ts +1 -1
  13. package/dist/src/document/schema/types.d.ts.map +1 -1
  14. package/dist/src/document/schema/zod.d.ts +2 -2
  15. package/dist/src/document/schema/zod.d.ts.map +1 -1
  16. package/dist/src/document/signal.d.ts +1 -1
  17. package/dist/src/document/signal.d.ts.map +1 -1
  18. package/dist/src/document/types.d.ts +4 -4
  19. package/dist/src/document/types.d.ts.map +1 -1
  20. package/dist/src/document/utils/base.d.ts +3 -3
  21. package/dist/src/document/utils/base.d.ts.map +1 -1
  22. package/dist/src/document/utils/crypto.d.ts +1 -1
  23. package/dist/src/document/utils/crypto.d.ts.map +1 -1
  24. package/dist/src/document/utils/document-helpers.d.ts +1 -1
  25. package/dist/src/document/utils/document-helpers.d.ts.map +1 -1
  26. package/dist/src/document/utils/errors.d.ts +1 -1
  27. package/dist/src/document/utils/errors.d.ts.map +1 -1
  28. package/dist/src/document/utils/file.d.ts +3 -3
  29. package/dist/src/document/utils/file.d.ts.map +1 -1
  30. package/dist/src/document/utils/node.d.ts +1 -1
  31. package/dist/src/document/utils/node.d.ts.map +1 -1
  32. package/dist/src/document/utils/validation.d.ts +1 -1
  33. package/dist/src/document/utils/validation.d.ts.map +1 -1
  34. package/dist/src/document-model/custom/reducers/header.d.ts +1 -1
  35. package/dist/src/document-model/custom/reducers/header.d.ts.map +1 -1
  36. package/dist/src/document-model/custom/reducers/module.d.ts +1 -1
  37. package/dist/src/document-model/custom/reducers/module.d.ts.map +1 -1
  38. package/dist/src/document-model/custom/reducers/operation-error.d.ts +1 -1
  39. package/dist/src/document-model/custom/reducers/operation-error.d.ts.map +1 -1
  40. package/dist/src/document-model/custom/reducers/operation-example.d.ts +1 -1
  41. package/dist/src/document-model/custom/reducers/operation-example.d.ts.map +1 -1
  42. package/dist/src/document-model/custom/reducers/operation.d.ts +1 -1
  43. package/dist/src/document-model/custom/reducers/operation.d.ts.map +1 -1
  44. package/dist/src/document-model/custom/reducers/state.d.ts +1 -1
  45. package/dist/src/document-model/custom/reducers/state.d.ts.map +1 -1
  46. package/dist/src/document-model/custom/reducers/versioning.d.ts +1 -1
  47. package/dist/src/document-model/custom/reducers/versioning.d.ts.map +1 -1
  48. package/dist/src/document-model/custom/utils.d.ts +2 -2
  49. package/dist/src/document-model/custom/utils.d.ts.map +1 -1
  50. package/dist/src/document-model/types.d.ts +2 -2
  51. package/dist/src/document-model/types.d.ts.map +1 -1
  52. package/dist/test/document/utils.test.js +1 -1
  53. package/dist/test/document-helpers/utils.d.ts +1 -1
  54. package/dist/test/document-helpers/utils.d.ts.map +1 -1
  55. package/dist/test/document-model/replay.test.js +8 -1
  56. package/dist/test/document-model/skip-operations.test.js +15 -12
  57. package/dist/test/document-model/validation.test.js +1 -1
  58. package/dist/test/document-model/zip.test.js +1 -2
  59. package/dist/test/helpers.d.ts +1 -1
  60. package/dist/test/helpers.d.ts.map +1 -1
  61. package/dist/tsconfig.tsbuildinfo +1 -1
  62. 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(5);
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).toBe(6);
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(doc.state.global.specifications[0].state.local.schema, documentName, "local"),
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
  });
@@ -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,EACV,SAAS,EACT,cAAc,EACd,UAAU,EACV,YAAY,EACb,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"}
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"}