@dooboostore/simple-boot-http-server 1.0.30 → 1.0.31

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.
Files changed (40) hide show
  1. package/README.md +58 -1
  2. package/dist/cjs/SimpleBootHttpServer.js +6 -3
  3. package/dist/cjs/SimpleBootHttpServer.js.map +2 -2
  4. package/dist/cjs/codes/Mimes.js +2 -0
  5. package/dist/cjs/codes/Mimes.js.map +2 -2
  6. package/dist/cjs/generators/ContentTypeGenerator.js +320 -0
  7. package/dist/cjs/generators/ContentTypeGenerator.js.map +7 -0
  8. package/dist/cjs/index.js +2 -0
  9. package/dist/cjs/index.js.map +2 -2
  10. package/dist/cjs/models/RequestResponse.js +3 -2
  11. package/dist/cjs/models/RequestResponse.js.map +2 -2
  12. package/dist/esm/SimpleBootHttpServer.js +6 -3
  13. package/dist/esm/SimpleBootHttpServer.js.map +2 -2
  14. package/dist/esm/codes/Mimes.js +2 -0
  15. package/dist/esm/codes/Mimes.js.map +2 -2
  16. package/dist/esm/generators/ContentTypeGenerator.js +287 -0
  17. package/dist/esm/generators/ContentTypeGenerator.js.map +7 -0
  18. package/dist/esm/index.js +1 -0
  19. package/dist/esm/index.js.map +2 -2
  20. package/dist/esm/models/RequestResponse.js +3 -2
  21. package/dist/esm/models/RequestResponse.js.map +2 -2
  22. package/dist/esm-bundle/dooboostore-simple-boot-http-server.esm.js +625 -5218
  23. package/dist/esm-bundle/dooboostore-simple-boot-http-server.esm.js.map +4 -4
  24. package/dist/types/SimpleBootHttpServer.d.ts.map +1 -1
  25. package/dist/types/codes/Mimes.d.ts +2 -0
  26. package/dist/types/codes/Mimes.d.ts.map +1 -1
  27. package/dist/types/generators/ContentTypeGenerator.d.ts +172 -0
  28. package/dist/types/generators/ContentTypeGenerator.d.ts.map +1 -0
  29. package/dist/types/index.d.ts +1 -0
  30. package/dist/types/index.d.ts.map +1 -1
  31. package/dist/types/models/RequestResponse.d.ts +4 -1
  32. package/dist/types/models/RequestResponse.d.ts.map +1 -1
  33. package/dist/umd-bundle/dooboostore-simple-boot-http-server.umd.js +625 -5218
  34. package/dist/umd-bundle/dooboostore-simple-boot-http-server.umd.js.map +4 -4
  35. package/package.json +4 -4
  36. package/src/SimpleBootHttpServer.ts +7 -3
  37. package/src/codes/Mimes.ts +2 -0
  38. package/src/generators/ContentTypeGenerator.ts +431 -0
  39. package/src/index.ts +1 -0
  40. package/src/models/RequestResponse.ts +3 -2
@@ -1 +1 @@
1
- {"version":3,"file":"SimpleBootHttpServer.d.ts","sourceRoot":"","sources":["../../src/SimpleBootHttpServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAkB,MAAM,IAAI,UAAU,EAAiB,MAAM,MAAM,CAAA;AAC1E,OAAO,EAAC,MAAM,IAAI,WAAW,EAAC,MAAM,OAAO,CAAC;AA2B5C,OAAO,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAC;AAInD,qBAAa,oBAAqB,SAAQ,iBAAiB;IAKtC,MAAM,EAAE,gBAAgB;IAJpC,MAAM,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC;IACzC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,gBAAgB,CAAsD;gBAE3D,MAAM,GAAE,gBAAyC;IAM7D,GAAG,CAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,CAAC;IAW5F,OAAO,CAAC,WAAW;CA6XpB"}
1
+ {"version":3,"file":"SimpleBootHttpServer.d.ts","sourceRoot":"","sources":["../../src/SimpleBootHttpServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAkB,MAAM,IAAI,UAAU,EAAiB,MAAM,MAAM,CAAA;AAC1E,OAAO,EAAC,MAAM,IAAI,WAAW,EAAC,MAAM,OAAO,CAAC;AA4B5C,OAAO,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAC;AAInD,qBAAa,oBAAqB,SAAQ,iBAAiB;IAKtC,MAAM,EAAE,gBAAgB;IAJpC,MAAM,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC;IACzC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,gBAAgB,CAAsD;gBAE3D,MAAM,GAAE,gBAAyC;IAM7D,GAAG,CAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,CAAC;IAW5F,OAAO,CAAC,WAAW;CAgYpB"}
@@ -26,6 +26,8 @@ export declare enum Mimes {
26
26
  MultipartFormData = "multipart/form-data",
27
27
  TextEventStream = "text/event-stream",// SSE 실시간 텍스트 스트리밍
28
28
  ApplicationXndjson = "application/x-ndjson",
29
+ ApplicationJsonSeq = "application/json-seq",// RFC 7464 JSON Text Sequences
30
+ TextCsv = "text/csv",
29
31
  ApplicationJsonPostSimpleBootSsrIntentScheme = "application/json-post+simple-boot-ssr-intent-scheme",
30
32
  Intent = "intent"
31
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Mimes.d.ts","sourceRoot":"","sources":["../../../src/codes/Mimes.ts"],"names":[],"mappings":"AAAA,oBAAY,KAAK;IACf,eAAe,qBAAqB;IACpC,sBAAsB,6BAA6B;IACnD,cAAc,oBAAoB;IAClC,oBAAoB,gCAAgC;IACpD,6BAA6B,sCAAsC;IACnE,SAAS,eAAe;IACxB,QAAQ,cAAc;IACtB,GAAG,QAAQ;IACX,OAAO,aAAa;IACpB,cAAc,oBAAoB;IAClC,OAAO,aAAa;IACpB,QAAQ,cAAc;IACtB,UAAU,iBAAiB;IAC3B,aAAa,8BAA8B;IAC3C,QAAQ,cAAc;IACtB,QAAQ,cAAc;IACtB,SAAS,eAAe;IACxB,QAAQ,kBAAkB;IAC1B,QAAQ,cAAc;IACtB,SAAS,eAAe;IACxB,QAAQ,oBAAoB;IAC5B,SAAS,gBAAgB;IACzB,YAAY,oBAAoB;IAChC,SAAS,gBAAgB;IACzB,iBAAiB,wBAAwB;IACzC,eAAe,sBAAsB,CAAE,mBAAmB;IAC1D,kBAAkB,yBAAyB;IAC3C,4CAA4C,wDAAwD;IACpG,MAAM,WAAW;CAClB"}
1
+ {"version":3,"file":"Mimes.d.ts","sourceRoot":"","sources":["../../../src/codes/Mimes.ts"],"names":[],"mappings":"AAAA,oBAAY,KAAK;IACf,eAAe,qBAAqB;IACpC,sBAAsB,6BAA6B;IACnD,cAAc,oBAAoB;IAClC,oBAAoB,gCAAgC;IACpD,6BAA6B,sCAAsC;IACnE,SAAS,eAAe;IACxB,QAAQ,cAAc;IACtB,GAAG,QAAQ;IACX,OAAO,aAAa;IACpB,cAAc,oBAAoB;IAClC,OAAO,aAAa;IACpB,QAAQ,cAAc;IACtB,UAAU,iBAAiB;IAC3B,aAAa,8BAA8B;IAC3C,QAAQ,cAAc;IACtB,QAAQ,cAAc;IACtB,SAAS,eAAe;IACxB,QAAQ,kBAAkB;IAC1B,QAAQ,cAAc;IACtB,SAAS,eAAe;IACxB,QAAQ,oBAAoB;IAC5B,SAAS,gBAAgB;IACzB,YAAY,oBAAoB;IAChC,SAAS,gBAAgB;IACzB,iBAAiB,wBAAwB;IACzC,eAAe,sBAAsB,CAAE,mBAAmB;IAC1D,kBAAkB,yBAAyB;IAC3C,kBAAkB,yBAAyB,CAAE,+BAA+B;IAC5E,OAAO,aAAa;IACpB,4CAA4C,wDAAwD;IACpG,MAAM,WAAW;CAClB"}
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Content-Type 별 스트리밍 응답 묶음.
3
+ * 핸들러는 내용(payload)만 넘기고, 형식(SSE `data:`·multipart boundary·CRLF·Content-Type·Content-Length·NDJSON 줄바꿈)은 여기서 붙인다.
4
+ *
5
+ * 돌려주는 Stream 은 그대로 async generator 라서 핸들러에서 return 하면 프레임워크가 yield 마다 바로 body 로 쏜다.
6
+ * Stream 이 contentType(boundary 포함)·compress 를 들고 있어 데코레이터에 contentType 을 따로 적지 않아도 된다.
7
+ *
8
+ * pull — 내 반복문이 만들어 yield 할 때:
9
+ * return ContentTypeGenerator.multipartReplace(this.frames(file, signal));
10
+ * push — 콜백·이벤트로 올 때마다 넣을 때:
11
+ * const out = ContentTypeGenerator.multipartReplace.channel({ signal, keep: 'latest' });
12
+ * watcher.on('change', buf => out.push(buf));
13
+ * out.onClose(() => watcher.close());
14
+ * return out;
15
+ */
16
+ export declare namespace ContentTypeGenerator {
17
+ type Source<T> = Iterable<T> | AsyncIterable<T>;
18
+ /** 프레임워크가 받는 스트림: async generator + 응답 헤더 정보 */
19
+ type Stream<T = string | Buffer> = AsyncGenerator<T, void, undefined> & {
20
+ readonly contentType: string;
21
+ /** false 면 Accept-Encoding: gzip 이어도 압축 안 함 (JPEG 처럼 이미 압축된 내용) */
22
+ readonly compress: boolean;
23
+ };
24
+ /** push 용: Stream + 넣기·닫기 */
25
+ type Channel<In, Out = string | Buffer> = Stream<Out> & {
26
+ /** 넣기. 닫혔으면 false */
27
+ push(value: In): boolean;
28
+ /** 더 넣을 게 없음 — 쌓인 건 마저 보내고 끝냄 */
29
+ close(): void;
30
+ readonly closed: boolean;
31
+ /** 끝날 때(클라이언트 끊김·close·signal abort) 한 번 — 감시자·리스너 정리용 */
32
+ onClose(fn: () => void): void;
33
+ };
34
+ type ChannelOption = {
35
+ /** abort 되면 채널을 닫음 */
36
+ signal?: AbortSignal;
37
+ /** 'queue': 하나도 안 버리고 순서대로 (이벤트) · 'latest': 밀리면 최신 하나만 (영상 프레임) */
38
+ keep?: 'queue' | 'latest';
39
+ /** 'queue' 최대 개수 — 넘치면 가장 오래된 것부터 버림 (기본 1000) */
40
+ max?: number;
41
+ };
42
+ const isStream: (value: any) => value is Stream;
43
+ type SseEvent = string | {
44
+ data?: unknown;
45
+ event?: string;
46
+ id?: string;
47
+ retry?: number;
48
+ comment?: string;
49
+ };
50
+ /**
51
+ * SSE 이벤트 하나 → `field: value\n` 줄들 + 빈 줄(\n).
52
+ * data 가 여러 줄이면 줄마다 `data: ` (그냥 넣으면 줄바꿈에서 이벤트가 끊김). 문자열이 아니면 JSON.
53
+ */
54
+ const sseChunk: (e: SseEvent) => string;
55
+ /** 연결 유지용 SSE 주석 (브라우저 EventSource 는 무시) */
56
+ const ssePing: () => string;
57
+ type Part = Buffer | Uint8Array | string | {
58
+ body: Buffer | Uint8Array | string;
59
+ type?: string;
60
+ name?: string;
61
+ headers?: Record<string, string>;
62
+ };
63
+ /**
64
+ * 파트 MIME: type > mime-types(name) > 바이트 판별 > 문자열이면 text/plain;utf-8 > octet-stream
65
+ */
66
+ const partType: (part: Part, fallback?: string) => string;
67
+ /**
68
+ * multipart 파트 하나: `--boundary\r\nContent-Type: …\r\nContent-Length: <바이트 수>\r\n[헤더…]\r\n\r\n<body>\r\n`
69
+ * Content-Length 는 문자열도 글자 수가 아니라 UTF-8 바이트 수.
70
+ */
71
+ const multipartPart: (part: Part, boundary: string, fallbackType?: string) => Buffer;
72
+ /** multipart 끝 표시 (multipart/mixed 처럼 끝이 있는 경우) */
73
+ const multipartEnd: (boundary: string) => Buffer;
74
+ /** NDJSON 한 줄: JSON + \n (그냥 객체를 yield 하면 줄바꿈 없이 붙어서 받는 쪽이 못 나눔) */
75
+ const ndjsonLine: (value: unknown) => string;
76
+ /** RFC 7464 application/json-seq 레코드: RS(0x1E) + JSON + \n */
77
+ const jsonSeqRecord: (value: unknown) => string;
78
+ /** CSV 칸 하나 (RFC 4180): 쉼표·따옴표·줄바꿈·앞뒤 공백이 있으면 "…" 로 감싸고 " 는 "" */
79
+ const csvCell: (value: unknown) => string;
80
+ /** CSV 한 줄: 칸들 + CRLF */
81
+ const csvRow: (cells: readonly unknown[]) => string;
82
+ /** text/plain 한 줄: 문자열은 그대로, 나머지는 JSON + \n */
83
+ const textLine: (value: unknown) => string;
84
+ /** RFC 2046: 1~70자, 허용 문자만, 공백으로 끝나지 않게 */
85
+ const boundary: (value?: string) => string;
86
+ type CsvRow = readonly unknown[] | Record<string, unknown>;
87
+ type CsvOption = {
88
+ /** 헤더 줄 + 객체 행을 이 순서로 칸에 맞춤 (없으면 객체는 Object.values 순서, 헤더 없음) */
89
+ columns?: string[];
90
+ /** UTF-8 BOM — Excel 이 한글 CSV 를 깨지지 않게 열려면 필요 */
91
+ bom?: boolean;
92
+ };
93
+ /**
94
+ * text/event-stream. heartbeatMs 를 주면 그동안 이벤트가 없을 때 `: ping` 을 끼워 연결 유지
95
+ * (프록시·브라우저는 오래 조용한 연결을 끊는다).
96
+ */
97
+ function sse(src: Source<SseEvent>, opt?: {
98
+ heartbeatMs?: number;
99
+ }): Stream<string>;
100
+ /** multipart/x-mixed-replace (MJPEG 등 — 파트가 올 때마다 앞 것을 갈아끼움). 이미 압축된 내용이라 gzip 안 함 */
101
+ function multipartReplace(src: Source<Part>, opt?: {
102
+ boundary?: string;
103
+ type?: string;
104
+ }): Stream<Buffer>;
105
+ /** multipart/mixed (끝이 있는 여러 파트). 원본이 끝나면 `--boundary--` */
106
+ function multipartMixed(src: Source<Part>, opt?: {
107
+ boundary?: string;
108
+ type?: string;
109
+ }): Stream<Buffer>;
110
+ /** application/x-ndjson (한 줄에 JSON 하나) */
111
+ function ndjson(src: Source<unknown>): Stream<string>;
112
+ /** application/json-seq (RFC 7464, 레코드마다 RS 로 시작) */
113
+ function jsonSeq(src: Source<unknown>): Stream<string>;
114
+ /**
115
+ * application/json 배열을 항목마다 흘려보냄: `[` 항목 `,` 항목 … `]`.
116
+ * 받는 쪽은 다 받은 뒤 평범한 JSON 으로 파싱 (끝까지 받아야 유효한 JSON — 중간에 끊기면 깨진 JSON)
117
+ */
118
+ function jsonArray(src: Source<unknown>): Stream<string>;
119
+ /** text/csv; charset=utf-8 — 행은 배열 또는 객체(columns 순서). 줄바꿈 CRLF */
120
+ function csv(src: Source<CsvRow>, opt?: CsvOption): Stream<string>;
121
+ /** text/plain; charset=utf-8 — 한 줄에 하나 (로그 tail 등) */
122
+ function text(src: Source<unknown>): Stream<string>;
123
+ /**
124
+ * push 한 값을 큐에 담았다가 yield 하는 스트림.
125
+ * 직접 iterator 를 만드는 이유: 기다리는 중(await)에 클라이언트가 끊겨도 return() 이 바로 끝내고 onClose 를 부르게
126
+ * (async generator 는 await 중의 return 을 다음 yield 까지 미뤄서, 조용한 채널이면 정리가 안 됨).
127
+ */
128
+ function channel<In, Out>(encodeFn: (v: In) => Out, contentType: string, compress: boolean, opt?: ChannelOption & {
129
+ start?: () => Out;
130
+ end?: () => Out;
131
+ heartbeat?: {
132
+ ms: number;
133
+ chunk: () => Out;
134
+ };
135
+ }): Channel<In, Out>;
136
+ namespace sse {
137
+ /** push 로 SSE: out.push('hello') · out.push({ event: 'tick', data: { n: 1 } }) */
138
+ const channel: (opt?: ChannelOption & {
139
+ heartbeatMs?: number;
140
+ }) => Channel<SseEvent, string>;
141
+ }
142
+ namespace multipartReplace {
143
+ /** push 로 MJPEG 등: out.push(jpegBuffer) — 프레임은 보통 keep: 'latest' */
144
+ const channel: (opt?: ChannelOption & {
145
+ boundary?: string;
146
+ type?: string;
147
+ }) => Channel<Part, Buffer>;
148
+ }
149
+ namespace multipartMixed {
150
+ const channel: (opt?: ChannelOption & {
151
+ boundary?: string;
152
+ type?: string;
153
+ }) => Channel<Part, Buffer>;
154
+ }
155
+ namespace ndjson {
156
+ const channel: (opt?: ChannelOption) => Channel<unknown, string>;
157
+ }
158
+ namespace jsonSeq {
159
+ const channel: (opt?: ChannelOption) => Channel<unknown, string>;
160
+ }
161
+ namespace jsonArray {
162
+ /** close 해야 `]` 가 나가서 유효한 JSON 이 됨 */
163
+ const channel: (opt?: ChannelOption) => Channel<unknown, string>;
164
+ }
165
+ namespace csv {
166
+ const channel: (opt?: ChannelOption & CsvOption) => Channel<CsvRow, string>;
167
+ }
168
+ namespace text {
169
+ const channel: (opt?: ChannelOption) => Channel<unknown, string>;
170
+ }
171
+ }
172
+ //# sourceMappingURL=ContentTypeGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentTypeGenerator.d.ts","sourceRoot":"","sources":["../../../src/generators/ContentTypeGenerator.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ export * from './decorators';
3
3
  export * from './endpoints';
4
4
  export * from './errors';
5
5
  export * from './filters';
6
+ export * from './generators/ContentTypeGenerator';
6
7
  export * from './proxy';
7
8
  export * from './inject';
8
9
  export * from './lifecycle';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,wBAAwB,CAAC;;AACvC,wBAAiB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,mCAAmC,CAAC;AAClD,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,wBAAwB,CAAC;;AACvC,wBAAiB"}
@@ -102,9 +102,12 @@ export declare class RequestResponse {
102
102
  * - 문자열/Buffer 는 그대로, 그 외는 JSON.stringify
103
103
  * - Accept-Encoding 에 gzip 이 있으면 gzip 스트림으로 압축하고, 청크마다 Z_SYNC_FLUSH 로 바로 내보낸다
104
104
  * (flush 없이 쓰면 zlib 내부 버퍼에 모였다가 늦게 나가서 SSE 실시간성이 깨짐)
105
+ * option.compress === false 면 압축 안 함 (MJPEG 처럼 이미 압축된 내용 — CPU만 쓰고, gzip 못 푸는 클라이언트도 있음)
105
106
  * - 클라이언트가 끊으면 source.return() 으로 제너레이터를 종료시켜 finally 가 돌게 한다
106
107
  */
107
- resStream(source: Iterable<any> | AsyncIterable<any>): Promise<void>;
108
+ resStream(source: Iterable<any> | AsyncIterable<any>, option?: {
109
+ compress?: boolean;
110
+ }): Promise<void>;
108
111
  resIsDone(): boolean;
109
112
  createRequestResponseChain<T = any>(data?: T): RequestResponseChain<T>;
110
113
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RequestResponse.d.ts","sourceRoot":"","sources":["../../../src/models/RequestResponse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RequestResponse.d.ts","sourceRoot":"","sources":["../../../src/models/RequestResponse.ts"],"names":[],"mappings":"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"}