@pomade/core 0.0.4
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/LICENSE +21 -0
- package/README.md +45 -0
- package/dist/client.d.ts +94 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +292 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/message.d.ts +255 -0
- package/dist/message.d.ts.map +1 -0
- package/dist/message.js +128 -0
- package/dist/message.js.map +1 -0
- package/dist/rpc.d.ts +75 -0
- package/dist/rpc.d.ts.map +1 -0
- package/dist/rpc.js +184 -0
- package/dist/rpc.js.map +1 -0
- package/dist/schema.d.ts +245 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +194 -0
- package/dist/schema.js.map +1 -0
- package/dist/signer.d.ts +228 -0
- package/dist/signer.d.ts.map +1 -0
- package/dist/signer.js +510 -0
- package/dist/signer.js.map +1 -0
- package/dist/storage.d.ts +21 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +21 -0
- package/dist/storage.js.map +1 -0
- package/dist/util.d.ts +55 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +103 -0
- package/dist/util.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import * as z from "zod";
|
|
2
|
+
import type { Maybe } from "@welshman/lib";
|
|
3
|
+
import { Schema, Method } from "./schema.js";
|
|
4
|
+
type DefineMessage<M, P> = {
|
|
5
|
+
method: M;
|
|
6
|
+
payload: z.infer<P>;
|
|
7
|
+
};
|
|
8
|
+
export type ChallengeRequest = DefineMessage<Method.ChallengeRequest, typeof Schema.challengeRequest>;
|
|
9
|
+
export type EcdhRequest = DefineMessage<Method.EcdhRequest, typeof Schema.ecdhRequest>;
|
|
10
|
+
export type EcdhResult = DefineMessage<Method.EcdhResult, typeof Schema.ecdhResult>;
|
|
11
|
+
export type LoginStart = DefineMessage<Method.LoginStart, typeof Schema.loginStart>;
|
|
12
|
+
export type LoginOptions = DefineMessage<Method.LoginOptions, typeof Schema.loginOptions>;
|
|
13
|
+
export type LoginSelect = DefineMessage<Method.LoginSelect, typeof Schema.loginSelect>;
|
|
14
|
+
export type LoginResult = DefineMessage<Method.LoginResult, typeof Schema.loginResult>;
|
|
15
|
+
export type RecoveryStart = DefineMessage<Method.RecoveryStart, typeof Schema.recoveryStart>;
|
|
16
|
+
export type RecoveryOptions = DefineMessage<Method.RecoveryOptions, typeof Schema.recoveryOptions>;
|
|
17
|
+
export type RecoverySelect = DefineMessage<Method.RecoverySelect, typeof Schema.recoverySelect>;
|
|
18
|
+
export type RecoveryResult = DefineMessage<Method.RecoveryResult, typeof Schema.recoveryResult>;
|
|
19
|
+
export type RecoverySetup = DefineMessage<Method.RecoverySetup, typeof Schema.recoverySetup>;
|
|
20
|
+
export type RecoverySetupResult = DefineMessage<Method.RecoverySetupResult, typeof Schema.recoverySetupResult>;
|
|
21
|
+
export type RegisterRequest = DefineMessage<Method.RegisterRequest, typeof Schema.registerRequest>;
|
|
22
|
+
export type RegisterResult = DefineMessage<Method.RegisterResult, typeof Schema.registerResult>;
|
|
23
|
+
export type SessionDelete = DefineMessage<Method.SessionDelete, typeof Schema.sessionDelete>;
|
|
24
|
+
export type SessionDeleteResult = DefineMessage<Method.SessionDeleteResult, typeof Schema.sessionDeleteResult>;
|
|
25
|
+
export type SessionList = DefineMessage<Method.SessionList, typeof Schema.sessionList>;
|
|
26
|
+
export type SessionListResult = DefineMessage<Method.SessionListResult, typeof Schema.sessionListResult>;
|
|
27
|
+
export type SignRequest = DefineMessage<Method.SignRequest, typeof Schema.signRequest>;
|
|
28
|
+
export type SignResult = DefineMessage<Method.SignResult, typeof Schema.signResult>;
|
|
29
|
+
export type Message = ChallengeRequest | EcdhRequest | EcdhResult | LoginStart | LoginOptions | LoginSelect | LoginResult | RecoveryStart | RecoveryOptions | RecoverySelect | RecoveryResult | RecoverySetup | RecoverySetupResult | RegisterRequest | RegisterResult | SessionDelete | SessionDeleteResult | SessionList | SessionListResult | SignRequest | SignResult;
|
|
30
|
+
export declare function makeChallengeRequest(payload: ChallengeRequest["payload"]): ChallengeRequest;
|
|
31
|
+
export declare function makeEcdhRequest(payload: EcdhRequest["payload"]): EcdhRequest;
|
|
32
|
+
export declare function makeEcdhResult(payload: EcdhResult["payload"]): EcdhResult;
|
|
33
|
+
export declare function makeLoginStart(payload: LoginStart["payload"]): LoginStart;
|
|
34
|
+
export declare function makeLoginOptions(payload: LoginOptions["payload"]): LoginOptions;
|
|
35
|
+
export declare function makeLoginSelect(payload: LoginSelect["payload"]): LoginSelect;
|
|
36
|
+
export declare function makeLoginResult(payload: LoginResult["payload"]): LoginResult;
|
|
37
|
+
export declare function makeRecoveryStart(payload: RecoveryStart["payload"]): RecoveryStart;
|
|
38
|
+
export declare function makeRecoveryOptions(payload: RecoveryOptions["payload"]): RecoveryOptions;
|
|
39
|
+
export declare function makeRecoverySelect(payload: RecoverySelect["payload"]): RecoverySelect;
|
|
40
|
+
export declare function makeRecoveryResult(payload: RecoveryResult["payload"]): RecoveryResult;
|
|
41
|
+
export declare function makeRecoverySetup(payload: RecoverySetup["payload"]): RecoverySetup;
|
|
42
|
+
export declare function makeRecoverySetupResult(payload: RecoverySetupResult["payload"]): RecoverySetupResult;
|
|
43
|
+
export declare function makeRegisterRequest(payload: RegisterRequest["payload"]): RegisterRequest;
|
|
44
|
+
export declare function makeRegisterResult(payload: RegisterResult["payload"]): RegisterResult;
|
|
45
|
+
export declare function makeSessionDelete(payload: SessionDelete["payload"]): SessionDelete;
|
|
46
|
+
export declare function makeSessionDeleteResult(payload: SessionDeleteResult["payload"]): SessionDeleteResult;
|
|
47
|
+
export declare function makeSessionList(payload: SessionList["payload"]): SessionList;
|
|
48
|
+
export declare function makeSessionListResult(payload: SessionListResult["payload"]): SessionListResult;
|
|
49
|
+
export declare function makeSignRequest(payload: SignRequest["payload"]): SignRequest;
|
|
50
|
+
export declare function makeSignResult(payload: SignResult["payload"]): SignResult;
|
|
51
|
+
export declare function getMessageSchema(method: Method): z.ZodObject<{
|
|
52
|
+
idx: z.ZodNumber;
|
|
53
|
+
members: z.ZodArray<z.ZodNumber>;
|
|
54
|
+
ecdh_pk: z.ZodString;
|
|
55
|
+
}, z.core.$strip> | z.ZodObject<{
|
|
56
|
+
result: z.ZodOptional<z.ZodObject<{
|
|
57
|
+
idx: z.ZodNumber;
|
|
58
|
+
keyshare: z.ZodString;
|
|
59
|
+
members: z.ZodArray<z.ZodNumber>;
|
|
60
|
+
ecdh_pk: z.ZodString;
|
|
61
|
+
}, z.core.$strip>>;
|
|
62
|
+
ok: z.ZodBoolean;
|
|
63
|
+
message: z.ZodString;
|
|
64
|
+
prev: z.ZodString;
|
|
65
|
+
}, z.core.$strip> | z.ZodObject<{
|
|
66
|
+
email_hash: z.ZodString;
|
|
67
|
+
}, z.core.$strip> | z.ZodObject<{
|
|
68
|
+
auth: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
69
|
+
email: z.ZodString;
|
|
70
|
+
otp: z.ZodString;
|
|
71
|
+
}, z.core.$strip>]>;
|
|
72
|
+
}, z.core.$strip> | z.ZodObject<{
|
|
73
|
+
items: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
74
|
+
pubkey: z.ZodString;
|
|
75
|
+
client: z.ZodString;
|
|
76
|
+
created_at: z.ZodInt;
|
|
77
|
+
last_activity: z.ZodInt;
|
|
78
|
+
threshold: z.ZodInt;
|
|
79
|
+
total: z.ZodNumber;
|
|
80
|
+
idx: z.ZodNumber;
|
|
81
|
+
email: z.ZodOptional<z.ZodString>;
|
|
82
|
+
}, z.core.$strip>>>;
|
|
83
|
+
ok: z.ZodBoolean;
|
|
84
|
+
message: z.ZodString;
|
|
85
|
+
prev: z.ZodString;
|
|
86
|
+
}, z.core.$strip> | z.ZodObject<{
|
|
87
|
+
client: z.ZodString;
|
|
88
|
+
}, z.core.$strip> | z.ZodObject<{
|
|
89
|
+
group: z.ZodOptional<z.ZodObject<{
|
|
90
|
+
commits: z.ZodArray<z.ZodObject<{
|
|
91
|
+
idx: z.ZodNumber;
|
|
92
|
+
pubkey: z.ZodString;
|
|
93
|
+
hidden_pn: z.ZodString;
|
|
94
|
+
binder_pn: z.ZodString;
|
|
95
|
+
}, z.core.$strip>>;
|
|
96
|
+
group_pk: z.ZodString;
|
|
97
|
+
threshold: z.ZodNumber;
|
|
98
|
+
}, z.core.$strip>>;
|
|
99
|
+
ok: z.ZodBoolean;
|
|
100
|
+
message: z.ZodString;
|
|
101
|
+
prev: z.ZodString;
|
|
102
|
+
}, z.core.$strip> | z.ZodObject<{
|
|
103
|
+
auth: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
104
|
+
email: z.ZodString;
|
|
105
|
+
otp: z.ZodString;
|
|
106
|
+
}, z.core.$strip>]>;
|
|
107
|
+
}, z.core.$strip> | z.ZodObject<{
|
|
108
|
+
items: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
109
|
+
pubkey: z.ZodString;
|
|
110
|
+
client: z.ZodString;
|
|
111
|
+
created_at: z.ZodInt;
|
|
112
|
+
last_activity: z.ZodInt;
|
|
113
|
+
threshold: z.ZodInt;
|
|
114
|
+
total: z.ZodNumber;
|
|
115
|
+
idx: z.ZodNumber;
|
|
116
|
+
email: z.ZodOptional<z.ZodString>;
|
|
117
|
+
}, z.core.$strip>>>;
|
|
118
|
+
ok: z.ZodBoolean;
|
|
119
|
+
message: z.ZodString;
|
|
120
|
+
prev: z.ZodString;
|
|
121
|
+
}, z.core.$strip> | z.ZodObject<{
|
|
122
|
+
client: z.ZodString;
|
|
123
|
+
}, z.core.$strip> | z.ZodObject<{
|
|
124
|
+
share: z.ZodOptional<z.ZodObject<{
|
|
125
|
+
idx: z.ZodNumber;
|
|
126
|
+
binder_sn: z.ZodString;
|
|
127
|
+
hidden_sn: z.ZodString;
|
|
128
|
+
seckey: z.ZodString;
|
|
129
|
+
}, z.core.$strip>>;
|
|
130
|
+
group: z.ZodOptional<z.ZodObject<{
|
|
131
|
+
commits: z.ZodArray<z.ZodObject<{
|
|
132
|
+
idx: z.ZodNumber;
|
|
133
|
+
pubkey: z.ZodString;
|
|
134
|
+
hidden_pn: z.ZodString;
|
|
135
|
+
binder_pn: z.ZodString;
|
|
136
|
+
}, z.core.$strip>>;
|
|
137
|
+
group_pk: z.ZodString;
|
|
138
|
+
threshold: z.ZodNumber;
|
|
139
|
+
}, z.core.$strip>>;
|
|
140
|
+
ok: z.ZodBoolean;
|
|
141
|
+
message: z.ZodString;
|
|
142
|
+
prev: z.ZodString;
|
|
143
|
+
}, z.core.$strip> | z.ZodObject<{
|
|
144
|
+
email: z.ZodString;
|
|
145
|
+
password_hash: z.ZodString;
|
|
146
|
+
}, z.core.$strip> | z.ZodObject<{
|
|
147
|
+
ok: z.ZodBoolean;
|
|
148
|
+
message: z.ZodString;
|
|
149
|
+
prev: z.ZodString;
|
|
150
|
+
}, z.core.$strip> | z.ZodObject<{
|
|
151
|
+
share: z.ZodObject<{
|
|
152
|
+
idx: z.ZodNumber;
|
|
153
|
+
binder_sn: z.ZodString;
|
|
154
|
+
hidden_sn: z.ZodString;
|
|
155
|
+
seckey: z.ZodString;
|
|
156
|
+
}, z.core.$strip>;
|
|
157
|
+
group: z.ZodObject<{
|
|
158
|
+
commits: z.ZodArray<z.ZodObject<{
|
|
159
|
+
idx: z.ZodNumber;
|
|
160
|
+
pubkey: z.ZodString;
|
|
161
|
+
hidden_pn: z.ZodString;
|
|
162
|
+
binder_pn: z.ZodString;
|
|
163
|
+
}, z.core.$strip>>;
|
|
164
|
+
group_pk: z.ZodString;
|
|
165
|
+
threshold: z.ZodNumber;
|
|
166
|
+
}, z.core.$strip>;
|
|
167
|
+
recovery: z.ZodBoolean;
|
|
168
|
+
}, z.core.$strip> | z.ZodObject<{
|
|
169
|
+
ok: z.ZodBoolean;
|
|
170
|
+
message: z.ZodString;
|
|
171
|
+
prev: z.ZodString;
|
|
172
|
+
}, z.core.$strip> | z.ZodObject<{
|
|
173
|
+
client: z.ZodString;
|
|
174
|
+
auth: z.ZodObject<{
|
|
175
|
+
sig: z.ZodString;
|
|
176
|
+
id: z.ZodString;
|
|
177
|
+
pubkey: z.ZodString;
|
|
178
|
+
kind: z.ZodInt;
|
|
179
|
+
tags: z.ZodArray<z.ZodArray<z.ZodString>>;
|
|
180
|
+
content: z.ZodString;
|
|
181
|
+
created_at: z.ZodInt;
|
|
182
|
+
}, z.core.$strip>;
|
|
183
|
+
}, z.core.$strip> | z.ZodObject<{
|
|
184
|
+
ok: z.ZodBoolean;
|
|
185
|
+
message: z.ZodString;
|
|
186
|
+
prev: z.ZodString;
|
|
187
|
+
}, z.core.$strip> | z.ZodObject<{
|
|
188
|
+
auth: z.ZodObject<{
|
|
189
|
+
sig: z.ZodString;
|
|
190
|
+
id: z.ZodString;
|
|
191
|
+
pubkey: z.ZodString;
|
|
192
|
+
kind: z.ZodInt;
|
|
193
|
+
tags: z.ZodArray<z.ZodArray<z.ZodString>>;
|
|
194
|
+
content: z.ZodString;
|
|
195
|
+
created_at: z.ZodInt;
|
|
196
|
+
}, z.core.$strip>;
|
|
197
|
+
}, z.core.$strip> | z.ZodObject<{
|
|
198
|
+
items: z.ZodArray<z.ZodObject<{
|
|
199
|
+
pubkey: z.ZodString;
|
|
200
|
+
client: z.ZodString;
|
|
201
|
+
created_at: z.ZodInt;
|
|
202
|
+
last_activity: z.ZodInt;
|
|
203
|
+
threshold: z.ZodInt;
|
|
204
|
+
total: z.ZodNumber;
|
|
205
|
+
idx: z.ZodNumber;
|
|
206
|
+
email: z.ZodOptional<z.ZodString>;
|
|
207
|
+
}, z.core.$strip>>;
|
|
208
|
+
ok: z.ZodBoolean;
|
|
209
|
+
message: z.ZodString;
|
|
210
|
+
prev: z.ZodString;
|
|
211
|
+
}, z.core.$strip> | z.ZodObject<{
|
|
212
|
+
request: z.ZodObject<{
|
|
213
|
+
content: z.ZodNullable<z.ZodString>;
|
|
214
|
+
hashes: z.ZodArray<z.ZodTuple<[z.ZodString], z.ZodString>>;
|
|
215
|
+
members: z.ZodArray<z.ZodNumber>;
|
|
216
|
+
stamp: z.ZodNumber;
|
|
217
|
+
type: z.ZodString;
|
|
218
|
+
gid: z.ZodString;
|
|
219
|
+
sid: z.ZodString;
|
|
220
|
+
}, z.core.$strip>;
|
|
221
|
+
}, z.core.$strip> | z.ZodObject<{
|
|
222
|
+
result: z.ZodOptional<z.ZodObject<{
|
|
223
|
+
idx: z.ZodNumber;
|
|
224
|
+
psigs: z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodString], null>>;
|
|
225
|
+
pubkey: z.ZodString;
|
|
226
|
+
sid: z.ZodString;
|
|
227
|
+
}, z.core.$strip>>;
|
|
228
|
+
ok: z.ZodBoolean;
|
|
229
|
+
message: z.ZodString;
|
|
230
|
+
prev: z.ZodString;
|
|
231
|
+
}, z.core.$strip>;
|
|
232
|
+
export declare function parseMessage(s: string): Maybe<Message>;
|
|
233
|
+
export declare const isChallengeRequest: (m: Message) => m is ChallengeRequest;
|
|
234
|
+
export declare const isEcdhRequest: (m: Message) => m is EcdhRequest;
|
|
235
|
+
export declare const isEcdhResult: (m: Message) => m is EcdhResult;
|
|
236
|
+
export declare const isLoginStart: (m: Message) => m is LoginStart;
|
|
237
|
+
export declare const isLoginOptions: (m: Message) => m is LoginOptions;
|
|
238
|
+
export declare const isLoginSelect: (m: Message) => m is LoginSelect;
|
|
239
|
+
export declare const isLoginResult: (m: Message) => m is LoginResult;
|
|
240
|
+
export declare const isRecoveryStart: (m: Message) => m is RecoveryStart;
|
|
241
|
+
export declare const isRecoveryOptions: (m: Message) => m is RecoveryOptions;
|
|
242
|
+
export declare const isRecoverySelect: (m: Message) => m is RecoverySelect;
|
|
243
|
+
export declare const isRecoveryResult: (m: Message) => m is RecoveryResult;
|
|
244
|
+
export declare const isRecoverySetup: (m: Message) => m is RecoverySetup;
|
|
245
|
+
export declare const isRecoverySetupResult: (m: Message) => m is RecoverySetupResult;
|
|
246
|
+
export declare const isRegisterRequest: (m: Message) => m is RegisterRequest;
|
|
247
|
+
export declare const isRegisterResult: (m: Message) => m is RegisterResult;
|
|
248
|
+
export declare const isSessionDelete: (m: Message) => m is SessionDelete;
|
|
249
|
+
export declare const isSessionDeleteResult: (m: Message) => m is SessionDeleteResult;
|
|
250
|
+
export declare const isSessionList: (m: Message) => m is SessionList;
|
|
251
|
+
export declare const isSessionListResult: (m: Message) => m is SessionListResult;
|
|
252
|
+
export declare const isSignRequest: (m: Message) => m is SignRequest;
|
|
253
|
+
export declare const isSignResult: (m: Message) => m is SignResult;
|
|
254
|
+
export {};
|
|
255
|
+
//# sourceMappingURL=message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,eAAe,CAAA;AACxC,OAAO,EAAC,MAAM,EAAE,MAAM,EAAC,MAAM,aAAa,CAAA;AAI1C,KAAK,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI;IAAC,MAAM,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;CAAC,CAAA;AAE3D,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAC1C,MAAM,CAAC,gBAAgB,EACvB,OAAO,MAAM,CAAC,gBAAgB,CAC/B,CAAA;AACD,MAAM,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,MAAM,CAAC,WAAW,CAAC,CAAA;AACtF,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,MAAM,CAAC,UAAU,CAAC,CAAA;AACnF,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,MAAM,CAAC,UAAU,CAAC,CAAA;AACnF,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,MAAM,CAAC,YAAY,CAAC,CAAA;AACzF,MAAM,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,MAAM,CAAC,WAAW,CAAC,CAAA;AACtF,MAAM,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,MAAM,CAAC,WAAW,CAAC,CAAA;AACtF,MAAM,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,MAAM,CAAC,aAAa,CAAC,CAAA;AAC5F,MAAM,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,MAAM,CAAC,eAAe,CAAC,CAAA;AAClG,MAAM,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,MAAM,CAAC,cAAc,CAAC,CAAA;AAC/F,MAAM,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,MAAM,CAAC,cAAc,CAAC,CAAA;AAC/F,MAAM,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,MAAM,CAAC,aAAa,CAAC,CAAA;AAC5F,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAC7C,MAAM,CAAC,mBAAmB,EAC1B,OAAO,MAAM,CAAC,mBAAmB,CAClC,CAAA;AACD,MAAM,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,MAAM,CAAC,eAAe,CAAC,CAAA;AAClG,MAAM,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,MAAM,CAAC,cAAc,CAAC,CAAA;AAC/F,MAAM,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,MAAM,CAAC,aAAa,CAAC,CAAA;AAC5F,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAC7C,MAAM,CAAC,mBAAmB,EAC1B,OAAO,MAAM,CAAC,mBAAmB,CAClC,CAAA;AACD,MAAM,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,MAAM,CAAC,WAAW,CAAC,CAAA;AACtF,MAAM,MAAM,iBAAiB,GAAG,aAAa,CAC3C,MAAM,CAAC,iBAAiB,EACxB,OAAO,MAAM,CAAC,iBAAiB,CAChC,CAAA;AACD,MAAM,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,MAAM,CAAC,WAAW,CAAC,CAAA;AACtF,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,MAAM,CAAC,UAAU,CAAC,CAAA;AAEnF,MAAM,MAAM,OAAO,GACf,gBAAgB,GAChB,WAAW,GACX,UAAU,GACV,UAAU,GACV,YAAY,GACZ,WAAW,GACX,WAAW,GACX,aAAa,GACb,eAAe,GACf,cAAc,GACd,cAAc,GACd,aAAa,GACb,mBAAmB,GACnB,eAAe,GACf,cAAc,GACd,aAAa,GACb,mBAAmB,GACnB,WAAW,GACX,iBAAiB,GACjB,WAAW,GACX,UAAU,CAAA;AAId,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,GAAG,gBAAgB,CAE3F;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,WAAW,CAE5E;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,UAAU,CAEzE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,UAAU,CAEzE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,YAAY,CAE/E;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,WAAW,CAE5E;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,WAAW,CAE5E;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,aAAa,CAElF;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,GAAG,eAAe,CAExF;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,cAAc,CAErF;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,cAAc,CAErF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,aAAa,CAKlF;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,GACtC,mBAAmB,CAKrB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,GAAG,eAAe,CAExF;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,cAAc,CAErF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,aAAa,CAElF;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,GACtC,mBAAmB,CAErB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,WAAW,CAE5E;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC,GAAG,iBAAiB,CAE9F;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,WAAW,CAE5E;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,UAAU,CAEzE;AAID,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAwB9C;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAOtD;AAID,eAAO,MAAM,kBAAkB,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,gBACf,CAAA;AACtC,eAAO,MAAM,aAAa,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,WAA8C,CAAA;AAC9F,eAAO,MAAM,YAAY,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,UAA4C,CAAA;AAC3F,eAAO,MAAM,YAAY,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,UAA4C,CAAA;AAC3F,eAAO,MAAM,cAAc,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,YAAgD,CAAA;AACjG,eAAO,MAAM,aAAa,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,WAA8C,CAAA;AAC9F,eAAO,MAAM,aAAa,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,WAA8C,CAAA;AAC9F,eAAO,MAAM,eAAe,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,aAAkD,CAAA;AACpG,eAAO,MAAM,iBAAiB,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,eACf,CAAA;AACrC,eAAO,MAAM,gBAAgB,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,cACf,CAAA;AACpC,eAAO,MAAM,gBAAgB,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,cACf,CAAA;AACpC,eAAO,MAAM,eAAe,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,aAAkD,CAAA;AACpG,eAAO,MAAM,qBAAqB,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,mBACf,CAAA;AACzC,eAAO,MAAM,iBAAiB,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,eACf,CAAA;AACrC,eAAO,MAAM,gBAAgB,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,cACf,CAAA;AACpC,eAAO,MAAM,eAAe,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,aAAkD,CAAA;AACpG,eAAO,MAAM,qBAAqB,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,mBACf,CAAA;AACzC,eAAO,MAAM,aAAa,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,WAA8C,CAAA;AAC9F,eAAO,MAAM,mBAAmB,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,iBACf,CAAA;AACvC,eAAO,MAAM,aAAa,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,WAA8C,CAAA;AAC9F,eAAO,MAAM,YAAY,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,UAA4C,CAAA"}
|
package/dist/message.js
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { parseJson, switcher } from "@welshman/lib";
|
|
2
|
+
import { Schema, Method } from "./schema.js";
|
|
3
|
+
// Construction
|
|
4
|
+
export function makeChallengeRequest(payload) {
|
|
5
|
+
return { method: Method.ChallengeRequest, payload: Schema.challengeRequest.parse(payload) };
|
|
6
|
+
}
|
|
7
|
+
export function makeEcdhRequest(payload) {
|
|
8
|
+
return { method: Method.EcdhRequest, payload: Schema.ecdhRequest.parse(payload) };
|
|
9
|
+
}
|
|
10
|
+
export function makeEcdhResult(payload) {
|
|
11
|
+
return { method: Method.EcdhResult, payload: Schema.ecdhResult.parse(payload) };
|
|
12
|
+
}
|
|
13
|
+
export function makeLoginStart(payload) {
|
|
14
|
+
return { method: Method.LoginStart, payload: Schema.loginStart.parse(payload) };
|
|
15
|
+
}
|
|
16
|
+
export function makeLoginOptions(payload) {
|
|
17
|
+
return { method: Method.LoginOptions, payload: Schema.loginOptions.parse(payload) };
|
|
18
|
+
}
|
|
19
|
+
export function makeLoginSelect(payload) {
|
|
20
|
+
return { method: Method.LoginSelect, payload: Schema.loginSelect.parse(payload) };
|
|
21
|
+
}
|
|
22
|
+
export function makeLoginResult(payload) {
|
|
23
|
+
return { method: Method.LoginResult, payload: Schema.loginResult.parse(payload) };
|
|
24
|
+
}
|
|
25
|
+
export function makeRecoveryStart(payload) {
|
|
26
|
+
return { method: Method.RecoveryStart, payload: Schema.recoveryStart.parse(payload) };
|
|
27
|
+
}
|
|
28
|
+
export function makeRecoveryOptions(payload) {
|
|
29
|
+
return { method: Method.RecoveryOptions, payload: Schema.recoveryOptions.parse(payload) };
|
|
30
|
+
}
|
|
31
|
+
export function makeRecoverySelect(payload) {
|
|
32
|
+
return { method: Method.RecoverySelect, payload: Schema.recoverySelect.parse(payload) };
|
|
33
|
+
}
|
|
34
|
+
export function makeRecoveryResult(payload) {
|
|
35
|
+
return { method: Method.RecoveryResult, payload: Schema.recoveryResult.parse(payload) };
|
|
36
|
+
}
|
|
37
|
+
export function makeRecoverySetup(payload) {
|
|
38
|
+
return {
|
|
39
|
+
method: Method.RecoverySetup,
|
|
40
|
+
payload: Schema.recoverySetup.parse(payload),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export function makeRecoverySetupResult(payload) {
|
|
44
|
+
return {
|
|
45
|
+
method: Method.RecoverySetupResult,
|
|
46
|
+
payload: Schema.recoverySetupResult.parse(payload),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
export function makeRegisterRequest(payload) {
|
|
50
|
+
return { method: Method.RegisterRequest, payload: Schema.registerRequest.parse(payload) };
|
|
51
|
+
}
|
|
52
|
+
export function makeRegisterResult(payload) {
|
|
53
|
+
return { method: Method.RegisterResult, payload: Schema.registerResult.parse(payload) };
|
|
54
|
+
}
|
|
55
|
+
export function makeSessionDelete(payload) {
|
|
56
|
+
return { method: Method.SessionDelete, payload: Schema.sessionDelete.parse(payload) };
|
|
57
|
+
}
|
|
58
|
+
export function makeSessionDeleteResult(payload) {
|
|
59
|
+
return { method: Method.SessionDeleteResult, payload: Schema.sessionDeleteResult.parse(payload) };
|
|
60
|
+
}
|
|
61
|
+
export function makeSessionList(payload) {
|
|
62
|
+
return { method: Method.SessionList, payload: Schema.sessionList.parse(payload) };
|
|
63
|
+
}
|
|
64
|
+
export function makeSessionListResult(payload) {
|
|
65
|
+
return { method: Method.SessionListResult, payload: Schema.sessionListResult.parse(payload) };
|
|
66
|
+
}
|
|
67
|
+
export function makeSignRequest(payload) {
|
|
68
|
+
return { method: Method.SignRequest, payload: Schema.signRequest.parse(payload) };
|
|
69
|
+
}
|
|
70
|
+
export function makeSignResult(payload) {
|
|
71
|
+
return { method: Method.SignResult, payload: Schema.signResult.parse(payload) };
|
|
72
|
+
}
|
|
73
|
+
// Parsing
|
|
74
|
+
export function getMessageSchema(method) {
|
|
75
|
+
return switcher(method, {
|
|
76
|
+
[Method.ChallengeRequest]: Schema.challengeRequest,
|
|
77
|
+
[Method.EcdhRequest]: Schema.ecdhRequest,
|
|
78
|
+
[Method.EcdhResult]: Schema.ecdhResult,
|
|
79
|
+
[Method.LoginStart]: Schema.loginStart,
|
|
80
|
+
[Method.LoginOptions]: Schema.loginOptions,
|
|
81
|
+
[Method.LoginSelect]: Schema.loginSelect,
|
|
82
|
+
[Method.LoginResult]: Schema.loginResult,
|
|
83
|
+
[Method.RecoveryStart]: Schema.recoveryStart,
|
|
84
|
+
[Method.RecoveryOptions]: Schema.recoveryOptions,
|
|
85
|
+
[Method.RecoverySelect]: Schema.recoverySelect,
|
|
86
|
+
[Method.RecoveryResult]: Schema.recoveryResult,
|
|
87
|
+
[Method.RecoverySetup]: Schema.recoverySetup,
|
|
88
|
+
[Method.RecoverySetupResult]: Schema.recoverySetupResult,
|
|
89
|
+
[Method.RegisterRequest]: Schema.registerRequest,
|
|
90
|
+
[Method.RegisterResult]: Schema.registerResult,
|
|
91
|
+
[Method.SessionDelete]: Schema.sessionDelete,
|
|
92
|
+
[Method.SessionDeleteResult]: Schema.sessionDeleteResult,
|
|
93
|
+
[Method.SessionList]: Schema.sessionList,
|
|
94
|
+
[Method.SessionListResult]: Schema.sessionListResult,
|
|
95
|
+
[Method.SignRequest]: Schema.signRequest,
|
|
96
|
+
[Method.SignResult]: Schema.signResult,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
export function parseMessage(s) {
|
|
100
|
+
const message = parseJson(s);
|
|
101
|
+
const result = getMessageSchema(message?.method)?.safeParse(message.payload);
|
|
102
|
+
if (result?.success) {
|
|
103
|
+
return { method: message.method, payload: result.data };
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Type guards
|
|
107
|
+
export const isChallengeRequest = (m) => m.method === Method.ChallengeRequest;
|
|
108
|
+
export const isEcdhRequest = (m) => m.method === Method.EcdhRequest;
|
|
109
|
+
export const isEcdhResult = (m) => m.method === Method.EcdhResult;
|
|
110
|
+
export const isLoginStart = (m) => m.method === Method.LoginStart;
|
|
111
|
+
export const isLoginOptions = (m) => m.method === Method.LoginOptions;
|
|
112
|
+
export const isLoginSelect = (m) => m.method === Method.LoginSelect;
|
|
113
|
+
export const isLoginResult = (m) => m.method === Method.LoginResult;
|
|
114
|
+
export const isRecoveryStart = (m) => m.method === Method.RecoveryStart;
|
|
115
|
+
export const isRecoveryOptions = (m) => m.method === Method.RecoveryOptions;
|
|
116
|
+
export const isRecoverySelect = (m) => m.method === Method.RecoverySelect;
|
|
117
|
+
export const isRecoveryResult = (m) => m.method === Method.RecoveryResult;
|
|
118
|
+
export const isRecoverySetup = (m) => m.method === Method.RecoverySetup;
|
|
119
|
+
export const isRecoverySetupResult = (m) => m.method === Method.RecoverySetupResult;
|
|
120
|
+
export const isRegisterRequest = (m) => m.method === Method.RegisterRequest;
|
|
121
|
+
export const isRegisterResult = (m) => m.method === Method.RegisterResult;
|
|
122
|
+
export const isSessionDelete = (m) => m.method === Method.SessionDelete;
|
|
123
|
+
export const isSessionDeleteResult = (m) => m.method === Method.SessionDeleteResult;
|
|
124
|
+
export const isSessionList = (m) => m.method === Method.SessionList;
|
|
125
|
+
export const isSessionListResult = (m) => m.method === Method.SessionListResult;
|
|
126
|
+
export const isSignRequest = (m) => m.method === Method.SignRequest;
|
|
127
|
+
export const isSignResult = (m) => m.method === Method.SignResult;
|
|
128
|
+
//# sourceMappingURL=message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"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"}
|
package/dist/rpc.d.ts
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { Maybe } from "@welshman/lib";
|
|
2
|
+
import type { HashedEvent, TrustedEvent } from "@welshman/util";
|
|
3
|
+
import { Message } from "./message.js";
|
|
4
|
+
export type WithEvent<T extends Message> = T & {
|
|
5
|
+
event: TrustedEvent;
|
|
6
|
+
};
|
|
7
|
+
export declare function rpc(secret: string): RPC;
|
|
8
|
+
export declare class RPC {
|
|
9
|
+
private secret;
|
|
10
|
+
static Kind: number;
|
|
11
|
+
pubkey: string;
|
|
12
|
+
relays: string[];
|
|
13
|
+
subscribers: MessageHandler[];
|
|
14
|
+
controller: AbortController;
|
|
15
|
+
channels: Map<string, RPCChannel>;
|
|
16
|
+
constructor(secret: string, relays?: string[]);
|
|
17
|
+
publishRelays(): void;
|
|
18
|
+
listenForEvents(): void;
|
|
19
|
+
read(event: TrustedEvent): Maybe<WithEvent<Message>>;
|
|
20
|
+
notify(event: TrustedEvent): void;
|
|
21
|
+
subscribe(handler: MessageHandler): () => MessageHandler[];
|
|
22
|
+
sign(event: HashedEvent): {
|
|
23
|
+
sig: string;
|
|
24
|
+
tags: string[][];
|
|
25
|
+
content: string;
|
|
26
|
+
kind: number;
|
|
27
|
+
created_at: number;
|
|
28
|
+
pubkey: string;
|
|
29
|
+
id: string;
|
|
30
|
+
};
|
|
31
|
+
encrypt(peer: string, payload: string): string;
|
|
32
|
+
decrypt(peer: string, payload: string): string;
|
|
33
|
+
channel(peer: string, usePeerRelays?: boolean): RPCChannel;
|
|
34
|
+
stop(): void;
|
|
35
|
+
}
|
|
36
|
+
export type MessageHandler = (message: WithEvent<Message>) => void;
|
|
37
|
+
export type MessageHandlerWithCallback<T> = (message: WithEvent<Message>, resolve: (result?: T) => void) => void;
|
|
38
|
+
export declare class RPCChannel {
|
|
39
|
+
private rpc;
|
|
40
|
+
readonly peer: string;
|
|
41
|
+
readonly usePeerRelays: boolean;
|
|
42
|
+
relays: Promise<string[]>;
|
|
43
|
+
controller: AbortController;
|
|
44
|
+
constructor(rpc: RPC, peer: string, usePeerRelays?: boolean);
|
|
45
|
+
subscribe(handler: MessageHandler): () => MessageHandler[];
|
|
46
|
+
receive<T>(handler: MessageHandlerWithCallback<T>): Promise<Maybe<T>>;
|
|
47
|
+
prep(message: Message): {
|
|
48
|
+
sig: string;
|
|
49
|
+
tags: string[][];
|
|
50
|
+
content: string;
|
|
51
|
+
kind: number;
|
|
52
|
+
created_at: number;
|
|
53
|
+
pubkey: string;
|
|
54
|
+
id: string;
|
|
55
|
+
};
|
|
56
|
+
encrypt(payload: string): string;
|
|
57
|
+
decrypt(payload: string): string;
|
|
58
|
+
send(message: Message): {
|
|
59
|
+
abort: () => void;
|
|
60
|
+
event: {
|
|
61
|
+
sig: string;
|
|
62
|
+
tags: string[][];
|
|
63
|
+
content: string;
|
|
64
|
+
kind: number;
|
|
65
|
+
created_at: number;
|
|
66
|
+
pubkey: string;
|
|
67
|
+
id: string;
|
|
68
|
+
};
|
|
69
|
+
res: Promise<import("@welshman/net").PublishResultsByRelay>;
|
|
70
|
+
ok: Promise<boolean>;
|
|
71
|
+
receive: <T>(handler: MessageHandlerWithCallback<T>) => Promise<Maybe<T>>;
|
|
72
|
+
};
|
|
73
|
+
stop(): void;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=rpc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,eAAe,CAAA;AAGxC,OAAO,KAAK,EAAC,WAAW,EAAE,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAG7D,OAAO,EAAC,OAAO,EAAe,MAAM,cAAc,CAAA;AAElD,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,GAAG;IAAC,KAAK,EAAE,YAAY,CAAA;CAAC,CAAA;AAIpE,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,OAEjC;AAED,qBAAa,GAAG;IAUZ,OAAO,CAAC,MAAM;IAThB,MAAM,CAAC,IAAI,SAAQ;IAEnB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,WAAW,EAAE,cAAc,EAAE,CAAK;IAClC,UAAU,kBAAwB;IAClC,QAAQ,0BAAgC;gBAG9B,MAAM,EAAE,MAAM,EACtB,MAAM,GAAE,MAAM,EAAO;IAQvB,aAAa;IAYb,eAAe;IAWf,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAQpD,MAAM,CAAC,KAAK,EAAE,YAAY;IAU1B,SAAS,CAAC,OAAO,EAAE,cAAc;IAcjC,IAAI,CAAC,KAAK,EAAE,WAAW;;;;;;;;;IAIvB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAIrC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAIrC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,UAAO;IAY1C,IAAI;CASL;AAID,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,CAAA;AAElE,MAAM,MAAM,0BAA0B,CAAC,CAAC,IAAI,CAC1C,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,EAC3B,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,KAC1B,IAAI,CAAA;AAET,qBAAa,UAAU;IAKnB,OAAO,CAAC,GAAG;IACX,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,aAAa;IANxB,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACzB,UAAU,kBAAwB;gBAGxB,GAAG,EAAE,GAAG,EACP,IAAI,EAAE,MAAM,EACZ,aAAa,UAAO;IAqB/B,SAAS,CAAC,OAAO,EAAE,cAAc;IAYjC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,0BAA0B,CAAC,CAAC,CAAC;IAmBjD,IAAI,CAAC,OAAO,EAAE,OAAO;;;;;;;;;IAUrB,OAAO,CAAC,OAAO,EAAE,MAAM;IAIvB,OAAO,CAAC,OAAO,EAAE,MAAM;IAIvB,IAAI,CAAC,OAAO,EAAE,OAAO;;;;;;;;;;;;;kBAiBF,CAAC,WAAW,0BAA0B,CAAC,CAAC,CAAC;;IAU5D,IAAI;CAGL"}
|
package/dist/rpc.js
ADDED
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { tryCatch, uniq, without, spec } from "@welshman/lib";
|
|
2
|
+
import { publish, request, PublishStatus } from "@welshman/net";
|
|
3
|
+
import { prep, sign, getPubkey } from "@welshman/util";
|
|
4
|
+
import { nip44, debug, fetchRelays, publishRelays, normalizeRelay } from "./util.js";
|
|
5
|
+
import { parseMessage } from "./message.js";
|
|
6
|
+
// Base RPC class
|
|
7
|
+
export function rpc(secret) {
|
|
8
|
+
return new RPC(secret);
|
|
9
|
+
}
|
|
10
|
+
export class RPC {
|
|
11
|
+
secret;
|
|
12
|
+
static Kind = 28350;
|
|
13
|
+
pubkey;
|
|
14
|
+
relays;
|
|
15
|
+
subscribers = [];
|
|
16
|
+
controller = new AbortController();
|
|
17
|
+
channels = new Map();
|
|
18
|
+
constructor(secret, relays = []) {
|
|
19
|
+
this.secret = secret;
|
|
20
|
+
this.relays = relays.map(normalizeRelay);
|
|
21
|
+
this.pubkey = getPubkey(secret);
|
|
22
|
+
this.publishRelays();
|
|
23
|
+
this.listenForEvents();
|
|
24
|
+
}
|
|
25
|
+
publishRelays() {
|
|
26
|
+
if (this.relays.length > 0) {
|
|
27
|
+
debug("[rpc.publishRelays]", this.relays);
|
|
28
|
+
publishRelays({
|
|
29
|
+
secret: this.secret,
|
|
30
|
+
relays: this.relays,
|
|
31
|
+
signal: this.controller.signal,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
listenForEvents() {
|
|
36
|
+
if (this.relays) {
|
|
37
|
+
request({
|
|
38
|
+
relays: this.relays,
|
|
39
|
+
signal: this.controller.signal,
|
|
40
|
+
filters: [{ kinds: [RPC.Kind], "#p": [this.pubkey] }],
|
|
41
|
+
onEvent: (event) => this.notify(event),
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
read(event) {
|
|
46
|
+
const result = tryCatch(() => parseMessage(this.decrypt(event.pubkey, event.content)));
|
|
47
|
+
if (result) {
|
|
48
|
+
return { ...result, event };
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
notify(event) {
|
|
52
|
+
const message = this.read(event);
|
|
53
|
+
if (message) {
|
|
54
|
+
for (const subscriber of this.subscribers) {
|
|
55
|
+
subscriber(message);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
subscribe(handler) {
|
|
60
|
+
if (this.controller.signal.aborted) {
|
|
61
|
+
throw new Error("Attempted to subscribe to an rpc interface that has been closed");
|
|
62
|
+
}
|
|
63
|
+
this.subscribers.push(handler);
|
|
64
|
+
return () => this.subscribers.splice(this.subscribers.findIndex(s => s === handler), 1);
|
|
65
|
+
}
|
|
66
|
+
sign(event) {
|
|
67
|
+
return sign(event, this.secret);
|
|
68
|
+
}
|
|
69
|
+
encrypt(peer, payload) {
|
|
70
|
+
return nip44.encrypt(peer, this.secret, payload);
|
|
71
|
+
}
|
|
72
|
+
decrypt(peer, payload) {
|
|
73
|
+
return nip44.decrypt(peer, this.secret, payload);
|
|
74
|
+
}
|
|
75
|
+
channel(peer, usePeerRelays = true) {
|
|
76
|
+
let channel = this.channels.get(peer);
|
|
77
|
+
if (!channel) {
|
|
78
|
+
channel = new RPCChannel(this, peer, usePeerRelays);
|
|
79
|
+
this.channels.set(peer, channel);
|
|
80
|
+
}
|
|
81
|
+
return channel;
|
|
82
|
+
}
|
|
83
|
+
stop() {
|
|
84
|
+
for (const channel of this.channels.values()) {
|
|
85
|
+
channel.stop();
|
|
86
|
+
}
|
|
87
|
+
this.channels.clear();
|
|
88
|
+
this.controller.abort();
|
|
89
|
+
this.subscribers = [];
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
export class RPCChannel {
|
|
93
|
+
rpc;
|
|
94
|
+
peer;
|
|
95
|
+
usePeerRelays;
|
|
96
|
+
relays;
|
|
97
|
+
controller = new AbortController();
|
|
98
|
+
constructor(rpc, peer, usePeerRelays = true) {
|
|
99
|
+
this.rpc = rpc;
|
|
100
|
+
this.peer = peer;
|
|
101
|
+
this.usePeerRelays = usePeerRelays;
|
|
102
|
+
const { signal } = this.controller;
|
|
103
|
+
this.relays = usePeerRelays ? fetchRelays(peer, signal) : Promise.resolve([]);
|
|
104
|
+
this.relays.then(relays => {
|
|
105
|
+
if (!signal.aborted) {
|
|
106
|
+
const uniqueRelays = without(this.rpc.relays, relays);
|
|
107
|
+
if (uniqueRelays.length > 0) {
|
|
108
|
+
request({
|
|
109
|
+
signal,
|
|
110
|
+
relays: uniqueRelays,
|
|
111
|
+
filters: [{ kinds: [RPC.Kind], authors: [this.peer], "#p": [this.rpc.pubkey] }],
|
|
112
|
+
onEvent: (event) => this.rpc.notify(event),
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
subscribe(handler) {
|
|
119
|
+
if (this.controller.signal.aborted) {
|
|
120
|
+
throw new Error("Attempted to subscribe to a channel that has been closed");
|
|
121
|
+
}
|
|
122
|
+
return this.rpc.subscribe(message => {
|
|
123
|
+
if (message.event.pubkey === this.peer) {
|
|
124
|
+
handler(message);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
receive(handler) {
|
|
129
|
+
return new Promise((resolve, reject) => {
|
|
130
|
+
const unsubscribe = this.subscribe(async (message) => {
|
|
131
|
+
try {
|
|
132
|
+
handler(message, done);
|
|
133
|
+
}
|
|
134
|
+
catch (e) {
|
|
135
|
+
reject(e);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
const done = (result) => {
|
|
139
|
+
resolve(result);
|
|
140
|
+
unsubscribe();
|
|
141
|
+
};
|
|
142
|
+
setTimeout(done, 30_000);
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
prep(message) {
|
|
146
|
+
const template = {
|
|
147
|
+
kind: RPC.Kind,
|
|
148
|
+
tags: [["p", this.peer]],
|
|
149
|
+
content: this.encrypt(JSON.stringify(message)),
|
|
150
|
+
};
|
|
151
|
+
return this.rpc.sign(prep(template, this.rpc.pubkey));
|
|
152
|
+
}
|
|
153
|
+
encrypt(payload) {
|
|
154
|
+
return this.rpc.encrypt(this.peer, payload);
|
|
155
|
+
}
|
|
156
|
+
decrypt(payload) {
|
|
157
|
+
return this.rpc.decrypt(this.peer, payload);
|
|
158
|
+
}
|
|
159
|
+
send(message) {
|
|
160
|
+
const controller = new AbortController();
|
|
161
|
+
const abort = () => controller.abort();
|
|
162
|
+
const event = this.prep(message);
|
|
163
|
+
const res = this.relays.then(relays => {
|
|
164
|
+
return publish({
|
|
165
|
+
event,
|
|
166
|
+
relays: uniq([...relays, ...this.rpc.relays]),
|
|
167
|
+
signal: AbortSignal.any([this.controller.signal, controller.signal]),
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
const ok = res.then(r => {
|
|
171
|
+
return Object.values(r).some(spec({ status: PublishStatus.Success }));
|
|
172
|
+
});
|
|
173
|
+
const receive = (handler) => this.receive((message, resolve) => {
|
|
174
|
+
if (message.payload.prev === event.id) {
|
|
175
|
+
handler(message, resolve);
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
return { abort, event, res, ok, receive };
|
|
179
|
+
}
|
|
180
|
+
stop() {
|
|
181
|
+
this.controller.abort();
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=rpc.js.map
|