entity-client 1.0.13 → 1.0.15

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 (48) hide show
  1. package/dist/EntityAppServerApi.d.ts +480 -0
  2. package/dist/EntityServerApi.d.ts +249 -7
  3. package/dist/client/base.d.ts +35 -4
  4. package/dist/client/base.js +1 -1
  5. package/dist/client/base.js.map +3 -3
  6. package/dist/client/request.d.ts +6 -1
  7. package/dist/client/request.js +1 -1
  8. package/dist/client/request.js.map +3 -3
  9. package/dist/hooks/useEntityClient.d.ts +4 -4
  10. package/dist/hooks/useEntityClient.js +1 -1
  11. package/dist/hooks/useEntityClient.js.map +3 -3
  12. package/dist/index.js +1 -1
  13. package/dist/index.js.map +3 -3
  14. package/dist/mixins/app/plugins/alimtalk.d.ts +30 -0
  15. package/dist/mixins/app/plugins/friendtalk.d.ts +30 -0
  16. package/dist/mixins/app/plugins/holidays.d.ts +30 -0
  17. package/dist/mixins/app/plugins/identity.d.ts +30 -0
  18. package/dist/mixins/app/plugins/llm.d.ts +30 -0
  19. package/dist/mixins/app/plugins/ocr.d.ts +30 -0
  20. package/dist/mixins/app/plugins/pg.d.ts +30 -0
  21. package/dist/mixins/app/plugins/push.d.ts +30 -0
  22. package/dist/mixins/app/plugins/sms.d.ts +30 -0
  23. package/dist/mixins/app/plugins/taxinvoice.d.ts +30 -0
  24. package/dist/mixins/app/routes/account.d.ts +30 -0
  25. package/dist/mixins/app/routes/board.d.ts +30 -0
  26. package/dist/mixins/app/routes/board.js +1 -1
  27. package/dist/mixins/app/routes/board.js.map +2 -2
  28. package/dist/mixins/app/routes/email-verify.d.ts +30 -0
  29. package/dist/mixins/app/routes/oauth.d.ts +30 -0
  30. package/dist/mixins/app/routes/password-reset.d.ts +30 -0
  31. package/dist/mixins/app/routes/two-factor.d.ts +30 -0
  32. package/dist/mixins/server/admin.d.ts +30 -0
  33. package/dist/mixins/server/auth.d.ts +73 -8
  34. package/dist/mixins/server/auth.js +1 -1
  35. package/dist/mixins/server/auth.js.map +3 -3
  36. package/dist/mixins/server/entity.d.ts +30 -0
  37. package/dist/mixins/server/file.d.ts +30 -0
  38. package/dist/mixins/server/index.d.ts +2 -1
  39. package/dist/mixins/server/index.js +1 -1
  40. package/dist/mixins/server/index.js.map +3 -3
  41. package/dist/mixins/server/push.d.ts +30 -0
  42. package/dist/mixins/server/smtp.d.ts +30 -0
  43. package/dist/mixins/server/transaction.d.ts +30 -0
  44. package/dist/mixins/server/utils.d.ts +30 -0
  45. package/dist/react.js +1 -1
  46. package/dist/react.js.map +3 -3
  47. package/dist/types.d.ts +46 -11
  48. package/package.json +1 -1
package/dist/types.d.ts CHANGED
@@ -104,10 +104,44 @@ export interface RegisterPushDeviceOptions {
104
104
  pushEnabled?: boolean;
105
105
  transactionId?: string;
106
106
  }
107
+ export type RealtimeConnectionStatus = "disabled" | "idle" | "connecting" | "open" | "closed";
108
+ export type RealtimeMessageType = "hello" | "event" | "notification" | "message" | "chat" | "ack" | "error" | "ping" | "pong" | "subscribe" | "unsubscribe";
109
+ export interface RealtimeEnvelope<T = unknown> {
110
+ v: number;
111
+ id: string;
112
+ ts: string;
113
+ type: RealtimeMessageType;
114
+ channel: string;
115
+ event: string;
116
+ data?: T;
117
+ meta?: Record<string, unknown>;
118
+ reply_to?: string;
119
+ error?: {
120
+ code: string;
121
+ message: string;
122
+ details?: unknown;
123
+ };
124
+ }
125
+ export interface RealtimeStatusChange {
126
+ status: RealtimeConnectionStatus;
127
+ previousStatus: RealtimeConnectionStatus;
128
+ reason?: string;
129
+ error?: Error;
130
+ }
131
+ export interface RealtimeClientOptions {
132
+ enabled?: boolean;
133
+ path?: string;
134
+ autoConnect?: boolean;
135
+ autoReconnect?: boolean;
136
+ reconnectDelayMs?: number;
137
+ }
138
+ export type RealtimeMessageListener = (envelope: RealtimeEnvelope) => void;
139
+ export type RealtimeStatusListener = (change: RealtimeStatusChange) => void;
107
140
  /** EntityServerClient 생성/설정 옵션입니다. */
108
141
  export interface EntityServerClientOptions {
109
142
  baseUrl?: string;
110
143
  token?: string;
144
+ realtime?: boolean | RealtimeClientOptions;
111
145
  /**
112
146
  * 익명 패킷 암호화용 부트스트랩 토큰입니다.
113
147
  * entity-app-server의 `/v1/health` 응답으로 설정되는 용도입니다.
@@ -126,24 +160,24 @@ export interface EntityServerClientOptions {
126
160
  * `true`이면 인증된 POST/PUT 요청 바디를 XChaCha20-Poly1305로 암호화합니다.
127
161
  *
128
162
  * 서버의 `EnablePacketEncryption`이 활성화된 경우 필수로 설정해야 합니다.
129
- * 로그인(`login()`)·토큰 갱신(`refreshToken()`)은 인증 전 요청이므로 자동으로 건너뜁니다.
163
+ * 로그인(`login()`)·토큰 갱신(`refreshToken()`, `tokenRefresh()`)은 인증 전 요청이므로 자동으로 건너뜁니다.
130
164
  *
131
165
  * 기본값: `false`
132
166
  */
133
167
  encryptRequests?: boolean;
134
168
  /**
135
- * `true`이면 `login()` 성공 Access Token 만료 전에 자동으로 갱신(silent refresh)합니다.
136
- * 갱신 시점은 `expires_in - refreshBuffer` 초입니다.
169
+ * `true`이면 health tick `X-Session-Bootstrap: 1`로 세션 연장을 함께 시도합니다.
170
+ * 브라우저 직접 통신에서는 refresh API를 따로 스케줄링하는 대신 이 방식을 권장합니다.
171
+ *
172
+ * `healthTickInterval`이 설정되어 있지 않으면 `login()` 성공 후 기본 5분 주기로 health tick이 시작됩니다.
137
173
  *
138
- * 갱신 성공 시 `onTokenRefreshed`, 실패 `onSessionExpired` 콜백이 호출됩니다.
174
+ * 연장 성공 시 `onTokenRefreshed`, 이상 연장할 수 없으면 `onSessionExpired` 콜백이 호출될 수 있습니다.
139
175
  *
140
176
  * 기본값: `false`
141
177
  */
142
178
  keepSession?: boolean;
143
179
  /**
144
- * 만료 전에 자동 갱신을 시도할지 설정합니다.
145
- *
146
- * 예: `expires_in = 3600`, `refreshBuffer = 60` → 3540초 후 갱신
180
+ * Deprecated: timer 기반 refresh를 쓰지 않으므로 이상 사용하지 않습니다.
147
181
  *
148
182
  * 기본값: `60`
149
183
  */
@@ -152,6 +186,7 @@ export interface EntityServerClientOptions {
152
186
  * health tick 자동 실행 주기(ms)입니다.
153
187
  * 설정하면 클라이언트 생성 직후부터 주기적으로 `/v1/health`를 호출합니다.
154
188
  * CSRF 쿠키 갱신과 서버 상태 확인을 자동화합니다.
189
+ * `keepSession: true`이면 같은 tick에서 세션 연장도 함께 시도합니다.
155
190
  *
156
191
  * 예: `healthTickInterval: 5 * 60 * 1000` → 5분마다 health 호출
157
192
  *
@@ -159,14 +194,14 @@ export interface EntityServerClientOptions {
159
194
  */
160
195
  healthTickInterval?: number;
161
196
  /**
162
- * 자동 갱신 성공 시 호출되는 콜백입니다.
197
+ * health 기반 세션 연장 성공 시 호출되는 콜백입니다.
163
198
  * 새 `access_token`과 `expires_in`이 전달됩니다.
164
- * 앱은 콜백에서 localStorage 등에 토큰을 저장해야 합니다.
199
+ * health 기반 부트스트랩에서는 `expires_in`이 0일 있습니다.
165
200
  */
166
201
  onTokenRefreshed?: (accessToken: string, expiresIn: number) => void;
167
202
  /**
168
- * 세션 유지 갱신 실패 시 호출되는 콜백입니다.
169
- * refresh_token 만료 등으로 재발급이 불가능한 경우입니다.
203
+ * health 기반 세션 연장 실패 시 호출되는 콜백입니다.
204
+ * refresh_token 만료 등으로 더 이상 재발급이 불가능한 경우입니다.
170
205
  * 앱은 이 콜백에서 로그인 페이지로 이동하는 등의 처리를 해야 합니다.
171
206
  */
172
207
  onSessionExpired?: (error: Error) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "entity-client",
3
- "version": "1.0.13",
3
+ "version": "1.0.15",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "homepage": "https://github.com/ehfuse/entity-client",