cojson 0.0.21 → 0.0.22

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 (55) hide show
  1. package/dist/account.d.ts +1 -1
  2. package/dist/account.js +1 -1
  3. package/dist/account.js.map +1 -1
  4. package/dist/coValue.d.ts +3 -2
  5. package/dist/coValue.js +10 -9
  6. package/dist/coValue.js.map +1 -1
  7. package/dist/contentTypes/coMap.d.ts +2 -2
  8. package/dist/contentTypes/coMap.js +6 -6
  9. package/dist/contentTypes/coMap.js.map +1 -1
  10. package/dist/index.d.ts +5 -2
  11. package/dist/index.js +3 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/node.d.ts +2 -1
  14. package/dist/node.js +43 -3
  15. package/dist/node.js.map +1 -1
  16. package/dist/permissions.d.ts +4 -32
  17. package/dist/permissions.js +42 -106
  18. package/dist/permissions.js.map +1 -1
  19. package/dist/team.d.ts +35 -0
  20. package/dist/team.js +110 -0
  21. package/dist/team.js.map +1 -0
  22. package/dist/testUtils.d.ts +2 -2
  23. package/dist/testUtils.js +1 -1
  24. package/dist/testUtils.js.map +1 -1
  25. package/package.json +2 -2
  26. package/src/account.ts +1 -1
  27. package/src/coValue.ts +10 -11
  28. package/src/contentTypes/coMap.ts +8 -8
  29. package/src/crypto.test.ts +10 -9
  30. package/src/index.ts +5 -0
  31. package/src/node.ts +113 -11
  32. package/src/permissions.test.ts +503 -3
  33. package/src/permissions.ts +70 -206
  34. package/src/sync.test.ts +8 -8
  35. package/src/team.ts +225 -0
  36. package/src/testUtils.ts +1 -1
  37. package/tsconfig.json +1 -0
  38. package/dist/account.test.d.ts +0 -1
  39. package/dist/account.test.js +0 -40
  40. package/dist/account.test.js.map +0 -1
  41. package/dist/coValue.test.d.ts +0 -1
  42. package/dist/coValue.test.js +0 -78
  43. package/dist/coValue.test.js.map +0 -1
  44. package/dist/contentType.test.d.ts +0 -1
  45. package/dist/contentType.test.js +0 -145
  46. package/dist/contentType.test.js.map +0 -1
  47. package/dist/crypto.test.d.ts +0 -1
  48. package/dist/crypto.test.js +0 -111
  49. package/dist/crypto.test.js.map +0 -1
  50. package/dist/permissions.test.d.ts +0 -1
  51. package/dist/permissions.test.js +0 -711
  52. package/dist/permissions.test.js.map +0 -1
  53. package/dist/sync.test.d.ts +0 -1
  54. package/dist/sync.test.js +0 -827
  55. package/dist/sync.test.js.map +0 -1
@@ -1,40 +0,0 @@
1
- import { newRandomSessionID } from "./coValue.js";
2
- import { LocalNode } from "./node.js";
3
- import { connectedPeers } from "./streamUtils.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
@@ -1 +0,0 @@
1
- {"version":3,"file":"account.test.js","sourceRoot":"","sources":["../src/account.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,78 +0,0 @@
1
- import { LocalNode } from "./node.js";
2
- import { createdNowUnique, getAgentSignerSecret, newRandomAgentSecret, sign } from "./crypto.js";
3
- import { randomAnonymousAccountAndSessionID } from "./testUtils.js";
4
- test("Can create coValue with new agent credentials and add transaction to it", () => {
5
- const [account, sessionID] = randomAnonymousAccountAndSessionID();
6
- const node = new LocalNode(account, sessionID);
7
- const coValue = node.createCoValue({
8
- type: "costream",
9
- ruleset: { type: "unsafeAllowAll" },
10
- meta: null,
11
- ...createdNowUnique(),
12
- });
13
- const transaction = {
14
- privacy: "trusting",
15
- madeAt: Date.now(),
16
- changes: [
17
- {
18
- hello: "world",
19
- },
20
- ],
21
- };
22
- const { expectedNewHash } = coValue.expectedNewHashAfter(node.ownSessionID, [transaction]);
23
- expect(coValue.tryAddTransactions(node.ownSessionID, [transaction], expectedNewHash, sign(account.currentSignerSecret(), expectedNewHash))).toBe(true);
24
- });
25
- test("transactions with wrong signature are rejected", () => {
26
- const wrongAgent = newRandomAgentSecret();
27
- const [agentSecret, sessionID] = randomAnonymousAccountAndSessionID();
28
- const node = new LocalNode(agentSecret, sessionID);
29
- const coValue = node.createCoValue({
30
- type: "costream",
31
- ruleset: { type: "unsafeAllowAll" },
32
- meta: null,
33
- ...createdNowUnique(),
34
- });
35
- const transaction = {
36
- privacy: "trusting",
37
- madeAt: Date.now(),
38
- changes: [
39
- {
40
- hello: "world",
41
- },
42
- ],
43
- };
44
- const { expectedNewHash } = coValue.expectedNewHashAfter(node.ownSessionID, [transaction]);
45
- expect(coValue.tryAddTransactions(node.ownSessionID, [transaction], expectedNewHash, sign(getAgentSignerSecret(wrongAgent), expectedNewHash))).toBe(false);
46
- });
47
- test("transactions with correctly signed, but wrong hash are rejected", () => {
48
- const [account, sessionID] = randomAnonymousAccountAndSessionID();
49
- const node = new LocalNode(account, sessionID);
50
- const coValue = node.createCoValue({
51
- type: "costream",
52
- ruleset: { type: "unsafeAllowAll" },
53
- meta: null,
54
- ...createdNowUnique(),
55
- });
56
- const transaction = {
57
- privacy: "trusting",
58
- madeAt: Date.now(),
59
- changes: [
60
- {
61
- hello: "world",
62
- },
63
- ],
64
- };
65
- const { expectedNewHash } = coValue.expectedNewHashAfter(node.ownSessionID, [
66
- {
67
- privacy: "trusting",
68
- madeAt: Date.now(),
69
- changes: [
70
- {
71
- hello: "wrong",
72
- },
73
- ],
74
- },
75
- ]);
76
- expect(coValue.tryAddTransactions(node.ownSessionID, [transaction], expectedNewHash, sign(account.currentSignerSecret(), expectedNewHash))).toBe(false);
77
- });
78
- //# sourceMappingURL=coValue.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"coValue.test.js","sourceRoot":"","sources":["../src/coValue.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,145 +0,0 @@
1
- import { accountOrAgentIDfromSessionID } from "./coValue.js";
2
- import { createdNowUnique } from "./crypto.js";
3
- import { LocalNode } from "./node.js";
4
- import { randomAnonymousAccountAndSessionID } from "./testUtils.js";
5
- test("Empty COJSON Map works", () => {
6
- const node = new LocalNode(...randomAnonymousAccountAndSessionID());
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 node = new LocalNode(...randomAnonymousAccountAndSessionID());
23
- const coValue = node.createCoValue({
24
- type: "comap",
25
- ruleset: { type: "unsafeAllowAll" },
26
- meta: null,
27
- ...createdNowUnique(),
28
- });
29
- const content = coValue.getCurrentContent();
30
- if (content.type !== "comap") {
31
- throw new Error("Expected map");
32
- }
33
- expect(content.type).toEqual("comap");
34
- content.edit((editable) => {
35
- editable.set("hello", "world", "trusting");
36
- expect(editable.get("hello")).toEqual("world");
37
- editable.set("foo", "bar", "trusting");
38
- expect(editable.get("foo")).toEqual("bar");
39
- expect([...editable.keys()]).toEqual(["hello", "foo"]);
40
- editable.delete("foo", "trusting");
41
- expect(editable.get("foo")).toEqual(undefined);
42
- });
43
- });
44
- test("Can get map entry values at different points in time", () => {
45
- const node = new LocalNode(...randomAnonymousAccountAndSessionID());
46
- const coValue = node.createCoValue({
47
- type: "comap",
48
- ruleset: { type: "unsafeAllowAll" },
49
- meta: null,
50
- ...createdNowUnique(),
51
- });
52
- const content = coValue.getCurrentContent();
53
- if (content.type !== "comap") {
54
- throw new Error("Expected map");
55
- }
56
- expect(content.type).toEqual("comap");
57
- content.edit((editable) => {
58
- const beforeA = Date.now();
59
- while (Date.now() < beforeA + 10) { }
60
- editable.set("hello", "A", "trusting");
61
- const beforeB = Date.now();
62
- while (Date.now() < beforeB + 10) { }
63
- editable.set("hello", "B", "trusting");
64
- const beforeC = Date.now();
65
- while (Date.now() < beforeC + 10) { }
66
- editable.set("hello", "C", "trusting");
67
- expect(editable.get("hello")).toEqual("C");
68
- expect(editable.getAtTime("hello", Date.now())).toEqual("C");
69
- expect(editable.getAtTime("hello", beforeA)).toEqual(undefined);
70
- expect(editable.getAtTime("hello", beforeB)).toEqual("A");
71
- expect(editable.getAtTime("hello", beforeC)).toEqual("B");
72
- });
73
- });
74
- test("Can get all historic values of key", () => {
75
- const node = new LocalNode(...randomAnonymousAccountAndSessionID());
76
- const coValue = node.createCoValue({
77
- type: "comap",
78
- ruleset: { type: "unsafeAllowAll" },
79
- meta: null,
80
- ...createdNowUnique(),
81
- });
82
- const content = coValue.getCurrentContent();
83
- if (content.type !== "comap") {
84
- throw new Error("Expected map");
85
- }
86
- expect(content.type).toEqual("comap");
87
- content.edit((editable) => {
88
- editable.set("hello", "A", "trusting");
89
- const txA = editable.getLastTxID("hello");
90
- editable.set("hello", "B", "trusting");
91
- const txB = editable.getLastTxID("hello");
92
- editable.delete("hello", "trusting");
93
- const txDel = editable.getLastTxID("hello");
94
- editable.set("hello", "C", "trusting");
95
- const txC = editable.getLastTxID("hello");
96
- expect(editable.getHistory("hello")).toEqual([
97
- {
98
- txID: txA,
99
- value: "A",
100
- at: txA && coValue.getTx(txA)?.madeAt,
101
- },
102
- {
103
- txID: txB,
104
- value: "B",
105
- at: txB && coValue.getTx(txB)?.madeAt,
106
- },
107
- {
108
- txID: txDel,
109
- value: undefined,
110
- at: txDel && coValue.getTx(txDel)?.madeAt,
111
- },
112
- {
113
- txID: txC,
114
- value: "C",
115
- at: txC && coValue.getTx(txC)?.madeAt,
116
- },
117
- ]);
118
- });
119
- });
120
- test("Can get last tx ID for a key", () => {
121
- const node = new LocalNode(...randomAnonymousAccountAndSessionID());
122
- const coValue = node.createCoValue({
123
- type: "comap",
124
- ruleset: { type: "unsafeAllowAll" },
125
- meta: null,
126
- ...createdNowUnique(),
127
- });
128
- const content = coValue.getCurrentContent();
129
- if (content.type !== "comap") {
130
- throw new Error("Expected map");
131
- }
132
- expect(content.type).toEqual("comap");
133
- content.edit((editable) => {
134
- expect(editable.getLastTxID("hello")).toEqual(undefined);
135
- editable.set("hello", "A", "trusting");
136
- const sessionID = editable.getLastTxID("hello")?.sessionID;
137
- expect(sessionID && accountOrAgentIDfromSessionID(sessionID)).toEqual(node.account.id);
138
- expect(editable.getLastTxID("hello")?.txIndex).toEqual(0);
139
- editable.set("hello", "B", "trusting");
140
- expect(editable.getLastTxID("hello")?.txIndex).toEqual(1);
141
- editable.set("hello", "C", "trusting");
142
- expect(editable.getLastTxID("hello")?.txIndex).toEqual(2);
143
- });
144
- });
145
- //# sourceMappingURL=contentType.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contentType.test.js","sourceRoot":"","sources":["../src/contentType.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,111 +0,0 @@
1
- import { getSealerID, getSignerID, secureHash, newRandomSealer, newRandomSigner, seal, sign, unseal, verify, shortHash, newRandomKeySecret, encryptForTransaction, decryptForTransaction, encryptKeySecret, decryptKeySecret, } from './crypto.js';
2
- import { base58, base64url } from "@scure/base";
3
- import { x25519 } from "@noble/curves/ed25519";
4
- import { xsalsa20_poly1305 } from "@noble/ciphers/salsa";
5
- import { blake3 } from "@noble/hashes/blake3";
6
- import stableStringify from "fast-json-stable-stringify";
7
- test("Signatures round-trip and use stable stringify", () => {
8
- const data = { b: "world", a: "hello" };
9
- const signer = newRandomSigner();
10
- const signature = sign(signer, data);
11
- expect(signature).toMatch(/^signature_z/);
12
- expect(verify(signature, { a: "hello", b: "world" }, getSignerID(signer))).toBe(true);
13
- });
14
- test("Invalid signatures don't verify", () => {
15
- const data = { b: "world", a: "hello" };
16
- const signer = newRandomSigner();
17
- const signer2 = newRandomSigner();
18
- const wrongSignature = sign(signer2, data);
19
- expect(verify(wrongSignature, data, getSignerID(signer))).toBe(false);
20
- });
21
- test("encrypting round-trips, but invalid receiver can't unseal", () => {
22
- const data = { b: "world", a: "hello" };
23
- const sender = newRandomSealer();
24
- const sealer = newRandomSealer();
25
- const wrongSealer = newRandomSealer();
26
- const nOnceMaterial = {
27
- in: "co_zTEST",
28
- tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 0 },
29
- };
30
- const sealed = seal(data, sender, getSealerID(sealer), nOnceMaterial);
31
- expect(unseal(sealed, sealer, getSealerID(sender), nOnceMaterial)).toEqual(data);
32
- expect(() => unseal(sealed, wrongSealer, getSealerID(sender), nOnceMaterial)).toThrow(/Wrong tag/);
33
- // trying with wrong sealer secret, by hand
34
- const nOnce = blake3(new TextEncoder().encode(stableStringify(nOnceMaterial))).slice(0, 24);
35
- const sealer3priv = base58.decode(wrongSealer.substring("sealerSecret_z".length));
36
- const senderPub = base58.decode(getSealerID(sender).substring("sealer_z".length));
37
- const sealedBytes = base64url.decode(sealed.substring("sealed_U".length));
38
- const sharedSecret = x25519.getSharedSecret(sealer3priv, senderPub);
39
- expect(() => {
40
- const _ = xsalsa20_poly1305(sharedSecret, nOnce).decrypt(sealedBytes);
41
- }).toThrow("Wrong tag");
42
- });
43
- test("Hashing is deterministic", () => {
44
- expect(secureHash({ b: "world", a: "hello" })).toEqual(secureHash({ a: "hello", b: "world" }));
45
- expect(shortHash({ b: "world", a: "hello" })).toEqual(shortHash({ a: "hello", b: "world" }));
46
- });
47
- test("Encryption for transactions round-trips", () => {
48
- const { secret } = newRandomKeySecret();
49
- const encrypted1 = encryptForTransaction({ a: "hello" }, secret, {
50
- in: "co_zTEST",
51
- tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 0 },
52
- });
53
- const encrypted2 = encryptForTransaction({ b: "world" }, secret, {
54
- in: "co_zTEST",
55
- tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 1 },
56
- });
57
- const decrypted1 = decryptForTransaction(encrypted1, secret, {
58
- in: "co_zTEST",
59
- tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 0 },
60
- });
61
- const decrypted2 = decryptForTransaction(encrypted2, secret, {
62
- in: "co_zTEST",
63
- tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 1 },
64
- });
65
- expect([decrypted1, decrypted2]).toEqual([{ a: "hello" }, { b: "world" }]);
66
- });
67
- test("Encryption for transactions doesn't decrypt with a wrong key", () => {
68
- const { secret } = newRandomKeySecret();
69
- const { secret: secret2 } = newRandomKeySecret();
70
- const encrypted1 = encryptForTransaction({ a: "hello" }, secret, {
71
- in: "co_zTEST",
72
- tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 0 },
73
- });
74
- const encrypted2 = encryptForTransaction({ b: "world" }, secret, {
75
- in: "co_zTEST",
76
- tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 1 },
77
- });
78
- const decrypted1 = decryptForTransaction(encrypted1, secret2, {
79
- in: "co_zTEST",
80
- tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 0 },
81
- });
82
- const decrypted2 = decryptForTransaction(encrypted2, secret2, {
83
- in: "co_zTEST",
84
- tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 1 },
85
- });
86
- expect([decrypted1, decrypted2]).toEqual([undefined, undefined]);
87
- });
88
- test("Encryption of keySecrets round-trips", () => {
89
- const toEncrypt = newRandomKeySecret();
90
- const encrypting = newRandomKeySecret();
91
- const keys = {
92
- toEncrypt,
93
- encrypting,
94
- };
95
- const encrypted = encryptKeySecret(keys);
96
- const decrypted = decryptKeySecret(encrypted, encrypting.secret);
97
- expect(decrypted).toEqual(toEncrypt.secret);
98
- });
99
- test("Encryption of keySecrets doesn't decrypt with a wrong key", () => {
100
- const toEncrypt = newRandomKeySecret();
101
- const encrypting = newRandomKeySecret();
102
- const encryptingWrong = newRandomKeySecret();
103
- const keys = {
104
- toEncrypt,
105
- encrypting,
106
- };
107
- const encrypted = encryptKeySecret(keys);
108
- const decrypted = decryptKeySecret(encrypted, encryptingWrong.secret);
109
- expect(decrypted).toBeUndefined();
110
- });
111
- //# sourceMappingURL=crypto.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crypto.test.js","sourceRoot":"","sources":["../src/crypto.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};