accounts 0.6.0 → 0.6.2
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/CHANGELOG.md +15 -0
- package/dist/core/Adapter.d.ts +2 -2
- package/dist/core/Adapter.d.ts.map +1 -1
- package/dist/core/Client.d.ts +2 -2
- package/dist/core/Client.d.ts.map +1 -1
- package/dist/core/Client.js +13 -4
- package/dist/core/Client.js.map +1 -1
- package/dist/core/Provider.d.ts.map +1 -1
- package/dist/core/Provider.js +9 -2
- package/dist/core/Provider.js.map +1 -1
- package/dist/core/Schema.d.ts +22 -12
- package/dist/core/Schema.d.ts.map +1 -1
- package/dist/core/adapters/dialog.d.ts.map +1 -1
- package/dist/core/adapters/dialog.js +24 -4
- package/dist/core/adapters/dialog.js.map +1 -1
- package/dist/core/adapters/local.d.ts.map +1 -1
- package/dist/core/adapters/local.js +21 -3
- package/dist/core/adapters/local.js.map +1 -1
- package/dist/core/zod/rpc.d.ts +14 -9
- package/dist/core/zod/rpc.d.ts.map +1 -1
- package/dist/core/zod/rpc.js +8 -2
- package/dist/core/zod/rpc.js.map +1 -1
- package/dist/server/CliAuth.d.ts +11 -11
- package/dist/server/CliAuth.js +1 -1
- package/dist/server/CliAuth.js.map +1 -1
- package/dist/server/Handler.d.ts +4 -252
- package/dist/server/Handler.d.ts.map +1 -1
- package/dist/server/Handler.js +4 -573
- package/dist/server/Handler.js.map +1 -1
- package/dist/server/internal/handlers/codeAuth.d.ts +41 -0
- package/dist/server/internal/handlers/codeAuth.d.ts.map +1 -0
- package/dist/server/internal/handlers/codeAuth.js +104 -0
- package/dist/server/internal/handlers/codeAuth.js.map +1 -0
- package/dist/server/internal/handlers/feePayer.d.ts +73 -0
- package/dist/server/internal/handlers/feePayer.d.ts.map +1 -0
- package/dist/server/internal/handlers/feePayer.js +184 -0
- package/dist/server/internal/handlers/feePayer.js.map +1 -0
- package/dist/server/internal/handlers/relay.d.ts +148 -0
- package/dist/server/internal/handlers/relay.d.ts.map +1 -0
- package/dist/server/internal/handlers/relay.js +600 -0
- package/dist/server/internal/handlers/relay.js.map +1 -0
- package/dist/server/internal/handlers/utils.d.ts +12 -0
- package/dist/server/internal/handlers/utils.d.ts.map +1 -0
- package/dist/server/internal/handlers/utils.js +80 -0
- package/dist/server/internal/handlers/utils.js.map +1 -0
- package/dist/server/internal/handlers/webAuthn.d.ts +57 -0
- package/dist/server/internal/handlers/webAuthn.d.ts.map +1 -0
- package/dist/server/internal/handlers/webAuthn.js +143 -0
- package/dist/server/internal/handlers/webAuthn.js.map +1 -0
- package/package.json +2 -2
- package/src/core/Adapter.ts +2 -2
- package/src/core/Client.ts +13 -6
- package/src/core/Provider.connect.browser.test.ts +23 -2
- package/src/core/Provider.test.ts +292 -0
- package/src/core/Provider.ts +11 -3
- package/src/core/adapters/dialog.ts +21 -4
- package/src/core/adapters/local.ts +15 -3
- package/src/core/zod/rpc.ts +12 -2
- package/src/server/CliAuth.ts +1 -1
- package/src/server/Handler.test.ts +3 -418
- package/src/server/Handler.ts +5 -766
- package/src/server/internal/handlers/codeAuth.ts +148 -0
- package/src/server/internal/handlers/feePayer.test.ts +335 -0
- package/src/server/internal/handlers/feePayer.ts +271 -0
- package/src/server/internal/handlers/relay.test.ts +767 -0
- package/src/server/internal/handlers/relay.ts +817 -0
- package/src/server/internal/handlers/utils.ts +96 -0
- package/src/server/internal/handlers/webAuthn.test.ts +170 -0
- package/src/server/internal/handlers/webAuthn.ts +213 -0
package/dist/server/Handler.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import * as Kv from './Kv.js';
|
|
2
|
+
export { codeAuth } from './internal/handlers/codeAuth.js';
|
|
3
|
+
export { feePayer } from './internal/handlers/feePayer.js';
|
|
4
|
+
export { relay } from './internal/handlers/relay.js';
|
|
5
|
+
export { webAuthn } from './internal/handlers/webAuthn.js';
|
|
7
6
|
export type Handler = Hono & {
|
|
8
7
|
listener: (req: any, res: any) => void;
|
|
9
8
|
};
|
|
@@ -48,251 +47,4 @@ export declare namespace from {
|
|
|
48
47
|
maxAge?: number | undefined;
|
|
49
48
|
};
|
|
50
49
|
}
|
|
51
|
-
/**
|
|
52
|
-
* Instantiates a fee payer service request handler that can be used to
|
|
53
|
-
* sponsor the fee for user transactions.
|
|
54
|
-
*
|
|
55
|
-
* @example
|
|
56
|
-
* ### Cloudflare Worker
|
|
57
|
-
*
|
|
58
|
-
* ```ts
|
|
59
|
-
* import { privateKeyToAccount } from 'viem/accounts'
|
|
60
|
-
* import { Handler } from 'accounts/server'
|
|
61
|
-
*
|
|
62
|
-
* export default {
|
|
63
|
-
* fetch(request) {
|
|
64
|
-
* return Handler.feePayer({
|
|
65
|
-
* account: privateKeyToAccount('0x...'),
|
|
66
|
-
* }).fetch(request)
|
|
67
|
-
* }
|
|
68
|
-
* }
|
|
69
|
-
* ```
|
|
70
|
-
*
|
|
71
|
-
* @example
|
|
72
|
-
* ### Next.js
|
|
73
|
-
*
|
|
74
|
-
* ```ts
|
|
75
|
-
* import { privateKeyToAccount } from 'viem/accounts'
|
|
76
|
-
* import { Handler } from 'accounts/server'
|
|
77
|
-
*
|
|
78
|
-
* const handler = Handler.feePayer({
|
|
79
|
-
* account: privateKeyToAccount('0x...'),
|
|
80
|
-
* })
|
|
81
|
-
*
|
|
82
|
-
* export GET = handler.fetch
|
|
83
|
-
* export POST = handler.fetch
|
|
84
|
-
* ```
|
|
85
|
-
*
|
|
86
|
-
* @example
|
|
87
|
-
* ### Hono
|
|
88
|
-
*
|
|
89
|
-
* ```ts
|
|
90
|
-
* import { privateKeyToAccount } from 'viem/accounts'
|
|
91
|
-
* import { Handler } from 'accounts/server'
|
|
92
|
-
*
|
|
93
|
-
* const handler = Handler.feePayer({
|
|
94
|
-
* account: privateKeyToAccount('0x...'),
|
|
95
|
-
* })
|
|
96
|
-
*
|
|
97
|
-
* const app = new Hono()
|
|
98
|
-
* app.all('*', handler)
|
|
99
|
-
*
|
|
100
|
-
* export default app
|
|
101
|
-
* ```
|
|
102
|
-
*
|
|
103
|
-
* @example
|
|
104
|
-
* ### Node.js
|
|
105
|
-
*
|
|
106
|
-
* ```ts
|
|
107
|
-
* import { privateKeyToAccount } from 'viem/accounts'
|
|
108
|
-
* import { Handler } from 'accounts/server'
|
|
109
|
-
*
|
|
110
|
-
* const handler = Handler.feePayer({
|
|
111
|
-
* account: privateKeyToAccount('0x...'),
|
|
112
|
-
* })
|
|
113
|
-
*
|
|
114
|
-
* const server = createServer(handler.listener)
|
|
115
|
-
* server.listen(3000)
|
|
116
|
-
* ```
|
|
117
|
-
*
|
|
118
|
-
* @example
|
|
119
|
-
* ### Bun
|
|
120
|
-
*
|
|
121
|
-
* ```ts
|
|
122
|
-
* import { privateKeyToAccount } from 'viem/accounts'
|
|
123
|
-
* import { Handler } from 'accounts/server'
|
|
124
|
-
*
|
|
125
|
-
* const handler = Handler.feePayer({
|
|
126
|
-
* account: privateKeyToAccount('0x...'),
|
|
127
|
-
* })
|
|
128
|
-
*
|
|
129
|
-
* Bun.serve(handler)
|
|
130
|
-
* ```
|
|
131
|
-
*
|
|
132
|
-
* @example
|
|
133
|
-
* ### Deno
|
|
134
|
-
*
|
|
135
|
-
* ```ts
|
|
136
|
-
* import { privateKeyToAccount } from 'viem/accounts'
|
|
137
|
-
* import { Handler } from 'accounts/server'
|
|
138
|
-
*
|
|
139
|
-
* const handler = Handler.feePayer({
|
|
140
|
-
* account: privateKeyToAccount('0x...'),
|
|
141
|
-
* })
|
|
142
|
-
*
|
|
143
|
-
* Deno.serve(handler)
|
|
144
|
-
* ```
|
|
145
|
-
*
|
|
146
|
-
* @example
|
|
147
|
-
* ### Express
|
|
148
|
-
*
|
|
149
|
-
* ```ts
|
|
150
|
-
* import { privateKeyToAccount } from 'viem/accounts'
|
|
151
|
-
* import { Handler } from 'accounts/server'
|
|
152
|
-
*
|
|
153
|
-
* const handler = Handler.feePayer({
|
|
154
|
-
* account: privateKeyToAccount('0x...'),
|
|
155
|
-
* })
|
|
156
|
-
*
|
|
157
|
-
* const app = express()
|
|
158
|
-
* app.use(handler.listener)
|
|
159
|
-
* app.listen(3000)
|
|
160
|
-
* ```
|
|
161
|
-
*
|
|
162
|
-
* @example
|
|
163
|
-
* ### Custom chains & transports
|
|
164
|
-
*
|
|
165
|
-
* ```ts
|
|
166
|
-
* import { http } from 'viem'
|
|
167
|
-
* import { privateKeyToAccount } from 'viem/accounts'
|
|
168
|
-
* import { tempo, tempoModerato } from 'viem/chains'
|
|
169
|
-
* import { Handler } from 'accounts/server'
|
|
170
|
-
*
|
|
171
|
-
* const handler = Handler.feePayer({
|
|
172
|
-
* account: privateKeyToAccount('0x...'),
|
|
173
|
-
* chains: [tempo, tempoModerato],
|
|
174
|
-
* transports: {
|
|
175
|
-
* [tempo.id]: http('https://rpc.tempo.xyz'),
|
|
176
|
-
* [tempoModerato.id]: http('https://rpc.testnet.tempo.xyz'),
|
|
177
|
-
* },
|
|
178
|
-
* })
|
|
179
|
-
* ```
|
|
180
|
-
*
|
|
181
|
-
* @param options - Options.
|
|
182
|
-
* @returns Request handler.
|
|
183
|
-
*/
|
|
184
|
-
export declare function feePayer(options: feePayer.Options): Handler;
|
|
185
|
-
export declare namespace feePayer {
|
|
186
|
-
type Options = from.Options & {
|
|
187
|
-
/** Account to use as the fee payer. */
|
|
188
|
-
account: LocalAccount;
|
|
189
|
-
/**
|
|
190
|
-
* Supported chains. The handler resolves the client based on the
|
|
191
|
-
* `chainId` in the incoming transaction.
|
|
192
|
-
* @default [tempo, tempoModerato]
|
|
193
|
-
*/
|
|
194
|
-
chains?: readonly [Chain, ...Chain[]] | undefined;
|
|
195
|
-
/** Function to call before handling the request. */
|
|
196
|
-
onRequest?: (request: RpcRequest.RpcRequest) => Promise<void>;
|
|
197
|
-
/** Path to use for the handler. */
|
|
198
|
-
path?: string | undefined;
|
|
199
|
-
/** Sponsor display name returned from `eth_fillTransaction`. */
|
|
200
|
-
name?: string | undefined;
|
|
201
|
-
/** Transports keyed by chain ID. Defaults to `http()` for each chain. */
|
|
202
|
-
transports?: Record<number, Transport> | undefined;
|
|
203
|
-
/** Sponsor URL returned from `eth_fillTransaction`. */
|
|
204
|
-
url?: string | undefined;
|
|
205
|
-
};
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* Instantiates a generic device-code handler for access-key bootstrap.
|
|
209
|
-
*
|
|
210
|
-
* Exposes 4 endpoints:
|
|
211
|
-
* - `GET /auth/pkce/pending/:code`
|
|
212
|
-
* - `POST /auth/pkce/code`
|
|
213
|
-
* - `POST /auth/pkce/poll/:code`
|
|
214
|
-
* - `POST /auth/pkce`
|
|
215
|
-
*
|
|
216
|
-
* @param options - Options.
|
|
217
|
-
* @returns Request handler.
|
|
218
|
-
*/
|
|
219
|
-
export declare function codeAuth(options?: codeAuth.Options): Handler;
|
|
220
|
-
export declare namespace codeAuth {
|
|
221
|
-
type Options = from.Options & {
|
|
222
|
-
/**
|
|
223
|
-
* Supported chains. The handler resolves the client based on chain IDs carried
|
|
224
|
-
* by device-code requests and key authorizations.
|
|
225
|
-
* @default [tempo, tempoModerato]
|
|
226
|
-
*/
|
|
227
|
-
chains?: readonly [Chain, ...Chain[]] | undefined;
|
|
228
|
-
/** Time source used for TTL evaluation. */
|
|
229
|
-
now?: (() => number) | undefined;
|
|
230
|
-
/** Path prefix for the code auth endpoints. @default "/auth/pkce" */
|
|
231
|
-
path?: string | undefined;
|
|
232
|
-
/** Policy used to validate and default requested CLI auth fields. */
|
|
233
|
-
policy?: CliAuth.Policy | undefined;
|
|
234
|
-
/** Random byte generator used for device-code allocation. */
|
|
235
|
-
random?: ((size: number) => Uint8Array) | undefined;
|
|
236
|
-
/** Device-code store. */
|
|
237
|
-
store?: CliAuth.Store | undefined;
|
|
238
|
-
/** Transports keyed by chain ID. Defaults to `http()` for each chain. */
|
|
239
|
-
transports?: Record<number, Transport> | undefined;
|
|
240
|
-
/** Pending entry TTL in milliseconds. @default 600000 */
|
|
241
|
-
ttlMs?: number | undefined;
|
|
242
|
-
};
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* Instantiates a WebAuthn ceremony handler that manages registration and
|
|
246
|
-
* authentication flows server-side.
|
|
247
|
-
*
|
|
248
|
-
* Exposes 4 POST endpoints following the webauthx convention:
|
|
249
|
-
* - `POST /register/options` — generate credential creation options
|
|
250
|
-
* - `POST /register` — verify registration and store credential
|
|
251
|
-
* - `POST /login/options` — generate credential request options
|
|
252
|
-
* - `POST /login` — verify authentication
|
|
253
|
-
*
|
|
254
|
-
* @example
|
|
255
|
-
* ```ts
|
|
256
|
-
* import { Handler, Kv } from 'accounts/server'
|
|
257
|
-
*
|
|
258
|
-
* const handler = Handler.webAuthn({
|
|
259
|
-
* kv: Kv.memory(),
|
|
260
|
-
* origin: 'https://example.com',
|
|
261
|
-
* rpId: 'example.com',
|
|
262
|
-
* })
|
|
263
|
-
*
|
|
264
|
-
* export default handler
|
|
265
|
-
* ```
|
|
266
|
-
*
|
|
267
|
-
* @param options - Options.
|
|
268
|
-
* @returns Request handler.
|
|
269
|
-
*/
|
|
270
|
-
export declare function webAuthn(options: webAuthn.Options): Handler;
|
|
271
|
-
export declare namespace webAuthn {
|
|
272
|
-
type Options = from.Options & {
|
|
273
|
-
/** Maximum age of a challenge in seconds before it expires. @default 300 */
|
|
274
|
-
challengeTtl?: number | undefined;
|
|
275
|
-
/** Key-value store for challenges and credentials. */
|
|
276
|
-
kv: Kv.Kv;
|
|
277
|
-
/** Called after a successful registration. The returned response is merged onto the default JSON response. */
|
|
278
|
-
onRegister?: (parameters: {
|
|
279
|
-
credentialId: string;
|
|
280
|
-
publicKey: string;
|
|
281
|
-
request: Request;
|
|
282
|
-
}) => Response | Promise<Response> | void | Promise<void>;
|
|
283
|
-
/** Called after a successful authentication. The returned response is merged onto the default JSON response. */
|
|
284
|
-
onAuthenticate?: (parameters: {
|
|
285
|
-
credentialId: string;
|
|
286
|
-
publicKey: string;
|
|
287
|
-
userId?: string | undefined;
|
|
288
|
-
request: Request;
|
|
289
|
-
}) => Response | Promise<Response> | void | Promise<void>;
|
|
290
|
-
/** Expected origin(s) (e.g. `"https://example.com"` or `["https://a.com", "https://b.com"]`). */
|
|
291
|
-
origin: string | readonly string[];
|
|
292
|
-
/** Path prefix for the WebAuthn endpoints (e.g. `"/webauthn"`). @default "" */
|
|
293
|
-
path?: string | undefined;
|
|
294
|
-
/** Relying Party ID (e.g. `"example.com"`). */
|
|
295
|
-
rpId: string;
|
|
296
|
-
};
|
|
297
|
-
}
|
|
298
50
|
//# sourceMappingURL=Handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Handler.d.ts","sourceRoot":"","sources":["../../src/server/Handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"Handler.d.ts","sourceRoot":"","sources":["../../src/server/Handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAE1D,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG;IAC3B,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,CAAA;CACvC,CAAA;AAED,wBAAgB,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,GAAE,OAAO,CAAC,OAAY,GAAG,OAAO,CAmBxF;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,KAAY,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG;QACnC,uCAAuC;QACvC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC1B,CAAA;CACF;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,OAAO,GAAE,IAAI,CAAC,OAAY,GAAG,OAAO,CAiBxD;AAED,MAAM,CAAC,OAAO,WAAW,IAAI,CAAC;IAC5B,KAAY,OAAO,GAAG;QACpB;;;;;WAKG;QACH,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;QACjC,sCAAsC;QACtC,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;KACvD,CAAA;IAED,KAAY,IAAI,GAAG;QACjB,0CAA0C;QAC1C,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;QACtC,wEAAwE;QACxE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC5B,qDAAqD;QACrD,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC5B,oCAAoC;QACpC,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;QACjC,wCAAwC;QACxC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAClC,8CAA8C;QAC9C,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC5B,CAAA;CACF"}
|