@simplysm/service-client 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/client-protocol-wrapper.d.ts.map +1 -1
- package/dist/protocol/client-protocol-wrapper.js +21 -7
- package/dist/protocol/client-protocol-wrapper.js.map +1 -1
- package/dist/workers/client-protocol.worker.js +4 -3
- package/dist/workers/client-protocol.worker.js.map +1 -1
- package/package.json +4 -4
- package/src/protocol/client-protocol-wrapper.ts +22 -8
- package/src/workers/client-protocol.worker.ts +5 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-protocol-wrapper.d.ts","sourceRoot":"","sources":["../../src/protocol/client-protocol-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,EACV,0BAA0B,EAC1B,cAAc,EACd,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAclC,MAAM,WAAW,qBAAqB;IACpC,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;IAC/F,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC,CAAC;IAC1E,OAAO,IAAI,IAAI,CAAC;CACjB;AA+ID,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,eAAe,GAAG,qBAAqB,
|
|
1
|
+
{"version":3,"file":"client-protocol-wrapper.d.ts","sourceRoot":"","sources":["../../src/protocol/client-protocol-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,EACV,0BAA0B,EAC1B,cAAc,EACd,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAclC,MAAM,WAAW,qBAAqB;IACpC,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;IAC/F,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC,CAAC;IAC1E,OAAO,IAAI,IAAI,CAAC;CACjB;AA+ID,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,eAAe,GAAG,qBAAqB,CAuE5F"}
|
|
@@ -138,16 +138,30 @@ export function createClientProtocolWrapper(protocol) {
|
|
|
138
138
|
return workerResult;
|
|
139
139
|
}
|
|
140
140
|
async function decode(bytes) {
|
|
141
|
-
|
|
142
|
-
//
|
|
143
|
-
|
|
144
|
-
|
|
141
|
+
// 청크 재조립(stateful)은 항상 메인 스레드 단일 누적기에서 수행한다.
|
|
142
|
+
// 청크별로 worker/메인을 분기하면 한 메시지의 청크가 서로 다른 누적기로 흩어져
|
|
143
|
+
// 재조립이 영원히 완성되지 못한다 (#35).
|
|
144
|
+
const acc = protocol.accumulate(bytes);
|
|
145
|
+
if (acc.type === "progress") {
|
|
146
|
+
return acc;
|
|
147
|
+
}
|
|
148
|
+
// 재조립 완료. 무거운 JSON 파싱(stateless)만 크기 기준으로 worker 에 위임한다.
|
|
149
|
+
const resultBytes = acc.resultBytes;
|
|
150
|
+
if (!isWorkerAvailable() || resultBytes.length <= SIZE_THRESHOLD) {
|
|
151
|
+
return { type: "complete", uuid: acc.uuid, message: protocol.parseMessage(resultBytes) };
|
|
145
152
|
}
|
|
146
|
-
const rawResult = await runWorker("
|
|
153
|
+
const rawResult = await runWorker("parseMessage", resultBytes, [
|
|
154
|
+
resultBytes.buffer,
|
|
155
|
+
]);
|
|
147
156
|
if (rawResult == null) {
|
|
148
|
-
|
|
157
|
+
// worker 미가용: 메인 스레드에서 파싱 (이 경우 buffer 가 transfer 되지 않았음)
|
|
158
|
+
return { type: "complete", uuid: acc.uuid, message: protocol.parseMessage(resultBytes) };
|
|
149
159
|
}
|
|
150
|
-
return
|
|
160
|
+
return {
|
|
161
|
+
type: "complete",
|
|
162
|
+
uuid: acc.uuid,
|
|
163
|
+
message: transfer.decode(rawResult),
|
|
164
|
+
};
|
|
151
165
|
}
|
|
152
166
|
return {
|
|
153
167
|
encode,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-protocol-wrapper.js","sourceRoot":"","sources":["../../src/protocol/client-protocol-wrapper.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client-protocol-wrapper.js","sourceRoot":"","sources":["../../src/protocol/client-protocol-wrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAOlE,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAcjC,MAAM,eAAe,GAAG,IAAI,SAAS,CAGnC;IACA,UAAU,EAAE,CAAC,GAAG,IAAI;IACpB,UAAU,EAAE,EAAE,GAAG,IAAI;IACrB,QAAQ,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACtB,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,GAAG,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF,CAAC,CAAC;AAEH,IAAI,eAAoC,CAAC;AAEzC,SAAS,iBAAiB;IACxB,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;QAC5B,eAAe,GAAG,iBAAiB,EAAE,CAAC;IACxC,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,SAAS,mBAAmB,CAAC,CAAgB;IAC3C,CAAC,CAAC,SAAS,GAAG,CAAC,KAAmB,EAAE,EAAE;QACpC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,IAKzC,CAAC;QAEF,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,kBAAkB,CAAC,CAAC;gBAC5D,GAAG,CAAC,KAAK,GAAG,KAAK,EAAE,KAAK,CAAC;gBACzB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;YACD,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC;IAEF,CAAC,CAAC,OAAO,GAAG,GAAG,EAAE;QACf,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;QAC7C,KAAK,MAAM,QAAQ,IAAI,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;YAChD,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;QACD,eAAe,CAAC,KAAK,EAAE,CAAC;QAExB,iBAAiB,GAAG,SAAS,CAAC;QAC9B,eAAe,GAAG,KAAK,CAAC;IAC1B,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,UAA2C;IAC1E,MAAM,OAAO,GAAkB;QAC7B,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,IAAI;QACb,WAAW,CAAC,OAAgB,EAAE,aAAyB;YACrD,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,aAA4D,CAAC,CAAC;QAChG,CAAC;QACD,SAAS;YACP,KAAK,UAAU,CAAC,SAAS,EAAE,CAAC;QAC9B,CAAC;KACF,CAAC;IAEF,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAa,EAAE,EAAE;QACzC,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,EAAkB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;QACpC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAuB,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,IAAI,iBAAiE,CAAC;AAEtE,KAAK,UAAU,UAAU;IACvB,IAAI,CAAC;QACH,IAAI,wBAAwB,EAAE,EAAE,CAAC;YAC/B,4DAA4D;YAC5D,MAAM,CAAC,GAAkB,IAAI,MAAM,CACjC,IAAI,GAAG,CAAC,sCAAsC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAChE,EAAE,IAAI,EAAE,QAAQ,EAAE,CACnB,CAAC;YACF,mBAAmB,CAAC,CAAC,CAAC,CAAC;YACvB,OAAO,CAAC,CAAC;QACX,CAAC;QAED,IAAI,qBAAqB,EAAE,EAAE,CAAC;YAC5B,sDAAsD;YACtD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;YAC9E,MAAM,eAAe,GAAG,gBAAgB,CAAC;YACzC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;YAChF,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAoC,CAAC;YACzF,MAAM,OAAO,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;YACpD,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC7B,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,eAAe,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,SAAS;IACtB,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,iBAAiB,IAAI,IAAI,EAAE,CAAC;QAC9B,iBAAiB,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1C,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;gBACd,eAAe,GAAG,KAAK,CAAC;YAC1B,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,IAA+B,EAC/B,IAAa,EACb,gBAA+B,EAAE;IAEjC,MAAM,CAAC,GAAG,MAAM,SAAS,EAAE,CAAC;IAC5B,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;QACtC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7C,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,aAAa,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,QAAyB;IACnE,YAAY;IACZ,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC;IAEjC,SAAS,wBAAwB,CAAC,GAAmB;QACnD,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACnC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QAEtB,wCAAwC;QACxC,IAAI,IAAI,YAAY,UAAU;YAAE,OAAO,IAAI,CAAC;QAC5C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,cAAc;YAAE,OAAO,IAAI,CAAC;QAC1E,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,UAAU,CAAC,CAAC;QACjF,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,UAAU,MAAM,CACnB,IAAY,EACZ,OAAuB;QAEvB,mCAAmC;QACnC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/D,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAClE,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;YACzB,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,YAAsD,CAAC;IAChE,CAAC;IAED,KAAK,UAAU,MAAM,CAAC,KAAY;QAChC,6CAA6C;QAC7C,iDAAiD;QACjD,2BAA2B;QAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC5B,OAAO,GAAG,CAAC;QACb,CAAC;QAED,yDAAyD;QACzD,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,iBAAiB,EAAE,IAAI,WAAW,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;YACjE,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,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,cAAc,EAAE,WAAW,EAAE;YAC7D,WAAW,CAAC,MAAqB;SAClC,CAAC,CAAC;QACH,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACtB,0DAA0D;YAC1D,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3F,CAAC;QACD,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAmB;SACtD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM;QACN,MAAM;QACN,OAAO;YACL,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnB,eAAe,CAAC,OAAO,EAAE,CAAC;QAC5B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -13,9 +13,10 @@ function handleRequest(msg) {
|
|
|
13
13
|
transferList = chunks.map((chunk) => chunk.buffer);
|
|
14
14
|
}
|
|
15
15
|
else {
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
const
|
|
16
|
+
// 재조립 완료된 raw 바이트의 무거운 JSON 파싱만 worker 에서 수행 (stateless)
|
|
17
|
+
const resultBytes = new Uint8Array(msg.data);
|
|
18
|
+
const message = protocol.parseMessage(resultBytes);
|
|
19
|
+
const encoded = transfer.encode(message);
|
|
19
20
|
result = encoded.result;
|
|
20
21
|
transferList = encoded.transferList;
|
|
21
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-protocol.worker.js","sourceRoot":"","sources":["../../src/workers/client-protocol.worker.ts"],"names":[],"mappings":"AAAA,iCAAiC;AAEjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;AAQzC,SAAS,aAAa,CAAC,GAAkB;IAIvC,IAAI,CAAC;QACH,IAAI,MAAe,CAAC;QACpB,IAAI,YAAY,GAAmB,EAAE,CAAC;QAEtC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAG7B,CAAC;YACF,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,GAAG,MAAM,CAAC;YAChB,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAqB,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,MAAM,
|
|
1
|
+
{"version":3,"file":"client-protocol.worker.js","sourceRoot":"","sources":["../../src/workers/client-protocol.worker.ts"],"names":[],"mappings":"AAAA,iCAAiC;AAEjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;AAQzC,SAAS,aAAa,CAAC,GAAkB;IAIvC,IAAI,CAAC;QACH,IAAI,MAAe,CAAC;QACpB,IAAI,YAAY,GAAmB,EAAE,CAAC;QAEtC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAG7B,CAAC;YACF,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,GAAG,MAAM,CAAC;YAChB,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAqB,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,yDAAyD;YACzD,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,IAAmB,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YACxB,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACtC,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC;IAC7E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,QAAQ,EAAE;gBACR,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,GAAG,YAAY,KAAK;oBACzB,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE;oBAC5C,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE;aAC7B;YACD,YAAY,EAAE,EAAE;SACjB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;IAC1E,iBAAiB;IACjB,IAAI,CAAC,SAAS,GAAG,CAAC,KAAmB,EAAE,EAAE;QACvC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,IAAqB,CAAC,CAAC;QAC9E,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC3C,CAAC,CAAC;AACJ,CAAC;KAAM,CAAC;IACN,yBAAyB;IACzB,MAAM,eAAe,GAAG,gBAAgB,CAAC;IACzC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACrD,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;QACvB,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAa,EAAE,EAAE;YACzC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC,IAAqB,CAAC,CAAC;YACxE,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,YAA6B,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC;AACH,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.88",
|
|
4
4
|
"description": "심플리즘 패키지 - 서비스 (client)",
|
|
5
5
|
"author": "심플리즘",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
],
|
|
19
19
|
"sideEffects": false,
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@simplysm/core-common": "14.0.
|
|
22
|
-
"@simplysm/orm-common": "14.0.
|
|
23
|
-
"@simplysm/service-common": "14.0.
|
|
21
|
+
"@simplysm/core-common": "14.0.88",
|
|
22
|
+
"@simplysm/orm-common": "14.0.88",
|
|
23
|
+
"@simplysm/service-common": "14.0.88"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@types/ws": "^8.18.1",
|
|
@@ -149,7 +149,7 @@ async function getWorker(): Promise<BrowserWorker | undefined> {
|
|
|
149
149
|
}
|
|
150
150
|
|
|
151
151
|
async function runWorker(
|
|
152
|
-
type: "encode" | "
|
|
152
|
+
type: "encode" | "parseMessage",
|
|
153
153
|
data: unknown,
|
|
154
154
|
transferables: ArrayBuffer[] = [],
|
|
155
155
|
): Promise<unknown | undefined> {
|
|
@@ -200,18 +200,32 @@ export function createClientProtocolWrapper(protocol: ServiceProtocol): ClientPr
|
|
|
200
200
|
}
|
|
201
201
|
|
|
202
202
|
async function decode(bytes: Bytes): Promise<ServiceMessageDecodeResult<ServiceMessage>> {
|
|
203
|
-
|
|
203
|
+
// 청크 재조립(stateful)은 항상 메인 스레드 단일 누적기에서 수행한다.
|
|
204
|
+
// 청크별로 worker/메인을 분기하면 한 메시지의 청크가 서로 다른 누적기로 흩어져
|
|
205
|
+
// 재조립이 영원히 완성되지 못한다 (#35).
|
|
206
|
+
const acc = protocol.accumulate(bytes);
|
|
207
|
+
if (acc.type === "progress") {
|
|
208
|
+
return acc;
|
|
209
|
+
}
|
|
204
210
|
|
|
205
|
-
//
|
|
206
|
-
|
|
207
|
-
|
|
211
|
+
// 재조립 완료. 무거운 JSON 파싱(stateless)만 크기 기준으로 worker 에 위임한다.
|
|
212
|
+
const resultBytes = acc.resultBytes;
|
|
213
|
+
if (!isWorkerAvailable() || resultBytes.length <= SIZE_THRESHOLD) {
|
|
214
|
+
return { type: "complete", uuid: acc.uuid, message: protocol.parseMessage(resultBytes) };
|
|
208
215
|
}
|
|
209
216
|
|
|
210
|
-
const rawResult = await runWorker("
|
|
217
|
+
const rawResult = await runWorker("parseMessage", resultBytes, [
|
|
218
|
+
resultBytes.buffer as ArrayBuffer,
|
|
219
|
+
]);
|
|
211
220
|
if (rawResult == null) {
|
|
212
|
-
|
|
221
|
+
// worker 미가용: 메인 스레드에서 파싱 (이 경우 buffer 가 transfer 되지 않았음)
|
|
222
|
+
return { type: "complete", uuid: acc.uuid, message: protocol.parseMessage(resultBytes) };
|
|
213
223
|
}
|
|
214
|
-
return
|
|
224
|
+
return {
|
|
225
|
+
type: "complete",
|
|
226
|
+
uuid: acc.uuid,
|
|
227
|
+
message: transfer.decode(rawResult) as ServiceMessage,
|
|
228
|
+
};
|
|
215
229
|
}
|
|
216
230
|
|
|
217
231
|
return {
|
|
@@ -7,7 +7,7 @@ const protocol = createServiceProtocol();
|
|
|
7
7
|
|
|
8
8
|
interface WorkerRequest {
|
|
9
9
|
id: string;
|
|
10
|
-
type: "encode" | "
|
|
10
|
+
type: "encode" | "parseMessage";
|
|
11
11
|
data: unknown;
|
|
12
12
|
}
|
|
13
13
|
|
|
@@ -28,9 +28,10 @@ function handleRequest(msg: WorkerRequest): {
|
|
|
28
28
|
result = chunks;
|
|
29
29
|
transferList = chunks.map((chunk) => chunk.buffer as ArrayBuffer);
|
|
30
30
|
} else {
|
|
31
|
-
|
|
32
|
-
const
|
|
33
|
-
const
|
|
31
|
+
// 재조립 완료된 raw 바이트의 무거운 JSON 파싱만 worker 에서 수행 (stateless)
|
|
32
|
+
const resultBytes = new Uint8Array(msg.data as ArrayBuffer);
|
|
33
|
+
const message = protocol.parseMessage(resultBytes);
|
|
34
|
+
const encoded = transfer.encode(message);
|
|
34
35
|
result = encoded.result;
|
|
35
36
|
transferList = encoded.transferList;
|
|
36
37
|
}
|