@tempoxyz/auth 0.0.0-pr-73.sha-b3def8a → 0.0.0-pr-71.sha-b89841e
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/Actions.d.ts +0 -6
- package/dist/Actions.js +0 -1
- package/dist/Auth.d.ts +1 -1
- package/dist/actions/device.d.ts +0 -6
- package/dist/actions/device.js +0 -3
- package/dist/actions/email.d.ts +0 -6
- package/dist/actions/email.js +2 -6
- package/dist/actions/passkey.d.ts +1 -8
- package/dist/actions/passkey.js +3 -8
- package/dist/actions/redirect.d.ts +0 -12
- package/dist/actions/redirect.js +0 -3
- package/dist/internal/request.d.ts +0 -3
- package/dist/internal/request.js +1 -2
- package/package.json +1 -1
package/dist/Actions.d.ts
CHANGED
|
@@ -35,12 +35,6 @@ export declare namespace authorize {
|
|
|
35
35
|
* defaults to the user's first. Defaults to a new key.
|
|
36
36
|
*/
|
|
37
37
|
accessKey?: Account.Account | undefined;
|
|
38
|
-
/**
|
|
39
|
-
* A message the owner's signature binds, such as a sign-in challenge the app's backend issued.
|
|
40
|
-
* Tempo Auth binds its EIP-191 hash as the key authorization's `witness`. Only an app with the
|
|
41
|
-
* `tempo-auth:sign` scope may send one.
|
|
42
|
-
*/
|
|
43
|
-
challenge?: string | undefined;
|
|
44
38
|
/** What the key may do. It must fit the headless ceiling, which fills what it leaves out. */
|
|
45
39
|
permissions?: Permissions<chainId> | undefined;
|
|
46
40
|
};
|
package/dist/Actions.js
CHANGED
package/dist/Auth.d.ts
CHANGED
|
@@ -86,7 +86,7 @@ export declare namespace RequestError {
|
|
|
86
86
|
uri?: string | undefined;
|
|
87
87
|
};
|
|
88
88
|
/** Each refusal's stable name. `docs/errors.md` explains each one. */
|
|
89
|
-
type Reason = 'already_decided' | 'approval_pending' | 'body_too_large' | '
|
|
89
|
+
type Reason = 'already_decided' | 'approval_pending' | 'body_too_large' | 'cross_site_request' | 'device_code_expired' | 'duplicate_limit' | 'empty_limits' | 'empty_scopes' | 'expiry_exceeds_maximum' | 'expiry_passed' | 'foreign_account' | 'foreign_origin' | 'invalid_chain' | 'invalid_code' | 'invalid_expiry' | 'invalid_field' | 'invalid_origin' | 'invalid_period' | 'invalid_public_key' | 'limit_exceeds_maximum' | 'malformed_body' | 'missing_code_challenge' | 'missing_key' | 'missing_recipients' | 'polling_too_fast' | 'rate_limited' | 'rejected' | 'request_denied' | 'scope_without_limit' | 'session_required' | 'unexpected' | 'unknown_code' | 'unknown_endpoint' | 'unsupported_call' | 'unsupported_step' | 'unsupported_token' | 'upstream_unavailable' | 'webauthn_rejected' | 'webauthn_required';
|
|
90
90
|
}
|
|
91
91
|
/** A client's {@link Account} read before a sign-in set it, or after sign-out emptied it. */
|
|
92
92
|
export declare class SignedOutError extends Error {
|
package/dist/actions/device.d.ts
CHANGED
|
@@ -21,12 +21,6 @@ export declare namespace authorize {
|
|
|
21
21
|
* defaults to the user's first. Defaults to a new key.
|
|
22
22
|
*/
|
|
23
23
|
accessKey?: Account.Account | undefined;
|
|
24
|
-
/**
|
|
25
|
-
* A message the owner's signature binds, such as a sign-in challenge the app's backend issued.
|
|
26
|
-
* Tempo Auth binds its EIP-191 hash as the key authorization's `witness`. Only an app with the
|
|
27
|
-
* `tempo-auth:sign` scope may send one.
|
|
28
|
-
*/
|
|
29
|
-
challenge?: string | undefined;
|
|
30
24
|
/**
|
|
31
25
|
* The name the approval page shows. Defaults to the machine's hostname in Node, Bun, and Deno,
|
|
32
26
|
* and to `Unknown device` elsewhere.
|
package/dist/actions/device.js
CHANGED
|
@@ -17,9 +17,6 @@ export async function authorize(auth, options = {}) {
|
|
|
17
17
|
const key = await AccessKey.resolve(options.accessKey);
|
|
18
18
|
const code = await Api.json(await Api.post(auth, '/v1/device/authorize', {
|
|
19
19
|
json: {
|
|
20
|
-
...(options.challenge === undefined
|
|
21
|
-
? {}
|
|
22
|
-
: { challenge: options.challenge }),
|
|
23
20
|
device: options.device ?? hostname(),
|
|
24
21
|
key_authorization: request(auth, {
|
|
25
22
|
accessKey: key.accessKey,
|
package/dist/actions/email.d.ts
CHANGED
|
@@ -40,12 +40,6 @@ export declare namespace signIn {
|
|
|
40
40
|
* defaults to the user's first. Defaults to a new key.
|
|
41
41
|
*/
|
|
42
42
|
accessKey?: Account.Account | undefined;
|
|
43
|
-
/**
|
|
44
|
-
* A message the owner's signature binds, such as a sign-in challenge the app's backend issued.
|
|
45
|
-
* Tempo Auth binds its EIP-191 hash as the key authorization's `witness`. Only an app with the
|
|
46
|
-
* `tempo-auth:sign` scope may send one.
|
|
47
|
-
*/
|
|
48
|
-
challenge?: string | undefined;
|
|
49
43
|
/** The 6-digit code the user was emailed. */
|
|
50
44
|
code: string;
|
|
51
45
|
/** The address the code was sent to. */
|
package/dist/actions/email.js
CHANGED
|
@@ -23,15 +23,11 @@ export async function sendCode(auth, options) {
|
|
|
23
23
|
* ```
|
|
24
24
|
*/
|
|
25
25
|
export async function signIn(auth, options) {
|
|
26
|
-
const {
|
|
26
|
+
const { code, email, link, permissions } = options;
|
|
27
27
|
const key = await AccessKey.resolve(options.accessKey);
|
|
28
28
|
const body = await Api.json(await Api.post(auth, '/v1/auth/code/verify', {
|
|
29
29
|
json: {
|
|
30
|
-
authorize: request(auth, {
|
|
31
|
-
accessKey: key.accessKey,
|
|
32
|
-
challenge,
|
|
33
|
-
permissions,
|
|
34
|
-
}),
|
|
30
|
+
authorize: request(auth, { accessKey: key.accessKey, permissions }),
|
|
35
31
|
code,
|
|
36
32
|
email,
|
|
37
33
|
...(link ? { link } : {}),
|
|
@@ -11,8 +11,7 @@ import type { Permissions } from '../Permissions.ts';
|
|
|
11
11
|
/**
|
|
12
12
|
* Signs the user in with a passkey, and authorizes the app in the same call. Returns the email step
|
|
13
13
|
* for a wallet.tempo passkey whose account has no email: the app signs the user in with
|
|
14
|
-
* `Actions.email.signIn`, passing the step's `link`, which links the passkey
|
|
15
|
-
* `accessKey`, `challenge`, and `permissions`, which this call does not authorize. Throws a `RequestError` with reason
|
|
14
|
+
* `Actions.email.signIn`, passing the step's `link`, which links the passkey. Throws a `RequestError` with reason
|
|
16
15
|
* `webauthn_required` when a passkey owns the Tempo Account the key acts for, since a passkey signs a
|
|
17
16
|
* key authorization only on Tempo Auth's pages. `Actions.redirect.start` authorizes it there, where
|
|
18
17
|
* the user is already signed in.
|
|
@@ -31,12 +30,6 @@ export declare namespace signIn {
|
|
|
31
30
|
* defaults to the user's first. Defaults to a new key.
|
|
32
31
|
*/
|
|
33
32
|
accessKey?: Account.Account | undefined;
|
|
34
|
-
/**
|
|
35
|
-
* A message the owner's signature binds, such as a sign-in challenge the app's backend issued.
|
|
36
|
-
* Tempo Auth binds its EIP-191 hash as the key authorization's `witness`. Only an app with the
|
|
37
|
-
* `tempo-auth:sign` scope may send one.
|
|
38
|
-
*/
|
|
39
|
-
challenge?: string | undefined;
|
|
40
33
|
/**
|
|
41
34
|
* Runs the WebAuthn ceremony in place of `navigator.credentials.get`, such as a native passkey
|
|
42
35
|
* module. Its assertion must report a web origin on the relying party's domain that the app
|
package/dist/actions/passkey.js
CHANGED
|
@@ -10,8 +10,7 @@ import { request } from '../internal/request.js';
|
|
|
10
10
|
/**
|
|
11
11
|
* Signs the user in with a passkey, and authorizes the app in the same call. Returns the email step
|
|
12
12
|
* for a wallet.tempo passkey whose account has no email: the app signs the user in with
|
|
13
|
-
* `Actions.email.signIn`, passing the step's `link`, which links the passkey
|
|
14
|
-
* `accessKey`, `challenge`, and `permissions`, which this call does not authorize. Throws a `RequestError` with reason
|
|
13
|
+
* `Actions.email.signIn`, passing the step's `link`, which links the passkey. Throws a `RequestError` with reason
|
|
15
14
|
* `webauthn_required` when a passkey owns the Tempo Account the key acts for, since a passkey signs a
|
|
16
15
|
* key authorization only on Tempo Auth's pages. `Actions.redirect.start` authorizes it there, where
|
|
17
16
|
* the user is already signed in.
|
|
@@ -23,7 +22,7 @@ import { request } from '../internal/request.js';
|
|
|
23
22
|
* ```
|
|
24
23
|
*/
|
|
25
24
|
export async function signIn(auth, options = {}) {
|
|
26
|
-
const {
|
|
25
|
+
const { getFn, permissions } = options;
|
|
27
26
|
const key = await AccessKey.resolve(options.accessKey);
|
|
28
27
|
const requested = await Api.json(await Api.post(auth, '/v1/auth/passkey/options', { json: {} }));
|
|
29
28
|
const deserialized = Authentication.deserializeOptions(requested.options);
|
|
@@ -33,11 +32,7 @@ export async function signIn(auth, options = {}) {
|
|
|
33
32
|
const body = await Api.json(await Api.post(auth, '/v1/auth/passkey/verify', {
|
|
34
33
|
json: {
|
|
35
34
|
assertion,
|
|
36
|
-
authorize: request(auth, {
|
|
37
|
-
accessKey: key.accessKey,
|
|
38
|
-
challenge,
|
|
39
|
-
permissions,
|
|
40
|
-
}),
|
|
35
|
+
authorize: request(auth, { accessKey: key.accessKey, permissions }),
|
|
41
36
|
},
|
|
42
37
|
}));
|
|
43
38
|
if ('step' in body)
|
|
@@ -45,12 +45,6 @@ export declare namespace createUrl {
|
|
|
45
45
|
* defaults to the user's first. Defaults to a new key, whose material `pending` keeps.
|
|
46
46
|
*/
|
|
47
47
|
accessKey?: Account.Account | undefined;
|
|
48
|
-
/**
|
|
49
|
-
* A message the owner's signature binds, such as a sign-in challenge the app's backend issued.
|
|
50
|
-
* Tempo Auth binds its EIP-191 hash as the key authorization's `witness`. Only an app with the
|
|
51
|
-
* `tempo-auth:sign` scope may send one.
|
|
52
|
-
*/
|
|
53
|
-
challenge?: string | undefined;
|
|
54
48
|
/** What the key may do. Tempo Auth's pages show it, and the headless ceiling fills what it leaves out. */
|
|
55
49
|
permissions?: Permissions | undefined;
|
|
56
50
|
/** Where Tempo Auth redirects back to. Defaults to the instance's `redirectUri`. */
|
|
@@ -103,12 +97,6 @@ export declare namespace start {
|
|
|
103
97
|
* key, which `storage` keeps until the browser returns.
|
|
104
98
|
*/
|
|
105
99
|
accessKey?: Account.Account | undefined;
|
|
106
|
-
/**
|
|
107
|
-
* A message the owner's signature binds, such as a sign-in challenge the app's backend issued.
|
|
108
|
-
* Tempo Auth binds its EIP-191 hash as the key authorization's `witness`. Only an app with the
|
|
109
|
-
* `tempo-auth:sign` scope may send one.
|
|
110
|
-
*/
|
|
111
|
-
challenge?: string | undefined;
|
|
112
100
|
/** What the key may do. Tempo Auth's pages show it, and the headless ceiling fills what it leaves out. */
|
|
113
101
|
permissions?: Permissions | undefined;
|
|
114
102
|
};
|
package/dist/actions/redirect.js
CHANGED
|
@@ -75,9 +75,6 @@ export async function createUrl(auth, options = {}) {
|
|
|
75
75
|
});
|
|
76
76
|
const url = new URL('/authorize', auth.url);
|
|
77
77
|
url.search = new URLSearchParams({
|
|
78
|
-
...(options.challenge === undefined
|
|
79
|
-
? {}
|
|
80
|
-
: { challenge: options.challenge }),
|
|
81
78
|
client_id,
|
|
82
79
|
code_challenge: Base64.fromBytes(Hash.sha256(Bytes.fromString(pending.verifier)), base64url),
|
|
83
80
|
key_authorization: Base64.fromString(JSON.stringify(key_authorization), base64url),
|
|
@@ -7,11 +7,8 @@ import type { Permissions } from '../Permissions.ts';
|
|
|
7
7
|
*/
|
|
8
8
|
export declare function request(auth: Auth, options: {
|
|
9
9
|
accessKey: Account.Account;
|
|
10
|
-
/** A message the key's witness binds. */
|
|
11
|
-
challenge?: string | undefined;
|
|
12
10
|
permissions?: Permissions | undefined;
|
|
13
11
|
}): {
|
|
14
|
-
challenge?: string;
|
|
15
12
|
client_id: string;
|
|
16
13
|
key_authorization: {
|
|
17
14
|
account?: `0x${string}`;
|
package/dist/internal/request.js
CHANGED
|
@@ -9,9 +9,8 @@ import { Hex } from 'ox';
|
|
|
9
9
|
* key account names its Tempo Account through `access`, and a plain key leaves it to Tempo Auth.
|
|
10
10
|
*/
|
|
11
11
|
export function request(auth, options) {
|
|
12
|
-
const { accessKey,
|
|
12
|
+
const { accessKey, permissions = {} } = options;
|
|
13
13
|
return {
|
|
14
|
-
...(challenge === undefined ? {} : { challenge }),
|
|
15
14
|
client_id: auth.clientId,
|
|
16
15
|
key_authorization: {
|
|
17
16
|
...(accessKey.accessKeyAddress ? { account: accessKey.address } : {}),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tempoxyz/auth",
|
|
3
|
-
"version": "0.0.0-pr-
|
|
3
|
+
"version": "0.0.0-pr-71.sha-b89841e",
|
|
4
4
|
"description": "Signs users in to Tempo through Tempo Auth, and returns Viem access key accounts on their Tempo Accounts.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|