entity-client 1.0.15 → 1.0.17
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 +362 -362
- package/dist/EntityAppServerApi.d.ts +384 -416
- package/dist/EntityAppServerApi.js.map +1 -1
- package/dist/EntityServerApi.d.ts +204 -216
- package/dist/EntityServerApi.js.map +1 -1
- package/dist/client/base.d.ts +27 -40
- package/dist/client/base.js +1 -1
- package/dist/client/base.js.map +3 -3
- package/dist/client/hmac.js.map +1 -1
- package/dist/client/packet.js.map +1 -1
- package/dist/client/request.js.map +1 -1
- package/dist/client/utils.js.map +1 -1
- package/dist/hooks/useEntityAppServer.js.map +1 -1
- package/dist/hooks/useEntityClient.js.map +1 -1
- package/dist/hooks/useEntityServer.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +3 -3
- package/dist/mixins/app/index.js.map +1 -1
- package/dist/mixins/app/plugins/alimtalk.d.ts +24 -26
- package/dist/mixins/app/plugins/alimtalk.js.map +1 -1
- package/dist/mixins/app/plugins/friendtalk.d.ts +24 -26
- package/dist/mixins/app/plugins/friendtalk.js.map +1 -1
- package/dist/mixins/app/plugins/holidays.d.ts +24 -26
- package/dist/mixins/app/plugins/holidays.js.map +1 -1
- package/dist/mixins/app/plugins/identity.d.ts +24 -26
- package/dist/mixins/app/plugins/identity.js.map +1 -1
- package/dist/mixins/app/plugins/index.js.map +1 -1
- package/dist/mixins/app/plugins/llm.d.ts +24 -26
- package/dist/mixins/app/plugins/llm.js.map +1 -1
- package/dist/mixins/app/plugins/ocr.d.ts +24 -26
- package/dist/mixins/app/plugins/ocr.js.map +1 -1
- package/dist/mixins/app/plugins/pg.d.ts +24 -26
- package/dist/mixins/app/plugins/pg.js.map +1 -1
- package/dist/mixins/app/plugins/push.d.ts +24 -26
- package/dist/mixins/app/plugins/push.js.map +1 -1
- package/dist/mixins/app/plugins/sms.d.ts +24 -26
- package/dist/mixins/app/plugins/sms.js.map +1 -1
- package/dist/mixins/app/plugins/taxinvoice.d.ts +24 -26
- package/dist/mixins/app/plugins/taxinvoice.js.map +1 -1
- package/dist/mixins/app/routes/account.d.ts +24 -26
- package/dist/mixins/app/routes/account.js.map +1 -1
- package/dist/mixins/app/routes/board.d.ts +24 -26
- package/dist/mixins/app/routes/board.js.map +2 -2
- package/dist/mixins/app/routes/email-verify.d.ts +24 -26
- package/dist/mixins/app/routes/email-verify.js.map +1 -1
- package/dist/mixins/app/routes/oauth.d.ts +24 -26
- package/dist/mixins/app/routes/oauth.js.map +1 -1
- package/dist/mixins/app/routes/password-reset.d.ts +24 -26
- package/dist/mixins/app/routes/password-reset.js.map +1 -1
- package/dist/mixins/app/routes/two-factor.d.ts +24 -26
- package/dist/mixins/app/routes/two-factor.js.map +1 -1
- package/dist/mixins/server/admin.d.ts +30 -32
- package/dist/mixins/server/admin.js +1 -1
- package/dist/mixins/server/admin.js.map +2 -2
- package/dist/mixins/server/auth.d.ts +30 -28
- package/dist/mixins/server/auth.js +1 -1
- package/dist/mixins/server/auth.js.map +3 -3
- package/dist/mixins/server/entity.d.ts +24 -26
- package/dist/mixins/server/entity.js +1 -1
- package/dist/mixins/server/entity.js.map +2 -2
- package/dist/mixins/server/file.d.ts +24 -26
- package/dist/mixins/server/file.js +1 -1
- package/dist/mixins/server/file.js.map +2 -2
- package/dist/mixins/server/index.js.map +1 -1
- package/dist/mixins/server/push.d.ts +24 -26
- package/dist/mixins/server/push.js.map +1 -1
- package/dist/mixins/server/smtp.d.ts +24 -26
- package/dist/mixins/server/smtp.js +1 -1
- package/dist/mixins/server/smtp.js.map +2 -2
- package/dist/mixins/server/transaction.d.ts +24 -26
- package/dist/mixins/server/transaction.js +1 -1
- package/dist/mixins/server/transaction.js.map +2 -2
- package/dist/mixins/server/utils.d.ts +24 -26
- package/dist/mixins/server/utils.js +1 -1
- package/dist/mixins/server/utils.js.map +2 -2
- package/dist/packet.js.map +1 -1
- package/dist/react.js +1 -1
- package/dist/react.js.map +3 -3
- package/dist/types.d.ts +1 -1
- package/package.json +57 -57
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/mixins/app/routes/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.http.get(\n `/v1/oauth/${provider}/callback${qs ? `?${qs}` : \"\"}`,\n false,\n );\n }\n\n return this.http.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.http.post(\"/v1/account/oauth/link\", body);\n }\n\n unlinkOAuthAccount<T = unknown>(provider: string): Promise<T> {\n return this.http.delete(\n `/v1/account/oauth/link/${provider}`,\n );\n }\n\n listOAuthProviders<T = unknown>(): Promise<T> {\n return this.http.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.http.post(\n `/v1/account/oauth/refresh/${provider}`,\n body,\n );\n }\n };\n}\n"],
|
|
4
|
+
"sourcesContent": ["import { buildQuery } from \"../../../client/utils.js\";\r\nimport type {\r\n GConstructor,\r\n EntityServerClientBase,\r\n} from \"../../../client/base.js\";\r\n\r\nexport function OAuthMixin<TBase extends GConstructor<EntityServerClientBase>>(\r\n Base: TBase,\r\n) {\r\n return class OAuthMixinClass extends Base {\r\n oauthAuthorizeUrl(\r\n provider: string,\r\n query: Record<string, unknown> = {},\r\n ): string {\r\n const qs = buildQuery(query);\r\n return `${this.baseUrl}/v1/oauth/${provider}${qs ? `?${qs}` : \"\"}`;\r\n }\r\n\r\n oauthCallback<T = unknown>(\r\n provider: string,\r\n payload?: Record<string, unknown>,\r\n method: \"GET\" | \"POST\" = \"POST\",\r\n ): Promise<T> {\r\n if (method === \"GET\") {\r\n const qs = buildQuery(payload ?? {});\r\n return this.http.get(\r\n `/v1/oauth/${provider}/callback${qs ? `?${qs}` : \"\"}`,\r\n false,\r\n );\r\n }\r\n\r\n return this.http.post(\r\n `/v1/oauth/${provider}/callback`,\r\n payload,\r\n false,\r\n );\r\n }\r\n\r\n linkOAuthAccount<T = unknown>(\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.post(\"/v1/account/oauth/link\", body);\r\n }\r\n\r\n unlinkOAuthAccount<T = unknown>(provider: string): Promise<T> {\r\n return this.http.delete(\r\n `/v1/account/oauth/link/${provider}`,\r\n );\r\n }\r\n\r\n listOAuthProviders<T = unknown>(): Promise<T> {\r\n return this.http.get(\"/v1/account/oauth/providers\");\r\n }\r\n\r\n refreshOAuthProviderToken<T = unknown>(\r\n provider: string,\r\n body?: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.post(\r\n `/v1/account/oauth/refresh/${provider}`,\r\n body,\r\n );\r\n }\r\n };\r\n}\r\n"],
|
|
5
5
|
"mappings": "AAAA,OAAS,cAAAA,MAAkB,2BAMpB,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,KAAK,IACb,aAAaH,CAAQ,YAAYE,EAAK,IAAIA,CAAE,GAAK,EAAE,GACnD,EACJ,CACJ,CAEA,OAAO,KAAK,KAAK,KACb,aAAaF,CAAQ,YACrBG,EACA,EACJ,CACJ,CAEA,iBACIE,EACU,CACV,OAAO,KAAK,KAAK,KAAK,yBAA0BA,CAAI,CACxD,CAEA,mBAAgCL,EAA8B,CAC1D,OAAO,KAAK,KAAK,OACb,0BAA0BA,CAAQ,EACtC,CACJ,CAEA,oBAA8C,CAC1C,OAAO,KAAK,KAAK,IAAI,6BAA6B,CACtD,CAEA,0BACIA,EACAK,EACU,CACV,OAAO,KAAK,KAAK,KACb,6BAA6BL,CAAQ,GACrCK,CACJ,CACJ,CACJ,CACJ",
|
|
6
6
|
"names": ["buildQuery", "OAuthMixin", "Base", "provider", "query", "qs", "payload", "method", "body"]
|
|
7
7
|
}
|
|
@@ -15,30 +15,30 @@ export declare function PasswordResetMixin<TBase extends GConstructor<EntityServ
|
|
|
15
15
|
csrfEnabled: boolean;
|
|
16
16
|
csrfHeaderName: string;
|
|
17
17
|
csrfCookieName: string;
|
|
18
|
-
|
|
18
|
+
csrfRefresher: (() => Promise<void>) | null;
|
|
19
19
|
activeTxId: string | null;
|
|
20
20
|
keepSession: boolean;
|
|
21
21
|
refreshBuffer: number;
|
|
22
22
|
onTokenRefreshed?: (accessToken: string, expiresIn: number) => void;
|
|
23
23
|
onSessionExpired?: (error: Error) => void;
|
|
24
24
|
onHealthChange?: (online: boolean) => void;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
sessionRefreshToken: string | null;
|
|
26
|
+
refreshTimer: ReturnType<typeof setTimeout> | null;
|
|
27
|
+
healthTickTimer: ReturnType<typeof setInterval> | null;
|
|
28
|
+
healthTickPromise: Promise<unknown> | null;
|
|
29
29
|
realtimeEnabled: boolean;
|
|
30
30
|
realtimePath: string;
|
|
31
31
|
realtimeAutoConnect: boolean;
|
|
32
32
|
realtimeAutoReconnect: boolean;
|
|
33
33
|
realtimeReconnectDelayMs: number;
|
|
34
34
|
realtimeStatus: import("../../../types.js").RealtimeConnectionStatus;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
35
|
+
realtimeSocket: WebSocket | null;
|
|
36
|
+
realtimeConnectPromise: Promise<void> | null;
|
|
37
|
+
realtimeReconnectTimer: ReturnType<typeof setTimeout> | null;
|
|
38
|
+
realtimeShouldReconnect: boolean;
|
|
39
|
+
realtimeMessageListeners: Set<import("../../../types.js").RealtimeMessageListener>;
|
|
40
|
+
realtimeStatusListeners: Set<import("../../../types.js").RealtimeStatusListener>;
|
|
41
|
+
realtimeEventListeners: Map<string, Set<import("../../../types.js").RealtimeMessageListener>>;
|
|
42
42
|
configure(options: Partial<import("../../../types.js").EntityServerClientOptions>): void;
|
|
43
43
|
setToken(token: string): void;
|
|
44
44
|
setAnonymousPacketToken(token: string): void;
|
|
@@ -59,21 +59,22 @@ export declare function PasswordResetMixin<TBase extends GConstructor<EntityServ
|
|
|
59
59
|
unsubscribeRealtime(subscriptions: string[]): boolean;
|
|
60
60
|
startHealthTick(intervalMs?: number): void;
|
|
61
61
|
stopHealthTick(): void;
|
|
62
|
-
|
|
62
|
+
scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
|
|
63
63
|
access_token: string;
|
|
64
64
|
expires_in: number;
|
|
65
65
|
}>): void;
|
|
66
|
-
|
|
66
|
+
clearRefreshTimer(): void;
|
|
67
67
|
stopKeepSession(): void;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
68
|
+
applyRealtimeOptions(options?: boolean | import("../../../types.js").RealtimeClientOptions): void;
|
|
69
|
+
buildRealtimeUrl(): string;
|
|
70
|
+
handleRealtimeMessage(payload: unknown): void;
|
|
71
|
+
scheduleRealtimeReconnect(reason: string): void;
|
|
72
|
+
clearRealtimeReconnectTimer(): void;
|
|
73
|
+
setRealtimeStatus(status: import("../../../types.js").RealtimeConnectionStatus, reason?: string, error?: Error): void;
|
|
74
|
+
applyCsrfHealth(): void;
|
|
75
75
|
readRequestBody<T = Record<string, unknown>>(body: ArrayBuffer | Uint8Array | string | T | null | undefined, contentType?: string, requireEncrypted?: boolean): T;
|
|
76
|
-
get
|
|
76
|
+
get reqOpts(): import("../../../client/request.js").RequestOptions;
|
|
77
|
+
prepareRequest(_withAuth: boolean): Promise<void>;
|
|
77
78
|
get http(): {
|
|
78
79
|
get<T>(path: string, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
79
80
|
post<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
@@ -81,12 +82,9 @@ export declare function PasswordResetMixin<TBase extends GConstructor<EntityServ
|
|
|
81
82
|
patch<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
82
83
|
delete<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
83
84
|
};
|
|
85
|
+
request<T>(method: string, path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
84
86
|
requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
85
87
|
requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
|
|
86
88
|
requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
87
|
-
_request<T>(method: string, path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
88
|
-
_requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
89
|
-
_requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
|
|
90
|
-
_requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
91
89
|
};
|
|
92
90
|
} & TBase;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/mixins/app/routes/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.http.post(\n \"/v1/password-reset/request\",\n body,\n false,\n );\n }\n\n validatePasswordResetToken<T = unknown>(token: string): Promise<T> {\n return this.http.get(\n `/v1/password-reset/validate/${encodeURIComponent(token)}`,\n false,\n );\n }\n\n verifyPasswordReset<T = unknown>(\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.http.post(\n \"/v1/password-reset/verify\",\n body,\n false,\n );\n }\n };\n}\n"],
|
|
4
|
+
"sourcesContent": ["import type {\r\n GConstructor,\r\n EntityServerClientBase,\r\n} from \"../../../client/base.js\";\r\n\r\nexport function PasswordResetMixin<\r\n TBase extends GConstructor<EntityServerClientBase>,\r\n>(Base: TBase) {\r\n return class PasswordResetMixinClass extends Base {\r\n requestPasswordReset<T = unknown>(\r\n body: { email: string } | Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.post(\r\n \"/v1/password-reset/request\",\r\n body,\r\n false,\r\n );\r\n }\r\n\r\n validatePasswordResetToken<T = unknown>(token: string): Promise<T> {\r\n return this.http.get(\r\n `/v1/password-reset/validate/${encodeURIComponent(token)}`,\r\n false,\r\n );\r\n }\r\n\r\n verifyPasswordReset<T = unknown>(\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.post(\r\n \"/v1/password-reset/verify\",\r\n body,\r\n false,\r\n );\r\n }\r\n };\r\n}\r\n"],
|
|
5
5
|
"mappings": "AAKO,SAASA,EAEdC,EAAa,CACX,OAAO,cAAsCA,CAAK,CAC9C,qBACIC,EACU,CACV,OAAO,KAAK,KAAK,KACb,6BACAA,EACA,EACJ,CACJ,CAEA,2BAAwCC,EAA2B,CAC/D,OAAO,KAAK,KAAK,IACb,+BAA+B,mBAAmBA,CAAK,CAAC,GACxD,EACJ,CACJ,CAEA,oBACID,EACU,CACV,OAAO,KAAK,KAAK,KACb,4BACAA,EACA,EACJ,CACJ,CACJ,CACJ",
|
|
6
6
|
"names": ["PasswordResetMixin", "Base", "body", "token"]
|
|
7
7
|
}
|
|
@@ -17,30 +17,30 @@ export declare function TwoFactorMixin<TBase extends GConstructor<EntityServerCl
|
|
|
17
17
|
csrfEnabled: boolean;
|
|
18
18
|
csrfHeaderName: string;
|
|
19
19
|
csrfCookieName: string;
|
|
20
|
-
|
|
20
|
+
csrfRefresher: (() => Promise<void>) | null;
|
|
21
21
|
activeTxId: string | null;
|
|
22
22
|
keepSession: boolean;
|
|
23
23
|
refreshBuffer: number;
|
|
24
24
|
onTokenRefreshed?: (accessToken: string, expiresIn: number) => void;
|
|
25
25
|
onSessionExpired?: (error: Error) => void;
|
|
26
26
|
onHealthChange?: (online: boolean) => void;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
sessionRefreshToken: string | null;
|
|
28
|
+
refreshTimer: ReturnType<typeof setTimeout> | null;
|
|
29
|
+
healthTickTimer: ReturnType<typeof setInterval> | null;
|
|
30
|
+
healthTickPromise: Promise<unknown> | null;
|
|
31
31
|
realtimeEnabled: boolean;
|
|
32
32
|
realtimePath: string;
|
|
33
33
|
realtimeAutoConnect: boolean;
|
|
34
34
|
realtimeAutoReconnect: boolean;
|
|
35
35
|
realtimeReconnectDelayMs: number;
|
|
36
36
|
realtimeStatus: import("../../../types.js").RealtimeConnectionStatus;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
37
|
+
realtimeSocket: WebSocket | null;
|
|
38
|
+
realtimeConnectPromise: Promise<void> | null;
|
|
39
|
+
realtimeReconnectTimer: ReturnType<typeof setTimeout> | null;
|
|
40
|
+
realtimeShouldReconnect: boolean;
|
|
41
|
+
realtimeMessageListeners: Set<import("../../../types.js").RealtimeMessageListener>;
|
|
42
|
+
realtimeStatusListeners: Set<import("../../../types.js").RealtimeStatusListener>;
|
|
43
|
+
realtimeEventListeners: Map<string, Set<import("../../../types.js").RealtimeMessageListener>>;
|
|
44
44
|
configure(options: Partial<import("../../../types.js").EntityServerClientOptions>): void;
|
|
45
45
|
setToken(token: string): void;
|
|
46
46
|
setAnonymousPacketToken(token: string): void;
|
|
@@ -61,21 +61,22 @@ export declare function TwoFactorMixin<TBase extends GConstructor<EntityServerCl
|
|
|
61
61
|
unsubscribeRealtime(subscriptions: string[]): boolean;
|
|
62
62
|
startHealthTick(intervalMs?: number): void;
|
|
63
63
|
stopHealthTick(): void;
|
|
64
|
-
|
|
64
|
+
scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
|
|
65
65
|
access_token: string;
|
|
66
66
|
expires_in: number;
|
|
67
67
|
}>): void;
|
|
68
|
-
|
|
68
|
+
clearRefreshTimer(): void;
|
|
69
69
|
stopKeepSession(): void;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
70
|
+
applyRealtimeOptions(options?: boolean | import("../../../types.js").RealtimeClientOptions): void;
|
|
71
|
+
buildRealtimeUrl(): string;
|
|
72
|
+
handleRealtimeMessage(payload: unknown): void;
|
|
73
|
+
scheduleRealtimeReconnect(reason: string): void;
|
|
74
|
+
clearRealtimeReconnectTimer(): void;
|
|
75
|
+
setRealtimeStatus(status: import("../../../types.js").RealtimeConnectionStatus, reason?: string, error?: Error): void;
|
|
76
|
+
applyCsrfHealth(): void;
|
|
77
77
|
readRequestBody<T = Record<string, unknown>>(body: ArrayBuffer | Uint8Array | string | T | null | undefined, contentType?: string, requireEncrypted?: boolean): T;
|
|
78
|
-
get
|
|
78
|
+
get reqOpts(): import("../../../client/request.js").RequestOptions;
|
|
79
|
+
prepareRequest(_withAuth: boolean): Promise<void>;
|
|
79
80
|
get http(): {
|
|
80
81
|
get<T>(path: string, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
81
82
|
post<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
@@ -83,12 +84,9 @@ export declare function TwoFactorMixin<TBase extends GConstructor<EntityServerCl
|
|
|
83
84
|
patch<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
84
85
|
delete<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
85
86
|
};
|
|
87
|
+
request<T>(method: string, path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
86
88
|
requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
87
89
|
requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
|
|
88
90
|
requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
89
|
-
_request<T>(method: string, path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
90
|
-
_requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
91
|
-
_requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
|
|
92
|
-
_requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
93
91
|
};
|
|
94
92
|
} & TBase;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/mixins/app/routes/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.http.post(\"/v1/account/2fa/setup\", body);\n }\n\n verifyTwoFactorSetup<T = unknown>(\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.http.post(\n \"/v1/account/2fa/setup/verify\",\n body,\n false,\n );\n }\n\n disableTwoFactor<T = unknown>(): Promise<T> {\n return this.http.delete(\"/v1/account/2fa\");\n }\n\n getTwoFactorStatus<T = unknown>(): Promise<T> {\n return this.http.get(\"/v1/account/2fa/status\");\n }\n\n regenerateTwoFactorRecoveryCodes<T = unknown>(): Promise<T> {\n return this.http.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.http.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.http.post(\n \"/v1/account/2fa/recovery\",\n body,\n false,\n );\n }\n };\n}\n"],
|
|
4
|
+
"sourcesContent": ["import type {\r\n GConstructor,\r\n EntityServerClientBase,\r\n} from \"../../../client/base.js\";\r\n\r\nexport function TwoFactorMixin<\r\n TBase extends GConstructor<EntityServerClientBase>,\r\n>(Base: TBase) {\r\n return class TwoFactorMixinClass extends Base {\r\n setupTwoFactor<T = unknown>(\r\n body?: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.post(\"/v1/account/2fa/setup\", body);\r\n }\r\n\r\n verifyTwoFactorSetup<T = unknown>(\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.post(\r\n \"/v1/account/2fa/setup/verify\",\r\n body,\r\n false,\r\n );\r\n }\r\n\r\n disableTwoFactor<T = unknown>(): Promise<T> {\r\n return this.http.delete(\"/v1/account/2fa\");\r\n }\r\n\r\n getTwoFactorStatus<T = unknown>(): Promise<T> {\r\n return this.http.get(\"/v1/account/2fa/status\");\r\n }\r\n\r\n regenerateTwoFactorRecoveryCodes<T = unknown>(): Promise<T> {\r\n return this.http.post(\r\n \"/v1/account/2fa/recovery/regenerate\",\r\n );\r\n }\r\n\r\n verifyTwoFactor<T = unknown>(\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.post(\r\n \"/v1/account/2fa/verify\",\r\n body,\r\n false,\r\n );\r\n }\r\n\r\n recoverTwoFactorAccess<T = unknown>(\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.post(\r\n \"/v1/account/2fa/recovery\",\r\n body,\r\n false,\r\n );\r\n }\r\n };\r\n}\r\n"],
|
|
5
5
|
"mappings": "AAKO,SAASA,EAEdC,EAAa,CACX,OAAO,cAAkCA,CAAK,CAC1C,eACIC,EACU,CACV,OAAO,KAAK,KAAK,KAAK,wBAAyBA,CAAI,CACvD,CAEA,qBACIA,EACU,CACV,OAAO,KAAK,KAAK,KACb,+BACAA,EACA,EACJ,CACJ,CAEA,kBAA4C,CACxC,OAAO,KAAK,KAAK,OAAO,iBAAiB,CAC7C,CAEA,oBAA8C,CAC1C,OAAO,KAAK,KAAK,IAAI,wBAAwB,CACjD,CAEA,kCAA4D,CACxD,OAAO,KAAK,KAAK,KACb,qCACJ,CACJ,CAEA,gBACIA,EACU,CACV,OAAO,KAAK,KAAK,KACb,yBACAA,EACA,EACJ,CACJ,CAEA,uBACIA,EACU,CACV,OAAO,KAAK,KAAK,KACb,2BACAA,EACA,EACJ,CACJ,CACJ,CACJ",
|
|
6
6
|
"names": ["TwoFactorMixin", "Base", "body"]
|
|
7
7
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { GConstructor, EntityServerClientBase } from "../../client/base.js";
|
|
2
2
|
export declare function AdminMixin<TBase extends GConstructor<EntityServerClientBase>>(Base: TBase): {
|
|
3
3
|
new (...args: any[]): {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
adminPath(path: string): string;
|
|
5
|
+
adminGet<T>(path: string): Promise<T>;
|
|
6
|
+
adminPost<T>(path: string, body?: unknown): Promise<T>;
|
|
7
|
+
adminPut<T>(path: string, body?: unknown): Promise<T>;
|
|
8
|
+
adminPatch<T>(path: string, body?: unknown): Promise<T>;
|
|
9
|
+
adminDelete<T>(path: string, body?: unknown): Promise<T>;
|
|
10
10
|
listAdminEntities<T = unknown>(): Promise<T>;
|
|
11
11
|
getAdminErdSchema<T = unknown>(): Promise<T>;
|
|
12
12
|
batchEnsureAdminEntities<T = unknown>(configs: unknown[]): Promise<T>;
|
|
@@ -61,30 +61,30 @@ export declare function AdminMixin<TBase extends GConstructor<EntityServerClient
|
|
|
61
61
|
csrfEnabled: boolean;
|
|
62
62
|
csrfHeaderName: string;
|
|
63
63
|
csrfCookieName: string;
|
|
64
|
-
|
|
64
|
+
csrfRefresher: (() => Promise<void>) | null;
|
|
65
65
|
activeTxId: string | null;
|
|
66
66
|
keepSession: boolean;
|
|
67
67
|
refreshBuffer: number;
|
|
68
68
|
onTokenRefreshed?: (accessToken: string, expiresIn: number) => void;
|
|
69
69
|
onSessionExpired?: (error: Error) => void;
|
|
70
70
|
onHealthChange?: (online: boolean) => void;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
71
|
+
sessionRefreshToken: string | null;
|
|
72
|
+
refreshTimer: ReturnType<typeof setTimeout> | null;
|
|
73
|
+
healthTickTimer: ReturnType<typeof setInterval> | null;
|
|
74
|
+
healthTickPromise: Promise<unknown> | null;
|
|
75
75
|
realtimeEnabled: boolean;
|
|
76
76
|
realtimePath: string;
|
|
77
77
|
realtimeAutoConnect: boolean;
|
|
78
78
|
realtimeAutoReconnect: boolean;
|
|
79
79
|
realtimeReconnectDelayMs: number;
|
|
80
80
|
realtimeStatus: import("../../types.js").RealtimeConnectionStatus;
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
81
|
+
realtimeSocket: WebSocket | null;
|
|
82
|
+
realtimeConnectPromise: Promise<void> | null;
|
|
83
|
+
realtimeReconnectTimer: ReturnType<typeof setTimeout> | null;
|
|
84
|
+
realtimeShouldReconnect: boolean;
|
|
85
|
+
realtimeMessageListeners: Set<import("../../types.js").RealtimeMessageListener>;
|
|
86
|
+
realtimeStatusListeners: Set<import("../../types.js").RealtimeStatusListener>;
|
|
87
|
+
realtimeEventListeners: Map<string, Set<import("../../types.js").RealtimeMessageListener>>;
|
|
88
88
|
configure(options: Partial<import("../../types.js").EntityServerClientOptions>): void;
|
|
89
89
|
setToken(token: string): void;
|
|
90
90
|
setAnonymousPacketToken(token: string): void;
|
|
@@ -105,21 +105,22 @@ export declare function AdminMixin<TBase extends GConstructor<EntityServerClient
|
|
|
105
105
|
unsubscribeRealtime(subscriptions: string[]): boolean;
|
|
106
106
|
startHealthTick(intervalMs?: number): void;
|
|
107
107
|
stopHealthTick(): void;
|
|
108
|
-
|
|
108
|
+
scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
|
|
109
109
|
access_token: string;
|
|
110
110
|
expires_in: number;
|
|
111
111
|
}>): void;
|
|
112
|
-
|
|
112
|
+
clearRefreshTimer(): void;
|
|
113
113
|
stopKeepSession(): void;
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
114
|
+
applyRealtimeOptions(options?: boolean | import("../../types.js").RealtimeClientOptions): void;
|
|
115
|
+
buildRealtimeUrl(): string;
|
|
116
|
+
handleRealtimeMessage(payload: unknown): void;
|
|
117
|
+
scheduleRealtimeReconnect(reason: string): void;
|
|
118
|
+
clearRealtimeReconnectTimer(): void;
|
|
119
|
+
setRealtimeStatus(status: import("../../types.js").RealtimeConnectionStatus, reason?: string, error?: Error): void;
|
|
120
|
+
applyCsrfHealth(): void;
|
|
121
121
|
readRequestBody<T = Record<string, unknown>>(body: ArrayBuffer | Uint8Array | string | T | null | undefined, contentType?: string, requireEncrypted?: boolean): T;
|
|
122
|
-
get
|
|
122
|
+
get reqOpts(): import("../../client/request.js").RequestOptions;
|
|
123
|
+
prepareRequest(_withAuth: boolean): Promise<void>;
|
|
123
124
|
get http(): {
|
|
124
125
|
get<T>(path: string, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
125
126
|
post<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
@@ -127,12 +128,9 @@ export declare function AdminMixin<TBase extends GConstructor<EntityServerClient
|
|
|
127
128
|
patch<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
128
129
|
delete<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
129
130
|
};
|
|
131
|
+
request<T>(method: string, path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
130
132
|
requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
131
133
|
requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
|
|
132
134
|
requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
133
|
-
_request<T>(method: string, path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
134
|
-
_requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
135
|
-
_requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
|
|
136
|
-
_requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
137
135
|
};
|
|
138
136
|
} & TBase;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function s(i){return class extends i{
|
|
1
|
+
function s(i){return class extends i{adminPath(n){return`/v1/admin${n}`}adminGet(n){return this.http.get(this.adminPath(n))}adminPost(n,t){return this.http.post(this.adminPath(n),t)}adminPut(n,t){return this.http.put(this.adminPath(n),t)}adminPatch(n,t){return this.http.patch(this.adminPath(n),t)}adminDelete(n,t){return this.http.delete(this.adminPath(n),t)}listAdminEntities(){return this.adminGet("/entities")}getAdminErdSchema(){return this.adminGet("/erd/schema")}batchEnsureAdminEntities(n){return this.adminPost("/entities/batch-ensure",n)}createAdminEntityConfig(n,t){return this.adminPost(`/${n}/create`,t)}getAdminEntityConfig(n){return this.adminGet(`/${n}/config`)}updateAdminEntityConfig(n,t){return this.adminPut(`/${n}/config`,t)}validateAdminEntityConfig(n,t){return this.adminPost(t?`/${t}/validate`:"/entity/validate",n)}normalizeAdminEntityConfig(n,t){return this.adminPost(t?`/${t}/normalize`:"/entity/normalize",n)}getAdminEntityStats(n,t){return this.adminPost(`/${n}/stats`,t)}reindexAdminEntity(n){return this.adminPost(`/${n}/reindex`)}syncAdminEntitySchema(n){return this.adminPost(`/${n}/sync-schema`)}resetAdminEntity(n){return this.adminPost(`/${n}/reset`)}truncateAdminEntity(n){return this.adminPost(`/${n}/truncate`)}dropAdminEntity(n){return this.adminPost(`/${n}/drop`)}resetAllAdmin(n){return this.adminPost("/reset-all",n)}listAdminConfigs(){return this.adminGet("/configs")}getAdminConfig(n){return this.adminGet(`/configs/${n}`)}updateAdminConfig(n,t){return this.adminPatch(`/configs/${n}`,t)}listAdminRoles(){return this.adminGet("/roles")}createAdminRole(n){return this.adminPost("/roles",n)}getAdminRole(n){return this.adminGet(`/roles/${n}`)}updateAdminRole(n,t){return this.adminPatch(`/roles/${n}`,t)}deleteAdminRole(n){return this.adminDelete(`/roles/${n}`)}listAdminApiKeys(){return this.adminGet("/api-keys")}createAdminApiKey(n){return this.adminPost("/api-keys",n)}getAdminApiKey(n){return this.adminGet(`/api-keys/${n}`)}updateAdminApiKey(n,t){return this.adminPatch(`/api-keys/${n}`,t)}deleteAdminApiKey(n){return this.adminDelete(`/api-keys/${n}`)}regenerateAdminApiKeySecret(n){return this.adminPost(`/api-keys/${n}/regenerate-secret`)}listAdminAccounts(){return this.adminGet("/accounts")}createAdminAccount(n){return this.adminPost("/accounts",n)}getAdminAccount(n){return this.adminGet(`/accounts/${n}`)}updateAdminAccount(n,t){return this.adminPatch(`/accounts/${n}`,t)}deleteAdminAccount(n){return this.adminDelete(`/accounts/${n}`)}listAdminLicenses(){return this.adminGet("/licenses")}createAdminLicense(n){return this.adminPost("/licenses",n)}getAdminLicense(n){return this.adminGet(`/licenses/${n}`)}updateAdminLicense(n,t){return this.adminPatch(`/licenses/${n}`,t)}deleteAdminLicense(n){return this.adminDelete(`/licenses/${n}`)}runAdminBackup(n){return this.adminPost("/backup/run",n)}getAdminBackupStatus(n){return this.adminPost("/backup/status",n)}listAdminBackups(n){return this.adminPost("/backup/list",n)}restoreAdminBackup(n){return this.adminPost("/backup/restore",n)}deleteAdminBackup(n){return this.adminPost("/backup/delete",n)}disableAdminAccountTwoFactor(n){return this.adminDelete(`/accounts/${n}/2fa`)}}}export{s as AdminMixin};
|
|
2
2
|
//# sourceMappingURL=admin.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/mixins/server/admin.ts"],
|
|
4
|
-
"sourcesContent": ["import type {\n GConstructor,\n EntityServerClientBase,\n} from \"../../client/base.js\";\n\nexport function AdminMixin<TBase extends GConstructor<EntityServerClientBase>>(\n Base: TBase,\n) {\n return class AdminMixinClass extends Base {\n
|
|
5
|
-
"mappings": "AAKO,SAASA,EACZC,EACF,CACE,OAAO,cAA8BA,CAAK,CACtC,
|
|
4
|
+
"sourcesContent": ["import type {\r\n GConstructor,\r\n EntityServerClientBase,\r\n} from \"../../client/base.js\";\r\n\r\nexport function AdminMixin<TBase extends GConstructor<EntityServerClientBase>>(\r\n Base: TBase,\r\n) {\r\n return class AdminMixinClass extends Base {\r\n adminPath(path: string): string {\r\n return `/v1/admin${path}`;\r\n }\r\n\r\n adminGet<T>(path: string): Promise<T> {\r\n return this.http.get(this.adminPath(path));\r\n }\r\n\r\n adminPost<T>(path: string, body?: unknown): Promise<T> {\r\n return this.http.post(this.adminPath(path), body);\r\n }\r\n\r\n adminPut<T>(path: string, body?: unknown): Promise<T> {\r\n return this.http.put(this.adminPath(path), body);\r\n }\r\n\r\n adminPatch<T>(path: string, body?: unknown): Promise<T> {\r\n return this.http.patch(this.adminPath(path), body);\r\n }\r\n\r\n adminDelete<T>(path: string, body?: unknown): Promise<T> {\r\n return this.http.delete(this.adminPath(path), body);\r\n }\r\n\r\n listAdminEntities<T = unknown>(): Promise<T> {\r\n return this.adminGet(\"/entities\");\r\n }\r\n\r\n getAdminErdSchema<T = unknown>(): Promise<T> {\r\n return this.adminGet(\"/erd/schema\");\r\n }\r\n\r\n batchEnsureAdminEntities<T = unknown>(configs: unknown[]): Promise<T> {\r\n return this.adminPost(\"/entities/batch-ensure\", configs);\r\n }\r\n\r\n createAdminEntityConfig<T = unknown>(\r\n entity: string,\r\n config: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.adminPost(`/${entity}/create`, config);\r\n }\r\n\r\n getAdminEntityConfig<T = unknown>(entity: string): Promise<T> {\r\n return this.adminGet(`/${entity}/config`);\r\n }\r\n\r\n updateAdminEntityConfig<T = unknown>(\r\n entity: string,\r\n config: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.adminPut(`/${entity}/config`, config);\r\n }\r\n\r\n validateAdminEntityConfig<T = unknown>(\r\n config: Record<string, unknown>,\r\n entity?: string,\r\n ): Promise<T> {\r\n return this.adminPost(\r\n entity ? `/${entity}/validate` : \"/entity/validate\",\r\n config,\r\n );\r\n }\r\n\r\n normalizeAdminEntityConfig<T = unknown>(\r\n config: Record<string, unknown>,\r\n entity?: string,\r\n ): Promise<T> {\r\n return this.adminPost(\r\n entity ? `/${entity}/normalize` : \"/entity/normalize\",\r\n config,\r\n );\r\n }\r\n\r\n getAdminEntityStats<T = unknown>(\r\n entity: string,\r\n body?: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.adminPost(`/${entity}/stats`, body);\r\n }\r\n\r\n reindexAdminEntity<T = unknown>(entity: string): Promise<T> {\r\n return this.adminPost(`/${entity}/reindex`);\r\n }\r\n\r\n syncAdminEntitySchema<T = unknown>(entity: string): Promise<T> {\r\n return this.adminPost(`/${entity}/sync-schema`);\r\n }\r\n\r\n resetAdminEntity<T = unknown>(entity: string): Promise<T> {\r\n return this.adminPost(`/${entity}/reset`);\r\n }\r\n\r\n truncateAdminEntity<T = unknown>(entity: string): Promise<T> {\r\n return this.adminPost(`/${entity}/truncate`);\r\n }\r\n\r\n dropAdminEntity<T = unknown>(entity: string): Promise<T> {\r\n return this.adminPost(`/${entity}/drop`);\r\n }\r\n\r\n resetAllAdmin<T = unknown>(body?: Record<string, unknown>): Promise<T> {\r\n return this.adminPost(\"/reset-all\", body);\r\n }\r\n\r\n listAdminConfigs<T = unknown>(): Promise<T> {\r\n return this.adminGet(\"/configs\");\r\n }\r\n\r\n getAdminConfig<T = unknown>(domain: string): Promise<T> {\r\n return this.adminGet(`/configs/${domain}`);\r\n }\r\n\r\n updateAdminConfig<T = unknown>(\r\n domain: string,\r\n patch: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.adminPatch(`/configs/${domain}`, patch);\r\n }\r\n\r\n listAdminRoles<T = unknown>(): Promise<T> {\r\n return this.adminGet(\"/roles\");\r\n }\r\n\r\n createAdminRole<T = unknown>(\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.adminPost(\"/roles\", body);\r\n }\r\n\r\n getAdminRole<T = unknown>(seq: number): Promise<T> {\r\n return this.adminGet(`/roles/${seq}`);\r\n }\r\n\r\n updateAdminRole<T = unknown>(\r\n seq: number,\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.adminPatch(`/roles/${seq}`, body);\r\n }\r\n\r\n deleteAdminRole<T = unknown>(seq: number): Promise<T> {\r\n return this.adminDelete(`/roles/${seq}`);\r\n }\r\n\r\n listAdminApiKeys<T = unknown>(): Promise<T> {\r\n return this.adminGet(\"/api-keys\");\r\n }\r\n\r\n createAdminApiKey<T = unknown>(\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.adminPost(\"/api-keys\", body);\r\n }\r\n\r\n getAdminApiKey<T = unknown>(seq: number): Promise<T> {\r\n return this.adminGet(`/api-keys/${seq}`);\r\n }\r\n\r\n updateAdminApiKey<T = unknown>(\r\n seq: number,\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.adminPatch(`/api-keys/${seq}`, body);\r\n }\r\n\r\n deleteAdminApiKey<T = unknown>(seq: number): Promise<T> {\r\n return this.adminDelete(`/api-keys/${seq}`);\r\n }\r\n\r\n regenerateAdminApiKeySecret<T = unknown>(seq: number): Promise<T> {\r\n return this.adminPost(`/api-keys/${seq}/regenerate-secret`);\r\n }\r\n\r\n listAdminAccounts<T = unknown>(): Promise<T> {\r\n return this.adminGet(\"/accounts\");\r\n }\r\n\r\n createAdminAccount<T = unknown>(\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.adminPost(\"/accounts\", body);\r\n }\r\n\r\n getAdminAccount<T = unknown>(seq: number): Promise<T> {\r\n return this.adminGet(`/accounts/${seq}`);\r\n }\r\n\r\n updateAdminAccount<T = unknown>(\r\n seq: number,\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.adminPatch(`/accounts/${seq}`, body);\r\n }\r\n\r\n deleteAdminAccount<T = unknown>(seq: number): Promise<T> {\r\n return this.adminDelete(`/accounts/${seq}`);\r\n }\r\n\r\n listAdminLicenses<T = unknown>(): Promise<T> {\r\n return this.adminGet(\"/licenses\");\r\n }\r\n\r\n createAdminLicense<T = unknown>(\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.adminPost(\"/licenses\", body);\r\n }\r\n\r\n getAdminLicense<T = unknown>(seq: number): Promise<T> {\r\n return this.adminGet(`/licenses/${seq}`);\r\n }\r\n\r\n updateAdminLicense<T = unknown>(\r\n seq: number,\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.adminPatch(`/licenses/${seq}`, body);\r\n }\r\n\r\n deleteAdminLicense<T = unknown>(seq: number): Promise<T> {\r\n return this.adminDelete(`/licenses/${seq}`);\r\n }\r\n\r\n runAdminBackup<T = unknown>(\r\n body?: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.adminPost(\"/backup/run\", body);\r\n }\r\n\r\n getAdminBackupStatus<T = unknown>(\r\n body?: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.adminPost(\"/backup/status\", body);\r\n }\r\n\r\n listAdminBackups<T = unknown>(\r\n body?: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.adminPost(\"/backup/list\", body);\r\n }\r\n\r\n restoreAdminBackup<T = unknown>(\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.adminPost(\"/backup/restore\", body);\r\n }\r\n\r\n deleteAdminBackup<T = unknown>(\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.adminPost(\"/backup/delete\", body);\r\n }\r\n\r\n disableAdminAccountTwoFactor<T = unknown>(seq: number): Promise<T> {\r\n return this.adminDelete(`/accounts/${seq}/2fa`);\r\n }\r\n };\r\n}\r\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["AdminMixin", "Base", "path", "body", "configs", "entity", "config", "domain", "patch", "seq"]
|
|
7
7
|
}
|
|
@@ -33,7 +33,10 @@ export type AuthLoginResponse = AuthLoginSuccessResponse | AuthLoginRequiresTwoF
|
|
|
33
33
|
export declare function isAuthLoginSuccessResponse(response: AuthLoginResponse): response is AuthLoginSuccessResponse;
|
|
34
34
|
export declare function AuthMixin<TBase extends GConstructor<EntityServerClientBase>>(Base: TBase): {
|
|
35
35
|
new (...args: any[]): {
|
|
36
|
-
|
|
36
|
+
authBootstrapPromise: Promise<void> | null;
|
|
37
|
+
authBootstrapToken: string;
|
|
38
|
+
authBootstrapAnonymousCompleted: boolean;
|
|
39
|
+
csrfRefresher: () => Promise<void>;
|
|
37
40
|
/**
|
|
38
41
|
* 서버 헬스 체크를 수행하고 패킷 암호화 활성 여부를 자동으로 감지합니다.
|
|
39
42
|
*
|
|
@@ -50,8 +53,10 @@ export declare function AuthMixin<TBase extends GConstructor<EntityServerClientB
|
|
|
50
53
|
packet_encryption?: boolean;
|
|
51
54
|
}>;
|
|
52
55
|
/** document.cookie 또는 Node 환경에서 쿠키 값 읽기 (SSR 대응) */
|
|
53
|
-
|
|
54
|
-
|
|
56
|
+
readCookie(name: string): string | null;
|
|
57
|
+
ensurePublicAuthBootstrap(): Promise<void>;
|
|
58
|
+
ensureAuthenticatedRequestBootstrap(): Promise<void>;
|
|
59
|
+
prepareRequest(withAuth: boolean): Promise<void>;
|
|
55
60
|
/** 로그인 응답을 반환합니다. 성공 시에만 `access_token`을 내부 상태에 저장합니다. */
|
|
56
61
|
login(email: string, password: string): Promise<AuthLoginResponse>;
|
|
57
62
|
/** HttpOnly refresh cookie로 Access Token을 재발급받아 내부 토큰을 교체합니다. */
|
|
@@ -97,23 +102,23 @@ export declare function AuthMixin<TBase extends GConstructor<EntityServerClientB
|
|
|
97
102
|
onTokenRefreshed?: (accessToken: string, expiresIn: number) => void;
|
|
98
103
|
onSessionExpired?: (error: Error) => void;
|
|
99
104
|
onHealthChange?: (online: boolean) => void;
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
105
|
+
sessionRefreshToken: string | null;
|
|
106
|
+
refreshTimer: ReturnType<typeof setTimeout> | null;
|
|
107
|
+
healthTickTimer: ReturnType<typeof setInterval> | null;
|
|
108
|
+
healthTickPromise: Promise<unknown> | null;
|
|
104
109
|
realtimeEnabled: boolean;
|
|
105
110
|
realtimePath: string;
|
|
106
111
|
realtimeAutoConnect: boolean;
|
|
107
112
|
realtimeAutoReconnect: boolean;
|
|
108
113
|
realtimeReconnectDelayMs: number;
|
|
109
114
|
realtimeStatus: import("../../types.js").RealtimeConnectionStatus;
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
115
|
+
realtimeSocket: WebSocket | null;
|
|
116
|
+
realtimeConnectPromise: Promise<void> | null;
|
|
117
|
+
realtimeReconnectTimer: ReturnType<typeof setTimeout> | null;
|
|
118
|
+
realtimeShouldReconnect: boolean;
|
|
119
|
+
realtimeMessageListeners: Set<import("../../types.js").RealtimeMessageListener>;
|
|
120
|
+
realtimeStatusListeners: Set<import("../../types.js").RealtimeStatusListener>;
|
|
121
|
+
realtimeEventListeners: Map<string, Set<import("../../types.js").RealtimeMessageListener>>;
|
|
117
122
|
configure(options: Partial<import("../../types.js").EntityServerClientOptions>): void;
|
|
118
123
|
setToken(token: string): void;
|
|
119
124
|
setAnonymousPacketToken(token: string): void;
|
|
@@ -134,21 +139,21 @@ export declare function AuthMixin<TBase extends GConstructor<EntityServerClientB
|
|
|
134
139
|
unsubscribeRealtime(subscriptions: string[]): boolean;
|
|
135
140
|
startHealthTick(intervalMs?: number): void;
|
|
136
141
|
stopHealthTick(): void;
|
|
137
|
-
|
|
142
|
+
scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
|
|
138
143
|
access_token: string;
|
|
139
144
|
expires_in: number;
|
|
140
145
|
}>): void;
|
|
141
|
-
|
|
146
|
+
clearRefreshTimer(): void;
|
|
142
147
|
stopKeepSession(): void;
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
148
|
+
applyRealtimeOptions(options?: boolean | import("../../types.js").RealtimeClientOptions): void;
|
|
149
|
+
buildRealtimeUrl(): string;
|
|
150
|
+
handleRealtimeMessage(payload: unknown): void;
|
|
151
|
+
scheduleRealtimeReconnect(reason: string): void;
|
|
152
|
+
clearRealtimeReconnectTimer(): void;
|
|
153
|
+
setRealtimeStatus(status: import("../../types.js").RealtimeConnectionStatus, reason?: string, error?: Error): void;
|
|
154
|
+
applyCsrfHealth(): void;
|
|
150
155
|
readRequestBody<T = Record<string, unknown>>(body: ArrayBuffer | Uint8Array | string | T | null | undefined, contentType?: string, requireEncrypted?: boolean): T;
|
|
151
|
-
get
|
|
156
|
+
get reqOpts(): import("../../client/request.js").RequestOptions;
|
|
152
157
|
get http(): {
|
|
153
158
|
get<T>(path: string, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
154
159
|
post<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
@@ -156,12 +161,9 @@ export declare function AuthMixin<TBase extends GConstructor<EntityServerClientB
|
|
|
156
161
|
patch<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
157
162
|
delete<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
158
163
|
};
|
|
164
|
+
request<T>(method: string, path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
159
165
|
requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
160
166
|
requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
|
|
161
167
|
requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
162
|
-
_request<T>(method: string, path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
|
|
163
|
-
_requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
164
|
-
_requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
|
|
165
|
-
_requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
|
|
166
168
|
};
|
|
167
169
|
} & TBase;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{entityRequest as
|
|
1
|
+
import{entityRequest as h}from"../../client/request.js";function u(n){return n.ok===!0&&n.requires_2fa!==!0&&typeof n.data=="object"&&n.data!==null&&"access_token"in n.data}function f(n){return class extends n{authBootstrapPromise=null;authBootstrapToken="";authBootstrapAnonymousCompleted=!1;csrfRefresher=()=>this.checkHealth(this.keepSession).then(()=>{});async checkHealth(e=!1){try{const t=this.token,s={};e&&(s["X-Session-Bootstrap"]="1");const r=await fetch(`${this.baseUrl}/v1/health`,{signal:AbortSignal.timeout(3e3),credentials:"include",headers:s}),o=await r.json(),i=r.headers.get("X-Access-Token");i&&(this.token=i,e&&i!==t&&this.onTokenRefreshed?.(i,0),e&&o.authenticated===!0&&this.realtimeEnabled&&this.realtimeAutoConnect&&this.connectRealtime().catch(()=>{}));const a=this.readCookie("anon_token");return o.packet_encryption===!0&&a&&(this.anonymousPacketToken=a,this.encryptRequests=!0),this.applyCsrfHealth(),this.onHealthChange?.(!0),e&&o.authenticated===!1&&t&&(this.disconnectRealtime("session_expired"),this.onSessionExpired?.(new Error("Session expired"))),o}catch(t){throw this.onHealthChange?.(!1),t}}readCookie(e){if(typeof document>"u")return null;const t=document.cookie.split(";").map(s=>s.trim()).find(s=>s.startsWith(`${e}=`));if(!t)return null;try{return decodeURIComponent(t.slice(e.length+1))}catch{return t.slice(e.length+1)}}async ensurePublicAuthBootstrap(){if(typeof document>"u"||this.apiKey&&this.hmacSecret)return;const e=!!this.anonymousPacketToken||!!this.readCookie("anon_token"),t=!!this.readCookie(this.csrfCookieName);e&&t&&this.csrfEnabled||await this.checkHealth(!1)}async ensureAuthenticatedRequestBootstrap(){if(!(typeof document>"u")&&!(this.apiKey&&this.hmacSecret)){if(this.token){if(this.authBootstrapToken===this.token)return}else if(this.authBootstrapAnonymousCompleted)return;return this.authBootstrapPromise?this.authBootstrapPromise:(this.authBootstrapPromise=this.checkHealth(!0).then(()=>{this.token?this.authBootstrapToken=this.token:this.authBootstrapAnonymousCompleted=!0}).finally(()=>{this.authBootstrapPromise=null}),this.authBootstrapPromise)}}async prepareRequest(e){await super.prepareRequest(e),e&&await this.ensureAuthenticatedRequestBootstrap()}async login(e,t){await this.ensurePublicAuthBootstrap();const s=await h(this.reqOpts,"POST","/v1/auth/login",{email:e,passwd:t},!1,{},{requireOkShape:!1,allowStatuses:[403]});return u(s)&&(this.token=s.data.access_token,this.applyCsrfHealth(),this.keepSession&&this.healthTickTimer===null&&this.startHealthTick(),this.realtimeEnabled&&this.realtimeAutoConnect&&this.connectRealtime().catch(()=>{})),s}async tokenRefresh(){const e=await this.request("POST","/v1/auth/token_refresh",void 0,!1);return this.token=e.data.access_token,this.applyCsrfHealth(),e.data}async refreshToken(e){if(!e)return this.tokenRefresh();const t=await this.request("POST","/v1/auth/refresh",{refresh_token:e},!1);return this.token=t.data.access_token,this.applyCsrfHealth(),t.data}async logout(e){this.stopKeepSession(),this.stopHealthTick(),this.disconnectRealtime("logout");const t=await this.request("POST","/v1/auth/logout",e?{refresh_token:e}:void 0,!1);return this.token="",this.applyCsrfHealth(),t}me(){return this.request("GET","/v1/auth/me")}withdraw(e){return this.request("POST","/v1/auth/withdraw",e?{passwd:e}:{})}}}export{f as AuthMixin,u as isAuthLoginSuccessResponse};
|
|
2
2
|
//# sourceMappingURL=auth.js.map
|