@degenerate/sharedata 0.2.7 → 0.3.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 (80) hide show
  1. package/README.md +31 -0
  2. package/dist/index.d.ts +16 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +20 -0
  5. package/dist/manager/share-data-manager-events.d.ts +27 -0
  6. package/dist/manager/share-data-manager-events.d.ts.map +1 -0
  7. package/dist/manager/share-data-manager-events.js +2 -0
  8. package/dist/manager/share-data-manager.d.ts +84 -0
  9. package/dist/manager/share-data-manager.d.ts.map +1 -0
  10. package/dist/manager/share-data-manager.js +210 -0
  11. package/dist/persistence/block-factory-registry.d.ts +51 -0
  12. package/dist/persistence/block-factory-registry.d.ts.map +1 -0
  13. package/dist/persistence/block-factory-registry.js +36 -0
  14. package/dist/persistence/deserialize-share-data.d.ts +18 -0
  15. package/dist/persistence/deserialize-share-data.d.ts.map +1 -0
  16. package/dist/persistence/deserialize-share-data.js +144 -0
  17. package/dist/persistence/file-share-data-repository.d.ts +30 -0
  18. package/dist/persistence/file-share-data-repository.d.ts.map +1 -0
  19. package/dist/persistence/file-share-data-repository.js +147 -0
  20. package/dist/persistence/firestore-share-data-repository.d.ts +38 -0
  21. package/dist/persistence/firestore-share-data-repository.d.ts.map +1 -0
  22. package/dist/persistence/firestore-share-data-repository.js +78 -0
  23. package/dist/persistence/in-memory-share-data-repository.d.ts +19 -0
  24. package/dist/persistence/in-memory-share-data-repository.d.ts.map +1 -0
  25. package/dist/persistence/in-memory-share-data-repository.js +48 -0
  26. package/dist/persistence/serialize-share-data.d.ts +22 -0
  27. package/dist/persistence/serialize-share-data.d.ts.map +1 -0
  28. package/dist/persistence/serialize-share-data.js +62 -0
  29. package/dist/persistence/share-data-repository.d.ts +49 -0
  30. package/dist/persistence/share-data-repository.d.ts.map +1 -0
  31. package/dist/persistence/share-data-repository.js +2 -0
  32. package/dist/share-data/creation/create-share-data-initial-crypto.d.ts +11 -0
  33. package/dist/share-data/creation/create-share-data-initial-crypto.d.ts.map +1 -0
  34. package/dist/share-data/creation/create-share-data-initial-crypto.js +26 -0
  35. package/dist/share-data/helpers/calculate-share-data-string.d.ts +21 -0
  36. package/dist/share-data/helpers/calculate-share-data-string.d.ts.map +1 -0
  37. package/dist/share-data/helpers/calculate-share-data-string.js +71 -0
  38. package/dist/share-data/helpers/config/default-share-data-string.config.d.ts +7 -0
  39. package/dist/share-data/helpers/config/default-share-data-string.config.d.ts.map +1 -0
  40. package/dist/share-data/helpers/config/default-share-data-string.config.js +25 -0
  41. package/dist/share-data/helpers/config/stringify.d.ts +5 -0
  42. package/dist/share-data/helpers/config/stringify.d.ts.map +1 -0
  43. package/dist/share-data/helpers/config/stringify.js +10 -0
  44. package/dist/share-data/helpers/get-array-string.d.ts +6 -0
  45. package/dist/share-data/helpers/get-array-string.d.ts.map +1 -0
  46. package/dist/share-data/helpers/get-array-string.js +17 -0
  47. package/dist/share-data/proofs/creation/build-transaction-proposal-signer.d.ts +57 -0
  48. package/dist/share-data/proofs/creation/build-transaction-proposal-signer.d.ts.map +1 -0
  49. package/dist/share-data/proofs/creation/build-transaction-proposal-signer.js +36 -0
  50. package/dist/share-data/proofs/creation/create-share-data-proposal-proof.d.ts +12 -0
  51. package/dist/share-data/proofs/creation/create-share-data-proposal-proof.d.ts.map +1 -0
  52. package/dist/share-data/proofs/creation/create-share-data-proposal-proof.js +41 -0
  53. package/dist/share-data/proofs/creation/create-transaction-proposal-proof.d.ts +27 -0
  54. package/dist/share-data/proofs/creation/create-transaction-proposal-proof.d.ts.map +1 -0
  55. package/dist/share-data/proofs/creation/create-transaction-proposal-proof.js +58 -0
  56. package/dist/share-data/proofs/helpers/create-share-data-string-to-sign.d.ts +12 -0
  57. package/dist/share-data/proofs/helpers/create-share-data-string-to-sign.d.ts.map +1 -0
  58. package/dist/share-data/proofs/helpers/create-share-data-string-to-sign.js +17 -0
  59. package/dist/share-data/proofs/helpers/create-transaction-proposal-string-to-sign.d.ts +24 -0
  60. package/dist/share-data/proofs/helpers/create-transaction-proposal-string-to-sign.d.ts.map +1 -0
  61. package/dist/share-data/proofs/helpers/create-transaction-proposal-string-to-sign.js +29 -0
  62. package/dist/share-data/proofs/helpers/get-previous-hash-from-share-data.d.ts +9 -0
  63. package/dist/share-data/proofs/helpers/get-previous-hash-from-share-data.d.ts.map +1 -0
  64. package/dist/share-data/proofs/helpers/get-previous-hash-from-share-data.js +28 -0
  65. package/dist/share-data/proofs/helpers/hash-proposed-state.d.ts +12 -0
  66. package/dist/share-data/proofs/helpers/hash-proposed-state.d.ts.map +1 -0
  67. package/dist/share-data/proofs/helpers/hash-proposed-state.js +18 -0
  68. package/dist/share-data/proofs/testing/test-proof-signer.d.ts +53 -0
  69. package/dist/share-data/proofs/testing/test-proof-signer.d.ts.map +1 -0
  70. package/dist/share-data/proofs/testing/test-proof-signer.js +113 -0
  71. package/dist/share-data/proofs/verification/verify-share-data-proposal-proof.d.ts +40 -0
  72. package/dist/share-data/proofs/verification/verify-share-data-proposal-proof.d.ts.map +1 -0
  73. package/dist/share-data/proofs/verification/verify-share-data-proposal-proof.js +126 -0
  74. package/dist/share-data/proofs/verification/verify-transaction-proposal-proof.d.ts +37 -0
  75. package/dist/share-data/proofs/verification/verify-transaction-proposal-proof.d.ts.map +1 -0
  76. package/dist/share-data/proofs/verification/verify-transaction-proposal-proof.js +125 -0
  77. package/dist/share-data/share-data.d.ts +180 -27
  78. package/dist/share-data/share-data.d.ts.map +1 -1
  79. package/dist/share-data/share-data.js +303 -60
  80. package/package.json +31 -13
@@ -1,76 +1,229 @@
1
- import { IShareData, IShareDataEvent, IShareFunction, IShareRuleApplied, IShareRuleEvalutionResult, IShareDataTransactionHistory } from '@degenerate/generic';
1
+ import { IShareData, IShareDataEvent, IShareFunction, IShareRuleApplied, IShareRuleEvalutionResult, IShareDataTransactionHistory, IShareDataCryptoProof, EllipticalCurvesSigning, IShareDataInitialCryptoData } from '@degenerate/generic';
2
2
  /**
3
3
  * This contains the interface for the share data object
4
4
  */
5
5
  export declare class ShareData {
6
6
  private _id;
7
7
  private _version;
8
+ private _isLocked;
8
9
  private _rules;
9
10
  private _functions;
10
11
  private _transactionHistory;
11
12
  private _events;
12
- private isLocked;
13
- private _data;
13
+ private _currentState;
14
+ private _cryptoProofs;
15
+ private _creationPublicKey;
16
+ private _creationHash;
17
+ private _creationSignature;
18
+ private _signingCurve;
19
+ private _lastUpdated;
20
+ private _structuralProofs;
14
21
  /**
15
22
  * This is the constructor for the share data object
16
23
  * @param id the id of the share data
24
+ * @param creationPublicKey the public key of the creator of the share data
17
25
  */
18
- constructor(id: string);
26
+ constructor(id: string, creationPublicKey: string, signingCurve?: EllipticalCurvesSigning);
19
27
  /**
20
- * This adds a rule to the share block.
21
- * @param rule the rule to add to the share block
28
+ * This initializes the cryptographic properties of the share data
29
+ * @param creationPublicKey the public key of the creator of the share data (in hex format)
30
+ * @param creationHash the hash of the share data
31
+ * @param creationSignature the cryptographic signature of the share data
22
32
  */
23
- addRule(rule: IShareRuleApplied): void;
33
+ initializeCrypto(initialCryptoData: IShareDataInitialCryptoData): void;
24
34
  /**
25
- * This gets the rules for the share block
35
+ * This validates the cryptographic properties of the share data
26
36
  */
27
- get rules(): IShareRuleApplied[];
28
37
  /**
29
- * This gets the transaction history for the share block
38
+ * This validates the cryptographic properties of the share data
39
+ * @param creationPublicKey the public key of the creator of the share data (in hex format)
30
40
  */
31
- addFunction(func: IShareFunction<any, (...args: any[]) => any, any>): void;
32
41
  /**
33
- * This gets the functions for the share block
42
+ * get the creation hash
34
43
  */
35
- get functions(): IShareFunction<any, (...args: any[]) => any, any>[];
44
+ get creationHash(): string;
45
+ /**
46
+ * get the creation public key
47
+ */
48
+ get creationPublicKey(): string;
49
+ /**
50
+ * get the creation signature
51
+ */
52
+ get creationSignature(): string;
53
+ /**
54
+ * This gets all cryptographic proofs for the share data
55
+ */
56
+ get cryptoProofs(): IShareDataCryptoProof[];
57
+ /**
58
+ * This returns the current state of data for the share block
59
+ */
60
+ get currentState(): IShareData;
36
61
  /**
37
62
  * This gets the events for the sharedata
38
63
  */
39
64
  get events(): IShareDataEvent[];
65
+ /**
66
+ * This gets the functions for the share block
67
+ */
68
+ get functions(): IShareFunction<any, (...args: any[]) => any, any>[];
69
+ /**
70
+ * This gets the id for the share data
71
+ */
72
+ get id(): string;
73
+ /**
74
+ * This get whether the share data is locked
75
+ */
76
+ get isLocked(): boolean;
77
+ /**
78
+ * This gets the last timestamp (in milliseconds) that the share data was updated
79
+ */
80
+ get lastUpdated(): number;
81
+ /**
82
+ * This gets the rules for the share block
83
+ */
84
+ get rules(): IShareRuleApplied[];
85
+ /**
86
+ * This gets the elliptical curve used for signing
87
+ */
88
+ get signingCurve(): EllipticalCurvesSigning;
89
+ /**
90
+ * This gets the structure proofs for the share data
91
+ */
92
+ get structuralProofs(): IShareDataCryptoProof[];
93
+ /**
94
+ * This gets the transaction history for the share block
95
+ */
96
+ get transactionHistory(): IShareDataTransactionHistory[];
97
+ /**
98
+ * This gets the version of the share data
99
+ */
100
+ get version(): number;
40
101
  /**
41
102
  * This adds an event to the share data
42
103
  * @param event the event to add
43
104
  */
44
105
  addEvent(event: IShareDataEvent): void;
45
106
  /**
46
- * This adds a transaction to the share block
47
- * @param rulesEvaluation the evaluation of the rules (result)
48
- * @param transactionFunction the function that was run
107
+ * This adds a function to the share block.
108
+ * @param func the function to add to the share block
109
+ */
110
+ addFunction(func: IShareFunction<any, (...args: any[]) => any, any>, cryptoProof: IShareDataCryptoProof): void;
111
+ /**
112
+ * This adds a rule to the share block.
113
+ * @param rule the rule to add to the share block
114
+ */
115
+ addRule(rule: IShareRuleApplied, cryptoProof: IShareDataCryptoProof): void;
116
+ /**
117
+ * Append a pre-validated transaction to the history. Pass `transactionTime`
118
+ * when the caller needs the recorded timestamp to be deterministic — for
119
+ * example, when a wire-format payload is being reconstructed and the
120
+ * resulting share-data state must hash identically to the one the
121
+ * remote signer produced. Omit it for ordinary live calls; defaults to
122
+ * `Date.now()`.
123
+ *
124
+ * Pass `proof` when replaying a persisted transaction so the rebuilt
125
+ * history entry carries the same proposal proof the live entry did. The
126
+ * canonical share-data hash folds `transactionHistory` in, so omitting the
127
+ * proof here would make a replayed block hash differently from the original
128
+ * and break verification of any later transaction's proof.
49
129
  */
50
- addTransactionAlreadyValidated(proposedData: IShareData, rulesEvaluation: IShareRuleEvalutionResult, transactionFunction: IShareFunction<any, (...args: any[]) => any, any>): void;
130
+ addTransactionAlreadyValidated(proposedData: IShareData, rulesEvaluation: IShareRuleEvalutionResult, transactionFunction: IShareFunction<any, (...args: any[]) => any, any>, transactionTime?: number, proof?: IShareDataCryptoProof): void;
51
131
  /**
52
132
  * This adds a transaction to the share block but the transaction has not yet been validated
53
133
  *
134
+ * The unsigned/internal apply path: it runs the rule engine and records the
135
+ * outcome but carries no proposal proof, so it does NOT attest that any key
136
+ * holder authorized the change. New runtime mutations should go through
137
+ * {@link addTransaction}, which verifies a transaction proposal proof first.
138
+ * Retained for internal replay/seed callers that operate before the signed
139
+ * boundary is in play.
140
+ *
54
141
  * @param proposedData the proposed data
55
142
  * @param transactionFunction the function that was attempted
56
143
  */
57
- addTransactionNotValidated(proposedData: IShareData, transactionFunction: IShareFunction<any, (...args: any[]) => any, any>): void;
144
+ addTransactionNotValidated(proposedData: IShareData, transactionFunction: IShareFunction<any, (...args: any[]) => any, any>): {
145
+ accepted: boolean;
146
+ transactionId: string;
147
+ };
58
148
  /**
59
- * This gets the transaction history for the share block
60
- */
61
- get transactionHistory(): IShareDataTransactionHistory[];
62
- /**
63
- * This returns the current state of data for the share block
149
+ * Signed runtime mutation path. Verifies that `proof` cryptographically
150
+ * authorizes applying `transactionFunction` to move this share-data to
151
+ * exactly `proposedData`, then runs the rule engine and records the
152
+ * outcome. The recorded history entry carries `proof`, so the audit log
153
+ * itself holds the signature — not merely "which function ran."
154
+ *
155
+ * Four gates, in order:
156
+ * 1. The function must be registered on this block.
157
+ * 2. The function must be addressable (`id` set) and the proof must be
158
+ * minted for that same id (`proof.purpose === transactionFunction.id`).
159
+ * This binds the proof to *this* function so a proof minted for one
160
+ * function can't be replayed to drive another even if the proposed
161
+ * state would satisfy both functions' rules.
162
+ * 3. The proof's signer must be authorized for this block —
163
+ * `proof.publicKey === creationPublicKey`. Signature validity alone
164
+ * only proves *someone* signed the transition; this binds the
165
+ * *authorized* someone (the block's creation key, the same key the
166
+ * HTTP create/delete ACL authorizes against). Without it any valid
167
+ * keypair could sign a legal transition.
168
+ * 4. The proof must verify against the current state AND `proposedData`
169
+ * (closes the amount-replay hole — see
170
+ * `verifyTransactionProposalProof`).
171
+ *
172
+ * Throws {@link ShareDataTransactionNotAuthorizedError} when the signer is
173
+ * not authorized (gate 3), {@link ShareDataTransactionProofFailedError} on
174
+ * any other auth failure — both before the rule engine runs and before any
175
+ * state is touched.
176
+ *
177
+ * @param proposedData the proposed next state
178
+ * @param transactionFunction the function producing `proposedData`
179
+ * @param proof the transaction proposal proof authorizing the change
64
180
  */
65
- get data(): IShareData;
181
+ addTransaction(proposedData: IShareData, transactionFunction: IShareFunction<any, (...args: any[]) => any, any>, proof: IShareDataCryptoProof): {
182
+ accepted: boolean;
183
+ transactionId: string;
184
+ };
66
185
  /**
67
- * This gets the version of the share data
186
+ * Shared rule-evaluate → apply-if-valid → record path used by both
187
+ * {@link addTransactionNotValidated} (no proof) and {@link addTransaction}
188
+ * (proof already verified by the caller). When `proof` is supplied it is
189
+ * recorded on the history entry so the audit log carries the signature.
68
190
  */
69
- get version(): number;
191
+ private evaluateAndApply;
70
192
  /**
71
193
  * This copies a share data object to a new transaction number
72
194
  * @param transactionNumber the number of the transaction to run until.
195
+ * @param publicKey the public key of the application that will be the new owner of the share data
196
+ */
197
+ copyTo(transactionNumber: number, publicKey: string): ShareData;
198
+ /**
199
+ * This adds a cryptographic proof to the share data
200
+ * @param proof the cryptographic proof to add
201
+ */
202
+ addCryptoProof(proof: IShareDataCryptoProof): void;
203
+ /**
204
+ * Verifies that `proof` is a faithful attestation of this share-data's
205
+ * current structural state under `proof.purpose`. Returns `true` on
206
+ * success; throws `ShareDataStructuralProofFailedError` on any mismatch
207
+ * (hash, previousHash, signature, or purpose).
208
+ */
209
+ verifyStructuralProof(proof: IShareDataCryptoProof, curve?: EllipticalCurvesSigning): true;
210
+ /**
211
+ * Verifies that `proof` authorizes applying a transaction that moves this
212
+ * share-data to exactly `proposedData`. Unlike {@link verifyStructuralProof}
213
+ * (which binds only the current state under a purpose), this additionally
214
+ * binds the proposed state — a proof minted for one proposed state will not
215
+ * verify against any other. Returns `true`; throws
216
+ * `ShareDataTransactionProofFailedError` on any mismatch.
217
+ */
218
+ verifyTransactionProof(proof: IShareDataCryptoProof, proposedData: IShareData, curve?: EllipticalCurvesSigning): true;
219
+ /**
220
+ * This adds a structure proof to the share data
221
+ * @param proof the structure proof to add
222
+ */
223
+ addStructuralProof(proof: IShareDataCryptoProof): void;
224
+ /**
225
+ * This initializes the share data object and locks it
73
226
  */
74
- copyTo(transactionNumber: number): ShareData;
227
+ initialize(): void;
75
228
  }
76
229
  //# sourceMappingURL=share-data.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"share-data.d.ts","sourceRoot":"","sources":["../../src/share-data/share-data.ts"],"names":[],"mappings":"AACA,OAAO,EACH,UAAU,EACV,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,yBAAyB,EACzB,4BAA4B,EAG/B,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,qBAAa,SAAS;IAClB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,UAAU,CAAsD;IACxE,OAAO,CAAC,mBAAmB,CAAiC;IAC5D,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,KAAK,CAAa;IAE1B;;;OAGG;gBACS,EAAE,EAAE,MAAM;IAatB;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAOtC;;OAEG;IACH,IAAI,KAAK,IAAI,iBAAiB,EAAE,CAE/B;IAED;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI;IAO1E;;OAEG;IACH,IAAI,SAAS,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,GAAG,CAAC,EAAE,CAEnE;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,eAAe,EAAE,CAE9B;IAED;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAItC;;;;OAIG;IACH,8BAA8B,CAC1B,YAAY,EAAE,UAAU,EACxB,eAAe,EAAE,yBAAyB,EAC1C,mBAAmB,EAAE,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,GAAG,CAAC,GACvE,IAAI;IAwBP;;;;;OAKG;IACH,0BAA0B,CACtB,YAAY,EAAE,UAAU,EACxB,mBAAmB,EAAE,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,GAAG,CAAC,GACvE,IAAI;IA0BP;;OAEG;IACH,IAAI,kBAAkB,IAAI,4BAA4B,EAAE,CAEvD;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,UAAU,CAErB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;;OAGG;IACH,MAAM,CAAC,iBAAiB,EAAE,MAAM,GAAG,SAAS;CAa/C"}
1
+ {"version":3,"file":"share-data.d.ts","sourceRoot":"","sources":["../../src/share-data/share-data.ts"],"names":[],"mappings":"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"}