@graphprotocol/hypergraph 0.0.1 → 0.0.3
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/dist/connect/abis/MainVotingPlugin.json +1865 -0
- package/dist/connect/abis/PersonalSpaceAdminPlugin.json +531 -0
- package/dist/connect/abis.d.ts +115 -0
- package/dist/connect/abis.d.ts.map +1 -0
- package/dist/connect/abis.js +141 -0
- package/dist/connect/abis.js.map +1 -0
- package/dist/connect/auth-storage.d.ts +15 -0
- package/dist/connect/auth-storage.js +53 -0
- package/dist/connect/auth-storage.js.map +1 -0
- package/dist/connect/create-app-identity.d.ts +7 -0
- package/dist/connect/create-app-identity.js +15 -0
- package/dist/connect/create-app-identity.js.map +1 -0
- package/dist/connect/create-auth-url.d.ts +15 -0
- package/dist/connect/create-callback-params.d.ts +28 -0
- package/dist/connect/create-callback-params.d.ts.map +1 -1
- package/dist/connect/create-callback-params.js.map +1 -1
- package/dist/connect/create-identity-keys.d.ts +3 -0
- package/dist/connect/create-identity-keys.js +20 -0
- package/dist/connect/create-identity-keys.js.map +1 -0
- package/dist/connect/identity-encryption.d.ts +12 -0
- package/dist/connect/identity-encryption.d.ts.map +1 -1
- package/dist/connect/identity-encryption.js +187 -0
- package/dist/connect/identity-encryption.js.map +1 -0
- package/dist/connect/index.d.ts +11 -0
- package/dist/connect/index.d.ts.map +1 -1
- package/dist/connect/index.js +11 -0
- package/dist/connect/index.js.map +1 -0
- package/dist/connect/login.d.ts +22 -0
- package/dist/connect/login.d.ts.map +1 -1
- package/dist/connect/login.js +172 -0
- package/dist/connect/login.js.map +1 -0
- package/dist/connect/parse-auth-params.d.ts +14 -0
- package/dist/connect/parse-auth-params.d.ts.map +1 -0
- package/dist/connect/parse-auth-params.js +40 -0
- package/dist/connect/parse-auth-params.js.map +1 -0
- package/dist/connect/parse-callback-params.d.ts +13 -0
- package/dist/connect/parse-callback-params.d.ts.map +1 -1
- package/dist/connect/parse-callback-params.js +4 -1
- package/dist/connect/parse-callback-params.js.map +1 -1
- package/dist/connect/smart-account.d.ts +96 -0
- package/dist/connect/smart-account.d.ts.map +1 -0
- package/dist/connect/smart-account.js +761 -0
- package/dist/connect/smart-account.js.map +1 -0
- package/dist/connect/types.d.ts +2 -0
- package/dist/connect/types.d.ts.map +1 -1
- package/dist/connect/types.js.map +1 -1
- package/dist/entity/create.d.ts +8 -0
- package/dist/entity/create.js +51 -0
- package/dist/entity/create.js.map +1 -0
- package/dist/entity/decodedEntitiesCache.d.ts +23 -0
- package/dist/entity/decodedEntitiesCache.d.ts.map +1 -1
- package/dist/entity/decodedEntitiesCache.js +2 -0
- package/dist/entity/decodedEntitiesCache.js.map +1 -0
- package/dist/entity/delete.d.ts +12 -0
- package/dist/entity/delete.js +44 -0
- package/dist/entity/delete.js.map +1 -0
- package/dist/entity/entity.d.ts +18 -0
- package/dist/entity/entity.js +19 -0
- package/dist/entity/entity.js.map +1 -0
- package/dist/entity/entityRelationParentsMap.d.ts +4 -0
- package/dist/entity/entityRelationParentsMap.js +2 -0
- package/dist/entity/entityRelationParentsMap.js.map +1 -0
- package/dist/entity/findMany.d.ts +22 -0
- package/dist/entity/findMany.d.ts.map +1 -1
- package/dist/entity/findMany.js +8 -8
- package/dist/entity/findMany.js.map +1 -1
- package/dist/entity/findOne.d.ts +8 -0
- package/dist/entity/findOne.js +31 -0
- package/dist/entity/findOne.js.map +1 -0
- package/dist/entity/getEntityRelations.d.ts +4 -0
- package/dist/entity/getEntityRelations.d.ts.map +1 -1
- package/dist/entity/getEntityRelations.js +35 -0
- package/dist/entity/getEntityRelations.js.map +1 -0
- package/dist/entity/hasValidTypesProperty.d.ts +2 -0
- package/dist/entity/hasValidTypesProperty.d.ts.map +1 -0
- package/dist/entity/hasValidTypesProperty.js +4 -0
- package/dist/entity/hasValidTypesProperty.js.map +1 -0
- package/dist/entity/index.d.ts +9 -0
- package/dist/entity/index.js +9 -0
- package/dist/entity/index.js.map +1 -0
- package/dist/entity/relationParentsMap.d.ts +4 -0
- package/dist/entity/relationParentsMap.js +2 -0
- package/dist/entity/relationParentsMap.js.map +1 -0
- package/dist/entity/removeRelation.d.ts +7 -0
- package/dist/entity/removeRelation.js +17 -0
- package/dist/entity/removeRelation.js.map +1 -0
- package/dist/entity/test.d.ts +2 -0
- package/dist/entity/test.d.ts.map +1 -0
- package/dist/entity/test.js +2 -0
- package/dist/entity/test.js.map +1 -0
- package/dist/entity/types.d.ts +8 -8
- package/dist/entity/update.d.ts +8 -0
- package/dist/entity/update.js +58 -0
- package/dist/entity/update.js.map +1 -0
- package/dist/entity/variant-schema.d.ts +247 -0
- package/dist/entity/variant-schema.d.ts.map +1 -0
- package/dist/entity/variant-schema.js +204 -0
- package/dist/entity/variant-schema.js.map +1 -0
- package/dist/identity/auth-storage.d.ts +6 -0
- package/dist/identity/auth-storage.d.ts.map +1 -1
- package/dist/identity/auth-storage.js +52 -0
- package/dist/identity/auth-storage.js.map +1 -0
- package/dist/identity/get-verified-identity.d.ts +7 -0
- package/dist/identity/get-verified-identity.d.ts.map +1 -1
- package/dist/identity/get-verified-identity.js +37 -0
- package/dist/identity/get-verified-identity.js.map +1 -0
- package/dist/identity/identity-encryption.d.ts +7 -0
- package/dist/identity/identity-encryption.js +120 -0
- package/dist/identity/identity-encryption.js.map +1 -0
- package/dist/identity/index.d.ts +7 -0
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +7 -0
- package/dist/identity/index.js.map +1 -0
- package/dist/identity/logout.d.ts +3 -0
- package/dist/identity/logout.js +9 -0
- package/dist/identity/logout.js.map +1 -0
- package/dist/identity/prove-ownership.d.ts +15 -0
- package/dist/identity/prove-ownership.d.ts.map +1 -1
- package/dist/identity/prove-ownership.js +90 -0
- package/dist/identity/prove-ownership.js.map +1 -0
- package/dist/identity/types.d.ts +37 -0
- package/dist/identity/types.d.ts.map +1 -0
- package/dist/identity/types.js +11 -0
- package/dist/identity/types.js.map +1 -0
- package/dist/inboxes/create-inbox.d.ts +22 -0
- package/dist/inboxes/create-inbox.js +76 -0
- package/dist/inboxes/create-inbox.js.map +1 -0
- package/dist/inboxes/get-list-inboxes.d.ts +20 -0
- package/dist/inboxes/get-list-inboxes.js +45 -0
- package/dist/inboxes/get-list-inboxes.js.map +1 -0
- package/dist/inboxes/index.d.ts +11 -0
- package/dist/inboxes/index.js +11 -0
- package/dist/inboxes/index.js.map +1 -0
- package/dist/inboxes/merge-messages.d.ts +6 -0
- package/dist/inboxes/merge-messages.js +23 -0
- package/dist/inboxes/merge-messages.js.map +1 -0
- package/dist/inboxes/message-encryption.d.ts +15 -0
- package/dist/inboxes/message-encryption.js +29 -0
- package/dist/inboxes/message-encryption.js.map +1 -0
- package/dist/inboxes/message-validation.d.ts +6 -0
- package/dist/inboxes/message-validation.d.ts.map +1 -1
- package/dist/inboxes/message-validation.js +53 -0
- package/dist/inboxes/message-validation.js.map +1 -0
- package/dist/inboxes/prepare-message.d.ts +2 -2
- package/dist/inboxes/prepare-message.js +78 -0
- package/dist/inboxes/prepare-message.js.map +1 -0
- package/dist/inboxes/recover-inbox-creator.d.ts +5 -0
- package/dist/inboxes/recover-inbox-creator.js +24 -0
- package/dist/inboxes/recover-inbox-creator.js.map +1 -0
- package/dist/inboxes/recover-inbox-message-signer.d.ts +4 -0
- package/dist/inboxes/recover-inbox-message-signer.js +32 -0
- package/dist/inboxes/recover-inbox-message-signer.js.map +1 -0
- package/dist/inboxes/send-message.d.ts +19 -0
- package/dist/inboxes/send-message.js +58 -0
- package/dist/inboxes/send-message.js.map +1 -0
- package/dist/inboxes/types.d.ts +4 -0
- package/dist/inboxes/types.d.ts.map +1 -0
- package/dist/inboxes/types.js +3 -0
- package/dist/inboxes/types.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/key/create-key.d.ts +11 -0
- package/dist/key/create-key.d.ts.map +1 -0
- package/dist/key/create-key.js +22 -0
- package/dist/key/create-key.js.map +1 -0
- package/dist/key/decrypt-key.d.ts +9 -0
- package/dist/key/decrypt-key.d.ts.map +1 -0
- package/dist/key/decrypt-key.js +16 -0
- package/dist/key/decrypt-key.js.map +1 -0
- package/dist/key/encrypt-key.d.ts +11 -0
- package/dist/key/encrypt-key.d.ts.map +1 -0
- package/dist/key/encrypt-key.js +20 -0
- package/dist/key/encrypt-key.js.map +1 -0
- package/dist/key/index.d.ts +5 -0
- package/dist/key/index.d.ts.map +1 -0
- package/dist/key/index.js +5 -0
- package/dist/key/index.js.map +1 -0
- package/dist/key/key-box.d.ts +19 -0
- package/dist/key/key-box.d.ts.map +1 -0
- package/dist/key/key-box.js +38 -0
- package/dist/key/key-box.js.map +1 -0
- package/dist/messages/decrypt-message.d.ts +7 -0
- package/dist/messages/decrypt-message.d.ts.map +1 -0
- package/dist/messages/decrypt-message.js +11 -0
- package/dist/messages/decrypt-message.js.map +1 -0
- package/dist/messages/encrypt-message.d.ts +7 -0
- package/dist/messages/encrypt-message.d.ts.map +1 -0
- package/dist/messages/encrypt-message.js +12 -0
- package/dist/messages/encrypt-message.js.map +1 -0
- package/dist/messages/index.d.ts +6 -0
- package/dist/messages/index.js +6 -0
- package/dist/messages/index.js.map +1 -0
- package/dist/messages/serialize.d.ts +3 -0
- package/dist/messages/serialize.d.ts.map +1 -0
- package/dist/messages/serialize.js +30 -0
- package/dist/messages/serialize.js.map +1 -0
- package/dist/messages/signed-update-message.d.ts +23 -0
- package/dist/messages/signed-update-message.js +56 -0
- package/dist/messages/signed-update-message.js.map +1 -0
- package/dist/messages/types.d.ts +1268 -0
- package/dist/messages/types.d.ts.map +1 -1
- package/dist/messages/types.js +312 -0
- package/dist/messages/types.js.map +1 -0
- package/dist/space-events/accept-invitation.d.ts +9 -0
- package/dist/space-events/accept-invitation.js +28 -0
- package/dist/space-events/accept-invitation.js.map +1 -0
- package/dist/space-events/apply-event.d.ts +11 -0
- package/dist/space-events/apply-event.js +130 -0
- package/dist/space-events/apply-event.js.map +1 -0
- package/dist/space-events/create-inbox.d.ts +14 -0
- package/dist/space-events/create-inbox.js +41 -0
- package/dist/space-events/create-inbox.js.map +1 -0
- package/dist/space-events/create-invitation.d.ts +12 -0
- package/dist/space-events/create-invitation.js +30 -0
- package/dist/space-events/create-invitation.js.map +1 -0
- package/dist/space-events/create-space.d.ts +9 -0
- package/dist/space-events/create-space.js +29 -0
- package/dist/space-events/create-space.js.map +1 -0
- package/dist/space-events/delete-space.d.ts +10 -0
- package/dist/space-events/delete-space.js +30 -0
- package/dist/space-events/delete-space.js.map +1 -0
- package/dist/space-events/hash-event.d.ts +3 -0
- package/dist/space-events/hash-event.js +7 -0
- package/dist/space-events/hash-event.js.map +1 -0
- package/dist/space-events/index.d.ts +9 -0
- package/dist/space-events/index.js +9 -0
- package/dist/space-events/index.js.map +1 -0
- package/dist/space-events/types.d.ts +222 -0
- package/dist/space-events/types.d.ts.map +1 -0
- package/dist/space-events/types.js +102 -0
- package/dist/space-events/types.js.map +1 -0
- package/dist/space-info/decrypt-space-info.d.ts +7 -0
- package/dist/space-info/decrypt-space-info.js +18 -0
- package/dist/space-info/decrypt-space-info.js.map +1 -0
- package/dist/space-info/encrypt-and-sign-space-info.d.ts +17 -0
- package/dist/space-info/encrypt-and-sign-space-info.js +39 -0
- package/dist/space-info/encrypt-and-sign-space-info.js.map +1 -0
- package/dist/space-info/index.d.ts +4 -0
- package/dist/space-info/index.js +4 -0
- package/dist/space-info/index.js.map +1 -0
- package/dist/space-info/types.d.ts +6 -0
- package/dist/space-info/types.d.ts.map +1 -0
- package/dist/space-info/types.js +5 -0
- package/dist/space-info/types.js.map +1 -0
- package/dist/store-connect.d.ts +149 -0
- package/dist/store-connect.d.ts.map +1 -1
- package/dist/store-connect.js +289 -0
- package/dist/store-connect.js.map +1 -0
- package/dist/store.d.ts +158 -0
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +354 -0
- package/dist/store.js.map +1 -0
- package/dist/type/type.d.ts +14 -0
- package/dist/type/type.d.ts.map +1 -1
- package/dist/type/type.js +25 -0
- package/dist/type/type.js.map +1 -0
- package/dist/types.d.ts +80 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +37 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/assertExhaustive.d.ts +2 -0
- package/dist/utils/assertExhaustive.d.ts.map +1 -0
- package/dist/utils/assertExhaustive.js +4 -0
- package/dist/utils/assertExhaustive.js.map +1 -0
- package/dist/utils/automergeId.d.ts +1 -1
- package/dist/utils/automergeId.d.ts.map +1 -1
- package/dist/utils/automergeId.js +1 -1
- package/dist/utils/automergeId.js.map +1 -1
- package/dist/utils/base58.d.ts +36 -0
- package/dist/utils/base58.d.ts.map +1 -0
- package/dist/utils/base58.js +62 -0
- package/dist/utils/base58.js.map +1 -0
- package/dist/utils/hexBytesAddressUtils.d.ts +4 -0
- package/dist/utils/hexBytesAddressUtils.d.ts.map +1 -0
- package/dist/utils/hexBytesAddressUtils.js +21 -0
- package/dist/utils/hexBytesAddressUtils.js.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/internal/base58Utils.d.ts +4 -0
- package/dist/utils/internal/base58Utils.d.ts.map +1 -0
- package/dist/utils/internal/base58Utils.js +40 -0
- package/dist/utils/internal/base58Utils.js.map +1 -0
- package/dist/utils/internal/deep-merge.d.ts +7 -0
- package/dist/utils/internal/deep-merge.d.ts.map +1 -0
- package/dist/utils/internal/deep-merge.js +33 -0
- package/dist/utils/internal/deep-merge.js.map +1 -0
- package/dist/utils/isRelationField.d.ts +3 -0
- package/dist/utils/isRelationField.d.ts.map +1 -0
- package/dist/utils/isRelationField.js +8 -0
- package/dist/utils/isRelationField.js.map +1 -0
- package/dist/utils/jsc.d.ts +49 -0
- package/dist/utils/jsc.d.ts.map +1 -0
- package/dist/utils/jsc.js +88 -0
- package/dist/utils/jsc.js.map +1 -0
- package/dist/utils/stringToUint8Array.d.ts +3 -0
- package/dist/utils/stringToUint8Array.d.ts.map +1 -0
- package/dist/utils/stringToUint8Array.js +9 -0
- package/dist/utils/stringToUint8Array.js.map +1 -0
- package/package.json +5 -2
- package/src/connect/abis/MainVotingPlugin.json +1865 -0
- package/src/connect/abis/PersonalSpaceAdminPlugin.json +531 -0
- package/src/connect/abis.ts +183 -0
- package/src/connect/create-callback-params.ts +4 -1
- package/src/connect/identity-encryption.ts +10 -14
- package/src/connect/index.ts +1 -1
- package/src/connect/login.ts +106 -18
- package/src/connect/parse-callback-params.ts +4 -1
- package/src/connect/smart-account.ts +915 -0
- package/src/connect/types.ts +2 -0
- package/src/entity/decodedEntitiesCache.ts +1 -1
- package/src/entity/findMany.ts +16 -14
- package/src/entity/getEntityRelations.ts +1 -1
- package/src/entity/types.ts +8 -8
- package/src/identity/auth-storage.ts +11 -1
- package/src/identity/get-verified-identity.ts +6 -1
- package/src/identity/index.ts +1 -1
- package/src/identity/prove-ownership.ts +52 -8
- package/src/inboxes/message-validation.ts +17 -2
- package/src/messages/types.ts +6 -0
- package/src/store-connect.ts +1 -52
- package/src/store.ts +78 -48
- package/src/type/type.ts +4 -2
- package/src/types.ts +19 -1
- package/src/utils/automergeId.ts +1 -1
- package/dist/connect/prove-ownership.d.ts.map +0 -1
- package/src/connect/prove-ownership.ts +0 -58
package/src/store.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { AnyDocumentId, DocHandle, Repo } from '@automerge/automerge-repo';
|
|
2
2
|
import { type Store, createStore } from '@xstate/store';
|
|
3
3
|
import type { PrivateAppIdentity } from './connect/types.js';
|
|
4
|
+
import type { DocumentContent } from './entity/types.js';
|
|
4
5
|
import { mergeMessages } from './inboxes/merge-messages.js';
|
|
5
6
|
import type { InboxSenderAuthPolicy } from './inboxes/types.js';
|
|
6
7
|
import type { Invitation, Updates } from './messages/index.js';
|
|
7
8
|
import type { SpaceEvent, SpaceState } from './space-events/index.js';
|
|
9
|
+
import type { Mapping } from './types.js';
|
|
8
10
|
import { idToAutomergeId } from './utils/automergeId.js';
|
|
9
11
|
|
|
10
12
|
export type InboxMessageStorageEntry = {
|
|
@@ -42,15 +44,17 @@ export type AccountInboxStorageEntry = {
|
|
|
42
44
|
|
|
43
45
|
export type SpaceStorageEntry = {
|
|
44
46
|
id: string;
|
|
47
|
+
name: string;
|
|
45
48
|
events: SpaceEvent[];
|
|
46
49
|
state: SpaceState | undefined;
|
|
47
50
|
keys: { id: string; key: string }[];
|
|
48
|
-
automergeDocHandle: DocHandle<
|
|
51
|
+
automergeDocHandle: DocHandle<DocumentContent>;
|
|
49
52
|
inboxes: SpaceInboxStorageEntry[];
|
|
50
53
|
};
|
|
51
54
|
|
|
52
55
|
interface StoreContext {
|
|
53
56
|
spaces: SpaceStorageEntry[];
|
|
57
|
+
spacesLoadingIsPending: boolean;
|
|
54
58
|
updatesInFlight: string[];
|
|
55
59
|
invitations: Invitation[];
|
|
56
60
|
repo: Repo | null;
|
|
@@ -66,10 +70,12 @@ interface StoreContext {
|
|
|
66
70
|
identity: PrivateAppIdentity | null;
|
|
67
71
|
lastUpdateClock: { [spaceId: string]: number };
|
|
68
72
|
accountInboxes: AccountInboxStorageEntry[];
|
|
73
|
+
mapping: Mapping;
|
|
69
74
|
}
|
|
70
75
|
|
|
71
76
|
const initialStoreContext: StoreContext = {
|
|
72
77
|
spaces: [],
|
|
78
|
+
spacesLoadingIsPending: true,
|
|
73
79
|
updatesInFlight: [],
|
|
74
80
|
invitations: [],
|
|
75
81
|
repo: null,
|
|
@@ -78,14 +84,16 @@ const initialStoreContext: StoreContext = {
|
|
|
78
84
|
identity: null,
|
|
79
85
|
lastUpdateClock: {},
|
|
80
86
|
accountInboxes: [],
|
|
87
|
+
mapping: {},
|
|
81
88
|
};
|
|
82
89
|
|
|
83
90
|
type StoreEvent =
|
|
84
91
|
| { type: 'setInvitations'; invitations: Invitation[] }
|
|
92
|
+
| { type: 'setMapping'; mapping: Mapping }
|
|
85
93
|
| { type: 'reset' }
|
|
86
94
|
| { type: 'addUpdateInFlight'; updateId: string }
|
|
87
95
|
| { type: 'removeUpdateInFlight'; updateId: string }
|
|
88
|
-
| { type: '
|
|
96
|
+
| { type: 'setSpacesList'; spaces: { id: string; name: string }[] }
|
|
89
97
|
| { type: 'applyEvent'; spaceId: string; event: SpaceEvent; state: SpaceState }
|
|
90
98
|
| { type: 'updateConfirmed'; spaceId: string; clock: number }
|
|
91
99
|
| { type: 'applyUpdate'; spaceId: string; firstUpdateClock: number; lastUpdateClock: number }
|
|
@@ -122,6 +130,7 @@ type StoreEvent =
|
|
|
122
130
|
| {
|
|
123
131
|
type: 'setSpace';
|
|
124
132
|
spaceId: string;
|
|
133
|
+
name: string;
|
|
125
134
|
updates?: Updates;
|
|
126
135
|
events: SpaceEvent[];
|
|
127
136
|
inboxes?: SpaceInboxStorageEntry[];
|
|
@@ -154,9 +163,15 @@ export const store: Store<StoreContext, StoreEvent, GenericEventObject> = create
|
|
|
154
163
|
invitations: event.invitations,
|
|
155
164
|
};
|
|
156
165
|
},
|
|
166
|
+
setMapping: (context, event: { mapping: Mapping }) => {
|
|
167
|
+
return {
|
|
168
|
+
...context,
|
|
169
|
+
mapping: event.mapping,
|
|
170
|
+
};
|
|
171
|
+
},
|
|
157
172
|
reset: (context) => {
|
|
158
173
|
// once the repo is initialized, there is no need to reset it
|
|
159
|
-
return { ...initialStoreContext, repo: context.repo };
|
|
174
|
+
return { ...initialStoreContext, repo: context.repo, mapping: context.mapping };
|
|
160
175
|
},
|
|
161
176
|
addUpdateInFlight: (context, event: { updateId: string }) => {
|
|
162
177
|
return {
|
|
@@ -170,56 +185,68 @@ export const store: Store<StoreContext, StoreEvent, GenericEventObject> = create
|
|
|
170
185
|
updatesInFlight: context.updatesInFlight.filter((id) => id !== event.updateId),
|
|
171
186
|
};
|
|
172
187
|
},
|
|
173
|
-
|
|
188
|
+
setSpacesList: (context, event: { spaces: { id: string; name: string }[] }) => {
|
|
174
189
|
if (!context.repo) {
|
|
175
190
|
return context;
|
|
176
191
|
}
|
|
177
|
-
const existingSpace = context.spaces.find((s) => s.id === event.spaceId);
|
|
178
|
-
const lastUpdateClock = context.lastUpdateClock[event.spaceId] ?? -1;
|
|
179
|
-
const result = context.repo.findWithProgress(idToAutomergeId(event.spaceId) as AnyDocumentId);
|
|
180
192
|
|
|
181
|
-
|
|
182
|
-
result.handle.doneLoading();
|
|
193
|
+
let storeContext: StoreContext = { ...context, spacesLoadingIsPending: false };
|
|
183
194
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
195
|
+
for (const space of event.spaces) {
|
|
196
|
+
const existingSpace = context.spaces.find((s) => s.id === space.id);
|
|
197
|
+
const lastUpdateClock = context.lastUpdateClock[space.id] ?? -1;
|
|
198
|
+
const result = context.repo.findWithProgress<DocumentContent>(idToAutomergeId(space.id) as AnyDocumentId);
|
|
199
|
+
|
|
200
|
+
// set it to ready to interact with the document
|
|
201
|
+
result.handle.doneLoading();
|
|
202
|
+
|
|
203
|
+
if (existingSpace) {
|
|
204
|
+
storeContext = {
|
|
205
|
+
...storeContext,
|
|
206
|
+
spaces: storeContext.spaces.map((existingSpace) => {
|
|
207
|
+
if (existingSpace.id === space.id) {
|
|
208
|
+
const newSpace: SpaceStorageEntry = {
|
|
209
|
+
id: existingSpace.id,
|
|
210
|
+
name: existingSpace.name,
|
|
211
|
+
events: existingSpace.events ?? [],
|
|
212
|
+
state: existingSpace.state,
|
|
213
|
+
keys: existingSpace.keys ?? [],
|
|
214
|
+
automergeDocHandle: result.handle,
|
|
215
|
+
inboxes: existingSpace.inboxes ?? [],
|
|
216
|
+
};
|
|
217
|
+
return newSpace;
|
|
218
|
+
}
|
|
219
|
+
return existingSpace;
|
|
220
|
+
}),
|
|
221
|
+
lastUpdateClock: {
|
|
222
|
+
...storeContext.lastUpdateClock,
|
|
223
|
+
[space.id]: lastUpdateClock,
|
|
224
|
+
},
|
|
225
|
+
};
|
|
226
|
+
} else {
|
|
227
|
+
storeContext = {
|
|
228
|
+
...storeContext,
|
|
229
|
+
spaces: [
|
|
230
|
+
...storeContext.spaces,
|
|
231
|
+
{
|
|
232
|
+
id: space.id,
|
|
233
|
+
name: space.name,
|
|
234
|
+
events: [],
|
|
235
|
+
state: undefined,
|
|
236
|
+
keys: [],
|
|
237
|
+
inboxes: [],
|
|
194
238
|
automergeDocHandle: result.handle,
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
[event.spaceId]: lastUpdateClock,
|
|
204
|
-
},
|
|
205
|
-
};
|
|
239
|
+
},
|
|
240
|
+
],
|
|
241
|
+
lastUpdateClock: {
|
|
242
|
+
...storeContext.lastUpdateClock,
|
|
243
|
+
[space.id]: -1,
|
|
244
|
+
},
|
|
245
|
+
};
|
|
246
|
+
}
|
|
206
247
|
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
spaces: [
|
|
210
|
-
...context.spaces,
|
|
211
|
-
{
|
|
212
|
-
id: event.spaceId,
|
|
213
|
-
events: [],
|
|
214
|
-
state: undefined,
|
|
215
|
-
keys: [],
|
|
216
|
-
inboxes: [],
|
|
217
|
-
updates: [],
|
|
218
|
-
lastUpdateClock: -1,
|
|
219
|
-
automergeDocHandle: result.handle,
|
|
220
|
-
},
|
|
221
|
-
],
|
|
222
|
-
};
|
|
248
|
+
|
|
249
|
+
return storeContext;
|
|
223
250
|
},
|
|
224
251
|
applyEvent: (context, event: { spaceId: string; event: SpaceEvent; state: SpaceState }) => {
|
|
225
252
|
return {
|
|
@@ -398,6 +425,7 @@ export const store: Store<StoreContext, StoreEvent, GenericEventObject> = create
|
|
|
398
425
|
context,
|
|
399
426
|
event: {
|
|
400
427
|
spaceId: string;
|
|
428
|
+
name: string;
|
|
401
429
|
updates?: Updates;
|
|
402
430
|
inboxes?: SpaceInboxStorageEntry[];
|
|
403
431
|
events: SpaceEvent[];
|
|
@@ -410,11 +438,12 @@ export const store: Store<StoreContext, StoreEvent, GenericEventObject> = create
|
|
|
410
438
|
) => {
|
|
411
439
|
const existingSpace = context.spaces.find((s) => s.id === event.spaceId);
|
|
412
440
|
if (!existingSpace && context.repo) {
|
|
413
|
-
const result = context.repo.findWithProgress(idToAutomergeId(event.spaceId) as AnyDocumentId);
|
|
441
|
+
const result = context.repo.findWithProgress<DocumentContent>(idToAutomergeId(event.spaceId) as AnyDocumentId);
|
|
414
442
|
// set it to ready to interact with the document
|
|
415
443
|
result.handle.doneLoading();
|
|
416
444
|
|
|
417
445
|
const newSpace: SpaceStorageEntry = {
|
|
446
|
+
name: event.name,
|
|
418
447
|
id: event.spaceId,
|
|
419
448
|
events: event.events,
|
|
420
449
|
state: event.spaceState,
|
|
@@ -473,7 +502,8 @@ export const store: Store<StoreContext, StoreEvent, GenericEventObject> = create
|
|
|
473
502
|
return {
|
|
474
503
|
...context,
|
|
475
504
|
authenticated: true,
|
|
476
|
-
|
|
505
|
+
// TODO: remove hard-coded account address and use the one from the identity
|
|
506
|
+
identity: { ...event.identity },
|
|
477
507
|
};
|
|
478
508
|
},
|
|
479
509
|
resetAuth: (context) => {
|
package/src/type/type.ts
CHANGED
|
@@ -17,9 +17,11 @@ export const Point = Schema.transform(Schema.String, Schema.Array(Number), {
|
|
|
17
17
|
encode: (points: readonly number[]) => points.join(','),
|
|
18
18
|
});
|
|
19
19
|
|
|
20
|
-
export const Relation = <S extends AnyNoContext>(schema: S) =>
|
|
21
|
-
Field({
|
|
20
|
+
export const Relation = <S extends AnyNoContext>(schema: S) => {
|
|
21
|
+
const relationSchema = Field({
|
|
22
22
|
select: Schema.Array(schema) as unknown as Schema.Schema<ReadonlyArray<EntityWithRelation<S>>>,
|
|
23
23
|
insert: Schema.optional(Schema.Array(Schema.String)),
|
|
24
24
|
update: Schema.Undefined,
|
|
25
25
|
});
|
|
26
|
+
return relationSchema;
|
|
27
|
+
};
|
package/src/types.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Id as Grc20Id } from '@graphprotocol/grc-20';
|
|
1
2
|
import * as Data from 'effect/Data';
|
|
2
3
|
import * as Schema from 'effect/Schema';
|
|
3
4
|
|
|
@@ -19,13 +20,16 @@ export type ConnectAuthPayload = Schema.Schema.Type<typeof ConnectAuthPayload>;
|
|
|
19
20
|
export const ConnectCallbackResult = Schema.Struct({
|
|
20
21
|
appIdentityAddress: Schema.String,
|
|
21
22
|
appIdentityAddressPrivateKey: Schema.String,
|
|
23
|
+
accountAddress: Schema.String,
|
|
24
|
+
permissionId: Schema.String,
|
|
22
25
|
signaturePublicKey: Schema.String,
|
|
23
26
|
signaturePrivateKey: Schema.String,
|
|
24
27
|
encryptionPublicKey: Schema.String,
|
|
25
28
|
encryptionPrivateKey: Schema.String,
|
|
26
29
|
sessionToken: Schema.String,
|
|
27
30
|
sessionTokenExpires: Schema.Date,
|
|
28
|
-
|
|
31
|
+
privateSpaces: Schema.Array(Schema.Struct({ id: Schema.String })),
|
|
32
|
+
publicSpaces: Schema.Array(Schema.Struct({ id: Schema.String })),
|
|
29
33
|
});
|
|
30
34
|
|
|
31
35
|
export type ConnectCallbackResult = Schema.Schema.Type<typeof ConnectCallbackResult>;
|
|
@@ -45,3 +49,17 @@ export class FailedToParseConnectAuthUrl extends Data.TaggedError('FailedToParse
|
|
|
45
49
|
export class FailedToParseAuthCallbackUrl extends Data.TaggedError('FailedToParseAuthCallbackUrl')<{
|
|
46
50
|
message: string;
|
|
47
51
|
}> {}
|
|
52
|
+
|
|
53
|
+
export type MappingEntry = {
|
|
54
|
+
typeIds: Grc20Id.Id[];
|
|
55
|
+
properties?: {
|
|
56
|
+
[key: string]: Grc20Id.Id;
|
|
57
|
+
};
|
|
58
|
+
relations?: {
|
|
59
|
+
[key: string]: Grc20Id.Id;
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export type Mapping = {
|
|
64
|
+
[key: string]: MappingEntry;
|
|
65
|
+
};
|
package/src/utils/automergeId.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { parse as parseUuid, stringify as stringifyUuid } from 'uuid';
|
|
|
4
4
|
/**
|
|
5
5
|
* Converts a UUID into Base58Check
|
|
6
6
|
*/
|
|
7
|
-
export function idToAutomergeId(uuid: string
|
|
7
|
+
export function idToAutomergeId(uuid: string) {
|
|
8
8
|
const payload = parseUuid(uuid);
|
|
9
9
|
return bs58check.encode(payload);
|
|
10
10
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prove-ownership.d.ts","sourceRoot":"","sources":["../../src/connect/prove-ownership.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEvD,eAAO,MAAM,sBAAsB,GAAI,gBAAgB,MAAM,EAAE,WAAW,MAAM,KAAG,MAElF,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,gBAAgB,MAAM,EAAE,WAAW,MAAM,KAAG,MAE9E,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,QAAQ,MAAM,EACd,gBAAgB,MAAM,EACtB,MAAM,YAAY,KACjB,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAQpD,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,gBAAgB,MAAM,EACtB,WAAW,MAAM,EACjB,cAAc,MAAM,EACpB,UAAU,MAAM,KACf,OAAO,CAAC,OAAO,CAwBjB,CAAC"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { type Hex, verifyMessage } from 'viem';
|
|
2
|
-
import { privateKeyToAccount } from 'viem/accounts';
|
|
3
|
-
|
|
4
|
-
import { publicKeyToAddress } from '../utils/index.js';
|
|
5
|
-
import type { IdentityKeys, Signer } from './types.js';
|
|
6
|
-
|
|
7
|
-
export const getAccountProofMessage = (accountAddress: string, publicKey: string): string => {
|
|
8
|
-
return `This message proves I am the owner of the account ${accountAddress} and the public key ${publicKey}`;
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
export const getKeyProofMessage = (accountAddress: string, publicKey: string): string => {
|
|
12
|
-
return `The public key ${publicKey} is owned by the account ${accountAddress}`;
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
export const proveIdentityOwnership = async (
|
|
16
|
-
signer: Signer,
|
|
17
|
-
accountAddress: string,
|
|
18
|
-
keys: IdentityKeys,
|
|
19
|
-
): Promise<{ accountProof: string; keyProof: string }> => {
|
|
20
|
-
const publicKey = keys.signaturePublicKey;
|
|
21
|
-
const accountProofMessage = getAccountProofMessage(accountAddress, publicKey);
|
|
22
|
-
const keyProofMessage = getKeyProofMessage(accountAddress, publicKey);
|
|
23
|
-
const accountProof = await signer.signMessage(accountProofMessage);
|
|
24
|
-
const account = privateKeyToAccount(keys.signaturePrivateKey as Hex);
|
|
25
|
-
const keyProof = await account.signMessage({ message: keyProofMessage });
|
|
26
|
-
return { accountProof, keyProof };
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
export const verifyIdentityOwnership = async (
|
|
30
|
-
accountAddress: string,
|
|
31
|
-
publicKey: string,
|
|
32
|
-
accountProof: string,
|
|
33
|
-
keyProof: string,
|
|
34
|
-
): Promise<boolean> => {
|
|
35
|
-
const accountProofMessage = getAccountProofMessage(accountAddress, publicKey);
|
|
36
|
-
const keyProofMessage = getKeyProofMessage(accountAddress, publicKey);
|
|
37
|
-
const validAccountProof = await verifyMessage({
|
|
38
|
-
address: accountAddress as Hex,
|
|
39
|
-
message: accountProofMessage,
|
|
40
|
-
signature: accountProof as Hex,
|
|
41
|
-
});
|
|
42
|
-
if (!validAccountProof) {
|
|
43
|
-
console.log('Invalid account proof');
|
|
44
|
-
return false;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const keyAddress = publicKeyToAddress(publicKey) as Hex;
|
|
48
|
-
const validKeyProof = await verifyMessage({
|
|
49
|
-
address: keyAddress,
|
|
50
|
-
message: keyProofMessage,
|
|
51
|
-
signature: keyProof as Hex,
|
|
52
|
-
});
|
|
53
|
-
if (!validKeyProof) {
|
|
54
|
-
console.log('Invalid key proof');
|
|
55
|
-
return false;
|
|
56
|
-
}
|
|
57
|
-
return true;
|
|
58
|
-
};
|