entity-server-client 0.2.6 → 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 -0
- package/build.mjs +7 -0
- 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 -780
- package/docs/react.md +58 -0
- package/package.json +6 -1
- package/src/EntityServerClient.ts +5 -31
- package/src/client/base.ts +71 -12
- package/src/client/packet.ts +8 -31
- package/src/client/request.ts +52 -6
- package/src/client/utils.ts +5 -6
- package/src/mixins/auth.ts +14 -158
- package/src/mixins/push.ts +0 -23
- package/src/mixins/utils.ts +32 -1
- package/src/packet.ts +84 -0
- package/src/types.ts +15 -125
- package/tests/packet.test.mjs +50 -0
- package/dist/EntityServerClient.d.ts +0 -709
- package/dist/client/base.d.ts +0 -59
- package/dist/client/hmac.d.ts +0 -8
- package/dist/client/packet.d.ts +0 -24
- package/dist/client/request.d.ts +0 -15
- package/dist/client/utils.d.ts +0 -8
- 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/mixins/alimtalk.d.ts +0 -56
- package/dist/mixins/auth.d.ts +0 -167
- package/dist/mixins/email.d.ts +0 -51
- package/dist/mixins/entity.d.ts +0 -119
- package/dist/mixins/file.d.ts +0 -78
- package/dist/mixins/identity.d.ts +0 -52
- package/dist/mixins/pg.d.ts +0 -63
- package/dist/mixins/push.d.ts +0 -110
- package/dist/mixins/sms.d.ts +0 -55
- package/dist/mixins/smtp.d.ts +0 -44
- package/dist/mixins/utils.d.ts +0 -70
- 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 -329
- package/src/mixins/alimtalk.ts +0 -35
- package/src/mixins/email.ts +0 -46
- package/src/mixins/identity.ts +0 -35
- package/src/mixins/pg.ts +0 -58
- package/src/mixins/sms.ts +0 -46
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# 트랜잭션
|
|
2
|
+
|
|
3
|
+
여러 submit/delete를 하나의 DB 트랜잭션으로 묶습니다.
|
|
4
|
+
트랜잭션은 **5분 TTL**을 가집니다. 이 안에 commit 또는 rollback을 해야 합니다.
|
|
5
|
+
|
|
6
|
+
```
|
|
7
|
+
transStart → submit/delete (여러 개) → transCommit
|
|
8
|
+
└→ transRollback (실패 시)
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## `transStart()`
|
|
12
|
+
|
|
13
|
+
트랜잭션을 시작하고 내부 활성 트랜잭션 ID를 저장합니다.
|
|
14
|
+
이후 `submit()`/`delete()`는 `X-Transaction-ID` 헤더를 자동 포함합니다.
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
const txId = await client.transStart();
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## `transCommit(transactionId?)`
|
|
21
|
+
|
|
22
|
+
큐에 쌓인 모든 작업을 단일 DB 트랜잭션으로 일괄 실행합니다.
|
|
23
|
+
하나라도 실패하면 전체 ROLLBACK됩니다.
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
await client.transStart();
|
|
27
|
+
await client.submit("order", { product_seq: 1, qty: 2 });
|
|
28
|
+
await client.submit("inventory", { seq: 1, stock: 48 });
|
|
29
|
+
const result = await client.transCommit();
|
|
30
|
+
// result.results → [{ entity: "order", action: "submit", seq: 55 }, ...]
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
> **트랜잭션 중 submit 응답**: commit 전에는 `{ ok: true, queued: true, seq: "$tx.0" }` 형태의
|
|
34
|
+
> placeholder가 반환됩니다. `$tx.0`, `$tx.1` 값은 commit 시 실제 seq로 자동 치환되므로
|
|
35
|
+
> 후속 submit의 외래키 값으로 그대로 사용할 수 있습니다.
|
|
36
|
+
|
|
37
|
+
## `transRollback(transactionId?)`
|
|
38
|
+
|
|
39
|
+
- 아직 commit 전 (큐에 남아있음): 큐를 버립니다. DB에 아무 변경 없음.
|
|
40
|
+
- 이미 commit 후: history 기반으로 전체 되돌립니다.
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
try {
|
|
44
|
+
await client.transStart();
|
|
45
|
+
await client.submit("order", { ... });
|
|
46
|
+
await client.transCommit();
|
|
47
|
+
} catch (e) {
|
|
48
|
+
await client.transRollback(); // 활성 트랜잭션 자동 참조
|
|
49
|
+
}
|
|
50
|
+
```
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# QR코드 / 바코드
|
|
2
|
+
|
|
3
|
+
## `qrcode(content, opts?)`
|
|
4
|
+
|
|
5
|
+
QR 코드 PNG를 생성합니다. `ArrayBuffer`를 반환합니다.
|
|
6
|
+
|
|
7
|
+
| 옵션 | 타입 | 설명 |
|
|
8
|
+
| -------- | -------- | --------------------------------- |
|
|
9
|
+
| `size` | `number` | 이미지 크기 (px). 기본값 `256` |
|
|
10
|
+
| `level` | `string` | 오류 정정 레벨 `L \| M \| Q \| H` |
|
|
11
|
+
| `format` | `string` | 출력 포맷. 기본값 `"png"` |
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
const buf = await client.qrcode("https://example.com", { size: 300 });
|
|
15
|
+
const blob = new Blob([buf], { type: "image/png" });
|
|
16
|
+
img.src = URL.createObjectURL(blob);
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## `qrcodeBase64(content, opts?)`
|
|
20
|
+
|
|
21
|
+
QR 코드를 base64 / data URI JSON으로 반환합니다.
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
const res = await client.qrcodeBase64("https://example.com");
|
|
25
|
+
res.data_uri; // "data:image/png;base64,..."
|
|
26
|
+
res.data; // base64 문자열
|
|
27
|
+
img.src = res.data_uri;
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## `qrcodeText(content, opts?)`
|
|
31
|
+
|
|
32
|
+
QR 코드를 ASCII 아트 텍스트로 반환합니다.
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
const res = await client.qrcodeText("https://example.com");
|
|
36
|
+
console.log(res.text); // ASCII 아트 QR 코드
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## `barcode(content, opts?)`
|
|
40
|
+
|
|
41
|
+
바코드 PNG를 생성합니다. `ArrayBuffer`를 반환합니다.
|
|
42
|
+
|
|
43
|
+
| 옵션 | 타입 | 설명 |
|
|
44
|
+
| ------ | -------- | -------------------------------------------------- |
|
|
45
|
+
| `type` | `string` | 바코드 형식. 예: `"code128"`, `"ean13"`, `"qr"` 등 |
|
|
46
|
+
| `size` | `number` | 이미지 크기 |
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
const buf = await client.barcode("1234567890128", { type: "ean13" });
|
|
50
|
+
const blob = new Blob([buf], { type: "image/png" });
|
|
51
|
+
img.src = URL.createObjectURL(blob);
|
|
52
|
+
```
|