cojson 0.0.7 → 0.0.9

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 (92) hide show
  1. package/.eslintrc.cjs +11 -8
  2. package/dist/coValue.d.ts +97 -0
  3. package/dist/coValue.js +381 -0
  4. package/dist/coValue.js.map +1 -0
  5. package/dist/coValue.test.d.ts +1 -0
  6. package/dist/coValue.test.js +78 -0
  7. package/dist/coValue.test.js.map +1 -0
  8. package/dist/contentType.d.ts +15 -0
  9. package/dist/contentType.js +7 -0
  10. package/dist/contentType.js.map +1 -0
  11. package/dist/contentType.test.d.ts +1 -0
  12. package/dist/contentType.test.js +149 -0
  13. package/dist/contentType.test.js.map +1 -0
  14. package/dist/contentTypes/coList.d.ts +11 -0
  15. package/dist/contentTypes/coList.js +16 -0
  16. package/dist/contentTypes/coList.js.map +1 -0
  17. package/dist/contentTypes/coMap.d.ts +56 -0
  18. package/dist/contentTypes/coMap.js +126 -0
  19. package/dist/contentTypes/coMap.js.map +1 -0
  20. package/dist/contentTypes/coStream.d.ts +11 -0
  21. package/dist/contentTypes/coStream.js +16 -0
  22. package/dist/contentTypes/coStream.js.map +1 -0
  23. package/dist/contentTypes/static.d.ts +11 -0
  24. package/dist/contentTypes/static.js +14 -0
  25. package/dist/contentTypes/static.js.map +1 -0
  26. package/dist/crypto.d.ts +97 -0
  27. package/dist/crypto.js +156 -0
  28. package/dist/crypto.js.map +1 -0
  29. package/dist/crypto.test.d.ts +1 -0
  30. package/dist/crypto.test.js +115 -0
  31. package/dist/crypto.test.js.map +1 -0
  32. package/dist/ids.d.ts +7 -0
  33. package/dist/ids.js +2 -0
  34. package/dist/ids.js.map +1 -0
  35. package/dist/index.d.ts +19 -0
  36. package/dist/index.js +13 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/jsonValue.d.ts +7 -0
  39. package/dist/jsonValue.js +2 -0
  40. package/dist/jsonValue.js.map +1 -0
  41. package/dist/node.d.ts +33 -0
  42. package/dist/node.js +113 -0
  43. package/dist/node.js.map +1 -0
  44. package/dist/permissions.d.ts +54 -0
  45. package/dist/permissions.js +218 -0
  46. package/dist/permissions.js.map +1 -0
  47. package/dist/permissions.test.d.ts +1 -0
  48. package/dist/permissions.test.js +794 -0
  49. package/dist/permissions.test.js.map +1 -0
  50. package/dist/sync.d.ts +80 -0
  51. package/dist/sync.js +271 -0
  52. package/dist/sync.js.map +1 -0
  53. package/dist/sync.test.d.ts +1 -0
  54. package/dist/sync.test.js +826 -0
  55. package/dist/sync.test.js.map +1 -0
  56. package/package.json +7 -6
  57. package/src/coValue.test.ts +3 -4
  58. package/src/coValue.ts +11 -11
  59. package/src/contentType.test.ts +3 -3
  60. package/src/contentType.ts +6 -6
  61. package/src/contentTypes/coList.ts +4 -4
  62. package/src/contentTypes/coMap.ts +6 -6
  63. package/src/contentTypes/coStream.ts +4 -4
  64. package/src/contentTypes/static.ts +5 -5
  65. package/src/crypto.test.ts +1 -1
  66. package/src/crypto.ts +2 -2
  67. package/src/index.ts +8 -8
  68. package/src/jsonValue.ts +1 -1
  69. package/src/node.ts +6 -7
  70. package/src/permissions.test.ts +5 -5
  71. package/src/permissions.ts +7 -7
  72. package/src/sync.test.ts +7 -7
  73. package/src/sync.ts +6 -6
  74. package/tsconfig.json +1 -7
  75. package/dist/coValue.mjs +0 -437
  76. package/dist/coValue.test.mjs +0 -122
  77. package/dist/contentType.mjs +0 -7
  78. package/dist/contentType.test.mjs +0 -179
  79. package/dist/contentTypes/coList.mjs +0 -18
  80. package/dist/contentTypes/coMap.mjs +0 -126
  81. package/dist/contentTypes/coStream.mjs +0 -18
  82. package/dist/contentTypes/static.mjs +0 -16
  83. package/dist/crypto.mjs +0 -207
  84. package/dist/crypto.test.mjs +0 -155
  85. package/dist/ids.mjs +0 -1
  86. package/dist/index.mjs +0 -21
  87. package/dist/jsonValue.mjs +0 -1
  88. package/dist/node.mjs +0 -144
  89. package/dist/permissions.mjs +0 -244
  90. package/dist/permissions.test.mjs +0 -985
  91. package/dist/sync.mjs +0 -318
  92. package/dist/sync.test.mjs +0 -861
@@ -0,0 +1,149 @@
1
+ import { agentIDfromSessionID, getAgent, getAgentID, newRandomAgentCredential, newRandomSessionID, } from './coValue.js';
2
+ import { createdNowUnique } from "./crypto.js";
3
+ import { LocalNode } from "./node.js";
4
+ test("Empty COJSON Map works", () => {
5
+ const agentCredential = newRandomAgentCredential("agent1");
6
+ const node = new LocalNode(agentCredential, newRandomSessionID(getAgentID(getAgent(agentCredential))));
7
+ const coValue = node.createCoValue({
8
+ type: "comap",
9
+ ruleset: { type: "unsafeAllowAll" },
10
+ meta: null,
11
+ ...createdNowUnique()
12
+ });
13
+ const content = coValue.getCurrentContent();
14
+ if (content.type !== "comap") {
15
+ throw new Error("Expected map");
16
+ }
17
+ expect(content.type).toEqual("comap");
18
+ expect([...content.keys()]).toEqual([]);
19
+ expect(content.toJSON()).toEqual({});
20
+ });
21
+ test("Can insert and delete Map entries in edit()", () => {
22
+ const agentCredential = newRandomAgentCredential("agent1");
23
+ const node = new LocalNode(agentCredential, newRandomSessionID(getAgentID(getAgent(agentCredential))));
24
+ const coValue = node.createCoValue({
25
+ type: "comap",
26
+ ruleset: { type: "unsafeAllowAll" },
27
+ meta: null,
28
+ ...createdNowUnique()
29
+ });
30
+ const content = coValue.getCurrentContent();
31
+ if (content.type !== "comap") {
32
+ throw new Error("Expected map");
33
+ }
34
+ expect(content.type).toEqual("comap");
35
+ content.edit((editable) => {
36
+ editable.set("hello", "world", "trusting");
37
+ expect(editable.get("hello")).toEqual("world");
38
+ editable.set("foo", "bar", "trusting");
39
+ expect(editable.get("foo")).toEqual("bar");
40
+ expect([...editable.keys()]).toEqual(["hello", "foo"]);
41
+ editable.delete("foo", "trusting");
42
+ expect(editable.get("foo")).toEqual(undefined);
43
+ });
44
+ });
45
+ test("Can get map entry values at different points in time", () => {
46
+ const agentCredential = newRandomAgentCredential("agent1");
47
+ const node = new LocalNode(agentCredential, newRandomSessionID(getAgentID(getAgent(agentCredential))));
48
+ const coValue = node.createCoValue({
49
+ type: "comap",
50
+ ruleset: { type: "unsafeAllowAll" },
51
+ meta: null,
52
+ ...createdNowUnique()
53
+ });
54
+ const content = coValue.getCurrentContent();
55
+ if (content.type !== "comap") {
56
+ throw new Error("Expected map");
57
+ }
58
+ expect(content.type).toEqual("comap");
59
+ content.edit((editable) => {
60
+ const beforeA = Date.now();
61
+ while (Date.now() < beforeA + 10) { }
62
+ editable.set("hello", "A", "trusting");
63
+ const beforeB = Date.now();
64
+ while (Date.now() < beforeB + 10) { }
65
+ editable.set("hello", "B", "trusting");
66
+ const beforeC = Date.now();
67
+ while (Date.now() < beforeC + 10) { }
68
+ editable.set("hello", "C", "trusting");
69
+ expect(editable.get("hello")).toEqual("C");
70
+ expect(editable.getAtTime("hello", Date.now())).toEqual("C");
71
+ expect(editable.getAtTime("hello", beforeA)).toEqual(undefined);
72
+ expect(editable.getAtTime("hello", beforeB)).toEqual("A");
73
+ expect(editable.getAtTime("hello", beforeC)).toEqual("B");
74
+ });
75
+ });
76
+ test("Can get all historic values of key", () => {
77
+ const agentCredential = newRandomAgentCredential("agent1");
78
+ const node = new LocalNode(agentCredential, newRandomSessionID(getAgentID(getAgent(agentCredential))));
79
+ const coValue = node.createCoValue({
80
+ type: "comap",
81
+ ruleset: { type: "unsafeAllowAll" },
82
+ meta: null,
83
+ ...createdNowUnique()
84
+ });
85
+ const content = coValue.getCurrentContent();
86
+ if (content.type !== "comap") {
87
+ throw new Error("Expected map");
88
+ }
89
+ expect(content.type).toEqual("comap");
90
+ content.edit((editable) => {
91
+ editable.set("hello", "A", "trusting");
92
+ const txA = editable.getLastTxID("hello");
93
+ editable.set("hello", "B", "trusting");
94
+ const txB = editable.getLastTxID("hello");
95
+ editable.delete("hello", "trusting");
96
+ const txDel = editable.getLastTxID("hello");
97
+ editable.set("hello", "C", "trusting");
98
+ const txC = editable.getLastTxID("hello");
99
+ expect(editable.getHistory("hello")).toEqual([
100
+ {
101
+ txID: txA,
102
+ value: "A",
103
+ at: txA && coValue.getTx(txA)?.madeAt,
104
+ },
105
+ {
106
+ txID: txB,
107
+ value: "B",
108
+ at: txB && coValue.getTx(txB)?.madeAt,
109
+ },
110
+ {
111
+ txID: txDel,
112
+ value: undefined,
113
+ at: txDel && coValue.getTx(txDel)?.madeAt,
114
+ },
115
+ {
116
+ txID: txC,
117
+ value: "C",
118
+ at: txC && coValue.getTx(txC)?.madeAt,
119
+ },
120
+ ]);
121
+ });
122
+ });
123
+ test("Can get last tx ID for a key", () => {
124
+ const agentCredential = newRandomAgentCredential("agent1");
125
+ const node = new LocalNode(agentCredential, newRandomSessionID(getAgentID(getAgent(agentCredential))));
126
+ const coValue = node.createCoValue({
127
+ type: "comap",
128
+ ruleset: { type: "unsafeAllowAll" },
129
+ meta: null,
130
+ ...createdNowUnique()
131
+ });
132
+ const content = coValue.getCurrentContent();
133
+ if (content.type !== "comap") {
134
+ throw new Error("Expected map");
135
+ }
136
+ expect(content.type).toEqual("comap");
137
+ content.edit((editable) => {
138
+ expect(editable.getLastTxID("hello")).toEqual(undefined);
139
+ editable.set("hello", "A", "trusting");
140
+ const sessionID = editable.getLastTxID("hello")?.sessionID;
141
+ expect(sessionID && agentIDfromSessionID(sessionID)).toEqual(getAgentID(getAgent(agentCredential)));
142
+ expect(editable.getLastTxID("hello")?.txIndex).toEqual(0);
143
+ editable.set("hello", "B", "trusting");
144
+ expect(editable.getLastTxID("hello")?.txIndex).toEqual(1);
145
+ editable.set("hello", "C", "trusting");
146
+ expect(editable.getLastTxID("hello")?.txIndex).toEqual(2);
147
+ });
148
+ });
149
+ //# sourceMappingURL=contentType.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contentType.test.js","sourceRoot":"","sources":["../src/contentType.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { JsonObject, JsonValue } from '../jsonValue.js';
2
+ import { CoValueID } from '../contentType.js';
3
+ import { CoValue } from '../coValue.js';
4
+ export declare class CoList<T extends JsonValue, Meta extends JsonValue> {
5
+ id: CoValueID<CoList<T, Meta>>;
6
+ type: "colist";
7
+ coValue: CoValue;
8
+ constructor(coValue: CoValue);
9
+ toJSON(): JsonObject;
10
+ subscribe(listener: (coMap: CoList<T, Meta>) => void): () => void;
11
+ }
@@ -0,0 +1,16 @@
1
+ export class CoList {
2
+ constructor(coValue) {
3
+ this.type = "colist";
4
+ this.id = coValue.id;
5
+ this.coValue = coValue;
6
+ }
7
+ toJSON() {
8
+ throw new Error("Method not implemented.");
9
+ }
10
+ subscribe(listener) {
11
+ return this.coValue.subscribe((content) => {
12
+ listener(content);
13
+ });
14
+ }
15
+ }
16
+ //# sourceMappingURL=coList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coList.js","sourceRoot":"","sources":["../../src/contentTypes/coList.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,MAAM;IAKf,YAAY,OAAgB;QAH5B,SAAI,GAAG,QAAiB,CAAC;QAIrB,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAgC,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,MAAM;QACF,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,SAAS,CAAC,QAA0C;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;YACtC,QAAQ,CAAC,OAA0B,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
@@ -0,0 +1,56 @@
1
+ import { JsonObject, JsonValue } from '../jsonValue.js';
2
+ import { TransactionID } from '../ids.js';
3
+ import { CoValueID } from '../contentType.js';
4
+ import { CoValue } from '../coValue.js';
5
+ type MapOp<K extends string, V extends JsonValue> = {
6
+ txID: TransactionID;
7
+ madeAt: number;
8
+ changeIdx: number;
9
+ } & MapOpPayload<K, V>;
10
+ export type MapOpPayload<K extends string, V extends JsonValue> = {
11
+ op: "insert";
12
+ key: K;
13
+ value: V;
14
+ } | {
15
+ op: "delete";
16
+ key: K;
17
+ };
18
+ export declare class CoMap<M extends {
19
+ [key: string]: JsonValue;
20
+ }, Meta extends JsonValue, K extends string = keyof M & string, V extends JsonValue = M[K], MM extends {
21
+ [key: string]: JsonValue;
22
+ } = {
23
+ [KK in K]: M[KK];
24
+ }> {
25
+ id: CoValueID<CoMap<MM, Meta>>;
26
+ coValue: CoValue;
27
+ type: "comap";
28
+ ops: {
29
+ [KK in K]?: MapOp<K, M[KK]>[];
30
+ };
31
+ constructor(coValue: CoValue);
32
+ protected fillOpsFromCoValue(): void;
33
+ keys(): K[];
34
+ get<KK extends K>(key: KK): M[KK] | undefined;
35
+ getAtTime<KK extends K>(key: KK, time: number): M[KK] | undefined;
36
+ getLastTxID<KK extends K>(key: KK): TransactionID | undefined;
37
+ getHistory<KK extends K>(key: KK): {
38
+ at: number;
39
+ txID: TransactionID;
40
+ value: M[KK] | undefined;
41
+ }[];
42
+ toJSON(): JsonObject;
43
+ edit(changer: (editable: WriteableCoMap<M, Meta>) => void): CoMap<M, Meta>;
44
+ subscribe(listener: (coMap: CoMap<M, Meta>) => void): () => void;
45
+ }
46
+ export declare class WriteableCoMap<M extends {
47
+ [key: string]: JsonValue;
48
+ }, Meta extends JsonValue, K extends string = keyof M & string, V extends JsonValue = M[K], MM extends {
49
+ [key: string]: JsonValue;
50
+ } = {
51
+ [KK in K]: M[KK];
52
+ }> extends CoMap<M, Meta, K, V, MM> {
53
+ set<KK extends K>(key: KK, value: M[KK], privacy?: "private" | "trusting"): void;
54
+ delete(key: K, privacy?: "private" | "trusting"): void;
55
+ }
56
+ export {};
@@ -0,0 +1,126 @@
1
+ export class CoMap {
2
+ constructor(coValue) {
3
+ this.type = "comap";
4
+ this.id = coValue.id;
5
+ this.coValue = coValue;
6
+ this.ops = {};
7
+ this.fillOpsFromCoValue();
8
+ }
9
+ fillOpsFromCoValue() {
10
+ this.ops = {};
11
+ for (const { txID, changes, madeAt } of this.coValue.getValidSortedTransactions()) {
12
+ for (const [changeIdx, changeUntyped] of (changes).entries()) {
13
+ const change = changeUntyped;
14
+ let entries = this.ops[change.key];
15
+ if (!entries) {
16
+ entries = [];
17
+ this.ops[change.key] = entries;
18
+ }
19
+ entries.push({
20
+ txID,
21
+ madeAt,
22
+ changeIdx,
23
+ ...change,
24
+ });
25
+ }
26
+ }
27
+ }
28
+ keys() {
29
+ return Object.keys(this.ops);
30
+ }
31
+ get(key) {
32
+ const ops = this.ops[key];
33
+ if (!ops) {
34
+ return undefined;
35
+ }
36
+ const lastEntry = ops[ops.length - 1];
37
+ if (lastEntry.op === "delete") {
38
+ return undefined;
39
+ }
40
+ else {
41
+ return lastEntry.value;
42
+ }
43
+ }
44
+ getAtTime(key, time) {
45
+ const ops = this.ops[key];
46
+ if (!ops) {
47
+ return undefined;
48
+ }
49
+ const lastOpBeforeOrAtTime = ops.findLast((op) => op.madeAt <= time);
50
+ if (!lastOpBeforeOrAtTime) {
51
+ return undefined;
52
+ }
53
+ if (lastOpBeforeOrAtTime.op === "delete") {
54
+ return undefined;
55
+ }
56
+ else {
57
+ return lastOpBeforeOrAtTime.value;
58
+ }
59
+ }
60
+ getLastTxID(key) {
61
+ const ops = this.ops[key];
62
+ if (!ops) {
63
+ return undefined;
64
+ }
65
+ const lastEntry = ops[ops.length - 1];
66
+ return lastEntry.txID;
67
+ }
68
+ getHistory(key) {
69
+ const ops = this.ops[key];
70
+ if (!ops) {
71
+ return [];
72
+ }
73
+ const history = [];
74
+ for (const op of ops) {
75
+ if (op.op === "delete") {
76
+ history.push({ at: op.madeAt, txID: op.txID, value: undefined });
77
+ }
78
+ else {
79
+ history.push({ at: op.madeAt, txID: op.txID, value: op.value });
80
+ }
81
+ }
82
+ return history;
83
+ }
84
+ toJSON() {
85
+ const json = {};
86
+ for (const key of this.keys()) {
87
+ const value = this.get(key);
88
+ if (value !== undefined) {
89
+ json[key] = value;
90
+ }
91
+ }
92
+ return json;
93
+ }
94
+ edit(changer) {
95
+ const editable = new WriteableCoMap(this.coValue);
96
+ changer(editable);
97
+ return new CoMap(this.coValue);
98
+ }
99
+ subscribe(listener) {
100
+ return this.coValue.subscribe((content) => {
101
+ listener(content);
102
+ });
103
+ }
104
+ }
105
+ export class WriteableCoMap extends CoMap {
106
+ set(key, value, privacy = "private") {
107
+ this.coValue.makeTransaction([
108
+ {
109
+ op: "insert",
110
+ key,
111
+ value,
112
+ },
113
+ ], privacy);
114
+ this.fillOpsFromCoValue();
115
+ }
116
+ delete(key, privacy = "private") {
117
+ this.coValue.makeTransaction([
118
+ {
119
+ op: "delete",
120
+ key,
121
+ },
122
+ ], privacy);
123
+ this.fillOpsFromCoValue();
124
+ }
125
+ }
126
+ //# sourceMappingURL=coMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coMap.js","sourceRoot":"","sources":["../../src/contentTypes/coMap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { JsonObject, JsonValue } from '../jsonValue.js';
2
+ import { CoValueID } from '../contentType.js';
3
+ import { CoValue } from '../coValue.js';
4
+ export declare class CoStream<T extends JsonValue, Meta extends JsonValue> {
5
+ id: CoValueID<CoStream<T, Meta>>;
6
+ type: "costream";
7
+ coValue: CoValue;
8
+ constructor(coValue: CoValue);
9
+ toJSON(): JsonObject;
10
+ subscribe(listener: (coMap: CoStream<T, Meta>) => void): () => void;
11
+ }
@@ -0,0 +1,16 @@
1
+ export class CoStream {
2
+ constructor(coValue) {
3
+ this.type = "costream";
4
+ this.id = coValue.id;
5
+ this.coValue = coValue;
6
+ }
7
+ toJSON() {
8
+ throw new Error("Method not implemented.");
9
+ }
10
+ subscribe(listener) {
11
+ return this.coValue.subscribe((content) => {
12
+ listener(content);
13
+ });
14
+ }
15
+ }
16
+ //# sourceMappingURL=coStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coStream.js","sourceRoot":"","sources":["../../src/contentTypes/coStream.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,QAAQ;IAKjB,YAAY,OAAgB;QAH5B,SAAI,GAAG,UAAmB,CAAC;QAIvB,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAkC,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,MAAM;QACF,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,SAAS,CAAC,QAA4C;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;YACtC,QAAQ,CAAC,OAA4B,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
@@ -0,0 +1,11 @@
1
+ import { JsonObject, JsonValue } from '../jsonValue.js';
2
+ import { CoValueID } from '../contentType.js';
3
+ import { CoValue } from '../coValue.js';
4
+ export declare class Static<T extends JsonValue> {
5
+ id: CoValueID<Static<T>>;
6
+ type: "static";
7
+ coValue: CoValue;
8
+ constructor(coValue: CoValue);
9
+ toJSON(): JsonObject;
10
+ subscribe(_listener: (coMap: Static<T>) => void): () => void;
11
+ }
@@ -0,0 +1,14 @@
1
+ export class Static {
2
+ constructor(coValue) {
3
+ this.type = "static";
4
+ this.id = coValue.id;
5
+ this.coValue = coValue;
6
+ }
7
+ toJSON() {
8
+ throw new Error("Method not implemented.");
9
+ }
10
+ subscribe(_listener) {
11
+ throw new Error("Method not implemented.");
12
+ }
13
+ }
14
+ //# sourceMappingURL=static.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static.js","sourceRoot":"","sources":["../../src/contentTypes/static.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,MAAM;IAKf,YAAY,OAAgB;QAH5B,SAAI,GAAG,QAAiB,CAAC;QAIrB,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAA0B,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,MAAM;QACF,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,SAAS,CAAC,SAAqC;QAC3C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;CACJ"}
@@ -0,0 +1,97 @@
1
+ import { JsonValue } from './jsonValue.js';
2
+ import { blake3 } from "@noble/hashes/blake3";
3
+ import { RawCoValueID, TransactionID } from './ids.js';
4
+ export type SignatorySecret = `signatorySecret_z${string}`;
5
+ export type SignatoryID = `signatory_z${string}`;
6
+ export type Signature = `signature_z${string}`;
7
+ export type RecipientSecret = `recipientSecret_z${string}`;
8
+ export type RecipientID = `recipient_z${string}`;
9
+ export type Sealed<T> = `sealed_U${string}` & {
10
+ __type: T;
11
+ };
12
+ export declare function newRandomSignatory(): SignatorySecret;
13
+ export declare function signatorySecretToBytes(secret: SignatorySecret): Uint8Array;
14
+ export declare function signatorySecretFromBytes(bytes: Uint8Array): SignatorySecret;
15
+ export declare function getSignatoryID(secret: SignatorySecret): SignatoryID;
16
+ export declare function sign(secret: SignatorySecret, message: JsonValue): Signature;
17
+ export declare function verify(signature: Signature, message: JsonValue, id: SignatoryID): boolean;
18
+ export declare function newRandomRecipient(): RecipientSecret;
19
+ export declare function recipientSecretToBytes(secret: RecipientSecret): Uint8Array;
20
+ export declare function recipientSecretFromBytes(bytes: Uint8Array): RecipientSecret;
21
+ export declare function getRecipientID(secret: RecipientSecret): RecipientID;
22
+ export type SealedSet<T> = {
23
+ [recipient: RecipientID]: Sealed<T>;
24
+ };
25
+ export declare function seal<T extends JsonValue>(message: T, from: RecipientSecret, to: Set<RecipientID>, nOnceMaterial: {
26
+ in: RawCoValueID;
27
+ tx: TransactionID;
28
+ }): SealedSet<T>;
29
+ export declare function openAs<T extends JsonValue>(sealedSet: SealedSet<T>, recipient: RecipientSecret, from: RecipientID, nOnceMaterial: {
30
+ in: RawCoValueID;
31
+ tx: TransactionID;
32
+ }): T | undefined;
33
+ export type Hash = `hash_z${string}`;
34
+ export declare function secureHash(value: JsonValue): Hash;
35
+ export declare class StreamingHash {
36
+ state: ReturnType<typeof blake3.create>;
37
+ constructor(fromClone?: ReturnType<typeof blake3.create>);
38
+ update(value: JsonValue): void;
39
+ digest(): Hash;
40
+ clone(): StreamingHash;
41
+ }
42
+ export type ShortHash = `shortHash_z${string}`;
43
+ export declare function shortHash(value: JsonValue): ShortHash;
44
+ export type Encrypted<T extends JsonValue, N extends JsonValue> = `encrypted_U${string}` & {
45
+ __type: T;
46
+ __nOnceMaterial: N;
47
+ };
48
+ export type KeySecret = `keySecret_z${string}`;
49
+ export type KeyID = `key_z${string}`;
50
+ export declare function newRandomKeySecret(): {
51
+ secret: KeySecret;
52
+ id: KeyID;
53
+ };
54
+ export declare function encryptForTransaction<T extends JsonValue>(value: T, keySecret: KeySecret, nOnceMaterial: {
55
+ in: RawCoValueID;
56
+ tx: TransactionID;
57
+ }): Encrypted<T, {
58
+ in: RawCoValueID;
59
+ tx: TransactionID;
60
+ }>;
61
+ export declare function sealKeySecret(keys: {
62
+ toSeal: {
63
+ id: KeyID;
64
+ secret: KeySecret;
65
+ };
66
+ sealing: {
67
+ id: KeyID;
68
+ secret: KeySecret;
69
+ };
70
+ }): {
71
+ sealed: KeyID;
72
+ sealing: KeyID;
73
+ encrypted: Encrypted<KeySecret, {
74
+ sealed: KeyID;
75
+ sealing: KeyID;
76
+ }>;
77
+ };
78
+ export declare function decryptForTransaction<T extends JsonValue>(encrypted: Encrypted<T, {
79
+ in: RawCoValueID;
80
+ tx: TransactionID;
81
+ }>, keySecret: KeySecret, nOnceMaterial: {
82
+ in: RawCoValueID;
83
+ tx: TransactionID;
84
+ }): T | undefined;
85
+ export declare function unsealKeySecret(sealedInfo: {
86
+ sealed: KeyID;
87
+ sealing: KeyID;
88
+ encrypted: Encrypted<KeySecret, {
89
+ sealed: KeyID;
90
+ sealing: KeyID;
91
+ }>;
92
+ }, sealingSecret: KeySecret): KeySecret | undefined;
93
+ export declare function uniquenessForHeader(): `z${string}`;
94
+ export declare function createdNowUnique(): {
95
+ createdAt: `2${string}`;
96
+ uniqueness: `z${string}`;
97
+ };