@spfn/auth 0.2.0-beta.86 → 0.2.0-beta.88
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/README.md +347 -27
- package/dist/{authenticate-DTA7W4v2.d.ts → authenticate-ZssfqJ7d.d.ts} +201 -5
- package/dist/client-proof.d.ts +185 -46
- package/dist/client-proof.js +253 -34
- package/dist/client-proof.js.map +1 -1
- package/dist/config.d.ts +36 -0
- package/dist/config.js +18 -0
- package/dist/config.js.map +1 -1
- package/dist/errors.d.ts +93 -2
- package/dist/errors.js +57 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +33 -3
- package/dist/index.js +60 -0
- package/dist/index.js.map +1 -1
- package/dist/nextjs/server.d.ts +2 -2
- package/dist/server.d.ts +148 -12
- package/dist/server.js +1410 -192
- package/dist/server.js.map +1 -1
- package/dist/{session-CGxgH3C9.d.ts → session-CFK4BT25.d.ts} +1 -1
- package/dist/{types-1BMx0OX1.d.ts → types-CD95yudz.d.ts} +15 -1
- package/migrations/20251125021229_premium_famine/snapshot.json +2641 -0
- package/migrations/20260225130050_smooth_the_fury/snapshot.json +2686 -0
- package/migrations/20260308141417_deep_iceman/snapshot.json +2686 -0
- package/migrations/20260308151309_perfect_deathbird/snapshot.json +2731 -0
- package/migrations/20260308201135_concerned_rawhide_kid/snapshot.json +2786 -0
- package/migrations/20260629103209_lethal_lifeguard/snapshot.json +2786 -0
- package/migrations/20260709073531_easy_hardball/snapshot.json +3119 -0
- package/migrations/20260714081434_glossy_major_mapleleaf/snapshot.json +3112 -0
- package/migrations/20260804105939_amazing_bushwacker/migration.sql +3 -0
- package/migrations/20260804105939_amazing_bushwacker/snapshot.json +3112 -0
- package/migrations/20260804110033_fat_piledriver/migration.sql +2 -0
- package/migrations/20260804110033_fat_piledriver/snapshot.json +3138 -0
- package/package.json +6 -9
- package/migrations/meta/0000_snapshot.json +0 -1632
- package/migrations/meta/0001_snapshot.json +0 -1660
- package/migrations/meta/0002_snapshot.json +0 -1660
- package/migrations/meta/0003_snapshot.json +0 -1689
- package/migrations/meta/0004_snapshot.json +0 -1721
- package/migrations/meta/0005_snapshot.json +0 -1721
- package/migrations/meta/0006_snapshot.json +0 -1921
- package/migrations/meta/0007_snapshot.json +0 -1916
- package/migrations/meta/_journal.json +0 -62
- /package/migrations/{0000_premium_famine.sql → 20251125021229_premium_famine/migration.sql} +0 -0
- /package/migrations/{0001_smooth_the_fury.sql → 20260225130050_smooth_the_fury/migration.sql} +0 -0
- /package/migrations/{0002_deep_iceman.sql → 20260308141417_deep_iceman/migration.sql} +0 -0
- /package/migrations/{0003_perfect_deathbird.sql → 20260308151309_perfect_deathbird/migration.sql} +0 -0
- /package/migrations/{0004_concerned_rawhide_kid.sql → 20260308201135_concerned_rawhide_kid/migration.sql} +0 -0
- /package/migrations/{0005_lethal_lifeguard.sql → 20260629103209_lethal_lifeguard/migration.sql} +0 -0
- /package/migrations/{0006_easy_hardball.sql → 20260709073531_easy_hardball/migration.sql} +0 -0
- /package/migrations/{0007_glossy_major_mapleleaf.sql → 20260714081434_glossy_major_mapleleaf/migration.sql} +0 -0
package/dist/nextjs/server.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
|
-
import { S as SessionData } from '../session-
|
|
4
|
-
import { K as KeyAlgorithmType } from '../types-
|
|
3
|
+
import { S as SessionData } from '../session-CFK4BT25.js';
|
|
4
|
+
import { K as KeyAlgorithmType } from '../types-CD95yudz.js';
|
|
5
5
|
import { NextRequest, NextResponse } from 'next/server';
|
|
6
6
|
|
|
7
7
|
interface RequireAuthProps {
|
package/dist/server.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export { C as ChangePasswordParams,
|
|
1
|
+
import { k as AuthInitOptions, l as OAuthProvider, f as VerificationPurpose, j as PermissionCategory, n as AuthContext } from './authenticate-ZssfqJ7d.js';
|
|
2
|
+
export { ab as AuthProfileVerifier, C as ChangePasswordParams, ag as DeviceNameSchema, ae as EmailSchema, I as IssueOneTimeTokenResult, H as KEY_FINGERPRINT_PREFIX_LENGTH, K as KeySummary, t as LoginParams, L as LoginResult, u as LogoutParams, an as NativeVerifyOptions, al as NormalizedIdentity, a4 as OAuthCallbackParams, a5 as OAuthCallbackResult, ao as OAuthCodeExchangeOptions, a8 as OAuthNativeParams, d as OAuthNativeResult, a3 as OAuthStartParams, O as OAuthStartResult, am as OAuthTokens, ai as PasswordSchema, af as PhoneSchema, ah as PlatformSchema, s as RegisterParams, J as RegisterPublicKeyParams, a as RegisterResult, Q as RevokeAllKeysParams, c as RevokeAllKeysResult, N as RevokeKeyParams, M as RotateKeyParams, b as RotateKeyResult, x as SendVerificationCodeParams, S as SendVerificationCodeResult, aj as TargetTypeSchema, aq as UnlinkNotification, ar as UnlinkNotifyRejection, ap as UnlinkNotifyRequest, a6 as UnlinkNotifyResult, h as VERIFICATION_PURPOSES, g as VERIFICATION_TARGET_TYPES, ak as VerificationPurposeSchema, V as VerificationTargetType, y as VerifyCodeParams, z as VerifyCodeResult, m as authRouter, ac as authenticate, Z as buildOAuthErrorUrl, q as changePasswordService, a0 as getEnabledOAuthProviders, a1 as getGoogleAccessToken, at as getOAuthProvider, au as getRegisteredProviders, _ as isOAuthProviderEnabled, T as issueOneTimeTokenService, F as listKeysService, o as loginService, p as logoutService, Y as oauthCallbackService, a7 as oauthNativeService, X as oauthStartService, a2 as oauthUnlinkNotifyService, ad as optionalAuth, as as registerOAuthProvider, B as registerPublicKeyService, r as registerService, $ as requireEnabledProvider, aa as resolveAuthenticatedUser, G as revokeAllKeysService, E as revokeKeyService, D as rotateKeyService, a9 as selectAuthProfile, v as sendVerificationCodeService, w as verifyCodeService, W as verifyOneTimeTokenService } from './authenticate-ZssfqJ7d.js';
|
|
3
3
|
import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core';
|
|
4
|
-
import { K as KeyAlgorithmType,
|
|
5
|
-
export { b as ACCOUNT_DELETION_REQUESTED_BY, A as ACCOUNT_DELETION_REQUEST_STATUSES,
|
|
4
|
+
import { K as KeyAlgorithmType, f as InvitationStatus, h as SocialProvider, j as AccountDeletionRequestedBy, k as PurgeStrategy } from './types-CD95yudz.js';
|
|
5
|
+
export { b as ACCOUNT_DELETION_REQUESTED_BY, A as ACCOUNT_DELETION_REQUEST_STATUSES, i as AccountDeletionRequestStatus, I as INVITATION_STATUSES, a as KEY_ALGORITHM, e as KEY_DEVICE_NAME_MAX_LENGTH, c as KEY_PLATFORM, d as KeyPlatformType, P as PURGE_STRATEGIES, S as SOCIAL_PROVIDERS, U as USER_STATUSES, g as UserStatus } from './types-CD95yudz.js';
|
|
6
6
|
import { UserProfile as UserProfile$1, ProfileInfo } from '@spfn/auth';
|
|
7
7
|
import { BaseRepository } from '@spfn/core/db';
|
|
8
8
|
import { Context } from 'hono';
|
|
9
9
|
import * as _spfn_core_route from '@spfn/core/route';
|
|
10
10
|
import { Algorithm } from 'jsonwebtoken';
|
|
11
|
-
export { S as SessionData, g as getSessionInfo, s as sealSession, a as shouldRefreshSession, u as unsealSession } from './session-
|
|
11
|
+
export { S as SessionData, g as getSessionInfo, s as sealSession, a as shouldRefreshSession, u as unsealSession } from './session-CFK4BT25.js';
|
|
12
12
|
import { JWTPayload } from 'jose';
|
|
13
13
|
import { SSETokenStore, SSETokenManager } from '@spfn/core/event/sse';
|
|
14
14
|
import * as _spfn_core_logger from '@spfn/core/logger';
|
|
@@ -1526,7 +1526,7 @@ declare function verifyOAuthState(encryptedState: string): Promise<OAuthState>;
|
|
|
1526
1526
|
*
|
|
1527
1527
|
* 네이티브/웹 SDK가 받은 id_token을 provider의 공개키(JWKS)로 검증한다.
|
|
1528
1528
|
* authorization code 교환이 없으므로 client secret을 쓰지 않는다.
|
|
1529
|
-
* 서명·issuer·audience
|
|
1529
|
+
* 서명·issuer·audience·만료·발급 후 경과 시간은 jose가, nonce는 여기서 직접 대조한다.
|
|
1530
1530
|
*/
|
|
1531
1531
|
|
|
1532
1532
|
interface VerifyIdTokenParams {
|
|
@@ -1542,7 +1542,7 @@ interface VerifyIdTokenParams {
|
|
|
1542
1542
|
/**
|
|
1543
1543
|
* id_token을 검증하고 claims(payload)를 반환한다.
|
|
1544
1544
|
*
|
|
1545
|
-
* @throws InvalidSocialTokenError 서명/issuer/audience
|
|
1545
|
+
* @throws InvalidSocialTokenError 서명/issuer/audience/만료/토큰 나이/알고리즘/nonce/sub 검증 실패 시
|
|
1546
1546
|
*/
|
|
1547
1547
|
declare function verifyIdToken(params: VerifyIdTokenParams): Promise<JWTPayload>;
|
|
1548
1548
|
|
|
@@ -1617,13 +1617,13 @@ declare const appleProvider: OAuthProvider;
|
|
|
1617
1617
|
declare const githubProvider: OAuthProvider;
|
|
1618
1618
|
|
|
1619
1619
|
/**
|
|
1620
|
-
* Kakao Login OAuthProvider (web authorization-code flow).
|
|
1620
|
+
* Kakao Login OAuthProvider (web authorization-code flow + native id_token verification).
|
|
1621
1621
|
*/
|
|
1622
1622
|
|
|
1623
1623
|
declare const kakaoProvider: OAuthProvider;
|
|
1624
1624
|
|
|
1625
1625
|
/**
|
|
1626
|
-
* Naver Login OAuthProvider (web authorization-code flow).
|
|
1626
|
+
* Naver Login OAuthProvider (web authorization-code flow + native id_token verification).
|
|
1627
1627
|
*/
|
|
1628
1628
|
|
|
1629
1629
|
declare const naverProvider: OAuthProvider;
|
|
@@ -2341,6 +2341,36 @@ declare const userPublicKeys: drizzle_orm_pg_core.PgTableWithColumns<{
|
|
|
2341
2341
|
identity: undefined;
|
|
2342
2342
|
generated: undefined;
|
|
2343
2343
|
}>;
|
|
2344
|
+
deviceName: drizzle_orm_pg_core.PgBuildColumn<"user_public_keys", drizzle_orm_pg_core.PgTextBuilder<[string, ...string[]]>, {
|
|
2345
|
+
name: string;
|
|
2346
|
+
tableName: "user_public_keys";
|
|
2347
|
+
dataType: "string";
|
|
2348
|
+
data: string;
|
|
2349
|
+
driverParam: string;
|
|
2350
|
+
notNull: false;
|
|
2351
|
+
hasDefault: false;
|
|
2352
|
+
isPrimaryKey: false;
|
|
2353
|
+
isAutoincrement: false;
|
|
2354
|
+
hasRuntimeDefault: false;
|
|
2355
|
+
enumValues: undefined;
|
|
2356
|
+
identity: undefined;
|
|
2357
|
+
generated: undefined;
|
|
2358
|
+
}>;
|
|
2359
|
+
platform: drizzle_orm_pg_core.PgBuildColumn<"user_public_keys", drizzle_orm_pg_core.PgTextBuilder<["ios", "android", "web", "desktop"] & [string, ...string[]]>, {
|
|
2360
|
+
name: string;
|
|
2361
|
+
tableName: "user_public_keys";
|
|
2362
|
+
dataType: "string enum";
|
|
2363
|
+
data: "ios" | "android" | "web" | "desktop";
|
|
2364
|
+
driverParam: string;
|
|
2365
|
+
notNull: false;
|
|
2366
|
+
hasDefault: false;
|
|
2367
|
+
isPrimaryKey: false;
|
|
2368
|
+
isAutoincrement: false;
|
|
2369
|
+
hasRuntimeDefault: false;
|
|
2370
|
+
enumValues: ["ios", "android", "web", "desktop"] & [string, ...string[]];
|
|
2371
|
+
identity: undefined;
|
|
2372
|
+
generated: undefined;
|
|
2373
|
+
}>;
|
|
2344
2374
|
isActive: drizzle_orm_pg_core.PgBuildColumn<"user_public_keys", drizzle_orm_pg_core.SetHasDefault<drizzle_orm_pg_core.SetNotNull<drizzle_orm_pg_core.PgBooleanBuilder>>, {
|
|
2345
2375
|
name: string;
|
|
2346
2376
|
tableName: "user_public_keys";
|
|
@@ -3681,6 +3711,8 @@ declare class KeysRepository extends BaseRepository {
|
|
|
3681
3711
|
publicKey: string;
|
|
3682
3712
|
algorithm: "ES256" | "RS256";
|
|
3683
3713
|
fingerprint: string;
|
|
3714
|
+
deviceName: string | null;
|
|
3715
|
+
platform: "ios" | "android" | "web" | "desktop" | null;
|
|
3684
3716
|
isActive: boolean;
|
|
3685
3717
|
createdAt: Date;
|
|
3686
3718
|
lastUsedAt: Date | null;
|
|
@@ -3699,6 +3731,8 @@ declare class KeysRepository extends BaseRepository {
|
|
|
3699
3731
|
publicKey: string;
|
|
3700
3732
|
algorithm: "ES256" | "RS256";
|
|
3701
3733
|
fingerprint: string;
|
|
3734
|
+
deviceName: string | null;
|
|
3735
|
+
platform: "ios" | "android" | "web" | "desktop" | null;
|
|
3702
3736
|
isActive: boolean;
|
|
3703
3737
|
createdAt: Date;
|
|
3704
3738
|
lastUsedAt: Date | null;
|
|
@@ -3717,6 +3751,8 @@ declare class KeysRepository extends BaseRepository {
|
|
|
3717
3751
|
publicKey: string;
|
|
3718
3752
|
algorithm: "ES256" | "RS256";
|
|
3719
3753
|
fingerprint: string;
|
|
3754
|
+
deviceName: string | null;
|
|
3755
|
+
platform: "ios" | "android" | "web" | "desktop" | null;
|
|
3720
3756
|
isActive: boolean;
|
|
3721
3757
|
createdAt: Date;
|
|
3722
3758
|
lastUsedAt: Date | null;
|
|
@@ -3724,6 +3760,28 @@ declare class KeysRepository extends BaseRepository {
|
|
|
3724
3760
|
revokedAt: Date | null;
|
|
3725
3761
|
revokedReason: string | null;
|
|
3726
3762
|
}[]>;
|
|
3763
|
+
/**
|
|
3764
|
+
* 키 목록 화면이 쓰는 공개키 조회 — 최근 등록순
|
|
3765
|
+
*
|
|
3766
|
+
* publicKey 원문은 고르지 않는다. 목록의 용도는 기기를 알아보고 지목하는 것이고,
|
|
3767
|
+
* 공개키는 그 어느 쪽에도 필요 없다. fingerprint는 호출자가 잘라서 내보낸다.
|
|
3768
|
+
*
|
|
3769
|
+
* `includeRevoked`는 이미 끊은 기기까지 보여준다 — "내가 언제 무엇을 끊었나"를
|
|
3770
|
+
* 확인하는 용도라, 폐기 시각과 사유를 함께 고른다.
|
|
3771
|
+
* Read replica 사용
|
|
3772
|
+
*/
|
|
3773
|
+
listForUser(userId: number, includeRevoked?: boolean): Promise<{
|
|
3774
|
+
keyId: string;
|
|
3775
|
+
deviceName: string | null;
|
|
3776
|
+
platform: "ios" | "android" | "web" | "desktop" | null;
|
|
3777
|
+
algorithm: "ES256" | "RS256";
|
|
3778
|
+
fingerprint: string;
|
|
3779
|
+
isActive: boolean;
|
|
3780
|
+
createdAt: Date;
|
|
3781
|
+
lastUsedAt: Date | null;
|
|
3782
|
+
expiresAt: Date | null;
|
|
3783
|
+
revokedAt: Date | null;
|
|
3784
|
+
}[]>;
|
|
3727
3785
|
/**
|
|
3728
3786
|
* 공개키 생성
|
|
3729
3787
|
* Write primary 사용
|
|
@@ -3737,6 +3795,8 @@ declare class KeysRepository extends BaseRepository {
|
|
|
3737
3795
|
publicKey: string;
|
|
3738
3796
|
algorithm: "ES256" | "RS256";
|
|
3739
3797
|
fingerprint: string;
|
|
3798
|
+
deviceName: string | null;
|
|
3799
|
+
platform: "ios" | "android" | "web" | "desktop" | null;
|
|
3740
3800
|
lastUsedAt: Date | null;
|
|
3741
3801
|
expiresAt: Date | null;
|
|
3742
3802
|
revokedAt: Date | null;
|
|
@@ -3753,6 +3813,8 @@ declare class KeysRepository extends BaseRepository {
|
|
|
3753
3813
|
publicKey: string;
|
|
3754
3814
|
algorithm: "ES256" | "RS256";
|
|
3755
3815
|
fingerprint: string;
|
|
3816
|
+
deviceName: string | null;
|
|
3817
|
+
platform: "ios" | "android" | "web" | "desktop" | null;
|
|
3756
3818
|
isActive: boolean;
|
|
3757
3819
|
createdAt: Date;
|
|
3758
3820
|
lastUsedAt: Date | null;
|
|
@@ -3774,6 +3836,31 @@ declare class KeysRepository extends BaseRepository {
|
|
|
3774
3836
|
publicKey: string;
|
|
3775
3837
|
algorithm: "ES256" | "RS256";
|
|
3776
3838
|
fingerprint: string;
|
|
3839
|
+
deviceName: string | null;
|
|
3840
|
+
platform: "ios" | "android" | "web" | "desktop" | null;
|
|
3841
|
+
isActive: boolean;
|
|
3842
|
+
createdAt: Date;
|
|
3843
|
+
lastUsedAt: Date | null;
|
|
3844
|
+
expiresAt: Date | null;
|
|
3845
|
+
revokedAt: Date | null;
|
|
3846
|
+
revokedReason: string | null;
|
|
3847
|
+
}[]>;
|
|
3848
|
+
/**
|
|
3849
|
+
* 지정한 키 하나만 남기고 사용자의 활성 공개키를 전부 revoke
|
|
3850
|
+
*
|
|
3851
|
+
* "다른 기기 전부 로그아웃" — 요청을 보낸 기기는 살려 둔다. 남길 키를 별도 조회로
|
|
3852
|
+
* 확인하지 않고 조건에 담아, 그 사이에 다른 요청이 키를 바꾸는 경쟁을 만들지 않는다.
|
|
3853
|
+
* Write primary 사용
|
|
3854
|
+
*/
|
|
3855
|
+
revokeAllActiveByUserIdExcept(userId: number, keepKeyId: string, reason: string): Promise<{
|
|
3856
|
+
id: number;
|
|
3857
|
+
userId: number;
|
|
3858
|
+
keyId: string;
|
|
3859
|
+
publicKey: string;
|
|
3860
|
+
algorithm: "ES256" | "RS256";
|
|
3861
|
+
fingerprint: string;
|
|
3862
|
+
deviceName: string | null;
|
|
3863
|
+
platform: "ios" | "android" | "web" | "desktop" | null;
|
|
3777
3864
|
isActive: boolean;
|
|
3778
3865
|
createdAt: Date;
|
|
3779
3866
|
lastUsedAt: Date | null;
|
|
@@ -3794,6 +3881,8 @@ declare class KeysRepository extends BaseRepository {
|
|
|
3794
3881
|
publicKey: string;
|
|
3795
3882
|
algorithm: "ES256" | "RS256";
|
|
3796
3883
|
fingerprint: string;
|
|
3884
|
+
deviceName: string | null;
|
|
3885
|
+
platform: "ios" | "android" | "web" | "desktop" | null;
|
|
3797
3886
|
lastUsedAt: Date | null;
|
|
3798
3887
|
expiresAt: Date | null;
|
|
3799
3888
|
revokedAt: Date | null;
|
|
@@ -3818,6 +3907,51 @@ declare class KeysRepository extends BaseRepository {
|
|
|
3818
3907
|
publicKey: string;
|
|
3819
3908
|
algorithm: "ES256" | "RS256";
|
|
3820
3909
|
fingerprint: string;
|
|
3910
|
+
deviceName: string | null;
|
|
3911
|
+
platform: "ios" | "android" | "web" | "desktop" | null;
|
|
3912
|
+
isActive: boolean;
|
|
3913
|
+
createdAt: Date;
|
|
3914
|
+
lastUsedAt: Date | null;
|
|
3915
|
+
expiresAt: Date | null;
|
|
3916
|
+
revokedAt: Date | null;
|
|
3917
|
+
revokedReason: string | null;
|
|
3918
|
+
}>;
|
|
3919
|
+
/**
|
|
3920
|
+
* 만료 시각 연장 — 같은 사용자가 로그인으로 신원을 다시 증명했을 때 쓴다.
|
|
3921
|
+
* Write primary 사용
|
|
3922
|
+
*/
|
|
3923
|
+
extendExpiry(keyId: string, userId: number, expiresAt: Date): Promise<{
|
|
3924
|
+
id: number;
|
|
3925
|
+
userId: number;
|
|
3926
|
+
keyId: string;
|
|
3927
|
+
publicKey: string;
|
|
3928
|
+
algorithm: "ES256" | "RS256";
|
|
3929
|
+
fingerprint: string;
|
|
3930
|
+
deviceName: string | null;
|
|
3931
|
+
platform: "ios" | "android" | "web" | "desktop" | null;
|
|
3932
|
+
isActive: boolean;
|
|
3933
|
+
createdAt: Date;
|
|
3934
|
+
lastUsedAt: Date | null;
|
|
3935
|
+
expiresAt: Date | null;
|
|
3936
|
+
revokedAt: Date | null;
|
|
3937
|
+
revokedReason: string | null;
|
|
3938
|
+
}>;
|
|
3939
|
+
/**
|
|
3940
|
+
* Key ID로 공개키 조회 — 활성 여부 무관 (clientProofV1 admission의 revocation 판정용)
|
|
3941
|
+
*
|
|
3942
|
+
* 폐기(isActive=false)·만료(expiresAt 경과)를 SESSION_REVOKED로, 미등록을
|
|
3943
|
+
* PROOF_INVALID로 구분해야 하므로 활성 필터 없이 조회한다. keyId는 UNIQUE.
|
|
3944
|
+
* Read replica 사용
|
|
3945
|
+
*/
|
|
3946
|
+
findByKeyId(keyId: string): Promise<{
|
|
3947
|
+
id: number;
|
|
3948
|
+
userId: number;
|
|
3949
|
+
keyId: string;
|
|
3950
|
+
publicKey: string;
|
|
3951
|
+
algorithm: "ES256" | "RS256";
|
|
3952
|
+
fingerprint: string;
|
|
3953
|
+
deviceName: string | null;
|
|
3954
|
+
platform: "ios" | "android" | "web" | "desktop" | null;
|
|
3821
3955
|
isActive: boolean;
|
|
3822
3956
|
createdAt: Date;
|
|
3823
3957
|
lastUsedAt: Date | null;
|
|
@@ -3836,6 +3970,8 @@ declare class KeysRepository extends BaseRepository {
|
|
|
3836
3970
|
publicKey: string;
|
|
3837
3971
|
algorithm: "ES256" | "RS256";
|
|
3838
3972
|
fingerprint: string;
|
|
3973
|
+
deviceName: string | null;
|
|
3974
|
+
platform: "ios" | "android" | "web" | "desktop" | null;
|
|
3839
3975
|
isActive: boolean;
|
|
3840
3976
|
createdAt: Date;
|
|
3841
3977
|
lastUsedAt: Date | null;
|
|
@@ -6312,7 +6448,7 @@ declare const authLoginEvent: _spfn_core_event.EventDef<{
|
|
|
6312
6448
|
email?: string | undefined;
|
|
6313
6449
|
phone?: string | undefined;
|
|
6314
6450
|
userId: string;
|
|
6315
|
-
provider: "
|
|
6451
|
+
provider: "google" | "apple" | "github" | "kakao" | "naver" | "superself" | "email" | "phone";
|
|
6316
6452
|
}>;
|
|
6317
6453
|
/**
|
|
6318
6454
|
* auth.register - 회원가입 성공 이벤트
|
|
@@ -6335,7 +6471,7 @@ declare const authRegisterEvent: _spfn_core_event.EventDef<{
|
|
|
6335
6471
|
[x: string]: unknown;
|
|
6336
6472
|
} | undefined;
|
|
6337
6473
|
userId: string;
|
|
6338
|
-
provider: "
|
|
6474
|
+
provider: "google" | "apple" | "github" | "kakao" | "naver" | "superself" | "email" | "phone";
|
|
6339
6475
|
}>;
|
|
6340
6476
|
/**
|
|
6341
6477
|
* auth.invitation.created - 초대 생성 이벤트
|
|
@@ -6454,7 +6590,7 @@ declare const authDeletionCompletedEvent: _spfn_core_event.EventDef<{
|
|
|
6454
6590
|
declare const oauthUnlinkedEvent: _spfn_core_event.EventDef<{
|
|
6455
6591
|
reason?: string | undefined;
|
|
6456
6592
|
userId: string;
|
|
6457
|
-
provider: "
|
|
6593
|
+
provider: "google" | "apple" | "github" | "kakao" | "naver" | "superself" | "email" | "phone";
|
|
6458
6594
|
providerUserId: string;
|
|
6459
6595
|
}>;
|
|
6460
6596
|
/**
|