cojson 0.10.15 → 0.11.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.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +14 -0
- package/dist/CoValuesStore.d.ts +12 -0
- package/dist/CoValuesStore.d.ts.map +1 -0
- package/dist/PeerKnownStates.d.ts +38 -0
- package/dist/PeerKnownStates.d.ts.map +1 -0
- package/dist/PeerState.d.ts +46 -0
- package/dist/PeerState.d.ts.map +1 -0
- package/dist/PriorityBasedMessageQueue.d.ts +18 -0
- package/dist/PriorityBasedMessageQueue.d.ts.map +1 -0
- package/dist/SyncStateManager.d.ts +20 -0
- package/dist/SyncStateManager.d.ts.map +1 -0
- package/dist/base64url.d.ts +3 -0
- package/dist/base64url.d.ts.map +1 -0
- package/dist/base64url.test.d.ts +2 -0
- package/dist/base64url.test.d.ts.map +1 -0
- package/dist/coValue.d.ts +52 -0
- package/dist/coValue.d.ts.map +1 -0
- package/dist/coValueCore.d.ts +143 -0
- package/dist/coValueCore.d.ts.map +1 -0
- package/dist/coValueState.d.ts +58 -0
- package/dist/coValueState.d.ts.map +1 -0
- package/dist/coValues/account.d.ts +69 -0
- package/dist/coValues/account.d.ts.map +1 -0
- package/dist/coValues/coList.d.ts +163 -0
- package/dist/coValues/coList.d.ts.map +1 -0
- package/dist/coValues/coMap.d.ts +142 -0
- package/dist/coValues/coMap.d.ts.map +1 -0
- package/dist/coValues/coPlainText.d.ts +33 -0
- package/dist/coValues/coPlainText.d.ts.map +1 -0
- package/dist/coValues/coStream.d.ts +109 -0
- package/dist/coValues/coStream.d.ts.map +1 -0
- package/dist/coValues/group.d.ts +143 -0
- package/dist/coValues/group.d.ts.map +1 -0
- package/dist/coValues/group.js +51 -3
- package/dist/coValues/group.js.map +1 -1
- package/dist/coreToCoValue.d.ts +15 -0
- package/dist/coreToCoValue.d.ts.map +1 -0
- package/dist/crypto/PureJSCrypto.d.ts +50 -0
- package/dist/crypto/PureJSCrypto.d.ts.map +1 -0
- package/dist/crypto/WasmCrypto.d.ts +49 -0
- package/dist/crypto/WasmCrypto.d.ts.map +1 -0
- package/dist/crypto/crypto.d.ts +142 -0
- package/dist/crypto/crypto.d.ts.map +1 -0
- package/dist/exports.d.ts +84 -0
- package/dist/exports.d.ts.map +1 -0
- package/dist/ids.d.ts +23 -0
- package/dist/ids.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/jsonStringify.d.ts +7 -0
- package/dist/jsonStringify.d.ts.map +1 -0
- package/dist/jsonValue.d.ts +45 -0
- package/dist/jsonValue.d.ts.map +1 -0
- package/dist/localNode.d.ts +111 -0
- package/dist/localNode.d.ts.map +1 -0
- package/dist/logger.d.ts +33 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/media.d.ts +8 -0
- package/dist/media.d.ts.map +1 -0
- package/dist/permissions.d.ts +24 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +3 -4
- package/dist/permissions.js.map +1 -1
- package/dist/priority.d.ts +19 -0
- package/dist/priority.d.ts.map +1 -0
- package/dist/storage/FileSystem.d.ts +37 -0
- package/dist/storage/FileSystem.d.ts.map +1 -0
- package/dist/storage/chunksAndKnownStates.d.ts +7 -0
- package/dist/storage/chunksAndKnownStates.d.ts.map +1 -0
- package/dist/storage/index.d.ts +52 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/streamUtils.d.ts +13 -0
- package/dist/streamUtils.d.ts.map +1 -0
- package/dist/sync.d.ts +97 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/tests/PeerKnownStates.test.d.ts +2 -0
- package/dist/tests/PeerKnownStates.test.d.ts.map +1 -0
- package/dist/tests/PeerState.test.d.ts +2 -0
- package/dist/tests/PeerState.test.d.ts.map +1 -0
- package/dist/tests/PriorityBasedMessageQueue.test.d.ts +2 -0
- package/dist/tests/PriorityBasedMessageQueue.test.d.ts.map +1 -0
- package/dist/tests/SyncStateManager.test.d.ts +2 -0
- package/dist/tests/SyncStateManager.test.d.ts.map +1 -0
- package/dist/tests/account.test.d.ts +2 -0
- package/dist/tests/account.test.d.ts.map +1 -0
- package/dist/tests/coList.test.d.ts +2 -0
- package/dist/tests/coList.test.d.ts.map +1 -0
- package/dist/tests/coMap.test.d.ts +2 -0
- package/dist/tests/coMap.test.d.ts.map +1 -0
- package/dist/tests/coPlainText.test.d.ts +2 -0
- package/dist/tests/coPlainText.test.d.ts.map +1 -0
- package/dist/tests/coStream.test.d.ts +2 -0
- package/dist/tests/coStream.test.d.ts.map +1 -0
- package/dist/tests/coValueCore.test.d.ts +2 -0
- package/dist/tests/coValueCore.test.d.ts.map +1 -0
- package/dist/tests/coValueState.test.d.ts +2 -0
- package/dist/tests/coValueState.test.d.ts.map +1 -0
- package/dist/tests/crypto.test.d.ts +2 -0
- package/dist/tests/crypto.test.d.ts.map +1 -0
- package/dist/tests/cryptoImpl.test.d.ts +2 -0
- package/dist/tests/cryptoImpl.test.d.ts.map +1 -0
- package/dist/tests/group.test.d.ts +2 -0
- package/dist/tests/group.test.d.ts.map +1 -0
- package/dist/tests/group.test.js +130 -0
- package/dist/tests/group.test.js.map +1 -1
- package/dist/tests/logger.test.d.ts +2 -0
- package/dist/tests/logger.test.d.ts.map +1 -0
- package/dist/tests/permissions.test.d.ts +2 -0
- package/dist/tests/permissions.test.d.ts.map +1 -0
- package/dist/tests/permissions.test.js +194 -1
- package/dist/tests/permissions.test.js.map +1 -1
- package/dist/tests/priority.test.d.ts +2 -0
- package/dist/tests/priority.test.d.ts.map +1 -0
- package/dist/tests/sync.test.d.ts +2 -0
- package/dist/tests/sync.test.d.ts.map +1 -0
- package/dist/tests/testUtils.d.ts +142 -0
- package/dist/tests/testUtils.d.ts.map +1 -0
- package/dist/tests/testUtils.js +4 -1
- package/dist/tests/testUtils.js.map +1 -1
- package/dist/typeUtils/accountOrAgentIDfromSessionID.d.ts +4 -0
- package/dist/typeUtils/accountOrAgentIDfromSessionID.d.ts.map +1 -0
- package/dist/typeUtils/expectGroup.d.ts +4 -0
- package/dist/typeUtils/expectGroup.d.ts.map +1 -0
- package/dist/typeUtils/isAccountID.d.ts +4 -0
- package/dist/typeUtils/isAccountID.d.ts.map +1 -0
- package/dist/typeUtils/isCoValue.d.ts +4 -0
- package/dist/typeUtils/isCoValue.d.ts.map +1 -0
- package/dist/utils.d.ts +5 -0
- package/dist/utils.d.ts.map +1 -0
- package/package.json +6 -6
- package/src/coValues/group.ts +84 -9
- package/src/jsonValue.ts +9 -5
- package/src/permissions.ts +3 -4
- package/src/tests/group.test.ts +187 -0
- package/src/tests/permissions.test.ts +285 -0
- package/src/tests/testUtils.ts +4 -1
- package/tsconfig.json +3 -1
package/.turbo/turbo-build.log
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# cojson
|
|
2
2
|
|
|
3
|
+
## 0.11.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- e22de9f: Fix roleOf resolution for "everyone"
|
|
8
|
+
- 34cbdc3: Added revokeExtend method to Group
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- b9d194a: Added getAllMemberKeysSet method on RawGroup
|
|
13
|
+
Add everyone to the possible inputs of Group.roleOf
|
|
14
|
+
- a4713df: Moving to the d.ts files for the exported type definitions
|
|
15
|
+
- 0f67e0a: Allow optional fields in types passed to co.json
|
|
16
|
+
|
|
3
17
|
## 0.10.15
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CoValueCore } from "./coValueCore.js";
|
|
2
|
+
import { CoValueState } from "./coValueState.js";
|
|
3
|
+
import { RawCoID } from "./ids.js";
|
|
4
|
+
export declare class CoValuesStore {
|
|
5
|
+
coValues: Map<`co_z${string}`, CoValueState>;
|
|
6
|
+
get(id: RawCoID): CoValueState;
|
|
7
|
+
setAsAvailable(id: RawCoID, coValue: CoValueCore): void;
|
|
8
|
+
getEntries(): MapIterator<[`co_z${string}`, CoValueState]>;
|
|
9
|
+
getValues(): MapIterator<CoValueState>;
|
|
10
|
+
getKeys(): MapIterator<`co_z${string}`>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=CoValuesStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CoValuesStore.d.ts","sourceRoot":"","sources":["../src/CoValuesStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,qBAAa,aAAa;IACxB,QAAQ,qCAAoC;IAE5C,GAAG,CAAC,EAAE,EAAE,OAAO;IAWf,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW;IAQhD,UAAU;IAIV,SAAS;IAIT,OAAO;CAGR"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { RawCoID, SessionID } from "./ids.js";
|
|
2
|
+
import { CoValueKnownState } from "./sync.js";
|
|
3
|
+
export type PeerKnownStateActions = {
|
|
4
|
+
type: "SET_AS_EMPTY";
|
|
5
|
+
id: RawCoID;
|
|
6
|
+
} | {
|
|
7
|
+
type: "UPDATE_HEADER";
|
|
8
|
+
id: RawCoID;
|
|
9
|
+
header: boolean;
|
|
10
|
+
} | {
|
|
11
|
+
type: "UPDATE_SESSION_COUNTER";
|
|
12
|
+
id: RawCoID;
|
|
13
|
+
sessionId: SessionID;
|
|
14
|
+
value: number;
|
|
15
|
+
} | {
|
|
16
|
+
type: "SET";
|
|
17
|
+
id: RawCoID;
|
|
18
|
+
value: CoValueKnownState;
|
|
19
|
+
} | {
|
|
20
|
+
type: "COMBINE_WITH";
|
|
21
|
+
id: RawCoID;
|
|
22
|
+
value: CoValueKnownState;
|
|
23
|
+
};
|
|
24
|
+
export declare class PeerKnownStates {
|
|
25
|
+
private coValues;
|
|
26
|
+
private updateHeader;
|
|
27
|
+
private combineWith;
|
|
28
|
+
private updateSessionCounter;
|
|
29
|
+
get(id: RawCoID): CoValueKnownState | undefined;
|
|
30
|
+
has(id: RawCoID): boolean;
|
|
31
|
+
clone(): PeerKnownStates;
|
|
32
|
+
dispatch(action: PeerKnownStateActions): void;
|
|
33
|
+
listeners: Set<(id: RawCoID, knownState: CoValueKnownState) => void>;
|
|
34
|
+
triggerUpdate(id: RawCoID): void;
|
|
35
|
+
private trigger;
|
|
36
|
+
subscribe(listener: (id: RawCoID, knownState: CoValueKnownState) => void): () => void;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=PeerKnownStates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PeerKnownStates.d.ts","sourceRoot":"","sources":["../src/PeerKnownStates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EACL,iBAAiB,EAGlB,MAAM,WAAW,CAAC;AAEnB,MAAM,MAAM,qBAAqB,GAC7B;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,EAAE,EAAE,OAAO,CAAC;CACb,GACD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;CACjB,GACD;IACE,IAAI,EAAE,wBAAwB,CAAC;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf,GACD;IACE,IAAI,EAAE,KAAK,CAAC;IACZ,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,iBAAiB,CAAC;CAC1B,GACD;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,iBAAiB,CAAC;CAC1B,CAAC;AAEN,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAyC;IAEzD,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,oBAAoB;IAY5B,GAAG,CAAC,EAAE,EAAE,OAAO;IAIf,GAAG,CAAC,EAAE,EAAE,OAAO;IAIf,KAAK;IAML,QAAQ,CAAC,MAAM,EAAE,qBAAqB;IAsBtC,SAAS,WAAgB,OAAO,cAAc,iBAAiB,KAAK,IAAI,EAAI;IAE5E,aAAa,CAAC,EAAE,EAAE,OAAO;IAIzB,OAAO,CAAC,OAAO;IAMf,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB,KAAK,IAAI;CAOzE"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { PeerKnownStateActions, PeerKnownStates } from "./PeerKnownStates.js";
|
|
2
|
+
import { TryAddTransactionsError } from "./coValueCore.js";
|
|
3
|
+
import { RawCoID } from "./ids.js";
|
|
4
|
+
import { Peer, SyncMessage } from "./sync.js";
|
|
5
|
+
export declare class PeerState {
|
|
6
|
+
private peer;
|
|
7
|
+
constructor(peer: Peer, knownStates: PeerKnownStates | undefined);
|
|
8
|
+
/**
|
|
9
|
+
* Here we to collect all the known states that a given peer has told us about.
|
|
10
|
+
*
|
|
11
|
+
* This can be used to safely track the sync state of a coValue in a given peer.
|
|
12
|
+
*/
|
|
13
|
+
readonly knownStates: PeerKnownStates;
|
|
14
|
+
/**
|
|
15
|
+
* This one collects the known states "optimistically".
|
|
16
|
+
* We use it to keep track of the content we have sent to a given peer.
|
|
17
|
+
*
|
|
18
|
+
* The main difference with knownState is that this is updated when the content is sent to the peer without
|
|
19
|
+
* waiting for any acknowledgement from the peer.
|
|
20
|
+
*/
|
|
21
|
+
readonly optimisticKnownStates: PeerKnownStates;
|
|
22
|
+
readonly toldKnownState: Set<RawCoID>;
|
|
23
|
+
dispatchToKnownStates(action: PeerKnownStateActions): void;
|
|
24
|
+
readonly erroredCoValues: Map<RawCoID, TryAddTransactionsError>;
|
|
25
|
+
get id(): string;
|
|
26
|
+
get role(): "peer" | "server" | "client" | "storage";
|
|
27
|
+
get priority(): number | undefined;
|
|
28
|
+
get crashOnClose(): boolean;
|
|
29
|
+
shouldRetryUnavailableCoValues(): boolean;
|
|
30
|
+
isServerOrStoragePeer(): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* We set as default priority HIGH to handle all the messages without a
|
|
33
|
+
* priority property as HIGH priority.
|
|
34
|
+
*
|
|
35
|
+
* This way we consider all the non-content messsages as HIGH priority.
|
|
36
|
+
*/
|
|
37
|
+
private queue;
|
|
38
|
+
private processing;
|
|
39
|
+
closed: boolean;
|
|
40
|
+
processQueue(): Promise<void>;
|
|
41
|
+
pushOutgoingMessage(msg: SyncMessage): Promise<void>;
|
|
42
|
+
get incoming(): import("./sync.js").IncomingSyncStream;
|
|
43
|
+
private closeQueue;
|
|
44
|
+
gracefulShutdown(): void;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=PeerState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PeerState.d.ts","sourceRoot":"","sources":["../src/PeerState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAK9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE9C,qBAAa,SAAS;IAElB,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI,EAClB,WAAW,EAAE,eAAe,GAAG,SAAS;IAa1C;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IAEtC;;;;;;OAMG;IACH,QAAQ,CAAC,qBAAqB,EAAE,eAAe,CAAC;IAChD,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,CAAa;IAElD,qBAAqB,CAAC,MAAM,EAAE,qBAAqB;IAQnD,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAa;IAE5E,IAAI,EAAE,WAEL;IAED,IAAI,IAAI,6CAEP;IAED,IAAI,QAAQ,uBAEX;IAED,IAAI,YAAY,YAEf;IAED,8BAA8B;IAI9B,qBAAqB;IAIrB;;;;;OAKG;IACH,OAAO,CAAC,KAAK,CAAyD;IACtE,OAAO,CAAC,UAAU,CAAS;IACpB,MAAM,UAAS;IAEhB,YAAY;IAqBlB,mBAAmB,CAAC,GAAG,EAAE,WAAW;IAYpC,IAAI,QAAQ,2CAQX;IAED,OAAO,CAAC,UAAU;IAQlB,gBAAgB;CASjB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CoValuePriority } from "./priority.js";
|
|
2
|
+
import type { SyncMessage } from "./sync.js";
|
|
3
|
+
export type QueueEntry = {
|
|
4
|
+
msg: SyncMessage;
|
|
5
|
+
promise: Promise<void>;
|
|
6
|
+
resolve: () => void;
|
|
7
|
+
reject: (_: unknown) => void;
|
|
8
|
+
};
|
|
9
|
+
export declare class PriorityBasedMessageQueue {
|
|
10
|
+
private defaultPriority;
|
|
11
|
+
private queues;
|
|
12
|
+
queueSizeCounter: import("@opentelemetry/api").UpDownCounter<import("@opentelemetry/api").Attributes>;
|
|
13
|
+
private getQueue;
|
|
14
|
+
constructor(defaultPriority: CoValuePriority);
|
|
15
|
+
push(msg: SyncMessage): Promise<void>;
|
|
16
|
+
pull(): QueueEntry | undefined;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=PriorityBasedMessageQueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PriorityBasedMessageQueue.d.ts","sourceRoot":"","sources":["../src/PriorityBasedMessageQueue.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAkB7C,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,WAAW,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CAC9B,CAAC;AAYF,qBAAa,yBAAyB;IAcxB,OAAO,CAAC,eAAe;IAbnC,OAAO,CAAC,MAAM,CAAgD;IAC9D,gBAAgB,sFAMX;IAEL,OAAO,CAAC,QAAQ;gBAII,eAAe,EAAE,eAAe;IAE7C,IAAI,CAAC,GAAG,EAAE,WAAW;IAerB,IAAI;CAaZ"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { RawCoID } from "./ids.js";
|
|
2
|
+
import { CoValueKnownState, PeerID, SyncManager } from "./sync.js";
|
|
3
|
+
export type SyncState = {
|
|
4
|
+
uploaded: boolean;
|
|
5
|
+
};
|
|
6
|
+
export type GlobalSyncStateListenerCallback = (peerId: PeerID, knownState: CoValueKnownState, sync: SyncState) => void;
|
|
7
|
+
export type PeerSyncStateListenerCallback = (knownState: CoValueKnownState, sync: SyncState) => void;
|
|
8
|
+
export declare class SyncStateManager {
|
|
9
|
+
private syncManager;
|
|
10
|
+
constructor(syncManager: SyncManager);
|
|
11
|
+
private listeners;
|
|
12
|
+
private listenersByPeers;
|
|
13
|
+
subscribeToUpdates(listener: GlobalSyncStateListenerCallback): () => void;
|
|
14
|
+
subscribeToPeerUpdates(peerId: PeerID, listener: PeerSyncStateListenerCallback): () => void;
|
|
15
|
+
getCurrentSyncState(peerId: PeerID, id: RawCoID): SyncState;
|
|
16
|
+
triggerUpdate(peerId: PeerID, id: RawCoID): void;
|
|
17
|
+
private getKnownStateSessions;
|
|
18
|
+
private getIsCoValueFullyUploadedIntoPeer;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=SyncStateManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SyncStateManager.d.ts","sourceRoot":"","sources":["../src/SyncStateManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EACL,iBAAiB,EACjB,MAAM,EACN,WAAW,EAEZ,MAAM,WAAW,CAAC;AAEnB,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG,CAC5C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,iBAAiB,EAC7B,IAAI,EAAE,SAAS,KACZ,IAAI,CAAC;AAEV,MAAM,MAAM,6BAA6B,GAAG,CAC1C,UAAU,EAAE,iBAAiB,EAC7B,IAAI,EAAE,SAAS,KACZ,IAAI,CAAC;AAEV,qBAAa,gBAAgB;IACf,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAE5C,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,gBAAgB,CAGpB;IAEJ,kBAAkB,CAAC,QAAQ,EAAE,+BAA+B;IAQ5D,sBAAsB,CACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,6BAA6B;IAezC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO;IAkB/C,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO;IA4BzC,OAAO,CAAC,qBAAqB;IA4B7B,OAAO,CAAC,iCAAiC;CAS1C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base64url.d.ts","sourceRoot":"","sources":["../src/base64url.ts"],"names":[],"mappings":"AAGA,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,cAqB9C;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,UAqBjD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base64url.test.d.ts","sourceRoot":"","sources":["../src/base64url.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { CoValueCore } from "./coValueCore.js";
|
|
2
|
+
import { RawProfile as Profile, RawAccount } from "./coValues/account.js";
|
|
3
|
+
import { RawCoList } from "./coValues/coList.js";
|
|
4
|
+
import { RawCoMap } from "./coValues/coMap.js";
|
|
5
|
+
import { RawCoPlainText } from "./coValues/coPlainText.js";
|
|
6
|
+
import { RawBinaryCoStream, RawCoStream } from "./coValues/coStream.js";
|
|
7
|
+
import { RawGroup } from "./coValues/group.js";
|
|
8
|
+
import { RawCoID } from "./ids.js";
|
|
9
|
+
import { JsonObject, JsonValue } from "./jsonValue.js";
|
|
10
|
+
export type CoID<T extends RawCoValue> = RawCoID & {
|
|
11
|
+
readonly __type: T;
|
|
12
|
+
};
|
|
13
|
+
export interface RawCoValue {
|
|
14
|
+
/** The `CoValue`'s (precisely typed) `CoID` */
|
|
15
|
+
id: CoID<this>;
|
|
16
|
+
core: CoValueCore;
|
|
17
|
+
/** Specifies which kind of `CoValue` this is */
|
|
18
|
+
type: string;
|
|
19
|
+
/** The `CoValue`'s (precisely typed) static metadata */
|
|
20
|
+
headerMeta: JsonObject | null;
|
|
21
|
+
/** The `Group` this `CoValue` belongs to (determining permissions) */
|
|
22
|
+
group: RawGroup;
|
|
23
|
+
/** Returns an immutable JSON presentation of this `CoValue` */
|
|
24
|
+
toJSON(): JsonValue;
|
|
25
|
+
atTime(time: number): this;
|
|
26
|
+
/** Lets you subscribe to future updates to this CoValue (whether made locally or by other users).
|
|
27
|
+
*
|
|
28
|
+
* Takes a listener function that will be called with the current state for each update.
|
|
29
|
+
*
|
|
30
|
+
* Returns an unsubscribe function.
|
|
31
|
+
*
|
|
32
|
+
* Used internally by `useTelepathicData()` for reactive updates on changes to a `CoValue`. */
|
|
33
|
+
subscribe(listener: (coValue: this) => void): () => void;
|
|
34
|
+
}
|
|
35
|
+
export declare class RawUnknownCoValue implements RawCoValue {
|
|
36
|
+
id: CoID<this>;
|
|
37
|
+
core: CoValueCore;
|
|
38
|
+
constructor(core: CoValueCore);
|
|
39
|
+
get type(): "comap" | "colist" | "coplaintext" | "costream";
|
|
40
|
+
get headerMeta(): JsonObject;
|
|
41
|
+
/** @category 6. Meta */
|
|
42
|
+
get group(): RawGroup;
|
|
43
|
+
toJSON(): {};
|
|
44
|
+
atTime(): this;
|
|
45
|
+
subscribe(listener: (value: this) => void): () => void;
|
|
46
|
+
}
|
|
47
|
+
export type AnyRawCoValue = RawCoMap | RawGroup | RawAccount | Profile | RawCoList | RawCoPlainText | RawCoStream | RawBinaryCoStream;
|
|
48
|
+
export declare function expectMap(content: RawCoValue): RawCoMap;
|
|
49
|
+
export declare function expectList(content: RawCoValue): RawCoList;
|
|
50
|
+
export declare function expectStream(content: RawCoValue): RawCoStream;
|
|
51
|
+
export declare function expectPlainText(content: RawCoValue): RawCoPlainText;
|
|
52
|
+
//# sourceMappingURL=coValue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coValue.d.ts","sourceRoot":"","sources":["../src/coValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEvD,MAAM,MAAM,IAAI,CAAC,CAAC,SAAS,UAAU,IAAI,OAAO,GAAG;IACjD,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;CACpB,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,+CAA+C;IAC/C,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,IAAI,EAAE,WAAW,CAAC;IAClB,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,sEAAsE;IACtE,KAAK,EAAE,QAAQ,CAAC;IAChB,+DAA+D;IAC/D,MAAM,IAAI,SAAS,CAAC;IACpB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;;kGAM8F;IAC9F,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,IAAI,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAC1D;AAED,qBAAa,iBAAkB,YAAW,UAAU;IAClD,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,IAAI,EAAE,WAAW,CAAC;gBAEN,IAAI,EAAE,WAAW;IAK7B,IAAI,IAAI,oDAEP;IAED,IAAI,UAAU,IACoB,UAAU,CAC3C;IAED,wBAAwB;IACxB,IAAI,KAAK,IAAI,QAAQ,CAEpB;IAED,MAAM;IAIN,MAAM;IAIN,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,GAAG,MAAM,IAAI;CAKvD;AAED,MAAM,MAAM,aAAa,GACrB,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,OAAO,GACP,SAAS,GACT,cAAc,GACd,WAAW,GACX,iBAAiB,CAAC;AAEtB,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,QAAQ,CAMvD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,CAMzD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,WAAW,CAM7D;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,cAAc,CAMnE"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { Result } from "neverthrow";
|
|
2
|
+
import { AnyRawCoValue, RawCoValue } from "./coValue.js";
|
|
3
|
+
import { ControlledAccountOrAgent } from "./coValues/account.js";
|
|
4
|
+
import { RawGroup } from "./coValues/group.js";
|
|
5
|
+
import { CryptoProvider, Encrypted, Hash, KeyID, KeySecret, Signature, SignerID, StreamingHash } from "./crypto/crypto.js";
|
|
6
|
+
import { RawCoID, SessionID, TransactionID } from "./ids.js";
|
|
7
|
+
import { Stringified } from "./jsonStringify.js";
|
|
8
|
+
import { JsonObject, JsonValue } from "./jsonValue.js";
|
|
9
|
+
import { LocalNode, ResolveAccountAgentError } from "./localNode.js";
|
|
10
|
+
import { PermissionsDef as RulesetDef } from "./permissions.js";
|
|
11
|
+
import { CoValueKnownState, NewContentMessage } from "./sync.js";
|
|
12
|
+
/**
|
|
13
|
+
In order to not block other concurrently syncing CoValues we introduce a maximum size of transactions,
|
|
14
|
+
since they are the smallest unit of progress that can be synced within a CoValue.
|
|
15
|
+
This is particularly important for storing binary data in CoValues, since they are likely to be at least on the order of megabytes.
|
|
16
|
+
This also means that we want to keep signatures roughly after each MAX_RECOMMENDED_TX size chunk,
|
|
17
|
+
to be able to verify partially loaded CoValues or CoValues that are still being created (like a video live stream).
|
|
18
|
+
**/
|
|
19
|
+
export declare const MAX_RECOMMENDED_TX_SIZE: number;
|
|
20
|
+
export type CoValueHeader = {
|
|
21
|
+
type: AnyRawCoValue["type"];
|
|
22
|
+
ruleset: RulesetDef;
|
|
23
|
+
meta: JsonObject | null;
|
|
24
|
+
} & CoValueUniqueness;
|
|
25
|
+
export type CoValueUniqueness = {
|
|
26
|
+
uniqueness: JsonValue;
|
|
27
|
+
createdAt?: `2${string}` | null;
|
|
28
|
+
};
|
|
29
|
+
export declare function idforHeader(header: CoValueHeader, crypto: CryptoProvider): RawCoID;
|
|
30
|
+
type SessionLog = {
|
|
31
|
+
transactions: Transaction[];
|
|
32
|
+
lastHash?: Hash;
|
|
33
|
+
streamingHash: StreamingHash;
|
|
34
|
+
signatureAfter: {
|
|
35
|
+
[txIdx: number]: Signature | undefined;
|
|
36
|
+
};
|
|
37
|
+
lastSignature: Signature;
|
|
38
|
+
};
|
|
39
|
+
export type PrivateTransaction = {
|
|
40
|
+
privacy: "private";
|
|
41
|
+
madeAt: number;
|
|
42
|
+
keyUsed: KeyID;
|
|
43
|
+
encryptedChanges: Encrypted<JsonValue[], {
|
|
44
|
+
in: RawCoID;
|
|
45
|
+
tx: TransactionID;
|
|
46
|
+
}>;
|
|
47
|
+
};
|
|
48
|
+
export type TrustingTransaction = {
|
|
49
|
+
privacy: "trusting";
|
|
50
|
+
madeAt: number;
|
|
51
|
+
changes: Stringified<JsonValue[]>;
|
|
52
|
+
};
|
|
53
|
+
export type Transaction = PrivateTransaction | TrustingTransaction;
|
|
54
|
+
export type DecryptedTransaction = {
|
|
55
|
+
txID: TransactionID;
|
|
56
|
+
changes: JsonValue[];
|
|
57
|
+
madeAt: number;
|
|
58
|
+
};
|
|
59
|
+
export declare class CoValueCore {
|
|
60
|
+
id: RawCoID;
|
|
61
|
+
node: LocalNode;
|
|
62
|
+
crypto: CryptoProvider;
|
|
63
|
+
header: CoValueHeader;
|
|
64
|
+
_sessionLogs: Map<SessionID, SessionLog>;
|
|
65
|
+
_cachedContent?: RawCoValue;
|
|
66
|
+
listeners: Set<(content?: RawCoValue) => void>;
|
|
67
|
+
_decryptionCache: {
|
|
68
|
+
[key: Encrypted<JsonValue[], JsonValue>]: JsonValue[] | undefined;
|
|
69
|
+
};
|
|
70
|
+
_cachedKnownState?: CoValueKnownState;
|
|
71
|
+
_cachedDependentOn?: RawCoID[];
|
|
72
|
+
_cachedNewContentSinceEmpty?: NewContentMessage[] | undefined;
|
|
73
|
+
_currentAsyncAddTransaction?: Promise<void>;
|
|
74
|
+
constructor(header: CoValueHeader, node: LocalNode, internalInitSessions?: Map<SessionID, SessionLog>);
|
|
75
|
+
get sessionLogs(): Map<SessionID, SessionLog>;
|
|
76
|
+
testWithDifferentAccount(account: ControlledAccountOrAgent, currentSessionID: SessionID): CoValueCore;
|
|
77
|
+
knownState(): CoValueKnownState;
|
|
78
|
+
/** @internal */
|
|
79
|
+
knownStateUncached(): CoValueKnownState;
|
|
80
|
+
get meta(): JsonValue;
|
|
81
|
+
nextTransactionID(): TransactionID;
|
|
82
|
+
tryAddTransactions(sessionID: SessionID, newTransactions: Transaction[], givenExpectedNewHash: Hash | undefined, newSignature: Signature, skipVerify?: boolean): Result<true, TryAddTransactionsError>;
|
|
83
|
+
private doAddTransactions;
|
|
84
|
+
deferredUpdates: number;
|
|
85
|
+
nextDeferredNotify: Promise<void> | undefined;
|
|
86
|
+
notifyUpdate(notifyMode: "immediate" | "deferred"): void;
|
|
87
|
+
subscribe(listener: (content?: RawCoValue) => void): () => void;
|
|
88
|
+
expectedNewHashAfter(sessionID: SessionID, newTransactions: Transaction[]): {
|
|
89
|
+
expectedNewHash: Hash;
|
|
90
|
+
newStreamingHash: StreamingHash;
|
|
91
|
+
};
|
|
92
|
+
expectedNewHashAfterAsync(sessionID: SessionID, newTransactions: Transaction[]): Promise<{
|
|
93
|
+
expectedNewHash: Hash;
|
|
94
|
+
newStreamingHash: StreamingHash;
|
|
95
|
+
}>;
|
|
96
|
+
makeTransaction(changes: JsonValue[], privacy: "private" | "trusting"): boolean;
|
|
97
|
+
getCurrentContent(options?: {
|
|
98
|
+
ignorePrivateTransactions: true;
|
|
99
|
+
}): RawCoValue;
|
|
100
|
+
getValidTransactions(options?: {
|
|
101
|
+
ignorePrivateTransactions: boolean;
|
|
102
|
+
knownTransactions?: CoValueKnownState["sessions"];
|
|
103
|
+
}): DecryptedTransaction[];
|
|
104
|
+
getValidSortedTransactions(options?: {
|
|
105
|
+
ignorePrivateTransactions: boolean;
|
|
106
|
+
}): DecryptedTransaction[];
|
|
107
|
+
compareTransactions(a: Pick<DecryptedTransaction, "madeAt" | "txID">, b: Pick<DecryptedTransaction, "madeAt" | "txID">): number;
|
|
108
|
+
getCurrentReadKey(): {
|
|
109
|
+
secret: KeySecret | undefined;
|
|
110
|
+
id: KeyID;
|
|
111
|
+
};
|
|
112
|
+
getReadKey(keyID: KeyID): KeySecret | undefined;
|
|
113
|
+
getUncachedReadKey(keyID: KeyID): KeySecret | undefined;
|
|
114
|
+
findValidParentKeys(keyID: KeyID, group: RawGroup, parentGroup: CoValueCore): {
|
|
115
|
+
id: KeyID;
|
|
116
|
+
secret: KeySecret;
|
|
117
|
+
}[];
|
|
118
|
+
getGroup(): RawGroup;
|
|
119
|
+
getTx(txID: TransactionID): Transaction | undefined;
|
|
120
|
+
newContentSince(knownState: CoValueKnownState | undefined): NewContentMessage[] | undefined;
|
|
121
|
+
getDependedOnCoValues(): RawCoID[];
|
|
122
|
+
/** @internal */
|
|
123
|
+
getDependedOnCoValuesUncached(): RawCoID[];
|
|
124
|
+
waitForSync(options?: {
|
|
125
|
+
timeout?: number;
|
|
126
|
+
}): Promise<unknown[]>;
|
|
127
|
+
}
|
|
128
|
+
export type InvalidHashError = {
|
|
129
|
+
type: "InvalidHash";
|
|
130
|
+
id: RawCoID;
|
|
131
|
+
expectedNewHash: Hash;
|
|
132
|
+
givenExpectedNewHash: Hash;
|
|
133
|
+
};
|
|
134
|
+
export type InvalidSignatureError = {
|
|
135
|
+
type: "InvalidSignature";
|
|
136
|
+
id: RawCoID;
|
|
137
|
+
newSignature: Signature;
|
|
138
|
+
sessionID: SessionID;
|
|
139
|
+
signerID: SignerID;
|
|
140
|
+
};
|
|
141
|
+
export type TryAddTransactionsError = ResolveAccountAgentError | InvalidHashError | InvalidSignatureError;
|
|
142
|
+
export {};
|
|
143
|
+
//# sourceMappingURL=coValueCore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coValueCore.d.ts","sourceRoot":"","sources":["../src/coValueCore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { PeerState } from "./PeerState.js";
|
|
2
|
+
import { CoValueCore } from "./coValueCore.js";
|
|
3
|
+
import { RawCoID } from "./ids.js";
|
|
4
|
+
import { PeerID } from "./sync.js";
|
|
5
|
+
export declare const CO_VALUE_LOADING_CONFIG: {
|
|
6
|
+
MAX_RETRIES: number;
|
|
7
|
+
TIMEOUT: number;
|
|
8
|
+
};
|
|
9
|
+
export declare class CoValueUnknownState {
|
|
10
|
+
type: "unknown";
|
|
11
|
+
}
|
|
12
|
+
export declare class CoValueLoadingState {
|
|
13
|
+
type: "loading";
|
|
14
|
+
private peers;
|
|
15
|
+
private resolveResult;
|
|
16
|
+
result: Promise<CoValueCore | "unavailable">;
|
|
17
|
+
constructor(peersIds: Iterable<PeerID>);
|
|
18
|
+
markAsUnavailable(peerId: PeerID): void;
|
|
19
|
+
resolve(value: CoValueCore | "unavailable"): void;
|
|
20
|
+
waitForPeer(peerId: PeerID): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
export declare class CoValueAvailableState {
|
|
23
|
+
coValue: CoValueCore;
|
|
24
|
+
type: "available";
|
|
25
|
+
constructor(coValue: CoValueCore);
|
|
26
|
+
}
|
|
27
|
+
export declare class CoValueUnavailableState {
|
|
28
|
+
type: "unavailable";
|
|
29
|
+
}
|
|
30
|
+
type CoValueStateAction = {
|
|
31
|
+
type: "load-requested";
|
|
32
|
+
peersIds: PeerID[];
|
|
33
|
+
} | {
|
|
34
|
+
type: "not-found-in-peer";
|
|
35
|
+
peerId: PeerID;
|
|
36
|
+
} | {
|
|
37
|
+
type: "available";
|
|
38
|
+
coValue: CoValueCore;
|
|
39
|
+
};
|
|
40
|
+
type CoValueStateType = CoValueUnknownState | CoValueLoadingState | CoValueAvailableState | CoValueUnavailableState;
|
|
41
|
+
export declare class CoValueState {
|
|
42
|
+
id: RawCoID;
|
|
43
|
+
state: CoValueStateType;
|
|
44
|
+
promise?: Promise<CoValueCore | "unavailable">;
|
|
45
|
+
private resolve?;
|
|
46
|
+
constructor(id: RawCoID, state: CoValueStateType);
|
|
47
|
+
static Unknown(id: RawCoID): CoValueState;
|
|
48
|
+
static Loading(id: RawCoID, peersIds: Iterable<PeerID>): CoValueState;
|
|
49
|
+
static Available(coValue: CoValueCore): CoValueState;
|
|
50
|
+
static Unavailable(id: RawCoID): CoValueState;
|
|
51
|
+
getCoValue(): Promise<"unavailable" | CoValueCore>;
|
|
52
|
+
private moveToState;
|
|
53
|
+
private clearPromise;
|
|
54
|
+
loadFromPeers(peers: PeerState[]): Promise<void>;
|
|
55
|
+
dispatch(action: CoValueStateAction): void;
|
|
56
|
+
}
|
|
57
|
+
export {};
|
|
58
|
+
//# sourceMappingURL=coValueState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coValueState.d.ts","sourceRoot":"","sources":["../src/coValueState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,eAAO,MAAM,uBAAuB;;;CAGnC,CAAC;AAEF,qBAAa,mBAAmB;IAC9B,IAAI,YAAsB;CAC3B;AAED,qBAAa,mBAAmB;IAC9B,IAAI,YAAsB;IAC1B,OAAO,CAAC,KAAK,CAGT;IACJ,OAAO,CAAC,aAAa,CAA+C;IAEpE,MAAM,EAAE,OAAO,CAAC,WAAW,GAAG,aAAa,CAAC,CAAC;gBAEjC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC;IAetC,iBAAiB,CAAC,MAAM,EAAE,MAAM;IAehC,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,aAAa;IAS1C,WAAW,CAAC,MAAM,EAAE,MAAM;CAS3B;AAED,qBAAa,qBAAqB;IAGb,OAAO,EAAE,WAAW;IAFvC,IAAI,cAAwB;gBAET,OAAO,EAAE,WAAW;CACxC;AAED,qBAAa,uBAAuB;IAClC,IAAI,gBAA0B;CAC/B;AAED,KAAK,kBAAkB,GACnB;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,GACD;IACE,IAAI,EAAE,mBAAmB,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB,GACD;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,WAAW,CAAC;CACtB,CAAC;AAEN,KAAK,gBAAgB,GACjB,mBAAmB,GACnB,mBAAmB,GACnB,qBAAqB,GACrB,uBAAuB,CAAC;AAE5B,qBAAa,YAAY;IAKd,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,gBAAgB;IALhC,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,GAAG,aAAa,CAAC,CAAC;IAC/C,OAAO,CAAC,OAAO,CAAC,CAA+C;gBAGtD,EAAE,EAAE,OAAO,EACX,KAAK,EAAE,gBAAgB;IAGhC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO;IAI1B,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC;IAItD,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW;IAIrC,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO;IAIxB,UAAU;IAsBhB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,YAAY;IAKd,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE;IAmEtC,QAAQ,CAAC,MAAM,EAAE,kBAAkB;CAqBpC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { CoID, RawCoValue } from "../coValue.js";
|
|
2
|
+
import { CoValueCore, CoValueHeader, CoValueUniqueness } from "../coValueCore.js";
|
|
3
|
+
import { AgentSecret, CryptoProvider, SealerID, SealerSecret, SignerID, SignerSecret } from "../crypto/crypto.js";
|
|
4
|
+
import { AgentID } from "../ids.js";
|
|
5
|
+
import { JsonObject } from "../jsonValue.js";
|
|
6
|
+
import { LocalNode } from "../localNode.js";
|
|
7
|
+
import type { AccountRole } from "../permissions.js";
|
|
8
|
+
import { RawCoMap } from "./coMap.js";
|
|
9
|
+
import { InviteSecret, RawGroup } from "./group.js";
|
|
10
|
+
export declare function accountHeaderForInitialAgentSecret(agentSecret: AgentSecret, crypto: CryptoProvider): CoValueHeader;
|
|
11
|
+
export type InvalidAccountAgentIDError = {
|
|
12
|
+
type: "InvalidAccountAgentID";
|
|
13
|
+
reason: string;
|
|
14
|
+
};
|
|
15
|
+
export declare class RawAccount<Meta extends AccountMeta = AccountMeta> extends RawGroup<Meta> {
|
|
16
|
+
_cachedCurrentAgentID: AgentID | undefined;
|
|
17
|
+
currentAgentID(): AgentID;
|
|
18
|
+
createInvite(_: AccountRole): InviteSecret;
|
|
19
|
+
}
|
|
20
|
+
export interface ControlledAccountOrAgent {
|
|
21
|
+
id: RawAccountID | AgentID;
|
|
22
|
+
agentSecret: AgentSecret;
|
|
23
|
+
currentAgentID: () => AgentID;
|
|
24
|
+
currentSignerID: () => SignerID;
|
|
25
|
+
currentSignerSecret: () => SignerSecret;
|
|
26
|
+
currentSealerID: () => SealerID;
|
|
27
|
+
currentSealerSecret: () => SealerSecret;
|
|
28
|
+
}
|
|
29
|
+
/** @hidden */
|
|
30
|
+
export declare class RawControlledAccount<Meta extends AccountMeta = AccountMeta> extends RawAccount<Meta> implements ControlledAccountOrAgent {
|
|
31
|
+
agentSecret: AgentSecret;
|
|
32
|
+
crypto: CryptoProvider;
|
|
33
|
+
constructor(core: CoValueCore, agentSecret: AgentSecret);
|
|
34
|
+
/**
|
|
35
|
+
* Creates a new group (with the current account as the group's first admin).
|
|
36
|
+
* @category 1. High-level
|
|
37
|
+
*/
|
|
38
|
+
createGroup(uniqueness?: CoValueUniqueness): RawGroup<JsonObject | null>;
|
|
39
|
+
acceptInvite<T extends RawCoValue>(groupOrOwnedValueID: CoID<T>, inviteSecret: InviteSecret): Promise<void>;
|
|
40
|
+
currentAgentID(): AgentID;
|
|
41
|
+
currentSignerID(): `signer_z${string}`;
|
|
42
|
+
currentSignerSecret(): SignerSecret;
|
|
43
|
+
currentSealerID(): `sealer_z${string}`;
|
|
44
|
+
currentSealerSecret(): SealerSecret;
|
|
45
|
+
}
|
|
46
|
+
export declare class ControlledAgent implements ControlledAccountOrAgent {
|
|
47
|
+
agentSecret: AgentSecret;
|
|
48
|
+
crypto: CryptoProvider;
|
|
49
|
+
constructor(agentSecret: AgentSecret, crypto: CryptoProvider);
|
|
50
|
+
get id(): AgentID;
|
|
51
|
+
currentAgentID(): `sealer_z${string}/signer_z${string}`;
|
|
52
|
+
currentSignerID(): `signer_z${string}`;
|
|
53
|
+
currentSignerSecret(): SignerSecret;
|
|
54
|
+
currentSealerID(): `sealer_z${string}`;
|
|
55
|
+
currentSealerSecret(): SealerSecret;
|
|
56
|
+
}
|
|
57
|
+
export type AccountMeta = {
|
|
58
|
+
type: "account";
|
|
59
|
+
};
|
|
60
|
+
export type RawAccountID = CoID<RawAccount>;
|
|
61
|
+
export type ProfileShape = {
|
|
62
|
+
name: string;
|
|
63
|
+
};
|
|
64
|
+
export declare class RawProfile<Shape extends ProfileShape = ProfileShape, Meta extends JsonObject | null = JsonObject | null> extends RawCoMap<Shape, Meta> {
|
|
65
|
+
}
|
|
66
|
+
export type RawAccountMigration<Meta extends AccountMeta = AccountMeta> = (account: RawControlledAccount<Meta>, localNode: LocalNode, creationProps?: {
|
|
67
|
+
name: string;
|
|
68
|
+
}) => void | Promise<void>;
|
|
69
|
+
//# sourceMappingURL=account.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/coValues/account.ts"],"names":[],"mappings":"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"}
|