@simplysm/service-client 14.0.27 → 14.0.28
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/features/event-client.d.ts +8 -2
- package/dist/features/event-client.d.ts.map +1 -1
- package/dist/features/event-client.js +10 -4
- package/dist/features/event-client.js.map +1 -1
- package/dist/service-client.d.ts +4 -2
- package/dist/service-client.d.ts.map +1 -1
- package/dist/service-client.js +7 -4
- package/dist/service-client.js.map +1 -1
- package/package.json +4 -4
- package/src/features/event-client.ts +43 -19
- package/src/service-client.ts +17 -11
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import type { ServiceEventDef } from "@simplysm/service-common";
|
|
2
2
|
import type { ServiceTransport } from "../transport/service-transport";
|
|
3
|
+
export interface ClientEventProxy<TEventDef extends ServiceEventDef> {
|
|
4
|
+
addListener(info: TEventDef["$info"], cb: (data: TEventDef["$data"]) => PromiseLike<void>): Promise<string>;
|
|
5
|
+
removeListener(key: string): Promise<void>;
|
|
6
|
+
emit(infoSelector: (item: TEventDef["$info"]) => boolean, data: TEventDef["$data"]): Promise<void>;
|
|
7
|
+
}
|
|
3
8
|
export interface EventClient {
|
|
4
|
-
|
|
9
|
+
getEvent<TEventDef extends ServiceEventDef>(eventName: string): ClientEventProxy<TEventDef>;
|
|
10
|
+
addListener<TEventDef extends ServiceEventDef>(eventName: string, info: TEventDef["$info"], cb: (data: TEventDef["$data"]) => PromiseLike<void>): Promise<string>;
|
|
5
11
|
removeListener(key: string): Promise<void>;
|
|
6
|
-
emit<
|
|
12
|
+
emit<TEventDef extends ServiceEventDef>(eventName: string, infoSelector: (item: TEventDef["$info"]) => boolean, data: TEventDef["$data"]): Promise<void>;
|
|
7
13
|
resubscribeAll(): Promise<void>;
|
|
8
14
|
}
|
|
9
15
|
export declare function createEventClient(transport: ServiceTransport): EventClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-client.d.ts","sourceRoot":"","sources":["../../src/features/event-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAKvE,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"event-client.d.ts","sourceRoot":"","sources":["../../src/features/event-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAKvE,MAAM,WAAW,gBAAgB,CAAC,SAAS,SAAS,eAAe;IACjE,WAAW,CACT,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,EACxB,EAAE,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,WAAW,CAAC,IAAI,CAAC,GAClD,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CACF,YAAY,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,OAAO,EACnD,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,GACvB,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,SAAS,SAAS,eAAe,EACxC,SAAS,EAAE,MAAM,GAChB,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC/B,WAAW,CAAC,SAAS,SAAS,eAAe,EAC3C,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,EACxB,EAAE,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,WAAW,CAAC,IAAI,CAAC,GAClD,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,SAAS,SAAS,eAAe,EACpC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,OAAO,EACnD,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,GACvB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,gBAAgB,GAAG,WAAW,CAiH1E"}
|
|
@@ -6,9 +6,8 @@ export function createEventClient(transport) {
|
|
|
6
6
|
transport.on("event", async ({ keys, data }) => {
|
|
7
7
|
await executeByKey(keys, data);
|
|
8
8
|
});
|
|
9
|
-
async function addListener(
|
|
9
|
+
async function addListener(eventName, info, cb) {
|
|
10
10
|
const key = Uuid.generate().toString();
|
|
11
|
-
const eventName = eventDef.eventName;
|
|
12
11
|
// 서버에 등록 요청 전송
|
|
13
12
|
await transport.send({
|
|
14
13
|
name: "evt:add",
|
|
@@ -31,8 +30,7 @@ export function createEventClient(transport) {
|
|
|
31
30
|
// 서버가 연결 끊김 시 이벤트 리스너를 자동 정리하므로 무시해도 안전함
|
|
32
31
|
}
|
|
33
32
|
}
|
|
34
|
-
async function emit(
|
|
35
|
-
const eventName = eventDef.eventName;
|
|
33
|
+
async function emit(eventName, infoSelector, data) {
|
|
36
34
|
// 서버에 'gets' 요청을 보내 대상 목록 조회
|
|
37
35
|
const listenerInfos = (await transport.send({
|
|
38
36
|
name: "evt:gets",
|
|
@@ -76,7 +74,15 @@ export function createEventClient(transport) {
|
|
|
76
74
|
}
|
|
77
75
|
}
|
|
78
76
|
}
|
|
77
|
+
function getEvent(eventName) {
|
|
78
|
+
return {
|
|
79
|
+
addListener: (info, cb) => addListener(eventName, info, cb),
|
|
80
|
+
removeListener,
|
|
81
|
+
emit: (infoSelector, data) => emit(eventName, infoSelector, data),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
79
84
|
return {
|
|
85
|
+
getEvent,
|
|
80
86
|
addListener,
|
|
81
87
|
removeListener,
|
|
82
88
|
emit,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-client.js","sourceRoot":"","sources":["../../src/features/event-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAG7C,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"event-client.js","sourceRoot":"","sources":["../../src/features/event-client.ts"],"names":[],"mappings":"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"}
|
package/dist/service-client.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type { ServiceEventDef } from "@simplysm/service-common";
|
|
|
3
3
|
import type { BlobInput, FileCollection } from "./types/browser-compat";
|
|
4
4
|
import type { ServiceConnectionOptions } from "./types/connection-options";
|
|
5
5
|
import type { ServiceProgress, ServiceProgressState } from "./types/progress.types";
|
|
6
|
+
import { type ClientEventProxy } from "./features/event-client";
|
|
6
7
|
interface ServiceClientEvents {
|
|
7
8
|
"request-progress": ServiceProgressState;
|
|
8
9
|
"response-progress": ServiceProgressState;
|
|
@@ -26,9 +27,10 @@ export declare class ServiceClient extends EventEmitter<ServiceClientEvents> {
|
|
|
26
27
|
close(): Promise<void>;
|
|
27
28
|
send(serviceName: string, methodName: string, params: unknown[], progress?: ServiceProgress): Promise<unknown>;
|
|
28
29
|
auth(token: string): Promise<void>;
|
|
29
|
-
|
|
30
|
+
getEvent<TEventDef extends ServiceEventDef>(eventName: string): ClientEventProxy<TEventDef>;
|
|
31
|
+
addListener<TEventDef extends ServiceEventDef>(eventName: string, info: TEventDef["$info"], cb: (data: TEventDef["$data"]) => PromiseLike<void>): Promise<string>;
|
|
30
32
|
removeListener(key: string): Promise<void>;
|
|
31
|
-
emitEvent<
|
|
33
|
+
emitEvent<TEventDef extends ServiceEventDef>(eventName: string, infoSelector: (item: TEventDef["$info"]) => boolean, data: TEventDef["$data"]): Promise<void>;
|
|
32
34
|
uploadFile(files: File[] | FileCollection | {
|
|
33
35
|
name: string;
|
|
34
36
|
data: BlobInput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-client.d.ts","sourceRoot":"","sources":["../src/service-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGhE,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"service-client.d.ts","sourceRoot":"","sources":["../src/service-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGhE,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAGpF,OAAO,EAAqB,KAAK,gBAAgB,EAAoB,MAAM,yBAAyB,CAAC;AAMrG,UAAU,mBAAmB;IAC3B,kBAAkB,EAAE,oBAAoB,CAAC;IACzC,mBAAmB,EAAE,oBAAoB,CAAC;IAC1C,iBAAiB,EAAE,oBAAoB,CAAC;IACxC,OAAO,EAAE,WAAW,GAAG,QAAQ,GAAG,cAAc,CAAC;CAClD;AAED,qBAAa,aAAc,SAAQ,YAAY,CAAC,mBAAmB,CAAC;aAoBhD,IAAI,EAAE,MAAM;aACZ,OAAO,EAAE,wBAAwB;IAnBnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IAEzC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAwB;IACzD,OAAO,CAAC,UAAU,CAAC,CAAS;IAG5B,IAAI,SAAS,YAEZ;IACD,IAAI,OAAO,WAGV;gBAGiB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,wBAAwB;IAmCnD,UAAU,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC;IAW3D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,IAAI,CACR,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,EAAE,EACjB,QAAQ,CAAC,EAAE,eAAe,GACzB,OAAO,CAAC,OAAO,CAAC;IAuBb,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxC,QAAQ,CAAC,SAAS,SAAS,eAAe,EACxC,SAAS,EAAE,MAAM,GAChB,gBAAgB,CAAC,SAAS,CAAC;IAIxB,WAAW,CAAC,SAAS,SAAS,eAAe,EACjD,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,EACxB,EAAE,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,WAAW,CAAC,IAAI,CAAC,GAClD,OAAO,CAAC,MAAM,CAAC;IAKZ,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1C,SAAS,CAAC,SAAS,SAAS,eAAe,EAC/C,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,OAAO,EACnD,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,GACvB,OAAO,CAAC,IAAI,CAAC;IAIV,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,cAAc,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,EAAE;IAS/E,kBAAkB,CAAC,OAAO,EAAE,MAAM;CAGzC;AAGD,MAAM,MAAM,YAAY,CAAC,QAAQ,IAAI;KAClC,CAAC,IAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC,GACpE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GACnC,KAAK;CACV,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,GAAG,aAAa,CAElG"}
|
package/dist/service-client.js
CHANGED
|
@@ -96,16 +96,19 @@ export class ServiceClient extends EventEmitter {
|
|
|
96
96
|
await this._transport.send({ name: "auth", body: token });
|
|
97
97
|
this._authToken = token;
|
|
98
98
|
}
|
|
99
|
-
|
|
99
|
+
getEvent(eventName) {
|
|
100
|
+
return this._eventClient.getEvent(eventName);
|
|
101
|
+
}
|
|
102
|
+
async addListener(eventName, info, cb) {
|
|
100
103
|
if (!this.connected)
|
|
101
104
|
throw new Error("서버에 연결되지 않았습니다.");
|
|
102
|
-
return this._eventClient.addListener(
|
|
105
|
+
return this._eventClient.addListener(eventName, info, cb);
|
|
103
106
|
}
|
|
104
107
|
async removeListener(key) {
|
|
105
108
|
await this._eventClient.removeListener(key);
|
|
106
109
|
}
|
|
107
|
-
async emitEvent(
|
|
108
|
-
await this._eventClient.emit(
|
|
110
|
+
async emitEvent(eventName, infoSelector, data) {
|
|
111
|
+
await this._eventClient.emit(eventName, infoSelector, data);
|
|
109
112
|
}
|
|
110
113
|
async uploadFile(files) {
|
|
111
114
|
if (this._authToken == null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-client.js","sourceRoot":"","sources":["../src/service-client.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAKjE,OAAO,EAAE,sBAAsB,EAAyB,MAAM,+BAA+B,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAuB,MAAM,6BAA6B,CAAC;AACxF,OAAO,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"service-client.js","sourceRoot":"","sources":["../src/service-client.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAKjE,OAAO,EAAE,sBAAsB,EAAyB,MAAM,+BAA+B,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAuB,MAAM,6BAA6B,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAA2C,MAAM,yBAAyB,CAAC;AACrG,OAAO,EAAE,gBAAgB,EAAmB,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAA8B,MAAM,oCAAoC,CAAC;AAE7G,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;AAS/D,MAAM,OAAO,aAAc,SAAQ,YAAiC;IAoBhD;IACA;IApBlB,KAAK;IACY,OAAO,CAAiB;IACxB,UAAU,CAAmB;IAC7B,YAAY,CAAc;IAC1B,WAAW,CAAa;IAExB,gBAAgB,CAAwB;IACjD,UAAU,CAAU;IAE5B,SAAS;IACT,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAChC,CAAC;IACD,IAAI,OAAO;QACT,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QACzD,OAAO,GAAG,YAAY,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACvE,CAAC;IAED,YACkB,IAAY,EACZ,OAAiC;QAEjD,KAAK,EAAE,CAAC;QAHQ,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAA0B;QAIjD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9C,MAAM,KAAK,GAAG,GAAG,UAAU,MAAM,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;QAEnE,SAAS;QACT,IAAI,CAAC,OAAO,GAAG,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC5F,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QAC9D,IAAI,CAAC,UAAU,GAAG,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9E,IAAI,CAAC,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7D,UAAU;QACV,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACvC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAE1B,sBAAsB;YACtB,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;gBAC1B,IAAI,CAAC;oBACH,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;wBAC5B,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM;oBAC1C,CAAC;oBACD,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;gBAC3C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IAEL,CAAC;IAED,wBAAwB;IACxB,UAAU,CAAW,WAAmB;QACtC,OAAO,IAAI,KAAK,CAAC,EAA4B,EAAE;YAC7C,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;gBACrB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBAChC,OAAO,KAAK,EAAE,GAAG,MAAiB,EAAE,EAAE;oBACpC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;gBACpD,CAAC,CAAC;YACJ,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,IAAI,CACR,WAAmB,EACnB,UAAkB,EAClB,MAAiB,EACjB,QAA0B;QAE1B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CACzB;YACE,IAAI,EAAE,GAAG,WAAW,IAAI,UAAU,EAAE;YACpC,IAAI,EAAE,MAAM;SACb,EACD;YACE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACjB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;gBACrC,QAAQ,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;YACD,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;gBACtC,QAAQ,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;YACD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;gBAChB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;gBACpC,QAAQ,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;SACF,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAa;QACtB,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,QAAQ,CACN,SAAiB;QAEjB,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAY,SAAS,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,WAAW,CACf,SAAiB,EACjB,IAAwB,EACxB,EAAmD;QAEnD,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAY,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,GAAW;QAC9B,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,SAAS,CACb,SAAiB,EACjB,YAAmD,EACnD,IAAwB;QAExB,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAY,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAoE;QACnF,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,8CAA8C,CAC/C,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,OAAe;QACtC,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;CACF;AASD,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,OAAiC;IACjF,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simplysm/service-client",
|
|
3
|
-
"version": "14.0.
|
|
3
|
+
"version": "14.0.28",
|
|
4
4
|
"description": "심플리즘 패키지 - 서비스 (client)",
|
|
5
5
|
"author": "심플리즘",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
"sideEffects": false,
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"consola": "^3.4.2",
|
|
22
|
-
"@simplysm/core-common": "14.0.
|
|
23
|
-
"@simplysm/
|
|
24
|
-
"@simplysm/
|
|
22
|
+
"@simplysm/core-common": "14.0.28",
|
|
23
|
+
"@simplysm/orm-common": "14.0.28",
|
|
24
|
+
"@simplysm/service-common": "14.0.28"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/ws": "^8.18.1",
|
|
@@ -5,17 +5,32 @@ import consola from "consola";
|
|
|
5
5
|
|
|
6
6
|
const logger = consola.withTag("service-client:EventClient");
|
|
7
7
|
|
|
8
|
+
export interface ClientEventProxy<TEventDef extends ServiceEventDef> {
|
|
9
|
+
addListener(
|
|
10
|
+
info: TEventDef["$info"],
|
|
11
|
+
cb: (data: TEventDef["$data"]) => PromiseLike<void>,
|
|
12
|
+
): Promise<string>;
|
|
13
|
+
removeListener(key: string): Promise<void>;
|
|
14
|
+
emit(
|
|
15
|
+
infoSelector: (item: TEventDef["$info"]) => boolean,
|
|
16
|
+
data: TEventDef["$data"],
|
|
17
|
+
): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
|
|
8
20
|
export interface EventClient {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
21
|
+
getEvent<TEventDef extends ServiceEventDef>(
|
|
22
|
+
eventName: string,
|
|
23
|
+
): ClientEventProxy<TEventDef>;
|
|
24
|
+
addListener<TEventDef extends ServiceEventDef>(
|
|
25
|
+
eventName: string,
|
|
26
|
+
info: TEventDef["$info"],
|
|
27
|
+
cb: (data: TEventDef["$data"]) => PromiseLike<void>,
|
|
13
28
|
): Promise<string>;
|
|
14
29
|
removeListener(key: string): Promise<void>;
|
|
15
|
-
emit<
|
|
16
|
-
|
|
17
|
-
infoSelector: (item:
|
|
18
|
-
data:
|
|
30
|
+
emit<TEventDef extends ServiceEventDef>(
|
|
31
|
+
eventName: string,
|
|
32
|
+
infoSelector: (item: TEventDef["$info"]) => boolean,
|
|
33
|
+
data: TEventDef["$data"],
|
|
19
34
|
): Promise<void>;
|
|
20
35
|
resubscribeAll(): Promise<void>;
|
|
21
36
|
}
|
|
@@ -30,13 +45,12 @@ export function createEventClient(transport: ServiceTransport): EventClient {
|
|
|
30
45
|
await executeByKey(keys, data);
|
|
31
46
|
});
|
|
32
47
|
|
|
33
|
-
async function addListener<
|
|
34
|
-
|
|
35
|
-
info:
|
|
36
|
-
cb: (data:
|
|
48
|
+
async function addListener<TEventDef extends ServiceEventDef>(
|
|
49
|
+
eventName: string,
|
|
50
|
+
info: TEventDef["$info"],
|
|
51
|
+
cb: (data: TEventDef["$data"]) => PromiseLike<void>,
|
|
37
52
|
): Promise<string> {
|
|
38
53
|
const key = Uuid.generate().toString();
|
|
39
|
-
const eventName = eventDef.eventName;
|
|
40
54
|
|
|
41
55
|
// 서버에 등록 요청 전송
|
|
42
56
|
await transport.send({
|
|
@@ -63,18 +77,17 @@ export function createEventClient(transport: ServiceTransport): EventClient {
|
|
|
63
77
|
}
|
|
64
78
|
}
|
|
65
79
|
|
|
66
|
-
async function emit<
|
|
67
|
-
|
|
68
|
-
infoSelector: (item:
|
|
69
|
-
data:
|
|
80
|
+
async function emit<TEventDef extends ServiceEventDef>(
|
|
81
|
+
eventName: string,
|
|
82
|
+
infoSelector: (item: TEventDef["$info"]) => boolean,
|
|
83
|
+
data: TEventDef["$data"],
|
|
70
84
|
): Promise<void> {
|
|
71
|
-
const eventName = eventDef.eventName;
|
|
72
85
|
|
|
73
86
|
// 서버에 'gets' 요청을 보내 대상 목록 조회
|
|
74
87
|
const listenerInfos = (await transport.send({
|
|
75
88
|
name: "evt:gets",
|
|
76
89
|
body: { name: eventName },
|
|
77
|
-
})) as { key: string; info:
|
|
90
|
+
})) as { key: string; info: TEventDef["$info"] }[];
|
|
78
91
|
|
|
79
92
|
const targetKeys = listenerInfos
|
|
80
93
|
.filter((item) => infoSelector(item.info))
|
|
@@ -118,7 +131,18 @@ export function createEventClient(transport: ServiceTransport): EventClient {
|
|
|
118
131
|
}
|
|
119
132
|
}
|
|
120
133
|
|
|
134
|
+
function getEvent<TEventDef extends ServiceEventDef>(
|
|
135
|
+
eventName: string,
|
|
136
|
+
): ClientEventProxy<TEventDef> {
|
|
137
|
+
return {
|
|
138
|
+
addListener: (info, cb) => addListener<TEventDef>(eventName, info, cb),
|
|
139
|
+
removeListener,
|
|
140
|
+
emit: (infoSelector, data) => emit<TEventDef>(eventName, infoSelector, data),
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
|
|
121
144
|
return {
|
|
145
|
+
getEvent,
|
|
122
146
|
addListener,
|
|
123
147
|
removeListener,
|
|
124
148
|
emit,
|
package/src/service-client.ts
CHANGED
|
@@ -8,7 +8,7 @@ import type { ServiceConnectionOptions } from "./types/connection-options";
|
|
|
8
8
|
import type { ServiceProgress, ServiceProgressState } from "./types/progress.types";
|
|
9
9
|
import { createServiceTransport, type ServiceTransport } from "./transport/service-transport";
|
|
10
10
|
import { createSocketProvider, type SocketProvider } from "./transport/socket-provider";
|
|
11
|
-
import { createEventClient, type EventClient } from "./features/event-client";
|
|
11
|
+
import { createEventClient, type ClientEventProxy, type EventClient } from "./features/event-client";
|
|
12
12
|
import { createFileClient, type FileClient } from "./features/file-client";
|
|
13
13
|
import { createClientProtocolWrapper, type ClientProtocolWrapper } from "./protocol/client-protocol-wrapper";
|
|
14
14
|
|
|
@@ -130,25 +130,31 @@ export class ServiceClient extends EventEmitter<ServiceClientEvents> {
|
|
|
130
130
|
this._authToken = token;
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
133
|
+
getEvent<TEventDef extends ServiceEventDef>(
|
|
134
|
+
eventName: string,
|
|
135
|
+
): ClientEventProxy<TEventDef> {
|
|
136
|
+
return this._eventClient.getEvent<TEventDef>(eventName);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
async addListener<TEventDef extends ServiceEventDef>(
|
|
140
|
+
eventName: string,
|
|
141
|
+
info: TEventDef["$info"],
|
|
142
|
+
cb: (data: TEventDef["$data"]) => PromiseLike<void>,
|
|
137
143
|
): Promise<string> {
|
|
138
144
|
if (!this.connected) throw new Error("서버에 연결되지 않았습니다.");
|
|
139
|
-
return this._eventClient.addListener(
|
|
145
|
+
return this._eventClient.addListener<TEventDef>(eventName, info, cb);
|
|
140
146
|
}
|
|
141
147
|
|
|
142
148
|
async removeListener(key: string): Promise<void> {
|
|
143
149
|
await this._eventClient.removeListener(key);
|
|
144
150
|
}
|
|
145
151
|
|
|
146
|
-
async emitEvent<
|
|
147
|
-
|
|
148
|
-
infoSelector: (item:
|
|
149
|
-
data:
|
|
152
|
+
async emitEvent<TEventDef extends ServiceEventDef>(
|
|
153
|
+
eventName: string,
|
|
154
|
+
infoSelector: (item: TEventDef["$info"]) => boolean,
|
|
155
|
+
data: TEventDef["$data"],
|
|
150
156
|
): Promise<void> {
|
|
151
|
-
await this._eventClient.emit(
|
|
157
|
+
await this._eventClient.emit<TEventDef>(eventName, infoSelector, data);
|
|
152
158
|
}
|
|
153
159
|
|
|
154
160
|
async uploadFile(files: File[] | FileCollection | { name: string; data: BlobInput }[]) {
|