accounts 0.16.2 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -0
- package/README.md +3 -4
- package/dist/cli/Provider.d.ts +1 -1
- package/dist/cli/Provider.d.ts.map +1 -1
- package/dist/cli/Provider.js +3 -3
- package/dist/cli/Provider.js.map +1 -1
- package/dist/cli/adapter.d.ts +13 -8
- package/dist/cli/adapter.d.ts.map +1 -1
- package/dist/cli/adapter.js +92 -303
- package/dist/cli/adapter.js.map +1 -1
- package/dist/core/adapters/deviceCode/deviceCode.d.ts +59 -0
- package/dist/core/adapters/deviceCode/deviceCode.d.ts.map +1 -0
- package/dist/core/adapters/deviceCode/deviceCode.js +93 -0
- package/dist/core/adapters/deviceCode/deviceCode.js.map +1 -0
- package/dist/core/adapters/deviceCode/index.d.ts +3 -0
- package/dist/core/adapters/deviceCode/index.d.ts.map +1 -0
- package/dist/core/adapters/deviceCode/index.js +3 -0
- package/dist/core/adapters/deviceCode/index.js.map +1 -0
- package/dist/core/adapters/deviceCode/tempoWallet.d.ts +9 -0
- package/dist/core/adapters/deviceCode/tempoWallet.d.ts.map +1 -0
- package/dist/core/adapters/deviceCode/tempoWallet.js +11 -0
- package/dist/core/adapters/deviceCode/tempoWallet.js.map +1 -0
- package/dist/core/adapters/internal/fromRequest.d.ts +10 -0
- package/dist/core/adapters/internal/fromRequest.d.ts.map +1 -1
- package/dist/core/adapters/internal/fromRequest.js +4 -2
- package/dist/core/adapters/internal/fromRequest.js.map +1 -1
- package/dist/server/CliAuth.d.ts +69 -1
- package/dist/server/CliAuth.d.ts.map +1 -1
- package/dist/server/CliAuth.js +6 -1
- package/dist/server/CliAuth.js.map +1 -1
- package/dist/server/Handler.d.ts +2 -1
- package/dist/server/Handler.d.ts.map +1 -1
- package/dist/server/Handler.js +2 -1
- package/dist/server/Handler.js.map +1 -1
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/internal/handlers/codeAuth.d.ts +1 -0
- package/dist/server/internal/handlers/codeAuth.d.ts.map +1 -1
- package/dist/server/internal/handlers/codeAuth.js +1 -0
- package/dist/server/internal/handlers/codeAuth.js.map +1 -1
- package/dist/server/internal/handlers/deviceCode.d.ts +60 -0
- package/dist/server/internal/handlers/deviceCode.d.ts.map +1 -0
- package/dist/server/internal/handlers/deviceCode.js +218 -0
- package/dist/server/internal/handlers/deviceCode.js.map +1 -0
- package/package.json +7 -1
- package/src/cli/Provider.localnet.test.ts +414 -470
- package/src/cli/Provider.test-d.ts +4 -3
- package/src/cli/Provider.ts +6 -6
- package/src/cli/adapter.ts +111 -380
- package/src/core/adapters/deviceCode/deviceCode.localnet.test.ts +226 -0
- package/src/core/adapters/deviceCode/deviceCode.test-d.ts +19 -0
- package/src/core/adapters/deviceCode/deviceCode.ts +157 -0
- package/src/core/adapters/deviceCode/index.ts +2 -0
- package/src/core/adapters/deviceCode/tempoWallet.ts +17 -0
- package/src/core/adapters/internal/fromRequest.ts +115 -88
- package/src/server/CliAuth.test.ts +29 -18
- package/src/server/CliAuth.ts +10 -2
- package/src/server/Handler.test-d.ts +19 -33
- package/src/server/Handler.ts +2 -1
- package/src/server/index.ts +1 -0
- package/src/server/internal/handlers/codeAuth.ts +1 -0
- package/src/server/internal/handlers/deviceCode.test.ts +140 -0
- package/src/server/internal/handlers/deviceCode.ts +323 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { DeviceCode } from 'wata';
|
|
2
|
+
import type * as Adapter from '../../Adapter.js';
|
|
3
|
+
import type * as Keystore from '../../Keystore.js';
|
|
4
|
+
import { fromRequest } from '../internal/fromRequest.js';
|
|
5
|
+
/**
|
|
6
|
+
* Creates a device-code adapter that forwards wallet RPC through Wata.
|
|
7
|
+
*
|
|
8
|
+
* Each request runs one OAuth 2.0 Device Authorization Grant exchange
|
|
9
|
+
* (RFC 8628 with PKCE): the host issues a user code surfaced via
|
|
10
|
+
* `onPrompt`, the user approves on the host's verification page, and the
|
|
11
|
+
* adapter polls until the response arrives.
|
|
12
|
+
*/
|
|
13
|
+
export declare function deviceCode(options: deviceCode.Options): Adapter.Adapter;
|
|
14
|
+
export declare namespace deviceCode {
|
|
15
|
+
/** Options for {@link deviceCode}. */
|
|
16
|
+
type Options = {
|
|
17
|
+
/** Adapter-specific action overrides layered over the request-forwarding defaults. */
|
|
18
|
+
actions?: fromRequest.Options['actions'] | undefined;
|
|
19
|
+
/** Override the transport `fetch` implementation. */
|
|
20
|
+
fetch?: typeof globalThis.fetch | undefined;
|
|
21
|
+
/** Data URI of the provider icon, announced via EIP-6963. */
|
|
22
|
+
icon?: Adapter.Meta['icon'] | undefined;
|
|
23
|
+
/** Keystores backing locally generated access keys (SDK default otherwise). */
|
|
24
|
+
keystores?: Keystore.Keystores | undefined;
|
|
25
|
+
/** Consumer metadata shown on the host's approval page. */
|
|
26
|
+
meta?: {
|
|
27
|
+
name: string;
|
|
28
|
+
description?: string | undefined;
|
|
29
|
+
icon?: string | undefined;
|
|
30
|
+
websiteUrl?: string | undefined;
|
|
31
|
+
} | undefined;
|
|
32
|
+
/** Allowlist of RPC methods forwarded over the transport. Forwards all when omitted. */
|
|
33
|
+
methods?: readonly string[] | undefined;
|
|
34
|
+
/** Provider display name. */
|
|
35
|
+
name: string;
|
|
36
|
+
/** Surfaces the pairing prompt (user code + verification URL) to the user. */
|
|
37
|
+
onPrompt: (prompt: DeviceCode.Prompt) => Promise<void> | void;
|
|
38
|
+
/** Poll cadence override in milliseconds. Defaults to the host-advertised interval. */
|
|
39
|
+
pollingInterval?: number | undefined;
|
|
40
|
+
/** Reverse-DNS provider identifier. */
|
|
41
|
+
rdns: string;
|
|
42
|
+
/** Overall wait for user approval in milliseconds. @default 300000 */
|
|
43
|
+
timeout?: number | undefined;
|
|
44
|
+
/** Base URL of the host's device-code endpoints (derives `/register` and `/token`). */
|
|
45
|
+
url: string;
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/** Thrown when the `onPrompt` callback fails (e.g. no browser could be opened). */
|
|
49
|
+
export declare class PromptError extends Error {
|
|
50
|
+
cause?: unknown | undefined;
|
|
51
|
+
prompt: DeviceCode.Prompt;
|
|
52
|
+
constructor(prompt: DeviceCode.Prompt, cause?: unknown);
|
|
53
|
+
}
|
|
54
|
+
/** Thrown when the user did not approve within {@link deviceCode.Options.timeout}. */
|
|
55
|
+
export declare class TimeoutError extends Error {
|
|
56
|
+
prompt: DeviceCode.Prompt | undefined;
|
|
57
|
+
constructor(prompt: DeviceCode.Prompt | undefined);
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=deviceCode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deviceCode.d.ts","sourceRoot":"","sources":["../../../../src/core/adapters/deviceCode/deviceCode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAkD,MAAM,MAAM,CAAA;AAEjF,OAAO,KAAK,KAAK,OAAO,MAAM,kBAAkB,CAAA;AAChD,OAAO,KAAK,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAExD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CA0EvE;AAED,MAAM,CAAC,OAAO,WAAW,UAAU,CAAC;IAClC,sCAAsC;IACtC,KAAY,OAAO,GAAG;QACpB,sFAAsF;QACtF,OAAO,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAA;QACpD,qDAAqD;QACrD,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,GAAG,SAAS,CAAA;QAC3C,6DAA6D;QAC7D,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;QACvC,+EAA+E;QAC/E,SAAS,CAAC,EAAE,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1C,2DAA2D;QAC3D,IAAI,CAAC,EACD;YACE,IAAI,EAAE,MAAM,CAAA;YACZ,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;YAChC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;YACzB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;SAChC,GACD,SAAS,CAAA;QACb,wFAAwF;QACxF,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;QACvC,6BAA6B;QAC7B,IAAI,EAAE,MAAM,CAAA;QACZ,8EAA8E;QAC9E,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;QAC7D,uFAAuF;QACvF,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACpC,uCAAuC;QACvC,IAAI,EAAE,MAAM,CAAA;QACZ,sEAAsE;QACtE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC5B,uFAAuF;QACvF,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;CACF;AAED,mFAAmF;AACnF,qBAAa,WAAY,SAAQ,KAAK;IAC3B,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACpC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAA;gBAEb,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAQvD;AAED,sFAAsF;AACtF,qBAAa,YAAa,SAAQ,KAAK;IACrC,MAAM,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAA;gBAEzB,MAAM,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS;CASlD"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { Provider as core_Provider } from 'ox';
|
|
2
|
+
import { DeviceCode, Transport, Wata, deviceCode as core_deviceCode } from 'wata';
|
|
3
|
+
import { fromRequest } from '../internal/fromRequest.js';
|
|
4
|
+
/**
|
|
5
|
+
* Creates a device-code adapter that forwards wallet RPC through Wata.
|
|
6
|
+
*
|
|
7
|
+
* Each request runs one OAuth 2.0 Device Authorization Grant exchange
|
|
8
|
+
* (RFC 8628 with PKCE): the host issues a user code surfaced via
|
|
9
|
+
* `onPrompt`, the user approves on the host's verification page, and the
|
|
10
|
+
* adapter polls until the response arrives.
|
|
11
|
+
*/
|
|
12
|
+
export function deviceCode(options) {
|
|
13
|
+
const { actions, fetch, icon, keystores, meta, methods, name, onPrompt, pollingInterval, rdns, timeout = 300_000, url, } = options;
|
|
14
|
+
return fromRequest({
|
|
15
|
+
...(actions ? { actions } : {}),
|
|
16
|
+
...(icon ? { icon } : {}),
|
|
17
|
+
...(keystores ? { keystores } : {}),
|
|
18
|
+
name,
|
|
19
|
+
rdns,
|
|
20
|
+
async request(request) {
|
|
21
|
+
if (methods && !methods.includes(request.method))
|
|
22
|
+
throw new core_Provider.UnsupportedMethodError({
|
|
23
|
+
message: `\`${request.method}\` not supported by device-code adapter.`,
|
|
24
|
+
});
|
|
25
|
+
// Device code is single-exchange: one register + poll cycle carries one
|
|
26
|
+
// RPC request envelope, so a fresh Wata instance backs every request.
|
|
27
|
+
const wata = Wata.create({
|
|
28
|
+
transports: [
|
|
29
|
+
core_deviceCode({
|
|
30
|
+
...(fetch !== undefined ? { fetch } : {}),
|
|
31
|
+
...(meta ? { meta } : {}),
|
|
32
|
+
...(pollingInterval !== undefined ? { pollingInterval } : {}),
|
|
33
|
+
url,
|
|
34
|
+
}),
|
|
35
|
+
],
|
|
36
|
+
});
|
|
37
|
+
const session = wata.start();
|
|
38
|
+
// A failed prompt surface (e.g. browser open) fails the exchange — the
|
|
39
|
+
// user can never learn the code, so polling would only run out the clock.
|
|
40
|
+
session.onPrompt((prompt) => {
|
|
41
|
+
void (async () => onPrompt(prompt))().catch((error) => {
|
|
42
|
+
void session.close(new PromptError(prompt, error));
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
const timer = setTimeout(() => {
|
|
46
|
+
void session.close(new TimeoutError(session.prompt));
|
|
47
|
+
}, timeout);
|
|
48
|
+
try {
|
|
49
|
+
const { result } = await session.send({
|
|
50
|
+
method: request.method,
|
|
51
|
+
params: request.params ?? [],
|
|
52
|
+
...(request.context ? { context: request.context } : {}),
|
|
53
|
+
});
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
if (error instanceof DeviceCode.UserRejectedError)
|
|
58
|
+
throw new core_Provider.UserRejectedRequestError({
|
|
59
|
+
message: 'User denied the device-code request.',
|
|
60
|
+
});
|
|
61
|
+
if (error instanceof Transport.ClosedError)
|
|
62
|
+
throw new Error('Device code expired before authorization completed.', { cause: error });
|
|
63
|
+
throw error;
|
|
64
|
+
}
|
|
65
|
+
finally {
|
|
66
|
+
clearTimeout(timer);
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
/** Thrown when the `onPrompt` callback fails (e.g. no browser could be opened). */
|
|
72
|
+
export class PromptError extends Error {
|
|
73
|
+
cause;
|
|
74
|
+
prompt;
|
|
75
|
+
constructor(prompt, cause) {
|
|
76
|
+
super(`Failed to surface device code ${prompt.userCode}. Open ${prompt.verificationUriFull ?? prompt.verificationUri} manually.`);
|
|
77
|
+
this.name = 'PromptError';
|
|
78
|
+
this.cause = cause;
|
|
79
|
+
this.prompt = prompt;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/** Thrown when the user did not approve within {@link deviceCode.Options.timeout}. */
|
|
83
|
+
export class TimeoutError extends Error {
|
|
84
|
+
prompt;
|
|
85
|
+
constructor(prompt) {
|
|
86
|
+
super(prompt
|
|
87
|
+
? `Timed out waiting for device code ${prompt.userCode}. Continue at ${prompt.verificationUriFull ?? prompt.verificationUri}.`
|
|
88
|
+
: 'Timed out waiting for device code approval.');
|
|
89
|
+
this.name = 'TimeoutError';
|
|
90
|
+
this.prompt = prompt;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=deviceCode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deviceCode.js","sourceRoot":"","sources":["../../../../src/core/adapters/deviceCode/deviceCode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,IAAI,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,MAAM,CAAA;AAIjF,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAExD;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,OAA2B;IACpD,MAAM,EACJ,OAAO,EACP,KAAK,EACL,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,IAAI,EACJ,OAAO,GAAG,OAAO,EACjB,GAAG,GACJ,GAAG,OAAO,CAAA;IAEX,OAAO,WAAW,CAAC;QACjB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,IAAI;QACJ,IAAI;QACJ,KAAK,CAAC,OAAO,CAAC,OAAO;YACnB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC9C,MAAM,IAAI,aAAa,CAAC,sBAAsB,CAAC;oBAC7C,OAAO,EAAE,KAAK,OAAO,CAAC,MAAM,0CAA0C;iBACvE,CAAC,CAAA;YAEJ,wEAAwE;YACxE,sEAAsE;YACtE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;gBACvB,UAAU,EAAE;oBACV,eAAe,CAAC;wBACd,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACzC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACzB,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC7D,GAAG;qBACJ,CAAC;iBACH;aACF,CAAC,CAAA;YACF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;YAE5B,uEAAuE;YACvE,0EAA0E;YAC1E,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC1B,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACpD,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;gBACpD,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YAEF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;YACtD,CAAC,EAAE,OAAO,CAAC,CAAA;YAEX,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;oBACpC,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;oBAC5B,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACzD,CAAC,CAAA;gBACF,OAAO,MAAM,CAAA;YACf,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,UAAU,CAAC,iBAAiB;oBAC/C,MAAM,IAAI,aAAa,CAAC,wBAAwB,CAAC;wBAC/C,OAAO,EAAE,sCAAsC;qBAChD,CAAC,CAAA;gBACJ,IAAI,KAAK,YAAY,SAAS,CAAC,WAAW;oBACxC,MAAM,IAAI,KAAK,CAAC,qDAAqD,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC1F,MAAM,KAAK,CAAA;YACb,CAAC;oBAAS,CAAC;gBACT,YAAY,CAAC,KAAK,CAAC,CAAA;YACrB,CAAC;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAuCD,mFAAmF;AACnF,MAAM,OAAO,WAAY,SAAQ,KAAK;IAC3B,KAAK,CAAsB;IACpC,MAAM,CAAmB;IAEzB,YAAY,MAAyB,EAAE,KAAe;QACpD,KAAK,CACH,iCAAiC,MAAM,CAAC,QAAQ,UAAU,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,eAAe,YAAY,CAC3H,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF;AAED,sFAAsF;AACtF,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,MAAM,CAA+B;IAErC,YAAY,MAAqC;QAC/C,KAAK,CACH,MAAM;YACJ,CAAC,CAAC,qCAAqC,MAAM,CAAC,QAAQ,iBAAiB,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,eAAe,GAAG;YAC9H,CAAC,CAAC,6CAA6C,CAClD,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,cAAc,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/adapters/deviceCode/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/adapters/deviceCode/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type * as Adapter from '../../Adapter.js';
|
|
2
|
+
import { deviceCode } from './deviceCode.js';
|
|
3
|
+
/** Creates the Tempo Wallet adapter using the Wata device-code transport. */
|
|
4
|
+
export declare function tempoWallet(options: tempoWallet.Options): Adapter.Adapter;
|
|
5
|
+
export declare namespace tempoWallet {
|
|
6
|
+
/** Options for {@link tempoWallet}. */
|
|
7
|
+
type Options = Omit<deviceCode.Options, 'name' | 'rdns' | 'url'>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=tempoWallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tempoWallet.d.ts","sourceRoot":"","sources":["../../../../src/core/adapters/deviceCode/tempoWallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAOzE;AAED,MAAM,CAAC,OAAO,WAAW,WAAW,CAAC;IACnC,uCAAuC;IACvC,KAAY,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,CAAA;CACxE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { deviceCode } from './deviceCode.js';
|
|
2
|
+
/** Creates the Tempo Wallet adapter using the Wata device-code transport. */
|
|
3
|
+
export function tempoWallet(options) {
|
|
4
|
+
return deviceCode({
|
|
5
|
+
...options,
|
|
6
|
+
name: 'Tempo Wallet',
|
|
7
|
+
rdns: 'xyz.tempo',
|
|
8
|
+
url: 'https://wallet.tempo.xyz/auth/device',
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=tempoWallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tempoWallet.js","sourceRoot":"","sources":["../../../../src/core/adapters/deviceCode/tempoWallet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,6EAA6E;AAC7E,MAAM,UAAU,WAAW,CAAC,OAA4B;IACtD,OAAO,UAAU,CAAC;QAChB,GAAG,OAAO;QACV,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,WAAW;QACjB,GAAG,EAAE,sCAAsC;KAC5C,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -13,6 +13,16 @@ export declare function fromRequest(options: fromRequest.Options): Adapter.Adapt
|
|
|
13
13
|
export declare namespace fromRequest {
|
|
14
14
|
/** Options for {@link fromRequest}. */
|
|
15
15
|
type Options = {
|
|
16
|
+
/**
|
|
17
|
+
* Adapter-specific action overrides layered over the request-forwarding
|
|
18
|
+
* defaults. Receives the request channel plus the adapter's client and
|
|
19
|
+
* store for actions that need local bookkeeping around an exchange.
|
|
20
|
+
*/
|
|
21
|
+
actions?: ((context: {
|
|
22
|
+
getClient: Adapter.SetupFn.Parameters['getClient'];
|
|
23
|
+
request: Options['request'];
|
|
24
|
+
store: Adapter.SetupFn.Parameters['store'];
|
|
25
|
+
}) => Partial<Adapter.Instance['actions']>) | undefined;
|
|
16
26
|
/**
|
|
17
27
|
* Called once during setup with the adapter's store, for late wiring
|
|
18
28
|
* that needs to mutate local state (e.g. reconciling connection state
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fromRequest.d.ts","sourceRoot":"","sources":["../../../../src/core/adapters/internal/fromRequest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAGlD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"fromRequest.d.ts","sourceRoot":"","sources":["../../../../src/core/adapters/internal/fromRequest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAGlD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CA+GzE;AAED,MAAM,CAAC,OAAO,WAAW,WAAW,CAAC;IACnC,uCAAuC;IACvC,KAAY,OAAO,GAAG;QACpB;;;;WAIG;QACH,OAAO,CAAC,EACJ,CAAC,CAAC,OAAO,EAAE;YACT,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;YAClD,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;YAC3B,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;SAC3C,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,GAC3C,SAAS,CAAA;QACb;;;;WAIG;QACH,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;YAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;SAAE,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;QACtF;;;WAGG;QACH,OAAO,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAA;QAClC,6DAA6D;QAC7D,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;QACvC;;;;;;WAMG;QACH,SAAS,CAAC,EAAE,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1C;;;;WAIG;QACH,KAAK,CAAC,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAA;QACzC,6BAA6B;QAC7B,IAAI,EAAE,MAAM,CAAA;QACZ,uCAAuC;QACvC,IAAI,EAAE,MAAM,CAAA;QACZ,sEAAsE;QACtE,OAAO,EAAE,CAAC,OAAO,EAAE;YACjB,4BAA4B;YAC5B,MAAM,EAAE,MAAM,CAAA;YACd,uBAAuB;YACvB,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CAAA;YACvC,2EAA2E;YAC3E,OAAO,CAAC,EAAE;gBAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;gBAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;aAAE,GAAG,SAAS,CAAA;SACrF,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KACvB,CAAA;CACF"}
|
|
@@ -13,8 +13,8 @@ import * as Rpc from '../../zod/rpc.js';
|
|
|
13
13
|
* `request`.
|
|
14
14
|
*/
|
|
15
15
|
export function fromRequest(options) {
|
|
16
|
-
const { bind, cleanup, close, icon, keystores, name, rdns, request: requestRemote } = options;
|
|
17
|
-
return Adapter.define({ ...(icon ? { icon } : {}), name, rdns }, ({ getAccount, store }) => {
|
|
16
|
+
const { actions, bind, cleanup, close, icon, keystores, name, rdns, request: requestRemote, } = options;
|
|
17
|
+
return Adapter.define({ ...(icon ? { icon } : {}), name, rdns }, ({ getAccount, getClient, store }) => {
|
|
18
18
|
// Late-bind the store so the request channel can reconcile local
|
|
19
19
|
// connection state (e.g. a wallet `accountsChanged` notification).
|
|
20
20
|
bind?.({ store });
|
|
@@ -47,6 +47,7 @@ export function fromRequest(options) {
|
|
|
47
47
|
: {}),
|
|
48
48
|
...(capabilities?.personalSign ? { personalSign: capabilities.personalSign } : {}),
|
|
49
49
|
...(capabilities?.signature ? { signature: capabilities.signature } : {}),
|
|
50
|
+
...(capabilities?.username !== undefined ? { username: capabilities.username } : {}),
|
|
50
51
|
};
|
|
51
52
|
}
|
|
52
53
|
return {
|
|
@@ -88,6 +89,7 @@ export function fromRequest(options) {
|
|
|
88
89
|
params: [z.encode(Rpc.wallet_withdrawZone.parameters, parameters)],
|
|
89
90
|
}));
|
|
90
91
|
},
|
|
92
|
+
...actions?.({ getClient, request: requestRemote, store }),
|
|
91
93
|
},
|
|
92
94
|
...(cleanup ? { cleanup } : close ? { cleanup: () => void close() } : {}),
|
|
93
95
|
getAccount(parameters = {}) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fromRequest.js","sourceRoot":"","sources":["../../../../src/core/adapters/internal/fromRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,IAAI,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAA;AAE5B,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAA;AAE3C,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAA;AAEvC;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,OAA4B;IACtD,MAAM,
|
|
1
|
+
{"version":3,"file":"fromRequest.js","sourceRoot":"","sources":["../../../../src/core/adapters/internal/fromRequest.ts"],"names":[],"mappings":"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"}
|