entity-server-client 0.2.5 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -1
- package/build.mjs +4 -1
- package/dist/EntityServerClient.d.ts +705 -199
- package/dist/client/base.d.ts +59 -0
- package/dist/client/packet.d.ts +8 -6
- package/dist/client/request.d.ts +0 -1
- package/dist/client/utils.d.ts +5 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +4 -4
- package/dist/mixins/alimtalk.d.ts +56 -0
- package/dist/mixins/auth.d.ts +167 -0
- package/dist/mixins/email.d.ts +51 -0
- package/dist/mixins/entity.d.ts +119 -0
- package/dist/mixins/file.d.ts +78 -0
- package/dist/mixins/identity.d.ts +52 -0
- package/dist/mixins/pg.d.ts +63 -0
- package/dist/mixins/push.d.ts +110 -0
- package/dist/mixins/sms.d.ts +55 -0
- package/dist/mixins/smtp.d.ts +44 -0
- package/dist/mixins/utils.d.ts +70 -0
- package/dist/react.js +1 -1
- package/dist/react.js.map +4 -4
- package/dist/types.d.ts +165 -1
- package/docs/apis.md +5 -12
- package/docs/react.md +6 -7
- package/package.json +2 -1
- package/src/EntityServerClient.ts +54 -546
- package/src/client/base.ts +246 -0
- package/src/client/packet.ts +14 -27
- package/src/client/request.ts +2 -11
- package/src/client/utils.ts +18 -2
- package/src/hooks/useEntityServer.ts +3 -4
- package/src/mixins/alimtalk.ts +35 -0
- package/src/mixins/auth.ts +287 -0
- package/src/mixins/email.ts +46 -0
- package/src/mixins/entity.ts +205 -0
- package/src/mixins/file.ts +99 -0
- package/src/mixins/identity.ts +35 -0
- package/src/mixins/pg.ts +58 -0
- package/src/mixins/push.ts +132 -0
- package/src/mixins/sms.ts +46 -0
- package/src/mixins/smtp.ts +20 -0
- package/src/mixins/utils.ts +75 -0
- package/src/types.ts +203 -1
package/docs/apis.md
CHANGED
|
@@ -59,10 +59,10 @@ import { useEntityServer } from "entity-server-client/react";
|
|
|
59
59
|
**admin-web 예시:**
|
|
60
60
|
|
|
61
61
|
```ts
|
|
62
|
-
import {
|
|
62
|
+
import { entityServer } from "entity-server-client";
|
|
63
63
|
|
|
64
64
|
// 앱 초기화 시 한 번 실행 (예: App.tsx mount, main.tsx 초기화)
|
|
65
|
-
const health = await
|
|
65
|
+
const health = await entityServer.checkHealth();
|
|
66
66
|
// → 서버의 packet_encryption: true 이면
|
|
67
67
|
// 클라이언트의 encryptRequests: true 로 자동 설정됨
|
|
68
68
|
```
|
|
@@ -78,9 +78,8 @@ if (packet_encryption) {
|
|
|
78
78
|
}
|
|
79
79
|
```
|
|
80
80
|
|
|
81
|
-
>
|
|
82
|
-
>
|
|
83
|
-
> 서버와 일치해야 올바르게 복호화됩니다.
|
|
81
|
+
> **주의:** 패킷 magic 길이(K)는 `K = 2 + key[31] % 14` 공식으로 패킷 키에서 자동 파생됩니다.
|
|
82
|
+
> 클라이언트와 서버 모두 동일한 패킷 키를 보유하므로 별도 설정 필요 없습니다.
|
|
84
83
|
|
|
85
84
|
---
|
|
86
85
|
|
|
@@ -92,7 +91,6 @@ if (packet_encryption) {
|
|
|
92
91
|
| ------------------ | ---------------------------------- | ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
93
92
|
| `baseUrl` | `string` | `VITE_ENTITY_SERVER_URL` 또는 `http://localhost:47200` | 서버 주소 |
|
|
94
93
|
| `token` | `string` | `""` | JWT Access Token |
|
|
95
|
-
| `packetMagicLen` | `number` | `VITE_PACKET_MAGIC_LEN` 또는 `4` | 암호화 패킷 magic 바이트 길이 |
|
|
96
94
|
| `encryptRequests` | `boolean` | `false` | `true` 로 설정하면 인증된 POST/PUT/PATCH 요청 바디를 XChaCha20-Poly1305 로 암호화하여 전송합니다. 서버에서 `requirePacketEncryption = true` 로 설정된 경우 반드시 활성화해야 합니다. |
|
|
97
95
|
| `keepSession` | `boolean` | `false` | `true`이면 `login()` 성공 후 Access Token 만료 전에 자동으로 갱신합니다. |
|
|
98
96
|
| `refreshBuffer` | `number` | `60` | 만료 몇 초 전에 갱신을 시도할지 설정합니다. 예: `expires_in=3600`, `refreshBuffer=60` → 3540초 후 갱신 |
|
|
@@ -104,7 +102,6 @@ if (packet_encryption) {
|
|
|
104
102
|
const client = new EntityServerClient({
|
|
105
103
|
baseUrl: "https://api.example.com",
|
|
106
104
|
token: "eyJhbGciOi...",
|
|
107
|
-
packetMagicLen: 4,
|
|
108
105
|
encryptRequests: true, // 요청 바디 암호화 활성화
|
|
109
106
|
});
|
|
110
107
|
|
|
@@ -120,17 +117,14 @@ import { entityServer } from "entity-server-client";
|
|
|
120
117
|
client.configure({
|
|
121
118
|
baseUrl: "https://api.example.com",
|
|
122
119
|
token: "new-access-token",
|
|
123
|
-
packetMagicLen: 6,
|
|
124
120
|
encryptRequests: true,
|
|
125
121
|
});
|
|
126
122
|
```
|
|
127
123
|
|
|
128
|
-
### `setToken(token)`
|
|
124
|
+
### `setToken(token)`
|
|
129
125
|
|
|
130
126
|
```ts
|
|
131
127
|
client.setToken("eyJhbGciOi...");
|
|
132
|
-
client.setPacketMagicLen(4);
|
|
133
|
-
const len = client.getPacketMagicLen(); // 4
|
|
134
128
|
```
|
|
135
129
|
|
|
136
130
|
---
|
|
@@ -658,7 +652,6 @@ import { useEntityServer } from "entity-server-client/react";
|
|
|
658
652
|
| ------------------ | ----------------------------------- | ------ | ----------------------------------------------------------------------------------------------- |
|
|
659
653
|
| `singleton` | `boolean` | `true` | `true`이면 전역 `entityServer` 인스턴스 사용 |
|
|
660
654
|
| `baseUrl` | `string` | — | 서버 주소 (singleton일 때 `configure()` 호출) |
|
|
661
|
-
| `packetMagicLen` | `number` | — | 암호화 패킷 magic 바이트 길이 |
|
|
662
655
|
| `token` | `string` | — | JWT Access Token |
|
|
663
656
|
| `tokenResolver` | `() => string \| undefined \| null` | — | 렌더 시점에 토큰을 동적으로 주입하는 함수 |
|
|
664
657
|
| `keepSession` | `boolean` | — | 세션 유지 활성화 (인덱스 참고) |
|
package/docs/react.md
CHANGED
|
@@ -12,7 +12,7 @@ import { useEntityServer } from "entity-server-client/react";
|
|
|
12
12
|
import { useEntityServer } from "entity-server-client/react";
|
|
13
13
|
|
|
14
14
|
export function AccountPage() {
|
|
15
|
-
const client = useEntityServer({
|
|
15
|
+
const { client } = useEntityServer({
|
|
16
16
|
tokenResolver: () => localStorage.getItem("auth_access_token"),
|
|
17
17
|
});
|
|
18
18
|
|
|
@@ -34,7 +34,7 @@ export function AccountPage() {
|
|
|
34
34
|
- `false`: 훅 호출 스코프마다 새 인스턴스 생성
|
|
35
35
|
|
|
36
36
|
```ts
|
|
37
|
-
const client = useEntityServer({
|
|
37
|
+
const { client } = useEntityServer({
|
|
38
38
|
singleton: false,
|
|
39
39
|
baseUrl: "http://localhost:47200",
|
|
40
40
|
});
|
|
@@ -45,19 +45,18 @@ const client = useEntityServer({
|
|
|
45
45
|
렌더 시점에 토큰을 읽어 자동으로 `setToken`을 적용합니다.
|
|
46
46
|
|
|
47
47
|
```ts
|
|
48
|
-
const client = useEntityServer({
|
|
48
|
+
const { client } = useEntityServer({
|
|
49
49
|
tokenResolver: () => sessionStorage.getItem("access_token"),
|
|
50
50
|
});
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
-
### `baseUrl`, `token
|
|
53
|
+
### `baseUrl`, `token`
|
|
54
54
|
|
|
55
55
|
`EntityServerClientOptions`와 동일하게 전달할 수 있습니다.
|
|
56
56
|
|
|
57
57
|
```ts
|
|
58
|
-
const client = useEntityServer({
|
|
58
|
+
const { client } = useEntityServer({
|
|
59
59
|
baseUrl: import.meta.env.VITE_ENTITY_SERVER_URL,
|
|
60
|
-
packetMagicLen: Number(import.meta.env.VITE_PACKET_MAGIC_LEN ?? 4),
|
|
61
60
|
});
|
|
62
61
|
```
|
|
63
62
|
|
|
@@ -68,7 +67,7 @@ import { useQuery } from "@tanstack/react-query";
|
|
|
68
67
|
import { useEntityServer } from "entity-server-client/react";
|
|
69
68
|
|
|
70
69
|
export function useAccountList() {
|
|
71
|
-
const client = useEntityServer({
|
|
70
|
+
const { client } = useEntityServer({
|
|
72
71
|
tokenResolver: () => localStorage.getItem("auth_access_token"),
|
|
73
72
|
});
|
|
74
73
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "entity-server-client",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.6",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"@noble/hashes": "^1.7.2"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
|
+
"@types/node": "^25.3.3",
|
|
33
34
|
"@types/react": "^19.2.2",
|
|
34
35
|
"esbuild": "^0.25.0",
|
|
35
36
|
"react": "^19.2.0",
|