entity-client 1.0.8 → 1.0.9
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/dist/EntityAppServerApi.d.ts +112 -176
- package/dist/EntityServerApi.d.ts +57 -92
- package/dist/client/base.d.ts +16 -12
- package/dist/client/base.js +1 -1
- package/dist/client/base.js.map +3 -3
- package/dist/client/request.d.ts +2 -2
- package/dist/client/request.js +1 -1
- package/dist/client/request.js.map +3 -3
- package/dist/index.js +1 -1
- package/dist/index.js.map +3 -3
- package/dist/mixins/app/plugins/alimtalk.d.ts +7 -11
- package/dist/mixins/app/plugins/friendtalk.d.ts +7 -11
- package/dist/mixins/app/plugins/holidays.d.ts +7 -11
- package/dist/mixins/app/plugins/identity.d.ts +7 -11
- package/dist/mixins/app/plugins/llm.d.ts +7 -11
- package/dist/mixins/app/plugins/ocr.d.ts +7 -11
- package/dist/mixins/app/plugins/pg.d.ts +7 -11
- package/dist/mixins/app/plugins/push.d.ts +7 -11
- package/dist/mixins/app/plugins/sms.d.ts +7 -11
- package/dist/mixins/app/plugins/taxinvoice.d.ts +7 -11
- package/dist/mixins/app/routes/account.d.ts +7 -11
- package/dist/mixins/app/routes/board.d.ts +7 -11
- package/dist/mixins/app/routes/email-verify.d.ts +7 -11
- package/dist/mixins/app/routes/oauth.d.ts +7 -11
- package/dist/mixins/app/routes/password-reset.d.ts +7 -11
- package/dist/mixins/app/routes/two-factor.d.ts +7 -11
- package/dist/mixins/server/admin.d.ts +7 -11
- package/dist/mixins/server/auth.d.ts +9 -16
- package/dist/mixins/server/auth.js +1 -1
- package/dist/mixins/server/auth.js.map +2 -2
- package/dist/mixins/server/entity.d.ts +7 -11
- package/dist/mixins/server/file.d.ts +7 -11
- package/dist/mixins/server/push.d.ts +7 -11
- package/dist/mixins/server/smtp.d.ts +7 -11
- package/dist/mixins/server/transaction.d.ts +7 -11
- package/dist/mixins/server/utils.d.ts +7 -11
- package/dist/react.js +1 -1
- package/dist/react.js.map +3 -3
- package/dist/types.d.ts +17 -10
- package/package.json +1 -1
|
@@ -43,10 +43,9 @@ declare const EntityServerApi_base: {
|
|
|
43
43
|
hmacSecret: string;
|
|
44
44
|
encryptRequests: boolean;
|
|
45
45
|
csrfEnabled: boolean;
|
|
46
|
-
csrfToken: string;
|
|
47
46
|
csrfHeaderName: string;
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
csrfCookieName: string;
|
|
48
|
+
_csrfRefresher: (() => Promise<void>) | null;
|
|
50
49
|
activeTxId: string | null;
|
|
51
50
|
keepSession: boolean;
|
|
52
51
|
refreshBuffer: number;
|
|
@@ -54,27 +53,24 @@ declare const EntityServerApi_base: {
|
|
|
54
53
|
onSessionExpired?: (error: Error) => void;
|
|
55
54
|
_sessionRefreshToken: string | null;
|
|
56
55
|
_refreshTimer: ReturnType<typeof setTimeout> | null;
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
_healthTickTimer: ReturnType<typeof setInterval> | null;
|
|
57
|
+
_healthTickPromise: Promise<unknown> | null;
|
|
59
58
|
configure(options: Partial<import("./types.js").EntityServerClientOptions>): void;
|
|
60
59
|
setToken(token: string): void;
|
|
61
60
|
setAnonymousPacketToken(token: string): void;
|
|
62
61
|
setApiKey(apiKey: string): void;
|
|
63
62
|
setHmacSecret(secret: string): void;
|
|
64
63
|
setEncryptRequests(value: boolean): void;
|
|
65
|
-
setCsrfToken(token: string): void;
|
|
66
64
|
setCsrfEnabled(enabled: boolean): void;
|
|
65
|
+
startHealthTick(intervalMs?: number): void;
|
|
66
|
+
stopHealthTick(): void;
|
|
67
67
|
_scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
|
|
68
68
|
access_token: string;
|
|
69
69
|
expires_in: number;
|
|
70
70
|
}>): void;
|
|
71
71
|
_clearRefreshTimer(): void;
|
|
72
72
|
stopKeepSession(): void;
|
|
73
|
-
|
|
74
|
-
stopCsrfRefresh(): void;
|
|
75
|
-
_scheduleCsrfRefresh(expiresIn: number): void;
|
|
76
|
-
refreshCsrfToken(): Promise<string>;
|
|
77
|
-
_applyCsrfHealth(csrf?: import("./types.js").EntityServerClientHealthCsrf | null): void;
|
|
73
|
+
_applyCsrfHealth(): void;
|
|
78
74
|
readRequestBody<T = Record<string, unknown>>(body: ArrayBuffer | Uint8Array | string | T | null | undefined, contentType?: string, requireEncrypted?: boolean): T;
|
|
79
75
|
get _reqOpts(): import("./client/request.js").RequestOptions;
|
|
80
76
|
get http(): {
|
|
@@ -104,10 +100,9 @@ declare const EntityServerApi_base: {
|
|
|
104
100
|
hmacSecret: string;
|
|
105
101
|
encryptRequests: boolean;
|
|
106
102
|
csrfEnabled: boolean;
|
|
107
|
-
csrfToken: string;
|
|
108
103
|
csrfHeaderName: string;
|
|
109
|
-
|
|
110
|
-
|
|
104
|
+
csrfCookieName: string;
|
|
105
|
+
_csrfRefresher: (() => Promise<void>) | null;
|
|
111
106
|
activeTxId: string | null;
|
|
112
107
|
keepSession: boolean;
|
|
113
108
|
refreshBuffer: number;
|
|
@@ -115,27 +110,24 @@ declare const EntityServerApi_base: {
|
|
|
115
110
|
onSessionExpired?: (error: Error) => void;
|
|
116
111
|
_sessionRefreshToken: string | null;
|
|
117
112
|
_refreshTimer: ReturnType<typeof setTimeout> | null;
|
|
118
|
-
|
|
119
|
-
|
|
113
|
+
_healthTickTimer: ReturnType<typeof setInterval> | null;
|
|
114
|
+
_healthTickPromise: Promise<unknown> | null;
|
|
120
115
|
configure(options: Partial<import("./types.js").EntityServerClientOptions>): void;
|
|
121
116
|
setToken(token: string): void;
|
|
122
117
|
setAnonymousPacketToken(token: string): void;
|
|
123
118
|
setApiKey(apiKey: string): void;
|
|
124
119
|
setHmacSecret(secret: string): void;
|
|
125
120
|
setEncryptRequests(value: boolean): void;
|
|
126
|
-
setCsrfToken(token: string): void;
|
|
127
121
|
setCsrfEnabled(enabled: boolean): void;
|
|
122
|
+
startHealthTick(intervalMs?: number): void;
|
|
123
|
+
stopHealthTick(): void;
|
|
128
124
|
_scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
|
|
129
125
|
access_token: string;
|
|
130
126
|
expires_in: number;
|
|
131
127
|
}>): void;
|
|
132
128
|
_clearRefreshTimer(): void;
|
|
133
129
|
stopKeepSession(): void;
|
|
134
|
-
|
|
135
|
-
stopCsrfRefresh(): void;
|
|
136
|
-
_scheduleCsrfRefresh(expiresIn: number): void;
|
|
137
|
-
refreshCsrfToken(): Promise<string>;
|
|
138
|
-
_applyCsrfHealth(csrf?: import("./types.js").EntityServerClientHealthCsrf | null): void;
|
|
130
|
+
_applyCsrfHealth(): void;
|
|
139
131
|
readRequestBody<T = Record<string, unknown>>(body: ArrayBuffer | Uint8Array | string | T | null | undefined, contentType?: string, requireEncrypted?: boolean): T;
|
|
140
132
|
get _reqOpts(): import("./client/request.js").RequestOptions;
|
|
141
133
|
get http(): {
|
|
@@ -194,10 +186,9 @@ declare const EntityServerApi_base: {
|
|
|
194
186
|
hmacSecret: string;
|
|
195
187
|
encryptRequests: boolean;
|
|
196
188
|
csrfEnabled: boolean;
|
|
197
|
-
csrfToken: string;
|
|
198
189
|
csrfHeaderName: string;
|
|
199
|
-
|
|
200
|
-
|
|
190
|
+
csrfCookieName: string;
|
|
191
|
+
_csrfRefresher: (() => Promise<void>) | null;
|
|
201
192
|
activeTxId: string | null;
|
|
202
193
|
keepSession: boolean;
|
|
203
194
|
refreshBuffer: number;
|
|
@@ -205,27 +196,24 @@ declare const EntityServerApi_base: {
|
|
|
205
196
|
onSessionExpired?: (error: Error) => void;
|
|
206
197
|
_sessionRefreshToken: string | null;
|
|
207
198
|
_refreshTimer: ReturnType<typeof setTimeout> | null;
|
|
208
|
-
|
|
209
|
-
|
|
199
|
+
_healthTickTimer: ReturnType<typeof setInterval> | null;
|
|
200
|
+
_healthTickPromise: Promise<unknown> | null;
|
|
210
201
|
configure(options: Partial<import("./types.js").EntityServerClientOptions>): void;
|
|
211
202
|
setToken(token: string): void;
|
|
212
203
|
setAnonymousPacketToken(token: string): void;
|
|
213
204
|
setApiKey(apiKey: string): void;
|
|
214
205
|
setHmacSecret(secret: string): void;
|
|
215
206
|
setEncryptRequests(value: boolean): void;
|
|
216
|
-
setCsrfToken(token: string): void;
|
|
217
207
|
setCsrfEnabled(enabled: boolean): void;
|
|
208
|
+
startHealthTick(intervalMs?: number): void;
|
|
209
|
+
stopHealthTick(): void;
|
|
218
210
|
_scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
|
|
219
211
|
access_token: string;
|
|
220
212
|
expires_in: number;
|
|
221
213
|
}>): void;
|
|
222
214
|
_clearRefreshTimer(): void;
|
|
223
215
|
stopKeepSession(): void;
|
|
224
|
-
|
|
225
|
-
stopCsrfRefresh(): void;
|
|
226
|
-
_scheduleCsrfRefresh(expiresIn: number): void;
|
|
227
|
-
refreshCsrfToken(): Promise<string>;
|
|
228
|
-
_applyCsrfHealth(csrf?: import("./types.js").EntityServerClientHealthCsrf | null): void;
|
|
216
|
+
_applyCsrfHealth(): void;
|
|
229
217
|
readRequestBody<T = Record<string, unknown>>(body: ArrayBuffer | Uint8Array | string | T | null | undefined, contentType?: string, requireEncrypted?: boolean): T;
|
|
230
218
|
get _reqOpts(): import("./client/request.js").RequestOptions;
|
|
231
219
|
get http(): {
|
|
@@ -261,10 +249,9 @@ declare const EntityServerApi_base: {
|
|
|
261
249
|
hmacSecret: string;
|
|
262
250
|
encryptRequests: boolean;
|
|
263
251
|
csrfEnabled: boolean;
|
|
264
|
-
csrfToken: string;
|
|
265
252
|
csrfHeaderName: string;
|
|
266
|
-
|
|
267
|
-
|
|
253
|
+
csrfCookieName: string;
|
|
254
|
+
_csrfRefresher: (() => Promise<void>) | null;
|
|
268
255
|
activeTxId: string | null;
|
|
269
256
|
keepSession: boolean;
|
|
270
257
|
refreshBuffer: number;
|
|
@@ -272,27 +259,24 @@ declare const EntityServerApi_base: {
|
|
|
272
259
|
onSessionExpired?: (error: Error) => void;
|
|
273
260
|
_sessionRefreshToken: string | null;
|
|
274
261
|
_refreshTimer: ReturnType<typeof setTimeout> | null;
|
|
275
|
-
|
|
276
|
-
|
|
262
|
+
_healthTickTimer: ReturnType<typeof setInterval> | null;
|
|
263
|
+
_healthTickPromise: Promise<unknown> | null;
|
|
277
264
|
configure(options: Partial<import("./types.js").EntityServerClientOptions>): void;
|
|
278
265
|
setToken(token: string): void;
|
|
279
266
|
setAnonymousPacketToken(token: string): void;
|
|
280
267
|
setApiKey(apiKey: string): void;
|
|
281
268
|
setHmacSecret(secret: string): void;
|
|
282
269
|
setEncryptRequests(value: boolean): void;
|
|
283
|
-
setCsrfToken(token: string): void;
|
|
284
270
|
setCsrfEnabled(enabled: boolean): void;
|
|
271
|
+
startHealthTick(intervalMs?: number): void;
|
|
272
|
+
stopHealthTick(): void;
|
|
285
273
|
_scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
|
|
286
274
|
access_token: string;
|
|
287
275
|
expires_in: number;
|
|
288
276
|
}>): void;
|
|
289
277
|
_clearRefreshTimer(): void;
|
|
290
278
|
stopKeepSession(): void;
|
|
291
|
-
|
|
292
|
-
stopCsrfRefresh(): void;
|
|
293
|
-
_scheduleCsrfRefresh(expiresIn: number): void;
|
|
294
|
-
refreshCsrfToken(): Promise<string>;
|
|
295
|
-
_applyCsrfHealth(csrf?: import("./types.js").EntityServerClientHealthCsrf | null): void;
|
|
279
|
+
_applyCsrfHealth(): void;
|
|
296
280
|
readRequestBody<T = Record<string, unknown>>(body: ArrayBuffer | Uint8Array | string | T | null | undefined, contentType?: string, requireEncrypted?: boolean): T;
|
|
297
281
|
get _reqOpts(): import("./client/request.js").RequestOptions;
|
|
298
282
|
get http(): {
|
|
@@ -346,10 +330,9 @@ declare const EntityServerApi_base: {
|
|
|
346
330
|
hmacSecret: string;
|
|
347
331
|
encryptRequests: boolean;
|
|
348
332
|
csrfEnabled: boolean;
|
|
349
|
-
csrfToken: string;
|
|
350
333
|
csrfHeaderName: string;
|
|
351
|
-
|
|
352
|
-
|
|
334
|
+
csrfCookieName: string;
|
|
335
|
+
_csrfRefresher: (() => Promise<void>) | null;
|
|
353
336
|
activeTxId: string | null;
|
|
354
337
|
keepSession: boolean;
|
|
355
338
|
refreshBuffer: number;
|
|
@@ -357,27 +340,24 @@ declare const EntityServerApi_base: {
|
|
|
357
340
|
onSessionExpired?: (error: Error) => void;
|
|
358
341
|
_sessionRefreshToken: string | null;
|
|
359
342
|
_refreshTimer: ReturnType<typeof setTimeout> | null;
|
|
360
|
-
|
|
361
|
-
|
|
343
|
+
_healthTickTimer: ReturnType<typeof setInterval> | null;
|
|
344
|
+
_healthTickPromise: Promise<unknown> | null;
|
|
362
345
|
configure(options: Partial<import("./types.js").EntityServerClientOptions>): void;
|
|
363
346
|
setToken(token: string): void;
|
|
364
347
|
setAnonymousPacketToken(token: string): void;
|
|
365
348
|
setApiKey(apiKey: string): void;
|
|
366
349
|
setHmacSecret(secret: string): void;
|
|
367
350
|
setEncryptRequests(value: boolean): void;
|
|
368
|
-
setCsrfToken(token: string): void;
|
|
369
351
|
setCsrfEnabled(enabled: boolean): void;
|
|
352
|
+
startHealthTick(intervalMs?: number): void;
|
|
353
|
+
stopHealthTick(): void;
|
|
370
354
|
_scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
|
|
371
355
|
access_token: string;
|
|
372
356
|
expires_in: number;
|
|
373
357
|
}>): void;
|
|
374
358
|
_clearRefreshTimer(): void;
|
|
375
359
|
stopKeepSession(): void;
|
|
376
|
-
|
|
377
|
-
stopCsrfRefresh(): void;
|
|
378
|
-
_scheduleCsrfRefresh(expiresIn: number): void;
|
|
379
|
-
refreshCsrfToken(): Promise<string>;
|
|
380
|
-
_applyCsrfHealth(csrf?: import("./types.js").EntityServerClientHealthCsrf | null): void;
|
|
360
|
+
_applyCsrfHealth(): void;
|
|
381
361
|
readRequestBody<T = Record<string, unknown>>(body: ArrayBuffer | Uint8Array | string | T | null | undefined, contentType?: string, requireEncrypted?: boolean): T;
|
|
382
362
|
get _reqOpts(): import("./client/request.js").RequestOptions;
|
|
383
363
|
get http(): {
|
|
@@ -466,10 +446,9 @@ declare const EntityServerApi_base: {
|
|
|
466
446
|
hmacSecret: string;
|
|
467
447
|
encryptRequests: boolean;
|
|
468
448
|
csrfEnabled: boolean;
|
|
469
|
-
csrfToken: string;
|
|
470
449
|
csrfHeaderName: string;
|
|
471
|
-
|
|
472
|
-
|
|
450
|
+
csrfCookieName: string;
|
|
451
|
+
_csrfRefresher: (() => Promise<void>) | null;
|
|
473
452
|
activeTxId: string | null;
|
|
474
453
|
keepSession: boolean;
|
|
475
454
|
refreshBuffer: number;
|
|
@@ -477,27 +456,24 @@ declare const EntityServerApi_base: {
|
|
|
477
456
|
onSessionExpired?: (error: Error) => void;
|
|
478
457
|
_sessionRefreshToken: string | null;
|
|
479
458
|
_refreshTimer: ReturnType<typeof setTimeout> | null;
|
|
480
|
-
|
|
481
|
-
|
|
459
|
+
_healthTickTimer: ReturnType<typeof setInterval> | null;
|
|
460
|
+
_healthTickPromise: Promise<unknown> | null;
|
|
482
461
|
configure(options: Partial<import("./types.js").EntityServerClientOptions>): void;
|
|
483
462
|
setToken(token: string): void;
|
|
484
463
|
setAnonymousPacketToken(token: string): void;
|
|
485
464
|
setApiKey(apiKey: string): void;
|
|
486
465
|
setHmacSecret(secret: string): void;
|
|
487
466
|
setEncryptRequests(value: boolean): void;
|
|
488
|
-
setCsrfToken(token: string): void;
|
|
489
467
|
setCsrfEnabled(enabled: boolean): void;
|
|
468
|
+
startHealthTick(intervalMs?: number): void;
|
|
469
|
+
stopHealthTick(): void;
|
|
490
470
|
_scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
|
|
491
471
|
access_token: string;
|
|
492
472
|
expires_in: number;
|
|
493
473
|
}>): void;
|
|
494
474
|
_clearRefreshTimer(): void;
|
|
495
475
|
stopKeepSession(): void;
|
|
496
|
-
|
|
497
|
-
stopCsrfRefresh(): void;
|
|
498
|
-
_scheduleCsrfRefresh(expiresIn: number): void;
|
|
499
|
-
refreshCsrfToken(): Promise<string>;
|
|
500
|
-
_applyCsrfHealth(csrf?: import("./types.js").EntityServerClientHealthCsrf | null): void;
|
|
476
|
+
_applyCsrfHealth(): void;
|
|
501
477
|
readRequestBody<T = Record<string, unknown>>(body: ArrayBuffer | Uint8Array | string | T | null | undefined, contentType?: string, requireEncrypted?: boolean): T;
|
|
502
478
|
get _reqOpts(): import("./client/request.js").RequestOptions;
|
|
503
479
|
get http(): {
|
|
@@ -590,10 +566,9 @@ declare const EntityServerApi_base: {
|
|
|
590
566
|
hmacSecret: string;
|
|
591
567
|
encryptRequests: boolean;
|
|
592
568
|
csrfEnabled: boolean;
|
|
593
|
-
csrfToken: string;
|
|
594
569
|
csrfHeaderName: string;
|
|
595
|
-
|
|
596
|
-
|
|
570
|
+
csrfCookieName: string;
|
|
571
|
+
_csrfRefresher: (() => Promise<void>) | null;
|
|
597
572
|
activeTxId: string | null;
|
|
598
573
|
keepSession: boolean;
|
|
599
574
|
refreshBuffer: number;
|
|
@@ -601,27 +576,24 @@ declare const EntityServerApi_base: {
|
|
|
601
576
|
onSessionExpired?: (error: Error) => void;
|
|
602
577
|
_sessionRefreshToken: string | null;
|
|
603
578
|
_refreshTimer: ReturnType<typeof setTimeout> | null;
|
|
604
|
-
|
|
605
|
-
|
|
579
|
+
_healthTickTimer: ReturnType<typeof setInterval> | null;
|
|
580
|
+
_healthTickPromise: Promise<unknown> | null;
|
|
606
581
|
configure(options: Partial<import("./types.js").EntityServerClientOptions>): void;
|
|
607
582
|
setToken(token: string): void;
|
|
608
583
|
setAnonymousPacketToken(token: string): void;
|
|
609
584
|
setApiKey(apiKey: string): void;
|
|
610
585
|
setHmacSecret(secret: string): void;
|
|
611
586
|
setEncryptRequests(value: boolean): void;
|
|
612
|
-
setCsrfToken(token: string): void;
|
|
613
587
|
setCsrfEnabled(enabled: boolean): void;
|
|
588
|
+
startHealthTick(intervalMs?: number): void;
|
|
589
|
+
stopHealthTick(): void;
|
|
614
590
|
_scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
|
|
615
591
|
access_token: string;
|
|
616
592
|
expires_in: number;
|
|
617
593
|
}>): void;
|
|
618
594
|
_clearRefreshTimer(): void;
|
|
619
595
|
stopKeepSession(): void;
|
|
620
|
-
|
|
621
|
-
stopCsrfRefresh(): void;
|
|
622
|
-
_scheduleCsrfRefresh(expiresIn: number): void;
|
|
623
|
-
refreshCsrfToken(): Promise<string>;
|
|
624
|
-
_applyCsrfHealth(csrf?: import("./types.js").EntityServerClientHealthCsrf | null): void;
|
|
596
|
+
_applyCsrfHealth(): void;
|
|
625
597
|
readRequestBody<T = Record<string, unknown>>(body: ArrayBuffer | Uint8Array | string | T | null | undefined, contentType?: string, requireEncrypted?: boolean): T;
|
|
626
598
|
get _reqOpts(): import("./client/request.js").RequestOptions;
|
|
627
599
|
get http(): {
|
|
@@ -641,12 +613,10 @@ declare const EntityServerApi_base: {
|
|
|
641
613
|
};
|
|
642
614
|
} & {
|
|
643
615
|
new (...args: any[]): {
|
|
616
|
+
_csrfRefresher: () => Promise<void>;
|
|
644
617
|
checkHealth(): Promise<{
|
|
645
|
-
|
|
646
|
-
packet_encryption?: boolean;
|
|
647
|
-
packet_mode?: string;
|
|
618
|
+
status: string;
|
|
648
619
|
packet_token?: string;
|
|
649
|
-
csrf?: import("./types.js").EntityServerClientHealthCsrf;
|
|
650
620
|
}>;
|
|
651
621
|
login(email: string, password: string): Promise<{
|
|
652
622
|
access_token: string;
|
|
@@ -677,10 +647,8 @@ declare const EntityServerApi_base: {
|
|
|
677
647
|
hmacSecret: string;
|
|
678
648
|
encryptRequests: boolean;
|
|
679
649
|
csrfEnabled: boolean;
|
|
680
|
-
csrfToken: string;
|
|
681
650
|
csrfHeaderName: string;
|
|
682
|
-
|
|
683
|
-
csrfRefreshBuffer: number;
|
|
651
|
+
csrfCookieName: string;
|
|
684
652
|
activeTxId: string | null;
|
|
685
653
|
keepSession: boolean;
|
|
686
654
|
refreshBuffer: number;
|
|
@@ -688,27 +656,24 @@ declare const EntityServerApi_base: {
|
|
|
688
656
|
onSessionExpired?: (error: Error) => void;
|
|
689
657
|
_sessionRefreshToken: string | null;
|
|
690
658
|
_refreshTimer: ReturnType<typeof setTimeout> | null;
|
|
691
|
-
|
|
692
|
-
|
|
659
|
+
_healthTickTimer: ReturnType<typeof setInterval> | null;
|
|
660
|
+
_healthTickPromise: Promise<unknown> | null;
|
|
693
661
|
configure(options: Partial<import("./types.js").EntityServerClientOptions>): void;
|
|
694
662
|
setToken(token: string): void;
|
|
695
663
|
setAnonymousPacketToken(token: string): void;
|
|
696
664
|
setApiKey(apiKey: string): void;
|
|
697
665
|
setHmacSecret(secret: string): void;
|
|
698
666
|
setEncryptRequests(value: boolean): void;
|
|
699
|
-
setCsrfToken(token: string): void;
|
|
700
667
|
setCsrfEnabled(enabled: boolean): void;
|
|
668
|
+
startHealthTick(intervalMs?: number): void;
|
|
669
|
+
stopHealthTick(): void;
|
|
701
670
|
_scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
|
|
702
671
|
access_token: string;
|
|
703
672
|
expires_in: number;
|
|
704
673
|
}>): void;
|
|
705
674
|
_clearRefreshTimer(): void;
|
|
706
675
|
stopKeepSession(): void;
|
|
707
|
-
|
|
708
|
-
stopCsrfRefresh(): void;
|
|
709
|
-
_scheduleCsrfRefresh(expiresIn: number): void;
|
|
710
|
-
refreshCsrfToken(): Promise<string>;
|
|
711
|
-
_applyCsrfHealth(csrf?: import("./types.js").EntityServerClientHealthCsrf | null): void;
|
|
676
|
+
_applyCsrfHealth(): void;
|
|
712
677
|
readRequestBody<T = Record<string, unknown>>(body: ArrayBuffer | Uint8Array | string | T | null | undefined, contentType?: string, requireEncrypted?: boolean): T;
|
|
713
678
|
get _reqOpts(): import("./client/request.js").RequestOptions;
|
|
714
679
|
get http(): {
|
package/dist/client/base.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { EntityServerClientOptions } from "../types.js";
|
|
2
2
|
import { type RequestOptions } from "./request.js";
|
|
3
3
|
export type GConstructor<T = object> = new (...args: any[]) => T;
|
|
4
4
|
export declare class EntityServerClientBase {
|
|
@@ -9,10 +9,10 @@ export declare class EntityServerClientBase {
|
|
|
9
9
|
hmacSecret: string;
|
|
10
10
|
encryptRequests: boolean;
|
|
11
11
|
csrfEnabled: boolean;
|
|
12
|
-
csrfToken: string;
|
|
13
12
|
csrfHeaderName: string;
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
csrfCookieName: string;
|
|
14
|
+
/** @internal health 재호출로 CSRF 쿠키 갱신 (AuthMixin에서 설정) */
|
|
15
|
+
_csrfRefresher: (() => Promise<void>) | null;
|
|
16
16
|
activeTxId: string | null;
|
|
17
17
|
keepSession: boolean;
|
|
18
18
|
refreshBuffer: number;
|
|
@@ -20,8 +20,8 @@ export declare class EntityServerClientBase {
|
|
|
20
20
|
onSessionExpired?: (error: Error) => void;
|
|
21
21
|
_sessionRefreshToken: string | null;
|
|
22
22
|
_refreshTimer: ReturnType<typeof setTimeout> | null;
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
_healthTickTimer: ReturnType<typeof setInterval> | null;
|
|
24
|
+
_healthTickPromise: Promise<unknown> | null;
|
|
25
25
|
/**
|
|
26
26
|
* EntityServerClient 인스턴스를 생성합니다.
|
|
27
27
|
*
|
|
@@ -41,8 +41,16 @@ export declare class EntityServerClientBase {
|
|
|
41
41
|
setHmacSecret(secret: string): void;
|
|
42
42
|
/** 암호화 요청 활성화 여부를 설정합니다. */
|
|
43
43
|
setEncryptRequests(value: boolean): void;
|
|
44
|
-
setCsrfToken(token: string): void;
|
|
45
44
|
setCsrfEnabled(enabled: boolean): void;
|
|
45
|
+
/**
|
|
46
|
+
* 주기적으로 health 체크를 실행합니다.
|
|
47
|
+
* CSRF 쿠키 갱신과 서버 상태 확인을 자동화합니다.
|
|
48
|
+
*
|
|
49
|
+
* @param intervalMs 호출 주기(ms). 기본값: 5분
|
|
50
|
+
*/
|
|
51
|
+
startHealthTick(intervalMs?: number): void;
|
|
52
|
+
/** health tick 타이머를 중지합니다. */
|
|
53
|
+
stopHealthTick(): void;
|
|
46
54
|
/** @internal 자동 토큰 갱신 타이머를 시작합니다. */
|
|
47
55
|
_scheduleKeepSession(refreshToken: string, expiresIn: number, refreshFn: (rt: string) => Promise<{
|
|
48
56
|
access_token: string;
|
|
@@ -55,11 +63,7 @@ export declare class EntityServerClientBase {
|
|
|
55
63
|
* `logout()` 호출 시 자동으로 중지되며, 직접 호출이 필요한 경우는 드뭅니다.
|
|
56
64
|
*/
|
|
57
65
|
stopKeepSession(): void;
|
|
58
|
-
|
|
59
|
-
stopCsrfRefresh(): void;
|
|
60
|
-
_scheduleCsrfRefresh(expiresIn: number): void;
|
|
61
|
-
refreshCsrfToken(): Promise<string>;
|
|
62
|
-
_applyCsrfHealth(csrf?: EntityServerClientHealthCsrf | null): void;
|
|
66
|
+
_applyCsrfHealth(): void;
|
|
63
67
|
/**
|
|
64
68
|
* 요청 바디를 파싱합니다.
|
|
65
69
|
* `application/octet-stream`이면 XChaCha20-Poly1305 복호화, 그 외는 JSON 파싱합니다.
|
package/dist/client/base.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{readEnv as
|
|
1
|
+
import{readEnv as c}from"./utils.js";import{derivePacketKey as f,parseRequestBody as u}from"./packet.js";import{entityRequest as h}from"./request.js";class y{baseUrl;token;anonymousPacketToken;apiKey;hmacSecret;encryptRequests;csrfEnabled;csrfHeaderName;csrfCookieName;_csrfRefresher=null;activeTxId=null;keepSession;refreshBuffer;onTokenRefreshed;onSessionExpired;_sessionRefreshToken=null;_refreshTimer=null;_healthTickTimer=null;_healthTickPromise=null;constructor(e={}){const r=c("VITE_ENTITY_SERVER_URL");this.baseUrl=(e.baseUrl??r??"").replace(/\/$/,""),this.token=e.token??"",this.anonymousPacketToken=e.anonymousPacketToken??"",this.apiKey=e.apiKey??"",this.hmacSecret=e.hmacSecret??"",this.encryptRequests=e.encryptRequests??!1,this.csrfEnabled=e.csrfEnabled??!1,this.csrfHeaderName=e.csrfHeaderName??"x-csrf-token",this.csrfCookieName=e.csrfCookieName??"_csrf",this.keepSession=e.keepSession??!1,this.refreshBuffer=e.refreshBuffer??60,this.onTokenRefreshed=e.onTokenRefreshed,this.onSessionExpired=e.onSessionExpired,typeof e.healthTickInterval=="number"&&e.healthTickInterval>0&&Promise.resolve().then(()=>this.startHealthTick(e.healthTickInterval))}configure(e){typeof e.baseUrl=="string"&&(this.baseUrl=e.baseUrl.replace(/\/$/,"")),typeof e.token=="string"&&(this.token=e.token),typeof e.anonymousPacketToken=="string"&&(this.anonymousPacketToken=e.anonymousPacketToken),typeof e.encryptRequests=="boolean"&&(this.encryptRequests=e.encryptRequests),typeof e.csrfEnabled=="boolean"&&(this.csrfEnabled=e.csrfEnabled),typeof e.csrfHeaderName=="string"&&(this.csrfHeaderName=e.csrfHeaderName),typeof e.csrfCookieName=="string"&&(this.csrfCookieName=e.csrfCookieName),typeof e.apiKey=="string"&&(this.apiKey=e.apiKey),typeof e.hmacSecret=="string"&&(this.hmacSecret=e.hmacSecret),typeof e.keepSession=="boolean"&&(this.keepSession=e.keepSession),typeof e.refreshBuffer=="number"&&(this.refreshBuffer=e.refreshBuffer),e.onTokenRefreshed&&(this.onTokenRefreshed=e.onTokenRefreshed),e.onSessionExpired&&(this.onSessionExpired=e.onSessionExpired),typeof e.healthTickInterval=="number"&&e.healthTickInterval>0&&Promise.resolve().then(()=>this.startHealthTick(e.healthTickInterval))}setToken(e){this.token=e}setAnonymousPacketToken(e){this.anonymousPacketToken=e}setApiKey(e){this.apiKey=e}setHmacSecret(e){this.hmacSecret=e}setEncryptRequests(e){this.encryptRequests=e}setCsrfEnabled(e){this.csrfEnabled=e}startHealthTick(e=300*1e3){this.stopHealthTick();const r=()=>{this._healthTickPromise||(this._healthTickPromise=(this._csrfRefresher?this._csrfRefresher():Promise.resolve()).catch(()=>{}).finally(()=>{this._healthTickPromise=null}))};r(),this._healthTickTimer=setInterval(r,e)}stopHealthTick(){this._healthTickTimer!==null&&(clearInterval(this._healthTickTimer),this._healthTickTimer=null),this._healthTickPromise=null}_scheduleKeepSession(e,r,s){this._clearRefreshTimer(),this._sessionRefreshToken=e;const i=Math.max((r-this.refreshBuffer)*1e3,0);this._refreshTimer=setTimeout(async()=>{if(this._sessionRefreshToken)try{const t=await s(this._sessionRefreshToken);this.onTokenRefreshed?.(t.access_token,t.expires_in),this._scheduleKeepSession(this._sessionRefreshToken,t.expires_in,s)}catch(t){this._clearRefreshTimer(),this.onSessionExpired?.(t instanceof Error?t:new Error(String(t)))}},i)}_clearRefreshTimer(){this._refreshTimer!==null&&(clearTimeout(this._refreshTimer),this._refreshTimer=null)}stopKeepSession(){this._clearRefreshTimer(),this._sessionRefreshToken=null}_applyCsrfHealth(){if(!(typeof document>"u")){for(const e of document.cookie.split(";")){const r=e.indexOf("=");if(!(r<0)&&e.substring(0,r).trim()===this.csrfCookieName){this.csrfEnabled=!!e.substring(r+1).trim();return}}this.csrfEnabled=!1}}readRequestBody(e,r="application/json",s=!1){const i=f(this.hmacSecret,this.token||this.anonymousPacketToken);return u(e,r,s,i)}get _reqOpts(){return{baseUrl:this.baseUrl,token:this.token,anonymousPacketToken:this.anonymousPacketToken,apiKey:this.apiKey,hmacSecret:this.hmacSecret,encryptRequests:this.encryptRequests,csrfEnabled:this.csrfEnabled,csrfHeaderName:this.csrfHeaderName,csrfCookieName:this.csrfCookieName,refreshCsrfCookie:this.csrfEnabled?this._csrfRefresher:null}}get http(){const e=this;return{get(r,s=!0,i){return h(e._reqOpts,"GET",r,void 0,s,i,!1)},post(r,s,i=!0,t){return h(e._reqOpts,"POST",r,s,i,t,!1)},put(r,s,i=!0,t){return h(e._reqOpts,"PUT",r,s,i,t,!1)},patch(r,s,i=!0,t){return h(e._reqOpts,"PATCH",r,s,i,t,!1)},delete(r,s,i=!0,t){return h(e._reqOpts,"DELETE",r,s,i,t,!1)}}}requestBinary(e,r,s,i=!0){return this._requestBinary(e,r,s,i)}requestForm(e,r,s,i=!0){return this._requestForm(e,r,s,i)}requestFormBinary(e,r,s,i=!0){return this._requestFormBinary(e,r,s,i)}_request(e,r,s,i=!0,t){return h(this._reqOpts,e,r,s,i,t,!0)}async _requestBinary(e,r,s,i=!0){const t={"Content-Type":"application/json"};i&&this.token&&(t.Authorization=`Bearer ${this.token}`),this.apiKey&&(t["X-API-Key"]=this.apiKey);const n=await fetch(this.baseUrl+r,{method:e,headers:t,...s!=null?{body:JSON.stringify(s)}:{},credentials:"include"});if(!n.ok){const o=await n.text(),a=new Error(`HTTP ${n.status}: ${o}`);throw a.status=n.status,a}return n.arrayBuffer()}async _requestForm(e,r,s,i=!0){const t={};i&&this.token&&(t.Authorization=`Bearer ${this.token}`),this.apiKey&&(t["X-API-Key"]=this.apiKey);const n=await fetch(this.baseUrl+r,{method:e,headers:t,body:s,credentials:"include"}),o=await n.json();if(!o.ok){const a=new Error(o.message??`EntityServer error (HTTP ${n.status})`);throw a.status=n.status,a}return o}async _requestFormBinary(e,r,s,i=!0){const t={};i&&this.token&&(t.Authorization=`Bearer ${this.token}`),this.apiKey&&(t["X-API-Key"]=this.apiKey);const n=await fetch(this.baseUrl+r,{method:e,headers:t,body:s,credentials:"include"});if(!n.ok){const o=await n.text(),a=new Error(`HTTP ${n.status}: ${o}`);throw a.status=n.status,a}return n.arrayBuffer()}}export{y as EntityServerClientBase};
|
|
2
2
|
//# sourceMappingURL=base.js.map
|
package/dist/client/base.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/client/base.ts"],
|
|
4
|
-
"sourcesContent": ["import type {\n EntityServerClientHealthCsrf,\n EntityServerClientOptions,\n} from \"../types.js\";\nimport { readEnv } from \"./utils.js\";\nimport { derivePacketKey, parseRequestBody } from \"./packet.js\";\nimport { entityRequest, type RequestOptions } from \"./request.js\";\n\n// mixin \uD5EC\uD37C \uD0C0\uC785\nexport type GConstructor<T = object> = new (...args: any[]) => T;\n\nexport class EntityServerClientBase {\n baseUrl: string;\n token: string;\n anonymousPacketToken: string;\n apiKey: string;\n hmacSecret: string;\n encryptRequests: boolean;\n csrfEnabled: boolean;\n csrfToken: string;\n csrfHeaderName: string;\n csrfRefreshPath: string;\n csrfRefreshBuffer: number;\n activeTxId: string | null = null;\n\n // \uC138\uC158 \uC720\uC9C0 \uAD00\uB828\n keepSession: boolean;\n refreshBuffer: number;\n onTokenRefreshed?: (accessToken: string, expiresIn: number) => void;\n onSessionExpired?: (error: Error) => void;\n _sessionRefreshToken: string | null = null;\n _refreshTimer: ReturnType<typeof setTimeout> | null = null;\n _csrfRefreshTimer: ReturnType<typeof setTimeout> | null = null;\n _csrfRefreshPromise: Promise<string> | null = null;\n\n // \u2500\u2500\u2500 \uCD08\uAE30\uD654 & \uC124\uC815 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n /**\n * EntityServerClient \uC778\uC2A4\uD134\uC2A4\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4.\n *\n * \uAE30\uBCF8\uAC12:\n * - `baseUrl`: `VITE_ENTITY_SERVER_URL` \uB610\uB294 \uC0C1\uB300 \uACBD\uB85C(`\"\"`)\n */\n constructor(options: EntityServerClientOptions = {}) {\n const envBaseUrl = readEnv(\"VITE_ENTITY_SERVER_URL\");\n\n this.baseUrl = (options.baseUrl ?? envBaseUrl ?? \"\").replace(/\\/$/, \"\");\n this.token = options.token ?? \"\";\n this.anonymousPacketToken = options.anonymousPacketToken ?? \"\";\n this.apiKey = options.apiKey ?? \"\";\n this.hmacSecret = options.hmacSecret ?? \"\";\n this.encryptRequests = options.encryptRequests ?? false;\n this.csrfEnabled = options.csrfEnabled ?? false;\n this.csrfToken = options.csrfToken ?? \"\";\n this.csrfHeaderName = options.csrfHeaderName ?? \"x-csrf-token\";\n this.csrfRefreshPath = options.csrfRefreshPath ?? \"/v1/csrf-token\";\n this.csrfRefreshBuffer = options.csrfRefreshBuffer ?? 60;\n this.keepSession = options.keepSession ?? false;\n this.refreshBuffer = options.refreshBuffer ?? 60;\n this.onTokenRefreshed = options.onTokenRefreshed;\n this.onSessionExpired = options.onSessionExpired;\n }\n\n /** baseUrl, token, encryptRequests \uAC12\uC744 \uB7F0\uD0C0\uC784\uC5D0 \uAC31\uC2E0\uD569\uB2C8\uB2E4. */\n configure(options: Partial<EntityServerClientOptions>): void {\n if (typeof options.baseUrl === \"string\") {\n this.baseUrl = options.baseUrl.replace(/\\/$/, \"\");\n }\n if (typeof options.token === \"string\") this.token = options.token;\n if (typeof options.anonymousPacketToken === \"string\") {\n this.anonymousPacketToken = options.anonymousPacketToken;\n }\n if (typeof options.encryptRequests === \"boolean\")\n this.encryptRequests = options.encryptRequests;\n if (typeof options.csrfEnabled === \"boolean\") {\n this.csrfEnabled = options.csrfEnabled;\n if (!options.csrfEnabled) {\n this.csrfToken = \"\";\n this.stopCsrfRefresh();\n }\n }\n if (typeof options.csrfToken === \"string\")\n this.csrfToken = options.csrfToken;\n if (typeof options.csrfHeaderName === \"string\") {\n this.csrfHeaderName = options.csrfHeaderName;\n }\n if (typeof options.csrfRefreshPath === \"string\") {\n this.csrfRefreshPath = options.csrfRefreshPath;\n }\n if (typeof options.csrfRefreshBuffer === \"number\") {\n this.csrfRefreshBuffer = options.csrfRefreshBuffer;\n }\n if (typeof options.apiKey === \"string\") this.apiKey = options.apiKey;\n if (typeof options.hmacSecret === \"string\")\n this.hmacSecret = options.hmacSecret;\n if (typeof options.keepSession === \"boolean\")\n this.keepSession = options.keepSession;\n if (typeof options.refreshBuffer === \"number\")\n this.refreshBuffer = options.refreshBuffer;\n if (options.onTokenRefreshed)\n this.onTokenRefreshed = options.onTokenRefreshed;\n if (options.onSessionExpired)\n this.onSessionExpired = options.onSessionExpired;\n }\n\n /** \uC778\uC99D \uC694\uCCAD\uC5D0 \uC0AC\uC6A9\uD560 JWT Access Token\uC744 \uC124\uC815\uD569\uB2C8\uB2E4. */\n setToken(token: string): void {\n this.token = token;\n }\n\n /** \uC775\uBA85 \uD328\uD0B7 \uC554\uD638\uD654\uC6A9 \uD1A0\uD070\uC744 \uC124\uC815\uD569\uB2C8\uB2E4. */\n setAnonymousPacketToken(token: string): void {\n this.anonymousPacketToken = token;\n }\n\n /** HMAC \uC778\uC99D\uC6A9 API Key\uB97C \uC124\uC815\uD569\uB2C8\uB2E4. */\n setApiKey(apiKey: string): void {\n this.apiKey = apiKey;\n }\n\n /** HMAC \uC778\uC99D\uC6A9 \uC2DC\uD06C\uB9BF\uC744 \uC124\uC815\uD569\uB2C8\uB2E4. */\n setHmacSecret(secret: string): void {\n this.hmacSecret = secret;\n }\n\n /** \uC554\uD638\uD654 \uC694\uCCAD \uD65C\uC131\uD654 \uC5EC\uBD80\uB97C \uC124\uC815\uD569\uB2C8\uB2E4. */\n setEncryptRequests(value: boolean): void {\n this.encryptRequests = value;\n }\n\n setCsrfToken(token: string): void {\n this.csrfToken = token;\n }\n\n setCsrfEnabled(enabled: boolean): void {\n this.csrfEnabled = enabled;\n if (!enabled) {\n this.csrfToken = \"\";\n this.stopCsrfRefresh();\n }\n }\n\n // \u2500\u2500\u2500 \uC138\uC158 \uC720\uC9C0 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n /** @internal \uC790\uB3D9 \uD1A0\uD070 \uAC31\uC2E0 \uD0C0\uC774\uBA38\uB97C \uC2DC\uC791\uD569\uB2C8\uB2E4. */\n _scheduleKeepSession(\n refreshToken: string,\n expiresIn: number,\n refreshFn: (\n rt: string,\n ) => Promise<{ access_token: string; expires_in: number }>,\n ): void {\n this._clearRefreshTimer();\n this._sessionRefreshToken = refreshToken;\n const delayMs = Math.max((expiresIn - this.refreshBuffer) * 1000, 0);\n this._refreshTimer = setTimeout(async () => {\n if (!this._sessionRefreshToken) return;\n try {\n const result = await refreshFn(this._sessionRefreshToken);\n this.onTokenRefreshed?.(result.access_token, result.expires_in);\n this._scheduleKeepSession(\n this._sessionRefreshToken,\n result.expires_in,\n refreshFn,\n );\n } catch (err) {\n this._clearRefreshTimer();\n this.onSessionExpired?.(\n err instanceof Error ? err : new Error(String(err)),\n );\n }\n }, delayMs);\n }\n\n /** @internal \uC790\uB3D9 \uAC31\uC2E0 \uD0C0\uC774\uBA38\uB97C \uC815\uB9AC\uD569\uB2C8\uB2E4. */\n _clearRefreshTimer(): void {\n if (this._refreshTimer !== null) {\n clearTimeout(this._refreshTimer);\n this._refreshTimer = null;\n }\n }\n\n /**\n * \uC138\uC158 \uC720\uC9C0 \uD0C0\uC774\uBA38\uB97C \uC911\uC9C0\uD569\uB2C8\uB2E4.\n * `logout()` \uD638\uCD9C \uC2DC \uC790\uB3D9\uC73C\uB85C \uC911\uC9C0\uB418\uBA70, \uC9C1\uC811 \uD638\uCD9C\uC774 \uD544\uC694\uD55C \uACBD\uC6B0\uB294 \uB4DC\uBB45\uB2C8\uB2E4.\n */\n stopKeepSession(): void {\n this._clearRefreshTimer();\n this._sessionRefreshToken = null;\n }\n\n _clearCsrfRefreshTimer(): void {\n if (this._csrfRefreshTimer !== null) {\n clearTimeout(this._csrfRefreshTimer);\n this._csrfRefreshTimer = null;\n }\n }\n\n stopCsrfRefresh(): void {\n this._clearCsrfRefreshTimer();\n this._csrfRefreshPromise = null;\n }\n\n _scheduleCsrfRefresh(expiresIn: number): void {\n this._clearCsrfRefreshTimer();\n if (!this.csrfEnabled || !this.csrfRefreshPath) {\n return;\n }\n\n const delayMs = Math.max(\n (expiresIn - this.csrfRefreshBuffer) * 1000,\n 0,\n );\n this._csrfRefreshTimer = setTimeout(() => {\n void this.refreshCsrfToken().catch(() => {\n this._clearCsrfRefreshTimer();\n });\n }, delayMs);\n }\n\n async refreshCsrfToken(): Promise<string> {\n if (!this.csrfEnabled || !this.csrfRefreshPath) {\n return \"\";\n }\n\n if (!this._csrfRefreshPromise) {\n this._csrfRefreshPromise = (async () => {\n const res = await fetch(\n `${this.baseUrl}${this.csrfRefreshPath}`,\n {\n method: \"GET\",\n credentials: \"include\",\n },\n );\n\n if (!res.ok) {\n const message = await res.text().catch(() => \"\");\n const err = new Error(message || `HTTP ${res.status}`);\n (err as { status?: number }).status = res.status;\n throw err;\n }\n\n const payload = (await res.json().catch(() => null)) as\n | { data?: EntityServerClientHealthCsrf | null }\n | EntityServerClientHealthCsrf\n | null;\n const csrf = (\n payload && typeof payload === \"object\" && \"data\" in payload\n ? (payload.data ?? null)\n : payload\n ) as EntityServerClientHealthCsrf | null;\n\n if (!csrf?.enabled || typeof csrf.token !== \"string\") {\n throw new Error(\"CSRF token refresh failed\");\n }\n\n this._applyCsrfHealth(csrf);\n return this.csrfToken;\n })().finally(() => {\n this._csrfRefreshPromise = null;\n });\n }\n\n return this._csrfRefreshPromise;\n }\n\n _applyCsrfHealth(csrf?: EntityServerClientHealthCsrf | null): void {\n if (!csrf?.enabled) {\n this.setCsrfEnabled(false);\n return;\n }\n\n this.csrfEnabled = true;\n if (typeof csrf.token === \"string\") {\n this.csrfToken = csrf.token;\n }\n if (typeof csrf.headerName === \"string\") {\n this.csrfHeaderName = csrf.headerName;\n }\n if (typeof csrf.refreshPath === \"string\") {\n this.csrfRefreshPath = csrf.refreshPath;\n }\n if (typeof csrf.expiresIn === \"number\" && csrf.expiresIn > 0) {\n this._scheduleCsrfRefresh(csrf.expiresIn);\n }\n }\n\n // \u2500\u2500\u2500 \uC694\uCCAD \uBCF8\uBB38 \uD30C\uC2F1 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n /**\n * \uC694\uCCAD \uBC14\uB514\uB97C \uD30C\uC2F1\uD569\uB2C8\uB2E4.\n * `application/octet-stream`\uC774\uBA74 XChaCha20-Poly1305 \uBCF5\uD638\uD654, \uADF8 \uC678\uB294 JSON \uD30C\uC2F1\uD569\uB2C8\uB2E4.\n *\n * @param requireEncrypted `true`\uC774\uBA74 \uC554\uD638\uD654\uB41C \uC694\uCCAD\uB9CC \uD5C8\uC6A9\uD569\uB2C8\uB2E4.\n */\n readRequestBody<T = Record<string, unknown>>(\n body: ArrayBuffer | Uint8Array | string | T | null | undefined,\n contentType = \"application/json\",\n requireEncrypted = false,\n ): T {\n const key = derivePacketKey(\n this.hmacSecret,\n this.token || this.anonymousPacketToken,\n );\n return parseRequestBody<T>(body, contentType, requireEncrypted, key);\n }\n\n // \u2500\u2500\u2500 \uB0B4\uBD80 \uD5EC\uD37C \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n get _reqOpts(): RequestOptions {\n return {\n baseUrl: this.baseUrl,\n token: this.token,\n anonymousPacketToken: this.anonymousPacketToken,\n apiKey: this.apiKey,\n hmacSecret: this.hmacSecret,\n encryptRequests: this.encryptRequests,\n csrfEnabled: this.csrfEnabled,\n csrfToken: this.csrfToken,\n csrfHeaderName: this.csrfHeaderName,\n refreshCsrfToken: this.csrfEnabled\n ? () => this.refreshCsrfToken()\n : null,\n };\n }\n\n /**\n * \uCEE4\uC2A4\uD140 \uB77C\uC6B0\uD2B8 \uC9C1\uC811 \uD638\uCD9C\uC6A9 HTTP \uB124\uC784\uC2A4\uD398\uC774\uC2A4.\n * \uC778\uC99D\u00B7\uC554\uD638\uD654\u00B7HMAC \uB4F1 SDK \uC635\uC158\uC774 \uADF8\uB300\uB85C \uC801\uC6A9\uB429\uB2C8\uB2E4.\n *\n * @example\n * const res = await client.http.get<{ version: string }>(\"/api/v1/status\", false);\n * const res = await client.http.post<MyResponse>(\"/api/v1/custom\", { key: \"value\" });\n */\n get http() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n return {\n get<T>(\n path: string,\n withAuth = true,\n extraHeaders?: Record<string, string>,\n ): Promise<T> {\n return entityRequest<T>(\n self._reqOpts,\n \"GET\",\n path,\n undefined,\n withAuth,\n extraHeaders,\n false,\n );\n },\n post<T>(\n path: string,\n body?: unknown,\n withAuth = true,\n extraHeaders?: Record<string, string>,\n ): Promise<T> {\n return entityRequest<T>(\n self._reqOpts,\n \"POST\",\n path,\n body,\n withAuth,\n extraHeaders,\n false,\n );\n },\n put<T>(\n path: string,\n body?: unknown,\n withAuth = true,\n extraHeaders?: Record<string, string>,\n ): Promise<T> {\n return entityRequest<T>(\n self._reqOpts,\n \"PUT\",\n path,\n body,\n withAuth,\n extraHeaders,\n false,\n );\n },\n patch<T>(\n path: string,\n body?: unknown,\n withAuth = true,\n extraHeaders?: Record<string, string>,\n ): Promise<T> {\n return entityRequest<T>(\n self._reqOpts,\n \"PATCH\",\n path,\n body,\n withAuth,\n extraHeaders,\n false,\n );\n },\n delete<T>(\n path: string,\n body?: unknown,\n withAuth = true,\n extraHeaders?: Record<string, string>,\n ): Promise<T> {\n return entityRequest<T>(\n self._reqOpts,\n \"DELETE\",\n path,\n body,\n withAuth,\n extraHeaders,\n false,\n );\n },\n };\n }\n\n /**\n * \uC784\uC758 \uACBD\uB85C\uC5D0 \uC694\uCCAD\uC744 \uBCF4\uB0B4\uACE0 \uBC14\uC774\uB108\uB9AC(ArrayBuffer)\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n * \uC774\uBBF8\uC9C0, PDF, \uC555\uCD95 \uD30C\uC77C \uB4F1 \uBC14\uC774\uB108\uB9AC \uC751\uB2F5\uC774 \uC624\uB294 \uC5D4\uB4DC\uD3EC\uC778\uD2B8\uC5D0 \uC0AC\uC6A9\uD569\uB2C8\uB2E4.\n */\n requestBinary(\n method: string,\n path: string,\n body?: unknown,\n withAuth = true,\n ): Promise<ArrayBuffer> {\n return this._requestBinary(method, path, body, withAuth);\n }\n\n /**\n * multipart/form-data \uC694\uCCAD\uC744 \uBCF4\uB0C5\uB2C8\uB2E4. \uD30C\uC77C \uC5C5\uB85C\uB4DC \uB4F1\uC5D0 \uC0AC\uC6A9\uD569\uB2C8\uB2E4.\n * \uC751\uB2F5\uC740 JSON\uC73C\uB85C \uD30C\uC2F1\uD558\uC5EC \uBC18\uD658\uD569\uB2C8\uB2E4.\n */\n requestForm<T>(\n method: string,\n path: string,\n form: FormData,\n withAuth = true,\n ): Promise<T> {\n return this._requestForm<T>(method, path, form, withAuth);\n }\n\n /**\n * multipart/form-data \uC694\uCCAD\uC744 \uBCF4\uB0B4\uACE0 \uBC14\uC774\uB108\uB9AC(ArrayBuffer)\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n */\n requestFormBinary(\n method: string,\n path: string,\n form: FormData,\n withAuth = true,\n ): Promise<ArrayBuffer> {\n return this._requestFormBinary(method, path, form, withAuth);\n }\n\n _request<T>(\n method: string,\n path: string,\n body?: unknown,\n withAuth = true,\n extraHeaders?: Record<string, string>,\n ): Promise<T> {\n return entityRequest<T>(\n this._reqOpts,\n method,\n path,\n body,\n withAuth,\n extraHeaders,\n true,\n );\n }\n\n /** PNG/\uBC14\uC774\uB108\uB9AC \uC751\uB2F5\uC744 ArrayBuffer\uB85C \uBC18\uD658\uD569\uB2C8\uB2E4. (QR, \uBC14\uCF54\uB4DC \uB4F1) */\n async _requestBinary(\n method: string,\n path: string,\n body?: unknown,\n withAuth = true,\n ): Promise<ArrayBuffer> {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n };\n if (withAuth && this.token)\n headers[\"Authorization\"] = `Bearer ${this.token}`;\n if (this.apiKey) headers[\"X-API-Key\"] = this.apiKey;\n\n const res = await fetch(this.baseUrl + path, {\n method,\n headers,\n ...(body != null ? { body: JSON.stringify(body) } : {}),\n credentials: \"include\",\n });\n\n if (!res.ok) {\n const text = await res.text();\n const err = new Error(`HTTP ${res.status}: ${text}`);\n (err as { status?: number }).status = res.status;\n throw err;\n }\n\n return res.arrayBuffer();\n }\n\n /** multipart/form-data \uC694\uCCAD\uC744 \uBCF4\uB0C5\uB2C8\uB2E4. (\uD30C\uC77C \uC5C5\uB85C\uB4DC \uB4F1) */\n async _requestForm<T>(\n method: string,\n path: string,\n form: FormData,\n withAuth = true,\n ): Promise<T> {\n const headers: Record<string, string> = {};\n if (withAuth && this.token)\n headers[\"Authorization\"] = `Bearer ${this.token}`;\n if (this.apiKey) headers[\"X-API-Key\"] = this.apiKey;\n\n const res = await fetch(this.baseUrl + path, {\n method,\n headers,\n body: form,\n credentials: \"include\",\n });\n\n const data = (await res.json()) as { ok?: boolean; message?: string };\n if (!data.ok) {\n const err = new Error(\n data.message ?? `EntityServer error (HTTP ${res.status})`,\n );\n (err as { status?: number }).status = res.status;\n throw err;\n }\n return data as T;\n }\n\n /** multipart/form-data \uC694\uCCAD\uC744 \uBCF4\uB0B4\uACE0 \uBC14\uC774\uB108\uB9AC(ArrayBuffer)\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4. */\n async _requestFormBinary(\n method: string,\n path: string,\n form: FormData,\n withAuth = true,\n ): Promise<ArrayBuffer> {\n const headers: Record<string, string> = {};\n if (withAuth && this.token)\n headers[\"Authorization\"] = `Bearer ${this.token}`;\n if (this.apiKey) headers[\"X-API-Key\"] = this.apiKey;\n\n const res = await fetch(this.baseUrl + path, {\n method,\n headers,\n body: form,\n credentials: \"include\",\n });\n\n if (!res.ok) {\n const text = await res.text();\n const err = new Error(`HTTP ${res.status}: ${text}`);\n (err as { status?: number }).status = res.status;\n throw err;\n }\n\n return res.arrayBuffer();\n }\n}\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["readEnv", "derivePacketKey", "parseRequestBody", "entityRequest", "EntityServerClientBase", "options", "envBaseUrl", "token", "apiKey", "secret", "value", "enabled", "
|
|
4
|
+
"sourcesContent": ["import type { EntityServerClientOptions } from \"../types.js\";\nimport { readEnv } from \"./utils.js\";\nimport { derivePacketKey, parseRequestBody } from \"./packet.js\";\nimport { entityRequest, type RequestOptions } from \"./request.js\";\n\n// mixin \uD5EC\uD37C \uD0C0\uC785\nexport type GConstructor<T = object> = new (...args: any[]) => T;\n\nexport class EntityServerClientBase {\n baseUrl: string;\n token: string;\n anonymousPacketToken: string;\n apiKey: string;\n hmacSecret: string;\n encryptRequests: boolean;\n csrfEnabled: boolean;\n csrfHeaderName: string;\n csrfCookieName: string;\n /** @internal health \uC7AC\uD638\uCD9C\uB85C CSRF \uCFE0\uD0A4 \uAC31\uC2E0 (AuthMixin\uC5D0\uC11C \uC124\uC815) */\n _csrfRefresher: (() => Promise<void>) | null = null;\n activeTxId: string | null = null;\n\n // \uC138\uC158 \uC720\uC9C0 \uAD00\uB828\n keepSession: boolean;\n refreshBuffer: number;\n onTokenRefreshed?: (accessToken: string, expiresIn: number) => void;\n onSessionExpired?: (error: Error) => void;\n _sessionRefreshToken: string | null = null;\n _refreshTimer: ReturnType<typeof setTimeout> | null = null;\n _healthTickTimer: ReturnType<typeof setInterval> | null = null;\n _healthTickPromise: Promise<unknown> | null = null;\n // \u2500\u2500\u2500 \uCD08\uAE30\uD654 & \uC124\uC815 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n /**\n * EntityServerClient \uC778\uC2A4\uD134\uC2A4\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4.\n *\n * \uAE30\uBCF8\uAC12:\n * - `baseUrl`: `VITE_ENTITY_SERVER_URL` \uB610\uB294 \uC0C1\uB300 \uACBD\uB85C(`\"\"`)\n */\n constructor(options: EntityServerClientOptions = {}) {\n const envBaseUrl = readEnv(\"VITE_ENTITY_SERVER_URL\");\n\n this.baseUrl = (options.baseUrl ?? envBaseUrl ?? \"\").replace(/\\/$/, \"\");\n this.token = options.token ?? \"\";\n this.anonymousPacketToken = options.anonymousPacketToken ?? \"\";\n this.apiKey = options.apiKey ?? \"\";\n this.hmacSecret = options.hmacSecret ?? \"\";\n this.encryptRequests = options.encryptRequests ?? false;\n this.csrfEnabled = options.csrfEnabled ?? false;\n this.csrfHeaderName = options.csrfHeaderName ?? \"x-csrf-token\";\n this.csrfCookieName = options.csrfCookieName ?? \"_csrf\";\n this.keepSession = options.keepSession ?? false;\n this.refreshBuffer = options.refreshBuffer ?? 60;\n this.onTokenRefreshed = options.onTokenRefreshed;\n this.onSessionExpired = options.onSessionExpired;\n if (typeof options.healthTickInterval === \"number\" && options.healthTickInterval > 0) {\n // _csrfRefresher\uB294 AuthMixin\uC5D0\uC11C \uC124\uC815\uB418\uBBC0\uB85C \uB2E4\uC74C tick\uC5D0 \uC2DC\uC791\n Promise.resolve().then(() => this.startHealthTick(options.healthTickInterval));\n }\n }\n\n /** baseUrl, token, encryptRequests \uAC12\uC744 \uB7F0\uD0C0\uC784\uC5D0 \uAC31\uC2E0\uD569\uB2C8\uB2E4. */\n configure(options: Partial<EntityServerClientOptions>): void {\n if (typeof options.baseUrl === \"string\") {\n this.baseUrl = options.baseUrl.replace(/\\/$/, \"\");\n }\n if (typeof options.token === \"string\") this.token = options.token;\n if (typeof options.anonymousPacketToken === \"string\") {\n this.anonymousPacketToken = options.anonymousPacketToken;\n }\n if (typeof options.encryptRequests === \"boolean\")\n this.encryptRequests = options.encryptRequests;\n if (typeof options.csrfEnabled === \"boolean\") {\n this.csrfEnabled = options.csrfEnabled;\n }\n if (typeof options.csrfHeaderName === \"string\") {\n this.csrfHeaderName = options.csrfHeaderName;\n }\n if (typeof options.csrfCookieName === \"string\") {\n this.csrfCookieName = options.csrfCookieName;\n }\n if (typeof options.apiKey === \"string\") this.apiKey = options.apiKey;\n if (typeof options.hmacSecret === \"string\")\n this.hmacSecret = options.hmacSecret;\n if (typeof options.keepSession === \"boolean\")\n this.keepSession = options.keepSession;\n if (typeof options.refreshBuffer === \"number\")\n this.refreshBuffer = options.refreshBuffer;\n if (options.onTokenRefreshed)\n this.onTokenRefreshed = options.onTokenRefreshed;\n if (options.onSessionExpired)\n this.onSessionExpired = options.onSessionExpired;\n if (typeof options.healthTickInterval === \"number\" && options.healthTickInterval > 0) {\n Promise.resolve().then(() => this.startHealthTick(options.healthTickInterval));\n }\n }\n\n /** \uC778\uC99D \uC694\uCCAD\uC5D0 \uC0AC\uC6A9\uD560 JWT Access Token\uC744 \uC124\uC815\uD569\uB2C8\uB2E4. */\n setToken(token: string): void {\n this.token = token;\n }\n\n /** \uC775\uBA85 \uD328\uD0B7 \uC554\uD638\uD654\uC6A9 \uD1A0\uD070\uC744 \uC124\uC815\uD569\uB2C8\uB2E4. */\n setAnonymousPacketToken(token: string): void {\n this.anonymousPacketToken = token;\n }\n\n /** HMAC \uC778\uC99D\uC6A9 API Key\uB97C \uC124\uC815\uD569\uB2C8\uB2E4. */\n setApiKey(apiKey: string): void {\n this.apiKey = apiKey;\n }\n\n /** HMAC \uC778\uC99D\uC6A9 \uC2DC\uD06C\uB9BF\uC744 \uC124\uC815\uD569\uB2C8\uB2E4. */\n setHmacSecret(secret: string): void {\n this.hmacSecret = secret;\n }\n\n /** \uC554\uD638\uD654 \uC694\uCCAD \uD65C\uC131\uD654 \uC5EC\uBD80\uB97C \uC124\uC815\uD569\uB2C8\uB2E4. */\n setEncryptRequests(value: boolean): void {\n this.encryptRequests = value;\n }\n\n setCsrfEnabled(enabled: boolean): void {\n this.csrfEnabled = enabled;\n }\n\n /**\n * \uC8FC\uAE30\uC801\uC73C\uB85C health \uCCB4\uD06C\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.\n * CSRF \uCFE0\uD0A4 \uAC31\uC2E0\uACFC \uC11C\uBC84 \uC0C1\uD0DC \uD655\uC778\uC744 \uC790\uB3D9\uD654\uD569\uB2C8\uB2E4.\n *\n * @param intervalMs \uD638\uCD9C \uC8FC\uAE30(ms). \uAE30\uBCF8\uAC12: 5\uBD84\n */\n startHealthTick(intervalMs: number = 5 * 60 * 1000): void {\n this.stopHealthTick();\n const tick = (): void => {\n if (this._healthTickPromise) return;\n this._healthTickPromise = (this._csrfRefresher ? this._csrfRefresher() : Promise.resolve())\n .catch(() => {/* \uB124\uD2B8\uC6CC\uD06C \uC624\uB958 \uBB34\uC2DC */})\n .finally(() => { this._healthTickPromise = null; });\n };\n tick(); // \uC989\uC2DC 1\uD68C \uC2E4\uD589\n this._healthTickTimer = setInterval(tick, intervalMs);\n }\n\n /** health tick \uD0C0\uC774\uBA38\uB97C \uC911\uC9C0\uD569\uB2C8\uB2E4. */\n stopHealthTick(): void {\n if (this._healthTickTimer !== null) {\n clearInterval(this._healthTickTimer);\n this._healthTickTimer = null;\n }\n this._healthTickPromise = null;\n }\n\n // \u2500\u2500\u2500 \uC138\uC158 \uC720\uC9C0 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n /** @internal \uC790\uB3D9 \uD1A0\uD070 \uAC31\uC2E0 \uD0C0\uC774\uBA38\uB97C \uC2DC\uC791\uD569\uB2C8\uB2E4. */\n _scheduleKeepSession(\n refreshToken: string,\n expiresIn: number,\n refreshFn: (\n rt: string,\n ) => Promise<{ access_token: string; expires_in: number }>,\n ): void {\n this._clearRefreshTimer();\n this._sessionRefreshToken = refreshToken;\n const delayMs = Math.max((expiresIn - this.refreshBuffer) * 1000, 0);\n this._refreshTimer = setTimeout(async () => {\n if (!this._sessionRefreshToken) return;\n try {\n const result = await refreshFn(this._sessionRefreshToken);\n this.onTokenRefreshed?.(result.access_token, result.expires_in);\n this._scheduleKeepSession(\n this._sessionRefreshToken,\n result.expires_in,\n refreshFn,\n );\n } catch (err) {\n this._clearRefreshTimer();\n this.onSessionExpired?.(\n err instanceof Error ? err : new Error(String(err)),\n );\n }\n }, delayMs);\n }\n\n /** @internal \uC790\uB3D9 \uAC31\uC2E0 \uD0C0\uC774\uBA38\uB97C \uC815\uB9AC\uD569\uB2C8\uB2E4. */\n _clearRefreshTimer(): void {\n if (this._refreshTimer !== null) {\n clearTimeout(this._refreshTimer);\n this._refreshTimer = null;\n }\n }\n\n /**\n * \uC138\uC158 \uC720\uC9C0 \uD0C0\uC774\uBA38\uB97C \uC911\uC9C0\uD569\uB2C8\uB2E4.\n * `logout()` \uD638\uCD9C \uC2DC \uC790\uB3D9\uC73C\uB85C \uC911\uC9C0\uB418\uBA70, \uC9C1\uC811 \uD638\uCD9C\uC774 \uD544\uC694\uD55C \uACBD\uC6B0\uB294 \uB4DC\uBB45\uB2C8\uB2E4.\n */\n stopKeepSession(): void {\n this._clearRefreshTimer();\n this._sessionRefreshToken = null;\n }\n\n _applyCsrfHealth(): void {\n if (typeof document === \"undefined\") return;\n for (const chunk of document.cookie.split(\";\")) {\n const idx = chunk.indexOf(\"=\");\n if (idx < 0) continue;\n if (chunk.substring(0, idx).trim() === this.csrfCookieName) {\n this.csrfEnabled = !!chunk.substring(idx + 1).trim();\n return;\n }\n }\n this.csrfEnabled = false;\n }\n\n // \u2500\u2500\u2500 \uC694\uCCAD \uBCF8\uBB38 \uD30C\uC2F1 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n /**\n * \uC694\uCCAD \uBC14\uB514\uB97C \uD30C\uC2F1\uD569\uB2C8\uB2E4.\n * `application/octet-stream`\uC774\uBA74 XChaCha20-Poly1305 \uBCF5\uD638\uD654, \uADF8 \uC678\uB294 JSON \uD30C\uC2F1\uD569\uB2C8\uB2E4.\n *\n * @param requireEncrypted `true`\uC774\uBA74 \uC554\uD638\uD654\uB41C \uC694\uCCAD\uB9CC \uD5C8\uC6A9\uD569\uB2C8\uB2E4.\n */\n readRequestBody<T = Record<string, unknown>>(\n body: ArrayBuffer | Uint8Array | string | T | null | undefined,\n contentType = \"application/json\",\n requireEncrypted = false,\n ): T {\n const key = derivePacketKey(\n this.hmacSecret,\n this.token || this.anonymousPacketToken,\n );\n return parseRequestBody<T>(body, contentType, requireEncrypted, key);\n }\n\n // \u2500\u2500\u2500 \uB0B4\uBD80 \uD5EC\uD37C \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n get _reqOpts(): RequestOptions {\n return {\n baseUrl: this.baseUrl,\n token: this.token,\n anonymousPacketToken: this.anonymousPacketToken,\n apiKey: this.apiKey,\n hmacSecret: this.hmacSecret,\n encryptRequests: this.encryptRequests,\n csrfEnabled: this.csrfEnabled,\n csrfHeaderName: this.csrfHeaderName,\n csrfCookieName: this.csrfCookieName,\n refreshCsrfCookie: this.csrfEnabled ? this._csrfRefresher : null,\n };\n }\n\n /**\n * \uCEE4\uC2A4\uD140 \uB77C\uC6B0\uD2B8 \uC9C1\uC811 \uD638\uCD9C\uC6A9 HTTP \uB124\uC784\uC2A4\uD398\uC774\uC2A4.\n * \uC778\uC99D\u00B7\uC554\uD638\uD654\u00B7HMAC \uB4F1 SDK \uC635\uC158\uC774 \uADF8\uB300\uB85C \uC801\uC6A9\uB429\uB2C8\uB2E4.\n *\n * @example\n * const res = await client.http.get<{ version: string }>(\"/api/v1/status\", false);\n * const res = await client.http.post<MyResponse>(\"/api/v1/custom\", { key: \"value\" });\n */\n get http() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n return {\n get<T>(\n path: string,\n withAuth = true,\n extraHeaders?: Record<string, string>,\n ): Promise<T> {\n return entityRequest<T>(\n self._reqOpts,\n \"GET\",\n path,\n undefined,\n withAuth,\n extraHeaders,\n false,\n );\n },\n post<T>(\n path: string,\n body?: unknown,\n withAuth = true,\n extraHeaders?: Record<string, string>,\n ): Promise<T> {\n return entityRequest<T>(\n self._reqOpts,\n \"POST\",\n path,\n body,\n withAuth,\n extraHeaders,\n false,\n );\n },\n put<T>(\n path: string,\n body?: unknown,\n withAuth = true,\n extraHeaders?: Record<string, string>,\n ): Promise<T> {\n return entityRequest<T>(\n self._reqOpts,\n \"PUT\",\n path,\n body,\n withAuth,\n extraHeaders,\n false,\n );\n },\n patch<T>(\n path: string,\n body?: unknown,\n withAuth = true,\n extraHeaders?: Record<string, string>,\n ): Promise<T> {\n return entityRequest<T>(\n self._reqOpts,\n \"PATCH\",\n path,\n body,\n withAuth,\n extraHeaders,\n false,\n );\n },\n delete<T>(\n path: string,\n body?: unknown,\n withAuth = true,\n extraHeaders?: Record<string, string>,\n ): Promise<T> {\n return entityRequest<T>(\n self._reqOpts,\n \"DELETE\",\n path,\n body,\n withAuth,\n extraHeaders,\n false,\n );\n },\n };\n }\n\n /**\n * \uC784\uC758 \uACBD\uB85C\uC5D0 \uC694\uCCAD\uC744 \uBCF4\uB0B4\uACE0 \uBC14\uC774\uB108\uB9AC(ArrayBuffer)\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n * \uC774\uBBF8\uC9C0, PDF, \uC555\uCD95 \uD30C\uC77C \uB4F1 \uBC14\uC774\uB108\uB9AC \uC751\uB2F5\uC774 \uC624\uB294 \uC5D4\uB4DC\uD3EC\uC778\uD2B8\uC5D0 \uC0AC\uC6A9\uD569\uB2C8\uB2E4.\n */\n requestBinary(\n method: string,\n path: string,\n body?: unknown,\n withAuth = true,\n ): Promise<ArrayBuffer> {\n return this._requestBinary(method, path, body, withAuth);\n }\n\n /**\n * multipart/form-data \uC694\uCCAD\uC744 \uBCF4\uB0C5\uB2C8\uB2E4. \uD30C\uC77C \uC5C5\uB85C\uB4DC \uB4F1\uC5D0 \uC0AC\uC6A9\uD569\uB2C8\uB2E4.\n * \uC751\uB2F5\uC740 JSON\uC73C\uB85C \uD30C\uC2F1\uD558\uC5EC \uBC18\uD658\uD569\uB2C8\uB2E4.\n */\n requestForm<T>(\n method: string,\n path: string,\n form: FormData,\n withAuth = true,\n ): Promise<T> {\n return this._requestForm<T>(method, path, form, withAuth);\n }\n\n /**\n * multipart/form-data \uC694\uCCAD\uC744 \uBCF4\uB0B4\uACE0 \uBC14\uC774\uB108\uB9AC(ArrayBuffer)\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n */\n requestFormBinary(\n method: string,\n path: string,\n form: FormData,\n withAuth = true,\n ): Promise<ArrayBuffer> {\n return this._requestFormBinary(method, path, form, withAuth);\n }\n\n _request<T>(\n method: string,\n path: string,\n body?: unknown,\n withAuth = true,\n extraHeaders?: Record<string, string>,\n ): Promise<T> {\n return entityRequest<T>(\n this._reqOpts,\n method,\n path,\n body,\n withAuth,\n extraHeaders,\n true,\n );\n }\n\n /** PNG/\uBC14\uC774\uB108\uB9AC \uC751\uB2F5\uC744 ArrayBuffer\uB85C \uBC18\uD658\uD569\uB2C8\uB2E4. (QR, \uBC14\uCF54\uB4DC \uB4F1) */\n async _requestBinary(\n method: string,\n path: string,\n body?: unknown,\n withAuth = true,\n ): Promise<ArrayBuffer> {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n };\n if (withAuth && this.token)\n headers[\"Authorization\"] = `Bearer ${this.token}`;\n if (this.apiKey) headers[\"X-API-Key\"] = this.apiKey;\n\n const res = await fetch(this.baseUrl + path, {\n method,\n headers,\n ...(body != null ? { body: JSON.stringify(body) } : {}),\n credentials: \"include\",\n });\n\n if (!res.ok) {\n const text = await res.text();\n const err = new Error(`HTTP ${res.status}: ${text}`);\n (err as { status?: number }).status = res.status;\n throw err;\n }\n\n return res.arrayBuffer();\n }\n\n /** multipart/form-data \uC694\uCCAD\uC744 \uBCF4\uB0C5\uB2C8\uB2E4. (\uD30C\uC77C \uC5C5\uB85C\uB4DC \uB4F1) */\n async _requestForm<T>(\n method: string,\n path: string,\n form: FormData,\n withAuth = true,\n ): Promise<T> {\n const headers: Record<string, string> = {};\n if (withAuth && this.token)\n headers[\"Authorization\"] = `Bearer ${this.token}`;\n if (this.apiKey) headers[\"X-API-Key\"] = this.apiKey;\n\n const res = await fetch(this.baseUrl + path, {\n method,\n headers,\n body: form,\n credentials: \"include\",\n });\n\n const data = (await res.json()) as { ok?: boolean; message?: string };\n if (!data.ok) {\n const err = new Error(\n data.message ?? `EntityServer error (HTTP ${res.status})`,\n );\n (err as { status?: number }).status = res.status;\n throw err;\n }\n return data as T;\n }\n\n /** multipart/form-data \uC694\uCCAD\uC744 \uBCF4\uB0B4\uACE0 \uBC14\uC774\uB108\uB9AC(ArrayBuffer)\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4. */\n async _requestFormBinary(\n method: string,\n path: string,\n form: FormData,\n withAuth = true,\n ): Promise<ArrayBuffer> {\n const headers: Record<string, string> = {};\n if (withAuth && this.token)\n headers[\"Authorization\"] = `Bearer ${this.token}`;\n if (this.apiKey) headers[\"X-API-Key\"] = this.apiKey;\n\n const res = await fetch(this.baseUrl + path, {\n method,\n headers,\n body: form,\n credentials: \"include\",\n });\n\n if (!res.ok) {\n const text = await res.text();\n const err = new Error(`HTTP ${res.status}: ${text}`);\n (err as { status?: number }).status = res.status;\n throw err;\n }\n\n return res.arrayBuffer();\n }\n}\n"],
|
|
5
|
+
"mappings": "AACA,OAAS,WAAAA,MAAe,aACxB,OAAS,mBAAAC,EAAiB,oBAAAC,MAAwB,cAClD,OAAS,iBAAAC,MAA0C,eAK5C,MAAMC,CAAuB,CAChC,QACA,MACA,qBACA,OACA,WACA,gBACA,YACA,eACA,eAEA,eAA+C,KAC/C,WAA4B,KAG5B,YACA,cACA,iBACA,iBACA,qBAAsC,KACtC,cAAsD,KACtD,iBAA0D,KAC1D,mBAA8C,KAS9C,YAAYC,EAAqC,CAAC,EAAG,CACjD,MAAMC,EAAaN,EAAQ,wBAAwB,EAEnD,KAAK,SAAWK,EAAQ,SAAWC,GAAc,IAAI,QAAQ,MAAO,EAAE,EACtE,KAAK,MAAQD,EAAQ,OAAS,GAC9B,KAAK,qBAAuBA,EAAQ,sBAAwB,GAC5D,KAAK,OAASA,EAAQ,QAAU,GAChC,KAAK,WAAaA,EAAQ,YAAc,GACxC,KAAK,gBAAkBA,EAAQ,iBAAmB,GAClD,KAAK,YAAcA,EAAQ,aAAe,GAC1C,KAAK,eAAiBA,EAAQ,gBAAkB,eAChD,KAAK,eAAiBA,EAAQ,gBAAkB,QAChD,KAAK,YAAcA,EAAQ,aAAe,GAC1C,KAAK,cAAgBA,EAAQ,eAAiB,GAC9C,KAAK,iBAAmBA,EAAQ,iBAChC,KAAK,iBAAmBA,EAAQ,iBAC5B,OAAOA,EAAQ,oBAAuB,UAAYA,EAAQ,mBAAqB,GAE/E,QAAQ,QAAQ,EAAE,KAAK,IAAM,KAAK,gBAAgBA,EAAQ,kBAAkB,CAAC,CAErF,CAGA,UAAUA,EAAmD,CACrD,OAAOA,EAAQ,SAAY,WAC3B,KAAK,QAAUA,EAAQ,QAAQ,QAAQ,MAAO,EAAE,GAEhD,OAAOA,EAAQ,OAAU,WAAU,KAAK,MAAQA,EAAQ,OACxD,OAAOA,EAAQ,sBAAyB,WACxC,KAAK,qBAAuBA,EAAQ,sBAEpC,OAAOA,EAAQ,iBAAoB,YACnC,KAAK,gBAAkBA,EAAQ,iBAC/B,OAAOA,EAAQ,aAAgB,YAC/B,KAAK,YAAcA,EAAQ,aAE3B,OAAOA,EAAQ,gBAAmB,WAClC,KAAK,eAAiBA,EAAQ,gBAE9B,OAAOA,EAAQ,gBAAmB,WAClC,KAAK,eAAiBA,EAAQ,gBAE9B,OAAOA,EAAQ,QAAW,WAAU,KAAK,OAASA,EAAQ,QAC1D,OAAOA,EAAQ,YAAe,WAC9B,KAAK,WAAaA,EAAQ,YAC1B,OAAOA,EAAQ,aAAgB,YAC/B,KAAK,YAAcA,EAAQ,aAC3B,OAAOA,EAAQ,eAAkB,WACjC,KAAK,cAAgBA,EAAQ,eAC7BA,EAAQ,mBACR,KAAK,iBAAmBA,EAAQ,kBAChCA,EAAQ,mBACR,KAAK,iBAAmBA,EAAQ,kBAChC,OAAOA,EAAQ,oBAAuB,UAAYA,EAAQ,mBAAqB,GAC/E,QAAQ,QAAQ,EAAE,KAAK,IAAM,KAAK,gBAAgBA,EAAQ,kBAAkB,CAAC,CAErF,CAGA,SAASE,EAAqB,CAC1B,KAAK,MAAQA,CACjB,CAGA,wBAAwBA,EAAqB,CACzC,KAAK,qBAAuBA,CAChC,CAGA,UAAUC,EAAsB,CAC5B,KAAK,OAASA,CAClB,CAGA,cAAcC,EAAsB,CAChC,KAAK,WAAaA,CACtB,CAGA,mBAAmBC,EAAsB,CACrC,KAAK,gBAAkBA,CAC3B,CAEA,eAAeC,EAAwB,CACnC,KAAK,YAAcA,CACvB,CAQA,gBAAgBC,EAAqB,IAAS,IAAY,CACtD,KAAK,eAAe,EACpB,MAAMC,EAAO,IAAY,CACjB,KAAK,qBACT,KAAK,oBAAsB,KAAK,eAAiB,KAAK,eAAe,EAAI,QAAQ,QAAQ,GACpF,MAAM,IAAM,CAAiB,CAAC,EAC9B,QAAQ,IAAM,CAAE,KAAK,mBAAqB,IAAM,CAAC,EAC1D,EACAA,EAAK,EACL,KAAK,iBAAmB,YAAYA,EAAMD,CAAU,CACxD,CAGA,gBAAuB,CACf,KAAK,mBAAqB,OAC1B,cAAc,KAAK,gBAAgB,EACnC,KAAK,iBAAmB,MAE5B,KAAK,mBAAqB,IAC9B,CAKA,qBACIE,EACAC,EACAC,EAGI,CACJ,KAAK,mBAAmB,EACxB,KAAK,qBAAuBF,EAC5B,MAAMG,EAAU,KAAK,KAAKF,EAAY,KAAK,eAAiB,IAAM,CAAC,EACnE,KAAK,cAAgB,WAAW,SAAY,CACxC,GAAK,KAAK,qBACV,GAAI,CACA,MAAMG,EAAS,MAAMF,EAAU,KAAK,oBAAoB,EACxD,KAAK,mBAAmBE,EAAO,aAAcA,EAAO,UAAU,EAC9D,KAAK,qBACD,KAAK,qBACLA,EAAO,WACPF,CACJ,CACJ,OAASG,EAAK,CACV,KAAK,mBAAmB,EACxB,KAAK,mBACDA,aAAe,MAAQA,EAAM,IAAI,MAAM,OAAOA,CAAG,CAAC,CACtD,CACJ,CACJ,EAAGF,CAAO,CACd,CAGA,oBAA2B,CACnB,KAAK,gBAAkB,OACvB,aAAa,KAAK,aAAa,EAC/B,KAAK,cAAgB,KAE7B,CAMA,iBAAwB,CACpB,KAAK,mBAAmB,EACxB,KAAK,qBAAuB,IAChC,CAEA,kBAAyB,CACrB,GAAI,SAAO,SAAa,KACxB,WAAWG,KAAS,SAAS,OAAO,MAAM,GAAG,EAAG,CAC5C,MAAMC,EAAMD,EAAM,QAAQ,GAAG,EAC7B,GAAI,EAAAC,EAAM,IACND,EAAM,UAAU,EAAGC,CAAG,EAAE,KAAK,IAAM,KAAK,eAAgB,CACxD,KAAK,YAAc,CAAC,CAACD,EAAM,UAAUC,EAAM,CAAC,EAAE,KAAK,EACnD,MACJ,CACJ,CACA,KAAK,YAAc,GACvB,CAUA,gBACIC,EACAC,EAAc,mBACdC,EAAmB,GAClB,CACD,MAAMC,EAAMxB,EACR,KAAK,WACL,KAAK,OAAS,KAAK,oBACvB,EACA,OAAOC,EAAoBoB,EAAMC,EAAaC,EAAkBC,CAAG,CACvE,CAIA,IAAI,UAA2B,CAC3B,MAAO,CACH,QAAS,KAAK,QACd,MAAO,KAAK,MACZ,qBAAsB,KAAK,qBAC3B,OAAQ,KAAK,OACb,WAAY,KAAK,WACjB,gBAAiB,KAAK,gBACtB,YAAa,KAAK,YAClB,eAAgB,KAAK,eACrB,eAAgB,KAAK,eACrB,kBAAmB,KAAK,YAAc,KAAK,eAAiB,IAChE,CACJ,CAUA,IAAI,MAAO,CAEP,MAAMC,EAAO,KACb,MAAO,CACH,IACIC,EACAC,EAAW,GACXC,EACU,CACV,OAAO1B,EACHuB,EAAK,SACL,MACAC,EACA,OACAC,EACAC,EACA,EACJ,CACJ,EACA,KACIF,EACAL,EACAM,EAAW,GACXC,EACU,CACV,OAAO1B,EACHuB,EAAK,SACL,OACAC,EACAL,EACAM,EACAC,EACA,EACJ,CACJ,EACA,IACIF,EACAL,EACAM,EAAW,GACXC,EACU,CACV,OAAO1B,EACHuB,EAAK,SACL,MACAC,EACAL,EACAM,EACAC,EACA,EACJ,CACJ,EACA,MACIF,EACAL,EACAM,EAAW,GACXC,EACU,CACV,OAAO1B,EACHuB,EAAK,SACL,QACAC,EACAL,EACAM,EACAC,EACA,EACJ,CACJ,EACA,OACIF,EACAL,EACAM,EAAW,GACXC,EACU,CACV,OAAO1B,EACHuB,EAAK,SACL,SACAC,EACAL,EACAM,EACAC,EACA,EACJ,CACJ,CACJ,CACJ,CAMA,cACIC,EACAH,EACAL,EACAM,EAAW,GACS,CACpB,OAAO,KAAK,eAAeE,EAAQH,EAAML,EAAMM,CAAQ,CAC3D,CAMA,YACIE,EACAH,EACAI,EACAH,EAAW,GACD,CACV,OAAO,KAAK,aAAgBE,EAAQH,EAAMI,EAAMH,CAAQ,CAC5D,CAKA,kBACIE,EACAH,EACAI,EACAH,EAAW,GACS,CACpB,OAAO,KAAK,mBAAmBE,EAAQH,EAAMI,EAAMH,CAAQ,CAC/D,CAEA,SACIE,EACAH,EACAL,EACAM,EAAW,GACXC,EACU,CACV,OAAO1B,EACH,KAAK,SACL2B,EACAH,EACAL,EACAM,EACAC,EACA,EACJ,CACJ,CAGA,MAAM,eACFC,EACAH,EACAL,EACAM,EAAW,GACS,CACpB,MAAMI,EAAkC,CACpC,eAAgB,kBACpB,EACIJ,GAAY,KAAK,QACjBI,EAAQ,cAAmB,UAAU,KAAK,KAAK,IAC/C,KAAK,SAAQA,EAAQ,WAAW,EAAI,KAAK,QAE7C,MAAMC,EAAM,MAAM,MAAM,KAAK,QAAUN,EAAM,CACzC,OAAAG,EACA,QAAAE,EACA,GAAIV,GAAQ,KAAO,CAAE,KAAM,KAAK,UAAUA,CAAI,CAAE,EAAI,CAAC,EACrD,YAAa,SACjB,CAAC,EAED,GAAI,CAACW,EAAI,GAAI,CACT,MAAMC,EAAO,MAAMD,EAAI,KAAK,EACtBd,EAAM,IAAI,MAAM,QAAQc,EAAI,MAAM,KAAKC,CAAI,EAAE,EACnD,MAACf,EAA4B,OAASc,EAAI,OACpCd,CACV,CAEA,OAAOc,EAAI,YAAY,CAC3B,CAGA,MAAM,aACFH,EACAH,EACAI,EACAH,EAAW,GACD,CACV,MAAMI,EAAkC,CAAC,EACrCJ,GAAY,KAAK,QACjBI,EAAQ,cAAmB,UAAU,KAAK,KAAK,IAC/C,KAAK,SAAQA,EAAQ,WAAW,EAAI,KAAK,QAE7C,MAAMC,EAAM,MAAM,MAAM,KAAK,QAAUN,EAAM,CACzC,OAAAG,EACA,QAAAE,EACA,KAAMD,EACN,YAAa,SACjB,CAAC,EAEKI,EAAQ,MAAMF,EAAI,KAAK,EAC7B,GAAI,CAACE,EAAK,GAAI,CACV,MAAMhB,EAAM,IAAI,MACZgB,EAAK,SAAW,4BAA4BF,EAAI,MAAM,GAC1D,EACA,MAACd,EAA4B,OAASc,EAAI,OACpCd,CACV,CACA,OAAOgB,CACX,CAGA,MAAM,mBACFL,EACAH,EACAI,EACAH,EAAW,GACS,CACpB,MAAMI,EAAkC,CAAC,EACrCJ,GAAY,KAAK,QACjBI,EAAQ,cAAmB,UAAU,KAAK,KAAK,IAC/C,KAAK,SAAQA,EAAQ,WAAW,EAAI,KAAK,QAE7C,MAAMC,EAAM,MAAM,MAAM,KAAK,QAAUN,EAAM,CACzC,OAAAG,EACA,QAAAE,EACA,KAAMD,EACN,YAAa,SACjB,CAAC,EAED,GAAI,CAACE,EAAI,GAAI,CACT,MAAMC,EAAO,MAAMD,EAAI,KAAK,EACtBd,EAAM,IAAI,MAAM,QAAQc,EAAI,MAAM,KAAKC,CAAI,EAAE,EACnD,MAACf,EAA4B,OAASc,EAAI,OACpCd,CACV,CAEA,OAAOc,EAAI,YAAY,CAC3B,CACJ",
|
|
6
|
+
"names": ["readEnv", "derivePacketKey", "parseRequestBody", "entityRequest", "EntityServerClientBase", "options", "envBaseUrl", "token", "apiKey", "secret", "value", "enabled", "intervalMs", "tick", "refreshToken", "expiresIn", "refreshFn", "delayMs", "result", "err", "chunk", "idx", "body", "contentType", "requireEncrypted", "key", "self", "path", "withAuth", "extraHeaders", "method", "form", "headers", "res", "text", "data"]
|
|
7
7
|
}
|