@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
|
@@ -6,15 +6,18 @@ type CreateAuthUrlParams = {
|
|
|
6
6
|
expiry: number;
|
|
7
7
|
nonce: string;
|
|
8
8
|
appId: string;
|
|
9
|
+
permissionId: string;
|
|
9
10
|
appIdentityAddress: string;
|
|
10
11
|
appIdentityAddressPrivateKey: string;
|
|
12
|
+
accountAddress: string;
|
|
11
13
|
signaturePublicKey: string;
|
|
12
14
|
signaturePrivateKey: string;
|
|
13
15
|
encryptionPublicKey: string;
|
|
14
16
|
encryptionPrivateKey: string;
|
|
15
17
|
sessionToken: string;
|
|
16
18
|
sessionTokenExpires: number;
|
|
17
|
-
|
|
19
|
+
privateSpaces: { id: string }[];
|
|
20
|
+
publicSpaces: { id: string }[];
|
|
18
21
|
};
|
|
19
22
|
|
|
20
23
|
export const createCallbackParams = ({ nonce, ephemeralPublicKey, ...rest }: CreateAuthUrlParams) => {
|
|
@@ -67,7 +67,6 @@ const signatureMessage = (nonce: Uint8Array): string => {
|
|
|
67
67
|
|
|
68
68
|
export const encryptIdentity = async (
|
|
69
69
|
signer: Signer,
|
|
70
|
-
accountAddress: string,
|
|
71
70
|
keys: IdentityKeys,
|
|
72
71
|
): Promise<{ ciphertext: string; nonce: string }> => {
|
|
73
72
|
const nonce = randomBytes(32);
|
|
@@ -76,7 +75,7 @@ export const encryptIdentity = async (
|
|
|
76
75
|
|
|
77
76
|
// Check that the signature is valid
|
|
78
77
|
const valid = await verifyMessage({
|
|
79
|
-
address:
|
|
78
|
+
address: (await signer.getAddress()) as Hex,
|
|
80
79
|
message,
|
|
81
80
|
signature,
|
|
82
81
|
});
|
|
@@ -97,18 +96,13 @@ export const encryptIdentity = async (
|
|
|
97
96
|
return { ciphertext, nonce: bytesToHex(nonce) };
|
|
98
97
|
};
|
|
99
98
|
|
|
100
|
-
export const decryptIdentity = async (
|
|
101
|
-
signer: Signer,
|
|
102
|
-
accountAddress: string,
|
|
103
|
-
ciphertext: string,
|
|
104
|
-
nonce: string,
|
|
105
|
-
): Promise<IdentityKeys> => {
|
|
99
|
+
export const decryptIdentity = async (signer: Signer, ciphertext: string, nonce: string): Promise<IdentityKeys> => {
|
|
106
100
|
const message = signatureMessage(hexToBytes(nonce));
|
|
107
101
|
const signature = (await signer.signMessage(message)) as Hex;
|
|
108
102
|
|
|
109
103
|
// Check that the signature is valid
|
|
110
104
|
const valid = await verifyMessage({
|
|
111
|
-
address:
|
|
105
|
+
address: (await signer.getAddress()) as Hex,
|
|
112
106
|
message,
|
|
113
107
|
signature,
|
|
114
108
|
});
|
|
@@ -141,9 +135,9 @@ export const decryptIdentity = async (
|
|
|
141
135
|
|
|
142
136
|
export const encryptAppIdentity = async (
|
|
143
137
|
signer: Signer,
|
|
144
|
-
accountAddress: string,
|
|
145
138
|
appIdentityAddress: string,
|
|
146
139
|
appIdentityAddressPrivateKey: string,
|
|
140
|
+
permissionId: string,
|
|
147
141
|
keys: IdentityKeys,
|
|
148
142
|
): Promise<{ ciphertext: string; nonce: string }> => {
|
|
149
143
|
const nonce = randomBytes(32);
|
|
@@ -152,7 +146,7 @@ export const encryptAppIdentity = async (
|
|
|
152
146
|
|
|
153
147
|
// Check that the signature is valid
|
|
154
148
|
const valid = await verifyMessage({
|
|
155
|
-
address:
|
|
149
|
+
address: (await signer.getAddress()) as Hex,
|
|
156
150
|
message,
|
|
157
151
|
signature,
|
|
158
152
|
});
|
|
@@ -169,6 +163,7 @@ export const encryptAppIdentity = async (
|
|
|
169
163
|
keys.signaturePrivateKey,
|
|
170
164
|
appIdentityAddress,
|
|
171
165
|
appIdentityAddressPrivateKey,
|
|
166
|
+
permissionId,
|
|
172
167
|
].join('\n');
|
|
173
168
|
const keysMsg = new TextEncoder().encode(keysTxt);
|
|
174
169
|
const ciphertext = encrypt(keysMsg, secretKey);
|
|
@@ -177,16 +172,15 @@ export const encryptAppIdentity = async (
|
|
|
177
172
|
|
|
178
173
|
export const decryptAppIdentity = async (
|
|
179
174
|
signer: Signer,
|
|
180
|
-
accountAddress: string,
|
|
181
175
|
ciphertext: string,
|
|
182
176
|
nonce: string,
|
|
183
|
-
): Promise<Omit<PrivateAppIdentity, 'sessionToken' | 'sessionTokenExpires'>> => {
|
|
177
|
+
): Promise<Omit<PrivateAppIdentity, 'sessionToken' | 'sessionTokenExpires' | 'accountAddress'>> => {
|
|
184
178
|
const message = signatureMessage(hexToBytes(nonce));
|
|
185
179
|
const signature = (await signer.signMessage(message)) as Hex;
|
|
186
180
|
|
|
187
181
|
// Check that the signature is valid
|
|
188
182
|
const valid = await verifyMessage({
|
|
189
|
-
address:
|
|
183
|
+
address: (await signer.getAddress()) as Hex,
|
|
190
184
|
message,
|
|
191
185
|
signature,
|
|
192
186
|
});
|
|
@@ -220,6 +214,7 @@ export const decryptAppIdentity = async (
|
|
|
220
214
|
signaturePrivateKey,
|
|
221
215
|
appIdentityAddress,
|
|
222
216
|
appIdentityAddressPrivateKey,
|
|
217
|
+
permissionId,
|
|
223
218
|
] = keysTxt.split('\n');
|
|
224
219
|
return {
|
|
225
220
|
encryptionPublicKey,
|
|
@@ -228,5 +223,6 @@ export const decryptAppIdentity = async (
|
|
|
228
223
|
signaturePrivateKey,
|
|
229
224
|
address: appIdentityAddress,
|
|
230
225
|
addressPrivateKey: appIdentityAddressPrivateKey,
|
|
226
|
+
permissionId,
|
|
231
227
|
};
|
|
232
228
|
};
|
package/src/connect/index.ts
CHANGED
package/src/connect/login.ts
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import * as Schema from 'effect/Schema';
|
|
2
|
-
import type {
|
|
2
|
+
import type { SmartAccountClient } from 'permissionless';
|
|
3
|
+
import type { Address, Chain, Hex, WalletClient } from 'viem';
|
|
4
|
+
import { proveIdentityOwnership } from '../identity/prove-ownership.js';
|
|
3
5
|
import * as Messages from '../messages/index.js';
|
|
4
6
|
import { store } from '../store-connect.js';
|
|
5
|
-
import { storeAccountAddress, storeKeys } from './auth-storage.js';
|
|
7
|
+
import { loadAccountAddress, storeAccountAddress, storeKeys, wipeAccountAddress } from './auth-storage.js';
|
|
6
8
|
import { createIdentityKeys } from './create-identity-keys.js';
|
|
7
9
|
import { decryptIdentity, encryptIdentity } from './identity-encryption.js';
|
|
8
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
type SmartAccountParams,
|
|
12
|
+
getSmartAccountWalletClient,
|
|
13
|
+
isSmartAccountDeployed,
|
|
14
|
+
smartAccountNeedsUpdate,
|
|
15
|
+
updateLegacySmartAccount,
|
|
16
|
+
} from './smart-account.js';
|
|
9
17
|
import type { IdentityKeys, Signer, Storage } from './types.js';
|
|
10
18
|
|
|
11
19
|
export async function identityExists(accountAddress: string, syncServerUri: string) {
|
|
@@ -17,17 +25,24 @@ export async function identityExists(accountAddress: string, syncServerUri: stri
|
|
|
17
25
|
|
|
18
26
|
export async function signup(
|
|
19
27
|
signer: Signer,
|
|
28
|
+
walletClient: WalletClient,
|
|
29
|
+
smartAccountClient: SmartAccountClient,
|
|
20
30
|
accountAddress: Address,
|
|
21
31
|
syncServerUri: string,
|
|
22
32
|
storage: Storage,
|
|
23
33
|
identityToken: string,
|
|
24
34
|
) {
|
|
25
35
|
const keys = createIdentityKeys();
|
|
26
|
-
const { ciphertext, nonce } = await encryptIdentity(signer,
|
|
27
|
-
const { accountProof, keyProof } = await proveIdentityOwnership(
|
|
36
|
+
const { ciphertext, nonce } = await encryptIdentity(signer, keys);
|
|
37
|
+
const { accountProof, keyProof } = await proveIdentityOwnership(
|
|
38
|
+
walletClient,
|
|
39
|
+
smartAccountClient,
|
|
40
|
+
accountAddress,
|
|
41
|
+
keys,
|
|
42
|
+
);
|
|
28
43
|
|
|
29
44
|
const req: Messages.RequestConnectCreateIdentity = {
|
|
30
|
-
keyBox: { accountAddress, ciphertext, nonce },
|
|
45
|
+
keyBox: { signer: await signer.getAddress(), accountAddress, ciphertext, nonce },
|
|
31
46
|
accountProof,
|
|
32
47
|
keyProof,
|
|
33
48
|
signaturePublicKey: keys.signaturePublicKey,
|
|
@@ -49,9 +64,8 @@ export async function signup(
|
|
|
49
64
|
if (!decoded.success) {
|
|
50
65
|
throw new Error('Error creating identity');
|
|
51
66
|
}
|
|
52
|
-
storeAccountAddress(storage, accountAddress);
|
|
53
67
|
storeKeys(storage, accountAddress, keys);
|
|
54
|
-
|
|
68
|
+
storeAccountAddress(storage, accountAddress);
|
|
55
69
|
return {
|
|
56
70
|
accountAddress,
|
|
57
71
|
keys,
|
|
@@ -66,9 +80,10 @@ export async function restoreKeys(
|
|
|
66
80
|
identityToken: string,
|
|
67
81
|
) {
|
|
68
82
|
const res = await fetch(new URL('/connect/identity/encrypted', syncServerUri), {
|
|
69
|
-
method: '
|
|
83
|
+
method: 'GET',
|
|
70
84
|
headers: {
|
|
71
85
|
'privy-id-token': identityToken,
|
|
86
|
+
'account-address': accountAddress,
|
|
72
87
|
'Content-Type': 'application/json',
|
|
73
88
|
},
|
|
74
89
|
});
|
|
@@ -77,8 +92,9 @@ export async function restoreKeys(
|
|
|
77
92
|
const decoded = Schema.decodeUnknownSync(Messages.ResponseIdentityEncrypted)(await res.json());
|
|
78
93
|
const { keyBox } = decoded;
|
|
79
94
|
const { ciphertext, nonce } = keyBox;
|
|
80
|
-
const keys = await decryptIdentity(signer,
|
|
95
|
+
const keys = await decryptIdentity(signer, ciphertext, nonce);
|
|
81
96
|
storeKeys(storage, accountAddress, keys);
|
|
97
|
+
storeAccountAddress(storage, accountAddress);
|
|
82
98
|
return {
|
|
83
99
|
accountAddress,
|
|
84
100
|
keys,
|
|
@@ -87,13 +103,77 @@ export async function restoreKeys(
|
|
|
87
103
|
throw new Error(`Error fetching identity ${res.status}`);
|
|
88
104
|
}
|
|
89
105
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
106
|
+
const getAndDeploySmartAccount = async (walletClient: WalletClient, rpcUrl: string, chain: Chain, storage: Storage) => {
|
|
107
|
+
const accountAddressFromStorage = loadAccountAddress(storage) as Hex;
|
|
108
|
+
const smartAccountParams: SmartAccountParams = {
|
|
109
|
+
owner: walletClient,
|
|
110
|
+
rpcUrl,
|
|
111
|
+
chain,
|
|
112
|
+
};
|
|
113
|
+
if (accountAddressFromStorage) {
|
|
114
|
+
smartAccountParams.address = accountAddressFromStorage;
|
|
115
|
+
}
|
|
116
|
+
const smartAccountWalletClient = await getSmartAccountWalletClient(smartAccountParams);
|
|
117
|
+
if (!smartAccountWalletClient.account) {
|
|
118
|
+
throw new Error('Smart account wallet client not found');
|
|
119
|
+
}
|
|
120
|
+
console.log('smartAccountWalletClient', smartAccountWalletClient);
|
|
121
|
+
console.log('address', smartAccountWalletClient.account.address);
|
|
122
|
+
console.log('is deployed', await isSmartAccountDeployed(smartAccountWalletClient));
|
|
123
|
+
// This will prompt the user to sign a user operation to update the smart account
|
|
124
|
+
if (await smartAccountNeedsUpdate(smartAccountWalletClient, chain, rpcUrl)) {
|
|
125
|
+
console.log('updating smart account');
|
|
126
|
+
await updateLegacySmartAccount(smartAccountWalletClient, chain, rpcUrl);
|
|
127
|
+
smartAccountParams.address = smartAccountWalletClient.account.address;
|
|
128
|
+
// Create the client again to ensure we have the 7579 config now
|
|
129
|
+
return getSmartAccountWalletClient(smartAccountParams);
|
|
130
|
+
}
|
|
131
|
+
if (!(await isSmartAccountDeployed(smartAccountWalletClient))) {
|
|
132
|
+
// TODO: remove this once we manage to get counterfactual signatures working
|
|
133
|
+
console.log('sending dummy userOp to deploy smart account');
|
|
134
|
+
if (!walletClient.account) {
|
|
135
|
+
throw new Error('Wallet client account not found');
|
|
136
|
+
}
|
|
137
|
+
const tx = await smartAccountWalletClient.sendUserOperation({
|
|
138
|
+
calls: [{ to: walletClient.account.address, data: '0x' }],
|
|
139
|
+
account: smartAccountWalletClient.account,
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
console.log('tx', tx);
|
|
143
|
+
const receipt = await smartAccountWalletClient.waitForUserOperationReceipt({ hash: tx });
|
|
144
|
+
console.log('receipt', receipt);
|
|
145
|
+
}
|
|
146
|
+
return smartAccountWalletClient;
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
export async function login({
|
|
150
|
+
walletClient,
|
|
151
|
+
signer,
|
|
152
|
+
syncServerUri,
|
|
153
|
+
storage,
|
|
154
|
+
identityToken,
|
|
155
|
+
rpcUrl,
|
|
156
|
+
chain,
|
|
157
|
+
}: {
|
|
158
|
+
walletClient: WalletClient;
|
|
159
|
+
signer: Signer;
|
|
160
|
+
syncServerUri: string;
|
|
161
|
+
storage: Storage;
|
|
162
|
+
identityToken: string;
|
|
163
|
+
rpcUrl: string;
|
|
164
|
+
chain: Chain;
|
|
165
|
+
}) {
|
|
166
|
+
let smartAccountWalletClient: SmartAccountClient;
|
|
167
|
+
try {
|
|
168
|
+
smartAccountWalletClient = await getAndDeploySmartAccount(walletClient, rpcUrl, chain, storage);
|
|
169
|
+
} catch (error) {
|
|
170
|
+
wipeAccountAddress(storage);
|
|
171
|
+
smartAccountWalletClient = await getAndDeploySmartAccount(walletClient, rpcUrl, chain, storage);
|
|
172
|
+
}
|
|
173
|
+
if (!smartAccountWalletClient.account) {
|
|
174
|
+
throw new Error('Smart account wallet client account not found');
|
|
175
|
+
}
|
|
176
|
+
const accountAddress = smartAccountWalletClient.account.address;
|
|
97
177
|
// const keys = loadKeys(storage, accountAddress);
|
|
98
178
|
let authData: {
|
|
99
179
|
accountAddress: Address;
|
|
@@ -101,7 +181,15 @@ export async function login(
|
|
|
101
181
|
};
|
|
102
182
|
const exists = await identityExists(accountAddress, syncServerUri);
|
|
103
183
|
if (!exists) {
|
|
104
|
-
authData = await signup(
|
|
184
|
+
authData = await signup(
|
|
185
|
+
signer,
|
|
186
|
+
walletClient,
|
|
187
|
+
smartAccountWalletClient,
|
|
188
|
+
accountAddress,
|
|
189
|
+
syncServerUri,
|
|
190
|
+
storage,
|
|
191
|
+
identityToken,
|
|
192
|
+
);
|
|
105
193
|
} else {
|
|
106
194
|
authData = await restoreKeys(signer, accountAddress, syncServerUri, storage, identityToken);
|
|
107
195
|
}
|
|
@@ -52,13 +52,16 @@ export const parseCallbackParams = ({
|
|
|
52
52
|
return Effect.succeed({
|
|
53
53
|
appIdentityAddress: data.appIdentityAddress,
|
|
54
54
|
appIdentityAddressPrivateKey: data.appIdentityAddressPrivateKey,
|
|
55
|
+
accountAddress: data.accountAddress,
|
|
56
|
+
permissionId: data.permissionId,
|
|
55
57
|
signaturePublicKey: data.signaturePublicKey,
|
|
56
58
|
signaturePrivateKey: data.signaturePrivateKey,
|
|
57
59
|
encryptionPublicKey: data.encryptionPublicKey,
|
|
58
60
|
encryptionPrivateKey: data.encryptionPrivateKey,
|
|
59
61
|
sessionToken: data.sessionToken,
|
|
60
62
|
sessionTokenExpires: new Date(data.sessionTokenExpires),
|
|
61
|
-
|
|
63
|
+
privateSpaces: data.privateSpaces,
|
|
64
|
+
publicSpaces: data.publicSpaces,
|
|
62
65
|
});
|
|
63
66
|
} catch (error) {
|
|
64
67
|
console.error(error);
|