entity-client 1.0.21 → 1.0.22

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.
Files changed (73) hide show
  1. package/README.md +362 -362
  2. package/dist/EntityAppServerApi.d.ts +16 -32
  3. package/dist/EntityAppServerApi.js.map +1 -1
  4. package/dist/EntityServerApi.d.ts +8 -16
  5. package/dist/EntityServerApi.js.map +1 -1
  6. package/dist/client/base.d.ts +1 -4
  7. package/dist/client/base.js +1 -1
  8. package/dist/client/base.js.map +3 -3
  9. package/dist/client/hmac.js.map +1 -1
  10. package/dist/client/packet.js.map +1 -1
  11. package/dist/client/request.js.map +1 -1
  12. package/dist/client/utils.js.map +1 -1
  13. package/dist/hooks/useEntityAppServer.js.map +1 -1
  14. package/dist/hooks/useEntityClient.js.map +1 -1
  15. package/dist/hooks/useEntityServer.js.map +1 -1
  16. package/dist/index.js +1 -1
  17. package/dist/index.js.map +3 -3
  18. package/dist/mixins/app/index.js.map +1 -1
  19. package/dist/mixins/app/plugins/alimtalk.d.ts +1 -2
  20. package/dist/mixins/app/plugins/alimtalk.js.map +1 -1
  21. package/dist/mixins/app/plugins/friendtalk.d.ts +1 -2
  22. package/dist/mixins/app/plugins/friendtalk.js.map +1 -1
  23. package/dist/mixins/app/plugins/holidays.d.ts +1 -2
  24. package/dist/mixins/app/plugins/holidays.js.map +1 -1
  25. package/dist/mixins/app/plugins/identity.d.ts +1 -2
  26. package/dist/mixins/app/plugins/identity.js.map +1 -1
  27. package/dist/mixins/app/plugins/index.js.map +1 -1
  28. package/dist/mixins/app/plugins/llm.d.ts +1 -2
  29. package/dist/mixins/app/plugins/llm.js.map +1 -1
  30. package/dist/mixins/app/plugins/ocr.d.ts +1 -2
  31. package/dist/mixins/app/plugins/ocr.js.map +1 -1
  32. package/dist/mixins/app/plugins/pg.d.ts +1 -2
  33. package/dist/mixins/app/plugins/pg.js.map +1 -1
  34. package/dist/mixins/app/plugins/push.d.ts +1 -2
  35. package/dist/mixins/app/plugins/push.js.map +1 -1
  36. package/dist/mixins/app/plugins/sms.d.ts +1 -2
  37. package/dist/mixins/app/plugins/sms.js.map +1 -1
  38. package/dist/mixins/app/plugins/taxinvoice.d.ts +1 -2
  39. package/dist/mixins/app/plugins/taxinvoice.js.map +1 -1
  40. package/dist/mixins/app/routes/account.d.ts +1 -2
  41. package/dist/mixins/app/routes/account.js.map +1 -1
  42. package/dist/mixins/app/routes/board.d.ts +1 -2
  43. package/dist/mixins/app/routes/board.js.map +1 -1
  44. package/dist/mixins/app/routes/email-verify.d.ts +1 -2
  45. package/dist/mixins/app/routes/email-verify.js.map +1 -1
  46. package/dist/mixins/app/routes/oauth.d.ts +1 -2
  47. package/dist/mixins/app/routes/oauth.js.map +1 -1
  48. package/dist/mixins/app/routes/password-reset.d.ts +1 -2
  49. package/dist/mixins/app/routes/password-reset.js.map +1 -1
  50. package/dist/mixins/app/routes/two-factor.d.ts +1 -2
  51. package/dist/mixins/app/routes/two-factor.js.map +1 -1
  52. package/dist/mixins/server/admin.d.ts +1 -2
  53. package/dist/mixins/server/admin.js.map +1 -1
  54. package/dist/mixins/server/auth.d.ts +1 -3
  55. package/dist/mixins/server/auth.js +1 -1
  56. package/dist/mixins/server/auth.js.map +3 -3
  57. package/dist/mixins/server/entity.d.ts +1 -2
  58. package/dist/mixins/server/entity.js.map +1 -1
  59. package/dist/mixins/server/file.d.ts +1 -2
  60. package/dist/mixins/server/file.js.map +1 -1
  61. package/dist/mixins/server/index.js.map +1 -1
  62. package/dist/mixins/server/push.d.ts +1 -2
  63. package/dist/mixins/server/push.js.map +1 -1
  64. package/dist/mixins/server/smtp.d.ts +1 -2
  65. package/dist/mixins/server/smtp.js.map +1 -1
  66. package/dist/mixins/server/transaction.d.ts +1 -2
  67. package/dist/mixins/server/transaction.js.map +1 -1
  68. package/dist/mixins/server/utils.d.ts +1 -2
  69. package/dist/mixins/server/utils.js.map +1 -1
  70. package/dist/packet.js.map +1 -1
  71. package/dist/react.js +1 -1
  72. package/dist/react.js.map +3 -3
  73. package/package.json +57 -57
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/mixins/app/routes/board.ts"],
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 BoardMixin<TBase extends GConstructor<EntityServerClientBase>>(\r\n Base: TBase,\r\n) {\r\n return class BoardMixinClass extends Base {\r\n listBoardCategories<T = unknown>(\r\n query: Record<string, unknown> = {},\r\n ): Promise<T> {\r\n const qs = buildQuery(query);\r\n return this.http.get(\r\n `/v1/board/categories${qs ? `?${qs}` : \"\"}`,\r\n false,\r\n );\r\n }\r\n\r\n getBoardCategory<T = unknown>(seq: number): Promise<T> {\r\n return this.http.get(\r\n `/v1/board/categories/${seq}`,\r\n false,\r\n );\r\n }\r\n\r\n createBoardCategory<T = unknown>(\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.post(\"/v1/board/categories\", body);\r\n }\r\n\r\n updateBoardCategory<T = unknown>(\r\n seq: number,\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.put(`/v1/board/categories/${seq}`, body);\r\n }\r\n\r\n deleteBoardCategory<T = unknown>(seq: number): Promise<T> {\r\n return this.http.delete(`/v1/board/categories/${seq}`);\r\n }\r\n\r\n listBoardPosts<T = unknown>(\r\n category: string,\r\n query: Record<string, unknown> = {},\r\n ): Promise<T> {\r\n const qs = buildQuery(query);\r\n return this.http.get(`/v1/board/${category}/list${qs ? `?${qs}` : \"\"}`);\r\n }\r\n\r\n getBoardPost<T = unknown>(seq: number): Promise<T> {\r\n return this.http.get(`/v1/board/posts/${seq}`);\r\n }\r\n\r\n createBoardPost<T = unknown>(\r\n category: string,\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.post(\r\n `/v1/board/${category}/submit`,\r\n body,\r\n );\r\n }\r\n\r\n updateBoardPost<T = unknown>(\r\n seq: number,\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.put(`/v1/board/posts/${seq}`, body);\r\n }\r\n\r\n deleteBoardPost<T = unknown>(seq: number): Promise<T> {\r\n return this.http.delete(`/v1/board/posts/${seq}`);\r\n }\r\n\r\n listBoardComments<T = unknown>(\r\n postSeq: number,\r\n query: Record<string, unknown> = {},\r\n ): Promise<T> {\r\n const qs = buildQuery(query);\r\n return this.http.get(\r\n `/v1/board/posts/${postSeq}/comments${qs ? `?${qs}` : \"\"}`,\r\n false,\r\n );\r\n }\r\n\r\n createBoardComment<T = unknown>(\r\n postSeq: number,\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.post(\r\n `/v1/board/posts/${postSeq}/comments/submit`,\r\n body,\r\n );\r\n }\r\n\r\n updateBoardComment<T = unknown>(\r\n seq: number,\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.put(`/v1/board/comments/${seq}`, body);\r\n }\r\n\r\n deleteBoardComment<T = unknown>(seq: number): Promise<T> {\r\n return this.http.delete(`/v1/board/comments/${seq}`);\r\n }\r\n\r\n listBoardFiles<T = unknown>(postSeq: number): Promise<T> {\r\n return this.http.get(\r\n `/v1/board/posts/${postSeq}/files`,\r\n false,\r\n );\r\n }\r\n\r\n async uploadBoardFile<T = unknown>(\r\n postSeq: number,\r\n file: File | Blob,\r\n ): Promise<T> {\r\n const form = new FormData();\r\n form.append(\r\n \"file\",\r\n file,\r\n file instanceof File ? file.name : \"upload\",\r\n );\r\n return this.requestForm(\r\n \"POST\",\r\n `/v1/board/posts/${postSeq}/files`,\r\n form,\r\n );\r\n }\r\n\r\n boardFileUrl(uuid: string): string {\r\n return `${this.baseUrl}/v1/board/files/${uuid}`;\r\n }\r\n\r\n deleteBoardFile<T = unknown>(uuid: string): Promise<T> {\r\n return this.http.delete(`/v1/board/files/${uuid}`);\r\n }\r\n\r\n createBoardGuestPost<T = unknown>(\r\n category: string,\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.post(\r\n `/v1/board/${category}/guest-submit`,\r\n body,\r\n false,\r\n );\r\n }\r\n\r\n authenticateBoardGuestPost<T = unknown>(\r\n seq: number,\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.post(\r\n `/v1/board/posts/${seq}/guest-auth`,\r\n body,\r\n false,\r\n );\r\n }\r\n\r\n toggleBoardPostLike<T = unknown>(seq: number): Promise<T> {\r\n return this.http.post(`/v1/board/posts/${seq}/like`, {});\r\n }\r\n\r\n acceptBoardPost<T = unknown>(seq: number): Promise<T> {\r\n return this.http.post(\r\n `/v1/board/posts/${seq}/accept`,\r\n {},\r\n );\r\n }\r\n\r\n rateBoardPost<T = unknown>(\r\n seq: number,\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.post(\r\n `/v1/board/posts/${seq}/rating`,\r\n body,\r\n );\r\n }\r\n\r\n rateBoardComment<T = unknown>(\r\n seq: number,\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.post(\r\n `/v1/board/comments/${seq}/rating`,\r\n body,\r\n );\r\n }\r\n\r\n listBoardTags<T = unknown>(\r\n query: Record<string, unknown> = {},\r\n ): Promise<T> {\r\n const qs = buildQuery(query);\r\n return this.http.get(\r\n `/v1/board/tags${qs ? `?${qs}` : \"\"}`,\r\n false,\r\n );\r\n }\r\n\r\n setBoardPostTags<T = unknown>(\r\n seq: number,\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.put(`/v1/board/posts/${seq}/tags`, body);\r\n }\r\n\r\n reportBoardPost<T = unknown>(\r\n seq: number,\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.post(\r\n `/v1/board/posts/${seq}/report`,\r\n body,\r\n );\r\n }\r\n\r\n reportBoardComment<T = unknown>(\r\n seq: number,\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.post(\r\n `/v1/board/comments/${seq}/report`,\r\n body,\r\n );\r\n }\r\n\r\n listBoardReports<T = unknown>(\r\n query: Record<string, unknown> = {},\r\n ): Promise<T> {\r\n const qs = buildQuery(query);\r\n return this.http.get(\r\n `/v1/board/admin/reports${qs ? `?${qs}` : \"\"}`,\r\n );\r\n }\r\n\r\n updateBoardReport<T = unknown>(\r\n seq: number,\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.patch(\r\n `/v1/board/admin/reports/${seq}`,\r\n body,\r\n );\r\n }\r\n\r\n markBoardPostRead<T = unknown>(seq: number): Promise<T> {\r\n return this.http.post(`/v1/board/posts/${seq}/read`, {});\r\n }\r\n\r\n listBoardMentions<T = unknown>(\r\n query: Record<string, unknown> = {},\r\n ): Promise<T> {\r\n const qs = buildQuery(query);\r\n return this.http.get(\r\n `/v1/board/mentions${qs ? `?${qs}` : \"\"}`,\r\n );\r\n }\r\n\r\n markBoardMentionRead<T = unknown>(seq: number): Promise<T> {\r\n return this.http.patch(\r\n `/v1/board/mentions/${seq}/read`,\r\n {},\r\n );\r\n }\r\n };\r\n}\r\n"],
4
+ "sourcesContent": ["import { buildQuery } from \"../../../client/utils.js\";\nimport type {\n GConstructor,\n EntityServerClientBase,\n} from \"../../../client/base.js\";\n\nexport function BoardMixin<TBase extends GConstructor<EntityServerClientBase>>(\n Base: TBase,\n) {\n return class BoardMixinClass extends Base {\n listBoardCategories<T = unknown>(\n query: Record<string, unknown> = {},\n ): Promise<T> {\n const qs = buildQuery(query);\n return this.http.get(\n `/v1/board/categories${qs ? `?${qs}` : \"\"}`,\n false,\n );\n }\n\n getBoardCategory<T = unknown>(seq: number): Promise<T> {\n return this.http.get(\n `/v1/board/categories/${seq}`,\n false,\n );\n }\n\n createBoardCategory<T = unknown>(\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.http.post(\"/v1/board/categories\", body);\n }\n\n updateBoardCategory<T = unknown>(\n seq: number,\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.http.put(`/v1/board/categories/${seq}`, body);\n }\n\n deleteBoardCategory<T = unknown>(seq: number): Promise<T> {\n return this.http.delete(`/v1/board/categories/${seq}`);\n }\n\n listBoardPosts<T = unknown>(\n category: string,\n query: Record<string, unknown> = {},\n ): Promise<T> {\n const qs = buildQuery(query);\n return this.http.get(`/v1/board/${category}/list${qs ? `?${qs}` : \"\"}`);\n }\n\n getBoardPost<T = unknown>(seq: number): Promise<T> {\n return this.http.get(`/v1/board/posts/${seq}`);\n }\n\n createBoardPost<T = unknown>(\n category: string,\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.http.post(\n `/v1/board/${category}/submit`,\n body,\n );\n }\n\n updateBoardPost<T = unknown>(\n seq: number,\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.http.put(`/v1/board/posts/${seq}`, body);\n }\n\n deleteBoardPost<T = unknown>(seq: number): Promise<T> {\n return this.http.delete(`/v1/board/posts/${seq}`);\n }\n\n listBoardComments<T = unknown>(\n postSeq: number,\n query: Record<string, unknown> = {},\n ): Promise<T> {\n const qs = buildQuery(query);\n return this.http.get(\n `/v1/board/posts/${postSeq}/comments${qs ? `?${qs}` : \"\"}`,\n false,\n );\n }\n\n createBoardComment<T = unknown>(\n postSeq: number,\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.http.post(\n `/v1/board/posts/${postSeq}/comments/submit`,\n body,\n );\n }\n\n updateBoardComment<T = unknown>(\n seq: number,\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.http.put(`/v1/board/comments/${seq}`, body);\n }\n\n deleteBoardComment<T = unknown>(seq: number): Promise<T> {\n return this.http.delete(`/v1/board/comments/${seq}`);\n }\n\n listBoardFiles<T = unknown>(postSeq: number): Promise<T> {\n return this.http.get(\n `/v1/board/posts/${postSeq}/files`,\n false,\n );\n }\n\n async uploadBoardFile<T = unknown>(\n postSeq: number,\n file: File | Blob,\n ): Promise<T> {\n const form = new FormData();\n form.append(\n \"file\",\n file,\n file instanceof File ? file.name : \"upload\",\n );\n return this.requestForm(\n \"POST\",\n `/v1/board/posts/${postSeq}/files`,\n form,\n );\n }\n\n boardFileUrl(uuid: string): string {\n return `${this.baseUrl}/v1/board/files/${uuid}`;\n }\n\n deleteBoardFile<T = unknown>(uuid: string): Promise<T> {\n return this.http.delete(`/v1/board/files/${uuid}`);\n }\n\n createBoardGuestPost<T = unknown>(\n category: string,\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.http.post(\n `/v1/board/${category}/guest-submit`,\n body,\n false,\n );\n }\n\n authenticateBoardGuestPost<T = unknown>(\n seq: number,\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.http.post(\n `/v1/board/posts/${seq}/guest-auth`,\n body,\n false,\n );\n }\n\n toggleBoardPostLike<T = unknown>(seq: number): Promise<T> {\n return this.http.post(`/v1/board/posts/${seq}/like`, {});\n }\n\n acceptBoardPost<T = unknown>(seq: number): Promise<T> {\n return this.http.post(\n `/v1/board/posts/${seq}/accept`,\n {},\n );\n }\n\n rateBoardPost<T = unknown>(\n seq: number,\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.http.post(\n `/v1/board/posts/${seq}/rating`,\n body,\n );\n }\n\n rateBoardComment<T = unknown>(\n seq: number,\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.http.post(\n `/v1/board/comments/${seq}/rating`,\n body,\n );\n }\n\n listBoardTags<T = unknown>(\n query: Record<string, unknown> = {},\n ): Promise<T> {\n const qs = buildQuery(query);\n return this.http.get(\n `/v1/board/tags${qs ? `?${qs}` : \"\"}`,\n false,\n );\n }\n\n setBoardPostTags<T = unknown>(\n seq: number,\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.http.put(`/v1/board/posts/${seq}/tags`, body);\n }\n\n reportBoardPost<T = unknown>(\n seq: number,\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.http.post(\n `/v1/board/posts/${seq}/report`,\n body,\n );\n }\n\n reportBoardComment<T = unknown>(\n seq: number,\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.http.post(\n `/v1/board/comments/${seq}/report`,\n body,\n );\n }\n\n listBoardReports<T = unknown>(\n query: Record<string, unknown> = {},\n ): Promise<T> {\n const qs = buildQuery(query);\n return this.http.get(\n `/v1/board/admin/reports${qs ? `?${qs}` : \"\"}`,\n );\n }\n\n updateBoardReport<T = unknown>(\n seq: number,\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.http.patch(\n `/v1/board/admin/reports/${seq}`,\n body,\n );\n }\n\n markBoardPostRead<T = unknown>(seq: number): Promise<T> {\n return this.http.post(`/v1/board/posts/${seq}/read`, {});\n }\n\n listBoardMentions<T = unknown>(\n query: Record<string, unknown> = {},\n ): Promise<T> {\n const qs = buildQuery(query);\n return this.http.get(\n `/v1/board/mentions${qs ? `?${qs}` : \"\"}`,\n );\n }\n\n markBoardMentionRead<T = unknown>(seq: number): Promise<T> {\n return this.http.patch(\n `/v1/board/mentions/${seq}/read`,\n {},\n );\n }\n };\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": ["buildQuery", "BoardMixin", "Base", "query", "qs", "seq", "body", "category", "postSeq", "file", "form", "uuid"]
7
7
  }
@@ -41,7 +41,6 @@ export declare function EmailVerifyMixin<TBase extends GConstructor<EntityServer
41
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
- setAccessTokenFromResponse(token: string): void;
45
44
  setAnonymousPacketToken(token: string): void;
46
45
  setApiKey(apiKey: string): void;
47
46
  setHmacSecret(secret: string): void;
@@ -58,7 +57,7 @@ export declare function EmailVerifyMixin<TBase extends GConstructor<EntityServer
58
57
  sendRealtime(message: import("../../../types.js").RealtimeEnvelope | Record<string, unknown>): boolean;
59
58
  subscribeRealtime(subscriptions: string[]): boolean;
60
59
  unsubscribeRealtime(subscriptions: string[]): boolean;
61
- startHealthTick(intervalMs?: number, runImmediately?: boolean): void;
60
+ startHealthTick(intervalMs?: number): void;
62
61
  stopHealthTick(): void;
63
62
  scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
64
63
  access_token: string;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/mixins/app/routes/email-verify.ts"],
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 EmailVerifyMixin<\r\n TBase extends GConstructor<EntityServerClientBase>,\r\n>(Base: TBase) {\r\n return class EmailVerifyMixinClass extends Base {\r\n sendEmailVerification<T = unknown>(\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.post(\r\n \"/v1/email-verify/send\",\r\n body,\r\n false,\r\n );\r\n }\r\n\r\n confirmEmailVerification<T = unknown>(\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.post(\r\n \"/v1/email-verify/confirm\",\r\n body,\r\n false,\r\n );\r\n }\r\n\r\n activateEmailVerification<T = unknown>(\r\n query: Record<string, unknown>,\r\n ): Promise<T> {\r\n const qs = buildQuery(query);\r\n return this.http.get(\r\n `/v1/email-verify/activate${qs ? `?${qs}` : \"\"}`,\r\n false,\r\n );\r\n }\r\n\r\n getEmailVerificationStatus<T = unknown>(): Promise<T> {\r\n return this.http.get(\"/v1/email-verify/status\");\r\n }\r\n\r\n changeVerifiedEmail<T = unknown>(\r\n body: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.post(\"/v1/email-verify/change\", body);\r\n }\r\n };\r\n}\r\n"],
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.http.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.http.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.http.get(\n `/v1/email-verify/activate${qs ? `?${qs}` : \"\"}`,\n false,\n );\n }\n\n getEmailVerificationStatus<T = unknown>(): Promise<T> {\n return this.http.get(\"/v1/email-verify/status\");\n }\n\n changeVerifiedEmail<T = unknown>(\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.http.post(\"/v1/email-verify/change\", body);\n }\n };\n}\n"],
5
5
  "mappings": "AAAA,OAAS,cAAAA,MAAkB,2BAMpB,SAASC,EAEdC,EAAa,CACX,OAAO,cAAoCA,CAAK,CAC5C,sBACIC,EACU,CACV,OAAO,KAAK,KAAK,KACb,wBACAA,EACA,EACJ,CACJ,CAEA,yBACIA,EACU,CACV,OAAO,KAAK,KAAK,KACb,2BACAA,EACA,EACJ,CACJ,CAEA,0BACIC,EACU,CACV,MAAMC,EAAKL,EAAWI,CAAK,EAC3B,OAAO,KAAK,KAAK,IACb,4BAA4BC,EAAK,IAAIA,CAAE,GAAK,EAAE,GAC9C,EACJ,CACJ,CAEA,4BAAsD,CAClD,OAAO,KAAK,KAAK,IAAI,yBAAyB,CAClD,CAEA,oBACIF,EACU,CACV,OAAO,KAAK,KAAK,KAAK,0BAA2BA,CAAI,CACzD,CACJ,CACJ",
6
6
  "names": ["buildQuery", "EmailVerifyMixin", "Base", "body", "query", "qs"]
7
7
  }
@@ -42,7 +42,6 @@ export declare function OAuthMixin<TBase extends GConstructor<EntityServerClient
42
42
  realtimeEventListeners: Map<string, Set<import("../../../types.js").RealtimeMessageListener>>;
43
43
  configure(options: Partial<import("../../../types.js").EntityServerClientOptions>): void;
44
44
  setToken(token: string): void;
45
- setAccessTokenFromResponse(token: string): void;
46
45
  setAnonymousPacketToken(token: string): void;
47
46
  setApiKey(apiKey: string): void;
48
47
  setHmacSecret(secret: string): void;
@@ -59,7 +58,7 @@ export declare function OAuthMixin<TBase extends GConstructor<EntityServerClient
59
58
  sendRealtime(message: import("../../../types.js").RealtimeEnvelope | Record<string, unknown>): boolean;
60
59
  subscribeRealtime(subscriptions: string[]): boolean;
61
60
  unsubscribeRealtime(subscriptions: string[]): boolean;
62
- startHealthTick(intervalMs?: number, runImmediately?: boolean): void;
61
+ startHealthTick(intervalMs?: number): void;
63
62
  stopHealthTick(): void;
64
63
  scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
65
64
  access_token: string;
@@ -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\";\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"],
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"],
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
  }
@@ -41,7 +41,6 @@ export declare function PasswordResetMixin<TBase extends GConstructor<EntityServ
41
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
- setAccessTokenFromResponse(token: string): void;
45
44
  setAnonymousPacketToken(token: string): void;
46
45
  setApiKey(apiKey: string): void;
47
46
  setHmacSecret(secret: string): void;
@@ -58,7 +57,7 @@ export declare function PasswordResetMixin<TBase extends GConstructor<EntityServ
58
57
  sendRealtime(message: import("../../../types.js").RealtimeEnvelope | Record<string, unknown>): boolean;
59
58
  subscribeRealtime(subscriptions: string[]): boolean;
60
59
  unsubscribeRealtime(subscriptions: string[]): boolean;
61
- startHealthTick(intervalMs?: number, runImmediately?: boolean): void;
60
+ startHealthTick(intervalMs?: number): void;
62
61
  stopHealthTick(): void;
63
62
  scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
64
63
  access_token: string;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/mixins/app/routes/password-reset.ts"],
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"],
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"],
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
  }
@@ -43,7 +43,6 @@ export declare function TwoFactorMixin<TBase extends GConstructor<EntityServerCl
43
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
- setAccessTokenFromResponse(token: string): void;
47
46
  setAnonymousPacketToken(token: string): void;
48
47
  setApiKey(apiKey: string): void;
49
48
  setHmacSecret(secret: string): void;
@@ -60,7 +59,7 @@ export declare function TwoFactorMixin<TBase extends GConstructor<EntityServerCl
60
59
  sendRealtime(message: import("../../../types.js").RealtimeEnvelope | Record<string, unknown>): boolean;
61
60
  subscribeRealtime(subscriptions: string[]): boolean;
62
61
  unsubscribeRealtime(subscriptions: string[]): boolean;
63
- startHealthTick(intervalMs?: number, runImmediately?: boolean): void;
62
+ startHealthTick(intervalMs?: number): void;
64
63
  stopHealthTick(): void;
65
64
  scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
66
65
  access_token: string;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/mixins/app/routes/two-factor.ts"],
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"],
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"],
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
  }
@@ -87,7 +87,6 @@ export declare function AdminMixin<TBase extends GConstructor<EntityServerClient
87
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
- setAccessTokenFromResponse(token: string): void;
91
90
  setAnonymousPacketToken(token: string): void;
92
91
  setApiKey(apiKey: string): void;
93
92
  setHmacSecret(secret: string): void;
@@ -104,7 +103,7 @@ export declare function AdminMixin<TBase extends GConstructor<EntityServerClient
104
103
  sendRealtime(message: import("../../types.js").RealtimeEnvelope | Record<string, unknown>): boolean;
105
104
  subscribeRealtime(subscriptions: string[]): boolean;
106
105
  unsubscribeRealtime(subscriptions: string[]): boolean;
107
- startHealthTick(intervalMs?: number, runImmediately?: boolean): void;
106
+ startHealthTick(intervalMs?: number): void;
108
107
  stopHealthTick(): void;
109
108
  scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
110
109
  access_token: string;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/mixins/server/admin.ts"],
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"],
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 adminPath(path: string): string {\n return `/v1/admin${path}`;\n }\n\n adminGet<T>(path: string): Promise<T> {\n return this.http.get(this.adminPath(path));\n }\n\n adminPost<T>(path: string, body?: unknown): Promise<T> {\n return this.http.post(this.adminPath(path), body);\n }\n\n adminPut<T>(path: string, body?: unknown): Promise<T> {\n return this.http.put(this.adminPath(path), body);\n }\n\n adminPatch<T>(path: string, body?: unknown): Promise<T> {\n return this.http.patch(this.adminPath(path), body);\n }\n\n adminDelete<T>(path: string, body?: unknown): Promise<T> {\n return this.http.delete(this.adminPath(path), body);\n }\n\n listAdminEntities<T = unknown>(): Promise<T> {\n return this.adminGet(\"/entities\");\n }\n\n getAdminErdSchema<T = unknown>(): Promise<T> {\n return this.adminGet(\"/erd/schema\");\n }\n\n batchEnsureAdminEntities<T = unknown>(configs: unknown[]): Promise<T> {\n return this.adminPost(\"/entities/batch-ensure\", configs);\n }\n\n createAdminEntityConfig<T = unknown>(\n entity: string,\n config: Record<string, unknown>,\n ): Promise<T> {\n return this.adminPost(`/${entity}/create`, config);\n }\n\n getAdminEntityConfig<T = unknown>(entity: string): Promise<T> {\n return this.adminGet(`/${entity}/config`);\n }\n\n updateAdminEntityConfig<T = unknown>(\n entity: string,\n config: Record<string, unknown>,\n ): Promise<T> {\n return this.adminPut(`/${entity}/config`, config);\n }\n\n validateAdminEntityConfig<T = unknown>(\n config: Record<string, unknown>,\n entity?: string,\n ): Promise<T> {\n return this.adminPost(\n entity ? `/${entity}/validate` : \"/entity/validate\",\n config,\n );\n }\n\n normalizeAdminEntityConfig<T = unknown>(\n config: Record<string, unknown>,\n entity?: string,\n ): Promise<T> {\n return this.adminPost(\n entity ? `/${entity}/normalize` : \"/entity/normalize\",\n config,\n );\n }\n\n getAdminEntityStats<T = unknown>(\n entity: string,\n body?: Record<string, unknown>,\n ): Promise<T> {\n return this.adminPost(`/${entity}/stats`, body);\n }\n\n reindexAdminEntity<T = unknown>(entity: string): Promise<T> {\n return this.adminPost(`/${entity}/reindex`);\n }\n\n syncAdminEntitySchema<T = unknown>(entity: string): Promise<T> {\n return this.adminPost(`/${entity}/sync-schema`);\n }\n\n resetAdminEntity<T = unknown>(entity: string): Promise<T> {\n return this.adminPost(`/${entity}/reset`);\n }\n\n truncateAdminEntity<T = unknown>(entity: string): Promise<T> {\n return this.adminPost(`/${entity}/truncate`);\n }\n\n dropAdminEntity<T = unknown>(entity: string): Promise<T> {\n return this.adminPost(`/${entity}/drop`);\n }\n\n resetAllAdmin<T = unknown>(body?: Record<string, unknown>): Promise<T> {\n return this.adminPost(\"/reset-all\", body);\n }\n\n listAdminConfigs<T = unknown>(): Promise<T> {\n return this.adminGet(\"/configs\");\n }\n\n getAdminConfig<T = unknown>(domain: string): Promise<T> {\n return this.adminGet(`/configs/${domain}`);\n }\n\n updateAdminConfig<T = unknown>(\n domain: string,\n patch: Record<string, unknown>,\n ): Promise<T> {\n return this.adminPatch(`/configs/${domain}`, patch);\n }\n\n listAdminRoles<T = unknown>(): Promise<T> {\n return this.adminGet(\"/roles\");\n }\n\n createAdminRole<T = unknown>(\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.adminPost(\"/roles\", body);\n }\n\n getAdminRole<T = unknown>(seq: number): Promise<T> {\n return this.adminGet(`/roles/${seq}`);\n }\n\n updateAdminRole<T = unknown>(\n seq: number,\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.adminPatch(`/roles/${seq}`, body);\n }\n\n deleteAdminRole<T = unknown>(seq: number): Promise<T> {\n return this.adminDelete(`/roles/${seq}`);\n }\n\n listAdminApiKeys<T = unknown>(): Promise<T> {\n return this.adminGet(\"/api-keys\");\n }\n\n createAdminApiKey<T = unknown>(\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.adminPost(\"/api-keys\", body);\n }\n\n getAdminApiKey<T = unknown>(seq: number): Promise<T> {\n return this.adminGet(`/api-keys/${seq}`);\n }\n\n updateAdminApiKey<T = unknown>(\n seq: number,\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.adminPatch(`/api-keys/${seq}`, body);\n }\n\n deleteAdminApiKey<T = unknown>(seq: number): Promise<T> {\n return this.adminDelete(`/api-keys/${seq}`);\n }\n\n regenerateAdminApiKeySecret<T = unknown>(seq: number): Promise<T> {\n return this.adminPost(`/api-keys/${seq}/regenerate-secret`);\n }\n\n listAdminAccounts<T = unknown>(): Promise<T> {\n return this.adminGet(\"/accounts\");\n }\n\n createAdminAccount<T = unknown>(\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.adminPost(\"/accounts\", body);\n }\n\n getAdminAccount<T = unknown>(seq: number): Promise<T> {\n return this.adminGet(`/accounts/${seq}`);\n }\n\n updateAdminAccount<T = unknown>(\n seq: number,\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.adminPatch(`/accounts/${seq}`, body);\n }\n\n deleteAdminAccount<T = unknown>(seq: number): Promise<T> {\n return this.adminDelete(`/accounts/${seq}`);\n }\n\n listAdminLicenses<T = unknown>(): Promise<T> {\n return this.adminGet(\"/licenses\");\n }\n\n createAdminLicense<T = unknown>(\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.adminPost(\"/licenses\", body);\n }\n\n getAdminLicense<T = unknown>(seq: number): Promise<T> {\n return this.adminGet(`/licenses/${seq}`);\n }\n\n updateAdminLicense<T = unknown>(\n seq: number,\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.adminPatch(`/licenses/${seq}`, body);\n }\n\n deleteAdminLicense<T = unknown>(seq: number): Promise<T> {\n return this.adminDelete(`/licenses/${seq}`);\n }\n\n runAdminBackup<T = unknown>(\n body?: Record<string, unknown>,\n ): Promise<T> {\n return this.adminPost(\"/backup/run\", body);\n }\n\n getAdminBackupStatus<T = unknown>(\n body?: Record<string, unknown>,\n ): Promise<T> {\n return this.adminPost(\"/backup/status\", body);\n }\n\n listAdminBackups<T = unknown>(\n body?: Record<string, unknown>,\n ): Promise<T> {\n return this.adminPost(\"/backup/list\", body);\n }\n\n restoreAdminBackup<T = unknown>(\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.adminPost(\"/backup/restore\", body);\n }\n\n deleteAdminBackup<T = unknown>(\n body: Record<string, unknown>,\n ): Promise<T> {\n return this.adminPost(\"/backup/delete\", body);\n }\n\n disableAdminAccountTwoFactor<T = unknown>(seq: number): Promise<T> {\n return this.adminDelete(`/accounts/${seq}/2fa`);\n }\n };\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": ["AdminMixin", "Base", "path", "body", "configs", "entity", "config", "domain", "patch", "seq"]
7
7
  }
@@ -36,8 +36,6 @@ export declare function AuthMixin<TBase extends GConstructor<EntityServerClientB
36
36
  authBootstrapPromise: Promise<void> | null;
37
37
  authBootstrapToken: string;
38
38
  authBootstrapAnonymousCompleted: boolean;
39
- /** 응답 헤더 access token 갱신 시 bootstrap 기준 토큰도 함께 맞춘다. */
40
- setAccessTokenFromResponse(token: string): void;
41
39
  csrfRefresher: () => Promise<void>;
42
40
  /**
43
41
  * 서버 헬스 체크를 수행하고 패킷 암호화 활성 여부를 자동으로 감지합니다.
@@ -139,7 +137,7 @@ export declare function AuthMixin<TBase extends GConstructor<EntityServerClientB
139
137
  sendRealtime(message: import("../../types.js").RealtimeEnvelope | Record<string, unknown>): boolean;
140
138
  subscribeRealtime(subscriptions: string[]): boolean;
141
139
  unsubscribeRealtime(subscriptions: string[]): boolean;
142
- startHealthTick(intervalMs?: number, runImmediately?: boolean): void;
140
+ startHealthTick(intervalMs?: number): void;
143
141
  stopHealthTick(): void;
144
142
  scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
145
143
  access_token: string;
@@ -1,2 +1,2 @@
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 d(n){return class extends n{authBootstrapPromise=null;authBootstrapToken="";authBootstrapAnonymousCompleted=!1;setAccessTokenFromResponse(e){super.setAccessTokenFromResponse(e),this.authBootstrapToken=e,this.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{d as AuthMixin,u as isAuthLoginSuccessResponse};
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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/mixins/server/auth.ts"],
4
- "sourcesContent": ["import type {\r\n GConstructor,\r\n EntityServerClientBase,\r\n} from \"../../client/base.js\";\r\nimport { entityRequest } from \"../../client/request.js\";\r\n\r\nexport interface AuthLoginSuccessData {\r\n access_token: string;\r\n refresh_token: string;\r\n expires_in: number;\r\n force_password_change?: boolean;\r\n password_expired?: boolean;\r\n password_expires_in_days?: number;\r\n}\r\n\r\nexport interface AuthLoginSuccessResponse {\r\n ok: true;\r\n data: AuthLoginSuccessData;\r\n requires_2fa?: false;\r\n}\r\n\r\nexport interface AuthLoginRequiresTwoFactorResponse {\r\n ok: true;\r\n requires_2fa: true;\r\n data: {\r\n two_factor_token: string;\r\n expires_in: number;\r\n };\r\n}\r\n\r\nexport interface AuthLoginSetupRequiredResponse {\r\n ok: false;\r\n error: \"2fa_setup_required\";\r\n message: string;\r\n data: {\r\n setup_token: string;\r\n expires_in: number;\r\n };\r\n}\r\n\r\nexport type AuthLoginResponse =\r\n | AuthLoginSuccessResponse\r\n | AuthLoginRequiresTwoFactorResponse\r\n | AuthLoginSetupRequiredResponse;\r\n\r\nexport function isAuthLoginSuccessResponse(\r\n response: AuthLoginResponse,\r\n): response is AuthLoginSuccessResponse {\r\n return (\r\n response.ok === true &&\r\n response.requires_2fa !== true &&\r\n typeof response.data === \"object\" &&\r\n response.data !== null &&\r\n \"access_token\" in response.data\r\n );\r\n}\r\n\r\nexport function AuthMixin<TBase extends GConstructor<EntityServerClientBase>>(\r\n Base: TBase,\r\n) {\r\n return class AuthMixinClass extends Base {\r\n authBootstrapPromise: Promise<void> | null = null;\r\n authBootstrapToken = \"\";\r\n authBootstrapAnonymousCompleted = false;\r\n\r\n /** \uC751\uB2F5 \uD5E4\uB354 access token \uAC31\uC2E0 \uC2DC bootstrap \uAE30\uC900 \uD1A0\uD070\uB3C4 \uD568\uAED8 \uB9DE\uCD98\uB2E4. */\r\n override setAccessTokenFromResponse(token: string): void {\r\n super.setAccessTokenFromResponse(token);\r\n this.authBootstrapToken = token;\r\n this.authBootstrapAnonymousCompleted = false;\r\n }\r\n\r\n // health tick\uC774 \uCF1C\uC838 \uC788\uC73C\uBA74 keepSession \uC5EC\uBD80\uC5D0 \uB530\uB77C \uC138\uC158 \uBD80\uD2B8\uC2A4\uD2B8\uB7A9\uAE4C\uC9C0 \uD568\uAED8 \uCC98\uB9AC\uD569\uB2C8\uB2E4.\r\n csrfRefresher = (): Promise<void> =>\r\n this.checkHealth(this.keepSession).then(() => {});\r\n\r\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\r\n\r\n /**\r\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.\r\n *\r\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.\r\n *\r\n * ```ts\r\n * await client.checkHealth();\r\n * await client.login(email, password);\r\n * ```\r\n */\r\n async checkHealth(bootstrapAuth = false): Promise<{\r\n status: string;\r\n authenticated?: boolean;\r\n packet_encryption?: boolean;\r\n }> {\r\n try {\r\n const previousToken = this.token;\r\n const headers: Record<string, string> = {};\r\n if (bootstrapAuth) {\r\n headers[\"X-Session-Bootstrap\"] = \"1\";\r\n }\r\n\r\n const res = await fetch(`${this.baseUrl}/v1/health`, {\r\n signal: AbortSignal.timeout(3000),\r\n credentials: \"include\",\r\n headers,\r\n });\r\n const data = (await res.json()) as {\r\n status: string;\r\n authenticated?: boolean;\r\n packet_encryption?: boolean;\r\n };\r\n\r\n const accessToken = res.headers.get(\"X-Access-Token\");\r\n if (accessToken) {\r\n this.token = accessToken;\r\n if (bootstrapAuth && accessToken !== previousToken) {\r\n this.onTokenRefreshed?.(accessToken, 0);\r\n }\r\n if (\r\n bootstrapAuth &&\r\n data.authenticated === true &&\r\n this.realtimeEnabled &&\r\n this.realtimeAutoConnect\r\n ) {\r\n this.connectRealtime().catch(() => {});\r\n }\r\n }\r\n\r\n // \uD328\uD0B7 \uC554\uD638\uD654\uB294 health \uC751\uB2F5\uC774 \uBA85\uC2DC\uC801\uC73C\uB85C \uD65C\uC131\uC774\uB77C\uACE0 \uC54C\uB824\uC904 \uB54C\uB9CC \uC790\uB3D9 \uD65C\uC131\uD654\uD55C\uB2E4.\r\n const anonToken = this.readCookie(\"anon_token\");\r\n if (data.packet_encryption === true && anonToken) {\r\n this.anonymousPacketToken = anonToken;\r\n this.encryptRequests = true;\r\n }\r\n\r\n this.applyCsrfHealth();\r\n this.onHealthChange?.(true);\r\n if (\r\n bootstrapAuth &&\r\n data.authenticated === false &&\r\n previousToken\r\n ) {\r\n this.disconnectRealtime(\"session_expired\");\r\n this.onSessionExpired?.(new Error(\"Session expired\"));\r\n }\r\n return data;\r\n } catch (error) {\r\n this.onHealthChange?.(false);\r\n throw error;\r\n }\r\n }\r\n\r\n /** document.cookie \uB610\uB294 Node \uD658\uACBD\uC5D0\uC11C \uCFE0\uD0A4 \uAC12 \uC77D\uAE30 (SSR \uB300\uC751) */\r\n readCookie(name: string): string | null {\r\n if (typeof document === \"undefined\") return null;\r\n const match = document.cookie\r\n .split(\";\")\r\n .map((c) => c.trim())\r\n .find((c) => c.startsWith(`${name}=`));\r\n if (!match) return null;\r\n try {\r\n return decodeURIComponent(match.slice(name.length + 1));\r\n } catch {\r\n return match.slice(name.length + 1);\r\n }\r\n }\r\n\r\n async ensurePublicAuthBootstrap(): Promise<void> {\r\n if (typeof document === \"undefined\") {\r\n return;\r\n }\r\n\r\n if (this.apiKey && this.hmacSecret) {\r\n return;\r\n }\r\n\r\n const hasAnonymousPacketToken =\r\n !!this.anonymousPacketToken || !!this.readCookie(\"anon_token\");\r\n const hasCsrfCookie = !!this.readCookie(this.csrfCookieName);\r\n\r\n if (hasAnonymousPacketToken && hasCsrfCookie && this.csrfEnabled) {\r\n return;\r\n }\r\n\r\n await this.checkHealth(false);\r\n }\r\n\r\n // \uC778\uC99D \uC694\uCCAD \uC804\uC5D0 health \uAE30\uBC18 \uC138\uC158 \uBD80\uD2B8\uC2A4\uD2B8\uB7A9\uC744 \uD55C \uBC88 \uBCF4\uC7A5\uD569\uB2C8\uB2E4.\r\n async ensureAuthenticatedRequestBootstrap(): Promise<void> {\r\n if (typeof document === \"undefined\") {\r\n return;\r\n }\r\n\r\n if (this.apiKey && this.hmacSecret) {\r\n return;\r\n }\r\n\r\n if (this.token) {\r\n if (this.authBootstrapToken === this.token) {\r\n return;\r\n }\r\n } else if (this.authBootstrapAnonymousCompleted) {\r\n return;\r\n }\r\n\r\n if (this.authBootstrapPromise) {\r\n return this.authBootstrapPromise;\r\n }\r\n\r\n this.authBootstrapPromise = this.checkHealth(true)\r\n .then(() => {\r\n if (this.token) {\r\n this.authBootstrapToken = this.token;\r\n } else {\r\n this.authBootstrapAnonymousCompleted = true;\r\n }\r\n })\r\n .finally(() => {\r\n this.authBootstrapPromise = null;\r\n });\r\n\r\n return this.authBootstrapPromise;\r\n }\r\n\r\n // \uC778\uC99D \uC694\uCCAD \uC804 \uC790\uB3D9 health \uBD80\uD2B8\uC2A4\uD2B8\uB7A9\uC744 \uC218\uD589\uD569\uB2C8\uB2E4.\r\n override async prepareRequest(withAuth: boolean): Promise<void> {\r\n await super.prepareRequest(withAuth);\r\n if (!withAuth) {\r\n return;\r\n }\r\n\r\n await this.ensureAuthenticatedRequestBootstrap();\r\n }\r\n\r\n /** \uB85C\uADF8\uC778 \uC751\uB2F5\uC744 \uBC18\uD658\uD569\uB2C8\uB2E4. \uC131\uACF5 \uC2DC\uC5D0\uB9CC `access_token`\uC744 \uB0B4\uBD80 \uC0C1\uD0DC\uC5D0 \uC800\uC7A5\uD569\uB2C8\uB2E4. */\r\n async login(\r\n email: string,\r\n password: string,\r\n ): Promise<AuthLoginResponse> {\r\n await this.ensurePublicAuthBootstrap();\r\n\r\n const response = await entityRequest<AuthLoginResponse>(\r\n this.reqOpts,\r\n \"POST\",\r\n \"/v1/auth/login\",\r\n { email, passwd: password },\r\n false,\r\n {},\r\n { requireOkShape: false, allowStatuses: [403] },\r\n );\r\n\r\n if (isAuthLoginSuccessResponse(response)) {\r\n this.token = response.data.access_token;\r\n this.applyCsrfHealth();\r\n if (this.keepSession && this.healthTickTimer === null) {\r\n this.startHealthTick();\r\n }\r\n if (this.realtimeEnabled && this.realtimeAutoConnect) {\r\n this.connectRealtime().catch(() => {});\r\n }\r\n }\r\n\r\n return response;\r\n }\r\n\r\n /** HttpOnly refresh cookie\uB85C Access Token\uC744 \uC7AC\uBC1C\uAE09\uBC1B\uC544 \uB0B4\uBD80 \uD1A0\uD070\uC744 \uAD50\uCCB4\uD569\uB2C8\uB2E4. */\r\n async tokenRefresh(): Promise<{\r\n access_token: string;\r\n refresh_token: string;\r\n expires_in: number;\r\n }> {\r\n const data = await this.request<{\r\n data: {\r\n access_token: string;\r\n refresh_token: string;\r\n expires_in: number;\r\n };\r\n }>(\"POST\", \"/v1/auth/token_refresh\", undefined, false);\r\n this.token = data.data.access_token;\r\n this.applyCsrfHealth();\r\n return data.data;\r\n }\r\n\r\n /** Refresh Token\uC73C\uB85C Access Token\uC744 \uC7AC\uBC1C\uAE09\uBC1B\uC544 \uB0B4\uBD80 \uD1A0\uD070\uC744 \uAD50\uCCB4\uD569\uB2C8\uB2E4. */\r\n async refreshToken(refreshToken?: string): Promise<{\r\n access_token: string;\r\n refresh_token?: string;\r\n expires_in: number;\r\n }> {\r\n if (!refreshToken) {\r\n return this.tokenRefresh();\r\n }\r\n\r\n const data = await this.request<{\r\n data: {\r\n access_token: string;\r\n refresh_token: string;\r\n expires_in: number;\r\n };\r\n }>(\r\n \"POST\",\r\n \"/v1/auth/refresh\",\r\n { refresh_token: refreshToken },\r\n false,\r\n );\r\n this.token = data.data.access_token;\r\n this.applyCsrfHealth();\r\n return data.data;\r\n }\r\n\r\n /**\r\n * \uC11C\uBC84\uC5D0 \uB85C\uADF8\uC544\uC6C3\uC744 \uC694\uCCAD\uD558\uACE0 \uB0B4\uBD80 \uD1A0\uD070\uC744 \uCD08\uAE30\uD654\uD569\uB2C8\uB2E4.\r\n * refresh_token\uC744 \uC11C\uBC84\uC5D0 \uC804\uB2EC\uD574 \uBB34\uD6A8\uD654\uD569\uB2C8\uB2E4.\r\n */\r\n async logout(refreshToken?: string): Promise<{ ok: boolean }> {\r\n this.stopKeepSession();\r\n this.stopHealthTick();\r\n this.disconnectRealtime(\"logout\");\r\n const data = await this.request<{ ok: boolean }>(\r\n \"POST\",\r\n \"/v1/auth/logout\",\r\n refreshToken ? { refresh_token: refreshToken } : undefined,\r\n false,\r\n );\r\n this.token = \"\";\r\n this.applyCsrfHealth();\r\n return data;\r\n }\r\n\r\n /** \uD604\uC7AC \uB85C\uADF8\uC778\uB41C \uC0AC\uC6A9\uC790 \uC815\uBCF4\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4. */\r\n me<T = Record<string, unknown>>(): Promise<{ ok: boolean; data: T }> {\r\n return this.request(\"GET\", \"/v1/auth/me\");\r\n }\r\n\r\n /** \uD68C\uC6D0 \uD0C8\uD1F4\uB97C \uC694\uCCAD\uD569\uB2C8\uB2E4. */\r\n withdraw(passwd?: string): Promise<{ ok: boolean }> {\r\n return this.request(\r\n \"POST\",\r\n \"/v1/auth/withdraw\",\r\n passwd ? { passwd } : {},\r\n );\r\n }\r\n };\r\n}\r\n"],
5
- "mappings": "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",
6
- "names": ["entityRequest", "isAuthLoginSuccessResponse", "response", "AuthMixin", "Base", "token", "bootstrapAuth", "previousToken", "headers", "res", "data", "accessToken", "anonToken", "error", "name", "match", "c", "hasAnonymousPacketToken", "hasCsrfCookie", "withAuth", "email", "password", "refreshToken", "passwd"]
4
+ "sourcesContent": ["import type {\n GConstructor,\n EntityServerClientBase,\n} from \"../../client/base.js\";\nimport { entityRequest } from \"../../client/request.js\";\n\nexport interface AuthLoginSuccessData {\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\nexport interface AuthLoginSuccessResponse {\n ok: true;\n data: AuthLoginSuccessData;\n requires_2fa?: false;\n}\n\nexport interface AuthLoginRequiresTwoFactorResponse {\n ok: true;\n requires_2fa: true;\n data: {\n two_factor_token: string;\n expires_in: number;\n };\n}\n\nexport interface AuthLoginSetupRequiredResponse {\n ok: false;\n error: \"2fa_setup_required\";\n message: string;\n data: {\n setup_token: string;\n expires_in: number;\n };\n}\n\nexport type AuthLoginResponse =\n | AuthLoginSuccessResponse\n | AuthLoginRequiresTwoFactorResponse\n | AuthLoginSetupRequiredResponse;\n\nexport function isAuthLoginSuccessResponse(\n response: AuthLoginResponse,\n): response is AuthLoginSuccessResponse {\n return (\n response.ok === true &&\n response.requires_2fa !== true &&\n typeof response.data === \"object\" &&\n response.data !== null &&\n \"access_token\" in response.data\n );\n}\n\nexport function AuthMixin<TBase extends GConstructor<EntityServerClientBase>>(\n Base: TBase,\n) {\n return class AuthMixinClass extends Base {\n authBootstrapPromise: Promise<void> | null = null;\n authBootstrapToken = \"\";\n authBootstrapAnonymousCompleted = false;\n\n // health tick\uC774 \uCF1C\uC838 \uC788\uC73C\uBA74 keepSession \uC5EC\uBD80\uC5D0 \uB530\uB77C \uC138\uC158 \uBD80\uD2B8\uC2A4\uD2B8\uB7A9\uAE4C\uC9C0 \uD568\uAED8 \uCC98\uB9AC\uD569\uB2C8\uB2E4.\n csrfRefresher = (): Promise<void> =>\n this.checkHealth(this.keepSession).then(() => {});\n\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(bootstrapAuth = false): Promise<{\n status: string;\n authenticated?: boolean;\n packet_encryption?: boolean;\n }> {\n try {\n const previousToken = this.token;\n const headers: Record<string, string> = {};\n if (bootstrapAuth) {\n headers[\"X-Session-Bootstrap\"] = \"1\";\n }\n\n const res = await fetch(`${this.baseUrl}/v1/health`, {\n signal: AbortSignal.timeout(3000),\n credentials: \"include\",\n headers,\n });\n const data = (await res.json()) as {\n status: string;\n authenticated?: boolean;\n packet_encryption?: boolean;\n };\n\n const accessToken = res.headers.get(\"X-Access-Token\");\n if (accessToken) {\n this.token = accessToken;\n if (bootstrapAuth && accessToken !== previousToken) {\n this.onTokenRefreshed?.(accessToken, 0);\n }\n if (\n bootstrapAuth &&\n data.authenticated === true &&\n this.realtimeEnabled &&\n this.realtimeAutoConnect\n ) {\n this.connectRealtime().catch(() => {});\n }\n }\n\n // \uD328\uD0B7 \uC554\uD638\uD654\uB294 health \uC751\uB2F5\uC774 \uBA85\uC2DC\uC801\uC73C\uB85C \uD65C\uC131\uC774\uB77C\uACE0 \uC54C\uB824\uC904 \uB54C\uB9CC \uC790\uB3D9 \uD65C\uC131\uD654\uD55C\uB2E4.\n const anonToken = this.readCookie(\"anon_token\");\n if (data.packet_encryption === true && anonToken) {\n this.anonymousPacketToken = anonToken;\n this.encryptRequests = true;\n }\n\n this.applyCsrfHealth();\n this.onHealthChange?.(true);\n if (\n bootstrapAuth &&\n data.authenticated === false &&\n previousToken\n ) {\n this.disconnectRealtime(\"session_expired\");\n this.onSessionExpired?.(new Error(\"Session expired\"));\n }\n return data;\n } catch (error) {\n this.onHealthChange?.(false);\n throw error;\n }\n }\n\n /** document.cookie \uB610\uB294 Node \uD658\uACBD\uC5D0\uC11C \uCFE0\uD0A4 \uAC12 \uC77D\uAE30 (SSR \uB300\uC751) */\n readCookie(name: string): string | null {\n if (typeof document === \"undefined\") return null;\n const match = document.cookie\n .split(\";\")\n .map((c) => c.trim())\n .find((c) => c.startsWith(`${name}=`));\n if (!match) return null;\n try {\n return decodeURIComponent(match.slice(name.length + 1));\n } catch {\n return match.slice(name.length + 1);\n }\n }\n\n async ensurePublicAuthBootstrap(): Promise<void> {\n if (typeof document === \"undefined\") {\n return;\n }\n\n if (this.apiKey && this.hmacSecret) {\n return;\n }\n\n const hasAnonymousPacketToken =\n !!this.anonymousPacketToken || !!this.readCookie(\"anon_token\");\n const hasCsrfCookie = !!this.readCookie(this.csrfCookieName);\n\n if (hasAnonymousPacketToken && hasCsrfCookie && this.csrfEnabled) {\n return;\n }\n\n await this.checkHealth(false);\n }\n\n // \uC778\uC99D \uC694\uCCAD \uC804\uC5D0 health \uAE30\uBC18 \uC138\uC158 \uBD80\uD2B8\uC2A4\uD2B8\uB7A9\uC744 \uD55C \uBC88 \uBCF4\uC7A5\uD569\uB2C8\uB2E4.\n async ensureAuthenticatedRequestBootstrap(): Promise<void> {\n if (typeof document === \"undefined\") {\n return;\n }\n\n if (this.apiKey && this.hmacSecret) {\n return;\n }\n\n if (this.token) {\n if (this.authBootstrapToken === this.token) {\n return;\n }\n } else if (this.authBootstrapAnonymousCompleted) {\n return;\n }\n\n if (this.authBootstrapPromise) {\n return this.authBootstrapPromise;\n }\n\n this.authBootstrapPromise = this.checkHealth(true)\n .then(() => {\n if (this.token) {\n this.authBootstrapToken = this.token;\n } else {\n this.authBootstrapAnonymousCompleted = true;\n }\n })\n .finally(() => {\n this.authBootstrapPromise = null;\n });\n\n return this.authBootstrapPromise;\n }\n\n // \uC778\uC99D \uC694\uCCAD \uC804 \uC790\uB3D9 health \uBD80\uD2B8\uC2A4\uD2B8\uB7A9\uC744 \uC218\uD589\uD569\uB2C8\uB2E4.\n override async prepareRequest(withAuth: boolean): Promise<void> {\n await super.prepareRequest(withAuth);\n if (!withAuth) {\n return;\n }\n\n await this.ensureAuthenticatedRequestBootstrap();\n }\n\n /** \uB85C\uADF8\uC778 \uC751\uB2F5\uC744 \uBC18\uD658\uD569\uB2C8\uB2E4. \uC131\uACF5 \uC2DC\uC5D0\uB9CC `access_token`\uC744 \uB0B4\uBD80 \uC0C1\uD0DC\uC5D0 \uC800\uC7A5\uD569\uB2C8\uB2E4. */\n async login(\n email: string,\n password: string,\n ): Promise<AuthLoginResponse> {\n await this.ensurePublicAuthBootstrap();\n\n const response = await entityRequest<AuthLoginResponse>(\n this.reqOpts,\n \"POST\",\n \"/v1/auth/login\",\n { email, passwd: password },\n false,\n {},\n { requireOkShape: false, allowStatuses: [403] },\n );\n\n if (isAuthLoginSuccessResponse(response)) {\n this.token = response.data.access_token;\n this.applyCsrfHealth();\n if (this.keepSession && this.healthTickTimer === null) {\n this.startHealthTick();\n }\n if (this.realtimeEnabled && this.realtimeAutoConnect) {\n this.connectRealtime().catch(() => {});\n }\n }\n\n return response;\n }\n\n /** HttpOnly refresh cookie\uB85C Access Token\uC744 \uC7AC\uBC1C\uAE09\uBC1B\uC544 \uB0B4\uBD80 \uD1A0\uD070\uC744 \uAD50\uCCB4\uD569\uB2C8\uB2E4. */\n async tokenRefresh(): Promise<{\n access_token: string;\n refresh_token: string;\n expires_in: number;\n }> {\n const data = await this.request<{\n data: {\n access_token: string;\n refresh_token: string;\n expires_in: number;\n };\n }>(\"POST\", \"/v1/auth/token_refresh\", undefined, false);\n this.token = data.data.access_token;\n this.applyCsrfHealth();\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(refreshToken?: string): Promise<{\n access_token: string;\n refresh_token?: string;\n expires_in: number;\n }> {\n if (!refreshToken) {\n return this.tokenRefresh();\n }\n\n const data = await this.request<{\n data: {\n access_token: string;\n refresh_token: string;\n expires_in: number;\n };\n }>(\n \"POST\",\n \"/v1/auth/refresh\",\n { refresh_token: refreshToken },\n false,\n );\n this.token = data.data.access_token;\n this.applyCsrfHealth();\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 this.stopHealthTick();\n this.disconnectRealtime(\"logout\");\n const data = await this.request<{ ok: boolean }>(\n \"POST\",\n \"/v1/auth/logout\",\n refreshToken ? { refresh_token: refreshToken } : undefined,\n false,\n );\n this.token = \"\";\n this.applyCsrfHealth();\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"],
5
+ "mappings": "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",
6
+ "names": ["entityRequest", "isAuthLoginSuccessResponse", "response", "AuthMixin", "Base", "bootstrapAuth", "previousToken", "headers", "res", "data", "accessToken", "anonToken", "error", "name", "match", "c", "hasAnonymousPacketToken", "hasCsrfCookie", "withAuth", "email", "password", "refreshToken", "passwd"]
7
7
  }
@@ -129,7 +129,6 @@ export declare function EntityMixin<TBase extends GConstructor<EntityServerClien
129
129
  realtimeEventListeners: Map<string, Set<import("../../types.js").RealtimeMessageListener>>;
130
130
  configure(options: Partial<import("../../types.js").EntityServerClientOptions>): void;
131
131
  setToken(token: string): void;
132
- setAccessTokenFromResponse(token: string): void;
133
132
  setAnonymousPacketToken(token: string): void;
134
133
  setApiKey(apiKey: string): void;
135
134
  setHmacSecret(secret: string): void;
@@ -146,7 +145,7 @@ export declare function EntityMixin<TBase extends GConstructor<EntityServerClien
146
145
  sendRealtime(message: import("../../types.js").RealtimeEnvelope | Record<string, unknown>): boolean;
147
146
  subscribeRealtime(subscriptions: string[]): boolean;
148
147
  unsubscribeRealtime(subscriptions: string[]): boolean;
149
- startHealthTick(intervalMs?: number, runImmediately?: boolean): void;
148
+ startHealthTick(intervalMs?: number): void;
150
149
  stopHealthTick(): void;
151
150
  scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
152
151
  access_token: string;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/mixins/server/entity.ts"],
4
- "sourcesContent": ["import type {\r\n EntityHistoryRecord,\r\n EntityListParams,\r\n EntityListResult,\r\n EntityQueryRequest,\r\n} from \"../../types.js\";\r\nimport { 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 EntityMixin<TBase extends GConstructor<EntityServerClientBase>>(\r\n Base: TBase,\r\n) {\r\n return class EntityMixinClass extends Base {\r\n // \u2500\u2500\u2500 \uD2B8\uB79C\uC7AD\uC158 \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\r\n\r\n /** \uD2B8\uB79C\uC7AD\uC158\uC744 \uC2DC\uC791\uD558\uACE0 \uD65C\uC131 \uD2B8\uB79C\uC7AD\uC158 ID\uB97C \uC800\uC7A5\uD569\uB2C8\uB2E4. */\r\n async transStart(): Promise<string> {\r\n const res = await this.request<{\r\n ok: boolean;\r\n transaction_id: string;\r\n }>(\"POST\", \"/v1/transaction/start\", undefined, false);\r\n this.activeTxId = res.transaction_id;\r\n return this.activeTxId;\r\n }\r\n\r\n /** \uD65C\uC131 \uD2B8\uB79C\uC7AD\uC158(\uB610\uB294 \uC804\uB2EC\uB41C transactionId)\uC744 \uB864\uBC31\uD569\uB2C8\uB2E4. */\r\n transRollback(transactionId?: string): Promise<{ ok: boolean }> {\r\n const txId = transactionId ?? this.activeTxId;\r\n if (!txId)\r\n return Promise.reject(\r\n new Error(\r\n \"No active transaction. Call transStart() first.\",\r\n ),\r\n );\r\n this.activeTxId = null;\r\n return this.request(\"POST\", `/v1/transaction/rollback/${txId}`);\r\n }\r\n\r\n /**\r\n * \uD65C\uC131 \uD2B8\uB79C\uC7AD\uC158(\uB610\uB294 \uC804\uB2EC\uB41C transactionId)\uC744 \uCEE4\uBC0B\uD569\uB2C8\uB2E4.\r\n *\r\n * @returns `results` \uBC30\uC5F4: commit\uB41C \uAC01 \uC791\uC5C5\uC758 `entity`, `action`, `seq`\r\n */\r\n transCommit(transactionId?: string): Promise<{\r\n ok: boolean;\r\n results: Array<{ entity: string; action: string; seq: number }>;\r\n }> {\r\n const txId = transactionId ?? this.activeTxId;\r\n if (!txId)\r\n return Promise.reject(\r\n new Error(\r\n \"No active transaction. Call transStart() first.\",\r\n ),\r\n );\r\n this.activeTxId = null;\r\n return this.request(\"POST\", `/v1/transaction/commit/${txId}`);\r\n }\r\n\r\n // \u2500\u2500\u2500 \uC5D4\uD2F0\uD2F0 CRUD \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\r\n\r\n /** \uC5D4\uD2F0\uD2F0 \uC124\uC815 \uBA54\uD0C0\uB370\uC774\uD130\uB97C \uC870\uD68C\uD569\uB2C8\uB2E4. */\r\n meta<T = unknown>(entity: string): Promise<{ ok: boolean; data: T }> {\r\n return this.request(\"POST\", `/v1/entity/${entity}/meta`, {});\r\n }\r\n\r\n /** \uC5D4\uD2F0\uD2F0 \uB370\uC774\uD130\uB97C \uC800\uC7A5 \uC5C6\uC774 \uAC80\uC99D\uD569\uB2C8\uB2E4. */\r\n validate<T = unknown>(\r\n entity: string,\r\n data: Record<string, unknown>,\r\n ): Promise<T> {\r\n return this.http.post(`/v1/entity/${entity}/validate`, data);\r\n }\r\n\r\n /** \uC2DC\uD000\uC2A4 ID\uB85C \uC5D4\uD2F0\uD2F0 \uB2E8\uAC74\uC744 \uC870\uD68C\uD569\uB2C8\uB2E4. */\r\n get<T = unknown>(\r\n entity: string,\r\n seq: number,\r\n opts: { skipHooks?: boolean } = {},\r\n ): Promise<{ ok: boolean; data: T }> {\r\n const q = opts.skipHooks ? \"?skipHooks=true\" : \"\";\r\n return this.request(\"GET\", `/v1/entity/${entity}/${seq}${q}`);\r\n }\r\n\r\n /** \uC870\uAC74\uC73C\uB85C \uC5D4\uD2F0\uD2F0 \uB2E8\uAC74\uC744 \uC870\uD68C\uD569\uB2C8\uB2E4. data \uCEEC\uB7FC\uC744 \uC644\uC804\uD788 \uBCF5\uD638\uD654\uD558\uC5EC \uBC18\uD658\uD569\uB2C8\uB2E4. */\r\n find<T = unknown>(\r\n entity: string,\r\n conditions?: Record<string, unknown>,\r\n opts: { skipHooks?: boolean } = {},\r\n ): Promise<{ ok: boolean; data: T }> {\r\n const q = opts.skipHooks ? \"?skipHooks=true\" : \"\";\r\n return this.request(\r\n \"POST\",\r\n `/v1/entity/${entity}/find${q}`,\r\n conditions ?? {},\r\n );\r\n }\r\n\r\n /** \uD398\uC774\uC9C0\uB124\uC774\uC158/\uC815\uB82C/\uD544\uD130 \uC870\uAC74\uC73C\uB85C \uC5D4\uD2F0\uD2F0 \uBAA9\uB85D\uC744 \uC870\uD68C\uD569\uB2C8\uB2E4. */\r\n list<T = unknown>(\r\n entity: string,\r\n params: EntityListParams = {},\r\n ): Promise<{ ok: boolean; data: EntityListResult<T> }> {\r\n const { conditions, fields, orderDir, orderBy, ...rest } = params;\r\n const queryObj: Record<string, unknown> = {\r\n page: 1,\r\n limit: 20,\r\n ...rest,\r\n };\r\n if (orderBy)\r\n queryObj.orderBy =\r\n orderDir === \"DESC\" ? `-${orderBy}` : orderBy;\r\n if (fields?.length) queryObj.fields = fields.join(\",\");\r\n return this.request(\r\n \"POST\",\r\n `/v1/entity/${entity}/list?${buildQuery(queryObj)}`,\r\n conditions ?? {},\r\n );\r\n }\r\n\r\n /**\r\n * \uC5D4\uD2F0\uD2F0 \uCD1D \uAC74\uC218\uB97C \uC870\uD68C\uD569\uB2C8\uB2E4.\r\n *\r\n * @param conditions \uD544\uD130 \uC870\uAC74 (\uC608: `{ status: \"active\" }`)\r\n */\r\n count(\r\n entity: string,\r\n conditions?: Record<string, unknown>,\r\n ): Promise<{ ok: boolean; count: number }> {\r\n return this.request(\r\n \"POST\",\r\n `/v1/entity/${entity}/count`,\r\n conditions ?? {},\r\n );\r\n }\r\n\r\n /**\r\n * \uCEE4\uC2A4\uD140 SQL\uB85C \uC5D4\uD2F0\uD2F0\uB97C \uC870\uD68C\uD569\uB2C8\uB2E4.\r\n *\r\n * SELECT \uC804\uC6A9\uC774\uBA70 \uC778\uB371\uC2A4 \uD14C\uC774\uBE14\uB9CC \uC870\uD68C \uAC00\uB2A5\uD569\uB2C8\uB2E4. JOIN \uC9C0\uC6D0.\r\n */\r\n query<T = unknown>(\r\n entity: string,\r\n req: EntityQueryRequest,\r\n ): Promise<{ ok: boolean; data: { items: T[]; count: number } }> {\r\n return this.request(\"POST\", `/v1/entity/${entity}/query`, req);\r\n }\r\n\r\n /** \uC5D4\uD2F0\uD2F0 \uB370\uC774\uD130\uB97C \uC0DD\uC131/\uC218\uC815(Submit)\uD569\uB2C8\uB2E4. `seq`\uAC00 \uC5C6\uC73C\uBA74 INSERT, \uC788\uC73C\uBA74 UPDATE\uC785\uB2C8\uB2E4. */\r\n submit(\r\n entity: string,\r\n data: Record<string, unknown>,\r\n opts: { transactionId?: string; skipHooks?: boolean } = {},\r\n ): Promise<{ ok: boolean; seq: number }> {\r\n const txId = opts.transactionId ?? this.activeTxId;\r\n const extraHeaders = txId\r\n ? { \"X-Transaction-ID\": txId }\r\n : undefined;\r\n const q = opts.skipHooks ? \"?skipHooks=true\" : \"\";\r\n return this.request(\r\n \"POST\",\r\n `/v1/entity/${entity}/submit${q}`,\r\n data,\r\n true,\r\n extraHeaders,\r\n );\r\n }\r\n\r\n /** \uC2DC\uD000\uC2A4 ID\uB85C \uC5D4\uD2F0\uD2F0\uB97C \uC0AD\uC81C\uD569\uB2C8\uB2E4(`hard=true`\uBA74 \uD558\uB4DC \uC0AD\uC81C, \uAE30\uBCF8\uC740 \uC18C\uD504\uD2B8 \uC0AD\uC81C). */\r\n delete(\r\n entity: string,\r\n seq: number,\r\n opts: {\r\n transactionId?: string;\r\n hard?: boolean;\r\n skipHooks?: boolean;\r\n } = {},\r\n ): Promise<{ ok: boolean; deleted: number }> {\r\n const params = new URLSearchParams();\r\n if (opts.hard) params.set(\"hard\", \"true\");\r\n if (opts.skipHooks) params.set(\"skipHooks\", \"true\");\r\n const q = params.size ? `?${params}` : \"\";\r\n const txId = opts.transactionId ?? this.activeTxId;\r\n const extraHeaders = txId\r\n ? { \"X-Transaction-ID\": txId }\r\n : undefined;\r\n return this.request(\r\n \"POST\",\r\n `/v1/entity/${entity}/delete/${seq}${q}`,\r\n undefined,\r\n true,\r\n extraHeaders,\r\n );\r\n }\r\n\r\n /** \uC5D4\uD2F0\uD2F0 \uB2E8\uAC74\uC758 \uBCC0\uACBD \uC774\uB825\uC744 \uC870\uD68C\uD569\uB2C8\uB2E4. */\r\n history<T = unknown>(\r\n entity: string,\r\n seq: number,\r\n params: Pick<EntityListParams, \"page\" | \"limit\"> = {},\r\n ): Promise<{\r\n ok: boolean;\r\n data: EntityListResult<EntityHistoryRecord<T>>;\r\n }> {\r\n return this.request(\r\n \"GET\",\r\n `/v1/entity/${entity}/history/${seq}?${buildQuery({ page: 1, limit: 50, ...params })}`,\r\n );\r\n }\r\n\r\n /** \uD2B9\uC815 \uC774\uB825 \uC2DC\uC810\uC73C\uB85C \uC5D4\uD2F0\uD2F0\uB97C \uB864\uBC31\uD569\uB2C8\uB2E4. */\r\n rollback(entity: string, historySeq: number): Promise<{ ok: boolean }> {\r\n return this.request(\r\n \"POST\",\r\n `/v1/entity/${entity}/rollback/${historySeq}`,\r\n );\r\n }\r\n };\r\n}\r\n"],
4
+ "sourcesContent": ["import type {\n EntityHistoryRecord,\n EntityListParams,\n EntityListResult,\n EntityQueryRequest,\n} from \"../../types.js\";\nimport { buildQuery } from \"../../client/utils.js\";\nimport type {\n GConstructor,\n EntityServerClientBase,\n} from \"../../client/base.js\";\n\nexport function EntityMixin<TBase extends GConstructor<EntityServerClientBase>>(\n Base: TBase,\n) {\n return class EntityMixinClass extends Base {\n // \u2500\u2500\u2500 \uD2B8\uB79C\uC7AD\uC158 \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 /** \uD2B8\uB79C\uC7AD\uC158\uC744 \uC2DC\uC791\uD558\uACE0 \uD65C\uC131 \uD2B8\uB79C\uC7AD\uC158 ID\uB97C \uC800\uC7A5\uD569\uB2C8\uB2E4. */\n async transStart(): Promise<string> {\n const res = await this.request<{\n ok: boolean;\n transaction_id: string;\n }>(\"POST\", \"/v1/transaction/start\", undefined, false);\n this.activeTxId = res.transaction_id;\n return this.activeTxId;\n }\n\n /** \uD65C\uC131 \uD2B8\uB79C\uC7AD\uC158(\uB610\uB294 \uC804\uB2EC\uB41C transactionId)\uC744 \uB864\uBC31\uD569\uB2C8\uB2E4. */\n transRollback(transactionId?: string): Promise<{ ok: boolean }> {\n const txId = transactionId ?? this.activeTxId;\n if (!txId)\n return Promise.reject(\n new Error(\n \"No active transaction. Call transStart() first.\",\n ),\n );\n this.activeTxId = null;\n return this.request(\"POST\", `/v1/transaction/rollback/${txId}`);\n }\n\n /**\n * \uD65C\uC131 \uD2B8\uB79C\uC7AD\uC158(\uB610\uB294 \uC804\uB2EC\uB41C transactionId)\uC744 \uCEE4\uBC0B\uD569\uB2C8\uB2E4.\n *\n * @returns `results` \uBC30\uC5F4: commit\uB41C \uAC01 \uC791\uC5C5\uC758 `entity`, `action`, `seq`\n */\n transCommit(transactionId?: string): Promise<{\n ok: boolean;\n results: Array<{ entity: string; action: string; seq: number }>;\n }> {\n const txId = transactionId ?? this.activeTxId;\n if (!txId)\n return Promise.reject(\n new Error(\n \"No active transaction. Call transStart() first.\",\n ),\n );\n this.activeTxId = null;\n return this.request(\"POST\", `/v1/transaction/commit/${txId}`);\n }\n\n // \u2500\u2500\u2500 \uC5D4\uD2F0\uD2F0 CRUD \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 /** \uC5D4\uD2F0\uD2F0 \uC124\uC815 \uBA54\uD0C0\uB370\uC774\uD130\uB97C \uC870\uD68C\uD569\uB2C8\uB2E4. */\n meta<T = unknown>(entity: string): Promise<{ ok: boolean; data: T }> {\n return this.request(\"POST\", `/v1/entity/${entity}/meta`, {});\n }\n\n /** \uC5D4\uD2F0\uD2F0 \uB370\uC774\uD130\uB97C \uC800\uC7A5 \uC5C6\uC774 \uAC80\uC99D\uD569\uB2C8\uB2E4. */\n validate<T = unknown>(\n entity: string,\n data: Record<string, unknown>,\n ): Promise<T> {\n return this.http.post(`/v1/entity/${entity}/validate`, data);\n }\n\n /** \uC2DC\uD000\uC2A4 ID\uB85C \uC5D4\uD2F0\uD2F0 \uB2E8\uAC74\uC744 \uC870\uD68C\uD569\uB2C8\uB2E4. */\n get<T = unknown>(\n entity: string,\n seq: number,\n opts: { skipHooks?: boolean } = {},\n ): Promise<{ ok: boolean; data: T }> {\n const q = opts.skipHooks ? \"?skipHooks=true\" : \"\";\n return this.request(\"GET\", `/v1/entity/${entity}/${seq}${q}`);\n }\n\n /** \uC870\uAC74\uC73C\uB85C \uC5D4\uD2F0\uD2F0 \uB2E8\uAC74\uC744 \uC870\uD68C\uD569\uB2C8\uB2E4. data \uCEEC\uB7FC\uC744 \uC644\uC804\uD788 \uBCF5\uD638\uD654\uD558\uC5EC \uBC18\uD658\uD569\uB2C8\uB2E4. */\n find<T = unknown>(\n entity: string,\n conditions?: Record<string, unknown>,\n opts: { skipHooks?: boolean } = {},\n ): Promise<{ ok: boolean; data: T }> {\n const q = opts.skipHooks ? \"?skipHooks=true\" : \"\";\n return this.request(\n \"POST\",\n `/v1/entity/${entity}/find${q}`,\n conditions ?? {},\n );\n }\n\n /** \uD398\uC774\uC9C0\uB124\uC774\uC158/\uC815\uB82C/\uD544\uD130 \uC870\uAC74\uC73C\uB85C \uC5D4\uD2F0\uD2F0 \uBAA9\uB85D\uC744 \uC870\uD68C\uD569\uB2C8\uB2E4. */\n list<T = unknown>(\n entity: string,\n params: EntityListParams = {},\n ): Promise<{ ok: boolean; data: EntityListResult<T> }> {\n const { conditions, fields, orderDir, orderBy, ...rest } = params;\n const queryObj: Record<string, unknown> = {\n page: 1,\n limit: 20,\n ...rest,\n };\n if (orderBy)\n queryObj.orderBy =\n orderDir === \"DESC\" ? `-${orderBy}` : orderBy;\n if (fields?.length) queryObj.fields = fields.join(\",\");\n return this.request(\n \"POST\",\n `/v1/entity/${entity}/list?${buildQuery(queryObj)}`,\n conditions ?? {},\n );\n }\n\n /**\n * \uC5D4\uD2F0\uD2F0 \uCD1D \uAC74\uC218\uB97C \uC870\uD68C\uD569\uB2C8\uB2E4.\n *\n * @param conditions \uD544\uD130 \uC870\uAC74 (\uC608: `{ status: \"active\" }`)\n */\n count(\n entity: string,\n conditions?: Record<string, unknown>,\n ): Promise<{ ok: boolean; count: number }> {\n return this.request(\n \"POST\",\n `/v1/entity/${entity}/count`,\n conditions ?? {},\n );\n }\n\n /**\n * \uCEE4\uC2A4\uD140 SQL\uB85C \uC5D4\uD2F0\uD2F0\uB97C \uC870\uD68C\uD569\uB2C8\uB2E4.\n *\n * SELECT \uC804\uC6A9\uC774\uBA70 \uC778\uB371\uC2A4 \uD14C\uC774\uBE14\uB9CC \uC870\uD68C \uAC00\uB2A5\uD569\uB2C8\uB2E4. JOIN \uC9C0\uC6D0.\n */\n query<T = unknown>(\n entity: string,\n req: EntityQueryRequest,\n ): Promise<{ ok: boolean; data: { items: T[]; count: number } }> {\n return this.request(\"POST\", `/v1/entity/${entity}/query`, req);\n }\n\n /** \uC5D4\uD2F0\uD2F0 \uB370\uC774\uD130\uB97C \uC0DD\uC131/\uC218\uC815(Submit)\uD569\uB2C8\uB2E4. `seq`\uAC00 \uC5C6\uC73C\uBA74 INSERT, \uC788\uC73C\uBA74 UPDATE\uC785\uB2C8\uB2E4. */\n submit(\n entity: string,\n data: Record<string, unknown>,\n opts: { transactionId?: string; skipHooks?: boolean } = {},\n ): Promise<{ ok: boolean; seq: number }> {\n const txId = opts.transactionId ?? this.activeTxId;\n const extraHeaders = txId\n ? { \"X-Transaction-ID\": txId }\n : undefined;\n const q = opts.skipHooks ? \"?skipHooks=true\" : \"\";\n return this.request(\n \"POST\",\n `/v1/entity/${entity}/submit${q}`,\n data,\n true,\n extraHeaders,\n );\n }\n\n /** \uC2DC\uD000\uC2A4 ID\uB85C \uC5D4\uD2F0\uD2F0\uB97C \uC0AD\uC81C\uD569\uB2C8\uB2E4(`hard=true`\uBA74 \uD558\uB4DC \uC0AD\uC81C, \uAE30\uBCF8\uC740 \uC18C\uD504\uD2B8 \uC0AD\uC81C). */\n delete(\n entity: string,\n seq: number,\n opts: {\n transactionId?: string;\n hard?: boolean;\n skipHooks?: boolean;\n } = {},\n ): Promise<{ ok: boolean; deleted: number }> {\n const params = new URLSearchParams();\n if (opts.hard) params.set(\"hard\", \"true\");\n if (opts.skipHooks) params.set(\"skipHooks\", \"true\");\n const q = params.size ? `?${params}` : \"\";\n const txId = opts.transactionId ?? this.activeTxId;\n const extraHeaders = txId\n ? { \"X-Transaction-ID\": txId }\n : undefined;\n return this.request(\n \"POST\",\n `/v1/entity/${entity}/delete/${seq}${q}`,\n undefined,\n true,\n extraHeaders,\n );\n }\n\n /** \uC5D4\uD2F0\uD2F0 \uB2E8\uAC74\uC758 \uBCC0\uACBD \uC774\uB825\uC744 \uC870\uD68C\uD569\uB2C8\uB2E4. */\n history<T = unknown>(\n entity: string,\n seq: number,\n params: Pick<EntityListParams, \"page\" | \"limit\"> = {},\n ): Promise<{\n ok: boolean;\n data: EntityListResult<EntityHistoryRecord<T>>;\n }> {\n return this.request(\n \"GET\",\n `/v1/entity/${entity}/history/${seq}?${buildQuery({ page: 1, limit: 50, ...params })}`,\n );\n }\n\n /** \uD2B9\uC815 \uC774\uB825 \uC2DC\uC810\uC73C\uB85C \uC5D4\uD2F0\uD2F0\uB97C \uB864\uBC31\uD569\uB2C8\uB2E4. */\n rollback(entity: string, historySeq: number): Promise<{ ok: boolean }> {\n return this.request(\n \"POST\",\n `/v1/entity/${entity}/rollback/${historySeq}`,\n );\n }\n };\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": ["buildQuery", "EntityMixin", "Base", "res", "transactionId", "txId", "entity", "data", "seq", "opts", "q", "conditions", "params", "fields", "orderDir", "orderBy", "rest", "queryObj", "req", "extraHeaders", "historySeq"]
7
7
  }
@@ -127,7 +127,6 @@ export declare function FileMixin<TBase extends GConstructor<EntityServerClientB
127
127
  realtimeEventListeners: Map<string, Set<import("../../types.js").RealtimeMessageListener>>;
128
128
  configure(options: Partial<import("../../types.js").EntityServerClientOptions>): void;
129
129
  setToken(token: string): void;
130
- setAccessTokenFromResponse(token: string): void;
131
130
  setAnonymousPacketToken(token: string): void;
132
131
  setApiKey(apiKey: string): void;
133
132
  setHmacSecret(secret: string): void;
@@ -144,7 +143,7 @@ export declare function FileMixin<TBase extends GConstructor<EntityServerClientB
144
143
  sendRealtime(message: import("../../types.js").RealtimeEnvelope | Record<string, unknown>): boolean;
145
144
  subscribeRealtime(subscriptions: string[]): boolean;
146
145
  unsubscribeRealtime(subscriptions: string[]): boolean;
147
- startHealthTick(intervalMs?: number, runImmediately?: boolean): void;
146
+ startHealthTick(intervalMs?: number): void;
148
147
  stopHealthTick(): void;
149
148
  scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
150
149
  access_token: string;