entity-server-client 0.2.5 → 0.3.0
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 +32 -1
- package/build.mjs +11 -1
- package/docs/api/alimtalk.md +62 -0
- package/docs/api/auth.md +256 -0
- package/docs/api/email.md +37 -0
- package/docs/api/entity.md +273 -0
- package/docs/api/file.md +80 -0
- package/docs/api/health.md +41 -0
- package/docs/api/identity.md +32 -0
- package/docs/api/import.md +34 -0
- package/docs/api/packet.md +25 -0
- package/docs/api/pg.md +90 -0
- package/docs/api/push.md +107 -0
- package/docs/api/react.md +141 -0
- package/docs/api/setup.md +43 -0
- package/docs/api/sms.md +45 -0
- package/docs/api/smtp.md +33 -0
- package/docs/api/transaction.md +50 -0
- package/docs/api/utils.md +52 -0
- package/docs/apis.md +22 -787
- package/docs/react.md +64 -7
- package/package.json +7 -1
- package/src/EntityServerClient.ts +28 -546
- package/src/client/base.ts +305 -0
- package/src/client/packet.ts +16 -52
- package/src/client/request.ts +46 -9
- package/src/client/utils.ts +17 -2
- package/src/hooks/useEntityServer.ts +3 -4
- package/src/mixins/auth.ts +143 -0
- package/src/mixins/entity.ts +205 -0
- package/src/mixins/file.ts +99 -0
- package/src/mixins/push.ts +109 -0
- package/src/mixins/smtp.ts +20 -0
- package/src/mixins/utils.ts +106 -0
- package/src/packet.ts +84 -0
- package/src/types.ts +93 -1
- package/tests/packet.test.mjs +50 -0
- package/dist/EntityServerClient.d.ts +0 -203
- package/dist/client/hmac.d.ts +0 -8
- package/dist/client/packet.d.ts +0 -22
- package/dist/client/request.d.ts +0 -16
- package/dist/client/utils.d.ts +0 -4
- package/dist/hooks/useEntityServer.d.ts +0 -63
- package/dist/index.d.ts +0 -4
- package/dist/index.js +0 -2
- package/dist/index.js.map +0 -7
- package/dist/react.d.ts +0 -1
- package/dist/react.js +0 -2
- package/dist/react.js.map +0 -7
- package/dist/types.d.ts +0 -165
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
|
|
|
@@ -26,6 +26,64 @@ export function AccountPage() {
|
|
|
26
26
|
}
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
+
## `client`로 사용 가능한 모든 API
|
|
30
|
+
|
|
31
|
+
`client`는 `EntityServerClient` 인스턴스 그대로이므로 엔티티 CRUD 외에도 **모든 API**를 호출할 수 있습니다.
|
|
32
|
+
`submit` / `del` / `query` 래퍼는 `isPending` / `error` 상태를 자동 관리해주는 편의 메서드일 뿐입니다.
|
|
33
|
+
|
|
34
|
+
```tsx
|
|
35
|
+
const { client, submit, del } = useEntityServer({
|
|
36
|
+
tokenResolver: () => localStorage.getItem("auth_access_token"),
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
// 인증
|
|
40
|
+
await client.login({ email: "hong@example.com", password: "pw" });
|
|
41
|
+
await client.logout();
|
|
42
|
+
|
|
43
|
+
// 트랜잭션
|
|
44
|
+
await client.transStart();
|
|
45
|
+
await client.submit("order", { product_seq: 1, qty: 2 });
|
|
46
|
+
await client.transCommit();
|
|
47
|
+
|
|
48
|
+
// 파일 업로드
|
|
49
|
+
const res = await client.fileUpload("product", file, { refSeq: 10 });
|
|
50
|
+
|
|
51
|
+
// SMS 인증
|
|
52
|
+
await client.smsVerificationSend("01012345678");
|
|
53
|
+
await client.smsVerificationVerify("01012345678", "123456");
|
|
54
|
+
|
|
55
|
+
// 알림톡 발송
|
|
56
|
+
await client.alimtalkSend({
|
|
57
|
+
to: "01012345678",
|
|
58
|
+
templateCode: "ORDER_CONFIRM",
|
|
59
|
+
variables: {},
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
// PG 결제
|
|
63
|
+
const order = await client.pgCreateOrder({
|
|
64
|
+
orderId: "ord-001",
|
|
65
|
+
amount: 15000,
|
|
66
|
+
orderName: "상품 A",
|
|
67
|
+
customerName: "홍길동",
|
|
68
|
+
customerEmail: "hong@example.com",
|
|
69
|
+
});
|
|
70
|
+
await client.pgConfirmPayment({
|
|
71
|
+
paymentKey: "key",
|
|
72
|
+
orderId: "ord-001",
|
|
73
|
+
amount: 15000,
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
// 본인인증
|
|
77
|
+
const req = await client.identityRequest({
|
|
78
|
+
redirect_url: "https://example.com/callback",
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
// QR코드
|
|
82
|
+
const buf = await client.qrcode("https://example.com", { size: 300 });
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
카테고리별 상세 파라미터는 [api/](api/) 폴더의 각 문서를 참고하세요.
|
|
86
|
+
|
|
29
87
|
## 옵션
|
|
30
88
|
|
|
31
89
|
### `singleton` (기본: `true`)
|
|
@@ -34,7 +92,7 @@ export function AccountPage() {
|
|
|
34
92
|
- `false`: 훅 호출 스코프마다 새 인스턴스 생성
|
|
35
93
|
|
|
36
94
|
```ts
|
|
37
|
-
const client = useEntityServer({
|
|
95
|
+
const { client } = useEntityServer({
|
|
38
96
|
singleton: false,
|
|
39
97
|
baseUrl: "http://localhost:47200",
|
|
40
98
|
});
|
|
@@ -45,19 +103,18 @@ const client = useEntityServer({
|
|
|
45
103
|
렌더 시점에 토큰을 읽어 자동으로 `setToken`을 적용합니다.
|
|
46
104
|
|
|
47
105
|
```ts
|
|
48
|
-
const client = useEntityServer({
|
|
106
|
+
const { client } = useEntityServer({
|
|
49
107
|
tokenResolver: () => sessionStorage.getItem("access_token"),
|
|
50
108
|
});
|
|
51
109
|
```
|
|
52
110
|
|
|
53
|
-
### `baseUrl`, `token
|
|
111
|
+
### `baseUrl`, `token`
|
|
54
112
|
|
|
55
113
|
`EntityServerClientOptions`와 동일하게 전달할 수 있습니다.
|
|
56
114
|
|
|
57
115
|
```ts
|
|
58
|
-
const client = useEntityServer({
|
|
116
|
+
const { client } = useEntityServer({
|
|
59
117
|
baseUrl: import.meta.env.VITE_ENTITY_SERVER_URL,
|
|
60
|
-
packetMagicLen: Number(import.meta.env.VITE_PACKET_MAGIC_LEN ?? 4),
|
|
61
118
|
});
|
|
62
119
|
```
|
|
63
120
|
|
|
@@ -68,7 +125,7 @@ import { useQuery } from "@tanstack/react-query";
|
|
|
68
125
|
import { useEntityServer } from "entity-server-client/react";
|
|
69
126
|
|
|
70
127
|
export function useAccountList() {
|
|
71
|
-
const client = useEntityServer({
|
|
128
|
+
const { client } = useEntityServer({
|
|
72
129
|
tokenResolver: () => localStorage.getItem("auth_access_token"),
|
|
73
130
|
});
|
|
74
131
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "entity-server-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -11,6 +11,10 @@
|
|
|
11
11
|
"types": "./dist/index.d.ts",
|
|
12
12
|
"default": "./dist/index.js"
|
|
13
13
|
},
|
|
14
|
+
"./packet": {
|
|
15
|
+
"types": "./dist/packet.d.ts",
|
|
16
|
+
"default": "./dist/packet.js"
|
|
17
|
+
},
|
|
14
18
|
"./react": {
|
|
15
19
|
"types": "./dist/react.d.ts",
|
|
16
20
|
"default": "./dist/react.js"
|
|
@@ -20,6 +24,7 @@
|
|
|
20
24
|
"types": "./dist/index.d.ts",
|
|
21
25
|
"scripts": {
|
|
22
26
|
"build": "tsc --declaration --emitDeclarationOnly && node build.mjs",
|
|
27
|
+
"test": "npm run build && node --test tests/**/*.test.mjs",
|
|
23
28
|
"prepublishOnly": "npm run build"
|
|
24
29
|
},
|
|
25
30
|
"peerDependencies": {
|
|
@@ -30,6 +35,7 @@
|
|
|
30
35
|
"@noble/hashes": "^1.7.2"
|
|
31
36
|
},
|
|
32
37
|
"devDependencies": {
|
|
38
|
+
"@types/node": "^25.3.3",
|
|
33
39
|
"@types/react": "^19.2.2",
|
|
34
40
|
"esbuild": "^0.25.0",
|
|
35
41
|
"react": "^19.2.0",
|