@junobuild/core-peer 3.0.1 → 3.1.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/dist/browser/index.js +1 -1
- package/dist/browser/index.js.map +4 -4
- package/dist/node/index.mjs +1 -1
- package/dist/node/index.mjs.map +4 -4
- package/dist/types/auth/providers/_auth-client.providers.d.ts +4 -6
- package/dist/types/auth/providers/google.providers.d.ts +1 -8
- package/dist/types/auth/providers/internet-identity.providers.d.ts +2 -3
- package/dist/types/auth/providers/webauthn.providers.d.ts +1 -8
- package/dist/types/auth/services/_user.services.d.ts +2 -2
- package/dist/types/auth/services/sign-in.services.d.ts +2 -2
- package/dist/types/auth/types/provider.d.ts +13 -5
- package/dist/types/auth/types/user.d.ts +42 -14
- package/dist/types/auth/utils/user.utils.d.ts +19 -0
- package/dist/types/index.d.ts +1 -0
- package/package.json +2 -2
- package/dist/types/auth/providers/_auth.providers.d.ts +0 -11
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { type AuthClient } from '@icp-sdk/auth/client';
|
|
2
2
|
import { type AuthClientSignInOptions } from '../types/auth-client';
|
|
3
|
-
import type {
|
|
4
|
-
import type { AuthProvider } from './_auth.providers';
|
|
3
|
+
import type { ProviderWithoutData } from '../types/provider';
|
|
5
4
|
/**
|
|
6
5
|
* Options for signing in with an authentication provider.
|
|
7
6
|
* @interface AuthProviderSignInOptions
|
|
@@ -21,9 +20,8 @@ export interface AuthProviderSignInOptions {
|
|
|
21
20
|
*
|
|
22
21
|
* @abstract
|
|
23
22
|
* @class AuthClientProvider
|
|
24
|
-
* @implements {AuthProvider}
|
|
25
23
|
*/
|
|
26
|
-
export declare abstract class AuthClientProvider
|
|
24
|
+
export declare abstract class AuthClientProvider {
|
|
27
25
|
#private;
|
|
28
26
|
/**
|
|
29
27
|
* The unique identifier of the provider.
|
|
@@ -31,7 +29,7 @@ export declare abstract class AuthClientProvider implements AuthProvider {
|
|
|
31
29
|
* @abstract
|
|
32
30
|
* @type {Provider}
|
|
33
31
|
*/
|
|
34
|
-
abstract get id():
|
|
32
|
+
abstract get id(): ProviderWithoutData;
|
|
35
33
|
/**
|
|
36
34
|
* Returns the sign-in options for the provider.
|
|
37
35
|
*
|
|
@@ -59,7 +57,7 @@ export declare abstract class AuthClientProvider implements AuthProvider {
|
|
|
59
57
|
options?: AuthClientSignInOptions;
|
|
60
58
|
authClient: AuthClient | undefined | null;
|
|
61
59
|
initAuth: (params: {
|
|
62
|
-
provider:
|
|
60
|
+
provider: ProviderWithoutData;
|
|
63
61
|
}) => Promise<void>;
|
|
64
62
|
}): Promise<void>;
|
|
65
63
|
}
|
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
import type { GoogleSignInRedirectOptions } from '../types/google';
|
|
2
|
-
|
|
3
|
-
import type { AuthProvider } from './_auth.providers';
|
|
4
|
-
export declare class GoogleProvider implements AuthProvider {
|
|
5
|
-
/**
|
|
6
|
-
* Gets the identifier of the provider.
|
|
7
|
-
* @returns {Provider} The identifier of the provider is google.
|
|
8
|
-
*/
|
|
9
|
-
get id(): Provider;
|
|
2
|
+
export declare class GoogleProvider {
|
|
10
3
|
/**
|
|
11
4
|
* Initiates a Google sign-in flow.
|
|
12
5
|
*
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import type { AuthClientSignInOptions } from '../types/auth-client';
|
|
2
2
|
import type { InternetIdentityConfig } from '../types/internet-identity';
|
|
3
|
-
import type {
|
|
3
|
+
import type { ProviderWithoutData } from '../types/provider';
|
|
4
4
|
import { AuthClientProvider, type AuthProviderSignInOptions } from './_auth-client.providers';
|
|
5
5
|
/**
|
|
6
6
|
* Internet Identity authentication provider.
|
|
7
7
|
* @class InternetIdentityProvider
|
|
8
|
-
* @implements {AuthProvider}
|
|
9
8
|
*/
|
|
10
9
|
export declare class InternetIdentityProvider extends AuthClientProvider {
|
|
11
10
|
#private;
|
|
@@ -18,7 +17,7 @@ export declare class InternetIdentityProvider extends AuthClientProvider {
|
|
|
18
17
|
* Gets the identifier of the provider.
|
|
19
18
|
* @returns {Provider} The identifier of the provider - `internet_identity`.
|
|
20
19
|
*/
|
|
21
|
-
get id():
|
|
20
|
+
get id(): ProviderWithoutData;
|
|
22
21
|
/**
|
|
23
22
|
* Gets the sign-in options for Internet Identity.
|
|
24
23
|
* @param {Pick<SignInOptions, 'windowed'>} options - The sign-in options.
|
|
@@ -1,14 +1,7 @@
|
|
|
1
|
-
import type { Provider } from '../types/provider';
|
|
2
1
|
import type { User } from '../types/user';
|
|
3
2
|
import { type WebAuthnSignInOptions, type WebAuthnSignUpOptions } from '../types/webauthn';
|
|
4
|
-
|
|
5
|
-
export declare class WebAuthnProvider implements AuthProvider {
|
|
3
|
+
export declare class WebAuthnProvider {
|
|
6
4
|
#private;
|
|
7
|
-
/**
|
|
8
|
-
* Gets the identifier of the provider.
|
|
9
|
-
* @returns {Provider} The identifier of the provider is webauthn.
|
|
10
|
-
*/
|
|
11
|
-
get id(): Provider;
|
|
12
5
|
/**
|
|
13
6
|
* Signs up a user by creating a new passkey.
|
|
14
7
|
*
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ProviderWithoutData } from '../types/provider';
|
|
2
2
|
import type { User } from '../types/user';
|
|
3
3
|
type UserId = string;
|
|
4
4
|
export declare const initUser: ({ provider }: {
|
|
5
|
-
provider:
|
|
5
|
+
provider: ProviderWithoutData;
|
|
6
6
|
}) => Promise<User>;
|
|
7
7
|
export declare const loadUser: () => Promise<{
|
|
8
8
|
userId: UserId;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SignInOptions } from '../types/auth';
|
|
2
|
-
import type {
|
|
2
|
+
import type { ProviderWithoutData } from '../types/provider';
|
|
3
3
|
/**
|
|
4
4
|
* Initialize the authClient, load or create a new user.
|
|
5
5
|
* Executed on sign-in.
|
|
@@ -7,7 +7,7 @@ import type { Provider } from '../types/provider';
|
|
|
7
7
|
* ℹ️ Exposed for testing purpose only.
|
|
8
8
|
*/
|
|
9
9
|
export declare const createAuth: ({ provider }: {
|
|
10
|
-
provider:
|
|
10
|
+
provider: ProviderWithoutData;
|
|
11
11
|
}) => Promise<void>;
|
|
12
12
|
/**
|
|
13
13
|
* Signs in a user with the specified options.
|
|
@@ -7,6 +7,10 @@ export type DeprecatedNfid = 'nfid';
|
|
|
7
7
|
* @typedef {('internet_identity' | 'nfid' | 'webauthn' | 'google')} Provider
|
|
8
8
|
*/
|
|
9
9
|
export type Provider = 'internet_identity' | DeprecatedNfid | 'webauthn' | 'google';
|
|
10
|
+
/**
|
|
11
|
+
* Subset of authentication providers that do not include any provider-specific metadata.
|
|
12
|
+
*/
|
|
13
|
+
export type ProviderWithoutData = Extract<Provider, 'internet_identity' | DeprecatedNfid> | undefined;
|
|
10
14
|
/**
|
|
11
15
|
* Metadata for WebAuthn authentication.
|
|
12
16
|
* @interface ProviderDataWebAuthn
|
|
@@ -51,12 +55,16 @@ export interface ProviderDataOpenId {
|
|
|
51
55
|
locale?: string;
|
|
52
56
|
}
|
|
53
57
|
/**
|
|
54
|
-
*
|
|
58
|
+
* Metadata associated with a given authentication provider.
|
|
59
|
+
*
|
|
60
|
+
* For example:
|
|
61
|
+
* - `'webauthn'` → WebAuthn attestation details
|
|
62
|
+
* - `'openid'` → OpenID profile information (e.g. Google)
|
|
55
63
|
*
|
|
56
|
-
*
|
|
64
|
+
* Other providers have no associated metadata.
|
|
57
65
|
*/
|
|
58
|
-
export type ProviderData = {
|
|
66
|
+
export type ProviderData<P extends 'webauthn' | 'openid'> = P extends 'webauthn' ? {
|
|
59
67
|
webauthn: ProviderDataWebAuthn;
|
|
60
|
-
}
|
|
68
|
+
} : P extends 'openid' ? {
|
|
61
69
|
openid: ProviderDataOpenId;
|
|
62
|
-
};
|
|
70
|
+
} : never;
|
|
@@ -1,23 +1,51 @@
|
|
|
1
1
|
import type { Doc } from '../../datastore/types/doc';
|
|
2
|
-
import type { Provider, ProviderData } from './provider';
|
|
2
|
+
import type { DeprecatedNfid, Provider, ProviderData, ProviderWithoutData } from './provider';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
* @
|
|
4
|
+
* All supported authentication providers, plus `undefined` for providers
|
|
5
|
+
* that do not include any associated metadata (see {@link ProviderWithoutData}).
|
|
6
6
|
*/
|
|
7
|
-
export
|
|
7
|
+
export type UserProvider = Provider | undefined;
|
|
8
|
+
/**
|
|
9
|
+
* Data about the signed-in user.
|
|
10
|
+
*
|
|
11
|
+
* Resolves to the appropriate structure based on the provider:
|
|
12
|
+
* - `webauthn` → includes WebAuthn metadata.
|
|
13
|
+
* - `google` → includes OpenID profile metadata.
|
|
14
|
+
* - `internet_identity` / `nfid` / `undefined` → no provider-specific metadata.
|
|
15
|
+
*
|
|
16
|
+
* @template P Authentication provider (defaults to all).
|
|
17
|
+
*/
|
|
18
|
+
export type UserData<P extends UserProvider = UserProvider> = P extends 'webauthn' ? {
|
|
19
|
+
/**
|
|
20
|
+
* Sign-in via WebAuthn.
|
|
21
|
+
*/
|
|
22
|
+
provider: 'webauthn';
|
|
23
|
+
providerData: ProviderData<'webauthn'>;
|
|
24
|
+
} : P extends 'google' ? {
|
|
8
25
|
/**
|
|
9
|
-
*
|
|
10
|
-
* @type {Provider}
|
|
26
|
+
* Sign-in via Google.
|
|
11
27
|
*/
|
|
12
|
-
provider
|
|
28
|
+
provider: 'google';
|
|
29
|
+
providerData: ProviderData<'openid'>;
|
|
30
|
+
} : {
|
|
13
31
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
32
|
+
* Sign-in via another provider. There is no absolute guarantee that the information can be set by the browser
|
|
33
|
+
* during the sign-in flow, therefore it is optional.
|
|
16
34
|
*/
|
|
17
|
-
|
|
18
|
-
|
|
35
|
+
provider?: 'internet_identity' | DeprecatedNfid | undefined;
|
|
36
|
+
providerData?: never;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* A simplified version of {@link UserData} for users signed in with providers
|
|
40
|
+
* that don't include any extra metadata.
|
|
41
|
+
*/
|
|
42
|
+
export type UserDataWithoutProviderData<P extends UserProvider = UserProvider> = Extract<UserData<P>, {
|
|
43
|
+
provider?: ProviderWithoutData;
|
|
44
|
+
}>;
|
|
19
45
|
/**
|
|
20
|
-
*
|
|
21
|
-
*
|
|
46
|
+
* Represents a user's profile, including authentication provider
|
|
47
|
+
* and any associated metadata.
|
|
48
|
+
*
|
|
49
|
+
* @template P Authentication provider (defaults to all).
|
|
22
50
|
*/
|
|
23
|
-
export type User = Doc<UserData
|
|
51
|
+
export type User<P extends UserProvider = UserProvider> = Doc<UserData<P>>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { User } from '../types/user';
|
|
2
|
+
/**
|
|
3
|
+
* Checks whether a user signed in using WebAuthn.
|
|
4
|
+
*
|
|
5
|
+
* Acts as a type guard that narrows {@link User} to {@link User<'webauthn'>}.
|
|
6
|
+
*
|
|
7
|
+
* @param user - The user object to check.
|
|
8
|
+
* @returns True if the user signed in via WebAuthn.
|
|
9
|
+
*/
|
|
10
|
+
export declare const isWebAuthnUser: (user: User) => user is User<"webauthn">;
|
|
11
|
+
/**
|
|
12
|
+
* Checks whether a user signed in using Google (OpenID).
|
|
13
|
+
*
|
|
14
|
+
* Acts as a type guard that narrows {@link User} to {@link User<'google'>}.
|
|
15
|
+
*
|
|
16
|
+
* @param user - The user object to check.
|
|
17
|
+
* @returns True if the user signed in via Google.
|
|
18
|
+
*/
|
|
19
|
+
export declare const isGoogleUser: (user: User) => user is User<"google">;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export type * from './auth/types/progress';
|
|
|
16
16
|
export type * from './auth/types/provider';
|
|
17
17
|
export type * from './auth/types/user';
|
|
18
18
|
export * from './auth/types/webauthn';
|
|
19
|
+
export * from './auth/utils/user.utils';
|
|
19
20
|
export type * from './core/types/env';
|
|
20
21
|
export { ListOrder, ListPaginate, ListParams, ListResults } from './core/types/list';
|
|
21
22
|
export type * from './core/types/satellite';
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@junobuild/core-peer",
|
|
3
|
-
"version": "3.0
|
|
4
|
-
"description": "JavaScript core client for Juno
|
|
3
|
+
"version": "3.1.0",
|
|
4
|
+
"description": "JavaScript core client for Juno (deprecated, use @junobuild/core)",
|
|
5
5
|
"author": "David Dal Busco (https://daviddalbusco.com)",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Provider } from '../types/provider';
|
|
2
|
-
/**
|
|
3
|
-
* Common traits for all authentication providers
|
|
4
|
-
* @interface AuthProvider
|
|
5
|
-
*/
|
|
6
|
-
export interface AuthProvider {
|
|
7
|
-
/**
|
|
8
|
-
* The unique identifier of the provider.
|
|
9
|
-
*/
|
|
10
|
-
readonly id: Provider;
|
|
11
|
-
}
|