entity-client 1.0.7
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/EntityAppServerClient.d.ts +383 -0
- package/dist/EntityAppServerClient.js +2 -0
- package/dist/EntityAppServerClient.js.map +7 -0
- package/dist/EntityServerClient.d.ts +638 -0
- package/dist/EntityServerClient.js +2 -0
- package/dist/EntityServerClient.js.map +7 -0
- package/dist/client/base.d.ts +98 -0
- package/dist/client/base.js +2 -0
- package/dist/client/base.js.map +7 -0
- package/dist/client/hmac.d.ts +8 -0
- package/dist/client/hmac.js +2 -0
- package/dist/client/hmac.js.map +7 -0
- package/dist/client/packet.d.ts +24 -0
- package/dist/client/packet.js +2 -0
- package/dist/client/packet.js.map +7 -0
- package/dist/client/request.d.ts +20 -0
- package/dist/client/request.js +2 -0
- package/dist/client/request.js.map +7 -0
- package/dist/client/utils.d.ts +8 -0
- package/dist/client/utils.js +2 -0
- package/dist/client/utils.js.map +7 -0
- package/dist/hooks/useEntityServer.d.ts +104 -0
- package/dist/hooks/useEntityServer.js +2 -0
- package/dist/hooks/useEntityServer.js.map +7 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +7 -0
- package/dist/mixins/app/account.d.ts +64 -0
- package/dist/mixins/app/account.js +2 -0
- package/dist/mixins/app/account.js.map +7 -0
- package/dist/mixins/app/board.d.ts +87 -0
- package/dist/mixins/app/board.js +2 -0
- package/dist/mixins/app/board.js.map +7 -0
- package/dist/mixins/app/email-verify.d.ts +59 -0
- package/dist/mixins/app/email-verify.js +2 -0
- package/dist/mixins/app/email-verify.js.map +7 -0
- package/dist/mixins/app/index.d.ts +6 -0
- package/dist/mixins/app/index.js +2 -0
- package/dist/mixins/app/index.js.map +7 -0
- package/dist/mixins/app/oauth.d.ts +60 -0
- package/dist/mixins/app/oauth.js +2 -0
- package/dist/mixins/app/oauth.js.map +7 -0
- package/dist/mixins/app/password-reset.d.ts +59 -0
- package/dist/mixins/app/password-reset.js +2 -0
- package/dist/mixins/app/password-reset.js.map +7 -0
- package/dist/mixins/app/two-factor.d.ts +61 -0
- package/dist/mixins/app/two-factor.js +2 -0
- package/dist/mixins/app/two-factor.js.map +7 -0
- package/dist/mixins/auth.d.ts +115 -0
- package/dist/mixins/auth.js +2 -0
- package/dist/mixins/auth.js.map +7 -0
- package/dist/mixins/entity.d.ts +147 -0
- package/dist/mixins/entity.js +2 -0
- package/dist/mixins/entity.js.map +7 -0
- package/dist/mixins/file.d.ts +103 -0
- package/dist/mixins/file.js +2 -0
- package/dist/mixins/file.js.map +7 -0
- package/dist/mixins/push.d.ts +115 -0
- package/dist/mixins/push.js +2 -0
- package/dist/mixins/push.js.map +7 -0
- package/dist/mixins/server/admin.d.ts +105 -0
- package/dist/mixins/server/admin.js +2 -0
- package/dist/mixins/server/admin.js.map +7 -0
- package/dist/mixins/server/index.d.ts +7 -0
- package/dist/mixins/server/index.js +2 -0
- package/dist/mixins/server/index.js.map +7 -0
- package/dist/mixins/smtp.d.ts +65 -0
- package/dist/mixins/smtp.js +2 -0
- package/dist/mixins/smtp.js.map +7 -0
- package/dist/mixins/utils.d.ts +116 -0
- package/dist/mixins/utils.js +2 -0
- package/dist/mixins/utils.js.map +7 -0
- package/dist/packet.d.ts +11 -0
- package/dist/packet.js +2 -0
- package/dist/packet.js.map +7 -0
- package/dist/react.d.ts +1 -0
- package/dist/react.js +2 -0
- package/dist/react.js.map +7 -0
- package/dist/types.d.ts +250 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +7 -0
- package/package.json +57 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { GConstructor, EntityServerClientBase } from "../../client/base.js";
|
|
2
|
+
export declare function EmailVerifyMixin<TBase extends GConstructor<EntityServerClientBase>>(Base: TBase): {
|
|
3
|
+
new (...args: any[]): {
|
|
4
|
+
sendEmailVerification<T = unknown>(body: Record<string, unknown>): Promise<T>;
|
|
5
|
+
confirmEmailVerification<T = unknown>(body: Record<string, unknown>): Promise<T>;
|
|
6
|
+
activateEmailVerification<T = unknown>(query: Record<string, unknown>): Promise<T>;
|
|
7
|
+
getEmailVerificationStatus<T = unknown>(): Promise<T>;
|
|
8
|
+
changeVerifiedEmail<T = unknown>(body: Record<string, unknown>): Promise<T>;
|
|
9
|
+
baseUrl: string;
|
|
10
|
+
token: string;
|
|
11
|
+
anonymousPacketToken: string;
|
|
12
|
+
apiKey: string;
|
|
13
|
+
hmacSecret: string;
|
|
14
|
+
encryptRequests: boolean;
|
|
15
|
+
csrfEnabled: boolean;
|
|
16
|
+
csrfToken: string;
|
|
17
|
+
csrfHeaderName: string;
|
|
18
|
+
csrfRefreshPath: string;
|
|
19
|
+
csrfRefreshBuffer: number;
|
|
20
|
+
activeTxId: string | null;
|
|
21
|
+
keepSession: boolean;
|
|
22
|
+
refreshBuffer: number;
|
|
23
|
+
onTokenRefreshed?: (accessToken: string, expiresIn: number) => void;
|
|
24
|
+
onSessionExpired?: (error: Error) => void;
|
|
25
|
+
_sessionRefreshToken: string | null;
|
|
26
|
+
_refreshTimer: ReturnType<typeof setTimeout> | null;
|
|
27
|
+
_csrfRefreshTimer: ReturnType<typeof setTimeout> | null;
|
|
28
|
+
_csrfRefreshPromise: Promise<string> | null;
|
|
29
|
+
configure(options: Partial<import("../../types.js").EntityServerClientOptions>): void;
|
|
30
|
+
setToken(token: string): void;
|
|
31
|
+
setAnonymousPacketToken(token: string): void;
|
|
32
|
+
setApiKey(apiKey: string): void;
|
|
33
|
+
setHmacSecret(secret: string): void;
|
|
34
|
+
setEncryptRequests(value: boolean): void;
|
|
35
|
+
setCsrfToken(token: string): void;
|
|
36
|
+
setCsrfEnabled(enabled: boolean): void;
|
|
37
|
+
_scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
|
|
38
|
+
access_token: string;
|
|
39
|
+
expires_in: number;
|
|
40
|
+
}>): void;
|
|
41
|
+
_clearRefreshTimer(): void;
|
|
42
|
+
stopKeepSession(): void;
|
|
43
|
+
_clearCsrfRefreshTimer(): void;
|
|
44
|
+
stopCsrfRefresh(): void;
|
|
45
|
+
_scheduleCsrfRefresh(expiresIn: number): void;
|
|
46
|
+
refreshCsrfToken(): Promise<string>;
|
|
47
|
+
_applyCsrfHealth(csrf?: import("../../types.js").EntityServerClientHealthCsrf | null): void;
|
|
48
|
+
readRequestBody<T = Record<string, unknown>>(body: ArrayBuffer | Uint8Array | string | T | null | undefined, contentType?: string, requireEncrypted?: boolean): T;
|
|
49
|
+
get _reqOpts(): import("../../client/request.js").RequestOptions;
|
|
50
|
+
requestJson<T>(method: string, path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
51
|
+
requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
52
|
+
requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
|
|
53
|
+
requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
54
|
+
_request<T>(method: string, path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
55
|
+
_requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
56
|
+
_requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
|
|
57
|
+
_requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
58
|
+
};
|
|
59
|
+
} & TBase;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{buildQuery as r}from"../../client/utils.js";function a(i){return class extends i{sendEmailVerification(e){return this.requestJson("POST","/v1/email-verify/send",e,!1)}confirmEmailVerification(e){return this.requestJson("POST","/v1/email-verify/confirm",e,!1)}activateEmailVerification(e){const n=r(e);return this.requestJson("GET",`/v1/email-verify/activate${n?`?${n}`:""}`,void 0,!1)}getEmailVerificationStatus(){return this.requestJson("GET","/v1/email-verify/status")}changeVerifiedEmail(e){return this.requestJson("POST","/v1/email-verify/change",e)}}}export{a as EmailVerifyMixin};
|
|
2
|
+
//# sourceMappingURL=email-verify.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/mixins/app/email-verify.ts"],
|
|
4
|
+
"sourcesContent": ["import { buildQuery } from \"../../client/utils.js\";\nimport type {\n GConstructor,\n EntityServerClientBase,\n} from \"../../client/base.js\";\n\nexport function EmailVerifyMixin<\n TBase extends GConstructor<EntityServerClientBase>,\n>(Base: TBase) {\n return class EmailVerifyMixinClass extends Base {\n sendEmailVerification<T = unknown>(\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.requestJson(\n \"POST\",\n \"/v1/email-verify/send\",\n body,\n false,\n );\n }\n\n confirmEmailVerification<T = unknown>(\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.requestJson(\n \"POST\",\n \"/v1/email-verify/confirm\",\n body,\n false,\n );\n }\n\n activateEmailVerification<T = unknown>(\n query: Record<string, unknown>,\n ): Promise<T> {\n const qs = buildQuery(query);\n return this.requestJson(\n \"GET\",\n `/v1/email-verify/activate${qs ? `?${qs}` : \"\"}`,\n undefined,\n false,\n );\n }\n\n getEmailVerificationStatus<T = unknown>(): Promise<T> {\n return this.requestJson(\"GET\", \"/v1/email-verify/status\");\n }\n\n changeVerifiedEmail<T = unknown>(\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.requestJson(\"POST\", \"/v1/email-verify/change\", body);\n }\n };\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,cAAAA,MAAkB,wBAMpB,SAASC,EAEdC,EAAa,CACX,OAAO,cAAoCA,CAAK,CAC5C,sBACIC,EACU,CACV,OAAO,KAAK,YACR,OACA,wBACAA,EACA,EACJ,CACJ,CAEA,yBACIA,EACU,CACV,OAAO,KAAK,YACR,OACA,2BACAA,EACA,EACJ,CACJ,CAEA,0BACIC,EACU,CACV,MAAMC,EAAKL,EAAWI,CAAK,EAC3B,OAAO,KAAK,YACR,MACA,4BAA4BC,EAAK,IAAIA,CAAE,GAAK,EAAE,GAC9C,OACA,EACJ,CACJ,CAEA,4BAAsD,CAClD,OAAO,KAAK,YAAY,MAAO,yBAAyB,CAC5D,CAEA,oBACIF,EACU,CACV,OAAO,KAAK,YAAY,OAAQ,0BAA2BA,CAAI,CACnE,CACJ,CACJ",
|
|
6
|
+
"names": ["buildQuery", "EmailVerifyMixin", "Base", "body", "query", "qs"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { AccountAppMixin } from "./account.js";
|
|
2
|
+
export { BoardMixin } from "./board.js";
|
|
3
|
+
export { EmailVerifyMixin } from "./email-verify.js";
|
|
4
|
+
export { OAuthMixin } from "./oauth.js";
|
|
5
|
+
export { PasswordResetMixin } from "./password-reset.js";
|
|
6
|
+
export { TwoFactorMixin } from "./two-factor.js";
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{AccountAppMixin as i}from"./account.js";import{BoardMixin as t}from"./board.js";import{EmailVerifyMixin as p}from"./email-verify.js";import{OAuthMixin as m}from"./oauth.js";import{PasswordResetMixin as M}from"./password-reset.js";import{TwoFactorMixin as c}from"./two-factor.js";export{i as AccountAppMixin,t as BoardMixin,p as EmailVerifyMixin,m as OAuthMixin,M as PasswordResetMixin,c as TwoFactorMixin};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/mixins/app/index.ts"],
|
|
4
|
+
"sourcesContent": ["export { AccountAppMixin } from \"./account.js\";\nexport { BoardMixin } from \"./board.js\";\nexport { EmailVerifyMixin } from \"./email-verify.js\";\nexport { OAuthMixin } from \"./oauth.js\";\nexport { PasswordResetMixin } from \"./password-reset.js\";\nexport { TwoFactorMixin } from \"./two-factor.js\";\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,mBAAAA,MAAuB,eAChC,OAAS,cAAAC,MAAkB,aAC3B,OAAS,oBAAAC,MAAwB,oBACjC,OAAS,cAAAC,MAAkB,aAC3B,OAAS,sBAAAC,MAA0B,sBACnC,OAAS,kBAAAC,MAAsB",
|
|
6
|
+
"names": ["AccountAppMixin", "BoardMixin", "EmailVerifyMixin", "OAuthMixin", "PasswordResetMixin", "TwoFactorMixin"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { GConstructor, EntityServerClientBase } from "../../client/base.js";
|
|
2
|
+
export declare function OAuthMixin<TBase extends GConstructor<EntityServerClientBase>>(Base: TBase): {
|
|
3
|
+
new (...args: any[]): {
|
|
4
|
+
oauthAuthorizeUrl(provider: string, query?: Record<string, unknown>): string;
|
|
5
|
+
oauthCallback<T = unknown>(provider: string, payload?: Record<string, unknown>, method?: "GET" | "POST"): Promise<T>;
|
|
6
|
+
linkOAuthAccount<T = unknown>(body: Record<string, unknown>): Promise<T>;
|
|
7
|
+
unlinkOAuthAccount<T = unknown>(provider: string): Promise<T>;
|
|
8
|
+
listOAuthProviders<T = unknown>(): Promise<T>;
|
|
9
|
+
refreshOAuthProviderToken<T = unknown>(provider: string, body?: Record<string, unknown>): Promise<T>;
|
|
10
|
+
baseUrl: string;
|
|
11
|
+
token: string;
|
|
12
|
+
anonymousPacketToken: string;
|
|
13
|
+
apiKey: string;
|
|
14
|
+
hmacSecret: string;
|
|
15
|
+
encryptRequests: boolean;
|
|
16
|
+
csrfEnabled: boolean;
|
|
17
|
+
csrfToken: string;
|
|
18
|
+
csrfHeaderName: string;
|
|
19
|
+
csrfRefreshPath: string;
|
|
20
|
+
csrfRefreshBuffer: number;
|
|
21
|
+
activeTxId: string | null;
|
|
22
|
+
keepSession: boolean;
|
|
23
|
+
refreshBuffer: number;
|
|
24
|
+
onTokenRefreshed?: (accessToken: string, expiresIn: number) => void;
|
|
25
|
+
onSessionExpired?: (error: Error) => void;
|
|
26
|
+
_sessionRefreshToken: string | null;
|
|
27
|
+
_refreshTimer: ReturnType<typeof setTimeout> | null;
|
|
28
|
+
_csrfRefreshTimer: ReturnType<typeof setTimeout> | null;
|
|
29
|
+
_csrfRefreshPromise: Promise<string> | null;
|
|
30
|
+
configure(options: Partial<import("../../types.js").EntityServerClientOptions>): void;
|
|
31
|
+
setToken(token: string): void;
|
|
32
|
+
setAnonymousPacketToken(token: string): void;
|
|
33
|
+
setApiKey(apiKey: string): void;
|
|
34
|
+
setHmacSecret(secret: string): void;
|
|
35
|
+
setEncryptRequests(value: boolean): void;
|
|
36
|
+
setCsrfToken(token: string): void;
|
|
37
|
+
setCsrfEnabled(enabled: boolean): void;
|
|
38
|
+
_scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
|
|
39
|
+
access_token: string;
|
|
40
|
+
expires_in: number;
|
|
41
|
+
}>): void;
|
|
42
|
+
_clearRefreshTimer(): void;
|
|
43
|
+
stopKeepSession(): void;
|
|
44
|
+
_clearCsrfRefreshTimer(): void;
|
|
45
|
+
stopCsrfRefresh(): void;
|
|
46
|
+
_scheduleCsrfRefresh(expiresIn: number): void;
|
|
47
|
+
refreshCsrfToken(): Promise<string>;
|
|
48
|
+
_applyCsrfHealth(csrf?: import("../../types.js").EntityServerClientHealthCsrf | null): void;
|
|
49
|
+
readRequestBody<T = Record<string, unknown>>(body: ArrayBuffer | Uint8Array | string | T | null | undefined, contentType?: string, requireEncrypted?: boolean): T;
|
|
50
|
+
get _reqOpts(): import("../../client/request.js").RequestOptions;
|
|
51
|
+
requestJson<T>(method: string, path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
52
|
+
requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
53
|
+
requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
|
|
54
|
+
requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
55
|
+
_request<T>(method: string, path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
56
|
+
_requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
57
|
+
_requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
|
|
58
|
+
_requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
59
|
+
};
|
|
60
|
+
} & TBase;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{buildQuery as s}from"../../client/utils.js";function a(o){return class extends o{oauthAuthorizeUrl(n,t={}){const r=s(t);return`${this.baseUrl}/v1/oauth/${n}${r?`?${r}`:""}`}oauthCallback(n,t,r="POST"){if(r==="GET"){const e=s(t??{});return this.requestJson("GET",`/v1/oauth/${n}/callback${e?`?${e}`:""}`,void 0,!1)}return this.requestJson("POST",`/v1/oauth/${n}/callback`,t,!1)}linkOAuthAccount(n){return this.requestJson("POST","/v1/account/oauth/link",n)}unlinkOAuthAccount(n){return this.requestJson("DELETE",`/v1/account/oauth/link/${n}`)}listOAuthProviders(){return this.requestJson("GET","/v1/account/oauth/providers")}refreshOAuthProviderToken(n,t){return this.requestJson("POST",`/v1/account/oauth/refresh/${n}`,t)}}}export{a as OAuthMixin};
|
|
2
|
+
//# sourceMappingURL=oauth.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/mixins/app/oauth.ts"],
|
|
4
|
+
"sourcesContent": ["import { buildQuery } from \"../../client/utils.js\";\nimport type {\n GConstructor,\n EntityServerClientBase,\n} from \"../../client/base.js\";\n\nexport function OAuthMixin<TBase extends GConstructor<EntityServerClientBase>>(\n Base: TBase,\n) {\n return class OAuthMixinClass extends Base {\n oauthAuthorizeUrl(\n provider: string,\n query: Record<string, unknown> = {},\n ): string {\n const qs = buildQuery(query);\n return `${this.baseUrl}/v1/oauth/${provider}${qs ? `?${qs}` : \"\"}`;\n }\n\n oauthCallback<T = unknown>(\n provider: string,\n payload?: Record<string, unknown>,\n method: \"GET\" | \"POST\" = \"POST\",\n ): Promise<T> {\n if (method === \"GET\") {\n const qs = buildQuery(payload ?? {});\n return this.requestJson(\n \"GET\",\n `/v1/oauth/${provider}/callback${qs ? `?${qs}` : \"\"}`,\n undefined,\n false,\n );\n }\n\n return this.requestJson(\n \"POST\",\n `/v1/oauth/${provider}/callback`,\n payload,\n false,\n );\n }\n\n linkOAuthAccount<T = unknown>(\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.requestJson(\"POST\", \"/v1/account/oauth/link\", body);\n }\n\n unlinkOAuthAccount<T = unknown>(provider: string): Promise<T> {\n return this.requestJson(\n \"DELETE\",\n `/v1/account/oauth/link/${provider}`,\n );\n }\n\n listOAuthProviders<T = unknown>(): Promise<T> {\n return this.requestJson(\"GET\", \"/v1/account/oauth/providers\");\n }\n\n refreshOAuthProviderToken<T = unknown>(\n provider: string,\n body?: Record<string, unknown>,\n ): Promise<T> {\n return this.requestJson(\n \"POST\",\n `/v1/account/oauth/refresh/${provider}`,\n body,\n );\n }\n };\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,cAAAA,MAAkB,wBAMpB,SAASC,EACZC,EACF,CACE,OAAO,cAA8BA,CAAK,CACtC,kBACIC,EACAC,EAAiC,CAAC,EAC5B,CACN,MAAMC,EAAKL,EAAWI,CAAK,EAC3B,MAAO,GAAG,KAAK,OAAO,aAAaD,CAAQ,GAAGE,EAAK,IAAIA,CAAE,GAAK,EAAE,EACpE,CAEA,cACIF,EACAG,EACAC,EAAyB,OACf,CACV,GAAIA,IAAW,MAAO,CAClB,MAAMF,EAAKL,EAAWM,GAAW,CAAC,CAAC,EACnC,OAAO,KAAK,YACR,MACA,aAAaH,CAAQ,YAAYE,EAAK,IAAIA,CAAE,GAAK,EAAE,GACnD,OACA,EACJ,CACJ,CAEA,OAAO,KAAK,YACR,OACA,aAAaF,CAAQ,YACrBG,EACA,EACJ,CACJ,CAEA,iBACIE,EACU,CACV,OAAO,KAAK,YAAY,OAAQ,yBAA0BA,CAAI,CAClE,CAEA,mBAAgCL,EAA8B,CAC1D,OAAO,KAAK,YACR,SACA,0BAA0BA,CAAQ,EACtC,CACJ,CAEA,oBAA8C,CAC1C,OAAO,KAAK,YAAY,MAAO,6BAA6B,CAChE,CAEA,0BACIA,EACAK,EACU,CACV,OAAO,KAAK,YACR,OACA,6BAA6BL,CAAQ,GACrCK,CACJ,CACJ,CACJ,CACJ",
|
|
6
|
+
"names": ["buildQuery", "OAuthMixin", "Base", "provider", "query", "qs", "payload", "method", "body"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { GConstructor, EntityServerClientBase } from "../../client/base.js";
|
|
2
|
+
export declare function PasswordResetMixin<TBase extends GConstructor<EntityServerClientBase>>(Base: TBase): {
|
|
3
|
+
new (...args: any[]): {
|
|
4
|
+
requestPasswordReset<T = unknown>(body: {
|
|
5
|
+
email: string;
|
|
6
|
+
} | Record<string, unknown>): Promise<T>;
|
|
7
|
+
validatePasswordResetToken<T = unknown>(token: string): Promise<T>;
|
|
8
|
+
verifyPasswordReset<T = unknown>(body: Record<string, unknown>): Promise<T>;
|
|
9
|
+
baseUrl: string;
|
|
10
|
+
token: string;
|
|
11
|
+
anonymousPacketToken: string;
|
|
12
|
+
apiKey: string;
|
|
13
|
+
hmacSecret: string;
|
|
14
|
+
encryptRequests: boolean;
|
|
15
|
+
csrfEnabled: boolean;
|
|
16
|
+
csrfToken: string;
|
|
17
|
+
csrfHeaderName: string;
|
|
18
|
+
csrfRefreshPath: string;
|
|
19
|
+
csrfRefreshBuffer: number;
|
|
20
|
+
activeTxId: string | null;
|
|
21
|
+
keepSession: boolean;
|
|
22
|
+
refreshBuffer: number;
|
|
23
|
+
onTokenRefreshed?: (accessToken: string, expiresIn: number) => void;
|
|
24
|
+
onSessionExpired?: (error: Error) => void;
|
|
25
|
+
_sessionRefreshToken: string | null;
|
|
26
|
+
_refreshTimer: ReturnType<typeof setTimeout> | null;
|
|
27
|
+
_csrfRefreshTimer: ReturnType<typeof setTimeout> | null;
|
|
28
|
+
_csrfRefreshPromise: Promise<string> | null;
|
|
29
|
+
configure(options: Partial<import("../../types.js").EntityServerClientOptions>): void;
|
|
30
|
+
setToken(token: string): void;
|
|
31
|
+
setAnonymousPacketToken(token: string): void;
|
|
32
|
+
setApiKey(apiKey: string): void;
|
|
33
|
+
setHmacSecret(secret: string): void;
|
|
34
|
+
setEncryptRequests(value: boolean): void;
|
|
35
|
+
setCsrfToken(token: string): void;
|
|
36
|
+
setCsrfEnabled(enabled: boolean): void;
|
|
37
|
+
_scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
|
|
38
|
+
access_token: string;
|
|
39
|
+
expires_in: number;
|
|
40
|
+
}>): void;
|
|
41
|
+
_clearRefreshTimer(): void;
|
|
42
|
+
stopKeepSession(): void;
|
|
43
|
+
_clearCsrfRefreshTimer(): void;
|
|
44
|
+
stopCsrfRefresh(): void;
|
|
45
|
+
_scheduleCsrfRefresh(expiresIn: number): void;
|
|
46
|
+
refreshCsrfToken(): Promise<string>;
|
|
47
|
+
_applyCsrfHealth(csrf?: import("../../types.js").EntityServerClientHealthCsrf | null): void;
|
|
48
|
+
readRequestBody<T = Record<string, unknown>>(body: ArrayBuffer | Uint8Array | string | T | null | undefined, contentType?: string, requireEncrypted?: boolean): T;
|
|
49
|
+
get _reqOpts(): import("../../client/request.js").RequestOptions;
|
|
50
|
+
requestJson<T>(method: string, path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
51
|
+
requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
52
|
+
requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
|
|
53
|
+
requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
54
|
+
_request<T>(method: string, path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
55
|
+
_requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
56
|
+
_requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
|
|
57
|
+
_requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
58
|
+
};
|
|
59
|
+
} & TBase;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function t(s){return class extends s{requestPasswordReset(e){return this.requestJson("POST","/v1/password-reset/request",e,!1)}validatePasswordResetToken(e){return this.requestJson("GET",`/v1/password-reset/validate/${encodeURIComponent(e)}`,void 0,!1)}verifyPasswordReset(e){return this.requestJson("POST","/v1/password-reset/verify",e,!1)}}}export{t as PasswordResetMixin};
|
|
2
|
+
//# sourceMappingURL=password-reset.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/mixins/app/password-reset.ts"],
|
|
4
|
+
"sourcesContent": ["import type {\n GConstructor,\n EntityServerClientBase,\n} from \"../../client/base.js\";\n\nexport function PasswordResetMixin<\n TBase extends GConstructor<EntityServerClientBase>,\n>(Base: TBase) {\n return class PasswordResetMixinClass extends Base {\n requestPasswordReset<T = unknown>(\n body: { email: string } | Record<string, unknown>,\n ): Promise<T> {\n return this.requestJson(\n \"POST\",\n \"/v1/password-reset/request\",\n body,\n false,\n );\n }\n\n validatePasswordResetToken<T = unknown>(token: string): Promise<T> {\n return this.requestJson(\n \"GET\",\n `/v1/password-reset/validate/${encodeURIComponent(token)}`,\n undefined,\n false,\n );\n }\n\n verifyPasswordReset<T = unknown>(\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.requestJson(\n \"POST\",\n \"/v1/password-reset/verify\",\n body,\n false,\n );\n }\n };\n}\n"],
|
|
5
|
+
"mappings": "AAKO,SAASA,EAEdC,EAAa,CACX,OAAO,cAAsCA,CAAK,CAC9C,qBACIC,EACU,CACV,OAAO,KAAK,YACR,OACA,6BACAA,EACA,EACJ,CACJ,CAEA,2BAAwCC,EAA2B,CAC/D,OAAO,KAAK,YACR,MACA,+BAA+B,mBAAmBA,CAAK,CAAC,GACxD,OACA,EACJ,CACJ,CAEA,oBACID,EACU,CACV,OAAO,KAAK,YACR,OACA,4BACAA,EACA,EACJ,CACJ,CACJ,CACJ",
|
|
6
|
+
"names": ["PasswordResetMixin", "Base", "body", "token"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { GConstructor, EntityServerClientBase } from "../../client/base.js";
|
|
2
|
+
export declare function TwoFactorMixin<TBase extends GConstructor<EntityServerClientBase>>(Base: TBase): {
|
|
3
|
+
new (...args: any[]): {
|
|
4
|
+
setupTwoFactor<T = unknown>(body?: Record<string, unknown>): Promise<T>;
|
|
5
|
+
verifyTwoFactorSetup<T = unknown>(body: Record<string, unknown>): Promise<T>;
|
|
6
|
+
disableTwoFactor<T = unknown>(): Promise<T>;
|
|
7
|
+
getTwoFactorStatus<T = unknown>(): Promise<T>;
|
|
8
|
+
regenerateTwoFactorRecoveryCodes<T = unknown>(): Promise<T>;
|
|
9
|
+
verifyTwoFactor<T = unknown>(body: Record<string, unknown>): Promise<T>;
|
|
10
|
+
recoverTwoFactorAccess<T = unknown>(body: Record<string, unknown>): Promise<T>;
|
|
11
|
+
baseUrl: string;
|
|
12
|
+
token: string;
|
|
13
|
+
anonymousPacketToken: string;
|
|
14
|
+
apiKey: string;
|
|
15
|
+
hmacSecret: string;
|
|
16
|
+
encryptRequests: boolean;
|
|
17
|
+
csrfEnabled: boolean;
|
|
18
|
+
csrfToken: string;
|
|
19
|
+
csrfHeaderName: string;
|
|
20
|
+
csrfRefreshPath: string;
|
|
21
|
+
csrfRefreshBuffer: number;
|
|
22
|
+
activeTxId: string | null;
|
|
23
|
+
keepSession: boolean;
|
|
24
|
+
refreshBuffer: number;
|
|
25
|
+
onTokenRefreshed?: (accessToken: string, expiresIn: number) => void;
|
|
26
|
+
onSessionExpired?: (error: Error) => void;
|
|
27
|
+
_sessionRefreshToken: string | null;
|
|
28
|
+
_refreshTimer: ReturnType<typeof setTimeout> | null;
|
|
29
|
+
_csrfRefreshTimer: ReturnType<typeof setTimeout> | null;
|
|
30
|
+
_csrfRefreshPromise: Promise<string> | null;
|
|
31
|
+
configure(options: Partial<import("../../types.js").EntityServerClientOptions>): void;
|
|
32
|
+
setToken(token: string): void;
|
|
33
|
+
setAnonymousPacketToken(token: string): void;
|
|
34
|
+
setApiKey(apiKey: string): void;
|
|
35
|
+
setHmacSecret(secret: string): void;
|
|
36
|
+
setEncryptRequests(value: boolean): void;
|
|
37
|
+
setCsrfToken(token: string): void;
|
|
38
|
+
setCsrfEnabled(enabled: boolean): void;
|
|
39
|
+
_scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
|
|
40
|
+
access_token: string;
|
|
41
|
+
expires_in: number;
|
|
42
|
+
}>): void;
|
|
43
|
+
_clearRefreshTimer(): void;
|
|
44
|
+
stopKeepSession(): void;
|
|
45
|
+
_clearCsrfRefreshTimer(): void;
|
|
46
|
+
stopCsrfRefresh(): void;
|
|
47
|
+
_scheduleCsrfRefresh(expiresIn: number): void;
|
|
48
|
+
refreshCsrfToken(): Promise<string>;
|
|
49
|
+
_applyCsrfHealth(csrf?: import("../../types.js").EntityServerClientHealthCsrf | null): void;
|
|
50
|
+
readRequestBody<T = Record<string, unknown>>(body: ArrayBuffer | Uint8Array | string | T | null | undefined, contentType?: string, requireEncrypted?: boolean): T;
|
|
51
|
+
get _reqOpts(): import("../../client/request.js").RequestOptions;
|
|
52
|
+
requestJson<T>(method: string, path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
53
|
+
requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
54
|
+
requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
|
|
55
|
+
requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
56
|
+
_request<T>(method: string, path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
57
|
+
_requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
58
|
+
_requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
|
|
59
|
+
_requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
60
|
+
};
|
|
61
|
+
} & TBase;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function o(n){return class extends n{setupTwoFactor(e){return this.requestJson("POST","/v1/account/2fa/setup",e)}verifyTwoFactorSetup(e){return this.requestJson("POST","/v1/account/2fa/setup/verify",e,!1)}disableTwoFactor(){return this.requestJson("DELETE","/v1/account/2fa")}getTwoFactorStatus(){return this.requestJson("GET","/v1/account/2fa/status")}regenerateTwoFactorRecoveryCodes(){return this.requestJson("POST","/v1/account/2fa/recovery/regenerate")}verifyTwoFactor(e){return this.requestJson("POST","/v1/account/2fa/verify",e,!1)}recoverTwoFactorAccess(e){return this.requestJson("POST","/v1/account/2fa/recovery",e,!1)}}}export{o as TwoFactorMixin};
|
|
2
|
+
//# sourceMappingURL=two-factor.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/mixins/app/two-factor.ts"],
|
|
4
|
+
"sourcesContent": ["import type {\n GConstructor,\n EntityServerClientBase,\n} from \"../../client/base.js\";\n\nexport function TwoFactorMixin<\n TBase extends GConstructor<EntityServerClientBase>,\n>(Base: TBase) {\n return class TwoFactorMixinClass extends Base {\n setupTwoFactor<T = unknown>(\n body?: Record<string, unknown>,\n ): Promise<T> {\n return this.requestJson(\"POST\", \"/v1/account/2fa/setup\", body);\n }\n\n verifyTwoFactorSetup<T = unknown>(\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.requestJson(\n \"POST\",\n \"/v1/account/2fa/setup/verify\",\n body,\n false,\n );\n }\n\n disableTwoFactor<T = unknown>(): Promise<T> {\n return this.requestJson(\"DELETE\", \"/v1/account/2fa\");\n }\n\n getTwoFactorStatus<T = unknown>(): Promise<T> {\n return this.requestJson(\"GET\", \"/v1/account/2fa/status\");\n }\n\n regenerateTwoFactorRecoveryCodes<T = unknown>(): Promise<T> {\n return this.requestJson(\n \"POST\",\n \"/v1/account/2fa/recovery/regenerate\",\n );\n }\n\n verifyTwoFactor<T = unknown>(\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.requestJson(\n \"POST\",\n \"/v1/account/2fa/verify\",\n body,\n false,\n );\n }\n\n recoverTwoFactorAccess<T = unknown>(\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.requestJson(\n \"POST\",\n \"/v1/account/2fa/recovery\",\n body,\n false,\n );\n }\n };\n}\n"],
|
|
5
|
+
"mappings": "AAKO,SAASA,EAEdC,EAAa,CACX,OAAO,cAAkCA,CAAK,CAC1C,eACIC,EACU,CACV,OAAO,KAAK,YAAY,OAAQ,wBAAyBA,CAAI,CACjE,CAEA,qBACIA,EACU,CACV,OAAO,KAAK,YACR,OACA,+BACAA,EACA,EACJ,CACJ,CAEA,kBAA4C,CACxC,OAAO,KAAK,YAAY,SAAU,iBAAiB,CACvD,CAEA,oBAA8C,CAC1C,OAAO,KAAK,YAAY,MAAO,wBAAwB,CAC3D,CAEA,kCAA4D,CACxD,OAAO,KAAK,YACR,OACA,qCACJ,CACJ,CAEA,gBACIA,EACU,CACV,OAAO,KAAK,YACR,OACA,yBACAA,EACA,EACJ,CACJ,CAEA,uBACIA,EACU,CACV,OAAO,KAAK,YACR,OACA,2BACAA,EACA,EACJ,CACJ,CACJ,CACJ",
|
|
6
|
+
"names": ["TwoFactorMixin", "Base", "body"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import type { GConstructor, EntityServerClientBase } from "../client/base.js";
|
|
2
|
+
export declare function AuthMixin<TBase extends GConstructor<EntityServerClientBase>>(Base: TBase): {
|
|
3
|
+
new (...args: any[]): {
|
|
4
|
+
/**
|
|
5
|
+
* 서버 헬스 체크를 수행하고 패킷 암호화 활성 여부를 자동으로 감지합니다.
|
|
6
|
+
*
|
|
7
|
+
* 서버가 `packet_encryption: true`를 응답하면 이후 모든 요청에 암호화가 자동 적용됩니다.
|
|
8
|
+
*
|
|
9
|
+
* ```ts
|
|
10
|
+
* await client.checkHealth();
|
|
11
|
+
* await client.login(email, password);
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
checkHealth(): Promise<{
|
|
15
|
+
ok: boolean;
|
|
16
|
+
packet_encryption?: boolean;
|
|
17
|
+
packet_mode?: string;
|
|
18
|
+
packet_token?: string;
|
|
19
|
+
csrf?: import("../types").EntityServerClientHealthCsrf;
|
|
20
|
+
}>;
|
|
21
|
+
/** 로그인 후 `access_token`을 내부 상태에 저장합니다. */
|
|
22
|
+
login(email: string, password: string): Promise<{
|
|
23
|
+
access_token: string;
|
|
24
|
+
refresh_token: string;
|
|
25
|
+
expires_in: number;
|
|
26
|
+
force_password_change?: boolean;
|
|
27
|
+
password_expired?: boolean;
|
|
28
|
+
password_expires_in_days?: number;
|
|
29
|
+
}>;
|
|
30
|
+
/** Refresh Token으로 Access Token을 재발급받아 내부 토큰을 교체합니다. */
|
|
31
|
+
refreshToken(refreshToken: string): Promise<{
|
|
32
|
+
access_token: string;
|
|
33
|
+
expires_in: number;
|
|
34
|
+
}>;
|
|
35
|
+
/**
|
|
36
|
+
* 서버에 로그아웃을 요청하고 내부 토큰을 초기화합니다.
|
|
37
|
+
* refresh_token을 서버에 전달해 무효화합니다.
|
|
38
|
+
*/
|
|
39
|
+
logout(refreshToken: string): Promise<{
|
|
40
|
+
ok: boolean;
|
|
41
|
+
}>;
|
|
42
|
+
/** 현재 로그인된 사용자 정보를 반환합니다. */
|
|
43
|
+
me<T = Record<string, unknown>>(): Promise<{
|
|
44
|
+
ok: boolean;
|
|
45
|
+
data: T;
|
|
46
|
+
}>;
|
|
47
|
+
/** 회원 탈퇴를 요청합니다. */
|
|
48
|
+
withdraw(passwd?: string): Promise<{
|
|
49
|
+
ok: boolean;
|
|
50
|
+
}>;
|
|
51
|
+
/**
|
|
52
|
+
* 휴면 계정을 재활성화합니다.
|
|
53
|
+
* 비밀번호 또는 OAuth(provider + code)로 본인 확인합니다.
|
|
54
|
+
*/
|
|
55
|
+
reactivate(params: {
|
|
56
|
+
email: string;
|
|
57
|
+
passwd?: string;
|
|
58
|
+
provider?: string;
|
|
59
|
+
code?: string;
|
|
60
|
+
}): Promise<{
|
|
61
|
+
access_token: string;
|
|
62
|
+
refresh_token: string;
|
|
63
|
+
expires_in: number;
|
|
64
|
+
}>;
|
|
65
|
+
baseUrl: string;
|
|
66
|
+
token: string;
|
|
67
|
+
anonymousPacketToken: string;
|
|
68
|
+
apiKey: string;
|
|
69
|
+
hmacSecret: string;
|
|
70
|
+
encryptRequests: boolean;
|
|
71
|
+
csrfEnabled: boolean;
|
|
72
|
+
csrfToken: string;
|
|
73
|
+
csrfHeaderName: string;
|
|
74
|
+
csrfRefreshPath: string;
|
|
75
|
+
csrfRefreshBuffer: number;
|
|
76
|
+
activeTxId: string | null;
|
|
77
|
+
keepSession: boolean;
|
|
78
|
+
refreshBuffer: number;
|
|
79
|
+
onTokenRefreshed?: (accessToken: string, expiresIn: number) => void;
|
|
80
|
+
onSessionExpired?: (error: Error) => void;
|
|
81
|
+
_sessionRefreshToken: string | null;
|
|
82
|
+
_refreshTimer: ReturnType<typeof setTimeout> | null;
|
|
83
|
+
_csrfRefreshTimer: ReturnType<typeof setTimeout> | null;
|
|
84
|
+
_csrfRefreshPromise: Promise<string> | null;
|
|
85
|
+
configure(options: Partial<import("../types").EntityServerClientOptions>): void;
|
|
86
|
+
setToken(token: string): void;
|
|
87
|
+
setAnonymousPacketToken(token: string): void;
|
|
88
|
+
setApiKey(apiKey: string): void;
|
|
89
|
+
setHmacSecret(secret: string): void;
|
|
90
|
+
setEncryptRequests(value: boolean): void;
|
|
91
|
+
setCsrfToken(token: string): void;
|
|
92
|
+
setCsrfEnabled(enabled: boolean): void;
|
|
93
|
+
_scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
|
|
94
|
+
access_token: string;
|
|
95
|
+
expires_in: number;
|
|
96
|
+
}>): void;
|
|
97
|
+
_clearRefreshTimer(): void;
|
|
98
|
+
stopKeepSession(): void;
|
|
99
|
+
_clearCsrfRefreshTimer(): void;
|
|
100
|
+
stopCsrfRefresh(): void;
|
|
101
|
+
_scheduleCsrfRefresh(expiresIn: number): void;
|
|
102
|
+
refreshCsrfToken(): Promise<string>;
|
|
103
|
+
_applyCsrfHealth(csrf?: import("../types").EntityServerClientHealthCsrf | null): void;
|
|
104
|
+
readRequestBody<T = Record<string, unknown>>(body: ArrayBuffer | Uint8Array | string | T | null | undefined, contentType?: string, requireEncrypted?: boolean): T;
|
|
105
|
+
get _reqOpts(): import("../client/request.js").RequestOptions;
|
|
106
|
+
requestJson<T>(method: string, path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
107
|
+
requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
108
|
+
requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
|
|
109
|
+
requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
110
|
+
_request<T>(method: string, path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
111
|
+
_requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
112
|
+
_requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
|
|
113
|
+
_requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
114
|
+
};
|
|
115
|
+
} & TBase;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function o(r){return class extends r{async checkHealth(){const e=await(await fetch(`${this.baseUrl}/v1/health`,{signal:AbortSignal.timeout(3e3),credentials:"include"})).json();return e.packet_encryption&&(this.encryptRequests=!0),typeof e.packet_token=="string"&&(this.anonymousPacketToken=e.packet_token),this._applyCsrfHealth(e.csrf),e}async login(t,e){const s=await this._request("POST","/v1/auth/login",{email:t,passwd:e},!1);return this.token=s.data.access_token,this.keepSession&&this._scheduleKeepSession(s.data.refresh_token,s.data.expires_in,n=>this.refreshToken(n)),s.data}async refreshToken(t){const e=await this._request("POST","/v1/auth/refresh",{refresh_token:t},!1);return this.token=e.data.access_token,this.keepSession&&this._scheduleKeepSession(t,e.data.expires_in,s=>this.refreshToken(s)),e.data}async logout(t){this.stopKeepSession();const e=await this._request("POST","/v1/auth/logout",{refresh_token:t},!1);return this.token="",e}me(){return this._request("GET","/v1/auth/me")}withdraw(t){return this._request("POST","/v1/auth/withdraw",t?{passwd:t}:{})}reactivate(t){return this._request("POST","/v1/auth/reactivate",t,!1)}}}export{o as AuthMixin};
|
|
2
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/mixins/auth.ts"],
|
|
4
|
+
"sourcesContent": ["import type { GConstructor, EntityServerClientBase } from \"../client/base.js\";\n\nexport function AuthMixin<TBase extends GConstructor<EntityServerClientBase>>(\n Base: TBase,\n) {\n return class AuthMixinClass extends Base {\n // \u2500\u2500\u2500 \uC778\uC99D \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n /**\n * \uC11C\uBC84 \uD5EC\uC2A4 \uCCB4\uD06C\uB97C \uC218\uD589\uD558\uACE0 \uD328\uD0B7 \uC554\uD638\uD654 \uD65C\uC131 \uC5EC\uBD80\uB97C \uC790\uB3D9\uC73C\uB85C \uAC10\uC9C0\uD569\uB2C8\uB2E4.\n *\n * \uC11C\uBC84\uAC00 `packet_encryption: true`\uB97C \uC751\uB2F5\uD558\uBA74 \uC774\uD6C4 \uBAA8\uB4E0 \uC694\uCCAD\uC5D0 \uC554\uD638\uD654\uAC00 \uC790\uB3D9 \uC801\uC6A9\uB429\uB2C8\uB2E4.\n *\n * ```ts\n * await client.checkHealth();\n * await client.login(email, password);\n * ```\n */\n async checkHealth(): Promise<{\n ok: boolean;\n packet_encryption?: boolean;\n packet_mode?: string;\n packet_token?: string;\n csrf?: import(\"../types\").EntityServerClientHealthCsrf;\n }> {\n const res = await fetch(`${this.baseUrl}/v1/health`, {\n signal: AbortSignal.timeout(3000),\n credentials: \"include\",\n });\n const data = (await res.json()) as {\n ok: boolean;\n packet_encryption?: boolean;\n packet_mode?: string;\n packet_token?: string;\n csrf?: import(\"../types\").EntityServerClientHealthCsrf;\n };\n if (data.packet_encryption) this.encryptRequests = true;\n if (typeof data.packet_token === \"string\") {\n this.anonymousPacketToken = data.packet_token;\n }\n this._applyCsrfHealth(data.csrf);\n return data;\n }\n\n /** \uB85C\uADF8\uC778 \uD6C4 `access_token`\uC744 \uB0B4\uBD80 \uC0C1\uD0DC\uC5D0 \uC800\uC7A5\uD569\uB2C8\uB2E4. */\n async login(\n email: string,\n password: string,\n ): Promise<{\n access_token: string;\n refresh_token: string;\n expires_in: number;\n force_password_change?: boolean;\n password_expired?: boolean;\n password_expires_in_days?: number;\n }> {\n const data = await this._request<{\n data: {\n access_token: string;\n refresh_token: string;\n expires_in: number;\n force_password_change?: boolean;\n password_expired?: boolean;\n password_expires_in_days?: number;\n };\n }>(\"POST\", \"/v1/auth/login\", { email, passwd: password }, false);\n this.token = data.data.access_token;\n if (this.keepSession)\n this._scheduleKeepSession(\n data.data.refresh_token,\n data.data.expires_in,\n (rt) => this.refreshToken(rt),\n );\n return data.data;\n }\n\n /** Refresh Token\uC73C\uB85C Access Token\uC744 \uC7AC\uBC1C\uAE09\uBC1B\uC544 \uB0B4\uBD80 \uD1A0\uD070\uC744 \uAD50\uCCB4\uD569\uB2C8\uB2E4. */\n async refreshToken(\n refreshToken: string,\n ): Promise<{ access_token: string; expires_in: number }> {\n const data = await this._request<{\n data: { access_token: string; expires_in: number };\n }>(\n \"POST\",\n \"/v1/auth/refresh\",\n { refresh_token: refreshToken },\n false,\n );\n this.token = data.data.access_token;\n if (this.keepSession)\n this._scheduleKeepSession(\n refreshToken,\n data.data.expires_in,\n (rt) => this.refreshToken(rt),\n );\n return data.data;\n }\n\n /**\n * \uC11C\uBC84\uC5D0 \uB85C\uADF8\uC544\uC6C3\uC744 \uC694\uCCAD\uD558\uACE0 \uB0B4\uBD80 \uD1A0\uD070\uC744 \uCD08\uAE30\uD654\uD569\uB2C8\uB2E4.\n * refresh_token\uC744 \uC11C\uBC84\uC5D0 \uC804\uB2EC\uD574 \uBB34\uD6A8\uD654\uD569\uB2C8\uB2E4.\n */\n async logout(refreshToken: string): Promise<{ ok: boolean }> {\n this.stopKeepSession();\n const data = await this._request<{ ok: boolean }>(\n \"POST\",\n \"/v1/auth/logout\",\n { refresh_token: refreshToken },\n false,\n );\n this.token = \"\";\n return data;\n }\n\n /** \uD604\uC7AC \uB85C\uADF8\uC778\uB41C \uC0AC\uC6A9\uC790 \uC815\uBCF4\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4. */\n me<T = Record<string, unknown>>(): Promise<{ ok: boolean; data: T }> {\n return this._request(\"GET\", \"/v1/auth/me\");\n }\n\n /** \uD68C\uC6D0 \uD0C8\uD1F4\uB97C \uC694\uCCAD\uD569\uB2C8\uB2E4. */\n withdraw(passwd?: string): Promise<{ ok: boolean }> {\n return this._request(\n \"POST\",\n \"/v1/auth/withdraw\",\n passwd ? { passwd } : {},\n );\n }\n\n /**\n * \uD734\uBA74 \uACC4\uC815\uC744 \uC7AC\uD65C\uC131\uD654\uD569\uB2C8\uB2E4.\n * \uBE44\uBC00\uBC88\uD638 \uB610\uB294 OAuth(provider + code)\uB85C \uBCF8\uC778 \uD655\uC778\uD569\uB2C8\uB2E4.\n */\n reactivate(params: {\n email: string;\n passwd?: string;\n provider?: string;\n code?: string;\n }): Promise<{\n access_token: string;\n refresh_token: string;\n expires_in: number;\n }> {\n return this._request(\"POST\", \"/v1/auth/reactivate\", params, false);\n }\n };\n}\n"],
|
|
5
|
+
"mappings": "AAEO,SAASA,EACZC,EACF,CACE,OAAO,cAA6BA,CAAK,CAarC,MAAM,aAMH,CAKC,MAAMC,EAAQ,MAJF,MAAM,MAAM,GAAG,KAAK,OAAO,aAAc,CACjD,OAAQ,YAAY,QAAQ,GAAI,EAChC,YAAa,SACjB,CAAC,GACuB,KAAK,EAO7B,OAAIA,EAAK,oBAAmB,KAAK,gBAAkB,IAC/C,OAAOA,EAAK,cAAiB,WAC7B,KAAK,qBAAuBA,EAAK,cAErC,KAAK,iBAAiBA,EAAK,IAAI,EACxBA,CACX,CAGA,MAAM,MACFC,EACAC,EAQD,CACC,MAAMF,EAAO,MAAM,KAAK,SASrB,OAAQ,iBAAkB,CAAE,MAAAC,EAAO,OAAQC,CAAS,EAAG,EAAK,EAC/D,YAAK,MAAQF,EAAK,KAAK,aACnB,KAAK,aACL,KAAK,qBACDA,EAAK,KAAK,cACVA,EAAK,KAAK,WACTG,GAAO,KAAK,aAAaA,CAAE,CAChC,EACGH,EAAK,IAChB,CAGA,MAAM,aACFI,EACqD,CACrD,MAAMJ,EAAO,MAAM,KAAK,SAGpB,OACA,mBACA,CAAE,cAAeI,CAAa,EAC9B,EACJ,EACA,YAAK,MAAQJ,EAAK,KAAK,aACnB,KAAK,aACL,KAAK,qBACDI,EACAJ,EAAK,KAAK,WACTG,GAAO,KAAK,aAAaA,CAAE,CAChC,EACGH,EAAK,IAChB,CAMA,MAAM,OAAOI,EAAgD,CACzD,KAAK,gBAAgB,EACrB,MAAMJ,EAAO,MAAM,KAAK,SACpB,OACA,kBACA,CAAE,cAAeI,CAAa,EAC9B,EACJ,EACA,YAAK,MAAQ,GACNJ,CACX,CAGA,IAAqE,CACjE,OAAO,KAAK,SAAS,MAAO,aAAa,CAC7C,CAGA,SAASK,EAA2C,CAChD,OAAO,KAAK,SACR,OACA,oBACAA,EAAS,CAAE,OAAAA,CAAO,EAAI,CAAC,CAC3B,CACJ,CAMA,WAAWC,EASR,CACC,OAAO,KAAK,SAAS,OAAQ,sBAAuBA,EAAQ,EAAK,CACrE,CACJ,CACJ",
|
|
6
|
+
"names": ["AuthMixin", "Base", "data", "email", "password", "rt", "refreshToken", "passwd", "params"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import type { EntityHistoryRecord, EntityListParams, EntityListResult, EntityQueryRequest } from "../types.js";
|
|
2
|
+
import type { GConstructor, EntityServerClientBase } from "../client/base.js";
|
|
3
|
+
export declare function EntityMixin<TBase extends GConstructor<EntityServerClientBase>>(Base: TBase): {
|
|
4
|
+
new (...args: any[]): {
|
|
5
|
+
/** 트랜잭션을 시작하고 활성 트랜잭션 ID를 저장합니다. */
|
|
6
|
+
transStart(): Promise<string>;
|
|
7
|
+
/** 활성 트랜잭션(또는 전달된 transactionId)을 롤백합니다. */
|
|
8
|
+
transRollback(transactionId?: string): Promise<{
|
|
9
|
+
ok: boolean;
|
|
10
|
+
}>;
|
|
11
|
+
/**
|
|
12
|
+
* 활성 트랜잭션(또는 전달된 transactionId)을 커밋합니다.
|
|
13
|
+
*
|
|
14
|
+
* @returns `results` 배열: commit된 각 작업의 `entity`, `action`, `seq`
|
|
15
|
+
*/
|
|
16
|
+
transCommit(transactionId?: string): Promise<{
|
|
17
|
+
ok: boolean;
|
|
18
|
+
results: Array<{
|
|
19
|
+
entity: string;
|
|
20
|
+
action: string;
|
|
21
|
+
seq: number;
|
|
22
|
+
}>;
|
|
23
|
+
}>;
|
|
24
|
+
/** 엔티티 설정 메타데이터를 조회합니다. */
|
|
25
|
+
meta<T = unknown>(entity: string): Promise<{
|
|
26
|
+
ok: boolean;
|
|
27
|
+
data: T;
|
|
28
|
+
}>;
|
|
29
|
+
/** 엔티티 데이터를 저장 없이 검증합니다. */
|
|
30
|
+
validate<T = unknown>(entity: string, data: Record<string, unknown>): Promise<T>;
|
|
31
|
+
/** 시퀀스 ID로 엔티티 단건을 조회합니다. */
|
|
32
|
+
get<T = unknown>(entity: string, seq: number, opts?: {
|
|
33
|
+
skipHooks?: boolean;
|
|
34
|
+
}): Promise<{
|
|
35
|
+
ok: boolean;
|
|
36
|
+
data: T;
|
|
37
|
+
}>;
|
|
38
|
+
/** 조건으로 엔티티 단건을 조회합니다. data 컬럼을 완전히 복호화하여 반환합니다. */
|
|
39
|
+
find<T = unknown>(entity: string, conditions?: Record<string, unknown>, opts?: {
|
|
40
|
+
skipHooks?: boolean;
|
|
41
|
+
}): Promise<{
|
|
42
|
+
ok: boolean;
|
|
43
|
+
data: T;
|
|
44
|
+
}>;
|
|
45
|
+
/** 페이지네이션/정렬/필터 조건으로 엔티티 목록을 조회합니다. */
|
|
46
|
+
list<T = unknown>(entity: string, params?: EntityListParams): Promise<{
|
|
47
|
+
ok: boolean;
|
|
48
|
+
data: EntityListResult<T>;
|
|
49
|
+
}>;
|
|
50
|
+
/**
|
|
51
|
+
* 엔티티 총 건수를 조회합니다.
|
|
52
|
+
*
|
|
53
|
+
* @param conditions 필터 조건 (예: `{ status: "active" }`)
|
|
54
|
+
*/
|
|
55
|
+
count(entity: string, conditions?: Record<string, unknown>): Promise<{
|
|
56
|
+
ok: boolean;
|
|
57
|
+
count: number;
|
|
58
|
+
}>;
|
|
59
|
+
/**
|
|
60
|
+
* 커스텀 SQL로 엔티티를 조회합니다.
|
|
61
|
+
*
|
|
62
|
+
* SELECT 전용이며 인덱스 테이블만 조회 가능합니다. JOIN 지원.
|
|
63
|
+
*/
|
|
64
|
+
query<T = unknown>(entity: string, req: EntityQueryRequest): Promise<{
|
|
65
|
+
ok: boolean;
|
|
66
|
+
data: {
|
|
67
|
+
items: T[];
|
|
68
|
+
count: number;
|
|
69
|
+
};
|
|
70
|
+
}>;
|
|
71
|
+
/** 엔티티 데이터를 생성/수정(Submit)합니다. `seq`가 없으면 INSERT, 있으면 UPDATE입니다. */
|
|
72
|
+
submit(entity: string, data: Record<string, unknown>, opts?: {
|
|
73
|
+
transactionId?: string;
|
|
74
|
+
skipHooks?: boolean;
|
|
75
|
+
}): Promise<{
|
|
76
|
+
ok: boolean;
|
|
77
|
+
seq: number;
|
|
78
|
+
}>;
|
|
79
|
+
/** 시퀀스 ID로 엔티티를 삭제합니다(`hard=true`면 하드 삭제, 기본은 소프트 삭제). */
|
|
80
|
+
delete(entity: string, seq: number, opts?: {
|
|
81
|
+
transactionId?: string;
|
|
82
|
+
hard?: boolean;
|
|
83
|
+
skipHooks?: boolean;
|
|
84
|
+
}): Promise<{
|
|
85
|
+
ok: boolean;
|
|
86
|
+
deleted: number;
|
|
87
|
+
}>;
|
|
88
|
+
/** 엔티티 단건의 변경 이력을 조회합니다. */
|
|
89
|
+
history<T = unknown>(entity: string, seq: number, params?: Pick<EntityListParams, "page" | "limit">): Promise<{
|
|
90
|
+
ok: boolean;
|
|
91
|
+
data: EntityListResult<EntityHistoryRecord<T>>;
|
|
92
|
+
}>;
|
|
93
|
+
/** 특정 이력 시점으로 엔티티를 롤백합니다. */
|
|
94
|
+
rollback(entity: string, historySeq: number): Promise<{
|
|
95
|
+
ok: boolean;
|
|
96
|
+
}>;
|
|
97
|
+
baseUrl: string;
|
|
98
|
+
token: string;
|
|
99
|
+
anonymousPacketToken: string;
|
|
100
|
+
apiKey: string;
|
|
101
|
+
hmacSecret: string;
|
|
102
|
+
encryptRequests: boolean;
|
|
103
|
+
csrfEnabled: boolean;
|
|
104
|
+
csrfToken: string;
|
|
105
|
+
csrfHeaderName: string;
|
|
106
|
+
csrfRefreshPath: string;
|
|
107
|
+
csrfRefreshBuffer: number;
|
|
108
|
+
activeTxId: string | null;
|
|
109
|
+
keepSession: boolean;
|
|
110
|
+
refreshBuffer: number;
|
|
111
|
+
onTokenRefreshed?: (accessToken: string, expiresIn: number) => void;
|
|
112
|
+
onSessionExpired?: (error: Error) => void;
|
|
113
|
+
_sessionRefreshToken: string | null;
|
|
114
|
+
_refreshTimer: ReturnType<typeof setTimeout> | null;
|
|
115
|
+
_csrfRefreshTimer: ReturnType<typeof setTimeout> | null;
|
|
116
|
+
_csrfRefreshPromise: Promise<string> | null;
|
|
117
|
+
configure(options: Partial<import("../types.js").EntityServerClientOptions>): void;
|
|
118
|
+
setToken(token: string): void;
|
|
119
|
+
setAnonymousPacketToken(token: string): void;
|
|
120
|
+
setApiKey(apiKey: string): void;
|
|
121
|
+
setHmacSecret(secret: string): void;
|
|
122
|
+
setEncryptRequests(value: boolean): void;
|
|
123
|
+
setCsrfToken(token: string): void;
|
|
124
|
+
setCsrfEnabled(enabled: boolean): void;
|
|
125
|
+
_scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
|
|
126
|
+
access_token: string;
|
|
127
|
+
expires_in: number;
|
|
128
|
+
}>): void;
|
|
129
|
+
_clearRefreshTimer(): void;
|
|
130
|
+
stopKeepSession(): void;
|
|
131
|
+
_clearCsrfRefreshTimer(): void;
|
|
132
|
+
stopCsrfRefresh(): void;
|
|
133
|
+
_scheduleCsrfRefresh(expiresIn: number): void;
|
|
134
|
+
refreshCsrfToken(): Promise<string>;
|
|
135
|
+
_applyCsrfHealth(csrf?: import("../types.js").EntityServerClientHealthCsrf | null): void;
|
|
136
|
+
readRequestBody<T = Record<string, unknown>>(body: ArrayBuffer | Uint8Array | string | T | null | undefined, contentType?: string, requireEncrypted?: boolean): T;
|
|
137
|
+
get _reqOpts(): import("../client/request.js").RequestOptions;
|
|
138
|
+
requestJson<T>(method: string, path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
139
|
+
requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
140
|
+
requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
|
|
141
|
+
requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
142
|
+
_request<T>(method: string, path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
143
|
+
_requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
144
|
+
_requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
|
|
145
|
+
_requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
146
|
+
};
|
|
147
|
+
} & TBase;
|