@simplysm/service-server 14.0.86 → 14.0.88
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/protocol/protocol-wrapper.d.ts.map +1 -1
- package/dist/protocol/protocol-wrapper.js +11 -5
- package/dist/protocol/protocol-wrapper.js.map +1 -1
- package/dist/workers/service-protocol.worker.d.ts +2 -2
- package/dist/workers/service-protocol.worker.d.ts.map +1 -1
- package/dist/workers/service-protocol.worker.js +3 -2
- package/dist/workers/service-protocol.worker.js.map +1 -1
- package/package.json +6 -6
- package/src/protocol/protocol-wrapper.ts +13 -5
- package/src/workers/service-protocol.worker.ts +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol-wrapper.d.ts","sourceRoot":"","sources":["../../src/protocol/protocol-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI3F;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE/F;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC,CAAC;IAE1E;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;CACjB;AAiBD;;;;;GAKG;AACH,wBAAgB,2BAA2B,IAAI,qBAAqB,
|
|
1
|
+
{"version":3,"file":"protocol-wrapper.d.ts","sourceRoot":"","sources":["../../src/protocol/protocol-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI3F;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE/F;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC,CAAC;IAE1E;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;CACjB;AAiBD;;;;;GAKG;AACH,wBAAgB,2BAA2B,IAAI,qBAAqB,CAsEnE"}
|
|
@@ -55,13 +55,19 @@ export function createServerProtocolWrapper() {
|
|
|
55
55
|
}
|
|
56
56
|
},
|
|
57
57
|
async decode(bytes) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
// 청크 재조립(stateful)은 항상 메인 스레드 단일 누적기에서 수행한다.
|
|
59
|
+
// 청크별로 worker/메인을 분기하면 한 메시지의 청크가 서로 다른 누적기로 흩어져
|
|
60
|
+
// 재조립이 영원히 완성되지 못한다 (#35).
|
|
61
|
+
const acc = protocol.accumulate(bytes);
|
|
62
|
+
if (acc.type === "progress") {
|
|
63
|
+
return acc;
|
|
61
64
|
}
|
|
62
|
-
|
|
63
|
-
|
|
65
|
+
// 재조립 완료. 무거운 JSON 파싱(stateless)만 크기 기준으로 worker 에 위임한다.
|
|
66
|
+
const resultBytes = acc.resultBytes;
|
|
67
|
+
if (resultBytes.length > SIZE_THRESHOLD) {
|
|
68
|
+
return { type: "complete", uuid: acc.uuid, message: await getWorker().parseMessage(resultBytes) };
|
|
64
69
|
}
|
|
70
|
+
return { type: "complete", uuid: acc.uuid, message: protocol.parseMessage(resultBytes) };
|
|
65
71
|
},
|
|
66
72
|
dispose() {
|
|
67
73
|
protocol.dispose();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol-wrapper.js","sourceRoot":"","sources":["../../src/protocol/protocol-wrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AA0BjE,0BAA0B;AAC1B,IAAI,YAAyE,CAAC;AAE9E,SAAS,SAAS;IAChB,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;QACzB,YAAY,GAAG,MAAM,CAAC,MAAM,CAC1B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,oCAAoC,CAAC,EACzD;YACE,cAAc,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE;SACjD,CACF,CAAC;IACJ,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B;IACzC,sEAAsE;IACtE,KAAK;IACL,sEAAsE;IAEtE,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;IACzC,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO;IAEzC,sEAAsE;IACtE,KAAK;IACL,sEAAsE;IAEtE;;OAEG;IACH,SAAS,wBAAwB,CAAC,GAAmB;QACnD,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAEnC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QAEtB,2BAA2B;QAC3B,IAAI,IAAI,YAAY,UAAU,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,wCAAwC;QACxC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,YAAY,UAAU,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,sEAAsE;IACtE,SAAS;IACT,sEAAsE;IAEtE,OAAO;QACL,KAAK,CAAC,MAAM,CACV,IAAY,EACZ,OAAuB;YAEvB,IAAI,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtC,OAAO,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,KAAY;YACvB,MAAM,
|
|
1
|
+
{"version":3,"file":"protocol-wrapper.js","sourceRoot":"","sources":["../../src/protocol/protocol-wrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AA0BjE,0BAA0B;AAC1B,IAAI,YAAyE,CAAC;AAE9E,SAAS,SAAS;IAChB,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;QACzB,YAAY,GAAG,MAAM,CAAC,MAAM,CAC1B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,oCAAoC,CAAC,EACzD;YACE,cAAc,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE;SACjD,CACF,CAAC;IACJ,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B;IACzC,sEAAsE;IACtE,KAAK;IACL,sEAAsE;IAEtE,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;IACzC,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO;IAEzC,sEAAsE;IACtE,KAAK;IACL,sEAAsE;IAEtE;;OAEG;IACH,SAAS,wBAAwB,CAAC,GAAmB;QACnD,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAEnC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QAEtB,2BAA2B;QAC3B,IAAI,IAAI,YAAY,UAAU,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,wCAAwC;QACxC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,YAAY,UAAU,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,sEAAsE;IACtE,SAAS;IACT,sEAAsE;IAEtE,OAAO;QACL,KAAK,CAAC,MAAM,CACV,IAAY,EACZ,OAAuB;YAEvB,IAAI,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtC,OAAO,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,KAAY;YACvB,6CAA6C;YAC7C,iDAAiD;YACjD,2BAA2B;YAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC5B,OAAO,GAAG,CAAC;YACb,CAAC;YAED,yDAAyD;YACzD,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;YACpC,IAAI,WAAW,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;gBACxC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,SAAS,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;YACpG,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3F,CAAC;QAED,OAAO;YACL,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Bytes } from "@simplysm/core-common";
|
|
2
|
-
import type {
|
|
2
|
+
import type { ServiceMessage } from "@simplysm/service-common";
|
|
3
3
|
declare const _default: {
|
|
4
4
|
send<TEventName extends string>(event: TEventName, data?: undefined): void;
|
|
5
5
|
__methods: {
|
|
@@ -7,7 +7,7 @@ declare const _default: {
|
|
|
7
7
|
chunks: Bytes[];
|
|
8
8
|
totalSize: number;
|
|
9
9
|
};
|
|
10
|
-
|
|
10
|
+
parseMessage: (resultBytes: Bytes) => ServiceMessage;
|
|
11
11
|
};
|
|
12
12
|
__events: Record<string, never>;
|
|
13
13
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-protocol.worker.d.ts","sourceRoot":"","sources":["../../src/workers/service-protocol.worker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"service-protocol.worker.d.ts","sourceRoot":"","sources":["../../src/workers/service-protocol.worker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;;;;uBAM9C,MAAM,WAAW,cAAc,KAAG;YAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE;oCAI3D,KAAK,KAAG,cAAc;;;;AALpD,wBAQG"}
|
|
@@ -5,8 +5,9 @@ export default createWorker({
|
|
|
5
5
|
encode: (uuid, message) => {
|
|
6
6
|
return protocol.encode(uuid, message);
|
|
7
7
|
},
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
// 재조립 완료된 raw 바이트의 무거운 JSON 파싱만 worker 에서 수행 (stateless)
|
|
9
|
+
parseMessage: (resultBytes) => {
|
|
10
|
+
return protocol.parseMessage(resultBytes);
|
|
10
11
|
},
|
|
11
12
|
});
|
|
12
13
|
//# sourceMappingURL=service-protocol.worker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-protocol.worker.js","sourceRoot":"","sources":["../../src/workers/service-protocol.worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;AAEzC,eAAe,YAAY,CAAC;IAC1B,MAAM,EAAE,CAAC,IAAY,EAAE,OAAuB,EAA0C,EAAE;QACxF,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IACD,
|
|
1
|
+
{"version":3,"file":"service-protocol.worker.js","sourceRoot":"","sources":["../../src/workers/service-protocol.worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;AAEzC,eAAe,YAAY,CAAC;IAC1B,MAAM,EAAE,CAAC,IAAY,EAAE,OAAuB,EAA0C,EAAE;QACxF,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IACD,yDAAyD;IACzD,YAAY,EAAE,CAAC,WAAkB,EAAkB,EAAE;QACnD,OAAO,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC;CACF,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simplysm/service-server",
|
|
3
|
-
"version": "14.0.
|
|
3
|
+
"version": "14.0.88",
|
|
4
4
|
"description": "심플리즘 패키지 - 서비스 (server)",
|
|
5
5
|
"author": "심플리즘",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -29,11 +29,11 @@
|
|
|
29
29
|
"semver": "^7.8.1",
|
|
30
30
|
"utf-8-validate": "^6.0.6",
|
|
31
31
|
"ws": "^8.21.0",
|
|
32
|
-
"@simplysm/core-node": "14.0.
|
|
33
|
-
"@simplysm/
|
|
34
|
-
"@simplysm/orm-common": "14.0.
|
|
35
|
-
"@simplysm/
|
|
36
|
-
"@simplysm/
|
|
32
|
+
"@simplysm/core-node": "14.0.88",
|
|
33
|
+
"@simplysm/orm-node": "14.0.88",
|
|
34
|
+
"@simplysm/orm-common": "14.0.88",
|
|
35
|
+
"@simplysm/core-common": "14.0.88",
|
|
36
|
+
"@simplysm/service-common": "14.0.88"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/semver": "^7.7.1",
|
|
@@ -98,12 +98,20 @@ export function createServerProtocolWrapper(): ServerProtocolWrapper {
|
|
|
98
98
|
},
|
|
99
99
|
|
|
100
100
|
async decode(bytes: Bytes): Promise<ServiceMessageDecodeResult<ServiceMessage>> {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
101
|
+
// 청크 재조립(stateful)은 항상 메인 스레드 단일 누적기에서 수행한다.
|
|
102
|
+
// 청크별로 worker/메인을 분기하면 한 메시지의 청크가 서로 다른 누적기로 흩어져
|
|
103
|
+
// 재조립이 영원히 완성되지 못한다 (#35).
|
|
104
|
+
const acc = protocol.accumulate(bytes);
|
|
105
|
+
if (acc.type === "progress") {
|
|
106
|
+
return acc;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// 재조립 완료. 무거운 JSON 파싱(stateless)만 크기 기준으로 worker 에 위임한다.
|
|
110
|
+
const resultBytes = acc.resultBytes;
|
|
111
|
+
if (resultBytes.length > SIZE_THRESHOLD) {
|
|
112
|
+
return { type: "complete", uuid: acc.uuid, message: await getWorker().parseMessage(resultBytes) };
|
|
106
113
|
}
|
|
114
|
+
return { type: "complete", uuid: acc.uuid, message: protocol.parseMessage(resultBytes) };
|
|
107
115
|
},
|
|
108
116
|
|
|
109
117
|
dispose(): void {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createWorker } from "@simplysm/core-node";
|
|
2
2
|
import type { Bytes } from "@simplysm/core-common";
|
|
3
|
-
import type {
|
|
3
|
+
import type { ServiceMessage } from "@simplysm/service-common";
|
|
4
4
|
import { createServiceProtocol } from "@simplysm/service-common";
|
|
5
5
|
|
|
6
6
|
const protocol = createServiceProtocol();
|
|
@@ -9,7 +9,8 @@ export default createWorker({
|
|
|
9
9
|
encode: (uuid: string, message: ServiceMessage): { chunks: Bytes[]; totalSize: number } => {
|
|
10
10
|
return protocol.encode(uuid, message);
|
|
11
11
|
},
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
// 재조립 완료된 raw 바이트의 무거운 JSON 파싱만 worker 에서 수행 (stateless)
|
|
13
|
+
parseMessage: (resultBytes: Bytes): ServiceMessage => {
|
|
14
|
+
return protocol.parseMessage(resultBytes);
|
|
14
15
|
},
|
|
15
16
|
});
|