entity-client 1.0.7 → 1.0.8

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 (133) hide show
  1. package/README.md +362 -0
  2. package/dist/EntityAppServerApi.d.ts +1080 -0
  3. package/dist/EntityAppServerApi.js +2 -0
  4. package/dist/EntityAppServerApi.js.map +7 -0
  5. package/dist/{EntityServerClient.d.ts → EntityServerApi.d.ts} +114 -20
  6. package/dist/EntityServerApi.js +2 -0
  7. package/dist/EntityServerApi.js.map +7 -0
  8. package/dist/client/base.d.ts +13 -4
  9. package/dist/client/base.js +1 -1
  10. package/dist/client/base.js.map +3 -3
  11. package/dist/hooks/useEntityAppServer.d.ts +18 -0
  12. package/dist/hooks/useEntityAppServer.js +2 -0
  13. package/dist/hooks/useEntityAppServer.js.map +7 -0
  14. package/dist/hooks/useEntityClient.d.ts +74 -0
  15. package/dist/hooks/useEntityClient.js +2 -0
  16. package/dist/hooks/useEntityClient.js.map +7 -0
  17. package/dist/hooks/useEntityServer.d.ts +5 -88
  18. package/dist/hooks/useEntityServer.js +1 -1
  19. package/dist/hooks/useEntityServer.js.map +3 -3
  20. package/dist/index.d.ts +6 -6
  21. package/dist/index.js +1 -1
  22. package/dist/index.js.map +4 -4
  23. package/dist/mixins/app/index.d.ts +6 -6
  24. package/dist/mixins/app/index.js +1 -1
  25. package/dist/mixins/app/index.js.map +2 -2
  26. package/dist/mixins/app/plugins/alimtalk.d.ts +68 -0
  27. package/dist/mixins/app/plugins/alimtalk.js +2 -0
  28. package/dist/mixins/app/plugins/alimtalk.js.map +7 -0
  29. package/dist/mixins/app/plugins/friendtalk.d.ts +62 -0
  30. package/dist/mixins/app/plugins/friendtalk.js +2 -0
  31. package/dist/mixins/app/plugins/friendtalk.js.map +7 -0
  32. package/dist/mixins/app/plugins/holidays.d.ts +70 -0
  33. package/dist/mixins/app/plugins/holidays.js +2 -0
  34. package/dist/mixins/app/plugins/holidays.js.map +7 -0
  35. package/dist/mixins/app/plugins/identity.d.ts +68 -0
  36. package/dist/mixins/app/plugins/identity.js +2 -0
  37. package/dist/mixins/app/plugins/identity.js.map +7 -0
  38. package/dist/mixins/app/plugins/index.d.ts +10 -0
  39. package/dist/mixins/app/plugins/index.js +2 -0
  40. package/dist/mixins/app/plugins/index.js.map +7 -0
  41. package/dist/mixins/app/plugins/llm.d.ts +130 -0
  42. package/dist/mixins/app/plugins/llm.js +2 -0
  43. package/dist/mixins/app/plugins/llm.js.map +7 -0
  44. package/dist/mixins/app/plugins/ocr.d.ts +76 -0
  45. package/dist/mixins/app/plugins/ocr.js +2 -0
  46. package/dist/mixins/app/plugins/ocr.js.map +7 -0
  47. package/dist/mixins/app/plugins/pg.d.ts +74 -0
  48. package/dist/mixins/app/plugins/pg.js +2 -0
  49. package/dist/mixins/app/plugins/pg.js.map +7 -0
  50. package/dist/mixins/app/plugins/push.d.ts +70 -0
  51. package/dist/mixins/app/plugins/push.js +2 -0
  52. package/dist/mixins/app/plugins/push.js.map +7 -0
  53. package/dist/mixins/app/plugins/sms.d.ts +68 -0
  54. package/dist/mixins/app/plugins/sms.js +2 -0
  55. package/dist/mixins/app/plugins/sms.js.map +7 -0
  56. package/dist/mixins/app/plugins/taxinvoice.d.ts +72 -0
  57. package/dist/mixins/app/plugins/taxinvoice.js +2 -0
  58. package/dist/mixins/app/plugins/taxinvoice.js.map +7 -0
  59. package/dist/mixins/app/{account.d.ts → routes/account.d.ts} +11 -5
  60. package/dist/mixins/app/routes/account.js +2 -0
  61. package/dist/mixins/app/routes/account.js.map +7 -0
  62. package/dist/mixins/app/{board.d.ts → routes/board.d.ts} +11 -5
  63. package/dist/mixins/app/routes/board.js +2 -0
  64. package/dist/mixins/app/routes/board.js.map +7 -0
  65. package/dist/mixins/app/{email-verify.d.ts → routes/email-verify.d.ts} +11 -5
  66. package/dist/mixins/app/routes/email-verify.js +2 -0
  67. package/dist/mixins/app/routes/email-verify.js.map +7 -0
  68. package/dist/mixins/app/{oauth.d.ts → routes/oauth.d.ts} +11 -5
  69. package/dist/mixins/app/routes/oauth.js +2 -0
  70. package/dist/mixins/app/routes/oauth.js.map +7 -0
  71. package/dist/mixins/app/{password-reset.d.ts → routes/password-reset.d.ts} +11 -5
  72. package/dist/mixins/app/routes/password-reset.js +2 -0
  73. package/dist/mixins/app/routes/password-reset.js.map +7 -0
  74. package/dist/mixins/app/{two-factor.d.ts → routes/two-factor.d.ts} +11 -5
  75. package/dist/mixins/app/routes/two-factor.js +2 -0
  76. package/dist/mixins/app/routes/two-factor.js.map +7 -0
  77. package/dist/mixins/server/admin.d.ts +7 -1
  78. package/dist/mixins/server/admin.js +1 -1
  79. package/dist/mixins/server/admin.js.map +2 -2
  80. package/dist/mixins/{auth.d.ts → server/auth.d.ts} +12 -20
  81. package/dist/mixins/{auth.js → server/auth.js} +1 -1
  82. package/dist/mixins/server/auth.js.map +7 -0
  83. package/dist/mixins/{entity.d.ts → server/entity.d.ts} +12 -6
  84. package/dist/mixins/server/entity.js +2 -0
  85. package/dist/mixins/server/entity.js.map +7 -0
  86. package/dist/mixins/{file.d.ts → server/file.d.ts} +12 -6
  87. package/dist/mixins/server/file.js.map +7 -0
  88. package/dist/mixins/server/index.d.ts +7 -6
  89. package/dist/mixins/server/index.js +1 -1
  90. package/dist/mixins/server/index.js.map +3 -3
  91. package/dist/mixins/{push.d.ts → server/push.d.ts} +12 -6
  92. package/dist/mixins/server/push.js.map +7 -0
  93. package/dist/mixins/{smtp.d.ts → server/smtp.d.ts} +14 -6
  94. package/dist/mixins/server/smtp.js +2 -0
  95. package/dist/mixins/server/smtp.js.map +7 -0
  96. package/dist/mixins/server/transaction.d.ts +66 -0
  97. package/dist/mixins/server/transaction.js +2 -0
  98. package/dist/mixins/server/transaction.js.map +7 -0
  99. package/dist/mixins/{utils.d.ts → server/utils.d.ts} +12 -6
  100. package/dist/mixins/server/utils.js +2 -0
  101. package/dist/mixins/server/utils.js.map +7 -0
  102. package/dist/react.d.ts +2 -0
  103. package/dist/react.js +1 -1
  104. package/dist/react.js.map +4 -4
  105. package/package.json +2 -2
  106. package/dist/EntityAppServerClient.d.ts +0 -383
  107. package/dist/EntityAppServerClient.js +0 -2
  108. package/dist/EntityAppServerClient.js.map +0 -7
  109. package/dist/EntityServerClient.js +0 -2
  110. package/dist/EntityServerClient.js.map +0 -7
  111. package/dist/mixins/app/account.js +0 -2
  112. package/dist/mixins/app/account.js.map +0 -7
  113. package/dist/mixins/app/board.js +0 -2
  114. package/dist/mixins/app/board.js.map +0 -7
  115. package/dist/mixins/app/email-verify.js +0 -2
  116. package/dist/mixins/app/email-verify.js.map +0 -7
  117. package/dist/mixins/app/oauth.js +0 -2
  118. package/dist/mixins/app/oauth.js.map +0 -7
  119. package/dist/mixins/app/password-reset.js +0 -2
  120. package/dist/mixins/app/password-reset.js.map +0 -7
  121. package/dist/mixins/app/two-factor.js +0 -2
  122. package/dist/mixins/app/two-factor.js.map +0 -7
  123. package/dist/mixins/auth.js.map +0 -7
  124. package/dist/mixins/entity.js +0 -2
  125. package/dist/mixins/entity.js.map +0 -7
  126. package/dist/mixins/file.js.map +0 -7
  127. package/dist/mixins/push.js.map +0 -7
  128. package/dist/mixins/smtp.js +0 -2
  129. package/dist/mixins/smtp.js.map +0 -7
  130. package/dist/mixins/utils.js +0 -2
  131. package/dist/mixins/utils.js.map +0 -7
  132. /package/dist/mixins/{file.js → server/file.js} +0 -0
  133. /package/dist/mixins/{push.js → server/push.js} +0 -0
@@ -1,7 +1,8 @@
1
- export { AuthMixin } from "../auth.js";
2
- export { EntityMixin } from "../entity.js";
3
- export { FileMixin } from "../file.js";
4
- export { PushMixin } from "../push.js";
5
- export { SmtpMixin } from "../smtp.js";
6
- export { UtilsMixin } from "../utils.js";
1
+ export { AuthMixin } from "./auth.js";
2
+ export { EntityMixin } from "./entity.js";
3
+ export { FileMixin } from "./file.js";
4
+ export { PushMixin } from "./push.js";
5
+ export { SmtpMixin } from "./smtp.js";
6
+ export { TransactionMixin } from "./transaction.js";
7
+ export { UtilsMixin } from "./utils.js";
7
8
  export { AdminMixin } from "./admin.js";
@@ -1,2 +1,2 @@
1
- import{AuthMixin as r}from"../auth.js";import{EntityMixin as t}from"../entity.js";import{FileMixin as n}from"../file.js";import{PushMixin as p}from"../push.js";import{SmtpMixin as M}from"../smtp.js";import{UtilsMixin as l}from"../utils.js";import{AdminMixin as u}from"./admin.js";export{u as AdminMixin,r as AuthMixin,t as EntityMixin,n as FileMixin,p as PushMixin,M as SmtpMixin,l as UtilsMixin};
1
+ import{AuthMixin as r}from"./auth.js";import{EntityMixin as t}from"./entity.js";import{FileMixin as m}from"./file.js";import{PushMixin as p}from"./push.js";import{SmtpMixin as M}from"./smtp.js";import{TransactionMixin as a}from"./transaction.js";import{UtilsMixin as l}from"./utils.js";import{AdminMixin as A}from"./admin.js";export{A as AdminMixin,r as AuthMixin,t as EntityMixin,m as FileMixin,p as PushMixin,M as SmtpMixin,a as TransactionMixin,l as UtilsMixin};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/mixins/server/index.ts"],
4
- "sourcesContent": ["export { AuthMixin } from \"../auth.js\";\nexport { EntityMixin } from \"../entity.js\";\nexport { FileMixin } from \"../file.js\";\nexport { PushMixin } from \"../push.js\";\nexport { SmtpMixin } from \"../smtp.js\";\nexport { UtilsMixin } from \"../utils.js\";\nexport { AdminMixin } from \"./admin.js\";\n"],
5
- "mappings": "AAAA,OAAS,aAAAA,MAAiB,aAC1B,OAAS,eAAAC,MAAmB,eAC5B,OAAS,aAAAC,MAAiB,aAC1B,OAAS,aAAAC,MAAiB,aAC1B,OAAS,aAAAC,MAAiB,aAC1B,OAAS,cAAAC,MAAkB,cAC3B,OAAS,cAAAC,MAAkB",
6
- "names": ["AuthMixin", "EntityMixin", "FileMixin", "PushMixin", "SmtpMixin", "UtilsMixin", "AdminMixin"]
4
+ "sourcesContent": ["export { AuthMixin } from \"./auth.js\";\nexport { EntityMixin } from \"./entity.js\";\nexport { FileMixin } from \"./file.js\";\nexport { PushMixin } from \"./push.js\";\nexport { SmtpMixin } from \"./smtp.js\";\nexport { TransactionMixin } from \"./transaction.js\";\nexport { UtilsMixin } from \"./utils.js\";\nexport { AdminMixin } from \"./admin.js\";\n"],
5
+ "mappings": "AAAA,OAAS,aAAAA,MAAiB,YAC1B,OAAS,eAAAC,MAAmB,cAC5B,OAAS,aAAAC,MAAiB,YAC1B,OAAS,aAAAC,MAAiB,YAC1B,OAAS,aAAAC,MAAiB,YAC1B,OAAS,oBAAAC,MAAwB,mBACjC,OAAS,cAAAC,MAAkB,aAC3B,OAAS,cAAAC,MAAkB",
6
+ "names": ["AuthMixin", "EntityMixin", "FileMixin", "PushMixin", "SmtpMixin", "TransactionMixin", "UtilsMixin", "AdminMixin"]
7
7
  }
@@ -1,5 +1,5 @@
1
- import type { EntityListParams, EntityListResult, RegisterPushDeviceOptions } from "../types.js";
2
- import type { GConstructor, EntityServerClientBase } from "../client/base.js";
1
+ import type { EntityListParams, EntityListResult, RegisterPushDeviceOptions } from "../../types.js";
2
+ import type { GConstructor, EntityServerClientBase } from "../../client/base.js";
3
3
  type WithSubmit = EntityServerClientBase & {
4
4
  submit(entity: string, data: Record<string, unknown>, opts?: {
5
5
  transactionId?: string;
@@ -70,7 +70,7 @@ export declare function PushMixin<TBase extends GConstructor<WithSubmit>>(Base:
70
70
  _refreshTimer: ReturnType<typeof setTimeout> | null;
71
71
  _csrfRefreshTimer: ReturnType<typeof setTimeout> | null;
72
72
  _csrfRefreshPromise: Promise<string> | null;
73
- configure(options: Partial<import("../types.js").EntityServerClientOptions>): void;
73
+ configure(options: Partial<import("../../types.js").EntityServerClientOptions>): void;
74
74
  setToken(token: string): void;
75
75
  setAnonymousPacketToken(token: string): void;
76
76
  setApiKey(apiKey: string): void;
@@ -88,10 +88,16 @@ export declare function PushMixin<TBase extends GConstructor<WithSubmit>>(Base:
88
88
  stopCsrfRefresh(): void;
89
89
  _scheduleCsrfRefresh(expiresIn: number): void;
90
90
  refreshCsrfToken(): Promise<string>;
91
- _applyCsrfHealth(csrf?: import("../types.js").EntityServerClientHealthCsrf | null): void;
91
+ _applyCsrfHealth(csrf?: import("../../types.js").EntityServerClientHealthCsrf | null): void;
92
92
  readRequestBody<T = Record<string, unknown>>(body: ArrayBuffer | Uint8Array | string | T | null | undefined, contentType?: string, requireEncrypted?: boolean): T;
93
- get _reqOpts(): import("../client/request.js").RequestOptions;
94
- requestJson<T>(method: string, path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
93
+ get _reqOpts(): import("../../client/request.js").RequestOptions;
94
+ get http(): {
95
+ get<T>(path: string, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
96
+ post<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
97
+ put<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
98
+ patch<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
99
+ delete<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
100
+ };
95
101
  requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
96
102
  requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
97
103
  requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/mixins/server/push.ts"],
4
+ "sourcesContent": ["import type {\n EntityListParams,\n EntityListResult,\n RegisterPushDeviceOptions,\n} from \"../../types.js\";\nimport type { GConstructor, EntityServerClientBase } from \"../../client/base.js\";\n\n// entity submit\uC744 \uAC00\uC9C4 base \uD0C0\uC785 (EntityMixin \uC801\uC6A9 \uD6C4)\ntype WithSubmit = EntityServerClientBase & {\n submit(\n entity: string,\n data: Record<string, unknown>,\n opts?: { transactionId?: string; skipHooks?: boolean },\n ): Promise<{ ok: boolean; seq: number }>;\n list<T = unknown>(\n entity: string,\n params?: EntityListParams,\n ): Promise<{ ok: boolean; data: EntityListResult<T> }>;\n};\n\nexport function PushMixin<TBase extends GConstructor<WithSubmit>>(Base: TBase) {\n return class PushMixinClass extends Base {\n // \u2500\u2500\u2500 \uD478\uC2DC submit \uB798\uD37C \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 * \uD478\uC2DC \uAD00\uB828 \uC5D4\uD2F0\uD2F0\uB85C payload\uB97C \uC804\uC1A1(Submit)\uD569\uB2C8\uB2E4.\n * \uB0B4\uBD80\uC801\uC73C\uB85C `submit()` \uBA54\uC11C\uB4DC\uB97C \uD638\uCD9C\uD569\uB2C8\uB2E4.\n */\n push(\n pushEntity: string,\n payload: Record<string, unknown>,\n opts: { transactionId?: string } = {},\n ): Promise<{ ok: boolean; seq: number }> {\n return this.submit(pushEntity, payload, opts);\n }\n\n // \u2500\u2500\u2500 \uD478\uC2DC \uB514\uBC14\uC774\uC2A4 \uAD00\uB9AC \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 /** \uD478\uC2DC \uB85C\uADF8 \uC5D4\uD2F0\uD2F0 \uBAA9\uB85D\uC744 \uC870\uD68C\uD569\uB2C8\uB2E4. */\n pushLogList<T = unknown>(\n params: EntityListParams = {},\n ): Promise<{ ok: boolean; data: EntityListResult<T> }> {\n return this.list<T>(\"push_log\", params);\n }\n\n /** \uACC4\uC815\uC758 \uD478\uC2DC \uB514\uBC14\uC774\uC2A4\uB97C \uB4F1\uB85D\uD569\uB2C8\uB2E4. */\n registerPushDevice(\n accountSeq: number,\n deviceId: string,\n pushToken: string,\n opts: RegisterPushDeviceOptions = {},\n ): Promise<{ ok: boolean; seq: number }> {\n const {\n platform,\n deviceType,\n browser,\n browserVersion,\n pushEnabled = true,\n transactionId,\n } = opts;\n return this.submit(\n \"account_device\",\n {\n id: deviceId,\n account_seq: accountSeq,\n push_token: pushToken,\n push_enabled: pushEnabled,\n ...(platform ? { platform } : {}),\n ...(deviceType ? { device_type: deviceType } : {}),\n ...(browser ? { browser } : {}),\n ...(browserVersion\n ? { browser_version: browserVersion }\n : {}),\n },\n { transactionId },\n );\n }\n\n /** \uB514\uBC14\uC774\uC2A4 \uB808\uCF54\uB4DC\uC758 \uD478\uC2DC \uD1A0\uD070\uC744 \uAC31\uC2E0\uD569\uB2C8\uB2E4. */\n updatePushDeviceToken(\n deviceSeq: number,\n pushToken: string,\n opts: { pushEnabled?: boolean; transactionId?: string } = {},\n ): Promise<{ ok: boolean; seq: number }> {\n const { pushEnabled = true, transactionId } = opts;\n return this.submit(\n \"account_device\",\n {\n seq: deviceSeq,\n push_token: pushToken,\n push_enabled: pushEnabled,\n },\n { transactionId },\n );\n }\n\n /** \uB514\uBC14\uC774\uC2A4\uC758 \uD478\uC2DC \uC218\uC2E0\uC744 \uBE44\uD65C\uC131\uD654\uD569\uB2C8\uB2E4. */\n disablePushDevice(\n deviceSeq: number,\n opts: { transactionId?: string } = {},\n ): Promise<{ ok: boolean; seq: number }> {\n return this.submit(\n \"account_device\",\n { seq: deviceSeq, push_enabled: false },\n { transactionId: opts.transactionId },\n );\n }\n };\n}\n"],
5
+ "mappings": "AAoBO,SAASA,EAAkDC,EAAa,CAC3E,OAAO,cAA6BA,CAAK,CAOrC,KACIC,EACAC,EACAC,EAAmC,CAAC,EACC,CACrC,OAAO,KAAK,OAAOF,EAAYC,EAASC,CAAI,CAChD,CAKA,YACIC,EAA2B,CAAC,EACuB,CACnD,OAAO,KAAK,KAAQ,WAAYA,CAAM,CAC1C,CAGA,mBACIC,EACAC,EACAC,EACAJ,EAAkC,CAAC,EACE,CACrC,KAAM,CACF,SAAAK,EACA,WAAAC,EACA,QAAAC,EACA,eAAAC,EACA,YAAAC,EAAc,GACd,cAAAC,CACJ,EAAIV,EACJ,OAAO,KAAK,OACR,iBACA,CACI,GAAIG,EACJ,YAAaD,EACb,WAAYE,EACZ,aAAcK,EACd,GAAIJ,EAAW,CAAE,SAAAA,CAAS,EAAI,CAAC,EAC/B,GAAIC,EAAa,CAAE,YAAaA,CAAW,EAAI,CAAC,EAChD,GAAIC,EAAU,CAAE,QAAAA,CAAQ,EAAI,CAAC,EAC7B,GAAIC,EACE,CAAE,gBAAiBA,CAAe,EAClC,CAAC,CACX,EACA,CAAE,cAAAE,CAAc,CACpB,CACJ,CAGA,sBACIC,EACAP,EACAJ,EAA0D,CAAC,EACtB,CACrC,KAAM,CAAE,YAAAS,EAAc,GAAM,cAAAC,CAAc,EAAIV,EAC9C,OAAO,KAAK,OACR,iBACA,CACI,IAAKW,EACL,WAAYP,EACZ,aAAcK,CAClB,EACA,CAAE,cAAAC,CAAc,CACpB,CACJ,CAGA,kBACIC,EACAX,EAAmC,CAAC,EACC,CACrC,OAAO,KAAK,OACR,iBACA,CAAE,IAAKW,EAAW,aAAc,EAAM,EACtC,CAAE,cAAeX,EAAK,aAAc,CACxC,CACJ,CACJ,CACJ",
6
+ "names": ["PushMixin", "Base", "pushEntity", "payload", "opts", "params", "accountSeq", "deviceId", "pushToken", "platform", "deviceType", "browser", "browserVersion", "pushEnabled", "transactionId", "deviceSeq"]
7
+ }
@@ -1,5 +1,5 @@
1
- import type { SmtpSendRequest } from "../types.js";
2
- import type { GConstructor, EntityServerClientBase } from "../client/base.js";
1
+ import type { SmtpSendRequest } from "../../types.js";
2
+ import type { GConstructor, EntityServerClientBase } from "../../client/base.js";
3
3
  export declare function SmtpMixin<TBase extends GConstructor<EntityServerClientBase>>(Base: TBase): {
4
4
  new (...args: any[]): {
5
5
  /** SMTP로 메일을 발송합니다. */
@@ -12,6 +12,8 @@ export declare function SmtpMixin<TBase extends GConstructor<EntityServerClientB
12
12
  ok: boolean;
13
13
  status: string;
14
14
  }>;
15
+ /** SMTP 템플릿 미리보기 HTML을 반환합니다. */
16
+ smtpTemplatePreview(templatePath: string): Promise<string>;
15
17
  baseUrl: string;
16
18
  token: string;
17
19
  anonymousPacketToken: string;
@@ -32,7 +34,7 @@ export declare function SmtpMixin<TBase extends GConstructor<EntityServerClientB
32
34
  _refreshTimer: ReturnType<typeof setTimeout> | null;
33
35
  _csrfRefreshTimer: ReturnType<typeof setTimeout> | null;
34
36
  _csrfRefreshPromise: Promise<string> | null;
35
- configure(options: Partial<import("../types.js").EntityServerClientOptions>): void;
37
+ configure(options: Partial<import("../../types.js").EntityServerClientOptions>): void;
36
38
  setToken(token: string): void;
37
39
  setAnonymousPacketToken(token: string): void;
38
40
  setApiKey(apiKey: string): void;
@@ -50,10 +52,16 @@ export declare function SmtpMixin<TBase extends GConstructor<EntityServerClientB
50
52
  stopCsrfRefresh(): void;
51
53
  _scheduleCsrfRefresh(expiresIn: number): void;
52
54
  refreshCsrfToken(): Promise<string>;
53
- _applyCsrfHealth(csrf?: import("../types.js").EntityServerClientHealthCsrf | null): void;
55
+ _applyCsrfHealth(csrf?: import("../../types.js").EntityServerClientHealthCsrf | null): void;
54
56
  readRequestBody<T = Record<string, unknown>>(body: ArrayBuffer | Uint8Array | string | T | null | undefined, contentType?: string, requireEncrypted?: boolean): T;
55
- get _reqOpts(): import("../client/request.js").RequestOptions;
56
- requestJson<T>(method: string, path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
57
+ get _reqOpts(): import("../../client/request.js").RequestOptions;
58
+ get http(): {
59
+ get<T>(path: string, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
60
+ post<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
61
+ put<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
62
+ patch<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
63
+ delete<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
64
+ };
57
65
  requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
58
66
  requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
59
67
  requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
@@ -0,0 +1,2 @@
1
+ function o(t){return class extends t{smtpSend(e){return this._request("POST","/v1/smtp/send",e)}smtpStatus(e){return this._request("POST",`/v1/smtp/status/${e}`,{})}smtpTemplatePreview(e){const s=e.split("/").map(encodeURIComponent).join("/");return fetch(`${this.baseUrl}/v1/smtp/template/${s}`,{credentials:"include"}).then(n=>n.text())}}}export{o as SmtpMixin};
2
+ //# sourceMappingURL=smtp.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/mixins/server/smtp.ts"],
4
+ "sourcesContent": ["import type { SmtpSendRequest } from \"../../types.js\";\nimport type {\n GConstructor,\n EntityServerClientBase,\n} from \"../../client/base.js\";\n\nexport function SmtpMixin<TBase extends GConstructor<EntityServerClientBase>>(\n Base: TBase,\n) {\n return class SmtpMixinClass extends Base {\n // \u2500\u2500\u2500 SMTP \uBA54\uC77C \uBC1C\uC1A1 \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 /** SMTP\uB85C \uBA54\uC77C\uC744 \uBC1C\uC1A1\uD569\uB2C8\uB2E4. */\n smtpSend(req: SmtpSendRequest): Promise<{ ok: boolean; seq: number }> {\n return this._request(\"POST\", \"/v1/smtp/send\", req);\n }\n\n /** SMTP \uBC1C\uC1A1 \uC0C1\uD0DC\uB97C \uC870\uD68C\uD569\uB2C8\uB2E4. */\n smtpStatus(seq: number): Promise<{ ok: boolean; status: string }> {\n return this._request(\"POST\", `/v1/smtp/status/${seq}`, {});\n }\n\n /** SMTP \uD15C\uD50C\uB9BF \uBBF8\uB9AC\uBCF4\uAE30 HTML\uC744 \uBC18\uD658\uD569\uB2C8\uB2E4. */\n smtpTemplatePreview(templatePath: string): Promise<string> {\n const encoded = templatePath\n .split(\"/\")\n .map(encodeURIComponent)\n .join(\"/\");\n return fetch(`${this.baseUrl}/v1/smtp/template/${encoded}`, {\n credentials: \"include\",\n }).then((r) => r.text());\n }\n };\n}\n"],
5
+ "mappings": "AAMO,SAASA,EACZC,EACF,CACE,OAAO,cAA6BA,CAAK,CAIrC,SAASC,EAA6D,CAClE,OAAO,KAAK,SAAS,OAAQ,gBAAiBA,CAAG,CACrD,CAGA,WAAWC,EAAuD,CAC9D,OAAO,KAAK,SAAS,OAAQ,mBAAmBA,CAAG,GAAI,CAAC,CAAC,CAC7D,CAGA,oBAAoBC,EAAuC,CACvD,MAAMC,EAAUD,EACX,MAAM,GAAG,EACT,IAAI,kBAAkB,EACtB,KAAK,GAAG,EACb,OAAO,MAAM,GAAG,KAAK,OAAO,qBAAqBC,CAAO,GAAI,CACxD,YAAa,SACjB,CAAC,EAAE,KAAMC,GAAMA,EAAE,KAAK,CAAC,CAC3B,CACJ,CACJ",
6
+ "names": ["SmtpMixin", "Base", "req", "seq", "templatePath", "encoded", "r"]
7
+ }
@@ -0,0 +1,66 @@
1
+ import type { GConstructor, EntityServerClientBase } from "../../client/base.js";
2
+ export declare function TransactionMixin<TBase extends GConstructor<EntityServerClientBase>>(Base: TBase): {
3
+ new (...args: any[]): {
4
+ /** 트랜잭션을 시작하고 transaction_id를 반환합니다. */
5
+ transactionStart<T = unknown>(body?: Record<string, unknown>): Promise<T>;
6
+ /** 지정한 트랜잭션을 커밋합니다. */
7
+ transactionCommit<T = unknown>(transactionId: string): Promise<T>;
8
+ /** 지정한 트랜잭션을 롤백합니다. */
9
+ transactionRollback<T = unknown>(transactionId: string): Promise<T>;
10
+ baseUrl: string;
11
+ token: string;
12
+ anonymousPacketToken: string;
13
+ apiKey: string;
14
+ hmacSecret: string;
15
+ encryptRequests: boolean;
16
+ csrfEnabled: boolean;
17
+ csrfToken: string;
18
+ csrfHeaderName: string;
19
+ csrfRefreshPath: string;
20
+ csrfRefreshBuffer: number;
21
+ activeTxId: string | null;
22
+ keepSession: boolean;
23
+ refreshBuffer: number;
24
+ onTokenRefreshed?: (accessToken: string, expiresIn: number) => void;
25
+ onSessionExpired?: (error: Error) => void;
26
+ _sessionRefreshToken: string | null;
27
+ _refreshTimer: ReturnType<typeof setTimeout> | null;
28
+ _csrfRefreshTimer: ReturnType<typeof setTimeout> | null;
29
+ _csrfRefreshPromise: Promise<string> | null;
30
+ configure(options: Partial<import("../../types.js").EntityServerClientOptions>): void;
31
+ setToken(token: string): void;
32
+ setAnonymousPacketToken(token: string): void;
33
+ setApiKey(apiKey: string): void;
34
+ setHmacSecret(secret: string): void;
35
+ setEncryptRequests(value: boolean): void;
36
+ setCsrfToken(token: string): void;
37
+ setCsrfEnabled(enabled: boolean): void;
38
+ _scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
39
+ access_token: string;
40
+ expires_in: number;
41
+ }>): void;
42
+ _clearRefreshTimer(): void;
43
+ stopKeepSession(): void;
44
+ _clearCsrfRefreshTimer(): void;
45
+ stopCsrfRefresh(): void;
46
+ _scheduleCsrfRefresh(expiresIn: number): void;
47
+ refreshCsrfToken(): Promise<string>;
48
+ _applyCsrfHealth(csrf?: import("../../types.js").EntityServerClientHealthCsrf | null): void;
49
+ readRequestBody<T = Record<string, unknown>>(body: ArrayBuffer | Uint8Array | string | T | null | undefined, contentType?: string, requireEncrypted?: boolean): T;
50
+ get _reqOpts(): import("../../client/request.js").RequestOptions;
51
+ get http(): {
52
+ get<T>(path: string, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
53
+ post<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
54
+ put<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
55
+ patch<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
56
+ delete<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
57
+ };
58
+ requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
59
+ requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
60
+ requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
61
+ _request<T>(method: string, path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
62
+ _requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
63
+ _requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
64
+ _requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
65
+ };
66
+ } & TBase;
@@ -0,0 +1,2 @@
1
+ function s(t){return class extends t{transactionStart(n){return this._request("POST","/v1/transaction/start",n??{})}transactionCommit(n){return this._request("POST",`/v1/transaction/commit/${encodeURIComponent(n)}`,{})}transactionRollback(n){return this._request("POST",`/v1/transaction/rollback/${encodeURIComponent(n)}`,{})}}}export{s as TransactionMixin};
2
+ //# sourceMappingURL=transaction.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/mixins/server/transaction.ts"],
4
+ "sourcesContent": ["import type {\n GConstructor,\n EntityServerClientBase,\n} from \"../../client/base.js\";\n\nexport function TransactionMixin<\n TBase extends GConstructor<EntityServerClientBase>,\n>(Base: TBase) {\n return class TransactionMixinClass extends Base {\n /** \uD2B8\uB79C\uC7AD\uC158\uC744 \uC2DC\uC791\uD558\uACE0 transaction_id\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4. */\n transactionStart<T = unknown>(\n body?: Record<string, unknown>,\n ): Promise<T> {\n return this._request(\"POST\", \"/v1/transaction/start\", body ?? {});\n }\n\n /** \uC9C0\uC815\uD55C \uD2B8\uB79C\uC7AD\uC158\uC744 \uCEE4\uBC0B\uD569\uB2C8\uB2E4. */\n transactionCommit<T = unknown>(transactionId: string): Promise<T> {\n return this._request(\n \"POST\",\n `/v1/transaction/commit/${encodeURIComponent(transactionId)}`,\n {},\n );\n }\n\n /** \uC9C0\uC815\uD55C \uD2B8\uB79C\uC7AD\uC158\uC744 \uB864\uBC31\uD569\uB2C8\uB2E4. */\n transactionRollback<T = unknown>(transactionId: string): Promise<T> {\n return this._request(\n \"POST\",\n `/v1/transaction/rollback/${encodeURIComponent(transactionId)}`,\n {},\n );\n }\n };\n}\n"],
5
+ "mappings": "AAKO,SAASA,EAEdC,EAAa,CACX,OAAO,cAAoCA,CAAK,CAE5C,iBACIC,EACU,CACV,OAAO,KAAK,SAAS,OAAQ,wBAAyBA,GAAQ,CAAC,CAAC,CACpE,CAGA,kBAA+BC,EAAmC,CAC9D,OAAO,KAAK,SACR,OACA,0BAA0B,mBAAmBA,CAAa,CAAC,GAC3D,CAAC,CACL,CACJ,CAGA,oBAAiCA,EAAmC,CAChE,OAAO,KAAK,SACR,OACA,4BAA4B,mBAAmBA,CAAa,CAAC,GAC7D,CAAC,CACL,CACJ,CACJ,CACJ",
6
+ "names": ["TransactionMixin", "Base", "body", "transactionId"]
7
+ }
@@ -1,5 +1,5 @@
1
- import type { QRCodeOptions, BarcodeOptions, Pdf2PngOptions } from "../types.js";
2
- import type { GConstructor, EntityServerClientBase } from "../client/base.js";
1
+ import type { QRCodeOptions, BarcodeOptions, Pdf2PngOptions } from "../../types.js";
2
+ import type { GConstructor, EntityServerClientBase } from "../../client/base.js";
3
3
  export declare function UtilsMixin<TBase extends GConstructor<EntityServerClientBase>>(Base: TBase): {
4
4
  new (...args: any[]): {
5
5
  addressSido<T = unknown>(): Promise<T>;
@@ -83,7 +83,7 @@ export declare function UtilsMixin<TBase extends GConstructor<EntityServerClient
83
83
  _refreshTimer: ReturnType<typeof setTimeout> | null;
84
84
  _csrfRefreshTimer: ReturnType<typeof setTimeout> | null;
85
85
  _csrfRefreshPromise: Promise<string> | null;
86
- configure(options: Partial<import("../types.js").EntityServerClientOptions>): void;
86
+ configure(options: Partial<import("../../types.js").EntityServerClientOptions>): void;
87
87
  setToken(token: string): void;
88
88
  setAnonymousPacketToken(token: string): void;
89
89
  setApiKey(apiKey: string): void;
@@ -101,10 +101,16 @@ export declare function UtilsMixin<TBase extends GConstructor<EntityServerClient
101
101
  stopCsrfRefresh(): void;
102
102
  _scheduleCsrfRefresh(expiresIn: number): void;
103
103
  refreshCsrfToken(): Promise<string>;
104
- _applyCsrfHealth(csrf?: import("../types.js").EntityServerClientHealthCsrf | null): void;
104
+ _applyCsrfHealth(csrf?: import("../../types.js").EntityServerClientHealthCsrf | null): void;
105
105
  readRequestBody<T = Record<string, unknown>>(body: ArrayBuffer | Uint8Array | string | T | null | undefined, contentType?: string, requireEncrypted?: boolean): T;
106
- get _reqOpts(): import("../client/request.js").RequestOptions;
107
- requestJson<T>(method: string, path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
106
+ get _reqOpts(): import("../../client/request.js").RequestOptions;
107
+ get http(): {
108
+ get<T>(path: string, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
109
+ post<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
110
+ put<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
111
+ patch<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
112
+ delete<T>(path: string, body?: unknown, withAuth?: boolean, extraHeaders?: Record<string, string>): Promise<T>;
113
+ };
108
114
  requestBinary(method: string, path: string, body?: unknown, withAuth?: boolean): Promise<ArrayBuffer>;
109
115
  requestForm<T>(method: string, path: string, form: FormData, withAuth?: boolean): Promise<T>;
110
116
  requestFormBinary(method: string, path: string, form: FormData, withAuth?: boolean): Promise<ArrayBuffer>;
@@ -0,0 +1,2 @@
1
+ function u(a){return class extends a{addressSido(){return this.http.get("/v1/utils/address/sido",!1)}addressSigungu(e){const r=new URLSearchParams({sido:e.sido}).toString();return this.http.get(`/v1/utils/address/sigungu?${r}`,!1)}addressDong(e){const r=new URLSearchParams({sido:e.sido,sigungu:e.sigungu}).toString();return this.http.get(`/v1/utils/address/dong?${r}`,!1)}addressClean(e){const r=new URLSearchParams({q:e.q}).toString();return this.http.get(`/v1/utils/address/clean?${r}`,!1)}qrcode(e,r={}){return this._requestBinary("POST","/v1/utils/qrcode",{content:e,...r})}qrcodeBase64(e,r={}){return this._request("POST","/v1/utils/qrcode/base64",{content:e,...r})}qrcodeText(e,r={}){return this._request("POST","/v1/utils/qrcode/text",{content:e,...r})}barcode(e,r={}){return this._requestBinary("POST","/v1/utils/barcode",{content:e,...r})}pdf2png(e,r={}){const s=new FormData;s.append("file",new Blob([e],{type:"application/pdf"}),"document.pdf");const t=new URLSearchParams;r.dpi!=null&&t.set("dpi",String(r.dpi)),r.firstPage!=null&&t.set("first_page",String(r.firstPage)),r.lastPage!=null&&t.set("last_page",String(r.lastPage));const n=t.toString(),i="/v1/utils/pdf2png"+(n?`?${n}`:"");return this._requestFormBinary("POST",i,s)}pdf2pngByFileSeq(e,r={}){return this.requestBinary("POST",`/v1/utils/pdf2png/${e}`,r)}pdf2jpg(e,r={}){const s=new FormData;s.append("file",new Blob([e],{type:"application/pdf"}),"document.pdf");const t=new URLSearchParams;r.dpi!=null&&t.set("dpi",String(r.dpi)),r.firstPage!=null&&t.set("first_page",String(r.firstPage)),r.lastPage!=null&&t.set("last_page",String(r.lastPage));const n=t.toString(),i="/v1/utils/pdf2jpg"+(n?`?${n}`:"");return this._requestFormBinary("POST",i,s)}pdf2jpgByFileSeq(e,r={}){return this.requestBinary("POST",`/v1/utils/pdf2jpg/${e}`,r)}}}export{u as UtilsMixin};
2
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/mixins/server/utils.ts"],
4
+ "sourcesContent": ["import type {\n QRCodeOptions,\n BarcodeOptions,\n Pdf2PngOptions,\n} from \"../../types.js\";\nimport type { GConstructor, EntityServerClientBase } from \"../../client/base.js\";\n\nexport function UtilsMixin<TBase extends GConstructor<EntityServerClientBase>>(\n Base: TBase,\n) {\n return class UtilsMixinClass extends Base {\n addressSido<T = unknown>(): Promise<T> {\n return this.http.get(\n \"/v1/utils/address/sido\",\n false,\n );\n }\n\n addressSigungu<T = unknown>(query: { sido: string }): Promise<T> {\n const qs = new URLSearchParams({ sido: query.sido }).toString();\n return this.http.get(\n `/v1/utils/address/sigungu?${qs}`,\n false,\n );\n }\n\n addressDong<T = unknown>(query: {\n sido: string;\n sigungu: string;\n }): Promise<T> {\n const qs = new URLSearchParams({\n sido: query.sido,\n sigungu: query.sigungu,\n }).toString();\n return this.http.get(\n `/v1/utils/address/dong?${qs}`,\n false,\n );\n }\n\n addressClean<T = unknown>(query: { q: string }): Promise<T> {\n const qs = new URLSearchParams({ q: query.q }).toString();\n return this.http.get(\n `/v1/utils/address/clean?${qs}`,\n false,\n );\n }\n\n // \u2500\u2500\u2500 Utils (QR / \uBC14\uCF54\uB4DC) \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 * QR \uCF54\uB4DC PNG\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4. `ArrayBuffer`\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n *\n * ```ts\n * const buf = await client.qrcode(\"https://example.com\");\n * const blob = new Blob([buf], { type: \"image/png\" });\n * img.src = URL.createObjectURL(blob);\n * ```\n */\n qrcode(\n content: string,\n opts: QRCodeOptions = {},\n ): Promise<ArrayBuffer> {\n return this._requestBinary(\"POST\", \"/v1/utils/qrcode\", {\n content,\n ...opts,\n });\n }\n\n /**\n * QR \uCF54\uB4DC\uB97C base64/data URI JSON\uC73C\uB85C \uBC18\uD658\uD569\uB2C8\uB2E4.\n *\n * ```ts\n * const { data_uri } = await client.qrcodeBase64(\"https://example.com\");\n * img.src = data_uri;\n * ```\n */\n qrcodeBase64(\n content: string,\n opts: QRCodeOptions = {},\n ): Promise<{ ok: boolean; data: string; data_uri: string }> {\n return this._request(\"POST\", \"/v1/utils/qrcode/base64\", {\n content,\n ...opts,\n });\n }\n\n /** QR \uCF54\uB4DC\uB97C ASCII \uC544\uD2B8 \uD14D\uC2A4\uD2B8\uB85C \uBC18\uD658\uD569\uB2C8\uB2E4. */\n qrcodeText(\n content: string,\n opts: QRCodeOptions = {},\n ): Promise<{ ok: boolean; text: string }> {\n return this._request(\"POST\", \"/v1/utils/qrcode/text\", {\n content,\n ...opts,\n });\n }\n\n /**\n * \uBC14\uCF54\uB4DC PNG\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4. `ArrayBuffer`\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n *\n * ```ts\n * const buf = await client.barcode(\"1234567890128\", { type: \"ean13\" });\n * ```\n */\n barcode(\n content: string,\n opts: BarcodeOptions = {},\n ): Promise<ArrayBuffer> {\n return this._requestBinary(\"POST\", \"/v1/utils/barcode\", {\n content,\n ...opts,\n });\n }\n\n /**\n * PDF\uB97C PNG \uC774\uBBF8\uC9C0\uB85C \uBCC0\uD658\uD569\uB2C8\uB2E4.\n *\n * \uB2E8\uC77C \uD398\uC774\uC9C0 \uC694\uCCAD\uC774\uBA74 `image/png` ArrayBuffer,\n * \uB2E4\uC911 \uD398\uC774\uC9C0 \uC694\uCCAD\uC774\uBA74 `application/zip` ArrayBuffer\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n *\n * ```ts\n * const buf = await client.pdf2png(pdfArrayBuffer, { dpi: 200 });\n * ```\n */\n pdf2png(\n pdfData: ArrayBuffer | Uint8Array<ArrayBuffer>,\n opts: Pdf2PngOptions = {},\n ): Promise<ArrayBuffer> {\n const form = new FormData();\n form.append(\n \"file\",\n new Blob([pdfData], { type: \"application/pdf\" }),\n \"document.pdf\",\n );\n const params = new URLSearchParams();\n if (opts.dpi != null) params.set(\"dpi\", String(opts.dpi));\n if (opts.firstPage != null)\n params.set(\"first_page\", String(opts.firstPage));\n if (opts.lastPage != null)\n params.set(\"last_page\", String(opts.lastPage));\n const qs = params.toString();\n const path = \"/v1/utils/pdf2png\" + (qs ? `?${qs}` : \"\");\n return this._requestFormBinary(\"POST\", path, form);\n }\n\n pdf2pngByFileSeq(\n fileSeq: number,\n opts: Pdf2PngOptions = {},\n ): Promise<ArrayBuffer> {\n return this.requestBinary(\n \"POST\",\n `/v1/utils/pdf2png/${fileSeq}`,\n opts,\n );\n }\n\n pdf2jpg(\n pdfData: ArrayBuffer | Uint8Array<ArrayBuffer>,\n opts: Pdf2PngOptions = {},\n ): Promise<ArrayBuffer> {\n const form = new FormData();\n form.append(\n \"file\",\n new Blob([pdfData], { type: \"application/pdf\" }),\n \"document.pdf\",\n );\n const params = new URLSearchParams();\n if (opts.dpi != null) params.set(\"dpi\", String(opts.dpi));\n if (opts.firstPage != null)\n params.set(\"first_page\", String(opts.firstPage));\n if (opts.lastPage != null)\n params.set(\"last_page\", String(opts.lastPage));\n const qs = params.toString();\n const path = \"/v1/utils/pdf2jpg\" + (qs ? `?${qs}` : \"\");\n return this._requestFormBinary(\"POST\", path, form);\n }\n\n pdf2jpgByFileSeq(\n fileSeq: number,\n opts: Pdf2PngOptions = {},\n ): Promise<ArrayBuffer> {\n return this.requestBinary(\n \"POST\",\n `/v1/utils/pdf2jpg/${fileSeq}`,\n opts,\n );\n }\n };\n}\n"],
5
+ "mappings": "AAOO,SAASA,EACZC,EACF,CACE,OAAO,cAA8BA,CAAK,CACtC,aAAuC,CACnC,OAAO,KAAK,KAAK,IACb,yBACA,EACJ,CACJ,CAEA,eAA4BC,EAAqC,CAC7D,MAAMC,EAAK,IAAI,gBAAgB,CAAE,KAAMD,EAAM,IAAK,CAAC,EAAE,SAAS,EAC9D,OAAO,KAAK,KAAK,IACb,6BAA6BC,CAAE,GAC/B,EACJ,CACJ,CAEA,YAAyBD,EAGV,CACX,MAAMC,EAAK,IAAI,gBAAgB,CAC3B,KAAMD,EAAM,KACZ,QAASA,EAAM,OACnB,CAAC,EAAE,SAAS,EACZ,OAAO,KAAK,KAAK,IACb,0BAA0BC,CAAE,GAC5B,EACJ,CACJ,CAEA,aAA0BD,EAAkC,CACxD,MAAMC,EAAK,IAAI,gBAAgB,CAAE,EAAGD,EAAM,CAAE,CAAC,EAAE,SAAS,EACxD,OAAO,KAAK,KAAK,IACb,2BAA2BC,CAAE,GAC7B,EACJ,CACJ,CAaA,OACIC,EACAC,EAAsB,CAAC,EACH,CACpB,OAAO,KAAK,eAAe,OAAQ,mBAAoB,CACnD,QAAAD,EACA,GAAGC,CACP,CAAC,CACL,CAUA,aACID,EACAC,EAAsB,CAAC,EACiC,CACxD,OAAO,KAAK,SAAS,OAAQ,0BAA2B,CACpD,QAAAD,EACA,GAAGC,CACP,CAAC,CACL,CAGA,WACID,EACAC,EAAsB,CAAC,EACe,CACtC,OAAO,KAAK,SAAS,OAAQ,wBAAyB,CAClD,QAAAD,EACA,GAAGC,CACP,CAAC,CACL,CASA,QACID,EACAC,EAAuB,CAAC,EACJ,CACpB,OAAO,KAAK,eAAe,OAAQ,oBAAqB,CACpD,QAAAD,EACA,GAAGC,CACP,CAAC,CACL,CAYA,QACIC,EACAD,EAAuB,CAAC,EACJ,CACpB,MAAME,EAAO,IAAI,SACjBA,EAAK,OACD,OACA,IAAI,KAAK,CAACD,CAAO,EAAG,CAAE,KAAM,iBAAkB,CAAC,EAC/C,cACJ,EACA,MAAME,EAAS,IAAI,gBACfH,EAAK,KAAO,MAAMG,EAAO,IAAI,MAAO,OAAOH,EAAK,GAAG,CAAC,EACpDA,EAAK,WAAa,MAClBG,EAAO,IAAI,aAAc,OAAOH,EAAK,SAAS,CAAC,EAC/CA,EAAK,UAAY,MACjBG,EAAO,IAAI,YAAa,OAAOH,EAAK,QAAQ,CAAC,EACjD,MAAMF,EAAKK,EAAO,SAAS,EACrBC,EAAO,qBAAuBN,EAAK,IAAIA,CAAE,GAAK,IACpD,OAAO,KAAK,mBAAmB,OAAQM,EAAMF,CAAI,CACrD,CAEA,iBACIG,EACAL,EAAuB,CAAC,EACJ,CACpB,OAAO,KAAK,cACR,OACA,qBAAqBK,CAAO,GAC5BL,CACJ,CACJ,CAEA,QACIC,EACAD,EAAuB,CAAC,EACJ,CACpB,MAAME,EAAO,IAAI,SACjBA,EAAK,OACD,OACA,IAAI,KAAK,CAACD,CAAO,EAAG,CAAE,KAAM,iBAAkB,CAAC,EAC/C,cACJ,EACA,MAAME,EAAS,IAAI,gBACfH,EAAK,KAAO,MAAMG,EAAO,IAAI,MAAO,OAAOH,EAAK,GAAG,CAAC,EACpDA,EAAK,WAAa,MAClBG,EAAO,IAAI,aAAc,OAAOH,EAAK,SAAS,CAAC,EAC/CA,EAAK,UAAY,MACjBG,EAAO,IAAI,YAAa,OAAOH,EAAK,QAAQ,CAAC,EACjD,MAAMF,EAAKK,EAAO,SAAS,EACrBC,EAAO,qBAAuBN,EAAK,IAAIA,CAAE,GAAK,IACpD,OAAO,KAAK,mBAAmB,OAAQM,EAAMF,CAAI,CACrD,CAEA,iBACIG,EACAL,EAAuB,CAAC,EACJ,CACpB,OAAO,KAAK,cACR,OACA,qBAAqBK,CAAO,GAC5BL,CACJ,CACJ,CACJ,CACJ",
6
+ "names": ["UtilsMixin", "Base", "query", "qs", "content", "opts", "pdfData", "form", "params", "path", "fileSeq"]
7
+ }
package/dist/react.d.ts CHANGED
@@ -1 +1,3 @@
1
+ export * from "./hooks/useEntityClient.js";
1
2
  export * from "./hooks/useEntityServer.js";
3
+ export * from "./hooks/useEntityAppServer.js";
package/dist/react.js CHANGED
@@ -1,2 +1,2 @@
1
- import{useCallback as C,useEffect as fe,useMemo as qe,useRef as Te,useState as he}from"react";function te(r){let n=import.meta;if(n?.env?.[r]!=null)return n.env[r];let e=globalThis.process;if(e?.env?.[r]!=null)return e.env[r]}function T(r){return Object.entries(r).filter(([,n])=>n!=null).map(([n,e])=>`${encodeURIComponent(n==="orderBy"?"order_by":n)}=${encodeURIComponent(String(e))}`).join("&")}import{xchacha20poly1305 as ne}from"@noble/ciphers/chacha";import{sha256 as ye}from"@noble/hashes/sha2";import{hkdf as Pe}from"@noble/hashes/hkdf";var G=32,J=2,M=14,S=24,we=16,be="entity-server:hkdf:v1",ve="entity-server:packet-encryption";function x(r){return r instanceof Uint8Array?r:new Uint8Array(r)}function re(r,n=ve){return Pe(ye,new TextEncoder().encode(r),new TextEncoder().encode(be),new TextEncoder().encode(n),G)}function se(r,n=J,e=M){let t=x(r);return t.length<G?n:n+t[G-1]%e}function ie(r,n,e=J,t=M){let s=x(r),i=x(n),o=se(i,e,t),a=crypto.getRandomValues(new Uint8Array(o)),u=crypto.getRandomValues(new Uint8Array(S)),f=ne(i,u).encrypt(s),d=new Uint8Array(o+S+f.length);return d.set(a,0),d.set(u,o),d.set(f,o+S),d}function oe(r,n,e=J,t=M){let s=x(r),i=x(n),o=se(i,e,t);if(s.length<o+S+we)throw new Error("Encrypted packet too short");let a=s.slice(o,o+S),u=s.slice(o+S);return ne(i,a).decrypt(u)}function q(r,n){return re(r||n)}function ae(r,n){return ie(r,n)}function A(r,n){let e=oe(r,n);return JSON.parse(new TextDecoder().decode(e))}function ue(r,n,e,t){let s=n.toLowerCase().includes("application/octet-stream");if(e&&!s)throw new Error("Encrypted request required: Content-Type must be application/octet-stream");if(s){if(r==null)throw new Error("Encrypted request body is empty");if(r instanceof ArrayBuffer)return A(r,t);if(r instanceof Uint8Array){let i=r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength);return A(i,t)}throw new Error("Encrypted request body must be ArrayBuffer or Uint8Array")}return r==null||r===""?{}:typeof r=="string"?JSON.parse(r):r}import{sha256 as Ee}from"@noble/hashes/sha2";import{hmac as Se}from"@noble/hashes/hmac";function ce(r,n,e,t,s){let i=String(Math.floor(Date.now()/1e3)),o=crypto.randomUUID(),a=new TextEncoder().encode(`${r}|${n}|${i}|${o}|`),u=new Uint8Array(a.length+e.length);u.set(a,0),u.set(e,a.length);let f=[...Se(Ee,new TextEncoder().encode(s),u)].map(d=>d.toString(16).padStart(2,"0")).join("");return{"X-API-Key":t,"X-Timestamp":i,"X-Nonce":o,"X-Signature":f}}function Re(r){return r.hmacSecret||r.token||r.anonymousPacketToken}function _e(r){return r!=="GET"&&r!=="HEAD"&&r!=="OPTIONS"}function xe(r,n){return r===403&&/csrf/i.test(n)?!0:/csrf/i.test(n)&&/expired|token validation failed/i.test(n)}async function de(r){if((r.headers.get("Content-Type")??"").includes("application/json")){let t=await r.json().catch(()=>null);if(t?.error)return t.error;if(t?.message)return t.message}return await r.text().catch(()=>"")||`HTTP ${r.status}`}async function H(r,n,e,t,s=!0,i={},o=!0){let{baseUrl:a,token:u,apiKey:h,hmacSecret:f,encryptRequests:d,anonymousPacketToken:p,csrfEnabled:$,csrfHeaderName:y,refreshCsrfToken:v}=r,E=s&&!!(h&&f),O=Re(r),_=$&&_e(n)&&!E,c=r.csrfToken,l="application/json",P=!u&&!E&&!!p,w=null;if(t!=null)if(d&&!!O&&n!=="GET"&&n!=="HEAD"){let g=q(f,u||p);w=ae(new TextEncoder().encode(JSON.stringify(t)),g),l="application/octet-stream"}else w=JSON.stringify(t);let ke=m=>{let g={"Content-Type":l,...i};if(!E&&s&&u&&(g.Authorization=`Bearer ${u}`),P&&(g["X-Packet-Token"]=p),_&&m&&(g[y]=m),E){let ge=w instanceof Uint8Array?w:typeof w=="string"?new TextEncoder().encode(w):new Uint8Array(0);Object.assign(g,ce(n,e,ge,h,f))}return g};_&&!c&&v&&(c=await v());let Y=m=>fetch(a+e,{method:n,headers:ke(m),...w!=null?{body:w}:{},credentials:"include"}),k=await Y(c);if(!k.ok){let m=await de(k.clone());if(_&&v&&xe(k.status,m))c=await v(),k=await Y(c);else{let g=new Error(m);throw g.status=k.status,g}}if(!k.ok){let m=new Error(await de(k));throw m.status=k.status,m}let ee=k.headers.get("Content-Type")??"";if(ee.includes("application/octet-stream")){let m=q(f,u||p);return A(await k.arrayBuffer(),m)}if(!ee.includes("application/json"))return await k.text();let U=await k.json();if(o&&!U.ok){let m=new Error(U.message??`EntityServer error (HTTP ${k.status})`);throw m.status=k.status,m}return U}var B=class{baseUrl;token;anonymousPacketToken;apiKey;hmacSecret;encryptRequests;csrfEnabled;csrfToken;csrfHeaderName;csrfRefreshPath;csrfRefreshBuffer;activeTxId=null;keepSession;refreshBuffer;onTokenRefreshed;onSessionExpired;_sessionRefreshToken=null;_refreshTimer=null;_csrfRefreshTimer=null;_csrfRefreshPromise=null;constructor(n={}){let e=te("VITE_ENTITY_SERVER_URL");this.baseUrl=(n.baseUrl??e??"").replace(/\/$/,""),this.token=n.token??"",this.anonymousPacketToken=n.anonymousPacketToken??"",this.apiKey=n.apiKey??"",this.hmacSecret=n.hmacSecret??"",this.encryptRequests=n.encryptRequests??!1,this.csrfEnabled=n.csrfEnabled??!1,this.csrfToken=n.csrfToken??"",this.csrfHeaderName=n.csrfHeaderName??"x-csrf-token",this.csrfRefreshPath=n.csrfRefreshPath??"/v1/csrf-token",this.csrfRefreshBuffer=n.csrfRefreshBuffer??60,this.keepSession=n.keepSession??!1,this.refreshBuffer=n.refreshBuffer??60,this.onTokenRefreshed=n.onTokenRefreshed,this.onSessionExpired=n.onSessionExpired}configure(n){typeof n.baseUrl=="string"&&(this.baseUrl=n.baseUrl.replace(/\/$/,"")),typeof n.token=="string"&&(this.token=n.token),typeof n.anonymousPacketToken=="string"&&(this.anonymousPacketToken=n.anonymousPacketToken),typeof n.encryptRequests=="boolean"&&(this.encryptRequests=n.encryptRequests),typeof n.csrfEnabled=="boolean"&&(this.csrfEnabled=n.csrfEnabled,n.csrfEnabled||(this.csrfToken="",this.stopCsrfRefresh())),typeof n.csrfToken=="string"&&(this.csrfToken=n.csrfToken),typeof n.csrfHeaderName=="string"&&(this.csrfHeaderName=n.csrfHeaderName),typeof n.csrfRefreshPath=="string"&&(this.csrfRefreshPath=n.csrfRefreshPath),typeof n.csrfRefreshBuffer=="number"&&(this.csrfRefreshBuffer=n.csrfRefreshBuffer),typeof n.apiKey=="string"&&(this.apiKey=n.apiKey),typeof n.hmacSecret=="string"&&(this.hmacSecret=n.hmacSecret),typeof n.keepSession=="boolean"&&(this.keepSession=n.keepSession),typeof n.refreshBuffer=="number"&&(this.refreshBuffer=n.refreshBuffer),n.onTokenRefreshed&&(this.onTokenRefreshed=n.onTokenRefreshed),n.onSessionExpired&&(this.onSessionExpired=n.onSessionExpired)}setToken(n){this.token=n}setAnonymousPacketToken(n){this.anonymousPacketToken=n}setApiKey(n){this.apiKey=n}setHmacSecret(n){this.hmacSecret=n}setEncryptRequests(n){this.encryptRequests=n}setCsrfToken(n){this.csrfToken=n}setCsrfEnabled(n){this.csrfEnabled=n,n||(this.csrfToken="",this.stopCsrfRefresh())}_scheduleKeepSession(n,e,t){this._clearRefreshTimer(),this._sessionRefreshToken=n;let s=Math.max((e-this.refreshBuffer)*1e3,0);this._refreshTimer=setTimeout(async()=>{if(this._sessionRefreshToken)try{let i=await t(this._sessionRefreshToken);this.onTokenRefreshed?.(i.access_token,i.expires_in),this._scheduleKeepSession(this._sessionRefreshToken,i.expires_in,t)}catch(i){this._clearRefreshTimer(),this.onSessionExpired?.(i instanceof Error?i:new Error(String(i)))}},s)}_clearRefreshTimer(){this._refreshTimer!==null&&(clearTimeout(this._refreshTimer),this._refreshTimer=null)}stopKeepSession(){this._clearRefreshTimer(),this._sessionRefreshToken=null}_clearCsrfRefreshTimer(){this._csrfRefreshTimer!==null&&(clearTimeout(this._csrfRefreshTimer),this._csrfRefreshTimer=null)}stopCsrfRefresh(){this._clearCsrfRefreshTimer(),this._csrfRefreshPromise=null}_scheduleCsrfRefresh(n){if(this._clearCsrfRefreshTimer(),!this.csrfEnabled||!this.csrfRefreshPath)return;let e=Math.max((n-this.csrfRefreshBuffer)*1e3,0);this._csrfRefreshTimer=setTimeout(()=>{this.refreshCsrfToken().catch(()=>{this._clearCsrfRefreshTimer()})},e)}async refreshCsrfToken(){return!this.csrfEnabled||!this.csrfRefreshPath?"":(this._csrfRefreshPromise||(this._csrfRefreshPromise=(async()=>{let n=await fetch(`${this.baseUrl}${this.csrfRefreshPath}`,{method:"GET",credentials:"include"});if(!n.ok){let s=await n.text().catch(()=>""),i=new Error(s||`HTTP ${n.status}`);throw i.status=n.status,i}let e=await n.json().catch(()=>null),t=e&&typeof e=="object"&&"data"in e?e.data??null:e;if(!t?.enabled||typeof t.token!="string")throw new Error("CSRF token refresh failed");return this._applyCsrfHealth(t),this.csrfToken})().finally(()=>{this._csrfRefreshPromise=null})),this._csrfRefreshPromise)}_applyCsrfHealth(n){if(!n?.enabled){this.setCsrfEnabled(!1);return}this.csrfEnabled=!0,typeof n.token=="string"&&(this.csrfToken=n.token),typeof n.headerName=="string"&&(this.csrfHeaderName=n.headerName),typeof n.refreshPath=="string"&&(this.csrfRefreshPath=n.refreshPath),typeof n.expiresIn=="number"&&n.expiresIn>0&&this._scheduleCsrfRefresh(n.expiresIn)}readRequestBody(n,e="application/json",t=!1){let s=q(this.hmacSecret,this.token||this.anonymousPacketToken);return ue(n,e,t,s)}get _reqOpts(){return{baseUrl:this.baseUrl,token:this.token,anonymousPacketToken:this.anonymousPacketToken,apiKey:this.apiKey,hmacSecret:this.hmacSecret,encryptRequests:this.encryptRequests,csrfEnabled:this.csrfEnabled,csrfToken:this.csrfToken,csrfHeaderName:this.csrfHeaderName,refreshCsrfToken:this.csrfEnabled?()=>this.refreshCsrfToken():null}}requestJson(n,e,t,s=!0,i){return H(this._reqOpts,n,e,t,s,i,!1)}requestBinary(n,e,t,s=!0){return this._requestBinary(n,e,t,s)}requestForm(n,e,t,s=!0){return this._requestForm(n,e,t,s)}requestFormBinary(n,e,t,s=!0){return this._requestFormBinary(n,e,t,s)}_request(n,e,t,s=!0,i){return H(this._reqOpts,n,e,t,s,i,!0)}async _requestBinary(n,e,t,s=!0){let i={"Content-Type":"application/json"};s&&this.token&&(i.Authorization=`Bearer ${this.token}`),this.apiKey&&(i["X-API-Key"]=this.apiKey);let o=await fetch(this.baseUrl+e,{method:n,headers:i,...t!=null?{body:JSON.stringify(t)}:{},credentials:"include"});if(!o.ok){let a=await o.text(),u=new Error(`HTTP ${o.status}: ${a}`);throw u.status=o.status,u}return o.arrayBuffer()}async _requestForm(n,e,t,s=!0){let i={};s&&this.token&&(i.Authorization=`Bearer ${this.token}`),this.apiKey&&(i["X-API-Key"]=this.apiKey);let o=await fetch(this.baseUrl+e,{method:n,headers:i,body:t,credentials:"include"}),a=await o.json();if(!a.ok){let u=new Error(a.message??`EntityServer error (HTTP ${o.status})`);throw u.status=o.status,u}return a}async _requestFormBinary(n,e,t,s=!0){let i={};s&&this.token&&(i.Authorization=`Bearer ${this.token}`),this.apiKey&&(i["X-API-Key"]=this.apiKey);let o=await fetch(this.baseUrl+e,{method:n,headers:i,body:t,credentials:"include"});if(!o.ok){let a=await o.text(),u=new Error(`HTTP ${o.status}: ${a}`);throw u.status=o.status,u}return o.arrayBuffer()}};function I(r){return class extends r{async checkHealth(){let t=await(await fetch(`${this.baseUrl}/v1/health`,{signal:AbortSignal.timeout(3e3),credentials:"include"})).json();return t.packet_encryption&&(this.encryptRequests=!0),typeof t.packet_token=="string"&&(this.anonymousPacketToken=t.packet_token),this._applyCsrfHealth(t.csrf),t}async login(e,t){let s=await this._request("POST","/v1/auth/login",{email:e,passwd:t},!1);return this.token=s.data.access_token,this.keepSession&&this._scheduleKeepSession(s.data.refresh_token,s.data.expires_in,i=>this.refreshToken(i)),s.data}async refreshToken(e){let t=await this._request("POST","/v1/auth/refresh",{refresh_token:e},!1);return this.token=t.data.access_token,this.keepSession&&this._scheduleKeepSession(e,t.data.expires_in,s=>this.refreshToken(s)),t.data}async logout(e){this.stopKeepSession();let t=await this._request("POST","/v1/auth/logout",{refresh_token:e},!1);return this.token="",t}me(){return this._request("GET","/v1/auth/me")}withdraw(e){return this._request("POST","/v1/auth/withdraw",e?{passwd:e}:{})}reactivate(e){return this._request("POST","/v1/auth/reactivate",e,!1)}}}function F(r){return class extends r{async transStart(){let e=await this._request("POST","/v1/transaction/start",void 0,!1);return this.activeTxId=e.transaction_id,this.activeTxId}transRollback(e){let t=e??this.activeTxId;return t?(this.activeTxId=null,this._request("POST",`/v1/transaction/rollback/${t}`)):Promise.reject(new Error("No active transaction. Call transStart() first."))}transCommit(e){let t=e??this.activeTxId;return t?(this.activeTxId=null,this._request("POST",`/v1/transaction/commit/${t}`)):Promise.reject(new Error("No active transaction. Call transStart() first."))}meta(e){return this._request("POST",`/v1/entity/${e}/meta`,{})}validate(e,t){return this.requestJson("POST",`/v1/entity/${e}/validate`,t)}get(e,t,s={}){let i=s.skipHooks?"?skipHooks=true":"";return this._request("GET",`/v1/entity/${e}/${t}${i}`)}find(e,t,s={}){let i=s.skipHooks?"?skipHooks=true":"";return this._request("POST",`/v1/entity/${e}/find${i}`,t??{})}list(e,t={}){let{conditions:s,fields:i,orderDir:o,orderBy:a,...u}=t,h={page:1,limit:20,...u};return a&&(h.orderBy=o==="DESC"?`-${a}`:a),i?.length&&(h.fields=i.join(",")),this._request("POST",`/v1/entity/${e}/list?${T(h)}`,s??{})}count(e,t){return this._request("POST",`/v1/entity/${e}/count`,t??{})}query(e,t){return this._request("POST",`/v1/entity/${e}/query`,t)}submit(e,t,s={}){let i=s.transactionId??this.activeTxId,o=i?{"X-Transaction-ID":i}:void 0,a=s.skipHooks?"?skipHooks=true":"";return this._request("POST",`/v1/entity/${e}/submit${a}`,t,!0,o)}delete(e,t,s={}){let i=new URLSearchParams;s.hard&&i.set("hard","true"),s.skipHooks&&i.set("skipHooks","true");let o=i.size?`?${i}`:"",a=s.transactionId??this.activeTxId,u=a?{"X-Transaction-ID":a}:void 0;return this._request("POST",`/v1/entity/${e}/delete/${t}${o}`,void 0,!0,u)}history(e,t,s={}){return this._request("GET",`/v1/entity/${e}/history/${t}?${T({page:1,limit:50,...s})}`)}rollback(e,t){return this._request("POST",`/v1/entity/${e}/rollback/${t}`)}}}function K(r){return class extends r{async fileUpload(e,t,s={}){let i=new FormData;return i.append("file",t,t instanceof File?t.name:"upload"),s.refSeq!=null&&i.append("ref_seq",String(s.refSeq)),s.isPublic!=null&&i.append("is_public",s.isPublic?"true":"false"),this._requestForm("POST",`/v1/files/${e}/upload`,i)}fileDownload(e,t){return this._requestBinary("POST",`/v1/files/${e}/download/${t}`,{})}fileDelete(e,t){return this._request("POST",`/v1/files/${e}/delete/${t}`,{})}fileList(e,t={}){return this._request("POST",`/v1/files/${e}/list`,t.refSeq?{ref_seq:t.refSeq}:{})}fileMeta(e,t){return this._request("POST",`/v1/files/${e}/meta/${t}`,{})}fileToken(e){return this._request("POST",`/v1/files/token/${e}`,{})}fileViewUrl(e,t={}){let s=t.download?"?download=true":"";return`${this.baseUrl}/v1/files/${e}${s}`}fileUrl(e){return`${this.baseUrl}/v1/files/${e}`}}}function L(r){return class extends r{push(e,t,s={}){return this.submit(e,t,s)}pushLogList(e={}){return this.list("push_log",e)}registerPushDevice(e,t,s,i={}){let{platform:o,deviceType:a,browser:u,browserVersion:h,pushEnabled:f=!0,transactionId:d}=i;return this.submit("account_device",{id:t,account_seq:e,push_token:s,push_enabled:f,...o?{platform:o}:{},...a?{device_type:a}:{},...u?{browser:u}:{},...h?{browser_version:h}:{}},{transactionId:d})}updatePushDeviceToken(e,t,s={}){let{pushEnabled:i=!0,transactionId:o}=s;return this.submit("account_device",{seq:e,push_token:t,push_enabled:i},{transactionId:o})}disablePushDevice(e,t={}){return this.submit("account_device",{seq:e,push_enabled:!1},{transactionId:t.transactionId})}}}function j(r){return class extends r{smtpSend(e){return this._request("POST","/v1/smtp/send",e)}smtpStatus(e){return this._request("POST",`/v1/smtp/status/${e}`,{})}}}function D(r){return class extends r{addressSido(){return this.requestJson("GET","/v1/utils/address/sido",void 0,!1)}addressSigungu(e){let t=new URLSearchParams({sido:e.sido}).toString();return this.requestJson("GET",`/v1/utils/address/sigungu?${t}`,void 0,!1)}addressDong(e){let t=new URLSearchParams({sido:e.sido,sigungu:e.sigungu}).toString();return this.requestJson("GET",`/v1/utils/address/dong?${t}`,void 0,!1)}addressClean(e){let t=new URLSearchParams({q:e.q}).toString();return this.requestJson("GET",`/v1/utils/address/clean?${t}`,void 0,!1)}qrcode(e,t={}){return this._requestBinary("POST","/v1/utils/qrcode",{content:e,...t})}qrcodeBase64(e,t={}){return this._request("POST","/v1/utils/qrcode/base64",{content:e,...t})}qrcodeText(e,t={}){return this._request("POST","/v1/utils/qrcode/text",{content:e,...t})}barcode(e,t={}){return this._requestBinary("POST","/v1/utils/barcode",{content:e,...t})}pdf2png(e,t={}){let s=new FormData;s.append("file",new Blob([e],{type:"application/pdf"}),"document.pdf");let i=new URLSearchParams;t.dpi!=null&&i.set("dpi",String(t.dpi)),t.firstPage!=null&&i.set("first_page",String(t.firstPage)),t.lastPage!=null&&i.set("last_page",String(t.lastPage));let o=i.toString(),a="/v1/utils/pdf2png"+(o?`?${o}`:"");return this._requestFormBinary("POST",a,s)}pdf2pngByFileSeq(e,t={}){return this.requestBinary("POST",`/v1/utils/pdf2png/${e}`,t)}pdf2jpg(e,t={}){let s=new FormData;s.append("file",new Blob([e],{type:"application/pdf"}),"document.pdf");let i=new URLSearchParams;t.dpi!=null&&i.set("dpi",String(t.dpi)),t.firstPage!=null&&i.set("first_page",String(t.firstPage)),t.lastPage!=null&&i.set("last_page",String(t.lastPage));let o=i.toString(),a="/v1/utils/pdf2jpg"+(o?`?${o}`:"");return this._requestFormBinary("POST",a,s)}pdf2jpgByFileSeq(e,t={}){return this.requestBinary("POST",`/v1/utils/pdf2jpg/${e}`,t)}}}function N(r){return class extends r{_adminPath(e){return`/v1/admin${e}`}_adminGet(e){return this.requestJson("GET",this._adminPath(e))}_adminPost(e,t){return this.requestJson("POST",this._adminPath(e),t)}_adminPut(e,t){return this.requestJson("PUT",this._adminPath(e),t)}_adminPatch(e,t){return this.requestJson("PATCH",this._adminPath(e),t)}_adminDelete(e,t){return this.requestJson("DELETE",this._adminPath(e),t)}listAdminEntities(){return this._adminGet("/entities")}getAdminErdSchema(){return this._adminGet("/erd/schema")}batchEnsureAdminEntities(e){return this._adminPost("/entities/batch-ensure",e)}createAdminEntityConfig(e,t){return this._adminPost(`/${e}/create`,t)}getAdminEntityConfig(e){return this._adminGet(`/${e}/config`)}updateAdminEntityConfig(e,t){return this._adminPut(`/${e}/config`,t)}validateAdminEntityConfig(e,t){return this._adminPost(t?`/${t}/validate`:"/entity/validate",e)}normalizeAdminEntityConfig(e,t){return this._adminPost(t?`/${t}/normalize`:"/entity/normalize",e)}getAdminEntityStats(e,t){return this._adminPost(`/${e}/stats`,t)}reindexAdminEntity(e){return this._adminPost(`/${e}/reindex`)}syncAdminEntitySchema(e){return this._adminPost(`/${e}/sync-schema`)}resetAdminEntity(e){return this._adminPost(`/${e}/reset`)}truncateAdminEntity(e){return this._adminPost(`/${e}/truncate`)}dropAdminEntity(e){return this._adminPost(`/${e}/drop`)}resetAllAdmin(e){return this._adminPost("/reset-all",e)}listAdminConfigs(){return this._adminGet("/configs")}getAdminConfig(e){return this._adminGet(`/configs/${e}`)}updateAdminConfig(e,t){return this._adminPatch(`/configs/${e}`,t)}listAdminRoles(){return this._adminGet("/roles")}createAdminRole(e){return this._adminPost("/roles",e)}getAdminRole(e){return this._adminGet(`/roles/${e}`)}updateAdminRole(e,t){return this._adminPatch(`/roles/${e}`,t)}deleteAdminRole(e){return this._adminDelete(`/roles/${e}`)}listAdminApiKeys(){return this._adminGet("/api-keys")}createAdminApiKey(e){return this._adminPost("/api-keys",e)}getAdminApiKey(e){return this._adminGet(`/api-keys/${e}`)}updateAdminApiKey(e,t){return this._adminPatch(`/api-keys/${e}`,t)}deleteAdminApiKey(e){return this._adminDelete(`/api-keys/${e}`)}regenerateAdminApiKeySecret(e){return this._adminPost(`/api-keys/${e}/regenerate-secret`)}listAdminAccounts(){return this._adminGet("/accounts")}createAdminAccount(e){return this._adminPost("/accounts",e)}getAdminAccount(e){return this._adminGet(`/accounts/${e}`)}updateAdminAccount(e,t){return this._adminPatch(`/accounts/${e}`,t)}deleteAdminAccount(e){return this._adminDelete(`/accounts/${e}`)}listAdminLicenses(){return this._adminGet("/licenses")}createAdminLicense(e){return this._adminPost("/licenses",e)}getAdminLicense(e){return this._adminGet(`/licenses/${e}`)}updateAdminLicense(e,t){return this._adminPatch(`/licenses/${e}`,t)}deleteAdminLicense(e){return this._adminDelete(`/licenses/${e}`)}runAdminBackup(e){return this._adminPost("/backup/run",e)}getAdminBackupStatus(e){return this._adminPost("/backup/status",e)}listAdminBackups(e){return this._adminPost("/backup/list",e)}restoreAdminBackup(e){return this._adminPost("/backup/restore",e)}deleteAdminBackup(e){return this._adminPost("/backup/delete",e)}disableAdminAccountTwoFactor(e){return this._adminDelete(`/accounts/${e}/2fa`)}}}var b=class extends D(K(j(L(N(F(I(B))))))){};function V(r){return class extends r{accountRegister(e){return this.requestJson("POST","/v1/account/register",e,!1)}accountWithdraw(e){return this.requestJson("POST","/v1/account/withdraw",e)}accountChangePassword(e){return this.requestJson("POST","/v1/account/change-password",e)}accountReactivate(e){return this.requestJson("POST","/v1/account/reactivate",e,!1)}listAccountBiometrics(){return this.requestJson("GET","/v1/account/biometric")}registerAccountBiometric(e){return this.requestJson("POST","/v1/account/biometric",e)}deleteAccountBiometric(e){return this.requestJson("DELETE",`/v1/account/biometric/${e}`)}}}function Q(r){return class extends r{listBoardCategories(e={}){let t=T(e);return this.requestJson("GET",`/v1/board/categories${t?`?${t}`:""}`,void 0,!1)}getBoardCategory(e){return this.requestJson("GET",`/v1/board/categories/${e}`,void 0,!1)}createBoardCategory(e){return this.requestJson("POST","/v1/board/categories",e)}updateBoardCategory(e,t){return this.requestJson("PUT",`/v1/board/categories/${e}`,t)}deleteBoardCategory(e){return this.requestJson("DELETE",`/v1/board/categories/${e}`)}listBoardPosts(e,t={}){let s=T(t);return this.requestJson("GET",`/v1/board/${e}/list${s?`?${s}`:""}`,void 0,!1)}getBoardPost(e){return this.requestJson("GET",`/v1/board/posts/${e}`,void 0,!1)}createBoardPost(e,t){return this.requestJson("POST",`/v1/board/${e}/submit`,t)}updateBoardPost(e,t){return this.requestJson("PUT",`/v1/board/posts/${e}`,t)}deleteBoardPost(e){return this.requestJson("DELETE",`/v1/board/posts/${e}`)}listBoardComments(e,t={}){let s=T(t);return this.requestJson("GET",`/v1/board/posts/${e}/comments${s?`?${s}`:""}`,void 0,!1)}createBoardComment(e,t){return this.requestJson("POST",`/v1/board/posts/${e}/comments/submit`,t)}updateBoardComment(e,t){return this.requestJson("PUT",`/v1/board/comments/${e}`,t)}deleteBoardComment(e){return this.requestJson("DELETE",`/v1/board/comments/${e}`)}listBoardFiles(e){return this.requestJson("GET",`/v1/board/posts/${e}/files`,void 0,!1)}async uploadBoardFile(e,t){let s=new FormData;return s.append("file",t,t instanceof File?t.name:"upload"),this.requestForm("POST",`/v1/board/posts/${e}/files`,s)}boardFileUrl(e){return`${this.baseUrl}/v1/board/files/${e}`}deleteBoardFile(e){return this.requestJson("DELETE",`/v1/board/files/${e}`)}createBoardGuestPost(e,t){return this.requestJson("POST",`/v1/board/${e}/guest-submit`,t,!1)}authenticateBoardGuestPost(e,t){return this.requestJson("POST",`/v1/board/posts/${e}/guest-auth`,t,!1)}toggleBoardPostLike(e){return this.requestJson("POST",`/v1/board/posts/${e}/like`,{})}acceptBoardPost(e){return this.requestJson("POST",`/v1/board/posts/${e}/accept`,{})}rateBoardPost(e,t){return this.requestJson("POST",`/v1/board/posts/${e}/rating`,t)}rateBoardComment(e,t){return this.requestJson("POST",`/v1/board/comments/${e}/rating`,t)}listBoardTags(e={}){let t=T(e);return this.requestJson("GET",`/v1/board/tags${t?`?${t}`:""}`,void 0,!1)}setBoardPostTags(e,t){return this.requestJson("PUT",`/v1/board/posts/${e}/tags`,t)}reportBoardPost(e,t){return this.requestJson("POST",`/v1/board/posts/${e}/report`,t)}reportBoardComment(e,t){return this.requestJson("POST",`/v1/board/comments/${e}/report`,t)}listBoardReports(e={}){let t=T(e);return this.requestJson("GET",`/v1/board/admin/reports${t?`?${t}`:""}`)}updateBoardReport(e,t){return this.requestJson("PATCH",`/v1/board/admin/reports/${e}`,t)}markBoardPostRead(e){return this.requestJson("POST",`/v1/board/posts/${e}/read`,{})}listBoardMentions(e={}){let t=T(e);return this.requestJson("GET",`/v1/board/mentions${t?`?${t}`:""}`)}markBoardMentionRead(e){return this.requestJson("PATCH",`/v1/board/mentions/${e}/read`,{})}}}function X(r){return class extends r{sendEmailVerification(e){return this.requestJson("POST","/v1/email-verify/send",e,!1)}confirmEmailVerification(e){return this.requestJson("POST","/v1/email-verify/confirm",e,!1)}activateEmailVerification(e){let t=T(e);return this.requestJson("GET",`/v1/email-verify/activate${t?`?${t}`:""}`,void 0,!1)}getEmailVerificationStatus(){return this.requestJson("GET","/v1/email-verify/status")}changeVerifiedEmail(e){return this.requestJson("POST","/v1/email-verify/change",e)}}}function z(r){return class extends r{oauthAuthorizeUrl(e,t={}){let s=T(t);return`${this.baseUrl}/v1/oauth/${e}${s?`?${s}`:""}`}oauthCallback(e,t,s="POST"){if(s==="GET"){let i=T(t??{});return this.requestJson("GET",`/v1/oauth/${e}/callback${i?`?${i}`:""}`,void 0,!1)}return this.requestJson("POST",`/v1/oauth/${e}/callback`,t,!1)}linkOAuthAccount(e){return this.requestJson("POST","/v1/account/oauth/link",e)}unlinkOAuthAccount(e){return this.requestJson("DELETE",`/v1/account/oauth/link/${e}`)}listOAuthProviders(){return this.requestJson("GET","/v1/account/oauth/providers")}refreshOAuthProviderToken(e,t){return this.requestJson("POST",`/v1/account/oauth/refresh/${e}`,t)}}}function W(r){return class extends r{requestPasswordReset(e){return this.requestJson("POST","/v1/password-reset/request",e,!1)}validatePasswordResetToken(e){return this.requestJson("GET",`/v1/password-reset/validate/${encodeURIComponent(e)}`,void 0,!1)}verifyPasswordReset(e){return this.requestJson("POST","/v1/password-reset/verify",e,!1)}}}function Z(r){return class extends r{setupTwoFactor(e){return this.requestJson("POST","/v1/account/2fa/setup",e)}verifyTwoFactorSetup(e){return this.requestJson("POST","/v1/account/2fa/setup/verify",e,!1)}disableTwoFactor(){return this.requestJson("DELETE","/v1/account/2fa")}getTwoFactorStatus(){return this.requestJson("GET","/v1/account/2fa/status")}regenerateTwoFactorRecoveryCodes(){return this.requestJson("POST","/v1/account/2fa/recovery/regenerate")}verifyTwoFactor(e){return this.requestJson("POST","/v1/account/2fa/verify",e,!1)}recoverTwoFactorAccess(e){return this.requestJson("POST","/v1/account/2fa/recovery",e,!1)}}}var R=class extends z(Z(W(X(Q(V(b)))))){};var le=new b,me=new R;function pe(r,n){let{singleton:e=!0,tokenResolver:t,baseUrl:s,token:i,resumeSession:o}=r,[a,u]=he(!1),[h,f]=he(null),d=Te(!0);fe(()=>(d.current=!0,()=>{d.current=!1}),[]);let p=qe(()=>{let c=e?n.singletonInstance:new n.ClientClass({baseUrl:s,token:i});e&&c.configure({baseUrl:s,token:i});let l=t?.();return typeof l=="string"&&c.setToken(l),c},[e,t,s,i,n.ClientClass,n.singletonInstance]),$=Te(o);fe(()=>{let c=$.current;c&&p.refreshToken(c).catch(()=>{})},[p]);let y=C(async c=>{d.current&&(u(!0),f(null));try{return await c()}catch(l){let P=l instanceof Error?l:new Error(String(l));throw d.current&&f(P),P}finally{d.current&&u(!1)}},[]),v=C((c,l,P)=>y(()=>p.submit(c,l,P)),[p,y]),E=C((c,l,P)=>y(()=>p.delete(c,l,P)),[p,y]),O=C((c,l)=>y(()=>p.query(c,l)),[p,y]),_=C(()=>{u(!1),f(null)},[]);return{client:p,isPending:a,error:h,reset:_,submit:v,del:E,query:O}}function tn(r={}){return pe(r,{singletonInstance:le,ClientClass:b})}function nn(r={}){return pe(r,{singletonInstance:me,ClientClass:R})}export{nn as useEntityAppServer,tn as useEntityServer};
1
+ import{useCallback as _,useEffect as pe,useMemo as Be,useRef as he,useState as fe}from"react";function A(r,n){let{singleton:e=!0,tokenResolver:t,baseUrl:s,token:i,resumeSession:o}=r,[a,u]=fe(!1),[f,h]=fe(null),m=he(!0);pe(()=>(m.current=!0,()=>{m.current=!1}),[]);let T=Be(()=>{let l=e?n.singletonInstance:new n.ClientClass({baseUrl:s,token:i});e&&l.configure({baseUrl:s,token:i});let d=t?.();return typeof d=="string"&&l.setToken(d),l},[e,t,s,i,n.ClientClass,n.singletonInstance]),O=he(o);pe(()=>{let l=O.current;l&&T.refreshToken(l).catch(()=>{})},[T]);let y=_(async l=>{m.current&&(u(!0),h(null));try{return await l()}catch(d){let P=d instanceof Error?d:new Error(String(d));throw m.current&&h(P),P}finally{m.current&&u(!1)}},[]),x=_((l,d,P)=>y(()=>T.submit(l,d,P)),[T,y]),R=_((l,d,P)=>y(()=>T.delete(l,d,P)),[T,y]),M=_((l,d)=>y(()=>T.query(l,d)),[T,y]),E=_(()=>{u(!1),h(null)},[]);return{client:T,isPending:a,error:f,reset:E,submit:x,del:R,query:M}}function Te(r){let n=import.meta;if(n?.env?.[r]!=null)return n.env[r];let e=globalThis.process;if(e?.env?.[r]!=null)return e.env[r]}function c(r){return Object.entries(r).filter(([,n])=>n!=null).map(([n,e])=>`${encodeURIComponent(n==="orderBy"?"order_by":n)}=${encodeURIComponent(String(e))}`).join("&")}import{xchacha20poly1305 as ke}from"@noble/ciphers/chacha";import{sha256 as $e}from"@noble/hashes/sha2";import{hkdf as Ae}from"@noble/hashes/hkdf";var G=32,H=2,F=14,C=24,qe=16,Ue="entity-server:hkdf:v1",Oe="entity-server:packet-encryption";function B(r){return r instanceof Uint8Array?r:new Uint8Array(r)}function ge(r,n=Oe){return Ae($e,new TextEncoder().encode(r),new TextEncoder().encode(Ue),new TextEncoder().encode(n),G)}function ye(r,n=H,e=F){let t=B(r);return t.length<G?n:n+t[G-1]%e}function Pe(r,n,e=H,t=F){let s=B(r),i=B(n),o=ye(i,e,t),a=crypto.getRandomValues(new Uint8Array(o)),u=crypto.getRandomValues(new Uint8Array(C)),h=ke(i,u).encrypt(s),m=new Uint8Array(o+C+h.length);return m.set(a,0),m.set(u,o),m.set(h,o+C),m}function we(r,n,e=H,t=F){let s=B(r),i=B(n),o=ye(i,e,t);if(s.length<o+C+qe)throw new Error("Encrypted packet too short");let a=s.slice(o,o+C),u=s.slice(o+C);return ke(i,a).decrypt(u)}function $(r,n){return ge(r||n)}function ve(r,n){return Pe(r,n)}function q(r,n){let e=we(r,n);return JSON.parse(new TextDecoder().decode(e))}function be(r,n,e,t){let s=n.toLowerCase().includes("application/octet-stream");if(e&&!s)throw new Error("Encrypted request required: Content-Type must be application/octet-stream");if(s){if(r==null)throw new Error("Encrypted request body is empty");if(r instanceof ArrayBuffer)return q(r,t);if(r instanceof Uint8Array){let i=r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength);return q(i,t)}throw new Error("Encrypted request body must be ArrayBuffer or Uint8Array")}return r==null||r===""?{}:typeof r=="string"?JSON.parse(r):r}import{sha256 as Me}from"@noble/hashes/sha2";import{hmac as Ie}from"@noble/hashes/hmac";function xe(r,n,e,t,s){let i=String(Math.floor(Date.now()/1e3)),o=crypto.randomUUID(),a=new TextEncoder().encode(`${r}|${n}|${i}|${o}|`),u=new Uint8Array(a.length+e.length);u.set(a,0),u.set(e,a.length);let h=[...Ie(Me,new TextEncoder().encode(s),u)].map(m=>m.toString(16).padStart(2,"0")).join("");return{"X-API-Key":t,"X-Timestamp":i,"X-Nonce":o,"X-Signature":h}}function Ge(r){return r.hmacSecret||r.token||r.anonymousPacketToken}function He(r){return r!=="GET"&&r!=="HEAD"&&r!=="OPTIONS"}function Fe(r,n){return r===403&&/csrf/i.test(n)?!0:/csrf/i.test(n)&&/expired|token validation failed/i.test(n)}async function Re(r){if((r.headers.get("Content-Type")??"").includes("application/json")){let t=await r.json().catch(()=>null);if(t?.error)return t.error;if(t?.message)return t.message}return await r.text().catch(()=>"")||`HTTP ${r.status}`}async function b(r,n,e,t,s=!0,i={},o=!0){let{baseUrl:a,token:u,apiKey:f,hmacSecret:h,encryptRequests:m,anonymousPacketToken:T,csrfEnabled:O,csrfHeaderName:y,refreshCsrfToken:x}=r,R=s&&!!(f&&h),M=Ge(r),E=O&&He(n)&&!R,l=r.csrfToken,d="application/json",P=!u&&!R&&!!T,w=null;if(t!=null)if(m&&!!M&&n!=="GET"&&n!=="HEAD"){let g=$(h,u||T);w=ve(new TextEncoder().encode(JSON.stringify(t)),g),d="application/octet-stream"}else w=JSON.stringify(t);let Ee=p=>{let g={"Content-Type":d,...i};if(!R&&s&&u&&(g.Authorization=`Bearer ${u}`),P&&(g["X-Packet-Token"]=T),E&&p&&(g[y]=p),R){let _e=w instanceof Uint8Array?w:typeof w=="string"?new TextEncoder().encode(w):new Uint8Array(0);Object.assign(g,xe(n,e,_e,f,h))}return g};E&&!l&&x&&(l=await x());let me=p=>fetch(a+e,{method:n,headers:Ee(p),...w!=null?{body:w}:{},credentials:"include"}),k=await me(l);if(!k.ok){let p=await Re(k.clone());if(E&&x&&Fe(k.status,p))l=await x(),k=await me(l);else{let g=new Error(p);throw g.status=k.status,g}}if(!k.ok){let p=new Error(await Re(k));throw p.status=k.status,p}let de=k.headers.get("Content-Type")??"";if(de.includes("application/octet-stream")){let p=$(h,u||T);return q(await k.arrayBuffer(),p)}if(!de.includes("application/json"))return await k.text();let I=await k.json();if(o&&!I.ok){let p=new Error(I.message??`EntityServer error (HTTP ${k.status})`);throw p.status=k.status,p}return I}var U=class{baseUrl;token;anonymousPacketToken;apiKey;hmacSecret;encryptRequests;csrfEnabled;csrfToken;csrfHeaderName;csrfRefreshPath;csrfRefreshBuffer;activeTxId=null;keepSession;refreshBuffer;onTokenRefreshed;onSessionExpired;_sessionRefreshToken=null;_refreshTimer=null;_csrfRefreshTimer=null;_csrfRefreshPromise=null;constructor(n={}){let e=Te("VITE_ENTITY_SERVER_URL");this.baseUrl=(n.baseUrl??e??"").replace(/\/$/,""),this.token=n.token??"",this.anonymousPacketToken=n.anonymousPacketToken??"",this.apiKey=n.apiKey??"",this.hmacSecret=n.hmacSecret??"",this.encryptRequests=n.encryptRequests??!1,this.csrfEnabled=n.csrfEnabled??!1,this.csrfToken=n.csrfToken??"",this.csrfHeaderName=n.csrfHeaderName??"x-csrf-token",this.csrfRefreshPath=n.csrfRefreshPath??"/v1/csrf-token",this.csrfRefreshBuffer=n.csrfRefreshBuffer??60,this.keepSession=n.keepSession??!1,this.refreshBuffer=n.refreshBuffer??60,this.onTokenRefreshed=n.onTokenRefreshed,this.onSessionExpired=n.onSessionExpired}configure(n){typeof n.baseUrl=="string"&&(this.baseUrl=n.baseUrl.replace(/\/$/,"")),typeof n.token=="string"&&(this.token=n.token),typeof n.anonymousPacketToken=="string"&&(this.anonymousPacketToken=n.anonymousPacketToken),typeof n.encryptRequests=="boolean"&&(this.encryptRequests=n.encryptRequests),typeof n.csrfEnabled=="boolean"&&(this.csrfEnabled=n.csrfEnabled,n.csrfEnabled||(this.csrfToken="",this.stopCsrfRefresh())),typeof n.csrfToken=="string"&&(this.csrfToken=n.csrfToken),typeof n.csrfHeaderName=="string"&&(this.csrfHeaderName=n.csrfHeaderName),typeof n.csrfRefreshPath=="string"&&(this.csrfRefreshPath=n.csrfRefreshPath),typeof n.csrfRefreshBuffer=="number"&&(this.csrfRefreshBuffer=n.csrfRefreshBuffer),typeof n.apiKey=="string"&&(this.apiKey=n.apiKey),typeof n.hmacSecret=="string"&&(this.hmacSecret=n.hmacSecret),typeof n.keepSession=="boolean"&&(this.keepSession=n.keepSession),typeof n.refreshBuffer=="number"&&(this.refreshBuffer=n.refreshBuffer),n.onTokenRefreshed&&(this.onTokenRefreshed=n.onTokenRefreshed),n.onSessionExpired&&(this.onSessionExpired=n.onSessionExpired)}setToken(n){this.token=n}setAnonymousPacketToken(n){this.anonymousPacketToken=n}setApiKey(n){this.apiKey=n}setHmacSecret(n){this.hmacSecret=n}setEncryptRequests(n){this.encryptRequests=n}setCsrfToken(n){this.csrfToken=n}setCsrfEnabled(n){this.csrfEnabled=n,n||(this.csrfToken="",this.stopCsrfRefresh())}_scheduleKeepSession(n,e,t){this._clearRefreshTimer(),this._sessionRefreshToken=n;let s=Math.max((e-this.refreshBuffer)*1e3,0);this._refreshTimer=setTimeout(async()=>{if(this._sessionRefreshToken)try{let i=await t(this._sessionRefreshToken);this.onTokenRefreshed?.(i.access_token,i.expires_in),this._scheduleKeepSession(this._sessionRefreshToken,i.expires_in,t)}catch(i){this._clearRefreshTimer(),this.onSessionExpired?.(i instanceof Error?i:new Error(String(i)))}},s)}_clearRefreshTimer(){this._refreshTimer!==null&&(clearTimeout(this._refreshTimer),this._refreshTimer=null)}stopKeepSession(){this._clearRefreshTimer(),this._sessionRefreshToken=null}_clearCsrfRefreshTimer(){this._csrfRefreshTimer!==null&&(clearTimeout(this._csrfRefreshTimer),this._csrfRefreshTimer=null)}stopCsrfRefresh(){this._clearCsrfRefreshTimer(),this._csrfRefreshPromise=null}_scheduleCsrfRefresh(n){if(this._clearCsrfRefreshTimer(),!this.csrfEnabled||!this.csrfRefreshPath)return;let e=Math.max((n-this.csrfRefreshBuffer)*1e3,0);this._csrfRefreshTimer=setTimeout(()=>{this.refreshCsrfToken().catch(()=>{this._clearCsrfRefreshTimer()})},e)}async refreshCsrfToken(){return!this.csrfEnabled||!this.csrfRefreshPath?"":(this._csrfRefreshPromise||(this._csrfRefreshPromise=(async()=>{let n=await fetch(`${this.baseUrl}${this.csrfRefreshPath}`,{method:"GET",credentials:"include"});if(!n.ok){let s=await n.text().catch(()=>""),i=new Error(s||`HTTP ${n.status}`);throw i.status=n.status,i}let e=await n.json().catch(()=>null),t=e&&typeof e=="object"&&"data"in e?e.data??null:e;if(!t?.enabled||typeof t.token!="string")throw new Error("CSRF token refresh failed");return this._applyCsrfHealth(t),this.csrfToken})().finally(()=>{this._csrfRefreshPromise=null})),this._csrfRefreshPromise)}_applyCsrfHealth(n){if(!n?.enabled){this.setCsrfEnabled(!1);return}this.csrfEnabled=!0,typeof n.token=="string"&&(this.csrfToken=n.token),typeof n.headerName=="string"&&(this.csrfHeaderName=n.headerName),typeof n.refreshPath=="string"&&(this.csrfRefreshPath=n.refreshPath),typeof n.expiresIn=="number"&&n.expiresIn>0&&this._scheduleCsrfRefresh(n.expiresIn)}readRequestBody(n,e="application/json",t=!1){let s=$(this.hmacSecret,this.token||this.anonymousPacketToken);return be(n,e,t,s)}get _reqOpts(){return{baseUrl:this.baseUrl,token:this.token,anonymousPacketToken:this.anonymousPacketToken,apiKey:this.apiKey,hmacSecret:this.hmacSecret,encryptRequests:this.encryptRequests,csrfEnabled:this.csrfEnabled,csrfToken:this.csrfToken,csrfHeaderName:this.csrfHeaderName,refreshCsrfToken:this.csrfEnabled?()=>this.refreshCsrfToken():null}}get http(){let n=this;return{get(e,t=!0,s){return b(n._reqOpts,"GET",e,void 0,t,s,!1)},post(e,t,s=!0,i){return b(n._reqOpts,"POST",e,t,s,i,!1)},put(e,t,s=!0,i){return b(n._reqOpts,"PUT",e,t,s,i,!1)},patch(e,t,s=!0,i){return b(n._reqOpts,"PATCH",e,t,s,i,!1)},delete(e,t,s=!0,i){return b(n._reqOpts,"DELETE",e,t,s,i,!1)}}}requestBinary(n,e,t,s=!0){return this._requestBinary(n,e,t,s)}requestForm(n,e,t,s=!0){return this._requestForm(n,e,t,s)}requestFormBinary(n,e,t,s=!0){return this._requestFormBinary(n,e,t,s)}_request(n,e,t,s=!0,i){return b(this._reqOpts,n,e,t,s,i,!0)}async _requestBinary(n,e,t,s=!0){let i={"Content-Type":"application/json"};s&&this.token&&(i.Authorization=`Bearer ${this.token}`),this.apiKey&&(i["X-API-Key"]=this.apiKey);let o=await fetch(this.baseUrl+e,{method:n,headers:i,...t!=null?{body:JSON.stringify(t)}:{},credentials:"include"});if(!o.ok){let a=await o.text(),u=new Error(`HTTP ${o.status}: ${a}`);throw u.status=o.status,u}return o.arrayBuffer()}async _requestForm(n,e,t,s=!0){let i={};s&&this.token&&(i.Authorization=`Bearer ${this.token}`),this.apiKey&&(i["X-API-Key"]=this.apiKey);let o=await fetch(this.baseUrl+e,{method:n,headers:i,body:t,credentials:"include"}),a=await o.json();if(!a.ok){let u=new Error(a.message??`EntityServer error (HTTP ${o.status})`);throw u.status=o.status,u}return a}async _requestFormBinary(n,e,t,s=!0){let i={};s&&this.token&&(i.Authorization=`Bearer ${this.token}`),this.apiKey&&(i["X-API-Key"]=this.apiKey);let o=await fetch(this.baseUrl+e,{method:n,headers:i,body:t,credentials:"include"});if(!o.ok){let a=await o.text(),u=new Error(`HTTP ${o.status}: ${a}`);throw u.status=o.status,u}return o.arrayBuffer()}};function L(r){return class extends r{async checkHealth(){let t=await(await fetch(`${this.baseUrl}/v1/health`,{signal:AbortSignal.timeout(3e3),credentials:"include"})).json();return t.packet_encryption&&(this.encryptRequests=!0),typeof t.packet_token=="string"&&(this.anonymousPacketToken=t.packet_token),this._applyCsrfHealth(t.csrf),t}async login(e,t){let s=await this._request("POST","/v1/auth/login",{email:e,passwd:t},!1);return this.token=s.data.access_token,this.keepSession&&this._scheduleKeepSession(s.data.refresh_token,s.data.expires_in,i=>this.refreshToken(i)),s.data}async refreshToken(e){let t=await this._request("POST","/v1/auth/refresh",{refresh_token:e},!1);return this.token=t.data.access_token,this.keepSession&&this._scheduleKeepSession(e,t.data.expires_in,s=>this.refreshToken(s)),t.data}async logout(e){this.stopKeepSession();let t=await this._request("POST","/v1/auth/logout",{refresh_token:e},!1);return this.token="",t}me(){return this._request("GET","/v1/auth/me")}withdraw(e){return this._request("POST","/v1/auth/withdraw",e?{passwd:e}:{})}}}function j(r){return class extends r{async transStart(){let e=await this._request("POST","/v1/transaction/start",void 0,!1);return this.activeTxId=e.transaction_id,this.activeTxId}transRollback(e){let t=e??this.activeTxId;return t?(this.activeTxId=null,this._request("POST",`/v1/transaction/rollback/${t}`)):Promise.reject(new Error("No active transaction. Call transStart() first."))}transCommit(e){let t=e??this.activeTxId;return t?(this.activeTxId=null,this._request("POST",`/v1/transaction/commit/${t}`)):Promise.reject(new Error("No active transaction. Call transStart() first."))}meta(e){return this._request("POST",`/v1/entity/${e}/meta`,{})}validate(e,t){return this.http.post(`/v1/entity/${e}/validate`,t)}get(e,t,s={}){let i=s.skipHooks?"?skipHooks=true":"";return this._request("GET",`/v1/entity/${e}/${t}${i}`)}find(e,t,s={}){let i=s.skipHooks?"?skipHooks=true":"";return this._request("POST",`/v1/entity/${e}/find${i}`,t??{})}list(e,t={}){let{conditions:s,fields:i,orderDir:o,orderBy:a,...u}=t,f={page:1,limit:20,...u};return a&&(f.orderBy=o==="DESC"?`-${a}`:a),i?.length&&(f.fields=i.join(",")),this._request("POST",`/v1/entity/${e}/list?${c(f)}`,s??{})}count(e,t){return this._request("POST",`/v1/entity/${e}/count`,t??{})}query(e,t){return this._request("POST",`/v1/entity/${e}/query`,t)}submit(e,t,s={}){let i=s.transactionId??this.activeTxId,o=i?{"X-Transaction-ID":i}:void 0,a=s.skipHooks?"?skipHooks=true":"";return this._request("POST",`/v1/entity/${e}/submit${a}`,t,!0,o)}delete(e,t,s={}){let i=new URLSearchParams;s.hard&&i.set("hard","true"),s.skipHooks&&i.set("skipHooks","true");let o=i.size?`?${i}`:"",a=s.transactionId??this.activeTxId,u=a?{"X-Transaction-ID":a}:void 0;return this._request("POST",`/v1/entity/${e}/delete/${t}${o}`,void 0,!0,u)}history(e,t,s={}){return this._request("GET",`/v1/entity/${e}/history/${t}?${c({page:1,limit:50,...s})}`)}rollback(e,t){return this._request("POST",`/v1/entity/${e}/rollback/${t}`)}}}function K(r){return class extends r{async fileUpload(e,t,s={}){let i=new FormData;return i.append("file",t,t instanceof File?t.name:"upload"),s.refSeq!=null&&i.append("ref_seq",String(s.refSeq)),s.isPublic!=null&&i.append("is_public",s.isPublic?"true":"false"),this._requestForm("POST",`/v1/files/${e}/upload`,i)}fileDownload(e,t){return this._requestBinary("POST",`/v1/files/${e}/download/${t}`,{})}fileDelete(e,t){return this._request("POST",`/v1/files/${e}/delete/${t}`,{})}fileList(e,t={}){return this._request("POST",`/v1/files/${e}/list`,t.refSeq?{ref_seq:t.refSeq}:{})}fileMeta(e,t){return this._request("POST",`/v1/files/${e}/meta/${t}`,{})}fileToken(e){return this._request("POST",`/v1/files/token/${e}`,{})}fileViewUrl(e,t={}){let s=t.download?"?download=true":"";return`${this.baseUrl}/v1/files/${e}${s}`}fileUrl(e){return`${this.baseUrl}/v1/files/${e}`}}}function D(r){return class extends r{push(e,t,s={}){return this.submit(e,t,s)}pushLogList(e={}){return this.list("push_log",e)}registerPushDevice(e,t,s,i={}){let{platform:o,deviceType:a,browser:u,browserVersion:f,pushEnabled:h=!0,transactionId:m}=i;return this.submit("account_device",{id:t,account_seq:e,push_token:s,push_enabled:h,...o?{platform:o}:{},...a?{device_type:a}:{},...u?{browser:u}:{},...f?{browser_version:f}:{}},{transactionId:m})}updatePushDeviceToken(e,t,s={}){let{pushEnabled:i=!0,transactionId:o}=s;return this.submit("account_device",{seq:e,push_token:t,push_enabled:i},{transactionId:o})}disablePushDevice(e,t={}){return this.submit("account_device",{seq:e,push_enabled:!1},{transactionId:t.transactionId})}}}function N(r){return class extends r{smtpSend(e){return this._request("POST","/v1/smtp/send",e)}smtpStatus(e){return this._request("POST",`/v1/smtp/status/${e}`,{})}smtpTemplatePreview(e){let t=e.split("/").map(encodeURIComponent).join("/");return fetch(`${this.baseUrl}/v1/smtp/template/${t}`,{credentials:"include"}).then(s=>s.text())}}}function V(r){return class extends r{transactionStart(e){return this._request("POST","/v1/transaction/start",e??{})}transactionCommit(e){return this._request("POST",`/v1/transaction/commit/${encodeURIComponent(e)}`,{})}transactionRollback(e){return this._request("POST",`/v1/transaction/rollback/${encodeURIComponent(e)}`,{})}}}function Q(r){return class extends r{addressSido(){return this.http.get("/v1/utils/address/sido",!1)}addressSigungu(e){let t=new URLSearchParams({sido:e.sido}).toString();return this.http.get(`/v1/utils/address/sigungu?${t}`,!1)}addressDong(e){let t=new URLSearchParams({sido:e.sido,sigungu:e.sigungu}).toString();return this.http.get(`/v1/utils/address/dong?${t}`,!1)}addressClean(e){let t=new URLSearchParams({q:e.q}).toString();return this.http.get(`/v1/utils/address/clean?${t}`,!1)}qrcode(e,t={}){return this._requestBinary("POST","/v1/utils/qrcode",{content:e,...t})}qrcodeBase64(e,t={}){return this._request("POST","/v1/utils/qrcode/base64",{content:e,...t})}qrcodeText(e,t={}){return this._request("POST","/v1/utils/qrcode/text",{content:e,...t})}barcode(e,t={}){return this._requestBinary("POST","/v1/utils/barcode",{content:e,...t})}pdf2png(e,t={}){let s=new FormData;s.append("file",new Blob([e],{type:"application/pdf"}),"document.pdf");let i=new URLSearchParams;t.dpi!=null&&i.set("dpi",String(t.dpi)),t.firstPage!=null&&i.set("first_page",String(t.firstPage)),t.lastPage!=null&&i.set("last_page",String(t.lastPage));let o=i.toString(),a="/v1/utils/pdf2png"+(o?`?${o}`:"");return this._requestFormBinary("POST",a,s)}pdf2pngByFileSeq(e,t={}){return this.requestBinary("POST",`/v1/utils/pdf2png/${e}`,t)}pdf2jpg(e,t={}){let s=new FormData;s.append("file",new Blob([e],{type:"application/pdf"}),"document.pdf");let i=new URLSearchParams;t.dpi!=null&&i.set("dpi",String(t.dpi)),t.firstPage!=null&&i.set("first_page",String(t.firstPage)),t.lastPage!=null&&i.set("last_page",String(t.lastPage));let o=i.toString(),a="/v1/utils/pdf2jpg"+(o?`?${o}`:"");return this._requestFormBinary("POST",a,s)}pdf2jpgByFileSeq(e,t={}){return this.requestBinary("POST",`/v1/utils/pdf2jpg/${e}`,t)}}}function z(r){return class extends r{_adminPath(e){return`/v1/admin${e}`}_adminGet(e){return this.http.get(this._adminPath(e))}_adminPost(e,t){return this.http.post(this._adminPath(e),t)}_adminPut(e,t){return this.http.put(this._adminPath(e),t)}_adminPatch(e,t){return this.http.patch(this._adminPath(e),t)}_adminDelete(e,t){return this.http.delete(this._adminPath(e),t)}listAdminEntities(){return this._adminGet("/entities")}getAdminErdSchema(){return this._adminGet("/erd/schema")}batchEnsureAdminEntities(e){return this._adminPost("/entities/batch-ensure",e)}createAdminEntityConfig(e,t){return this._adminPost(`/${e}/create`,t)}getAdminEntityConfig(e){return this._adminGet(`/${e}/config`)}updateAdminEntityConfig(e,t){return this._adminPut(`/${e}/config`,t)}validateAdminEntityConfig(e,t){return this._adminPost(t?`/${t}/validate`:"/entity/validate",e)}normalizeAdminEntityConfig(e,t){return this._adminPost(t?`/${t}/normalize`:"/entity/normalize",e)}getAdminEntityStats(e,t){return this._adminPost(`/${e}/stats`,t)}reindexAdminEntity(e){return this._adminPost(`/${e}/reindex`)}syncAdminEntitySchema(e){return this._adminPost(`/${e}/sync-schema`)}resetAdminEntity(e){return this._adminPost(`/${e}/reset`)}truncateAdminEntity(e){return this._adminPost(`/${e}/truncate`)}dropAdminEntity(e){return this._adminPost(`/${e}/drop`)}resetAllAdmin(e){return this._adminPost("/reset-all",e)}listAdminConfigs(){return this._adminGet("/configs")}getAdminConfig(e){return this._adminGet(`/configs/${e}`)}updateAdminConfig(e,t){return this._adminPatch(`/configs/${e}`,t)}listAdminRoles(){return this._adminGet("/roles")}createAdminRole(e){return this._adminPost("/roles",e)}getAdminRole(e){return this._adminGet(`/roles/${e}`)}updateAdminRole(e,t){return this._adminPatch(`/roles/${e}`,t)}deleteAdminRole(e){return this._adminDelete(`/roles/${e}`)}listAdminApiKeys(){return this._adminGet("/api-keys")}createAdminApiKey(e){return this._adminPost("/api-keys",e)}getAdminApiKey(e){return this._adminGet(`/api-keys/${e}`)}updateAdminApiKey(e,t){return this._adminPatch(`/api-keys/${e}`,t)}deleteAdminApiKey(e){return this._adminDelete(`/api-keys/${e}`)}regenerateAdminApiKeySecret(e){return this._adminPost(`/api-keys/${e}/regenerate-secret`)}listAdminAccounts(){return this._adminGet("/accounts")}createAdminAccount(e){return this._adminPost("/accounts",e)}getAdminAccount(e){return this._adminGet(`/accounts/${e}`)}updateAdminAccount(e,t){return this._adminPatch(`/accounts/${e}`,t)}deleteAdminAccount(e){return this._adminDelete(`/accounts/${e}`)}listAdminLicenses(){return this._adminGet("/licenses")}createAdminLicense(e){return this._adminPost("/licenses",e)}getAdminLicense(e){return this._adminGet(`/licenses/${e}`)}updateAdminLicense(e,t){return this._adminPatch(`/licenses/${e}`,t)}deleteAdminLicense(e){return this._adminDelete(`/licenses/${e}`)}runAdminBackup(e){return this._adminPost("/backup/run",e)}getAdminBackupStatus(e){return this._adminPost("/backup/status",e)}listAdminBackups(e){return this._adminPost("/backup/list",e)}restoreAdminBackup(e){return this._adminPost("/backup/restore",e)}deleteAdminBackup(e){return this._adminPost("/backup/delete",e)}disableAdminAccountTwoFactor(e){return this._adminDelete(`/accounts/${e}/2fa`)}}}var v=class extends Q(V(K(N(D(z(j(L(U)))))))){};function X(r){return class extends r{accountRegister(e){return this.http.post("/v1/account/register",e,!1)}accountWithdraw(e){return this.http.post("/v1/account/withdraw",e)}accountChangePassword(e){return this.http.post("/v1/account/change-password",e)}accountReactivate(e){return this.http.post("/v1/account/reactivate",e,!1)}listAccountBiometrics(){return this.http.get("/v1/account/biometric")}registerAccountBiometric(e){return this.http.post("/v1/account/biometric",e)}deleteAccountBiometric(e){return this.http.delete(`/v1/account/biometric/${e}`)}}}function J(r){return class extends r{listBoardCategories(e={}){let t=c(e);return this.http.get(`/v1/board/categories${t?`?${t}`:""}`,!1)}getBoardCategory(e){return this.http.get(`/v1/board/categories/${e}`,!1)}createBoardCategory(e){return this.http.post("/v1/board/categories",e)}updateBoardCategory(e,t){return this.http.put(`/v1/board/categories/${e}`,t)}deleteBoardCategory(e){return this.http.delete(`/v1/board/categories/${e}`)}listBoardPosts(e,t={}){let s=c(t);return this.http.get(`/v1/board/${e}/list${s?`?${s}`:""}`,!1)}getBoardPost(e){return this.http.get(`/v1/board/posts/${e}`,!1)}createBoardPost(e,t){return this.http.post(`/v1/board/${e}/submit`,t)}updateBoardPost(e,t){return this.http.put(`/v1/board/posts/${e}`,t)}deleteBoardPost(e){return this.http.delete(`/v1/board/posts/${e}`)}listBoardComments(e,t={}){let s=c(t);return this.http.get(`/v1/board/posts/${e}/comments${s?`?${s}`:""}`,!1)}createBoardComment(e,t){return this.http.post(`/v1/board/posts/${e}/comments/submit`,t)}updateBoardComment(e,t){return this.http.put(`/v1/board/comments/${e}`,t)}deleteBoardComment(e){return this.http.delete(`/v1/board/comments/${e}`)}listBoardFiles(e){return this.http.get(`/v1/board/posts/${e}/files`,!1)}async uploadBoardFile(e,t){let s=new FormData;return s.append("file",t,t instanceof File?t.name:"upload"),this.requestForm("POST",`/v1/board/posts/${e}/files`,s)}boardFileUrl(e){return`${this.baseUrl}/v1/board/files/${e}`}deleteBoardFile(e){return this.http.delete(`/v1/board/files/${e}`)}createBoardGuestPost(e,t){return this.http.post(`/v1/board/${e}/guest-submit`,t,!1)}authenticateBoardGuestPost(e,t){return this.http.post(`/v1/board/posts/${e}/guest-auth`,t,!1)}toggleBoardPostLike(e){return this.http.post(`/v1/board/posts/${e}/like`,{})}acceptBoardPost(e){return this.http.post(`/v1/board/posts/${e}/accept`,{})}rateBoardPost(e,t){return this.http.post(`/v1/board/posts/${e}/rating`,t)}rateBoardComment(e,t){return this.http.post(`/v1/board/comments/${e}/rating`,t)}listBoardTags(e={}){let t=c(e);return this.http.get(`/v1/board/tags${t?`?${t}`:""}`,!1)}setBoardPostTags(e,t){return this.http.put(`/v1/board/posts/${e}/tags`,t)}reportBoardPost(e,t){return this.http.post(`/v1/board/posts/${e}/report`,t)}reportBoardComment(e,t){return this.http.post(`/v1/board/comments/${e}/report`,t)}listBoardReports(e={}){let t=c(e);return this.http.get(`/v1/board/admin/reports${t?`?${t}`:""}`)}updateBoardReport(e,t){return this.http.patch(`/v1/board/admin/reports/${e}`,t)}markBoardPostRead(e){return this.http.post(`/v1/board/posts/${e}/read`,{})}listBoardMentions(e={}){let t=c(e);return this.http.get(`/v1/board/mentions${t?`?${t}`:""}`)}markBoardMentionRead(e){return this.http.patch(`/v1/board/mentions/${e}/read`,{})}}}function W(r){return class extends r{sendEmailVerification(e){return this.http.post("/v1/email-verify/send",e,!1)}confirmEmailVerification(e){return this.http.post("/v1/email-verify/confirm",e,!1)}activateEmailVerification(e){let t=c(e);return this.http.get(`/v1/email-verify/activate${t?`?${t}`:""}`,!1)}getEmailVerificationStatus(){return this.http.get("/v1/email-verify/status")}changeVerifiedEmail(e){return this.http.post("/v1/email-verify/change",e)}}}function Y(r){return class extends r{oauthAuthorizeUrl(e,t={}){let s=c(t);return`${this.baseUrl}/v1/oauth/${e}${s?`?${s}`:""}`}oauthCallback(e,t,s="POST"){if(s==="GET"){let i=c(t??{});return this.http.get(`/v1/oauth/${e}/callback${i?`?${i}`:""}`,!1)}return this.http.post(`/v1/oauth/${e}/callback`,t,!1)}linkOAuthAccount(e){return this.http.post("/v1/account/oauth/link",e)}unlinkOAuthAccount(e){return this.http.delete(`/v1/account/oauth/link/${e}`)}listOAuthProviders(){return this.http.get("/v1/account/oauth/providers")}refreshOAuthProviderToken(e,t){return this.http.post(`/v1/account/oauth/refresh/${e}`,t)}}}function Z(r){return class extends r{requestPasswordReset(e){return this.http.post("/v1/password-reset/request",e,!1)}validatePasswordResetToken(e){return this.http.get(`/v1/password-reset/validate/${encodeURIComponent(e)}`,!1)}verifyPasswordReset(e){return this.http.post("/v1/password-reset/verify",e,!1)}}}function ee(r){return class extends r{setupTwoFactor(e){return this.http.post("/v1/account/2fa/setup",e)}verifyTwoFactorSetup(e){return this.http.post("/v1/account/2fa/setup/verify",e,!1)}disableTwoFactor(){return this.http.delete("/v1/account/2fa")}getTwoFactorStatus(){return this.http.get("/v1/account/2fa/status")}regenerateTwoFactorRecoveryCodes(){return this.http.post("/v1/account/2fa/recovery/regenerate")}verifyTwoFactor(e){return this.http.post("/v1/account/2fa/verify",e,!1)}recoverTwoFactorAccess(e){return this.http.post("/v1/account/2fa/recovery",e,!1)}}}function te(r){return class extends r{alimtalkSend(e){return this.http.post("/v1/alimtalk/send",e)}alimtalkStatus(e){return this.http.get(`/v1/alimtalk/status/${e}`,!1)}listAlimtalkTemplates(){return this.http.get("/v1/alimtalk/templates",!1)}alimtalkWebhook(e,t){return this.http.post(`/v1/alimtalk/webhook/${encodeURIComponent(e)}`,t,!1)}}}function ne(r){return class extends r{friendtalkSend(e){return this.http.post("/v1/friendtalk/send",e)}}}function re(r){return class extends r{listHolidays(e={}){let t=c(e);return this.http.get(`/v1/holidays${t?`?${t}`:""}`,!1)}getHolidayByDate(e){return this.http.get(`/v1/holidays/${encodeURIComponent(e)}`,!1)}syncHolidays(e){return this.http.post("/v1/holidays/sync",e)}}}function se(r){return class extends r{identityRequest(e){return this.http.post("/v1/identity/request",e,!1)}identityCallback(e){return this.http.post("/v1/identity/callback",e,!1)}identityResult(e){return this.http.get(`/v1/identity/result/${encodeURIComponent(e)}`,!1)}identityVerifyCI(e){return this.http.post("/v1/identity/verify-ci",e)}}}function ie(r){return class extends r{llmChat(e){return this.http.post("/v1/llm/chat",e)}llmChatStream(e){return this.http.post("/v1/llm/chat/stream",e)}createLlmConversation(e){return this.http.post("/v1/llm/conversations",e)}sendLlmMessage(e,t){return this.http.post(`/v1/llm/conversations/${e}/messages`,t)}listLlmConversations(e={}){let t=c(e);return this.http.get(`/v1/llm/conversations${t?`?${t}`:""}`)}getLlmConversation(e){return this.http.get(`/v1/llm/conversations/${e}`)}updateLlmConversation(e,t){return this.http.patch(`/v1/llm/conversations/${e}`,t)}deleteLlmConversation(e){return this.http.delete(`/v1/llm/conversations/${e}`)}ragUploadDocument(e){return this.requestForm("POST","/v1/llm/rag/documents",e)}ragListDocuments(e={}){let t=c(e);return this.http.get(`/v1/llm/rag/documents${t?`?${t}`:""}`)}ragDeleteDocument(e){return this.http.delete(`/v1/llm/rag/documents/${encodeURIComponent(e)}`)}ragSearch(e){return this.http.post("/v1/llm/rag/search",e)}ragChat(e){return this.http.post("/v1/llm/rag/chat",e)}ragChatStream(e){return this.http.post("/v1/llm/rag/chat/stream",e)}ragRebuildIndex(e){return this.http.post("/v1/llm/rag/rebuild-index",e)}listLlmProviders(){return this.http.get("/v1/llm/providers")}getLlmUsage(e={}){let t=c(e);return this.http.get(`/v1/llm/usage${t?`?${t}`:""}`)}getLlmUsageSummary(e={}){let t=c(e);return this.http.get(`/v1/llm/usage/summary${t?`?${t}`:""}`)}getLlmCacheStats(){return this.http.get("/v1/llm/cache/stats")}clearLlmCache(){return this.http.delete("/v1/llm/cache")}listLlmTemplates(){return this.http.get("/v1/llm/templates")}llmTemplateChat(e,t){return this.http.post(`/v1/llm/${encodeURIComponent(e)}/chat`,t)}llmTemplateChatStream(e,t){return this.http.post(`/v1/llm/${encodeURIComponent(e)}/chat/stream`,t)}listLlmChatbots(e={}){let t=c(e);return this.http.get(`/v1/llm/chatbots${t?`?${t}`:""}`)}createLlmChatbot(e){return this.http.post("/v1/llm/chatbots",e)}getLlmChatbot(e){return this.http.get(`/v1/llm/chatbots/${e}`)}updateLlmChatbot(e,t){return this.http.patch(`/v1/llm/chatbots/${e}`,t)}deleteLlmChatbot(e){return this.http.delete(`/v1/llm/chatbots/${e}`)}llmChatbotChat(e,t){return this.http.post(`/v1/llm/chatbots/${e}/chat`,t)}llmChatbotChatStream(e,t){return this.http.post(`/v1/llm/chatbots/${e}/chat/stream`,t)}listLlmChatbotSessions(e,t={}){let s=c(t);return this.http.get(`/v1/llm/chatbots/${e}/sessions${s?`?${s}`:""}`)}deleteLlmChatbotSession(e,t){return this.http.delete(`/v1/llm/chatbots/${e}/sessions/${t}`)}listLlmProfiles(e={}){let t=c(e);return this.http.get(`/v1/llm/profiles${t?`?${t}`:""}`)}upsertLlmProfile(e){return this.http.post("/v1/llm/profiles",e)}deleteLlmProfile(e){return this.http.delete(`/v1/llm/profiles/${e}`)}}}function oe(r){return class extends r{ocrRecognize(e){return this.requestForm("POST","/v1/ocr/recognize",e)}ocrRecognizeAsync(e){return this.requestForm("POST","/v1/ocr/recognize/async",e)}ocrRecognizeByDocType(e,t){return this.requestForm("POST",`/v1/ocr/${encodeURIComponent(e)}`,t)}listOcrResults(e={}){let t=c(e);return this.http.get(`/v1/ocr/results${t?`?${t}`:""}`)}getOcrResult(e){return this.http.get(`/v1/ocr/results/${encodeURIComponent(e)}`)}getOcrResultText(e){return this.http.get(`/v1/ocr/results/${encodeURIComponent(e)}/text`)}deleteOcrResult(e){return this.http.delete(`/v1/ocr/results/${encodeURIComponent(e)}`)}getOcrQuota(){return this.http.get("/v1/ocr/quota")}}}function ae(r){return class extends r{pgCreateOrder(e){return this.http.post("/v1/pg/orders",e)}pgGetOrder(e){return this.http.get(`/v1/pg/orders/${encodeURIComponent(e)}`)}pgConfirmPayment(e){return this.http.post("/v1/pg/confirm",e)}pgCancelPayment(e,t){return this.http.post(`/v1/pg/orders/${encodeURIComponent(e)}/cancel`,t)}pgSyncPaymentStatus(e,t){return this.http.post(`/v1/pg/orders/${encodeURIComponent(e)}/sync`,t)}pgWebhook(e){return this.http.post("/v1/pg/webhook",e,!1)}pgGetClientConfig(){return this.http.get("/v1/pg/config",!1)}}}function ue(r){return class extends r{appPushSend(e){return this.http.post("/v1/push/send",e)}appPushBroadcast(e){return this.http.post("/v1/push/broadcast",e)}appPushStatus(e){return this.http.get(`/v1/push/status/${e}`)}appPushRegisterDevice(e){return this.http.post("/v1/push/device",e)}appPushUnregisterDevice(e){return this.http.delete(`/v1/push/device/${e}`)}}}function ce(r){return class extends r{smsSend(e){return this.http.post("/v1/sms/send",e)}smsStatus(e){return this.http.get(`/v1/sms/status/${e}`,!1)}smsVerificationSend(e){return this.http.post("/v1/sms/verification/send",e,!1)}smsVerificationVerify(e){return this.http.post("/v1/sms/verification/verify",e,!1)}}}function le(r){return class extends r{taxinvoiceRegistIssue(e){return this.http.post("/v1/taxinvoice",e)}taxinvoiceRegister(e){return this.http.post("/v1/taxinvoice/register",e)}taxinvoiceIssue(e){return this.http.post(`/v1/taxinvoice/${e}/issue`,{})}taxinvoiceCancelIssue(e,t){return this.http.post(`/v1/taxinvoice/${e}/cancel`,t)}taxinvoiceGetState(e){return this.http.get(`/v1/taxinvoice/${e}/state`)}taxinvoiceGetDetail(e){return this.http.get(`/v1/taxinvoice/${e}`)}}}var S=class extends te(ne(ce(ue(ae(le(oe(ie(se(re(Y(ee(Z(W(J(X(v)))))))))))))))){};var Ce=new v,Se=new S;function Zn(r={}){return A(r,{singletonInstance:Ce,ClientClass:v})}function rr(r={}){return A(r,{singletonInstance:Se,ClientClass:S})}export{rr as useEntityAppServer,A as useEntityClient,Zn as useEntityServer};
2
2
  //# sourceMappingURL=react.js.map