document-model 4.1.0-dev.9 → 4.1.0-staging.1

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 (117) hide show
  1. package/dist/index.d.ts +8 -7
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +5 -4
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/document/actions/creators.d.ts +2 -2
  6. package/dist/src/document/actions/creators.d.ts.map +1 -1
  7. package/dist/src/document/actions/creators.js +1 -1
  8. package/dist/src/document/actions/creators.js.map +1 -1
  9. package/dist/src/document/actions/operations.d.ts +5 -5
  10. package/dist/src/document/actions/operations.d.ts.map +1 -1
  11. package/dist/src/document/actions/operations.js +11 -9
  12. package/dist/src/document/actions/operations.js.map +1 -1
  13. package/dist/src/document/object.d.ts +3 -3
  14. package/dist/src/document/object.d.ts.map +1 -1
  15. package/dist/src/document/object.js +1 -1
  16. package/dist/src/document/object.js.map +1 -1
  17. package/dist/src/document/ph-factories.d.ts +34 -3
  18. package/dist/src/document/ph-factories.d.ts.map +1 -1
  19. package/dist/src/document/ph-factories.js +64 -33
  20. package/dist/src/document/ph-factories.js.map +1 -1
  21. package/dist/src/document/ph-types.d.ts +10 -2
  22. package/dist/src/document/ph-types.d.ts.map +1 -1
  23. package/dist/src/document/reducer.d.ts +4 -4
  24. package/dist/src/document/reducer.d.ts.map +1 -1
  25. package/dist/src/document/reducer.js +27 -29
  26. package/dist/src/document/reducer.js.map +1 -1
  27. package/dist/src/document/schema/types.d.ts +13 -1
  28. package/dist/src/document/schema/types.d.ts.map +1 -1
  29. package/dist/src/document/schema/zod.d.ts +31 -2
  30. package/dist/src/document/schema/zod.d.ts.map +1 -1
  31. package/dist/src/document/schema/zod.js +23 -11
  32. package/dist/src/document/schema/zod.js.map +1 -1
  33. package/dist/src/document/types.d.ts +58 -62
  34. package/dist/src/document/types.d.ts.map +1 -1
  35. package/dist/src/document/utils/base.d.ts +5 -6
  36. package/dist/src/document/utils/base.d.ts.map +1 -1
  37. package/dist/src/document/utils/base.js +31 -30
  38. package/dist/src/document/utils/base.js.map +1 -1
  39. package/dist/src/document/utils/crypto.d.ts +5 -5
  40. package/dist/src/document/utils/crypto.d.ts.map +1 -1
  41. package/dist/src/document/utils/crypto.js +25 -15
  42. package/dist/src/document/utils/crypto.js.map +1 -1
  43. package/dist/src/document/utils/document-helpers.d.ts +9 -14
  44. package/dist/src/document/utils/document-helpers.d.ts.map +1 -1
  45. package/dist/src/document/utils/document-helpers.js +47 -17
  46. package/dist/src/document/utils/document-helpers.js.map +1 -1
  47. package/dist/src/document/utils/file.d.ts.map +1 -1
  48. package/dist/src/document/utils/file.js.map +1 -1
  49. package/dist/src/document/utils/header.js.map +1 -1
  50. package/dist/src/document/utils/validation.js +1 -1
  51. package/dist/src/document/utils/validation.js.map +1 -1
  52. package/dist/src/document-model/gen/object.d.ts +2 -2
  53. package/dist/src/document-model/gen/object.d.ts.map +1 -1
  54. package/dist/src/document-model/gen/object.js.map +1 -1
  55. package/dist/src/document-model/gen/schema/zod.d.ts +6 -6
  56. package/dist/src/document-model/gen/schema/zod.d.ts.map +1 -1
  57. package/dist/src/document-model/gen/types.d.ts +2 -2
  58. package/dist/src/document-model/gen/types.d.ts.map +1 -1
  59. package/dist/src/document-model/gen/utils.d.ts +1 -2
  60. package/dist/src/document-model/gen/utils.d.ts.map +1 -1
  61. package/dist/src/document-model/gen/utils.js +6 -8
  62. package/dist/src/document-model/gen/utils.js.map +1 -1
  63. package/dist/test/document/crypto.test.js +25 -48
  64. package/dist/test/document/crypto.test.js.map +1 -1
  65. package/dist/test/document/event-vs-command.test.js +80 -50
  66. package/dist/test/document/event-vs-command.test.js.map +1 -1
  67. package/dist/test/document/local.test.js +26 -43
  68. package/dist/test/document/local.test.js.map +1 -1
  69. package/dist/test/document/operation-id.test.js +4 -6
  70. package/dist/test/document/operation-id.test.js.map +1 -1
  71. package/dist/test/document/prune.test.js +21 -34
  72. package/dist/test/document/prune.test.js.map +1 -1
  73. package/dist/test/document/reducer.test.js +99 -76
  74. package/dist/test/document/reducer.test.js.map +1 -1
  75. package/dist/test/document/skip-operations.test.js +65 -85
  76. package/dist/test/document/skip-operations.test.js.map +1 -1
  77. package/dist/test/document/undo-redo.test.js +60 -34
  78. package/dist/test/document/undo-redo.test.js.map +1 -1
  79. package/dist/test/document/utils.test.js +49 -36
  80. package/dist/test/document/utils.test.js.map +1 -1
  81. package/dist/test/document-helpers/addUndo.test.js +1 -1
  82. package/dist/test/document-helpers/addUndo.test.js.map +1 -1
  83. package/dist/test/document-helpers/attachBranch.test.js +20 -20
  84. package/dist/test/document-helpers/attachBranch.test.js.map +1 -1
  85. package/dist/test/document-helpers/conflictResolution.test.js +10 -10
  86. package/dist/test/document-helpers/conflictResolution.test.js.map +1 -1
  87. package/dist/test/document-helpers/groupOperationsByScope.test.js +70 -70
  88. package/dist/test/document-helpers/groupOperationsByScope.test.js.map +1 -1
  89. package/dist/test/document-helpers/merge.test.js +125 -125
  90. package/dist/test/document-helpers/merge.test.js.map +1 -1
  91. package/dist/test/document-helpers/removeExistingOperations.test.js +37 -24
  92. package/dist/test/document-helpers/removeExistingOperations.test.js.map +1 -1
  93. package/dist/test/document-helpers/reshuffleByTimestamp.test.js +15 -15
  94. package/dist/test/document-helpers/reshuffleByTimestamp.test.js.map +1 -1
  95. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js +21 -21
  96. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js.map +1 -1
  97. package/dist/test/document-helpers/skipHeaderOperations.test.js +33 -40
  98. package/dist/test/document-helpers/skipHeaderOperations.test.js.map +1 -1
  99. package/dist/test/document-helpers/split.test.js +2 -2
  100. package/dist/test/document-helpers/split.test.js.map +1 -1
  101. package/dist/test/document-helpers/utils.d.ts +1 -0
  102. package/dist/test/document-helpers/utils.d.ts.map +1 -1
  103. package/dist/test/document-helpers/utils.js +13 -8
  104. package/dist/test/document-helpers/utils.js.map +1 -1
  105. package/dist/test/document-model/replay.test.js +3 -20
  106. package/dist/test/document-model/replay.test.js.map +1 -1
  107. package/dist/test/document-model/skip-operations.test.js +4 -5
  108. package/dist/test/document-model/skip-operations.test.js.map +1 -1
  109. package/dist/test/document-model/validation.test.js.map +1 -1
  110. package/dist/test/document-model/zip.test.js +1 -1
  111. package/dist/test/document-model/zip.test.js.map +1 -1
  112. package/dist/test/helpers.d.ts +25 -2
  113. package/dist/test/helpers.d.ts.map +1 -1
  114. package/dist/test/helpers.js +55 -6
  115. package/dist/test/helpers.js.map +1 -1
  116. package/dist/tsconfig.tsbuildinfo +1 -1
  117. package/package.json +4 -2
@@ -1,20 +1,18 @@
1
- import { baseCreateDocument, baseCreateExtendedState, } from "#document/utils/base.js";
1
+ import { defaultBaseState } from "#document/ph-factories.js";
2
+ import { baseCreateDocument, } from "#document/utils/base.js";
2
3
  import { baseLoadFromFile, baseLoadFromInput, baseSaveToFile, baseSaveToFileHandle, } from "#document/utils/file.js";
3
4
  import { documentModelState, documentType, fileExtension, initialLocalState, } from "./constants.js";
4
5
  import { reducer } from "./reducer.js";
5
6
  export { fileExtension } from "./constants.js";
6
7
  export const createState = (state) => {
7
8
  return {
8
- document: { ...documentModelState, ...state?.document },
9
- global: { ...documentModelState, ...state?.global },
10
- local: { ...initialLocalState, ...state?.local },
9
+ ...defaultBaseState(),
10
+ global: { ...documentModelState, ...(state?.global ?? {}) },
11
+ local: { ...initialLocalState, ...(state?.local ?? {}) },
11
12
  };
12
13
  };
13
- export const createExtendedState = (extendedState) => {
14
- return baseCreateExtendedState({ ...extendedState }, createState);
15
- };
16
14
  export const createDocument = (state) => {
17
- const document = baseCreateDocument(createExtendedState(state), createState);
15
+ const document = baseCreateDocument(createState, state);
18
16
  document.header.documentType = documentType;
19
17
  return document;
20
18
  };
@@ -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,QAAQ,EAAE,EAAE,GAAG,kBAAkB,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE;QACvD,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,CAAC,EAAE,GAAG,aAAa,EAAE,EAAE,WAAW,CAAC,CAAC;AACpE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAA0C,CACnE,KAAK,EACL,EAAE;IACF,MAAM,QAAQ,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;IAC7E,QAAQ,CAAC,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;IAE5C,OAAO,QAAQ,CAAC;AAClB,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
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/document-model/gen/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAS7D,OAAO,EACL,kBAAkB,GACnB,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,GAAG,gBAAgB,EAAE;QACrB,MAAM,EAAE,EAAE,GAAG,kBAAkB,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,EAAE;QAC3D,KAAK,EAAE,EAAE,GAAG,iBAAiB,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE;KACzD,CAAC;AACJ,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,cAAc,GAA0C,CACnE,KAAK,EACL,EAAE;IACF,MAAM,QAAQ,GAAG,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACxD,QAAQ,CAAC,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;IAE5C,OAAO,QAAQ,CAAC;AAClB,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,9 +1,10 @@
1
+ import { actionSigner } from "#document/ph-factories.js";
1
2
  import { generateUUID } from "#utils/env";
2
3
  import { afterAll, beforeAll, describe, expect, it, vi } from "vitest";
3
4
  import { baseCreateDocument, hashDocumentStateForScope, } from "../../src/document/utils/base.js";
4
- import { ab2hex, buildOperationSignatureMessage, buildOperationSignatureParams, buildSignedOperation, hex2ab, verifyOperationSignature, } from "../../src/document/utils/crypto.js";
5
+ import { ab2hex, buildOperationSignatureMessage, buildOperationSignatureParams, buildSignedAction, hex2ab, verifyOperationSignature, } from "../../src/document/utils/crypto.js";
5
6
  import { PublicKeySigner, sign, verify, } from "../../src/document/utils/header.js";
6
- import { countReducer, increment } from "../helpers.js";
7
+ import { countReducer, createCountDocumentState, createCountState, increment, } from "../helpers.js";
7
8
  /**
8
9
  * A signer that uses a key pair to sign and verify data.
9
10
  */
@@ -34,9 +35,7 @@ describe("Crypto utils", () => {
34
35
  vi.useRealTimers();
35
36
  });
36
37
  it("should build signature with empty previousState", () => {
37
- const document = baseCreateDocument({
38
- state: { global: { count: 0 }, local: { name: "" } },
39
- });
38
+ const document = baseCreateDocument(createCountDocumentState, createCountState());
40
39
  const action = increment();
41
40
  const documentWithOp = countReducer(document, action);
42
41
  const operation = documentWithOp.operations.global[0];
@@ -45,26 +44,25 @@ describe("Crypto utils", () => {
45
44
  const signer = {
46
45
  user: { address: "0x123", chainId: 1, networkId: "1" },
47
46
  app: { name: "test", key: "0xtest" },
47
+ signatures: [],
48
48
  };
49
49
  const params = buildOperationSignatureParams({
50
50
  documentId: "1",
51
- operation,
51
+ action: operation.action,
52
52
  signer,
53
53
  previousStateHash: "",
54
54
  });
55
55
  expect(params).toStrictEqual([
56
56
  "1704067200",
57
57
  "0xtest",
58
- "SUbVbaz+OkPN+PXSDLx0iiK+JmI=",
58
+ "Sa/gjYf8KKaEfUhOuPk9wDzLSns=",
59
59
  "",
60
60
  ]);
61
61
  const textEncoder = new TextEncoder();
62
- expect(buildOperationSignatureMessage(params)).toStrictEqual(textEncoder.encode("\x19Signed Operation:\n4417040672000xtestSUbVbaz+OkPN+PXSDLx0iiK+JmI="));
62
+ expect(buildOperationSignatureMessage(params)).toStrictEqual(textEncoder.encode("\x19Signed Operation:\n4417040672000xtestSa/gjYf8KKaEfUhOuPk9wDzLSns="));
63
63
  });
64
64
  it("should build signature with previousState", () => {
65
- let document = baseCreateDocument({
66
- state: { global: { count: 0 }, local: { name: "" } },
67
- });
65
+ let document = baseCreateDocument(createCountDocumentState, createCountState());
68
66
  document = countReducer(document, increment());
69
67
  const hash = hashDocumentStateForScope(document, "global");
70
68
  const action = increment();
@@ -75,21 +73,22 @@ describe("Crypto utils", () => {
75
73
  const signer = {
76
74
  user: { address: "0x123", chainId: 1, networkId: "1" },
77
75
  app: { name: "test", key: "0xtest" },
76
+ signatures: [],
78
77
  };
79
78
  const params = buildOperationSignatureParams({
80
79
  documentId: "1",
81
- operation,
80
+ action: operation.action,
82
81
  signer,
83
82
  previousStateHash: hash,
84
83
  });
85
84
  expect(params).toStrictEqual([
86
85
  "1704067200",
87
86
  "0xtest",
88
- "SUbVbaz+OkPN+PXSDLx0iiK+JmI=",
87
+ "Sa/gjYf8KKaEfUhOuPk9wDzLSns=",
89
88
  "qA97yBec1rrOyf2eVsYdWwFPOso=",
90
89
  ]);
91
90
  const textEncoder = new TextEncoder();
92
- expect(buildOperationSignatureMessage(params)).toStrictEqual(textEncoder.encode("\x19Signed Operation:\n7217040672000xtestSUbVbaz+OkPN+PXSDLx0iiK+JmI=qA97yBec1rrOyf2eVsYdWwFPOso="));
91
+ expect(buildOperationSignatureMessage(params)).toStrictEqual(textEncoder.encode("\x19Signed Operation:\n7217040672000xtestSa/gjYf8KKaEfUhOuPk9wDzLSns=qA97yBec1rrOyf2eVsYdWwFPOso="));
93
92
  });
94
93
  it("should build signed operation", async () => {
95
94
  const algorithm = {
@@ -103,9 +102,8 @@ describe("Crypto utils", () => {
103
102
  ]);
104
103
  const publicKeyRaw = await crypto.subtle.exportKey("raw", keyPair.publicKey);
105
104
  const publicKey = `0x${ab2hex(publicKeyRaw)}`;
106
- const document = baseCreateDocument({
107
- state: { global: { count: 0 }, local: { name: "" } },
108
- });
105
+ const document = baseCreateDocument(createCountDocumentState, createCountState());
106
+ document.header.id = "1";
109
107
  const action = increment();
110
108
  const reducer = ((document, action, dispatch, options) => {
111
109
  const documentWithOp = countReducer(document, action);
@@ -113,14 +111,8 @@ describe("Crypto utils", () => {
113
111
  documentWithOp.operations.global.at(-1).id = "123";
114
112
  return documentWithOp;
115
113
  });
116
- const operation = await buildSignedOperation(action, reducer, document, {
117
- documentId: "1",
118
- signer: {
119
- user: { address: "0x123", chainId: 1, networkId: "1" },
120
- app: { name: "test", key: publicKey },
121
- },
122
- }, async (data) => new Uint8Array(await crypto.subtle.sign(algorithm, keyPair.privateKey, data.buffer)));
123
- expect(operation.context?.signer).toStrictEqual({
114
+ const operation = await buildSignedAction(action, reducer, document, actionSigner({ address: "0x123", chainId: 1, networkId: "1" }, { name: "test", key: publicKey }), async (data) => new Uint8Array(await crypto.subtle.sign(algorithm, keyPair.privateKey, data.buffer)));
115
+ expect(operation.action?.context?.signer).toStrictEqual({
124
116
  app: {
125
117
  key: publicKey,
126
118
  name: "test",
@@ -129,7 +121,7 @@ describe("Crypto utils", () => {
129
121
  [
130
122
  "1704067200",
131
123
  publicKey,
132
- "iKXthoUck0TB+qt+HANRfcLBGRw=",
124
+ "Sa/gjYf8KKaEfUhOuPk9wDzLSns=",
133
125
  "",
134
126
  expect.stringMatching(/0x[a-f0-9]{128}/),
135
127
  ],
@@ -153,17 +145,9 @@ describe("Crypto utils", () => {
153
145
  ]);
154
146
  const publicKeyRaw = await crypto.subtle.exportKey("raw", keyPair.publicKey);
155
147
  const publicKey = `0x${ab2hex(publicKeyRaw)}`;
156
- const document = baseCreateDocument({
157
- state: { global: { count: 0 }, local: { name: "" } },
158
- });
159
- const operation = await buildSignedOperation({ ...increment(), id: "123" }, countReducer, document, {
160
- documentId: "1",
161
- signer: {
162
- user: { address: "0x123", chainId: 1, networkId: "1" },
163
- app: { name: "test", key: publicKey },
164
- },
165
- }, async (data) => new Uint8Array(await crypto.subtle.sign(algorithm, keyPair.privateKey, data.buffer)));
166
- const signer = operation.context.signer;
148
+ const document = baseCreateDocument(createCountDocumentState, createCountState());
149
+ const operation = await buildSignedAction({ ...increment() /*, id: "123"*/ }, countReducer, document, actionSigner({ address: "0x123", chainId: 1, networkId: "1" }, { name: "test", key: publicKey }), async (data) => new Uint8Array(await crypto.subtle.sign(algorithm, keyPair.privateKey, data.buffer)));
150
+ const signer = operation.action.context.signer;
167
151
  const verified = await verifyOperationSignature(signer.signatures.at(0), signer, async (publicKey, signature, data) => {
168
152
  const importedKey = await crypto.subtle.importKey("raw", hex2ab(publicKey), algorithm, true, ["verify"]);
169
153
  return crypto.subtle.verify(algorithm, importedKey, signature, data);
@@ -182,17 +166,10 @@ describe("Crypto utils", () => {
182
166
  ]);
183
167
  const publicKeyRaw = await crypto.subtle.exportKey("raw", keyPair.publicKey);
184
168
  const publicKey = `0x${ab2hex(publicKeyRaw)}`;
185
- const document = baseCreateDocument({
186
- state: { global: { count: 0 }, local: { name: "" } },
187
- });
188
- const operation = await buildSignedOperation({ ...increment(), id: "123" }, countReducer, document, {
189
- documentId: "1",
190
- signer: {
191
- user: { address: "0x123", chainId: 1, networkId: "1" },
192
- app: { name: "test", key: publicKey },
193
- },
194
- }, async (data) => new Uint8Array(await crypto.subtle.sign(algorithm, keyPair.privateKey, data.buffer)));
195
- const signer = operation.context.signer;
169
+ const document = baseCreateDocument(createCountDocumentState, createCountState());
170
+ document.header.id = "1";
171
+ const operation = await buildSignedAction({ ...increment() /*, id: "123"*/ }, countReducer, document, actionSigner({ address: "0x123", chainId: 1, networkId: "1" }, { name: "test", key: publicKey }), async (data) => new Uint8Array(await crypto.subtle.sign(algorithm, keyPair.privateKey, data.buffer)));
172
+ const signer = operation.action.context.signer;
196
173
  const signature = signer.signatures.at(0);
197
174
  signature[4] = "FAKE SIGNATURE";
198
175
  const verified = await verifyOperationSignature(signature, signer, async (publicKey, signature, data) => {
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.test.js","sourceRoot":"","sources":["../../../test/document/crypto.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crypto.test.js","sourceRoot":"","sources":["../../../test/document/crypto.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAQzD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACvE,OAAO,EACL,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,MAAM,EACN,8BAA8B,EAC9B,6BAA6B,EAC7B,iBAAiB,EACjB,MAAM,EACN,wBAAwB,GACzB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,eAAe,EACf,IAAI,EAEJ,MAAM,GACP,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAEL,YAAY,EACZ,wBAAwB,EACxB,gBAAgB,EAChB,SAAS,GACV,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,MAAM,aAAc,SAAQ,eAAe;IAChC,WAAW,CAAa;IAEjC,iBAAiB,CAAwB;IAEzC,YAAY,SAAqB,EAAE,UAAsB;QACvD,KAAK,CAAC,SAAS,CAAC,CAAC;QAEjB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAgB;QACzB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5B,IAAI,CAAC,iBAAiB,GAAG,MAAM,YAAY,CAAC,SAAS,CACnD,KAAK,EACL,IAAI,CAAC,WAAW,EAChB;gBACE,IAAI,EAAE,SAAS;gBACf,UAAU,EAAE,SAAS;aACtB,EACD,IAAI,EACJ,CAAC,MAAM,CAAC,CACT,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,IAAI,CACzC,SAAS,EACT,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,MAAqB,CAC3B,CAAC;QAEF,OAAO,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;CACF;AAED,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,GAAG,EAAE;QACZ,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,QAAQ,GAAG,kBAAkB,CACjC,wBAAwB,EACxB,gBAAgB,EAAE,CACnB,CAAC;QAEF,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEtD,eAAe;QACf,SAAS,CAAC,EAAE,GAAG,sCAAsC,CAAC;QAEtD,MAAM,MAAM,GAAiB;YAC3B,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE;YACtD,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE;YACpC,UAAU,EAAE,EAAE;SACf,CAAC;QACF,MAAM,MAAM,GAAG,6BAA6B,CAAC;YAC3C,UAAU,EAAE,GAAG;YACf,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,MAAM;YACN,iBAAiB,EAAE,EAAE;SACtB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;YAC3B,YAAY;YACZ,QAAQ;YACR,8BAA8B;YAC9B,EAAE;SACH,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;QACtC,MAAM,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAC1D,WAAW,CAAC,MAAM,CAChB,uEAAuE,CACxE,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,IAAI,QAAQ,GAAG,kBAAkB,CAC/B,wBAAwB,EACxB,gBAAgB,EAAE,CACnB,CAAC;QAEF,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE3D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEtD,eAAe;QACf,SAAS,CAAC,EAAE,GAAG,sCAAsC,CAAC;QAEtD,MAAM,MAAM,GAAiB;YAC3B,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE;YACtD,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE;YACpC,UAAU,EAAE,EAAE;SACf,CAAC;QACF,MAAM,MAAM,GAAG,6BAA6B,CAAC;YAC3C,UAAU,EAAE,GAAG;YACf,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,MAAM;YACN,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;YAC3B,YAAY;YACZ,QAAQ;YACR,8BAA8B;YAC9B,8BAA8B;SAC/B,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;QACtC,MAAM,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAC1D,WAAW,CAAC,MAAM,CAChB,mGAAmG,CACpG,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,SAAS,GAAG;YAChB,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,OAAO;YACnB,IAAI,EAAE,SAAS;SAChB,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE;YAC/D,MAAM;YACN,QAAQ;SACT,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAChD,KAAK,EACL,OAAO,CAAC,SAAS,CAClB,CAAC;QACF,MAAM,SAAS,GAAG,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAE9C,MAAM,QAAQ,GAAG,kBAAkB,CACjC,wBAAwB,EACxB,gBAAgB,EAAE,CACnB,CAAC;QACF,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC;QAEzB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,CAAC,CACf,QAAuB,EACvB,MAAc,EACd,QAAyB,EACzB,OAAwB,EACxB,EAAE;YACF,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAEtD,8BAA8B;YAC9B,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,EAAE,GAAG,KAAK,CAAC;YAEpD,OAAO,cAAc,CAAC;QACxB,CAAC,CAAc,CAAC;QAEhB,MAAM,SAAS,GAAG,MAAM,iBAAiB,CACvC,MAAM,EACN,OAAO,EACP,QAAQ,EACR,YAAY,CACV,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,EAChD,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CACjC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CACb,IAAI,UAAU,CACZ,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CACtB,SAAS,EACT,OAAO,CAAC,UAAU,EAClB,IAAI,CAAC,MAAqB,CAC3B,CACF,CACJ,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,aAAa,CAAC;YACtD,GAAG,EAAE;gBACH,GAAG,EAAE,SAAS;gBACd,IAAI,EAAE,MAAM;aACb;YACD,UAAU,EAAE;gBACV;oBACE,YAAY;oBACZ,SAAS;oBACT,8BAA8B;oBAC9B,EAAE;oBACF,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC;iBACzC;aACF;YACD,IAAI,EAAE;gBACJ,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,CAAC;gBACV,SAAS,EAAE,GAAG;aACf;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,SAAS,GAAG;YAChB,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,OAAO;YACnB,IAAI,EAAE,SAAS;SAChB,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE;YAC/D,MAAM;YACN,QAAQ;SACT,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAChD,KAAK,EACL,OAAO,CAAC,SAAS,CAClB,CAAC;QACF,MAAM,SAAS,GAAG,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAE9C,MAAM,QAAQ,GAAG,kBAAkB,CACjC,wBAAwB,EACxB,gBAAgB,EAAE,CACnB,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,iBAAiB,CACvC,EAAE,GAAG,SAAS,EAAE,CAAC,eAAe,EAAE,EAClC,YAAyB,EACzB,QAAQ,EACR,YAAY,CACV,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,EAChD,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CACjC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CACb,IAAI,UAAU,CACZ,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CACtB,SAAS,EACT,OAAO,CAAC,UAAU,EAClB,IAAI,CAAC,MAAqB,CAC3B,CACF,CACJ,CAAC;QACF,MAAM,MAAM,GAAG,SAAS,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC;QAClD,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAC7C,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAE,EACxB,MAAM,EACN,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;YACnC,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAC/C,KAAK,EACL,MAAM,CAAC,SAAS,CAAC,EACjB,SAAS,EACT,IAAI,EACJ,CAAC,QAAQ,CAAC,CACX,CAAC;YACF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CACzB,SAAS,EACT,WAAW,EACX,SAAyB,EACzB,IAAoB,CACrB,CAAC;QACJ,CAAC,CACF,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,SAAS,GAAG;YAChB,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,OAAO;YACnB,IAAI,EAAE,SAAS;SAChB,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE;YAC/D,MAAM;YACN,QAAQ;SACT,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAChD,KAAK,EACL,OAAO,CAAC,SAAS,CAClB,CAAC;QACF,MAAM,SAAS,GAAG,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAE9C,MAAM,QAAQ,GAAG,kBAAkB,CACjC,wBAAwB,EACxB,gBAAgB,EAAE,CACnB,CAAC;QACF,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC;QAEzB,MAAM,SAAS,GAAG,MAAM,iBAAiB,CACvC,EAAE,GAAG,SAAS,EAAE,CAAC,eAAe,EAAE,EAClC,YAAyB,EACzB,QAAQ,EACR,YAAY,CACV,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,EAChD,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CACjC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CACb,IAAI,UAAU,CACZ,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CACtB,SAAS,EACT,OAAO,CAAC,UAAU,EAClB,IAAI,CAAC,MAAqB,CAC3B,CACF,CACJ,CAAC;QACF,MAAM,MAAM,GAAG,SAAS,CAAC,MAAO,CAAC,OAAQ,CAAC,MAAO,CAAC;QAClD,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC;QAE3C,SAAS,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC;QAChC,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAC7C,SAAS,EACT,MAAM,EACN,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;YACnC,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAC/C,KAAK,EACL,MAAM,CAAC,SAAS,CAAC,EACjB,SAAS,EACT,IAAI,EACJ,CAAC,QAAQ,CAAC,CACX,CAAC;YACF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CACzB,SAAS,EACT,WAAW,EACX,SAAyB,EACzB,IAAoB,CACrB,CAAC;QACJ,CAAC,CACF,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,UAAU,GAAsB;YACpC,YAAY,EAAE,oBAAoB;YAClC,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACzC,KAAK,EAAE,YAAY,EAAE;SACtB,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE;YAC/D,MAAM;YACN,QAAQ;SACT,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAC1E,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAE5E,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAEjD,MAAM,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -2,71 +2,81 @@
2
2
  // Event = operation => should keep the same operation information but execute the action input against the document
3
3
  import { beforeAll, describe, expect, it, vi } from "vitest";
4
4
  import { baseCreateDocument } from "../../src/document/utils/base.js";
5
- import { wrappedEmptyReducer } from "../helpers.js";
5
+ import { defaultPHDocumentCreateState, fakeAction, wrappedEmptyReducer, } from "../helpers.js";
6
6
  describe("Event", () => {
7
7
  beforeAll(() => {
8
8
  vi.useFakeTimers().setSystemTime(new Date("2020-01-01"));
9
9
  });
10
- it("should not re-assing index to an event", () => {
11
- let document = baseCreateDocument();
12
- document = wrappedEmptyReducer(document, {
10
+ it("should not re-assingn index to an event", () => {
11
+ let document = baseCreateDocument(defaultPHDocumentCreateState);
12
+ document = wrappedEmptyReducer(document, fakeAction({
13
13
  type: "TEST",
14
14
  input: {},
15
15
  scope: "global",
16
- });
17
- document = wrappedEmptyReducer(document, {
16
+ }));
17
+ document = wrappedEmptyReducer(document, fakeAction({
18
18
  type: "TEST_2",
19
19
  input: {},
20
20
  scope: "global",
21
- });
22
- document = wrappedEmptyReducer(document, {
21
+ }));
22
+ const action = fakeAction({
23
23
  type: "TEST_4",
24
24
  input: {},
25
- index: 3,
26
- hash: "test-4-hash",
27
25
  scope: "global",
28
- }, undefined, { skip: 1 });
26
+ });
27
+ document = wrappedEmptyReducer(document, action, undefined, {
28
+ skip: 1,
29
+ replayOptions: {
30
+ operation: {
31
+ index: 3,
32
+ hash: "test-4-hash",
33
+ timestampUtcMs: new Date().toISOString(),
34
+ skip: 1,
35
+ action,
36
+ },
37
+ },
38
+ });
29
39
  expect(document.header.revision.global).toBe(4);
30
40
  expect(document.operations.global).toMatchObject([
31
41
  {
32
- type: "TEST",
42
+ action: { type: "TEST" },
33
43
  index: 0,
34
44
  },
35
45
  {
36
- type: "TEST_2",
46
+ action: { type: "TEST_2" },
37
47
  index: 1,
38
48
  },
39
49
  {
40
- type: "TEST_4",
50
+ action: { type: "TEST_4" },
41
51
  index: 3,
42
52
  skip: 1,
43
53
  },
44
54
  ]);
45
55
  });
46
56
  it("should remove skipped operations", () => {
47
- let document = baseCreateDocument();
48
- document = wrappedEmptyReducer(document, {
57
+ let document = baseCreateDocument(defaultPHDocumentCreateState);
58
+ document = wrappedEmptyReducer(document, fakeAction({
49
59
  type: "TEST",
50
60
  input: {},
51
61
  scope: "global",
52
- });
53
- document = wrappedEmptyReducer(document, {
62
+ }));
63
+ document = wrappedEmptyReducer(document, fakeAction({
54
64
  type: "TEST_2",
55
65
  input: {},
56
66
  scope: "global",
57
- });
58
- document = wrappedEmptyReducer(document, {
67
+ }));
68
+ document = wrappedEmptyReducer(document, fakeAction({
59
69
  type: "TEST_3",
60
70
  input: {},
61
71
  scope: "global",
62
- });
63
- document = wrappedEmptyReducer(document, {
72
+ }));
73
+ document = wrappedEmptyReducer(document, fakeAction({
64
74
  type: "TEST_4",
65
75
  input: {},
66
76
  index: 3,
67
77
  hash: "test-4-hash",
68
78
  scope: "global",
69
- }, undefined, { skip: 1 });
79
+ }), undefined, { skip: 1 });
70
80
  expect(document.header.revision.global).toBe(4);
71
81
  expect(document.operations.global).toMatchObject([
72
82
  {
@@ -85,81 +95,101 @@ describe("Event", () => {
85
95
  ]);
86
96
  });
87
97
  it("should continue with next index after an operation", () => {
88
- let document = baseCreateDocument();
89
- document = wrappedEmptyReducer(document, {
98
+ let document = baseCreateDocument(defaultPHDocumentCreateState);
99
+ document = wrappedEmptyReducer(document, fakeAction({
90
100
  type: "TEST",
91
101
  input: {},
92
102
  scope: "global",
93
- });
94
- document = wrappedEmptyReducer(document, {
103
+ }));
104
+ document = wrappedEmptyReducer(document, fakeAction({
95
105
  type: "TEST_2",
96
106
  input: {},
97
107
  scope: "global",
98
- });
99
- document = wrappedEmptyReducer(document, {
108
+ }));
109
+ const action = fakeAction({
100
110
  type: "TEST_4",
101
111
  input: {},
102
- index: 3,
103
- hash: "test-4-hash",
104
112
  scope: "global",
105
- }, undefined, { skip: 1 });
106
- document = wrappedEmptyReducer(document, {
113
+ });
114
+ document = wrappedEmptyReducer(document, action, undefined, {
115
+ skip: 1,
116
+ replayOptions: {
117
+ operation: {
118
+ index: 3,
119
+ hash: "test-4-hash",
120
+ timestampUtcMs: new Date().toISOString(),
121
+ skip: 1,
122
+ action,
123
+ },
124
+ },
125
+ });
126
+ document = wrappedEmptyReducer(document, fakeAction({
107
127
  type: "TEST_5",
108
128
  input: {},
109
129
  scope: "global",
110
- });
130
+ }));
111
131
  expect(document.header.revision.global).toBe(5);
112
132
  expect(document.operations.global).toMatchObject([
113
133
  {
114
- type: "TEST",
134
+ action: { type: "TEST" },
115
135
  index: 0,
116
136
  },
117
137
  {
118
- type: "TEST_2",
138
+ action: { type: "TEST_2" },
119
139
  index: 1,
120
140
  },
121
141
  {
122
- type: "TEST_4",
142
+ action: { type: "TEST_4" },
123
143
  index: 3,
124
144
  skip: 1,
125
145
  },
126
146
  {
127
- type: "TEST_5",
147
+ action: { type: "TEST_5" },
128
148
  index: 4,
129
149
  },
130
150
  ]);
131
151
  });
132
152
  it("should calculate the right document revision when last action is an event", () => {
133
- let document = baseCreateDocument();
134
- document = wrappedEmptyReducer(document, {
153
+ let document = baseCreateDocument(defaultPHDocumentCreateState);
154
+ document = wrappedEmptyReducer(document, fakeAction({
135
155
  type: "TEST",
136
156
  input: {},
137
157
  scope: "global",
138
- });
139
- document = wrappedEmptyReducer(document, {
158
+ }));
159
+ document = wrappedEmptyReducer(document, fakeAction({
140
160
  type: "TEST_2",
141
161
  input: {},
142
162
  scope: "global",
143
- });
144
- document = wrappedEmptyReducer(document, {
163
+ }));
164
+ const action = fakeAction({
145
165
  type: "TEST_4",
146
166
  input: {},
147
- index: 3,
148
- hash: "test-4-hash",
149
167
  scope: "global",
150
- }, undefined, { skip: 1 });
168
+ });
169
+ document = wrappedEmptyReducer(document, action, undefined, {
170
+ skip: 1,
171
+ replayOptions: {
172
+ operation: {
173
+ index: 3,
174
+ hash: "test-4-hash",
175
+ timestampUtcMs: new Date().toISOString(),
176
+ skip: 1,
177
+ action,
178
+ },
179
+ },
180
+ });
151
181
  expect(document.header.revision.global).toBe(4);
152
182
  expect(document.operations.global).toMatchObject([
153
183
  {
154
- type: "TEST",
184
+ action: { type: "TEST" },
155
185
  index: 0,
156
186
  },
157
187
  {
158
- type: "TEST_2",
188
+ action: { type: "TEST_2" },
159
189
  index: 1,
160
190
  },
161
191
  {
162
- type: "TEST_4",
192
+ action: { type: "TEST_4" },
163
193
  index: 3,
164
194
  skip: 1,
165
195
  },
@@ -1 +1 @@
1
- {"version":3,"file":"event-vs-command.test.js","sourceRoot":"","sources":["../../../test/document/event-vs-command.test.ts"],"names":[],"mappings":"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"}
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,EACL,4BAA4B,EAC5B,UAAU,EACV,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,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,yCAAyC,EAAE,GAAG,EAAE;QACjD,IAAI,QAAQ,GAAG,kBAAkB,CAAC,4BAA4B,CAAC,CAAC;QAEhE,QAAQ,GAAG,mBAAmB,CAC5B,QAAQ,EACR,UAAU,CAAC;YACT,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CACH,CAAC;QAEF,QAAQ,GAAG,mBAAmB,CAC5B,QAAQ,EACR,UAAU,CAAC;YACT,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CACH,CAAC;QAEF,MAAM,MAAM,GAAG,UAAU,CAAC;YACxB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QAEH,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE;YAC1D,IAAI,EAAE,CAAC;YACP,aAAa,EAAE;gBACb,SAAS,EAAE;oBACT,KAAK,EAAE,CAAC;oBACR,IAAI,EAAE,aAAa;oBACnB,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACxC,IAAI,EAAE,CAAC;oBACP,MAAM;iBACP;aACF;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;YAC/C;gBACE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;gBACxB,KAAK,EAAE,CAAC;aACT;YACD;gBACE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1B,KAAK,EAAE,CAAC;aACT;YACD;gBACE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1B,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,CAAC,4BAA4B,CAAC,CAAC;QAEhE,QAAQ,GAAG,mBAAmB,CAC5B,QAAQ,EACR,UAAU,CAAC;YACT,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CACH,CAAC;QAEF,QAAQ,GAAG,mBAAmB,CAC5B,QAAQ,EACR,UAAU,CAAC;YACT,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CACH,CAAC;QAEF,QAAQ,GAAG,mBAAmB,CAC5B,QAAQ,EACR,UAAU,CAAC;YACT,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CACH,CAAC;QAEF,QAAQ,GAAG,mBAAmB,CAC5B,QAAQ,EACR,UAAU,CAAC;YACT,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,QAAQ;SAChB,CAAC,EACF,SAAS,EACT,EAAE,IAAI,EAAE,CAAC,EAAE,CACZ,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChD,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,CAAC,4BAA4B,CAAC,CAAC;QAEhE,QAAQ,GAAG,mBAAmB,CAC5B,QAAQ,EACR,UAAU,CAAC;YACT,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CACH,CAAC;QAEF,QAAQ,GAAG,mBAAmB,CAC5B,QAAQ,EACR,UAAU,CAAC;YACT,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CACH,CAAC;QAEF,MAAM,MAAM,GAAG,UAAU,CAAC;YACxB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QAEH,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE;YAC1D,IAAI,EAAE,CAAC;YACP,aAAa,EAAE;gBACb,SAAS,EAAE;oBACT,KAAK,EAAE,CAAC;oBACR,IAAI,EAAE,aAAa;oBACnB,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACxC,IAAI,EAAE,CAAC;oBACP,MAAM;iBACP;aACF;SACF,CAAC,CAAC;QAEH,QAAQ,GAAG,mBAAmB,CAC5B,QAAQ,EACR,UAAU,CAAC;YACT,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CACH,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;YAC/C;gBACE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;gBACxB,KAAK,EAAE,CAAC;aACT;YACD;gBACE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1B,KAAK,EAAE,CAAC;aACT;YACD;gBACE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1B,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,CAAC;aACR;YACD;gBACE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1B,KAAK,EAAE,CAAC;aACT;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;QACnF,IAAI,QAAQ,GAAG,kBAAkB,CAAC,4BAA4B,CAAC,CAAC;QAEhE,QAAQ,GAAG,mBAAmB,CAC5B,QAAQ,EACR,UAAU,CAAC;YACT,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CACH,CAAC;QAEF,QAAQ,GAAG,mBAAmB,CAC5B,QAAQ,EACR,UAAU,CAAC;YACT,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CACH,CAAC;QAEF,MAAM,MAAM,GAAG,UAAU,CAAC;YACxB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QAEH,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE;YAC1D,IAAI,EAAE,CAAC;YACP,aAAa,EAAE;gBACb,SAAS,EAAE;oBACT,KAAK,EAAE,CAAC;oBACR,IAAI,EAAE,aAAa;oBACnB,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACxC,IAAI,EAAE,CAAC;oBACP,MAAM;iBACP;aACF;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;YAC/C;gBACE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;gBACxB,KAAK,EAAE,CAAC;aACT;YACD;gBACE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1B,KAAK,EAAE,CAAC;aACT;YACD;gBACE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1B,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,CAAC;aACR;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}