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.
Files changed (50) hide show
  1. package/README.md +32 -1
  2. package/build.mjs +11 -1
  3. package/docs/api/alimtalk.md +62 -0
  4. package/docs/api/auth.md +256 -0
  5. package/docs/api/email.md +37 -0
  6. package/docs/api/entity.md +273 -0
  7. package/docs/api/file.md +80 -0
  8. package/docs/api/health.md +41 -0
  9. package/docs/api/identity.md +32 -0
  10. package/docs/api/import.md +34 -0
  11. package/docs/api/packet.md +25 -0
  12. package/docs/api/pg.md +90 -0
  13. package/docs/api/push.md +107 -0
  14. package/docs/api/react.md +141 -0
  15. package/docs/api/setup.md +43 -0
  16. package/docs/api/sms.md +45 -0
  17. package/docs/api/smtp.md +33 -0
  18. package/docs/api/transaction.md +50 -0
  19. package/docs/api/utils.md +52 -0
  20. package/docs/apis.md +22 -787
  21. package/docs/react.md +64 -7
  22. package/package.json +7 -1
  23. package/src/EntityServerClient.ts +28 -546
  24. package/src/client/base.ts +305 -0
  25. package/src/client/packet.ts +16 -52
  26. package/src/client/request.ts +46 -9
  27. package/src/client/utils.ts +17 -2
  28. package/src/hooks/useEntityServer.ts +3 -4
  29. package/src/mixins/auth.ts +143 -0
  30. package/src/mixins/entity.ts +205 -0
  31. package/src/mixins/file.ts +99 -0
  32. package/src/mixins/push.ts +109 -0
  33. package/src/mixins/smtp.ts +20 -0
  34. package/src/mixins/utils.ts +106 -0
  35. package/src/packet.ts +84 -0
  36. package/src/types.ts +93 -1
  37. package/tests/packet.test.mjs +50 -0
  38. package/dist/EntityServerClient.d.ts +0 -203
  39. package/dist/client/hmac.d.ts +0 -8
  40. package/dist/client/packet.d.ts +0 -22
  41. package/dist/client/request.d.ts +0 -16
  42. package/dist/client/utils.d.ts +0 -4
  43. package/dist/hooks/useEntityServer.d.ts +0 -63
  44. package/dist/index.d.ts +0 -4
  45. package/dist/index.js +0 -2
  46. package/dist/index.js.map +0 -7
  47. package/dist/react.d.ts +0 -1
  48. package/dist/react.js +0 -2
  49. package/dist/react.js.map +0 -7
  50. 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`, `packetMagicLen`
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.2.5",
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",