@simplysm/service-client 14.0.1 → 14.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +127 -0
- package/dist/features/file-client.d.ts +3 -2
- package/dist/features/file-client.d.ts.map +1 -1
- package/dist/features/file-client.js +3 -3
- package/dist/features/file-client.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/protocol/client-protocol-wrapper.d.ts.map +1 -1
- package/dist/protocol/client-protocol-wrapper.js +6 -5
- package/dist/protocol/client-protocol-wrapper.js.map +1 -1
- package/dist/service-client.d.ts +3 -3
- package/dist/service-client.d.ts.map +1 -1
- package/dist/service-client.js +0 -3
- package/dist/service-client.js.map +1 -1
- package/dist/transport/service-transport.d.ts +0 -1
- package/dist/transport/service-transport.d.ts.map +1 -1
- package/dist/transport/service-transport.js +1 -7
- package/dist/transport/service-transport.js.map +1 -1
- package/dist/transport/socket-provider.d.ts.map +1 -1
- package/dist/transport/socket-provider.js +5 -0
- package/dist/transport/socket-provider.js.map +1 -1
- package/dist/types/browser-compat.d.ts +33 -0
- package/dist/types/browser-compat.d.ts.map +1 -0
- package/dist/types/browser-compat.js +17 -0
- package/dist/types/browser-compat.js.map +1 -0
- package/dist/workers/client-protocol.worker.js +1 -1
- package/dist/workers/client-protocol.worker.js.map +1 -1
- package/docs/browser-compat-types.md +77 -0
- package/docs/client-protocol-wrapper.md +35 -0
- package/docs/connection-options.md +21 -0
- package/docs/features.md +147 -0
- package/docs/progress-types.md +37 -0
- package/docs/service-client.md +89 -0
- package/docs/service-transport.md +60 -0
- package/docs/socket-provider.md +72 -0
- package/package.json +6 -5
- package/src/features/file-client.ts +6 -5
- package/src/index.ts +1 -0
- package/src/protocol/client-protocol-wrapper.ts +13 -9
- package/src/service-client.ts +2 -5
- package/src/transport/service-transport.ts +1 -7
- package/src/transport/socket-provider.ts +6 -0
- package/src/types/browser-compat.ts +47 -0
- package/src/workers/client-protocol.worker.ts +1 -1
|
@@ -2,6 +2,12 @@ import type { Bytes } from "@simplysm/core-common";
|
|
|
2
2
|
import { EventEmitter, Uuid, wait } from "@simplysm/core-common";
|
|
3
3
|
import consola from "consola";
|
|
4
4
|
|
|
5
|
+
// Node.js 환경에서 글로벌 WebSocket이 없으면 ws 패키지로 polyfill
|
|
6
|
+
if (typeof globalThis.WebSocket === "undefined") {
|
|
7
|
+
const { WebSocket } = await import("ws");
|
|
8
|
+
globalThis.WebSocket = WebSocket as never;
|
|
9
|
+
}
|
|
10
|
+
|
|
5
11
|
const logger = consola.withTag("service-client:SocketProvider");
|
|
6
12
|
|
|
7
13
|
export interface SocketProviderEvents {
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-environment compatible types for browser globals.
|
|
3
|
+
* DOM-only 타입(FileList, BlobPart, Worker, Transferable)을 대체하여
|
|
4
|
+
* Node.js / browser 양쪽 환경에서 typecheck가 통과하도록 한다.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/** Blob constructor가 허용하는 데이터 타입 (DOM BlobPart 대체) */
|
|
8
|
+
export type BlobInput = Blob | Uint8Array<ArrayBuffer> | ArrayBuffer | string;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* File 컬렉션 인터페이스 (DOM FileList 대체).
|
|
12
|
+
* 브라우저 FileList와 구조적으로 호환됨.
|
|
13
|
+
*/
|
|
14
|
+
export interface FileCollection {
|
|
15
|
+
readonly length: number;
|
|
16
|
+
item(index: number): File | null;
|
|
17
|
+
[index: number]: File;
|
|
18
|
+
[Symbol.iterator](): IterableIterator<File>;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Web Worker 인터페이스 (DOM Worker 대체).
|
|
23
|
+
* 브라우저 Worker와 구조적으로 호환됨.
|
|
24
|
+
*/
|
|
25
|
+
export interface WorkerLike {
|
|
26
|
+
onmessage: ((ev: MessageEvent) => void) | null;
|
|
27
|
+
postMessage(message: unknown, transfer?: unknown[]): void;
|
|
28
|
+
terminate(): void;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/** Web Worker API 지원 여부 확인 */
|
|
32
|
+
export function isWorkerSupported(): boolean {
|
|
33
|
+
return "Worker" in globalThis;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/** Web Worker 생성 (미지원 환경이면 undefined) */
|
|
37
|
+
export function createBrowserWorker(
|
|
38
|
+
url: URL,
|
|
39
|
+
options: { type: string },
|
|
40
|
+
): WorkerLike | undefined {
|
|
41
|
+
if (!isWorkerSupported()) return undefined;
|
|
42
|
+
const ctor = (globalThis as Record<string, unknown>)["Worker"] as new (
|
|
43
|
+
url: URL,
|
|
44
|
+
opts: { type: string },
|
|
45
|
+
) => WorkerLike;
|
|
46
|
+
return new ctor(url, options);
|
|
47
|
+
}
|
|
@@ -42,7 +42,7 @@ self.onmessage = (event: MessageEvent) => {
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
// [Worker -> Main] 성공 응답
|
|
45
|
-
self.postMessage({ id, type: "success", result },
|
|
45
|
+
self.postMessage({ id, type: "success", result }, transferList);
|
|
46
46
|
} catch (err) {
|
|
47
47
|
// [Worker -> Main] 에러 응답
|
|
48
48
|
self.postMessage({
|