document-model 4.1.0-dev.5 → 4.1.0-dev.51

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 (195) hide show
  1. package/README.md +24 -24
  2. package/dist/index.d.ts +8 -7
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +5 -4
  5. package/dist/index.js.map +1 -1
  6. package/dist/src/document/actions/creators.d.ts +5 -4
  7. package/dist/src/document/actions/creators.d.ts.map +1 -1
  8. package/dist/src/document/actions/creators.js +1 -1
  9. package/dist/src/document/actions/creators.js.map +1 -1
  10. package/dist/src/document/actions/operations.d.ts +11 -13
  11. package/dist/src/document/actions/operations.d.ts.map +1 -1
  12. package/dist/src/document/actions/operations.js +15 -14
  13. package/dist/src/document/actions/operations.js.map +1 -1
  14. package/dist/src/document/object.d.ts +12 -11
  15. package/dist/src/document/object.d.ts.map +1 -1
  16. package/dist/src/document/object.js +1 -1
  17. package/dist/src/document/object.js.map +1 -1
  18. package/dist/src/document/ph-factories.d.ts +37 -0
  19. package/dist/src/document/ph-factories.d.ts.map +1 -0
  20. package/dist/src/document/ph-factories.js +93 -0
  21. package/dist/src/document/ph-factories.js.map +1 -0
  22. package/dist/src/document/ph-types.d.ts +10 -2
  23. package/dist/src/document/ph-types.d.ts.map +1 -1
  24. package/dist/src/document/reducer.d.ts +9 -8
  25. package/dist/src/document/reducer.d.ts.map +1 -1
  26. package/dist/src/document/reducer.js +68 -66
  27. package/dist/src/document/reducer.js.map +1 -1
  28. package/dist/src/document/schema/types.d.ts +13 -1
  29. package/dist/src/document/schema/types.d.ts.map +1 -1
  30. package/dist/src/document/schema/zod.d.ts +41 -12
  31. package/dist/src/document/schema/zod.d.ts.map +1 -1
  32. package/dist/src/document/schema/zod.js +23 -11
  33. package/dist/src/document/schema/zod.js.map +1 -1
  34. package/dist/src/document/signal.d.ts +1 -1
  35. package/dist/src/document/signal.d.ts.map +1 -1
  36. package/dist/src/document/types.d.ts +83 -94
  37. package/dist/src/document/types.d.ts.map +1 -1
  38. package/dist/src/document/utils/base.d.ts +8 -9
  39. package/dist/src/document/utils/base.d.ts.map +1 -1
  40. package/dist/src/document/utils/base.js +32 -31
  41. package/dist/src/document/utils/base.js.map +1 -1
  42. package/dist/src/document/utils/crypto.d.ts +6 -5
  43. package/dist/src/document/utils/crypto.d.ts.map +1 -1
  44. package/dist/src/document/utils/crypto.js +24 -23
  45. package/dist/src/document/utils/crypto.js.map +1 -1
  46. package/dist/src/document/utils/document-helpers.d.ts +9 -13
  47. package/dist/src/document/utils/document-helpers.d.ts.map +1 -1
  48. package/dist/src/document/utils/document-helpers.js +47 -17
  49. package/dist/src/document/utils/document-helpers.js.map +1 -1
  50. package/dist/src/document/utils/errors.d.ts +1 -1
  51. package/dist/src/document/utils/errors.d.ts.map +1 -1
  52. package/dist/src/document/utils/file.d.ts +6 -5
  53. package/dist/src/document/utils/file.d.ts.map +1 -1
  54. package/dist/src/document/utils/file.js.map +1 -1
  55. package/dist/src/document/utils/header.d.ts +1 -1
  56. package/dist/src/document/utils/header.d.ts.map +1 -1
  57. package/dist/src/document/utils/header.js.map +1 -1
  58. package/dist/src/document/utils/node.d.ts +1 -1
  59. package/dist/src/document/utils/node.d.ts.map +1 -1
  60. package/dist/src/document/utils/node.js +1 -1
  61. package/dist/src/document/utils/node.js.map +1 -1
  62. package/dist/src/document/utils/validation.d.ts +1 -1
  63. package/dist/src/document/utils/validation.d.ts.map +1 -1
  64. package/dist/src/document/utils/validation.js +1 -1
  65. package/dist/src/document/utils/validation.js.map +1 -1
  66. package/dist/src/document-model/custom/reducers/header.d.ts +1 -1
  67. package/dist/src/document-model/custom/reducers/header.d.ts.map +1 -1
  68. package/dist/src/document-model/custom/reducers/module.d.ts +1 -1
  69. package/dist/src/document-model/custom/reducers/module.d.ts.map +1 -1
  70. package/dist/src/document-model/custom/reducers/operation-error.d.ts +1 -1
  71. package/dist/src/document-model/custom/reducers/operation-error.d.ts.map +1 -1
  72. package/dist/src/document-model/custom/reducers/operation-example.d.ts +1 -1
  73. package/dist/src/document-model/custom/reducers/operation-example.d.ts.map +1 -1
  74. package/dist/src/document-model/custom/reducers/operation.d.ts +1 -1
  75. package/dist/src/document-model/custom/reducers/operation.d.ts.map +1 -1
  76. package/dist/src/document-model/custom/reducers/state.d.ts +1 -1
  77. package/dist/src/document-model/custom/reducers/state.d.ts.map +1 -1
  78. package/dist/src/document-model/custom/reducers/versioning.d.ts +1 -1
  79. package/dist/src/document-model/custom/reducers/versioning.d.ts.map +1 -1
  80. package/dist/src/document-model/custom/utils.d.ts +2 -2
  81. package/dist/src/document-model/custom/utils.d.ts.map +1 -1
  82. package/dist/src/document-model/gen/actions.d.ts.map +1 -1
  83. package/dist/src/document-model/gen/document-model.d.ts.map +1 -1
  84. package/dist/src/document-model/gen/document-model.js +40 -40
  85. package/dist/src/document-model/gen/document-model.js.map +1 -1
  86. package/dist/src/document-model/gen/header/object.d.ts +3 -3
  87. package/dist/src/document-model/gen/header/object.d.ts.map +1 -1
  88. package/dist/src/document-model/gen/header/object.js.map +1 -1
  89. package/dist/src/document-model/gen/module/object.d.ts +3 -3
  90. package/dist/src/document-model/gen/module/object.d.ts.map +1 -1
  91. package/dist/src/document-model/gen/module/object.js.map +1 -1
  92. package/dist/src/document-model/gen/module/operations.d.ts.map +1 -1
  93. package/dist/src/document-model/gen/object.d.ts +4 -5
  94. package/dist/src/document-model/gen/object.d.ts.map +1 -1
  95. package/dist/src/document-model/gen/object.js.map +1 -1
  96. package/dist/src/document-model/gen/operation/object.d.ts +3 -4
  97. package/dist/src/document-model/gen/operation/object.d.ts.map +1 -1
  98. package/dist/src/document-model/gen/operation/object.js.map +1 -1
  99. package/dist/src/document-model/gen/operation/operations.d.ts.map +1 -1
  100. package/dist/src/document-model/gen/operation-error/object.d.ts +3 -4
  101. package/dist/src/document-model/gen/operation-error/object.d.ts.map +1 -1
  102. package/dist/src/document-model/gen/operation-error/object.js.map +1 -1
  103. package/dist/src/document-model/gen/operation-error/operations.d.ts.map +1 -1
  104. package/dist/src/document-model/gen/operation-example/object.d.ts +2 -3
  105. package/dist/src/document-model/gen/operation-example/object.d.ts.map +1 -1
  106. package/dist/src/document-model/gen/operation-example/object.js.map +1 -1
  107. package/dist/src/document-model/gen/operation-example/operations.d.ts.map +1 -1
  108. package/dist/src/document-model/gen/ph-factories.d.ts +27 -0
  109. package/dist/src/document-model/gen/ph-factories.d.ts.map +1 -0
  110. package/dist/src/document-model/gen/ph-factories.js +60 -0
  111. package/dist/src/document-model/gen/ph-factories.js.map +1 -0
  112. package/dist/src/document-model/gen/reducer.d.ts +3 -3
  113. package/dist/src/document-model/gen/reducer.d.ts.map +1 -1
  114. package/dist/src/document-model/gen/reducer.js.map +1 -1
  115. package/dist/src/document-model/gen/schema/zod.d.ts +6 -6
  116. package/dist/src/document-model/gen/schema/zod.d.ts.map +1 -1
  117. package/dist/src/document-model/gen/state/object.d.ts +3 -3
  118. package/dist/src/document-model/gen/state/object.d.ts.map +1 -1
  119. package/dist/src/document-model/gen/state/object.js.map +1 -1
  120. package/dist/src/document-model/gen/state/operations.d.ts.map +1 -1
  121. package/dist/src/document-model/gen/types.d.ts +5 -5
  122. package/dist/src/document-model/gen/types.d.ts.map +1 -1
  123. package/dist/src/document-model/gen/utils.d.ts +6 -7
  124. package/dist/src/document-model/gen/utils.d.ts.map +1 -1
  125. package/dist/src/document-model/gen/utils.js +6 -8
  126. package/dist/src/document-model/gen/utils.js.map +1 -1
  127. package/dist/src/document-model/gen/versioning/object.d.ts +2 -3
  128. package/dist/src/document-model/gen/versioning/object.d.ts.map +1 -1
  129. package/dist/src/document-model/gen/versioning/object.js.map +1 -1
  130. package/dist/src/document-model/gen/versioning/operations.d.ts.map +1 -1
  131. package/dist/src/document-model/module.d.ts +1 -1
  132. package/dist/src/document-model/module.d.ts.map +1 -1
  133. package/dist/src/document-model/types.d.ts +3 -3
  134. package/dist/src/document-model/types.d.ts.map +1 -1
  135. package/dist/test/document/crypto.test.js +37 -55
  136. package/dist/test/document/crypto.test.js.map +1 -1
  137. package/dist/test/document/event-vs-command.test.js +80 -50
  138. package/dist/test/document/event-vs-command.test.js.map +1 -1
  139. package/dist/test/document/local.test.js +26 -43
  140. package/dist/test/document/local.test.js.map +1 -1
  141. package/dist/test/document/operation-id.test.js +4 -6
  142. package/dist/test/document/operation-id.test.js.map +1 -1
  143. package/dist/test/document/prune.test.js +21 -34
  144. package/dist/test/document/prune.test.js.map +1 -1
  145. package/dist/test/document/reducer.test.js +99 -77
  146. package/dist/test/document/reducer.test.js.map +1 -1
  147. package/dist/test/document/skip-operations.test.js +65 -85
  148. package/dist/test/document/skip-operations.test.js.map +1 -1
  149. package/dist/test/document/undo-redo.test.js +60 -34
  150. package/dist/test/document/undo-redo.test.js.map +1 -1
  151. package/dist/test/document/utils.test.js +49 -36
  152. package/dist/test/document/utils.test.js.map +1 -1
  153. package/dist/test/document-helpers/addUndo.test.js +1 -1
  154. package/dist/test/document-helpers/addUndo.test.js.map +1 -1
  155. package/dist/test/document-helpers/attachBranch.test.js +20 -20
  156. package/dist/test/document-helpers/attachBranch.test.js.map +1 -1
  157. package/dist/test/document-helpers/conflictResolution.test.js +10 -10
  158. package/dist/test/document-helpers/conflictResolution.test.js.map +1 -1
  159. package/dist/test/document-helpers/garbageCollect.test.js +1 -1
  160. package/dist/test/document-helpers/garbageCollect.test.js.map +1 -1
  161. package/dist/test/document-helpers/groupOperationsByScope.test.js +70 -70
  162. package/dist/test/document-helpers/groupOperationsByScope.test.js.map +1 -1
  163. package/dist/test/document-helpers/merge.test.js +125 -125
  164. package/dist/test/document-helpers/merge.test.js.map +1 -1
  165. package/dist/test/document-helpers/removeExistingOperations.test.js +37 -24
  166. package/dist/test/document-helpers/removeExistingOperations.test.js.map +1 -1
  167. package/dist/test/document-helpers/reshuffleByTimestamp.test.js +15 -15
  168. package/dist/test/document-helpers/reshuffleByTimestamp.test.js.map +1 -1
  169. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js +21 -21
  170. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js.map +1 -1
  171. package/dist/test/document-helpers/skipHeaderOperations.test.js +33 -40
  172. package/dist/test/document-helpers/skipHeaderOperations.test.js.map +1 -1
  173. package/dist/test/document-helpers/split.test.js +2 -2
  174. package/dist/test/document-helpers/split.test.js.map +1 -1
  175. package/dist/test/document-helpers/utils.d.ts +2 -1
  176. package/dist/test/document-helpers/utils.d.ts.map +1 -1
  177. package/dist/test/document-helpers/utils.js +13 -8
  178. package/dist/test/document-helpers/utils.js.map +1 -1
  179. package/dist/test/document-model/replay.test.js +3 -20
  180. package/dist/test/document-model/replay.test.js.map +1 -1
  181. package/dist/test/document-model/skip-operations.test.js +4 -5
  182. package/dist/test/document-model/skip-operations.test.js.map +1 -1
  183. package/dist/test/document-model/validation.test.js +15 -6
  184. package/dist/test/document-model/validation.test.js.map +1 -1
  185. package/dist/test/document-model/zip.test.js +1 -1
  186. package/dist/test/document-model/zip.test.js.map +1 -1
  187. package/dist/test/helpers.d.ts +42 -8
  188. package/dist/test/helpers.d.ts.map +1 -1
  189. package/dist/test/helpers.js +55 -6
  190. package/dist/test/helpers.js.map +1 -1
  191. package/dist/tsconfig.tsbuildinfo +1 -1
  192. package/dist/vitest.config.d.ts.map +1 -1
  193. package/dist/vitest.config.js +3 -0
  194. package/dist/vitest.config.js.map +1 -1
  195. package/package.json +5 -2
@@ -1,8 +1,8 @@
1
- import { type PHDocumentHeader } from "#document/ph-types.js";
1
+ import type { PHBaseState, PHDocumentHeader } from "#document/ph-types.js";
2
2
  import { baseReducer } from "../reducer.js";
3
- import { type UndoAction, type UndoRedoAction } from "../schema/types.js";
4
- import { type SignalDispatch } from "../signal.js";
5
- import { type Action, type CreateState, type DocumentAction, type DocumentOperations, type DocumentOperationsIgnoreMap, type ExtendedState, type ExtendedStateFromDocument, type GlobalStateFromDocument, type LocalStateFromDocument, type MappedOperation, type Operation, type PartialState, type PHDocument, type Reducer, type ReducerOptions, type StateReducer } from "../types.js";
3
+ import type { UndoAction, UndoRedoAction } from "../schema/types.js";
4
+ import type { SignalDispatch } from "../signal.js";
5
+ import type { Action, CreateState, DocumentAction, DocumentOperations, DocumentOperationsIgnoreMap, MappedOperation, Operation, PHDocument, Reducer, StateReducer } from "../types.js";
6
6
  export declare function isNoopOperation<TOp extends {
7
7
  type: string;
8
8
  skip: number;
@@ -52,13 +52,12 @@ export declare function createAction<TAction extends Action>(type: TAction["type
52
52
  *
53
53
  * @returns The new reducer.
54
54
  */
55
- export declare function createReducer<TDocument extends PHDocument>(stateReducer: StateReducer<TDocument>, documentReducer?: typeof baseReducer): Reducer<TDocument>;
56
- export declare function baseCreateExtendedState<TDocument extends PHDocument>(initialState?: Partial<ExtendedState<PartialState<GlobalStateFromDocument<TDocument>>, PartialState<LocalStateFromDocument<TDocument>>>>, createState?: CreateState<TDocument>): ExtendedStateFromDocument<TDocument>;
55
+ export declare function createReducer<TState extends PHBaseState = PHBaseState>(stateReducer: StateReducer<TState>, documentReducer?: typeof baseReducer): Reducer<TState>;
57
56
  /**
58
57
  * Important note: it is the responsibility of the caller to set the document type
59
58
  * on the header.
60
59
  */
61
- export declare function baseCreateDocument<TDocument extends PHDocument>(initialState?: Partial<ExtendedStateFromDocument<TDocument>>, createState?: CreateState<TDocument>): TDocument;
60
+ export declare function baseCreateDocument<TState extends PHBaseState = PHBaseState>(createState: CreateState<TState>, initialState?: Partial<TState>): PHDocument<TState>;
62
61
  export declare function hashDocumentStateForScope(document: {
63
62
  state: {
64
63
  [key: string]: unknown;
@@ -76,13 +75,13 @@ export declare function readOnly<T>(value: T): Readonly<T>;
76
75
  export declare function mapSkippedOperations(operations: Operation[], skippedHeadOperations?: number): MappedOperation[];
77
76
  export declare function sortMappedOperations(operations: DocumentOperationsIgnoreMap): MappedOperation[];
78
77
  export declare function getDocumentLastModified(document: PHDocument): string;
79
- export declare function replayOperations<TDocument extends PHDocument>(initialState: ExtendedStateFromDocument<TDocument>, clearedOperations: DocumentOperations, stateReducer: StateReducer<TDocument>, dispatch?: SignalDispatch, header?: PHDocumentHeader, documentReducer?: typeof baseReducer, skipHeaderOperations?: SkipHeaderOperations, options?: ReducerOptions): TDocument;
78
+ export declare function replayOperations<TState extends PHBaseState = PHBaseState>(initialState: TState, clearedOperations: DocumentOperations, stateReducer: StateReducer<TState>, dispatch?: SignalDispatch, header?: PHDocumentHeader, documentReducer?: typeof baseReducer, skipHeaderOperations?: SkipHeaderOperations, options?: ReplayDocumentOptions): PHDocument<TState>;
80
79
  export type SkipHeaderOperations = Partial<Record<string, number>>;
81
80
  export type ReplayDocumentOptions = {
82
81
  checkHashes?: boolean;
83
82
  reuseOperationResultingState?: boolean;
84
83
  operationResultingStateParser?: <TState>(state: string) => TState;
85
84
  };
86
- export declare function replayDocument<TDocument extends PHDocument>(initialState: ExtendedStateFromDocument<TDocument>, operations: DocumentOperations, reducer: Reducer<TDocument>, dispatch?: SignalDispatch, header?: PHDocumentHeader, skipHeaderOperations?: SkipHeaderOperations, options?: ReplayDocumentOptions): TDocument;
85
+ export declare function replayDocument<TState extends PHBaseState = PHBaseState>(initialState: TState, operations: DocumentOperations, reducer: Reducer<TState>, dispatch?: SignalDispatch, header?: PHDocumentHeader, skipHeaderOperations?: SkipHeaderOperations, options?: ReplayDocumentOptions): PHDocument<TState>;
87
86
  export declare function parseResultingState<TState>(state: string | null | undefined): TState;
88
87
  //# sourceMappingURL=base.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/document/utils/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/document/utils/base.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,8 @@ import { hash } from "#utils/env";
2
2
  import stringifyJson from "safe-stable-stringify";
3
3
  import { ZodError } from "zod";
4
4
  import { LOAD_STATE, NOOP, PRUNE, REDO, SET_NAME, UNDO, } from "../actions/types.js";
5
- import { baseReducer, updateHeader } from "../reducer.js";
5
+ import { baseReducer, updateHeaderRevision } from "../reducer.js";
6
+ import { generateId } from "./crypto.js";
6
7
  import { sortOperations } from "./document-helpers.js";
7
8
  import { InvalidActionInputError, InvalidActionInputZodError, } from "./errors.js";
8
9
  import { createUnsignedHeader } from "./header.js";
@@ -49,6 +50,8 @@ export function createAction(type, input, attachments, validator, scope = "globa
49
50
  throw new Error(`Invalid action type: ${JSON.stringify(type)}`);
50
51
  }
51
52
  const action = {
53
+ id: generateId(),
54
+ timestampUtcMs: new Date().toISOString(),
52
55
  type,
53
56
  input,
54
57
  scope,
@@ -93,30 +96,23 @@ export function createReducer(stateReducer, documentReducer = baseReducer) {
93
96
  };
94
97
  return reducer;
95
98
  }
96
- export function baseCreateExtendedState(initialState, createState) {
97
- return {
98
- state: createState?.(initialState?.state) ??
99
- (initialState?.state ?? {
100
- global: {},
101
- local: {},
102
- }),
103
- };
104
- }
105
99
  /**
106
100
  * Important note: it is the responsibility of the caller to set the document type
107
101
  * on the header.
108
102
  */
109
- export function baseCreateDocument(initialState, createState) {
110
- const state = baseCreateExtendedState(initialState, createState);
103
+ export function baseCreateDocument(createState, initialState) {
104
+ const state = createState(initialState);
111
105
  const header = createUnsignedHeader();
112
- return {
113
- ...state,
106
+ const phDocument = {
114
107
  header,
108
+ state,
115
109
  initialState: state,
116
110
  operations: { global: [], local: [] },
117
111
  clipboard: [],
118
112
  attachments: {},
113
+ history: [],
119
114
  };
115
+ return phDocument;
120
116
  }
121
117
  export function hashDocumentStateForScope(document, scope = "global") {
122
118
  const stateString = stringifyJson(document.state[scope] || "");
@@ -168,15 +164,20 @@ export function mapSkippedOperations(operations, skippedHeadOperations) {
168
164
  export function sortMappedOperations(operations) {
169
165
  return Object.values(operations)
170
166
  .flatMap((array) => array)
171
- .sort((a, b) => new Date(a.operation.timestamp).getTime() -
172
- new Date(b.operation.timestamp).getTime());
167
+ .sort((a, b) => new Date(a.operation.timestampUtcMs).getTime() -
168
+ new Date(b.operation.timestampUtcMs).getTime());
173
169
  }
174
170
  // gets the last modified timestamp of a document from§
175
171
  // it's operations, falling back to the initial state
176
172
  export function getDocumentLastModified(document) {
177
173
  const sortedOperations = sortOperations(Object.values(document.operations).flat());
178
- return (sortedOperations.at(-1).timestamp || document.header.lastModifiedAtUtcIso);
174
+ return (sortedOperations.at(-1).timestampUtcMs ||
175
+ document.header.lastModifiedAtUtcIso);
179
176
  }
177
+ // Default createState function that just returns the state as-is
178
+ const defaultCreateState = (state) => {
179
+ return state;
180
+ };
180
181
  // Runs the operations on the initial data using the
181
182
  // provided reducer, wrapped with the document reducer.
182
183
  // This rebuilds the document according to the provided actions.
@@ -215,11 +216,8 @@ export function replayDocument(initialState, operations, reducer, dispatch, head
215
216
  const scopeState = operationResultingStateParser(opWithState.resultingState);
216
217
  documentState = {
217
218
  ...documentState,
218
- state: {
219
- ...documentState.state,
220
- // TODO how to deal with attachments?
221
- [scope]: scopeState,
222
- },
219
+ // TODO how to deal with attachments?
220
+ [scope]: scopeState,
223
221
  };
224
222
  initialOperations[scope].push(...scopeOperations.slice(0, index + 1));
225
223
  operationsToReplay.push(...scopeOperations.slice(index + 1));
@@ -234,7 +232,7 @@ export function replayDocument(initialState, operations, reducer, dispatch, head
234
232
  operationsToReplay.push(...Object.values(operations).flat());
235
233
  }
236
234
  // builds a new document from the initial data
237
- const document = baseCreateDocument(documentState);
235
+ const document = baseCreateDocument((defaultCreateState), documentState);
238
236
  if (header?.slug) {
239
237
  document.header.slug = header.slug;
240
238
  }
@@ -245,10 +243,12 @@ export function replayDocument(initialState, operations, reducer, dispatch, head
245
243
  // then replays them
246
244
  if (operationsToReplay.length) {
247
245
  result = operationsToReplay.reduce((document, operation) => {
248
- const doc = reducer(document, operation, dispatch, {
249
- skip: operation.skip,
246
+ const doc = reducer(document, operation.action, dispatch, {
250
247
  ignoreSkipOperations: true,
251
- reuseHash: !checkHashes,
248
+ checkHashes,
249
+ replayOptions: {
250
+ operation,
251
+ },
252
252
  });
253
253
  return doc;
254
254
  }, document);
@@ -259,7 +259,7 @@ export function replayDocument(initialState, operations, reducer, dispatch, head
259
259
  for (const scopeOperations of Object.values(initialOperations)) {
260
260
  const lastOperation = scopeOperations.at(-1);
261
261
  if (lastOperation) {
262
- result = updateHeader(result, lastOperation);
262
+ result = updateHeaderRevision(result, lastOperation.action.scope);
263
263
  }
264
264
  }
265
265
  }
@@ -269,7 +269,7 @@ export function replayDocument(initialState, operations, reducer, dispatch, head
269
269
  for (const scope of Object.keys(result.state)) {
270
270
  for (let i = operationsToReplay.length - 1; i >= 0; i--) {
271
271
  const operation = operationsToReplay[i];
272
- if (operation.scope !== scope) {
272
+ if (operation.action.scope !== scope) {
273
273
  continue;
274
274
  }
275
275
  if (operation.hash !== hashDocumentStateForScope(result, scope)) {
@@ -290,7 +290,8 @@ export function replayDocument(initialState, operations, reducer, dispatch, head
290
290
  ...result.operations[scope].map((operation, index) => {
291
291
  return {
292
292
  ...operation,
293
- timestamp: operations[scope][index]?.timestamp ?? operation.timestamp,
293
+ timestamp: operations[scope][index]?.timestampUtcMs ??
294
+ operation.timestampUtcMs,
294
295
  };
295
296
  }),
296
297
  ],
@@ -302,8 +303,8 @@ export function replayDocument(initialState, operations, reducer, dispatch, head
302
303
  : Object.values(resultOperations).reduce((acc, curr) => {
303
304
  const operation = curr.at(-1);
304
305
  if (operation) {
305
- if (operation.timestamp > acc) {
306
- return operation.timestamp;
306
+ if (operation.timestampUtcMs > acc) {
307
+ return operation.timestampUtcMs;
307
308
  }
308
309
  }
309
310
  return acc;
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/document/utils/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/document/utils/base.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
- import { type Action, type ActionSigner, type Operation, type OperationSignatureContext, type OperationSigningHandler, type OperationVerificationHandler, type PHDocument, type Reducer, type Signature } from "../types.js";
1
+ import type { PHBaseState } from "#document/ph-types.js";
2
+ import type { Action, ActionSignatureContext, ActionSigner, ActionSigningHandler, ActionVerificationHandler, PHDocument, Reducer, Signature } from "../types.js";
2
3
  export declare function generateId(method?: "UUIDv4"): string;
3
4
  export declare function getUnixTimestamp(date: Date | string): string;
4
- export declare function buildOperationSignatureParams({ documentId, signer, operation, previousStateHash, }: OperationSignatureContext): [string, string, string, string];
5
+ export declare function buildOperationSignatureParams({ documentId, signer, action, previousStateHash, }: ActionSignatureContext): [string, string, string, string];
5
6
  export declare function buildOperationSignatureMessage(params: [string, string, string, string]): Uint8Array;
6
7
  export declare function ab2hex(ab: ArrayBuffer | ArrayBufferView): string;
7
8
  export declare function hex2ab(hex: string): Uint8Array<ArrayBuffer>;
8
- export declare function buildOperationSignature(context: OperationSignatureContext, signMethod: OperationSigningHandler): Promise<Signature>;
9
- export declare function buildSignedOperation<TDocument extends PHDocument>(action: Action | Operation, reducer: Reducer<TDocument>, document: TDocument, context: Omit<OperationSignatureContext, "operation" | "previousStateHash">, signHandler: OperationSigningHandler): Promise<Operation>;
10
- export declare function verifyOperationSignature(signature: Signature, signer: Omit<ActionSigner, "signatures">, verifyHandler: OperationVerificationHandler): Promise<boolean>;
9
+ export declare function buildOperationSignature(context: ActionSignatureContext, signMethod: ActionSigningHandler): Promise<Signature>;
10
+ export declare function buildSignedAction<TState extends PHBaseState = PHBaseState>(action: Action, reducer: Reducer<TState>, document: PHDocument<TState>, signer: ActionSigner, signHandler: ActionSigningHandler): Promise<import("../types.js").Operation>;
11
+ export declare function verifyOperationSignature(signature: Signature, signer: Omit<ActionSigner, "signatures">, verifyHandler: ActionVerificationHandler): Promise<boolean>;
11
12
  //# sourceMappingURL=crypto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../../src/document/utils/crypto.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,EACjC,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AAErB,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,CAQpD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,6BAA6B,CAAC,EAC5C,UAAU,EACV,MAAM,EACN,SAAS,EACT,iBAAiB,GAClB,EAAE,yBAAyB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAW9D;AAID,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACvC,UAAU,CAIZ;AAED,wBAAgB,MAAM,CAAC,EAAE,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,CAKhE;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,2BAMjC;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,yBAAyB,EAClC,UAAU,EAAE,uBAAuB,GAClC,OAAO,CAAC,SAAS,CAAC,CAKpB;AAED,wBAAsB,oBAAoB,CAAC,SAAS,SAAS,UAAU,EACrE,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,EAC3B,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,IAAI,CAAC,yBAAyB,EAAE,WAAW,GAAG,mBAAmB,CAAC,EAC3E,WAAW,EAAE,uBAAuB,sBAgCrC;AAED,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,EACxC,aAAa,EAAE,4BAA4B,oBAO5C"}
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../../src/document/utils/crypto.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,KAAK,EACV,MAAM,EAEN,sBAAsB,EACtB,YAAY,EACZ,oBAAoB,EACpB,yBAAyB,EACzB,UAAU,EACV,OAAO,EACP,SAAS,EACV,MAAM,aAAa,CAAC;AAErB,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,CAYpD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,6BAA6B,CAAC,EAC5C,UAAU,EACV,MAAM,EACN,MAAM,EACN,iBAAiB,GAClB,EAAE,sBAAsB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAU3D;AAID,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACvC,UAAU,CAIZ;AAED,wBAAgB,MAAM,CAAC,EAAE,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,CAKhE;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,2BAMjC;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,sBAAsB,EAC/B,UAAU,EAAE,oBAAoB,GAC/B,OAAO,CAAC,SAAS,CAAC,CAKpB;AAED,wBAAsB,iBAAiB,CACrC,MAAM,SAAS,WAAW,GAAG,WAAW,EAExC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EACxB,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,EAC5B,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,oBAAoB,4CA8BlC;AAED,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,EACxC,aAAa,EAAE,yBAAyB,oBAOzC"}
@@ -1,23 +1,27 @@
1
+ import { actionSigner, operationWithContext } from "#document/ph-factories.js";
1
2
  import { generateUUID, hash } from "#utils/env";
2
3
  import stringifyJson from "safe-stable-stringify";
3
4
  export function generateId(method) {
5
+ // TODO: this does not make sense. This type says that the input can only be either "UUIDv4" or undefined.
6
+ // But the purpose of the function is to determine if this is something else.
7
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-conversion
4
8
  if (method && method.toString() !== "UUIDv4") {
5
- throw new Error(`Id generation method not supported: "${method.toString()}"`);
9
+ throw new Error(
10
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-conversion
11
+ `Id generation method not supported: "${method.toString()}"`);
6
12
  }
7
13
  return generateUUID();
8
14
  }
9
15
  export function getUnixTimestamp(date) {
10
16
  return (new Date(date).getTime() / 1000).toFixed(0);
11
17
  }
12
- export function buildOperationSignatureParams({ documentId, signer, operation, previousStateHash, }) {
13
- const { timestamp, scope, id, type } = operation;
18
+ export function buildOperationSignatureParams({ documentId, signer, action, previousStateHash, }) {
19
+ const { /*id, timestamp,*/ scope, type } = action;
14
20
  return [
15
- getUnixTimestamp(timestamp), // timestamp,
16
- signer.app.key, // signer public key
17
- hash(
18
- // hash (docID, scope, operationID, operationName, operationInput)
19
- [documentId, scope, id, type, stringifyJson(operation.input)].join("")),
20
- previousStateHash, // state hash that the operation was applied to
21
+ /*getUnixTimestamp(timestamp)*/ getUnixTimestamp(new Date()),
22
+ signer.app.key,
23
+ hash([documentId, scope, /*id,*/ type, stringifyJson(action.input)].join("")),
24
+ previousStateHash,
21
25
  ];
22
26
  }
23
27
  const textEncode = new TextEncoder();
@@ -43,9 +47,9 @@ export async function buildOperationSignature(context, signMethod) {
43
47
  const signature = await signMethod(message);
44
48
  return [...params, `0x${ab2hex(signature)}`];
45
49
  }
46
- export async function buildSignedOperation(action, reducer, document, context, signHandler) {
50
+ export async function buildSignedAction(action, reducer, document, signer, signHandler) {
47
51
  const result = reducer(document, action, undefined, {
48
- reuseHash: true,
52
+ //reuseHash: true,
49
53
  reuseOperationResultingState: true,
50
54
  });
51
55
  const operation = result.operations[action.scope].at(-1);
@@ -54,21 +58,18 @@ export async function buildSignedOperation(action, reducer, document, context, s
54
58
  }
55
59
  const previousStateHash = result.operations[action.scope].at(-2)?.hash ?? "";
56
60
  const signature = await buildOperationSignature({
57
- ...context,
58
- operation,
61
+ documentId: document.header.id,
62
+ signer,
63
+ action,
59
64
  previousStateHash,
60
65
  }, signHandler);
61
- return {
62
- ...operation,
63
- context: {
64
- ...operation.context,
65
- signer: {
66
- ...operation.context?.signer,
67
- ...context.signer,
68
- signatures: [...(context.signer.signatures ?? []), signature],
69
- },
70
- },
66
+ const actionContext = {
67
+ signer: actionSigner(signer.user, signer.app, [
68
+ ...signer.signatures,
69
+ signature,
70
+ ]),
71
71
  };
72
+ return operationWithContext(operation, actionContext);
72
73
  }
73
74
  export async function verifyOperationSignature(signature, signer, verifyHandler) {
74
75
  const publicKey = signer.app.key;
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../../../src/document/utils/crypto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../../../src/document/utils/crypto.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { type DocumentOperations, type Operation } from "../types.js";
1
+ import type { DocumentOperations, Operation } from "../types.js";
2
2
  export type OperationIndex = {
3
3
  index: number;
4
4
  skip: number;
5
5
  id?: string;
6
- timestamp?: string;
6
+ timestampUtcMs?: string;
7
7
  };
8
8
  export declare enum IntegrityIssueType {
9
9
  UNEXPECTED_INDEX = "UNEXPECTED_INDEX"
@@ -18,7 +18,7 @@ type IntegrityIssue = {
18
18
  category: IntegrityIssueSubType;
19
19
  message: string;
20
20
  };
21
- type Reshuffle<TOp extends OperationIndex> = (startIndex: OperationIndex, opsA: TOp[], opsB: TOp[]) => TOp[];
21
+ type Reshuffle = (startIndex: OperationIndex, opsA: Operation[], opsB: Operation[]) => Operation[];
22
22
  export declare function checkCleanedOperationsIntegrity(sortedOperations: OperationIndex[]): IntegrityIssue[];
23
23
  export declare function garbageCollect<TOpIndex extends OperationIndex>(sortedOperations: TOpIndex[]): TOpIndex[];
24
24
  export declare function addUndo(sortedOperations: Operation[]): Operation[];
@@ -26,10 +26,10 @@ export declare function sortOperations<TOpIndex extends OperationIndex>(operatio
26
26
  export declare function reshuffleByTimestamp<TOp extends OperationIndex>(startIndex: OperationIndex, opsA: TOp[], opsB: TOp[]): TOp[];
27
27
  export declare function reshuffleByTimestampAndIndex<TOp extends OperationIndex>(startIndex: OperationIndex, opsA: TOp[], opsB: TOp[]): TOp[];
28
28
  export declare function operationsAreEqual<TOp>(op1: TOp, op2: TOp): boolean;
29
- export declare function attachBranch<TOp extends OperationIndex>(trunk: TOp[], newBranch: TOp[]): [TOp[], TOp[]];
29
+ export declare function attachBranch(trunk: Operation[], newBranch: Operation[]): [Operation[], Operation[]];
30
30
  export declare function precedes(op1: OperationIndex, op2: OperationIndex): boolean;
31
- export declare function split<TOp extends OperationIndex>(sortedTargetOperations: TOp[], sortedMergeOperations: TOp[]): [TOp[], TOp[], TOp[]];
32
- export declare function merge<TOp extends OperationIndex>(sortedTargetOperations: TOp[], sortedMergeOperations: TOp[], reshuffle: Reshuffle<TOp>): TOp[];
31
+ export declare function split(sortedTargetOperations: Operation[], sortedMergeOperations: Operation[]): [Operation[], Operation[], Operation[]];
32
+ export declare function merge(sortedTargetOperations: Operation[], sortedMergeOperations: Operation[], reshuffle: Reshuffle): Operation[];
33
33
  export declare function nextSkipNumber(sortedOperations: OperationIndex[]): number;
34
34
  export declare function checkOperationsIntegrity(operations: Operation[]): IntegrityIssue[];
35
35
  export type OperationsByScope = Partial<Record<string, Operation[]>>;
@@ -50,7 +50,7 @@ export type SkipHeaderOperationIndex = Partial<Pick<OperationIndex, "index">> &
50
50
  * @param skipHeaderOperation - The skip header operation index.
51
51
  * @returns The remaining operations after skipping header operations.
52
52
  */
53
- export declare function skipHeaderOperations<TOpIndex extends OperationIndex>(operations: TOpIndex[], skipHeaderOperation: SkipHeaderOperationIndex): TOpIndex[];
53
+ export declare function skipHeaderOperations(operations: Operation[], skipHeaderOperation: SkipHeaderOperationIndex): Operation[];
54
54
  export declare function garbageCollectDocumentOperations(documentOperations: DocumentOperations): DocumentOperations;
55
55
  /**
56
56
  * Filters out duplicated operations from the target operations array based on their IDs.
@@ -65,17 +65,13 @@ export declare function filterDuplicatedOperations<T extends {
65
65
  }>(targetOperations: T[], sourceOperations: T[]): T[];
66
66
  export declare function filterDocumentOperationsResultingState(documentOperations?: DocumentOperations): {
67
67
  [x: string]: Operation[] | {
68
- type: string;
69
- input: unknown;
70
- scope: string;
71
- attachments?: import("../types.js").AttachmentInput[] | undefined;
72
- context?: import("../types.js").ActionContext;
73
68
  index: number;
74
- timestamp: string;
69
+ timestampUtcMs: string;
75
70
  hash: string;
76
71
  skip: number;
77
72
  error?: string;
78
73
  id?: string;
74
+ action: import("../types.js").Action;
79
75
  }[];
80
76
  };
81
77
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"document-helpers.d.ts","sourceRoot":"","sources":["../../../../src/document/utils/document-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document-helpers.d.ts","sourceRoot":"","sources":["../../../../src/document/utils/document-helpers.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import stringify from "safe-stable-stringify";
2
+ import { generateId } from "./crypto.js";
2
3
  export var IntegrityIssueType;
3
4
  (function (IntegrityIssueType) {
4
5
  IntegrityIssueType["UNEXPECTED_INDEX"] = "UNEXPECTED_INDEX";
@@ -70,23 +71,34 @@ export function addUndo(sortedOperations) {
70
71
  const latestOperation = operationsCopy[operationsCopy.length - 1];
71
72
  if (!latestOperation)
72
73
  return operationsCopy;
73
- if (latestOperation.type === "NOOP") {
74
+ if (latestOperation.action.type === "NOOP") {
74
75
  operationsCopy.push({
75
76
  ...latestOperation,
76
77
  index: latestOperation.index,
77
- type: "NOOP",
78
78
  skip: nextSkipNumber(sortedOperations),
79
+ action: {
80
+ ...latestOperation.action,
81
+ // TODO: this will break the signature...
82
+ id: generateId(),
83
+ timestampUtcMs: new Date().toISOString(),
84
+ type: "NOOP",
85
+ },
79
86
  });
80
87
  }
81
88
  else {
82
89
  operationsCopy.push({
83
- type: "NOOP",
90
+ id: generateId(),
91
+ timestampUtcMs: new Date().toISOString(),
84
92
  index: latestOperation.index + 1,
85
- timestamp: new Date().toISOString(),
86
- input: {},
87
93
  skip: 1,
88
- scope: latestOperation.scope,
89
94
  hash: latestOperation.hash,
95
+ action: {
96
+ id: generateId(),
97
+ timestampUtcMs: new Date().toISOString(),
98
+ type: "NOOP",
99
+ input: {},
100
+ scope: latestOperation.action.scope,
101
+ },
90
102
  });
91
103
  }
92
104
  return operationsCopy;
@@ -106,8 +118,8 @@ export function sortOperations(operations) {
106
118
  // merge => [0:0, 1:0, 6:4, 7:0, 8:0, 9:0, 10:0, 11:0]
107
119
  export function reshuffleByTimestamp(startIndex, opsA, opsB) {
108
120
  return [...opsA, ...opsB]
109
- .sort((a, b) => new Date(a.timestamp || "").getTime() -
110
- new Date(b.timestamp || "").getTime())
121
+ .sort((a, b) => new Date(a.timestampUtcMs || "").getTime() -
122
+ new Date(b.timestampUtcMs || "").getTime())
111
123
  .map((op, i) => ({
112
124
  ...op,
113
125
  index: startIndex.index + i,
@@ -116,8 +128,8 @@ export function reshuffleByTimestamp(startIndex, opsA, opsB) {
116
128
  }
117
129
  export function reshuffleByTimestampAndIndex(startIndex, opsA, opsB) {
118
130
  return [...opsA, ...opsB]
119
- .sort((a, b) => new Date(a.timestamp || "").getTime() -
120
- new Date(b.timestamp || "").getTime())
131
+ .sort((a, b) => new Date(a.timestampUtcMs || "").getTime() -
132
+ new Date(b.timestampUtcMs || "").getTime())
121
133
  .sort((a, b) => a.index - b.index)
122
134
  .map((op, i) => ({
123
135
  ...op,
@@ -127,7 +139,25 @@ export function reshuffleByTimestampAndIndex(startIndex, opsA, opsB) {
127
139
  }
128
140
  // TODO: implement better operation equality function
129
141
  export function operationsAreEqual(op1, op2) {
130
- return stringify(op1) === stringify(op2);
142
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access */
143
+ const a = op1;
144
+ const b = op2;
145
+ const aComparable = {
146
+ index: a.index,
147
+ skip: a.skip,
148
+ type: a.type ?? null,
149
+ scope: a.scope ?? null,
150
+ input: a.input ?? null,
151
+ };
152
+ const bComparable = {
153
+ index: b.index,
154
+ skip: b.skip,
155
+ type: b.type ?? null,
156
+ scope: b.scope ?? null,
157
+ input: b.input ?? null,
158
+ };
159
+ /* eslint-enable @typescript-eslint/no-unsafe-assignment */
160
+ return stringify(aComparable) === stringify(bComparable);
131
161
  }
132
162
  // [T0:0 T1:0 T2:0 T3:0] + [B4:0 B5:0] = [T0:0 T1:0 T2:0 T3:0 B4:0 B5:0]
133
163
  // [T0:0 T1:0 T2:0 T3:0] + [B3:0 B4:0] = [T0:0 T1:0 T2:0 B3:0 B4:0]
@@ -272,10 +302,10 @@ export function checkOperationsIntegrity(operations) {
272
302
  }
273
303
  export function groupOperationsByScope(operations) {
274
304
  const result = operations.reduce((acc, operation) => {
275
- if (!acc[operation.scope]) {
276
- acc[operation.scope] = [];
305
+ if (!acc[operation.action.scope]) {
306
+ acc[operation.action.scope] = [];
277
307
  }
278
- acc[operation.scope]?.push(operation);
308
+ acc[operation.action.scope]?.push(operation);
279
309
  return acc;
280
310
  }, {});
281
311
  return result;
@@ -325,14 +355,14 @@ export function prepareOperations(operationsHistory, newOperations) {
325
355
  export function removeExistingOperations(newOperations, operationsHistory) {
326
356
  return newOperations.filter((newOperation) => {
327
357
  return !operationsHistory.some((historyOperation) => {
328
- return ((newOperation.type === "NOOP" &&
358
+ return ((newOperation.action.type === "NOOP" &&
329
359
  newOperation.skip === 0 &&
330
360
  newOperation.index === historyOperation.index) ||
331
361
  (newOperation.index === historyOperation.index &&
332
362
  newOperation.skip === historyOperation.skip &&
333
- newOperation.scope === historyOperation.scope &&
363
+ newOperation.action.scope === historyOperation.action.scope &&
334
364
  newOperation.hash === historyOperation.hash &&
335
- newOperation.type === historyOperation.type));
365
+ newOperation.action.type === historyOperation.action.type));
336
366
  });
337
367
  });
338
368
  }