document-model 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/browser/cjs/document-model.js +2 -2
  2. package/dist/browser/cjs/document.js +2 -2
  3. package/dist/browser/cjs/index.js +2 -2
  4. package/dist/browser/cjs/internal/{index-BImZF-Wk.js → index-BllCzBc9.js} +11 -3
  5. package/dist/browser/cjs/internal/index-BllCzBc9.js.map +1 -0
  6. package/dist/browser/cjs/internal/{index-vlbA6Asd.js → index-DTRXQ2Nf.js} +5 -10
  7. package/dist/browser/{es/internal/index-CuhiYn-8.js.map → cjs/internal/index-DTRXQ2Nf.js.map} +1 -1
  8. package/dist/browser/cjs/internal/{object-9Wvjprnm.js → object-Bf9_woMQ.js} +302 -320
  9. package/dist/browser/cjs/internal/object-Bf9_woMQ.js.map +1 -0
  10. package/dist/browser/es/document-model.js +2 -2
  11. package/dist/browser/es/document.js +8 -8
  12. package/dist/browser/es/index.js +2 -2
  13. package/dist/browser/es/internal/{index-CuhiYn-8.js → index-BAvDobTr.js} +5 -10
  14. package/dist/{node/es/internal/index-BNAE-_Hg.js.map → browser/es/internal/index-BAvDobTr.js.map} +1 -1
  15. package/dist/browser/es/internal/index-Db40bdYP.js +58 -0
  16. package/dist/browser/es/internal/index-Db40bdYP.js.map +1 -0
  17. package/dist/browser/es/internal/{object-CyAog_F_.js → object-CY74acQg.js} +327 -345
  18. package/dist/browser/es/internal/object-CY74acQg.js.map +1 -0
  19. package/dist/browser/src/document/actions/creators.d.ts +1 -1
  20. package/dist/browser/src/document/schema/zod.d.ts +18 -18
  21. package/dist/browser/src/document/types.d.ts +12 -1
  22. package/dist/browser/src/document/utils/base.d.ts +1 -1
  23. package/dist/browser/src/document/utils/crypto.d.ts +10 -0
  24. package/dist/browser/src/document/utils/index.d.ts +1 -0
  25. package/dist/browser/src/document/utils/node.d.ts +3 -2
  26. package/dist/browser/src/document-model/gen/schema/zod.d.ts +177 -177
  27. package/dist/browser/src/document-model/index.d.ts +3 -3
  28. package/dist/node/cjs/document-model.js +2 -2
  29. package/dist/node/cjs/document.js +2 -2
  30. package/dist/node/cjs/index.js +2 -2
  31. package/dist/node/cjs/internal/{index-DWeC8dwW.js → index-aABa-Hb0.js} +5 -10
  32. package/dist/node/cjs/internal/{index-DWeC8dwW.js.map → index-aABa-Hb0.js.map} +1 -1
  33. package/dist/node/cjs/internal/{index-CJIU8iX-.js → index-kI4cPPpE.js} +11 -3
  34. package/dist/node/cjs/internal/index-kI4cPPpE.js.map +1 -0
  35. package/dist/node/cjs/internal/{object-op6YzhH1.js → object-BMm0OLWL.js} +148 -59
  36. package/dist/node/cjs/internal/object-BMm0OLWL.js.map +1 -0
  37. package/dist/node/es/document-model.js +2 -2
  38. package/dist/node/es/document.js +8 -8
  39. package/dist/node/es/index.js +2 -2
  40. package/dist/node/es/internal/{index-BNAE-_Hg.js → index-B0WPutmO.js} +5 -10
  41. package/dist/{browser/cjs/internal/index-vlbA6Asd.js.map → node/es/internal/index-B0WPutmO.js.map} +1 -1
  42. package/dist/node/es/internal/index-MkEgGMJR.js +58 -0
  43. package/dist/node/es/internal/index-MkEgGMJR.js.map +1 -0
  44. package/dist/node/es/internal/{object-BuK9PFjs.js → object-VZ_AS47_.js} +173 -84
  45. package/dist/node/es/internal/object-VZ_AS47_.js.map +1 -0
  46. package/dist/node/src/document/actions/creators.d.ts +1 -1
  47. package/dist/node/src/document/schema/zod.d.ts +18 -18
  48. package/dist/node/src/document/types.d.ts +12 -1
  49. package/dist/node/src/document/utils/base.d.ts +1 -1
  50. package/dist/node/src/document/utils/crypto.d.ts +10 -0
  51. package/dist/node/src/document/utils/index.d.ts +1 -0
  52. package/dist/node/src/document/utils/node.d.ts +3 -2
  53. package/dist/node/src/document-model/gen/schema/zod.d.ts +177 -177
  54. package/dist/node/src/document-model/index.d.ts +3 -3
  55. package/package.json +2 -1
  56. package/dist/browser/cjs/internal/index-BImZF-Wk.js.map +0 -1
  57. package/dist/browser/cjs/internal/object-9Wvjprnm.js.map +0 -1
  58. package/dist/browser/es/internal/index-Drp90r05.js +0 -50
  59. package/dist/browser/es/internal/index-Drp90r05.js.map +0 -1
  60. package/dist/browser/es/internal/object-CyAog_F_.js.map +0 -1
  61. package/dist/node/cjs/internal/index-CJIU8iX-.js.map +0 -1
  62. package/dist/node/cjs/internal/object-op6YzhH1.js.map +0 -1
  63. package/dist/node/es/internal/index-B_7z_4EV.js +0 -50
  64. package/dist/node/es/internal/index-B_7z_4EV.js.map +0 -1
  65. package/dist/node/es/internal/object-BuK9PFjs.js.map +0 -1
@@ -11,6 +11,7 @@ export type * from './schema/types';
11
11
  export type { FileInput } from './utils';
12
12
  export type { BaseAction } from './actions/types';
13
13
  export type { Immutable } from 'mutative';
14
+ export type Signature = [string, string, string, string, string];
14
15
  export type ActionSigner = {
15
16
  user: {
16
17
  address: string;
@@ -21,7 +22,7 @@ export type ActionSigner = {
21
22
  name: string;
22
23
  key: string;
23
24
  };
24
- signature: string;
25
+ signatures: Signature[];
25
26
  };
26
27
  export type ActionContext = {
27
28
  signer?: ActionSigner;
@@ -170,6 +171,16 @@ export type MappedOperation<A extends Action> = {
170
171
  operation: Operation<A | BaseAction>;
171
172
  };
172
173
  export type DocumentOperationsIgnoreMap<A extends Action> = Required<Record<OperationScope, MappedOperation<A>[]>>;
174
+ export type OperationSignatureContext = {
175
+ documentId: string;
176
+ signer: Omit<ActionSigner, 'signatures'> & {
177
+ signatures?: Signature[];
178
+ };
179
+ operation: Operation;
180
+ previousStateHash: string;
181
+ };
182
+ export type OperationSigningHandler = (message: Uint8Array) => Promise<Uint8Array>;
183
+ export type OperationVerificationHandler = (publicKey: string, signature: Uint8Array, data: Uint8Array) => Promise<boolean>;
173
184
  /**
174
185
  * The base type of a document model.
175
186
  *
@@ -61,7 +61,7 @@ export declare const createExtendedState: <S, L>(initialState?: Partial<Extended
61
61
  * @returns The new document state.
62
62
  */
63
63
  export declare const createDocument: <S, A extends Action, L = unknown>(initialState?: Partial<ExtendedState<PartialState<S>, PartialState<L>>>, createState?: (state?: Partial<State<PartialState<S>, PartialState<L>>>) => State<S, L>) => Document<S, A, L>;
64
- export declare const hashDocument: (document: Pick<Document, 'state'>, scope?: OperationScope) => string;
64
+ export declare const hashDocument: (document: Pick<Document, "state">, scope?: OperationScope) => string;
65
65
  export declare const hashKey: (date?: Date, randomLimit?: number) => string;
66
66
  export declare function readOnly<T>(value: T): Readonly<T>;
67
67
  /**
@@ -0,0 +1,10 @@
1
+ import { Action, ActionSigner, BaseAction, Document, Operation, OperationSignatureContext, OperationSigningHandler, OperationVerificationHandler, Reducer, Signature } from '../types';
2
+
3
+ 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 buildOperationSignatureMessage(params: [string, string, string, string]): Uint8Array;
6
+ export declare function ab2hex(ab: ArrayBuffer): string;
7
+ export declare function hex2ab(hex: string): Uint8Array;
8
+ export declare function buildOperationSignature(context: OperationSignatureContext, signMethod: OperationSigningHandler): Promise<Signature>;
9
+ export declare function buildSignedOperation<T, A extends Action, L>(action: A | Operation<A>, reducer: Reducer<T, A, L>, document: Document<T, A, L>, context: Omit<OperationSignatureContext, 'operation' | 'previousStateHash'>, signHandler: OperationSigningHandler): Promise<Operation<A | BaseAction>>;
10
+ export declare function verifyOperationSignature<T, A extends Action, L>(signature: Signature, signer: Omit<ActionSigner, 'signatures'>, verifyHandler: OperationVerificationHandler): Promise<boolean>;
@@ -1,5 +1,6 @@
1
1
  export * from './base';
2
2
  export { createAction, createDocument, createExtendedState, createReducer, hashDocument, hashKey, isBaseAction, mapSkippedOperations, parseResultingState, readOnly, replayDocument, replayOperations, sortMappedOperations, sortOperations, } from './base';
3
+ export * from './crypto';
3
4
  export * from './file';
4
5
  export * from './validation';
5
6
  export * as documentHelpers from './document-helpers';
@@ -1,4 +1,5 @@
1
- /// <reference types="node" />
1
+ import { default as crypto } from 'crypto';
2
+
2
3
  export declare function writeFile(path: string, name: string, data: Uint8Array): Promise<string>;
3
4
  export declare function readFile(path: string): Buffer;
4
5
  export declare function fetchFile(url: string): Promise<{
@@ -6,4 +7,4 @@ export declare function fetchFile(url: string): Promise<{
6
7
  mimeType?: string;
7
8
  }>;
8
9
  export declare const getFile: (file: string) => Promise<Buffer>;
9
- export declare const hash: (data: string, algorithm?: string) => string;
10
+ export declare const hash: (data: crypto.BinaryLike, algorithm?: string) => string;