document-model 3.2.0-dev.8 → 3.2.0-staging.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 +2 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/src/document/actions/creators.d.ts +1 -3
- package/dist/src/document/actions/creators.d.ts.map +1 -1
- package/dist/src/document/actions/creators.js +1 -1
- package/dist/src/document/actions/creators.js.map +1 -1
- package/dist/src/document/actions/operations.d.ts +1 -16
- package/dist/src/document/actions/operations.d.ts.map +1 -1
- package/dist/src/document/actions/operations.js +2 -3
- package/dist/src/document/actions/operations.js.map +1 -1
- package/dist/src/document/object.d.ts +4 -0
- package/dist/src/document/object.d.ts.map +1 -1
- package/dist/src/document/object.js +11 -5
- package/dist/src/document/object.js.map +1 -1
- package/dist/src/document/reducer.d.ts.map +1 -1
- package/dist/src/document/reducer.js +4 -8
- package/dist/src/document/reducer.js.map +1 -1
- package/dist/src/document/schema/zod.d.ts.map +1 -1
- package/dist/src/document/signal.d.ts +1 -9
- package/dist/src/document/signal.d.ts.map +1 -1
- package/dist/src/document/types.d.ts +41 -32
- package/dist/src/document/types.d.ts.map +1 -1
- package/dist/src/document/utils/base.d.ts +3 -8
- package/dist/src/document/utils/base.d.ts.map +1 -1
- package/dist/src/document/utils/base.js +27 -31
- package/dist/src/document/utils/base.js.map +1 -1
- package/dist/src/document/utils/file.d.ts.map +1 -1
- package/dist/src/document/utils/file.js +12 -6
- package/dist/src/document/utils/file.js.map +1 -1
- package/dist/src/document-model/gen/utils.d.ts.map +1 -1
- package/dist/src/document-model/gen/utils.js +2 -5
- package/dist/src/document-model/gen/utils.js.map +1 -1
- package/dist/test/document/crypto.test.js +5 -40
- package/dist/test/document/crypto.test.js.map +1 -1
- package/dist/test/document/event-vs-command.test.js +4 -4
- package/dist/test/document/event-vs-command.test.js.map +1 -1
- package/dist/test/document/local.test.js +19 -18
- package/dist/test/document/local.test.js.map +1 -1
- package/dist/test/document/operation-id.test.js +2 -1
- package/dist/test/document/operation-id.test.js.map +1 -1
- package/dist/test/document/prune.test.js +20 -15
- package/dist/test/document/prune.test.js.map +1 -1
- package/dist/test/document/reducer.test.js +7 -5
- package/dist/test/document/reducer.test.js.map +1 -1
- package/dist/test/document/skip-operations.test.js +16 -6
- package/dist/test/document/skip-operations.test.js.map +1 -1
- package/dist/test/document/undo-redo.test.js +12 -9
- package/dist/test/document/undo-redo.test.js.map +1 -1
- package/dist/test/document/utils.test.js +4 -2
- package/dist/test/document/utils.test.js.map +1 -1
- package/dist/test/document-model/object.test.js +1 -1
- package/dist/test/document-model/object.test.js.map +1 -1
- package/dist/test/document-model/replay.test.js +25 -19
- package/dist/test/document-model/replay.test.js.map +1 -1
- package/dist/test/document-model/skip-operations.test.js +16 -13
- package/dist/test/document-model/skip-operations.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/src/document/ph-types.d.ts +0 -66
- package/dist/src/document/ph-types.d.ts.map +0 -1
- package/dist/src/document/ph-types.js +0 -2
- package/dist/src/document/ph-types.js.map +0 -1
- package/dist/src/document/utils/header.d.ts +0 -99
- package/dist/src/document/utils/header.d.ts.map +0 -1
- package/dist/src/document/utils/header.js +0 -200
- package/dist/src/document/utils/header.js.map +0 -1
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { type PHDocumentHeader } from "#document/ph-types.js";
|
|
2
1
|
import { baseReducer } from "../reducer.js";
|
|
3
2
|
import { type UndoAction, type UndoRedoAction } from "../schema/types.js";
|
|
4
3
|
import { type SignalDispatch } from "../signal.js";
|
|
5
|
-
import { type BaseAction, type CreateState, type DocumentAction, type DocumentOperations, type DocumentOperationsIgnoreMap, type ExtendedState, type ExtendedStateFromDocument, type GlobalStateFromDocument, type LocalStateFromDocument, type MappedOperation, type Operation, type OperationScope, type OperationsFromDocument, type PartialState, type PHDocument, type Reducer, type ReducerOptions, type StateReducer } from "../types.js";
|
|
4
|
+
import { type BaseAction, type CreateState, type DocumentAction, type DocumentHeader, type DocumentOperations, type DocumentOperationsIgnoreMap, type ExtendedState, type ExtendedStateFromDocument, type GlobalStateFromDocument, type LocalStateFromDocument, type MappedOperation, type Operation, type OperationScope, type OperationsFromDocument, type PartialState, type PHDocument, type Reducer, type ReducerOptions, type StateReducer } from "../types.js";
|
|
6
5
|
export declare function isNoopOperation<TOp extends {
|
|
7
6
|
type: string;
|
|
8
7
|
skip: number;
|
|
@@ -54,10 +53,6 @@ export declare function createAction<TAction extends BaseAction<string, unknown>
|
|
|
54
53
|
*/
|
|
55
54
|
export declare function createReducer<TDocument extends PHDocument>(stateReducer: StateReducer<TDocument>, documentReducer?: typeof baseReducer): Reducer<TDocument>;
|
|
56
55
|
export declare function baseCreateExtendedState<TDocument extends PHDocument>(initialState?: Partial<ExtendedState<PartialState<GlobalStateFromDocument<TDocument>>, PartialState<LocalStateFromDocument<TDocument>>>>, createState?: CreateState<TDocument>): ExtendedStateFromDocument<TDocument>;
|
|
57
|
-
/**
|
|
58
|
-
* Important note: it is the responsibility of the caller to set the document type
|
|
59
|
-
* on the header.
|
|
60
|
-
*/
|
|
61
56
|
export declare function baseCreateDocument<TDocument extends PHDocument>(initialState?: Partial<ExtendedStateFromDocument<TDocument>>, createState?: CreateState<TDocument>): TDocument;
|
|
62
57
|
export declare function hashDocumentStateForScope(document: {
|
|
63
58
|
state: {
|
|
@@ -76,13 +71,13 @@ export declare function readOnly<T>(value: T): Readonly<T>;
|
|
|
76
71
|
export declare function mapSkippedOperations(operations: Operation[], skippedHeadOperations?: number): MappedOperation[];
|
|
77
72
|
export declare function sortMappedOperations(operations: DocumentOperationsIgnoreMap): MappedOperation<import("../types.js").Action<string, unknown, OperationScope>>[];
|
|
78
73
|
export declare function getDocumentLastModified(document: PHDocument): string;
|
|
79
|
-
export declare function replayOperations<TDocument extends PHDocument>(initialState: ExtendedStateFromDocument<TDocument>, clearedOperations: OperationsFromDocument<TDocument>, stateReducer: StateReducer<TDocument>, dispatch?: SignalDispatch, header?:
|
|
74
|
+
export declare function replayOperations<TDocument extends PHDocument>(initialState: ExtendedStateFromDocument<TDocument>, clearedOperations: OperationsFromDocument<TDocument>, stateReducer: StateReducer<TDocument>, dispatch?: SignalDispatch, header?: DocumentHeader, documentReducer?: typeof baseReducer, skipHeaderOperations?: SkipHeaderOperations, options?: ReducerOptions): TDocument;
|
|
80
75
|
export type SkipHeaderOperations = Partial<Record<OperationScope, number>>;
|
|
81
76
|
export type ReplayDocumentOptions = {
|
|
82
77
|
checkHashes?: boolean;
|
|
83
78
|
reuseOperationResultingState?: boolean;
|
|
84
79
|
operationResultingStateParser?: <TState>(state: string) => TState;
|
|
85
80
|
};
|
|
86
|
-
export declare function replayDocument<TDocument extends PHDocument>(initialState: ExtendedStateFromDocument<TDocument>, operations: DocumentOperations, reducer: Reducer<TDocument>, dispatch?: SignalDispatch, header?:
|
|
81
|
+
export declare function replayDocument<TDocument extends PHDocument>(initialState: ExtendedStateFromDocument<TDocument>, operations: DocumentOperations, reducer: Reducer<TDocument>, dispatch?: SignalDispatch, header?: DocumentHeader, skipHeaderOperations?: SkipHeaderOperations, options?: ReplayDocumentOptions): TDocument;
|
|
87
82
|
export declare function parseResultingState<TState>(state: string | null | undefined): TState;
|
|
88
83
|
//# sourceMappingURL=base.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/document/utils/base.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/document/utils/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { hash } from "#utils/env";
|
|
1
|
+
import { generateUUID, 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
5
|
import { baseReducer, updateHeader } from "../reducer.js";
|
|
6
6
|
import { sortOperations } from "./document-helpers.js";
|
|
7
7
|
import { InvalidActionInputError, InvalidActionInputZodError, } from "./errors.js";
|
|
8
|
-
import { createUnsignedHeader } from "./header.js";
|
|
9
8
|
export function isNoopOperation(op) {
|
|
10
9
|
return (op.type === NOOP &&
|
|
11
10
|
op.skip !== undefined &&
|
|
@@ -94,7 +93,20 @@ export function createReducer(stateReducer, documentReducer = baseReducer) {
|
|
|
94
93
|
return reducer;
|
|
95
94
|
}
|
|
96
95
|
export function baseCreateExtendedState(initialState, createState) {
|
|
96
|
+
const id = initialState?.id ?? generateUUID();
|
|
97
97
|
return {
|
|
98
|
+
name: "",
|
|
99
|
+
documentType: "",
|
|
100
|
+
revision: {
|
|
101
|
+
global: 0,
|
|
102
|
+
local: 0,
|
|
103
|
+
},
|
|
104
|
+
created: new Date().toISOString(),
|
|
105
|
+
lastModified: new Date().toISOString(),
|
|
106
|
+
attachments: {},
|
|
107
|
+
...initialState,
|
|
108
|
+
id: id,
|
|
109
|
+
slug: initialState?.slug ?? id,
|
|
98
110
|
state: createState?.(initialState?.state) ??
|
|
99
111
|
(initialState?.state ?? {
|
|
100
112
|
global: {},
|
|
@@ -102,25 +114,17 @@ export function baseCreateExtendedState(initialState, createState) {
|
|
|
102
114
|
}),
|
|
103
115
|
};
|
|
104
116
|
}
|
|
105
|
-
/**
|
|
106
|
-
* Important note: it is the responsibility of the caller to set the document type
|
|
107
|
-
* on the header.
|
|
108
|
-
*/
|
|
109
117
|
export function baseCreateDocument(initialState, createState) {
|
|
110
118
|
const state = baseCreateExtendedState(initialState, createState);
|
|
111
|
-
const header = createUnsignedHeader();
|
|
112
119
|
return {
|
|
113
120
|
...state,
|
|
114
|
-
header,
|
|
115
121
|
initialState: state,
|
|
116
122
|
operations: { global: [], local: [] },
|
|
117
123
|
clipboard: [],
|
|
118
|
-
attachments: {},
|
|
119
124
|
};
|
|
120
125
|
}
|
|
121
126
|
export function hashDocumentStateForScope(document, scope = "global") {
|
|
122
|
-
|
|
123
|
-
return hash(stateString);
|
|
127
|
+
return hash(stringifyJson(document.state[scope] || ""));
|
|
124
128
|
}
|
|
125
129
|
export function readOnly(value) {
|
|
126
130
|
return Object.freeze(value);
|
|
@@ -175,7 +179,8 @@ export function sortMappedOperations(operations) {
|
|
|
175
179
|
// it's operations, falling back to the initial state
|
|
176
180
|
export function getDocumentLastModified(document) {
|
|
177
181
|
const sortedOperations = sortOperations(Object.values(document.operations).flat());
|
|
178
|
-
|
|
182
|
+
const timestamp = sortedOperations.at(-1)?.timestamp || document.initialState.lastModified;
|
|
183
|
+
return timestamp;
|
|
179
184
|
}
|
|
180
185
|
// Runs the operations on the initial data using the
|
|
181
186
|
// provided reducer, wrapped with the document reducer.
|
|
@@ -236,7 +241,7 @@ export function replayDocument(initialState, operations, reducer, dispatch, head
|
|
|
236
241
|
// builds a new document from the initial data
|
|
237
242
|
const document = baseCreateDocument(documentState);
|
|
238
243
|
if (header?.slug) {
|
|
239
|
-
document.
|
|
244
|
+
document.slug = header.slug;
|
|
240
245
|
}
|
|
241
246
|
document.initialState = initialState;
|
|
242
247
|
document.operations = initialOperations;
|
|
@@ -297,27 +302,18 @@ export function replayDocument(initialState, operations, reducer, dispatch, head
|
|
|
297
302
|
};
|
|
298
303
|
}, { global: [], local: [] });
|
|
299
304
|
// gets the last modified timestamp from the latest operation
|
|
300
|
-
const lastModified =
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
return acc;
|
|
310
|
-
}, document.header.lastModifiedAtUtcIso);
|
|
311
|
-
if (header) {
|
|
312
|
-
result.header = {
|
|
313
|
-
...header,
|
|
314
|
-
revision: result.header.revision,
|
|
315
|
-
lastModifiedAtUtcIso: lastModified,
|
|
316
|
-
};
|
|
317
|
-
}
|
|
305
|
+
const lastModified = Object.values(resultOperations).reduce((acc, curr) => {
|
|
306
|
+
const operation = curr.at(-1);
|
|
307
|
+
if (operation && operation.timestamp > acc) {
|
|
308
|
+
acc = operation.timestamp;
|
|
309
|
+
}
|
|
310
|
+
return acc;
|
|
311
|
+
}, initialState.lastModified);
|
|
318
312
|
return {
|
|
319
313
|
...result,
|
|
320
314
|
operations: resultOperations,
|
|
315
|
+
lastModified,
|
|
316
|
+
meta: header?.meta ?? {},
|
|
321
317
|
};
|
|
322
318
|
}
|
|
323
319
|
export function parseResultingState(state) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/document/utils/base.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/document/utils/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../../src/document/utils/file.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../../src/document/utils/file.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACb,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAEL,KAAK,eAAe,EAGpB,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAkB,KAAK,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAOvE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC;AAE5E,wBAAgB,SAAS,CAAC,QAAQ,EAAE,UAAU,SA0C7C;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,MAAM,mBAgBd;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,UAAU,EACpB,KAAK,EAAE,oBAAoB,iBAO5B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gBAAgB,CAAC,SAAS,SAAS,UAAU,EACjE,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,EAC3B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,SAAS,CAAC,CAGpB;AAED,wBAAsB,iBAAiB,CAAC,SAAS,SAAS,UAAU,EAClE,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,EAC3B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,SAAS,CAAC,CAIpB;AAgED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAWzE;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAMzE"}
|
|
@@ -7,7 +7,16 @@ import { validateOperations } from "./validation.js";
|
|
|
7
7
|
export function createZip(document) {
|
|
8
8
|
// create zip file
|
|
9
9
|
const zip = new JSZip();
|
|
10
|
-
const
|
|
10
|
+
const { id, slug, name, revision, documentType, created, lastModified } = document;
|
|
11
|
+
const header = {
|
|
12
|
+
id,
|
|
13
|
+
slug,
|
|
14
|
+
name,
|
|
15
|
+
revision,
|
|
16
|
+
documentType,
|
|
17
|
+
created,
|
|
18
|
+
lastModified,
|
|
19
|
+
};
|
|
11
20
|
zip.file("header.json", JSON.stringify(header, null, 2));
|
|
12
21
|
zip.file("state.json", JSON.stringify(document.initialState || {}, null, 2));
|
|
13
22
|
zip.file("current-state.json", JSON.stringify(document.state || {}, null, 2));
|
|
@@ -46,7 +55,7 @@ export async function baseSaveToFile(document, path, extension, name) {
|
|
|
46
55
|
type: "uint8array",
|
|
47
56
|
streamFiles: true,
|
|
48
57
|
});
|
|
49
|
-
const fileName = name ?? document.
|
|
58
|
+
const fileName = name ?? document.name;
|
|
50
59
|
const fileExtension = `.${extension}.zip`;
|
|
51
60
|
return writeFile(path, fileName.endsWith(fileExtension) ? fileName : `${fileName}${fileExtension}`, file);
|
|
52
61
|
}
|
|
@@ -104,14 +113,11 @@ async function loadFromZip(zip, reducer, options) {
|
|
|
104
113
|
const errorMessages = operationsError.map((err) => err.message);
|
|
105
114
|
throw new Error(errorMessages.join("\n"));
|
|
106
115
|
}
|
|
107
|
-
// TODO: There is a race condition here where operations are replayed and do not necessary
|
|
108
|
-
// result in the same lastModified value. This will be fixed once the header replaces this
|
|
109
|
-
// information as it is explicitly set below to the saved time.
|
|
110
116
|
let result = replayDocument(initialState, clearedOperations, reducer, undefined, header, {}, options);
|
|
111
117
|
if (header) {
|
|
112
118
|
result = {
|
|
113
119
|
...result,
|
|
114
|
-
header,
|
|
120
|
+
...header,
|
|
115
121
|
};
|
|
116
122
|
}
|
|
117
123
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../../../src/document/utils/file.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../../../src/document/utils/file.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/document-model/gen/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,UAAU,EACV,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAkB5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,qBAAqB,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/document-model/gen/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,UAAU,EACV,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAkB5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,qBAAqB,CAK1D,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,mBAAmB,CAAC,qBAAqB,CAO1E,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,qBAAqB,CAIhE,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,UAExB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,gBAE9B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,qBAAqB,CAE5D,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,qBAAqB,CAE9D,CAAC"}
|
|
@@ -5,18 +5,15 @@ import { reducer } from "./reducer.js";
|
|
|
5
5
|
export { fileExtension } from "./constants.js";
|
|
6
6
|
export const createState = (state) => {
|
|
7
7
|
return {
|
|
8
|
-
document: { ...documentModelState, ...state?.document },
|
|
9
8
|
global: { ...documentModelState, ...state?.global },
|
|
10
9
|
local: { ...initialLocalState, ...state?.local },
|
|
11
10
|
};
|
|
12
11
|
};
|
|
13
12
|
export const createExtendedState = (extendedState) => {
|
|
14
|
-
return baseCreateExtendedState({ ...extendedState }, createState);
|
|
13
|
+
return baseCreateExtendedState({ ...extendedState, documentType }, createState);
|
|
15
14
|
};
|
|
16
15
|
export const createDocument = (state) => {
|
|
17
|
-
|
|
18
|
-
document.header.documentType = documentType;
|
|
19
|
-
return document;
|
|
16
|
+
return baseCreateDocument(createExtendedState(state), createState);
|
|
20
17
|
};
|
|
21
18
|
export const saveToFile = (document, path, name) => {
|
|
22
19
|
return baseSaveToFile(document, path, fileExtension, name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/document-model/gen/utils.ts"],"names":[],"mappings":"AASA,OAAO,EACL,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,CAAC,MAAM,WAAW,GAAuC,CAAC,KAAK,EAAE,EAAE;IACvE,OAAO;QACL,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/document-model/gen/utils.ts"],"names":[],"mappings":"AASA,OAAO,EACL,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,CAAC,MAAM,WAAW,GAAuC,CAAC,KAAK,EAAE,EAAE;IACvE,OAAO;QACL,MAAM,EAAE,EAAE,GAAG,kBAAkB,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE;QACnD,KAAK,EAAE,EAAE,GAAG,iBAAiB,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE;KACjD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAA+C,CAC7E,aAAa,EACb,EAAE;IACF,OAAO,uBAAuB,CAC5B,EAAE,GAAG,aAAa,EAAE,YAAY,EAAE,EAClC,WAAW,CACZ,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAA0C,CACnE,KAAK,EACL,EAAE;IACF,OAAO,kBAAkB,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;AACrE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IAC7D,OAAO,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;AAC7D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAqB,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;IACpE,OAAO,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAwC,CAAC,IAAI,EAAE,EAAE;IACxE,OAAO,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAyC,CAAC,KAAK,EAAE,EAAE;IAC3E,OAAO,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC,CAAC"}
|
|
@@ -1,31 +1,7 @@
|
|
|
1
|
-
import { generateUUID } from "#utils/env";
|
|
2
1
|
import { afterAll, beforeAll, describe, expect, it, vi } from "vitest";
|
|
3
2
|
import { baseCreateDocument, hashDocumentStateForScope, } from "../../src/document/utils/base.js";
|
|
4
3
|
import { ab2hex, buildOperationSignatureMessage, buildOperationSignatureParams, buildSignedOperation, hex2ab, verifyOperationSignature, } from "../../src/document/utils/crypto.js";
|
|
5
|
-
import { PublicKeySigner, sign, verify, } from "../../src/document/utils/header.js";
|
|
6
4
|
import { countReducer, increment } from "../helpers.js";
|
|
7
|
-
/**
|
|
8
|
-
* A signer that uses a key pair to sign and verify data.
|
|
9
|
-
*/
|
|
10
|
-
class KeyPairSigner extends PublicKeySigner {
|
|
11
|
-
#privateKey;
|
|
12
|
-
#privateCryptoKey;
|
|
13
|
-
constructor(publicKey, privateKey) {
|
|
14
|
-
super(publicKey);
|
|
15
|
-
this.#privateKey = privateKey;
|
|
16
|
-
}
|
|
17
|
-
async sign(data) {
|
|
18
|
-
const subtleCrypto = await this.subtleCrypto;
|
|
19
|
-
if (!this.#privateCryptoKey) {
|
|
20
|
-
this.#privateCryptoKey = await subtleCrypto.importKey("jwk", this.#privateKey, {
|
|
21
|
-
name: "Ed25519",
|
|
22
|
-
namedCurve: "Ed25519",
|
|
23
|
-
}, true, ["sign"]);
|
|
24
|
-
}
|
|
25
|
-
const arrayBuffer = await subtleCrypto.sign("Ed25519", this.#privateCryptoKey, data.buffer);
|
|
26
|
-
return new Uint8Array(arrayBuffer);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
5
|
describe("Crypto utils", () => {
|
|
30
6
|
beforeAll(() => {
|
|
31
7
|
vi.useFakeTimers().setSystemTime(new Date("2024-01-01"));
|
|
@@ -35,6 +11,7 @@ describe("Crypto utils", () => {
|
|
|
35
11
|
});
|
|
36
12
|
it("should build signature with empty previousState", () => {
|
|
37
13
|
const document = baseCreateDocument({
|
|
14
|
+
documentType: "powerhouse/counter",
|
|
38
15
|
state: { global: { count: 0 }, local: { name: "" } },
|
|
39
16
|
});
|
|
40
17
|
const action = {
|
|
@@ -64,6 +41,7 @@ describe("Crypto utils", () => {
|
|
|
64
41
|
});
|
|
65
42
|
it("should build signature with previousState", () => {
|
|
66
43
|
let document = baseCreateDocument({
|
|
44
|
+
documentType: "powerhouse/counter",
|
|
67
45
|
state: { global: { count: 0 }, local: { name: "" } },
|
|
68
46
|
});
|
|
69
47
|
document = countReducer(document, increment());
|
|
@@ -106,6 +84,7 @@ describe("Crypto utils", () => {
|
|
|
106
84
|
const publicKeyRaw = await crypto.subtle.exportKey("raw", keyPair.publicKey);
|
|
107
85
|
const publicKey = `0x${ab2hex(publicKeyRaw)}`;
|
|
108
86
|
const document = baseCreateDocument({
|
|
87
|
+
documentType: "powerhouse/counter",
|
|
109
88
|
state: { global: { count: 0 }, local: { name: "" } },
|
|
110
89
|
});
|
|
111
90
|
const operation = await buildSignedOperation({ ...increment(), id: "123" }, countReducer, document, {
|
|
@@ -149,6 +128,7 @@ describe("Crypto utils", () => {
|
|
|
149
128
|
const publicKeyRaw = await crypto.subtle.exportKey("raw", keyPair.publicKey);
|
|
150
129
|
const publicKey = `0x${ab2hex(publicKeyRaw)}`;
|
|
151
130
|
const document = baseCreateDocument({
|
|
131
|
+
documentType: "powerhouse/counter",
|
|
152
132
|
state: { global: { count: 0 }, local: { name: "" } },
|
|
153
133
|
});
|
|
154
134
|
const operation = await buildSignedOperation({ ...increment(), id: "123" }, countReducer, document, {
|
|
@@ -178,6 +158,7 @@ describe("Crypto utils", () => {
|
|
|
178
158
|
const publicKeyRaw = await crypto.subtle.exportKey("raw", keyPair.publicKey);
|
|
179
159
|
const publicKey = `0x${ab2hex(publicKeyRaw)}`;
|
|
180
160
|
const document = baseCreateDocument({
|
|
161
|
+
documentType: "powerhouse/counter",
|
|
181
162
|
state: { global: { count: 0 }, local: { name: "" } },
|
|
182
163
|
});
|
|
183
164
|
const operation = await buildSignedOperation({ ...increment(), id: "123" }, countReducer, document, {
|
|
@@ -196,21 +177,5 @@ describe("Crypto utils", () => {
|
|
|
196
177
|
});
|
|
197
178
|
expect(verified).toBe(false);
|
|
198
179
|
});
|
|
199
|
-
it("should sign and verify id", async () => {
|
|
200
|
-
const parameters = {
|
|
201
|
-
documentType: "powerhouse/counter",
|
|
202
|
-
createdAtUtcIso: new Date().toISOString(),
|
|
203
|
-
nonce: generateUUID(),
|
|
204
|
-
};
|
|
205
|
-
const keyPair = await crypto.subtle.generateKey("Ed25519", true, [
|
|
206
|
-
"sign",
|
|
207
|
-
"verify",
|
|
208
|
-
]);
|
|
209
|
-
const publicKey = await crypto.subtle.exportKey("jwk", keyPair.publicKey);
|
|
210
|
-
const privateKey = await crypto.subtle.exportKey("jwk", keyPair.privateKey);
|
|
211
|
-
const signer = new KeyPairSigner(publicKey, privateKey);
|
|
212
|
-
const signature = await sign(parameters, signer);
|
|
213
|
-
await verify(parameters, signature, signer);
|
|
214
|
-
});
|
|
215
180
|
});
|
|
216
181
|
//# sourceMappingURL=crypto.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.test.js","sourceRoot":"","sources":["../../../test/document/crypto.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"crypto.test.js","sourceRoot":"","sources":["../../../test/document/crypto.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,7 @@ describe("Event", () => {
|
|
|
26
26
|
hash: "test-4-hash",
|
|
27
27
|
scope: "global",
|
|
28
28
|
}, undefined, { skip: 1 });
|
|
29
|
-
expect(document.
|
|
29
|
+
expect(document.revision.global).toBe(4);
|
|
30
30
|
expect(document.operations.global).toMatchObject([
|
|
31
31
|
{
|
|
32
32
|
type: "TEST",
|
|
@@ -67,7 +67,7 @@ describe("Event", () => {
|
|
|
67
67
|
hash: "test-4-hash",
|
|
68
68
|
scope: "global",
|
|
69
69
|
}, undefined, { skip: 1 });
|
|
70
|
-
expect(document.
|
|
70
|
+
expect(document.revision.global).toBe(4);
|
|
71
71
|
expect(document.operations.global).toMatchObject([
|
|
72
72
|
{
|
|
73
73
|
type: "TEST",
|
|
@@ -108,7 +108,7 @@ describe("Event", () => {
|
|
|
108
108
|
input: {},
|
|
109
109
|
scope: "global",
|
|
110
110
|
});
|
|
111
|
-
expect(document.
|
|
111
|
+
expect(document.revision.global).toBe(5);
|
|
112
112
|
expect(document.operations.global).toMatchObject([
|
|
113
113
|
{
|
|
114
114
|
type: "TEST",
|
|
@@ -148,7 +148,7 @@ describe("Event", () => {
|
|
|
148
148
|
hash: "test-4-hash",
|
|
149
149
|
scope: "global",
|
|
150
150
|
}, undefined, { skip: 1 });
|
|
151
|
-
expect(document.
|
|
151
|
+
expect(document.revision.global).toBe(4);
|
|
152
152
|
expect(document.operations.global).toMatchObject([
|
|
153
153
|
{
|
|
154
154
|
type: "TEST",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-vs-command.test.js","sourceRoot":"","sources":["../../../test/document/event-vs-command.test.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,oHAAoH;AACpH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACrB,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,IAAI,QAAQ,GAAG,kBAAkB,EAAE,CAAC;QAEpC,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE;YACvC,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QAEH,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE;YACvC,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QAEH,QAAQ,GAAG,mBAAmB,CAC5B,QAAQ,EACR;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,QAAQ;SAChB,EACD,SAAS,EACT,EAAE,IAAI,EAAE,CAAC,EAAE,CACZ,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"event-vs-command.test.js","sourceRoot":"","sources":["../../../test/document/event-vs-command.test.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,oHAAoH;AACpH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACrB,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,IAAI,QAAQ,GAAG,kBAAkB,EAAE,CAAC;QAEpC,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE;YACvC,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QAEH,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE;YACvC,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QAEH,QAAQ,GAAG,mBAAmB,CAC5B,QAAQ,EACR;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,QAAQ;SAChB,EACD,SAAS,EACT,EAAE,IAAI,EAAE,CAAC,EAAE,CACZ,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;YAC/C;gBACE,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,CAAC;aACT;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,CAAC;aACT;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,CAAC;aACR;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,IAAI,QAAQ,GAAG,kBAAkB,EAAE,CAAC;QAEpC,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE;YACvC,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QAEH,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE;YACvC,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QAEH,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE;YACvC,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QAEH,QAAQ,GAAG,mBAAmB,CAC5B,QAAQ,EACR;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,QAAQ;SAChB,EACD,SAAS,EACT,EAAE,IAAI,EAAE,CAAC,EAAE,CACZ,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;YAC/C;gBACE,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,CAAC;aACT;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,CAAC;aACT;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,CAAC;aACR;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,IAAI,QAAQ,GAAG,kBAAkB,EAAE,CAAC;QAEpC,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE;YACvC,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QAEH,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE;YACvC,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QAEH,QAAQ,GAAG,mBAAmB,CAC5B,QAAQ,EACR;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,QAAQ;SAChB,EACD,SAAS,EACT,EAAE,IAAI,EAAE,CAAC,EAAE,CACZ,CAAC;QAEF,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE;YACvC,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;YAC/C;gBACE,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,CAAC;aACT;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,CAAC;aACT;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,CAAC;aACR;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,CAAC;aACT;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;QACnF,IAAI,QAAQ,GAAG,kBAAkB,EAAE,CAAC;QAEpC,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE;YACvC,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QAEH,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE;YACvC,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QAEH,QAAQ,GAAG,mBAAmB,CAC5B,QAAQ,EACR;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,QAAQ;SAChB,EACD,SAAS,EACT,EAAE,IAAI,EAAE,CAAC,EAAE,CACZ,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;YAC/C;gBACE,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,CAAC;aACT;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,CAAC;aACT;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,CAAC;aACR;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|