cojson 0.0.10 → 0.0.12

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 (75) hide show
  1. package/README.md +2 -2
  2. package/dist/account.d.ts +57 -0
  3. package/dist/account.js +76 -0
  4. package/dist/account.js.map +1 -0
  5. package/dist/account.test.d.ts +1 -0
  6. package/dist/account.test.js +40 -0
  7. package/dist/account.test.js.map +1 -0
  8. package/dist/coValue.d.ts +16 -35
  9. package/dist/coValue.js +49 -112
  10. package/dist/coValue.js.map +1 -1
  11. package/dist/coValue.test.js +16 -16
  12. package/dist/coValue.test.js.map +1 -1
  13. package/dist/contentType.d.ts +9 -9
  14. package/dist/contentType.js.map +1 -1
  15. package/dist/contentType.test.js +13 -17
  16. package/dist/contentType.test.js.map +1 -1
  17. package/dist/contentTypes/coList.d.ts +3 -3
  18. package/dist/contentTypes/coList.js.map +1 -1
  19. package/dist/contentTypes/coMap.d.ts +31 -21
  20. package/dist/contentTypes/coMap.js +28 -0
  21. package/dist/contentTypes/coMap.js.map +1 -1
  22. package/dist/contentTypes/coStream.d.ts +3 -3
  23. package/dist/contentTypes/coStream.js.map +1 -1
  24. package/dist/contentTypes/static.d.ts +4 -4
  25. package/dist/contentTypes/static.js.map +1 -1
  26. package/dist/crypto.d.ts +45 -39
  27. package/dist/crypto.js +68 -49
  28. package/dist/crypto.js.map +1 -1
  29. package/dist/crypto.test.js +45 -49
  30. package/dist/crypto.test.js.map +1 -1
  31. package/dist/ids.d.ts +5 -3
  32. package/dist/ids.js +3 -1
  33. package/dist/ids.js.map +1 -1
  34. package/dist/index.d.ts +12 -14
  35. package/dist/index.js +6 -8
  36. package/dist/index.js.map +1 -1
  37. package/dist/jsonValue.d.ts +2 -2
  38. package/dist/node.d.ts +25 -15
  39. package/dist/node.js +88 -33
  40. package/dist/node.js.map +1 -1
  41. package/dist/permissions.d.ts +27 -33
  42. package/dist/permissions.js +55 -47
  43. package/dist/permissions.js.map +1 -1
  44. package/dist/permissions.test.js +231 -314
  45. package/dist/permissions.test.js.map +1 -1
  46. package/dist/sync.d.ts +26 -28
  47. package/dist/sync.js +81 -67
  48. package/dist/sync.js.map +1 -1
  49. package/dist/sync.test.js +194 -293
  50. package/dist/sync.test.js.map +1 -1
  51. package/dist/testUtils.d.ts +37 -0
  52. package/dist/testUtils.js +157 -0
  53. package/dist/testUtils.js.map +1 -0
  54. package/package.json +1 -1
  55. package/src/account.test.ts +67 -0
  56. package/src/account.ts +152 -0
  57. package/src/coValue.test.ts +17 -31
  58. package/src/coValue.ts +93 -179
  59. package/src/contentType.test.ts +18 -45
  60. package/src/contentType.ts +15 -13
  61. package/src/contentTypes/coList.ts +4 -4
  62. package/src/contentTypes/coMap.ts +55 -29
  63. package/src/contentTypes/coStream.ts +4 -4
  64. package/src/contentTypes/static.ts +5 -5
  65. package/src/crypto.test.ts +53 -59
  66. package/src/crypto.ts +123 -95
  67. package/src/ids.ts +9 -3
  68. package/src/index.ts +14 -25
  69. package/src/jsonValue.ts +2 -2
  70. package/src/node.ts +189 -61
  71. package/src/permissions.test.ts +370 -404
  72. package/src/permissions.ts +126 -109
  73. package/src/sync.test.ts +284 -426
  74. package/src/sync.ts +115 -105
  75. package/src/testUtils.ts +229 -0
package/README.md CHANGED
@@ -20,7 +20,7 @@ THIS IS WORK IN PROGRESS
20
20
  - boolean
21
21
  - number
22
22
  - string
23
- - stringly-encoded CoJSON identifiers & data (`CoValueID`, `AgentID`, `SessionID`, `SignatoryID`, `SignatorySecret`, `Signature`, `RecipientID`, `RecipientSecret`, `Sealed`, `Hash`, `ShortHash`, `KeySecret`, `KeyID`, `Encrypted`, `Role`)
23
+ - stringly-encoded CoJSON identifiers & data (`CoID`, `AgentID`, `SessionID`, `SignerID`, `SignerSecret`, `Signature`, `SealerID`, `SealerSecret`, `Sealed`, `Hash`, `ShortHash`, `KeySecret`, `KeyID`, `Encrypted`, `Role`)
24
24
 
25
25
  - array
26
26
  - object
@@ -29,7 +29,7 @@ THIS IS WORK IN PROGRESS
29
29
  - CoMap (`string` → `Immutable`, last-writer-wins per key)
30
30
  - Team (`AgentID` → `Role`)
31
31
  - CoList (`Immutable[]`, addressable positions, insertAfter semantics)
32
- - Agent (`{signatoryID, recipientID}[]`)
32
+ - Agent (`{signerID, sealerID}[]`)
33
33
  - CoStream (independent per-session streams of `Immutable`s)
34
34
  - Static (single addressable `Immutable`)
35
35
 
@@ -0,0 +1,57 @@
1
+ import { CoValueHeader } from "./coValue.js";
2
+ import { CoID } from "./contentType.js";
3
+ import { AgentSecret, SealerID, SealerSecret, SignerID, SignerSecret } from "./crypto.js";
4
+ import { AgentID } from "./ids.js";
5
+ import { CoMap, LocalNode } from "./index.js";
6
+ import { Team, TeamContent } from "./permissions.js";
7
+ export declare function accountHeaderForInitialAgentSecret(agentSecret: AgentSecret): CoValueHeader;
8
+ export declare class Account extends Team {
9
+ get id(): AccountID;
10
+ getCurrentAgentID(): AgentID;
11
+ }
12
+ export interface GeneralizedControlledAccount {
13
+ id: AccountIDOrAgentID;
14
+ agentSecret: AgentSecret;
15
+ currentAgentID: () => AgentID;
16
+ currentSignerID: () => SignerID;
17
+ currentSignerSecret: () => SignerSecret;
18
+ currentSealerID: () => SealerID;
19
+ currentSealerSecret: () => SealerSecret;
20
+ }
21
+ export declare class ControlledAccount extends Account implements GeneralizedControlledAccount {
22
+ agentSecret: AgentSecret;
23
+ constructor(agentSecret: AgentSecret, teamMap: CoMap<AccountContent, AccountMeta>, node: LocalNode);
24
+ currentAgentID(): AgentID;
25
+ currentSignerID(): SignerID;
26
+ currentSignerSecret(): SignerSecret;
27
+ currentSealerID(): SealerID;
28
+ currentSealerSecret(): SealerSecret;
29
+ }
30
+ export declare class AnonymousControlledAccount implements GeneralizedControlledAccount {
31
+ agentSecret: AgentSecret;
32
+ constructor(agentSecret: AgentSecret);
33
+ get id(): AgentID;
34
+ currentAgentID(): AgentID;
35
+ currentSignerID(): SignerID;
36
+ currentSignerSecret(): SignerSecret;
37
+ currentSealerID(): SealerID;
38
+ currentSealerSecret(): SealerSecret;
39
+ }
40
+ export type AccountContent = TeamContent & {
41
+ profile: CoID<Profile>;
42
+ };
43
+ export type AccountMeta = {
44
+ type: "account";
45
+ };
46
+ export type AccountID = CoID<CoMap<AccountContent, AccountMeta>>;
47
+ export type AccountIDOrAgentID = AgentID | AccountID;
48
+ export type AccountOrAgentID = AgentID | Account;
49
+ export type AccountOrAgentSecret = AgentSecret | Account;
50
+ export declare function isAccountID(id: AccountIDOrAgentID): id is AccountID;
51
+ export type ProfileContent = {
52
+ name: string;
53
+ };
54
+ export type ProfileMeta = {
55
+ type: "profile";
56
+ };
57
+ export type Profile = CoMap<ProfileContent, ProfileMeta>;
@@ -0,0 +1,76 @@
1
+ import { getAgentID, getAgentSealerID, getAgentSealerSecret, getAgentSignerID, getAgentSignerSecret, } from "./crypto.js";
2
+ import { Team } from "./permissions.js";
3
+ export function accountHeaderForInitialAgentSecret(agentSecret) {
4
+ const agent = getAgentID(agentSecret);
5
+ return {
6
+ type: "comap",
7
+ ruleset: { type: "team", initialAdmin: agent },
8
+ meta: {
9
+ type: "account",
10
+ },
11
+ createdAt: null,
12
+ uniqueness: null,
13
+ };
14
+ }
15
+ export class Account extends Team {
16
+ get id() {
17
+ return this.teamMap.id;
18
+ }
19
+ getCurrentAgentID() {
20
+ const agents = this.teamMap
21
+ .keys()
22
+ .filter((k) => k.startsWith("sealer_"));
23
+ if (agents.length !== 1) {
24
+ throw new Error("Expected exactly one agent in account, got " + agents.length);
25
+ }
26
+ return agents[0];
27
+ }
28
+ }
29
+ export class ControlledAccount extends Account {
30
+ constructor(agentSecret, teamMap, node) {
31
+ super(teamMap, node);
32
+ this.agentSecret = agentSecret;
33
+ }
34
+ currentAgentID() {
35
+ return getAgentID(this.agentSecret);
36
+ }
37
+ currentSignerID() {
38
+ return getAgentSignerID(this.currentAgentID());
39
+ }
40
+ currentSignerSecret() {
41
+ return getAgentSignerSecret(this.agentSecret);
42
+ }
43
+ currentSealerID() {
44
+ return getAgentSealerID(this.currentAgentID());
45
+ }
46
+ currentSealerSecret() {
47
+ return getAgentSealerSecret(this.agentSecret);
48
+ }
49
+ }
50
+ export class AnonymousControlledAccount {
51
+ constructor(agentSecret) {
52
+ this.agentSecret = agentSecret;
53
+ }
54
+ get id() {
55
+ return getAgentID(this.agentSecret);
56
+ }
57
+ currentAgentID() {
58
+ return getAgentID(this.agentSecret);
59
+ }
60
+ currentSignerID() {
61
+ return getAgentSignerID(this.currentAgentID());
62
+ }
63
+ currentSignerSecret() {
64
+ return getAgentSignerSecret(this.agentSecret);
65
+ }
66
+ currentSealerID() {
67
+ return getAgentSealerID(this.currentAgentID());
68
+ }
69
+ currentSealerSecret() {
70
+ return getAgentSealerSecret(this.agentSecret);
71
+ }
72
+ }
73
+ export function isAccountID(id) {
74
+ return id.startsWith("co_");
75
+ }
76
+ //# sourceMappingURL=account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"AAEA,OAAO,EAMH,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,GACvB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,IAAI,EAAe,MAAM,kBAAkB,CAAC;AAErD,MAAM,UAAU,kCAAkC,CAC9C,WAAwB;IAExB,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACtC,OAAO;QACH,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE;QAC9C,IAAI,EAAE;YACF,IAAI,EAAE,SAAS;SAClB;QACD,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,IAAI;KACnB,CAAC;AACN,CAAC;AAED,MAAM,OAAO,OAAQ,SAAQ,IAAI;IAC7B,IAAI,EAAE;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,EAAe,CAAC;IACxC,CAAC;IAED,iBAAiB;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO;aACtB,IAAI,EAAE;aACN,MAAM,CAAC,CAAC,CAAC,EAAgB,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;QAE1D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACrB,MAAM,IAAI,KAAK,CACX,6CAA6C,GAAG,MAAM,CAAC,MAAM,CAChE,CAAC;SACL;QAED,OAAO,MAAM,CAAC,CAAC,CAAE,CAAC;IACtB,CAAC;CACJ;AAaD,MAAM,OAAO,iBACT,SAAQ,OAAO;IAKf,YACI,WAAwB,EACxB,OAA2C,EAC3C,IAAe;QAEf,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAErB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAED,cAAc;QACV,OAAO,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IAED,eAAe;QACX,OAAO,gBAAgB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,mBAAmB;QACf,OAAO,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;IAED,eAAe;QACX,OAAO,gBAAgB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,mBAAmB;QACf,OAAO,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;CACJ;AAED,MAAM,OAAO,0BAA0B;IAKnC,YAAY,WAAwB;QAChC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAED,IAAI,EAAE;QACF,OAAO,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IAED,cAAc;QACV,OAAO,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IAED,eAAe;QACX,OAAO,gBAAgB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,mBAAmB;QACf,OAAO,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;IAED,eAAe;QACX,OAAO,gBAAgB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,mBAAmB;QACf,OAAO,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;CACJ;AAUD,MAAM,UAAU,WAAW,CAAC,EAAsB;IAC9C,OAAO,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,40 @@
1
+ import { newRandomSessionID } from "./coValue.js";
2
+ import { LocalNode } from "./node.js";
3
+ import { connectedPeers } from "./testUtils.js";
4
+ test("Can create a node while creating a new account with profile", async () => {
5
+ const { node, accountID, accountSecret, sessionID } = LocalNode.withNewlyCreatedAccount("Hermes Puggington");
6
+ expect(node).not.toBeNull();
7
+ expect(accountID).not.toBeNull();
8
+ expect(accountSecret).not.toBeNull();
9
+ expect(sessionID).not.toBeNull();
10
+ expect(node.expectProfileLoaded(accountID).get("name")).toEqual("Hermes Puggington");
11
+ expect((await node.loadProfile(accountID)).get("name")).toEqual("Hermes Puggington");
12
+ });
13
+ test("A node with an account can create teams and and objects within them", async () => {
14
+ const { node, accountID } = LocalNode.withNewlyCreatedAccount("Hermes Puggington");
15
+ const team = await node.createTeam();
16
+ expect(team).not.toBeNull();
17
+ let map = team.createMap();
18
+ map = map.edit((edit) => {
19
+ edit.set("foo", "bar", "private");
20
+ expect(edit.get("foo")).toEqual("bar");
21
+ });
22
+ expect(map.get("foo")).toEqual("bar");
23
+ expect(map.getLastEditor("foo")).toEqual(accountID);
24
+ });
25
+ test("Can create account with one node, and then load it on another", async () => {
26
+ const { node, accountID, accountSecret } = LocalNode.withNewlyCreatedAccount("Hermes Puggington");
27
+ const team = await node.createTeam();
28
+ expect(team).not.toBeNull();
29
+ let map = team.createMap();
30
+ map = map.edit((edit) => {
31
+ edit.set("foo", "bar", "private");
32
+ expect(edit.get("foo")).toEqual("bar");
33
+ });
34
+ const [node1asPeer, node2asPeer] = connectedPeers("node1", "node2", { trace: true, peer1role: "server", peer2role: "client" });
35
+ node.sync.addPeer(node2asPeer);
36
+ const node2 = await LocalNode.withLoadedAccount(accountID, accountSecret, newRandomSessionID(accountID), [node1asPeer]);
37
+ const map2 = await node2.load(map.id);
38
+ expect(map2.get("foo")).toEqual("bar");
39
+ });
40
+ //# sourceMappingURL=account.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.test.js","sourceRoot":"","sources":["../src/account.test.ts"],"names":[],"mappings":"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"}
package/dist/coValue.d.ts CHANGED
@@ -1,20 +1,21 @@
1
- import { ContentType } from './contentType.js';
2
- import { Encrypted, Hash, KeySecret, RecipientID, RecipientSecret, SignatoryID, SignatorySecret, Signature, StreamingHash, KeyID } from './crypto.js';
3
- import { JsonValue } from './jsonValue.js';
4
- import { PermissionsDef as RulesetDef, Team } from './permissions.js';
5
- import { LocalNode } from './node.js';
6
- import { CoValueKnownState, NewContentMessage } from './sync.js';
7
- import { AgentID, RawCoValueID, SessionID, TransactionID } from './ids.js';
1
+ import { ContentType } from "./contentType.js";
2
+ import { Encrypted, Hash, KeySecret, Signature, StreamingHash, KeyID } from "./crypto.js";
3
+ import { JsonObject, JsonValue } from "./jsonValue.js";
4
+ import { PermissionsDef as RulesetDef, Team } from "./permissions.js";
5
+ import { LocalNode } from "./node.js";
6
+ import { CoValueKnownState, NewContentMessage } from "./sync.js";
7
+ import { RawCoID, SessionID, TransactionID } from "./ids.js";
8
+ import { AccountIDOrAgentID, GeneralizedControlledAccount } from "./account.js";
8
9
  export type CoValueHeader = {
9
10
  type: ContentType["type"];
10
11
  ruleset: RulesetDef;
11
- meta: JsonValue;
12
+ meta: JsonObject | null;
12
13
  createdAt: `2${string}` | null;
13
14
  uniqueness: `z${string}` | null;
14
- publicNickname?: string;
15
15
  };
16
- export declare function agentIDfromSessionID(sessionID: SessionID): AgentID;
17
- export declare function newRandomSessionID(agentID: AgentID): SessionID;
16
+ export declare function idforHeader(header: CoValueHeader): RawCoID;
17
+ export declare function accountOrAgentIDfromSessionID(sessionID: SessionID): AccountIDOrAgentID;
18
+ export declare function newRandomSessionID(accountID: AccountIDOrAgentID): SessionID;
18
19
  type SessionLog = {
19
20
  transactions: Transaction[];
20
21
  lastHash?: Hash;
@@ -26,7 +27,7 @@ export type PrivateTransaction = {
26
27
  madeAt: number;
27
28
  keyUsed: KeyID;
28
29
  encryptedChanges: Encrypted<JsonValue[], {
29
- in: RawCoValueID;
30
+ in: RawCoID;
30
31
  tx: TransactionID;
31
32
  }>;
32
33
  };
@@ -42,7 +43,7 @@ export type DecryptedTransaction = {
42
43
  madeAt: number;
43
44
  };
44
45
  export declare class CoValue {
45
- id: RawCoValueID;
46
+ id: RawCoID;
46
47
  node: LocalNode;
47
48
  header: CoValueHeader;
48
49
  sessions: {
@@ -51,7 +52,7 @@ export declare class CoValue {
51
52
  content?: ContentType;
52
53
  listeners: Set<(content?: ContentType) => void>;
53
54
  constructor(header: CoValueHeader, node: LocalNode);
54
- testWithDifferentCredentials(agentCredential: AgentCredential, ownSessionID: SessionID): CoValue;
55
+ testWithDifferentAccount(account: GeneralizedControlledAccount, ownSessionID: SessionID): CoValue;
55
56
  knownState(): CoValueKnownState;
56
57
  get meta(): JsonValue;
57
58
  nextTransactionID(): TransactionID;
@@ -72,26 +73,6 @@ export declare class CoValue {
72
73
  getTeam(): Team;
73
74
  getTx(txID: TransactionID): Transaction | undefined;
74
75
  newContentSince(knownState: CoValueKnownState | undefined): NewContentMessage | undefined;
75
- getDependedOnCoValues(): RawCoValueID[];
76
+ getDependedOnCoValues(): RawCoID[];
76
77
  }
77
- export type Agent = {
78
- signatoryID: SignatoryID;
79
- recipientID: RecipientID;
80
- publicNickname?: string;
81
- };
82
- export declare function getAgent(agentCredential: AgentCredential): {
83
- signatoryID: `signatory_z${string}`;
84
- recipientID: `recipient_z${string}`;
85
- publicNickname: string | undefined;
86
- };
87
- export declare function getAgentCoValueHeader(agent: Agent): CoValueHeader;
88
- export declare function getAgentID(agent: Agent): AgentID;
89
- export type AgentCredential = {
90
- signatorySecret: SignatorySecret;
91
- recipientSecret: RecipientSecret;
92
- publicNickname?: string;
93
- };
94
- export declare function newRandomAgentCredential(publicNickname?: string): AgentCredential;
95
- export declare function agentCredentialToBytes(cred: AgentCredential): Uint8Array;
96
- export declare function agentCredentialFromBytes(bytes: Uint8Array): AgentCredential | undefined;
97
78
  export {};
package/dist/coValue.js CHANGED
@@ -1,41 +1,36 @@
1
1
  import { randomBytes } from "@noble/hashes/utils";
2
- import { Static } from './contentTypes/static.js';
3
- import { CoStream } from './contentTypes/coStream.js';
4
- import { CoMap } from './contentTypes/coMap.js';
5
- import { StreamingHash, getRecipientID, getSignatoryID, newRandomRecipient, newRandomSignatory, openAs, shortHash, sign, verify, encryptForTransaction, decryptForTransaction, unsealKeySecret, signatorySecretToBytes, recipientSecretToBytes, signatorySecretFromBytes, recipientSecretFromBytes, } from './crypto.js';
2
+ import { Static } from "./contentTypes/static.js";
3
+ import { CoStream } from "./contentTypes/coStream.js";
4
+ import { CoMap } from "./contentTypes/coMap.js";
5
+ import { StreamingHash, unseal, shortHash, sign, verify, encryptForTransaction, decryptForTransaction, decryptKeySecret, getAgentSignerID, getAgentSealerID, } from "./crypto.js";
6
6
  import { base58 } from "@scure/base";
7
- import { Team, determineValidTransactions, expectTeamContent, } from './permissions.js';
8
- import { CoList } from './contentTypes/coList.js';
9
- function coValueIDforHeader(header) {
7
+ import { Team, determineValidTransactions, expectTeamContent, isKeyForKeyField, } from "./permissions.js";
8
+ import { CoList } from "./contentTypes/coList.js";
9
+ export function idforHeader(header) {
10
10
  const hash = shortHash(header);
11
- if (header.publicNickname) {
12
- return `co_${header.publicNickname}_z${hash.slice("shortHash_z".length)}`;
13
- }
14
- else {
15
- return `co_z${hash.slice("shortHash_z".length)}`;
16
- }
11
+ return `co_z${hash.slice("shortHash_z".length)}`;
17
12
  }
18
- export function agentIDfromSessionID(sessionID) {
13
+ export function accountOrAgentIDfromSessionID(sessionID) {
19
14
  return sessionID.split("_session")[0];
20
15
  }
21
- export function newRandomSessionID(agentID) {
22
- return `${agentID}_session_z${base58.encode(randomBytes(8))}`;
16
+ export function newRandomSessionID(accountID) {
17
+ return `${accountID}_session_z${base58.encode(randomBytes(8))}`;
23
18
  }
24
19
  export class CoValue {
25
20
  constructor(header, node) {
26
21
  this.listeners = new Set();
27
- this.id = coValueIDforHeader(header);
22
+ this.id = idforHeader(header);
28
23
  this.header = header;
29
24
  this.sessions = {};
30
25
  this.node = node;
31
26
  }
32
- testWithDifferentCredentials(agentCredential, ownSessionID) {
33
- const newNode = this.node.testWithDifferentCredentials(agentCredential, ownSessionID);
27
+ testWithDifferentAccount(account, ownSessionID) {
28
+ const newNode = this.node.testWithDifferentAccount(account, ownSessionID);
34
29
  return newNode.expectCoValueLoaded(this.id);
35
30
  }
36
31
  knownState() {
37
32
  return {
38
- coValueID: this.id,
33
+ id: this.id,
39
34
  header: true,
40
35
  sessions: Object.fromEntries(Object.entries(this.sessions).map(([k, v]) => [
41
36
  k,
@@ -54,9 +49,9 @@ export class CoValue {
54
49
  };
55
50
  }
56
51
  tryAddTransactions(sessionID, newTransactions, newHash, newSignature) {
57
- const signatoryID = this.node.expectAgentLoaded(agentIDfromSessionID(sessionID), "Expected to know signatory of transaction").signatoryID;
58
- if (!signatoryID) {
59
- console.warn("Unknown agent", agentIDfromSessionID(sessionID));
52
+ const signerID = getAgentSignerID(this.node.resolveAccountAgent(accountOrAgentIDfromSessionID(sessionID), "Expected to know signer of transaction"));
53
+ if (!signerID) {
54
+ console.warn("Unknown agent", accountOrAgentIDfromSessionID(sessionID));
60
55
  return false;
61
56
  }
62
57
  const { expectedNewHash, newStreamingHash } = this.expectedNewHashAfter(sessionID, newTransactions);
@@ -64,8 +59,8 @@ export class CoValue {
64
59
  console.warn("Invalid hash", { newHash, expectedNewHash });
65
60
  return false;
66
61
  }
67
- if (!verify(newSignature, newHash, signatoryID)) {
68
- console.warn("Invalid signature", newSignature, newHash, signatoryID);
62
+ if (!verify(newSignature, newHash, signerID)) {
63
+ console.warn("Invalid signature", newSignature, newHash, signerID);
69
64
  return false;
70
65
  }
71
66
  const transactions = this.sessions[sessionID]?.transactions ?? [];
@@ -131,7 +126,7 @@ export class CoValue {
131
126
  const { expectedNewHash } = this.expectedNewHashAfter(sessionID, [
132
127
  transaction,
133
128
  ]);
134
- const signature = sign(this.node.agentCredential.signatorySecret, expectedNewHash);
129
+ const signature = sign(this.node.account.currentSignerSecret(), expectedNewHash);
135
130
  const success = this.tryAddTransactions(sessionID, [transaction], expectedNewHash, signature);
136
131
  if (success) {
137
132
  void this.node.sync.syncCoValue(this);
@@ -201,7 +196,7 @@ export class CoValue {
201
196
  getCurrentReadKey() {
202
197
  if (this.header.ruleset.type === "team") {
203
198
  const content = expectTeamContent(this.getCurrentContent());
204
- const currentKeyId = content.get("readKey")?.keyID;
199
+ const currentKeyId = content.get("readKey");
205
200
  if (!currentKeyId) {
206
201
  throw new Error("No readKey set");
207
202
  }
@@ -223,39 +218,37 @@ export class CoValue {
223
218
  getReadKey(keyID) {
224
219
  if (this.header.ruleset.type === "team") {
225
220
  const content = expectTeamContent(this.getCurrentContent());
226
- const readKeyHistory = content.getHistory("readKey");
227
- // Try to find direct relevation of key for us
228
- for (const entry of readKeyHistory) {
229
- if (entry.value?.keyID === keyID) {
230
- const revealer = agentIDfromSessionID(entry.txID.sessionID);
231
- const revealerAgent = this.node.expectAgentLoaded(revealer, "Expected to know revealer");
232
- const secret = openAs(entry.value.revelation, this.node.agentCredential.recipientSecret, revealerAgent.recipientID, {
233
- in: this.id,
234
- tx: entry.txID,
235
- });
236
- if (secret)
237
- return secret;
238
- }
221
+ // Try to find key revelation for us
222
+ const readKeyEntry = content.getLastEntry(`${keyID}_for_${this.node.account.id}`);
223
+ if (readKeyEntry) {
224
+ const revealer = accountOrAgentIDfromSessionID(readKeyEntry.txID.sessionID);
225
+ const revealerAgent = this.node.resolveAccountAgent(revealer, "Expected to know revealer");
226
+ const secret = unseal(readKeyEntry.value, this.node.account.currentSealerSecret(), getAgentSealerID(revealerAgent), {
227
+ in: this.id,
228
+ tx: readKeyEntry.txID,
229
+ });
230
+ if (secret)
231
+ return secret;
239
232
  }
240
233
  // Try to find indirect revelation through previousKeys
241
- for (const entry of readKeyHistory) {
242
- const encryptedPreviousKey = entry.value?.previousKeys?.[keyID];
243
- if (entry.value && encryptedPreviousKey) {
244
- const sealingKeyID = entry.value.keyID;
245
- const sealingKeySecret = this.getReadKey(sealingKeyID);
246
- if (!sealingKeySecret) {
234
+ for (const field of content.keys()) {
235
+ if (isKeyForKeyField(field) && field.startsWith(keyID)) {
236
+ const encryptingKeyID = field.split("_for_")[1];
237
+ const encryptingKeySecret = this.getReadKey(encryptingKeyID);
238
+ if (!encryptingKeySecret) {
247
239
  continue;
248
240
  }
249
- const secret = unsealKeySecret({
250
- sealed: keyID,
251
- sealing: sealingKeyID,
241
+ const encryptedPreviousKey = content.get(field);
242
+ const secret = decryptKeySecret({
243
+ encryptedID: keyID,
244
+ encryptingID: encryptingKeyID,
252
245
  encrypted: encryptedPreviousKey,
253
- }, sealingKeySecret);
246
+ }, encryptingKeySecret);
254
247
  if (secret) {
255
248
  return secret;
256
249
  }
257
250
  else {
258
- console.error(`Sealing ${sealingKeyID} key didn't unseal ${keyID}`);
251
+ console.error(`Encrypting ${encryptingKeyID} key didn't decrypt ${keyID}`);
259
252
  }
260
253
  }
261
254
  }
@@ -283,10 +276,10 @@ export class CoValue {
283
276
  }
284
277
  newContentSince(knownState) {
285
278
  const newContent = {
286
- action: "newContent",
287
- coValueID: this.id,
279
+ action: "content",
280
+ id: this.id,
288
281
  header: knownState?.header ? undefined : this.header,
289
- newContent: Object.fromEntries(Object.entries(this.sessions)
282
+ new: Object.fromEntries(Object.entries(this.sessions)
290
283
  .map(([sessionID, log]) => {
291
284
  const newTransactions = log.transactions.slice(knownState?.sessions[sessionID] || 0);
292
285
  if (newTransactions.length === 0 ||
@@ -307,7 +300,7 @@ export class CoValue {
307
300
  .filter((x) => !!x)),
308
301
  };
309
302
  if (!newContent.header &&
310
- Object.keys(newContent.newContent).length === 0) {
303
+ Object.keys(newContent.new).length === 0) {
311
304
  return undefined;
312
305
  }
313
306
  return newContent;
@@ -316,66 +309,10 @@ export class CoValue {
316
309
  return this.header.ruleset.type === "team"
317
310
  ? expectTeamContent(this.getCurrentContent())
318
311
  .keys()
319
- .filter((k) => k.startsWith("co_agent"))
312
+ .filter((k) => k.startsWith("co_"))
320
313
  : this.header.ruleset.type === "ownedByTeam"
321
314
  ? [this.header.ruleset.team]
322
315
  : [];
323
316
  }
324
317
  }
325
- export function getAgent(agentCredential) {
326
- return {
327
- signatoryID: getSignatoryID(agentCredential.signatorySecret),
328
- recipientID: getRecipientID(agentCredential.recipientSecret),
329
- publicNickname: agentCredential.publicNickname,
330
- };
331
- }
332
- export function getAgentCoValueHeader(agent) {
333
- return {
334
- type: "comap",
335
- ruleset: {
336
- type: "agent",
337
- initialSignatoryID: agent.signatoryID,
338
- initialRecipientID: agent.recipientID,
339
- },
340
- meta: null,
341
- createdAt: null,
342
- uniqueness: null,
343
- publicNickname: "agent" + (agent.publicNickname ? `-${agent.publicNickname}` : ""),
344
- };
345
- }
346
- export function getAgentID(agent) {
347
- return coValueIDforHeader(getAgentCoValueHeader(agent));
348
- }
349
- export function newRandomAgentCredential(publicNickname) {
350
- const signatorySecret = newRandomSignatory();
351
- const recipientSecret = newRandomRecipient();
352
- return { signatorySecret, recipientSecret, publicNickname };
353
- }
354
- export function agentCredentialToBytes(cred) {
355
- if (cred.publicNickname) {
356
- throw new Error("Can't convert agent credential with publicNickname");
357
- }
358
- const bytes = new Uint8Array(64);
359
- const signatorySecretBytes = signatorySecretToBytes(cred.signatorySecret);
360
- if (signatorySecretBytes.length !== 32) {
361
- throw new Error("Invalid signatorySecret length");
362
- }
363
- bytes.set(signatorySecretBytes);
364
- const recipientSecretBytes = recipientSecretToBytes(cred.recipientSecret);
365
- if (recipientSecretBytes.length !== 32) {
366
- throw new Error("Invalid recipientSecret length");
367
- }
368
- bytes.set(recipientSecretBytes, 32);
369
- return bytes;
370
- }
371
- export function agentCredentialFromBytes(bytes) {
372
- if (bytes.length !== 64) {
373
- return undefined;
374
- }
375
- const signatorySecret = signatorySecretFromBytes(bytes.slice(0, 32));
376
- const recipientSecret = recipientSecretFromBytes(bytes.slice(32));
377
- return { signatorySecret, recipientSecret };
378
- }
379
- // type Role = "admin" | "writer" | "reader";
380
- // type PermissionsDef = CJMap<AgentID, Role, {[agent: AgentID]: Role}>;
381
318
  //# sourceMappingURL=coValue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"coValue.js","sourceRoot":"","sources":["../src/coValue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coValue.js","sourceRoot":"","sources":["../src/coValue.ts"],"names":[],"mappings":"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"}