@dooboostore/simple-boot-http-server 1.0.23 → 1.0.24

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 (167) hide show
  1. package/README.MD +27 -1
  2. package/dist/cjs/SimpleBootHttpServer.js +79 -39
  3. package/dist/cjs/SimpleBootHttpServer.js.map +3 -3
  4. package/dist/cjs/codes/HttpHeaders.js +14 -3
  5. package/dist/cjs/codes/HttpHeaders.js.map +2 -2
  6. package/dist/cjs/codes/Mimes.js +2 -0
  7. package/dist/cjs/codes/Mimes.js.map +2 -2
  8. package/dist/cjs/decorators/MethodMapping.js +7 -6
  9. package/dist/cjs/decorators/MethodMapping.js.map +3 -3
  10. package/dist/cjs/endpoints/WebSocketEndPoint.js +16 -0
  11. package/dist/cjs/endpoints/WebSocketEndPoint.js.map +7 -0
  12. package/dist/cjs/filters/CacheFilter.js +75 -35
  13. package/dist/cjs/filters/CacheFilter.js.map +3 -3
  14. package/dist/cjs/filters/IntentSchemeFilter.js +98 -0
  15. package/dist/cjs/filters/IntentSchemeFilter.js.map +7 -0
  16. package/dist/cjs/filters/ResourceFilter.js +4 -1
  17. package/dist/cjs/filters/ResourceFilter.js.map +2 -2
  18. package/dist/cjs/filters/TopicProtocolFilter.js +343 -0
  19. package/dist/cjs/filters/TopicProtocolFilter.js.map +7 -0
  20. package/dist/cjs/filters/index.js +2 -0
  21. package/dist/cjs/filters/index.js.map +2 -2
  22. package/dist/cjs/index.js +28 -0
  23. package/dist/cjs/index.js.map +2 -2
  24. package/dist/cjs/models/RequestResponse.js +51 -89
  25. package/dist/cjs/models/RequestResponse.js.map +3 -3
  26. package/dist/cjs/models/datas/body/ReqPathData.js +29 -0
  27. package/dist/cjs/models/datas/body/ReqPathData.js.map +7 -0
  28. package/dist/cjs/option/HttpServerOption.js +25 -5
  29. package/dist/cjs/option/HttpServerOption.js.map +2 -2
  30. package/dist/cjs/proxy/SymbolIntentApiServiceProxy.js +141 -0
  31. package/dist/cjs/proxy/SymbolIntentApiServiceProxy.js.map +7 -0
  32. package/dist/cjs/proxy/SymbolIntentApiServiceProxyBase.js +35 -0
  33. package/dist/cjs/proxy/SymbolIntentApiServiceProxyBase.js.map +7 -0
  34. package/dist/cjs/proxy/TopicProtocolApiServiceProxy.js +324 -0
  35. package/dist/cjs/proxy/TopicProtocolApiServiceProxy.js.map +7 -0
  36. package/dist/cjs/proxy/index.js +26 -0
  37. package/dist/cjs/proxy/index.js.map +7 -0
  38. package/dist/cjs/resolvers/ResourceResolver.js +2 -2
  39. package/dist/cjs/resolvers/ResourceResolver.js.map +2 -2
  40. package/dist/cjs/session/SessionManager.js +2 -2
  41. package/dist/cjs/session/SessionManager.js.map +2 -2
  42. package/dist/cjs/websocket/WebSocketClient.js +554 -0
  43. package/dist/cjs/websocket/WebSocketClient.js.map +7 -0
  44. package/dist/cjs/websocket/WebSocketManager.js +652 -0
  45. package/dist/cjs/websocket/WebSocketManager.js.map +7 -0
  46. package/dist/cjs/websocket/index.js +24 -0
  47. package/dist/cjs/websocket/index.js.map +7 -0
  48. package/dist/esm/SimpleBootHttpServer.js +59 -19
  49. package/dist/esm/SimpleBootHttpServer.js.map +2 -2
  50. package/dist/esm/codes/HttpHeaders.js +12 -2
  51. package/dist/esm/codes/HttpHeaders.js.map +2 -2
  52. package/dist/esm/codes/Mimes.js +2 -0
  53. package/dist/esm/codes/Mimes.js.map +2 -2
  54. package/dist/esm/decorators/MethodMapping.js +2 -1
  55. package/dist/esm/decorators/MethodMapping.js.map +2 -2
  56. package/dist/esm/endpoints/WebSocketEndPoint.js +1 -0
  57. package/dist/esm/endpoints/WebSocketEndPoint.js.map +7 -0
  58. package/dist/esm/filters/CacheFilter.js +67 -27
  59. package/dist/esm/filters/CacheFilter.js.map +2 -2
  60. package/dist/esm/filters/IntentSchemeFilter.js +75 -0
  61. package/dist/esm/filters/IntentSchemeFilter.js.map +7 -0
  62. package/dist/esm/filters/ResourceFilter.js +4 -1
  63. package/dist/esm/filters/ResourceFilter.js.map +2 -2
  64. package/dist/esm/filters/TopicProtocolFilter.js +310 -0
  65. package/dist/esm/filters/TopicProtocolFilter.js.map +7 -0
  66. package/dist/esm/filters/index.js +1 -0
  67. package/dist/esm/filters/index.js.map +2 -2
  68. package/dist/esm/index.js +12 -0
  69. package/dist/esm/index.js.map +2 -2
  70. package/dist/esm/models/RequestResponse.js +46 -84
  71. package/dist/esm/models/RequestResponse.js.map +2 -2
  72. package/dist/esm/models/datas/body/ReqPathData.js +6 -0
  73. package/dist/esm/models/datas/body/ReqPathData.js.map +7 -0
  74. package/dist/esm/option/HttpServerOption.js +24 -4
  75. package/dist/esm/option/HttpServerOption.js.map +2 -2
  76. package/dist/esm/proxy/SymbolIntentApiServiceProxy.js +118 -0
  77. package/dist/esm/proxy/SymbolIntentApiServiceProxy.js.map +7 -0
  78. package/dist/esm/proxy/SymbolIntentApiServiceProxyBase.js +12 -0
  79. package/dist/esm/proxy/SymbolIntentApiServiceProxyBase.js.map +7 -0
  80. package/dist/esm/proxy/TopicProtocolApiServiceProxy.js +301 -0
  81. package/dist/esm/proxy/TopicProtocolApiServiceProxy.js.map +7 -0
  82. package/dist/esm/proxy/index.js +4 -0
  83. package/dist/esm/proxy/index.js.map +7 -0
  84. package/dist/esm/resolvers/ResourceResolver.js +1 -1
  85. package/dist/esm/resolvers/ResourceResolver.js.map +1 -1
  86. package/dist/esm/session/SessionManager.js +1 -1
  87. package/dist/esm/session/SessionManager.js.map +1 -1
  88. package/dist/esm/websocket/WebSocketClient.js +529 -0
  89. package/dist/esm/websocket/WebSocketClient.js.map +7 -0
  90. package/dist/esm/websocket/WebSocketManager.js +622 -0
  91. package/dist/esm/websocket/WebSocketManager.js.map +7 -0
  92. package/dist/esm/websocket/index.js +3 -0
  93. package/dist/esm/websocket/index.js.map +7 -0
  94. package/dist/esm-bundle/dooboostore-simple-boot-http-server.esm.js +13190 -4886
  95. package/dist/esm-bundle/dooboostore-simple-boot-http-server.esm.js.map +4 -4
  96. package/dist/types/SimpleBootHttpServer.d.ts +5 -3
  97. package/dist/types/SimpleBootHttpServer.d.ts.map +1 -1
  98. package/dist/types/codes/HttpHeaders.d.ts +3 -0
  99. package/dist/types/codes/HttpHeaders.d.ts.map +1 -1
  100. package/dist/types/codes/Mimes.d.ts +3 -1
  101. package/dist/types/codes/Mimes.d.ts.map +1 -1
  102. package/dist/types/decorators/MethodMapping.d.ts +3 -2
  103. package/dist/types/decorators/MethodMapping.d.ts.map +1 -1
  104. package/dist/types/endpoints/WebSocketEndPoint.d.ts +17 -0
  105. package/dist/types/endpoints/WebSocketEndPoint.d.ts.map +1 -0
  106. package/dist/types/filters/CacheFilter.d.ts +6 -0
  107. package/dist/types/filters/CacheFilter.d.ts.map +1 -1
  108. package/dist/types/filters/IntentSchemeFilter.d.ts +20 -0
  109. package/dist/types/filters/IntentSchemeFilter.d.ts.map +1 -0
  110. package/dist/types/filters/ResourceFilter.d.ts.map +1 -1
  111. package/dist/types/filters/TopicProtocolFilter.d.ts +34 -0
  112. package/dist/types/filters/TopicProtocolFilter.d.ts.map +1 -0
  113. package/dist/types/filters/index.d.ts +1 -0
  114. package/dist/types/filters/index.d.ts.map +1 -1
  115. package/dist/types/index.d.ts +12 -0
  116. package/dist/types/index.d.ts.map +1 -1
  117. package/dist/types/models/RequestResponse.d.ts +9 -6
  118. package/dist/types/models/RequestResponse.d.ts.map +1 -1
  119. package/dist/types/models/datas/body/ReqPathData.d.ts +4 -0
  120. package/dist/types/models/datas/body/ReqPathData.d.ts.map +1 -0
  121. package/dist/types/option/HttpServerOption.d.ts +30 -20
  122. package/dist/types/option/HttpServerOption.d.ts.map +1 -1
  123. package/dist/types/proxy/SymbolIntentApiServiceProxy.d.ts +18 -0
  124. package/dist/types/proxy/SymbolIntentApiServiceProxy.d.ts.map +1 -0
  125. package/dist/types/proxy/SymbolIntentApiServiceProxyBase.d.ts +5 -0
  126. package/dist/types/proxy/SymbolIntentApiServiceProxyBase.d.ts.map +1 -0
  127. package/dist/types/proxy/TopicProtocolApiServiceProxy.d.ts +28 -0
  128. package/dist/types/proxy/TopicProtocolApiServiceProxy.d.ts.map +1 -0
  129. package/dist/types/proxy/index.d.ts +4 -0
  130. package/dist/types/proxy/index.d.ts.map +1 -0
  131. package/dist/types/session/SessionManager.d.ts +2 -17
  132. package/dist/types/session/SessionManager.d.ts.map +1 -1
  133. package/dist/types/websocket/WebSocketClient.d.ts +88 -0
  134. package/dist/types/websocket/WebSocketClient.d.ts.map +1 -0
  135. package/dist/types/websocket/WebSocketManager.d.ts +163 -0
  136. package/dist/types/websocket/WebSocketManager.d.ts.map +1 -0
  137. package/dist/types/websocket/index.d.ts +3 -0
  138. package/dist/types/websocket/index.d.ts.map +1 -0
  139. package/dist/umd-bundle/dooboostore-simple-boot-http-server.umd.js +13262 -4958
  140. package/dist/umd-bundle/dooboostore-simple-boot-http-server.umd.js.map +4 -4
  141. package/dist/umd-bundle/websocket-client.umd.js +11194 -0
  142. package/dist/umd-bundle/websocket-client.umd.js.map +7 -0
  143. package/package.json +24 -15
  144. package/src/SimpleBootHttpServer.ts +366 -312
  145. package/src/codes/HttpHeaders.ts +13 -2
  146. package/src/codes/Mimes.ts +27 -25
  147. package/src/decorators/MethodMapping.ts +4 -3
  148. package/src/endpoints/WebSocketEndPoint.ts +12 -0
  149. package/src/filters/CacheFilter.ts +112 -67
  150. package/src/filters/IntentSchemeFilter.ts +69 -0
  151. package/src/filters/ResourceFilter.ts +6 -1
  152. package/src/filters/TopicProtocolFilter.ts +349 -0
  153. package/src/filters/index.ts +1 -0
  154. package/src/index.ts +12 -12
  155. package/src/models/RequestResponse.ts +108 -240
  156. package/src/models/datas/body/ReqPathData.ts +3 -0
  157. package/src/option/HttpServerOption.ts +73 -23
  158. package/src/proxy/SymbolIntentApiServiceProxy.ts +120 -0
  159. package/src/proxy/SymbolIntentApiServiceProxyBase.ts +16 -0
  160. package/src/proxy/TopicProtocolApiServiceProxy.ts +328 -0
  161. package/src/proxy/index.ts +3 -0
  162. package/src/resolvers/ResourceResolver.ts +1 -1
  163. package/src/session/SessionManager.ts +3 -3
  164. package/src/websocket/WebSocketClient.ts +637 -0
  165. package/src/websocket/WebSocketManager.ts +713 -0
  166. package/src/websocket/index.ts +2 -0
  167. package/tsconfig.json +3 -1
@@ -0,0 +1,343 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+ var TopicProtocolFilter_exports = {};
29
+ __export(TopicProtocolFilter_exports, {
30
+ TopicProtocolFilter: () => TopicProtocolFilter
31
+ });
32
+ module.exports = __toCommonJS(TopicProtocolFilter_exports);
33
+ var import_simple_boot = require("@dooboostore/simple-boot");
34
+ var import_HttpHeaders = require("../codes/HttpHeaders");
35
+ var import_Mimes = require("../codes/Mimes");
36
+ var import_HttpStatus = require("../codes/HttpStatus");
37
+ var import_simple_boot2 = require("@dooboostore/simple-boot");
38
+ var import_simple_boot3 = require("@dooboostore/simple-boot");
39
+ var import_simple_boot4 = require("@dooboostore/simple-boot");
40
+ var import_core_node = require("@dooboostore/core-node");
41
+ var fs = __toESM(require("node:fs"), 1);
42
+ var import_core = require("@dooboostore/core");
43
+ var __decorate = function(decorators, target, key, desc) {
44
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
45
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
46
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
47
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
48
+ };
49
+ var __metadata = function(k, v) {
50
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
51
+ };
52
+ var _a, _b;
53
+ let TopicProtocolFilter = class TopicProtocolFilter2 {
54
+ constructor(intentManager, routerManager) {
55
+ this.intentManager = intentManager;
56
+ this.routerManager = routerManager;
57
+ }
58
+ async onInit(app) {
59
+ }
60
+ isProtocolRequest(rr) {
61
+ const header = rr.reqHeaderFirst(import_HttpHeaders.HttpHeaders.XSimpleBootHttpTopicProtocol);
62
+ const contentType = rr.reqHeaderFirst(import_HttpHeaders.HttpHeaders.ContentType);
63
+ return header?.toLowerCase() === "topic" && !!contentType && contentType.includes(import_Mimes.Mimes.MultipartFormData);
64
+ }
65
+ buildResponse(target, body, requestUUID) {
66
+ return {
67
+ state: "success",
68
+ target,
69
+ requestUUID,
70
+ body
71
+ };
72
+ }
73
+ buildErrorResponse(target, body, requestUUID) {
74
+ return {
75
+ state: "error",
76
+ target,
77
+ requestUUID,
78
+ body
79
+ };
80
+ }
81
+ isFileRef(value) {
82
+ if (!value || typeof value !== "object") {
83
+ return false;
84
+ }
85
+ const fileKey = value.$file;
86
+ return typeof fileKey === "string";
87
+ }
88
+ replaceFileRefs(value, fileMap) {
89
+ if (this.isFileRef(value)) {
90
+ const file = fileMap.get(value.$file);
91
+ if (file) {
92
+ return file;
93
+ }
94
+ }
95
+ if (Array.isArray(value)) {
96
+ return value.map((item) => this.replaceFileRefs(item, fileMap));
97
+ }
98
+ if (value && typeof value === "object") {
99
+ const result = {};
100
+ Object.keys(value).forEach((key) => {
101
+ result[key] = this.replaceFileRefs(value[key], fileMap);
102
+ });
103
+ return result;
104
+ }
105
+ return value;
106
+ }
107
+ isFileValue(value) {
108
+ if (value instanceof import_core_node.FileUtils.File) {
109
+ return true;
110
+ }
111
+ if (Buffer.isBuffer(value)) {
112
+ return true;
113
+ }
114
+ if (value instanceof Uint8Array) {
115
+ return true;
116
+ }
117
+ if (value instanceof ArrayBuffer) {
118
+ return true;
119
+ }
120
+ if (value && typeof value === "object" && "buffer" in value) {
121
+ const bufferValue = value.buffer;
122
+ return Buffer.isBuffer(bufferValue) || bufferValue instanceof Uint8Array || bufferValue instanceof ArrayBuffer;
123
+ }
124
+ return false;
125
+ }
126
+ toBuffer(value) {
127
+ if (Buffer.isBuffer(value)) {
128
+ return value;
129
+ }
130
+ if (value instanceof Uint8Array) {
131
+ return Buffer.from(value);
132
+ }
133
+ return Buffer.from(value);
134
+ }
135
+ async toFileEntry(value, id) {
136
+ if (value instanceof import_core_node.FileUtils.File) {
137
+ const meta = value.etcData;
138
+ const mime = meta?.contentType ?? "application/octet-stream";
139
+ const name = value.originalName ?? value.fileName ?? "file";
140
+ const buffer2 = await fs.promises.readFile(value.path);
141
+ return { id, name, mime, buffer: buffer2 };
142
+ }
143
+ if (value && typeof value === "object" && "buffer" in value) {
144
+ const payload = value;
145
+ const buffer2 = this.toBuffer(payload.buffer);
146
+ return {
147
+ id,
148
+ name: payload.name ?? "file",
149
+ mime: payload.mime ?? "application/octet-stream",
150
+ buffer: buffer2
151
+ };
152
+ }
153
+ const buffer = this.toBuffer(value);
154
+ return { id, name: "file", mime: "application/octet-stream", buffer };
155
+ }
156
+ async buildMultipartResponse(body) {
157
+ const fileEntries = [];
158
+ let fileIndex = 0;
159
+ const registerFile = async (value) => {
160
+ const id = `f${++fileIndex}`;
161
+ const entry = await this.toFileEntry(value, id);
162
+ fileEntries.push(entry);
163
+ return id;
164
+ };
165
+ const replaceFiles = async (value) => {
166
+ if (this.isFileValue(value)) {
167
+ return { $file: await registerFile(value) };
168
+ }
169
+ if (Array.isArray(value)) {
170
+ const replaced = [];
171
+ for (const item of value) {
172
+ replaced.push(await replaceFiles(item));
173
+ }
174
+ return replaced;
175
+ }
176
+ if (value && typeof value === "object") {
177
+ const result = {};
178
+ for (const key of Object.keys(value)) {
179
+ result[key] = await replaceFiles(value[key]);
180
+ }
181
+ return result;
182
+ }
183
+ return value;
184
+ };
185
+ const payload = await replaceFiles(body);
186
+ const boundary = `----simple-boot-topic-${import_core.RandomUtils.uuid4()}`;
187
+ const parts = [];
188
+ const writePart = (headers, content) => {
189
+ parts.push(Buffer.from(`--${boundary}\r
190
+ `, "utf8"));
191
+ parts.push(Buffer.from(headers.join("\r\n") + "\r\n\r\n", "utf8"));
192
+ parts.push(content);
193
+ parts.push(Buffer.from("\r\n", "utf8"));
194
+ };
195
+ writePart(["Content-Type: application/json", 'Content-Disposition: form-data; name="body"'], Buffer.from(JSON.stringify(payload), "utf8"));
196
+ for (const entry of fileEntries) {
197
+ writePart([`Content-Type: ${entry.mime}`, `Content-Disposition: form-data; name="${entry.id}"; filename="${entry.name}"`], entry.buffer);
198
+ }
199
+ parts.push(Buffer.from(`--${boundary}--\r
200
+ `, "utf8"));
201
+ return { boundary, buffer: Buffer.concat(parts), hasFiles: fileEntries.length > 0 };
202
+ }
203
+ parseRequest(meta) {
204
+ if (!meta || typeof meta !== "object") {
205
+ return null;
206
+ }
207
+ const typed = meta;
208
+ if (typed.type !== void 0 && typed.type !== "intent" && typed.type !== "router") {
209
+ return null;
210
+ }
211
+ if (typed.target !== void 0 && typeof typed.target !== "string") {
212
+ return null;
213
+ }
214
+ if (typed.requestUUID !== void 0 && typeof typed.requestUUID !== "string") {
215
+ return null;
216
+ }
217
+ if (typed.files !== void 0) {
218
+ if (!Array.isArray(typed.files)) {
219
+ return null;
220
+ }
221
+ for (const fileMeta of typed.files) {
222
+ if (!fileMeta || typeof fileMeta !== "object" || typeof fileMeta.id !== "string") {
223
+ return null;
224
+ }
225
+ }
226
+ }
227
+ return typed;
228
+ }
229
+ getBodyString(formData) {
230
+ const bodyValue = formData.body;
231
+ return typeof bodyValue === "string" ? bodyValue : void 0;
232
+ }
233
+ getFileMap(request, formData) {
234
+ const fileMap = /* @__PURE__ */ new Map();
235
+ const fileEntries = Object.entries(formData).filter(([, value]) => value instanceof import_core_node.FileUtils.File);
236
+ if (request.files && request.files.length > 0) {
237
+ request.files.forEach((fileMeta) => {
238
+ const value = formData[fileMeta.id];
239
+ if (value instanceof import_core_node.FileUtils.File) {
240
+ fileMap.set(fileMeta.id, value);
241
+ }
242
+ });
243
+ return fileMap;
244
+ }
245
+ fileEntries.forEach(([key, value]) => {
246
+ fileMap.set(key, value);
247
+ });
248
+ return fileMap;
249
+ }
250
+ async proceedBefore({ rr }) {
251
+ if (!this.isProtocolRequest(rr)) {
252
+ return true;
253
+ }
254
+ try {
255
+ const formData = await rr.reqBodyMultipartFormDataObject();
256
+ const bodyString = this.getBodyString(formData);
257
+ if (!bodyString) {
258
+ rr.resStatusCode(import_HttpStatus.HttpStatus.BadRequest);
259
+ rr.resSetHeader(import_HttpHeaders.HttpHeaders.ContentType, [import_Mimes.Mimes.ApplicationJson]);
260
+ await rr.resEnd(JSON.stringify(this.buildErrorResponse("", { message: "body not found" })));
261
+ return false;
262
+ }
263
+ const meta = JSON.parse(bodyString);
264
+ const request = this.parseRequest(meta);
265
+ if (!request) {
266
+ rr.resStatusCode(import_HttpStatus.HttpStatus.BadRequest);
267
+ rr.resSetHeader(import_HttpHeaders.HttpHeaders.ContentType, [import_Mimes.Mimes.ApplicationJson]);
268
+ await rr.resEnd(JSON.stringify(this.buildErrorResponse("", { message: "invalid body" })));
269
+ return false;
270
+ }
271
+ if (!request.target) {
272
+ rr.resStatusCode(import_HttpStatus.HttpStatus.BadRequest);
273
+ rr.resSetHeader(import_HttpHeaders.HttpHeaders.ContentType, [import_Mimes.Mimes.ApplicationJson]);
274
+ await rr.resEnd(JSON.stringify(this.buildErrorResponse("", { message: "target not found" }, request.requestUUID)));
275
+ return false;
276
+ }
277
+ const fileMap = this.getFileMap(request, formData);
278
+ const body = this.replaceFileRefs(request.body, fileMap);
279
+ let responseBody;
280
+ if (request.type === "router") {
281
+ const intent = new import_simple_boot2.Intent(request.target);
282
+ intent.data = [body, rr];
283
+ const routerModule = await this.routerManager.routing(intent);
284
+ const moduleInstance = routerModule?.getModuleInstance?.();
285
+ if (!routerModule || !moduleInstance || !routerModule.propertyKeys) {
286
+ rr.resStatusCode(import_HttpStatus.HttpStatus.NotFound);
287
+ rr.resSetHeader(import_HttpHeaders.HttpHeaders.ContentType, [import_Mimes.Mimes.ApplicationJson]);
288
+ await rr.resEnd(JSON.stringify(this.buildErrorResponse(request.target, { message: "Not found router target" }, request.requestUUID)));
289
+ return false;
290
+ }
291
+ for (const key of routerModule.propertyKeys) {
292
+ const handler = moduleInstance[key];
293
+ if (typeof handler === "function") {
294
+ const result = handler(body, rr);
295
+ responseBody = result instanceof Promise ? await result : result;
296
+ }
297
+ break;
298
+ }
299
+ } else {
300
+ const intent = new import_simple_boot2.Intent(request.target);
301
+ intent.data = [body, rr];
302
+ const result = await this.intentManager.publishMeta(intent);
303
+ if (result.target.length <= 0) {
304
+ rr.resStatusCode(import_HttpStatus.HttpStatus.NotFound);
305
+ rr.resSetHeader(import_HttpHeaders.HttpHeaders.ContentType, [import_Mimes.Mimes.ApplicationJson]);
306
+ await rr.resEnd(JSON.stringify(this.buildErrorResponse(request.target, { message: "Not found intent target" }, request.requestUUID)));
307
+ return false;
308
+ }
309
+ const rdata = result.return[0];
310
+ responseBody = rdata instanceof Promise ? await rdata : rdata;
311
+ }
312
+ const response = this.buildResponse(request.target, responseBody, request.requestUUID);
313
+ const multipart = await this.buildMultipartResponse(response);
314
+ rr.resStatusCode(import_HttpStatus.HttpStatus.Ok);
315
+ if (multipart.hasFiles) {
316
+ rr.resSetHeader(import_HttpHeaders.HttpHeaders.ContentType, [`multipart/mixed; boundary=${multipart.boundary}`]);
317
+ await rr.resEnd(multipart.buffer);
318
+ } else {
319
+ rr.resSetHeader(import_HttpHeaders.HttpHeaders.ContentType, [import_Mimes.Mimes.ApplicationJson]);
320
+ await rr.resEnd(JSON.stringify(response));
321
+ }
322
+ return false;
323
+ } catch (error) {
324
+ rr.resStatusCode(import_HttpStatus.HttpStatus.BadRequest);
325
+ rr.resSetHeader(import_HttpHeaders.HttpHeaders.ContentType, [import_Mimes.Mimes.ApplicationJson]);
326
+ const message = error instanceof Error ? error.message : "Invalid request";
327
+ await rr.resEnd(JSON.stringify(this.buildErrorResponse("", { message })));
328
+ return false;
329
+ }
330
+ }
331
+ async proceedAfter({ rr }) {
332
+ return true;
333
+ }
334
+ };
335
+ TopicProtocolFilter = __decorate([
336
+ import_simple_boot.Sim,
337
+ __metadata("design:paramtypes", [typeof (_a = typeof import_simple_boot3.IntentManager !== "undefined" && import_simple_boot3.IntentManager) === "function" ? _a : Object, typeof (_b = typeof import_simple_boot4.RouterManager !== "undefined" && import_simple_boot4.RouterManager) === "function" ? _b : Object])
338
+ ], TopicProtocolFilter);
339
+ // Annotate the CommonJS export names for ESM import in node:
340
+ 0 && (module.exports = {
341
+ TopicProtocolFilter
342
+ });
343
+ //# sourceMappingURL=TopicProtocolFilter.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/filters/TopicProtocolFilter.ts"],
4
+ "sourcesContent": ["import { Filter } from './Filter';\nimport { Sim } from '@dooboostore/simple-boot';\nimport { RequestResponse } from '../models/RequestResponse';\nimport { SimpleBootHttpServer } from '../SimpleBootHttpServer';\nimport { HttpHeaders } from '../codes/HttpHeaders';\nimport { Mimes } from '../codes/Mimes';\nimport { HttpStatus } from '../codes/HttpStatus';\nimport { Intent } from '@dooboostore/simple-boot';\nimport { IntentManager } from '@dooboostore/simple-boot';\nimport { RouterManager } from '@dooboostore/simple-boot';\nimport { FileUtils } from '@dooboostore/core-node';\nimport { MultipartData } from '../models/datas/MultipartData';\nimport * as fs from 'node:fs';\nimport { RandomUtils } from '@dooboostore/core';\n\ntype HttpTopicType = 'intent' | 'router';\n\ntype HttpTopicRequest<TBody = unknown> = {\n type?: HttpTopicType;\n target?: string;\n requestUUID?: string;\n body?: TBody;\n files?: Array<{ id: string }>;\n};\n\ntype HttpTopicResponse<TBody = unknown> = {\n state: 'success' | 'error';\n target: string;\n requestUUID?: string;\n body: TBody;\n};\n\ntype MultipartFormValue = string | FileUtils.File<MultipartData>;\ntype MultipartFormDataObject = Record<string, MultipartFormValue>;\ntype FileEntry = { id: string; name: string; mime: string; buffer: Buffer };\ntype BinaryLike = Buffer | Uint8Array | ArrayBuffer;\ntype BinaryPayload = { buffer: BinaryLike; name?: string; mime?: string };\ntype FilePayload = FileUtils.File<MultipartData> | BinaryLike | BinaryPayload;\n\n@Sim\nexport class TopicProtocolFilter implements Filter {\n constructor(\n private intentManager: IntentManager,\n private routerManager: RouterManager\n ) {}\n\n async onInit(app: SimpleBootHttpServer) {}\n\n private isProtocolRequest(rr: RequestResponse) {\n const header = rr.reqHeaderFirst(HttpHeaders.XSimpleBootHttpTopicProtocol);\n const contentType = rr.reqHeaderFirst(HttpHeaders.ContentType);\n return header?.toLowerCase() === 'topic' && !!contentType && contentType.includes(Mimes.MultipartFormData);\n }\n\n private buildResponse(target: string, body: unknown, requestUUID?: string): HttpTopicResponse {\n return {\n state: 'success',\n target,\n requestUUID,\n body\n };\n }\n\n private buildErrorResponse(target: string, body: unknown, requestUUID?: string): HttpTopicResponse {\n return {\n state: 'error',\n target,\n requestUUID,\n body\n };\n }\n\n private isFileRef(value: unknown): value is { $file: string } {\n if (!value || typeof value !== 'object') {\n return false;\n }\n const fileKey = (value as { $file?: unknown }).$file;\n return typeof fileKey === 'string';\n }\n\n private replaceFileRefs(value: unknown, fileMap: Map<string, FileUtils.File<MultipartData>>): unknown {\n if (this.isFileRef(value)) {\n const file = fileMap.get(value.$file);\n if (file) {\n return file;\n }\n }\n if (Array.isArray(value)) {\n return value.map(item => this.replaceFileRefs(item, fileMap));\n }\n if (value && typeof value === 'object') {\n const result: Record<string, unknown> = {};\n Object.keys(value).forEach(key => {\n result[key] = this.replaceFileRefs((value as Record<string, unknown>)[key], fileMap);\n });\n return result;\n }\n return value;\n }\n\n private isFileValue(value: unknown): value is FilePayload {\n if (value instanceof FileUtils.File) {\n return true;\n }\n if (Buffer.isBuffer(value)) {\n return true;\n }\n if (value instanceof Uint8Array) {\n return true;\n }\n if (value instanceof ArrayBuffer) {\n return true;\n }\n if (value && typeof value === 'object' && 'buffer' in value) {\n const bufferValue = (value as { buffer?: unknown }).buffer;\n return Buffer.isBuffer(bufferValue) || bufferValue instanceof Uint8Array || bufferValue instanceof ArrayBuffer;\n }\n return false;\n }\n\n private toBuffer(value: BinaryLike): Buffer {\n if (Buffer.isBuffer(value)) {\n return value;\n }\n if (value instanceof Uint8Array) {\n return Buffer.from(value);\n }\n return Buffer.from(value);\n }\n\n private async toFileEntry(value: FilePayload, id: string): Promise<FileEntry> {\n if (value instanceof FileUtils.File) {\n const meta = value.etcData as { contentType?: string } | undefined;\n const mime = meta?.contentType ?? 'application/octet-stream';\n const name = value.originalName ?? value.fileName ?? 'file';\n const buffer = await fs.promises.readFile(value.path);\n return { id, name, mime, buffer };\n }\n\n if (value && typeof value === 'object' && 'buffer' in value) {\n const payload = value as BinaryPayload;\n const buffer = this.toBuffer(payload.buffer);\n return {\n id,\n name: payload.name ?? 'file',\n mime: payload.mime ?? 'application/octet-stream',\n buffer\n };\n }\n\n const buffer = this.toBuffer(value as BinaryLike);\n return { id, name: 'file', mime: 'application/octet-stream', buffer };\n }\n\n private async buildMultipartResponse(body: unknown) {\n const fileEntries: FileEntry[] = [];\n let fileIndex = 0;\n\n const registerFile = async (value: FilePayload) => {\n const id = `f${++fileIndex}`;\n const entry = await this.toFileEntry(value, id);\n fileEntries.push(entry);\n return id;\n };\n\n const replaceFiles = async (value: unknown): Promise<unknown> => {\n if (this.isFileValue(value)) {\n return { $file: await registerFile(value) };\n }\n if (Array.isArray(value)) {\n const replaced = [];\n for (const item of value) {\n replaced.push(await replaceFiles(item));\n }\n return replaced;\n }\n if (value && typeof value === 'object') {\n const result: Record<string, unknown> = {};\n for (const key of Object.keys(value)) {\n result[key] = await replaceFiles((value as Record<string, unknown>)[key]);\n }\n return result;\n }\n return value;\n };\n\n const payload = await replaceFiles(body);\n const boundary = `----simple-boot-topic-${RandomUtils.uuid4()}`;\n const parts: Buffer[] = [];\n\n const writePart = (headers: string[], content: Buffer) => {\n parts.push(Buffer.from(`--${boundary}\\r\\n`, 'utf8'));\n parts.push(Buffer.from(headers.join('\\r\\n') + '\\r\\n\\r\\n', 'utf8'));\n parts.push(content);\n parts.push(Buffer.from('\\r\\n', 'utf8'));\n };\n\n writePart(['Content-Type: application/json', 'Content-Disposition: form-data; name=\\\"body\\\"'], Buffer.from(JSON.stringify(payload), 'utf8'));\n\n for (const entry of fileEntries) {\n writePart([`Content-Type: ${entry.mime}`, `Content-Disposition: form-data; name=\\\"${entry.id}\\\"; filename=\\\"${entry.name}\\\"`], entry.buffer);\n }\n\n parts.push(Buffer.from(`--${boundary}--\\r\\n`, 'utf8'));\n return { boundary, buffer: Buffer.concat(parts), hasFiles: fileEntries.length > 0 };\n }\n\n private parseRequest(meta: unknown): HttpTopicRequest | null {\n if (!meta || typeof meta !== 'object') {\n return null;\n }\n const typed = meta as Partial<HttpTopicRequest>;\n if (typed.type !== undefined && typed.type !== 'intent' && typed.type !== 'router') {\n return null;\n }\n if (typed.target !== undefined && typeof typed.target !== 'string') {\n return null;\n }\n if (typed.requestUUID !== undefined && typeof typed.requestUUID !== 'string') {\n return null;\n }\n if (typed.files !== undefined) {\n if (!Array.isArray(typed.files)) {\n return null;\n }\n for (const fileMeta of typed.files) {\n if (!fileMeta || typeof fileMeta !== 'object' || typeof (fileMeta as { id?: unknown }).id !== 'string') {\n return null;\n }\n }\n }\n return typed as HttpTopicRequest;\n }\n\n private getBodyString(formData: MultipartFormDataObject): string | undefined {\n const bodyValue = formData.body;\n return typeof bodyValue === 'string' ? bodyValue : undefined;\n }\n\n private getFileMap(request: HttpTopicRequest, formData: MultipartFormDataObject) {\n const fileMap = new Map<string, FileUtils.File<MultipartData>>();\n const fileEntries = Object.entries(formData).filter(([, value]) => value instanceof FileUtils.File);\n if (request.files && request.files.length > 0) {\n request.files.forEach(fileMeta => {\n const value = formData[fileMeta.id];\n if (value instanceof FileUtils.File) {\n fileMap.set(fileMeta.id, value);\n }\n });\n return fileMap;\n }\n fileEntries.forEach(([key, value]) => {\n fileMap.set(key, value as FileUtils.File<MultipartData>);\n });\n return fileMap;\n }\n\n async proceedBefore({ rr }: { rr: RequestResponse; app: SimpleBootHttpServer; carrier: Map<string, unknown> }) {\n if (!this.isProtocolRequest(rr)) {\n return true;\n }\n\n try {\n const formData = await rr.reqBodyMultipartFormDataObject<MultipartFormDataObject>();\n const bodyString = this.getBodyString(formData);\n if (!bodyString) {\n rr.resStatusCode(HttpStatus.BadRequest);\n rr.resSetHeader(HttpHeaders.ContentType, [Mimes.ApplicationJson]);\n await rr.resEnd(JSON.stringify(this.buildErrorResponse('', { message: 'body not found' })));\n return false;\n }\n\n const meta = JSON.parse(bodyString) as unknown;\n const request = this.parseRequest(meta);\n if (!request) {\n rr.resStatusCode(HttpStatus.BadRequest);\n rr.resSetHeader(HttpHeaders.ContentType, [Mimes.ApplicationJson]);\n await rr.resEnd(JSON.stringify(this.buildErrorResponse('', { message: 'invalid body' })));\n return false;\n }\n if (!request.target) {\n rr.resStatusCode(HttpStatus.BadRequest);\n rr.resSetHeader(HttpHeaders.ContentType, [Mimes.ApplicationJson]);\n await rr.resEnd(JSON.stringify(this.buildErrorResponse('', { message: 'target not found' }, request.requestUUID)));\n return false;\n }\n\n const fileMap = this.getFileMap(request, formData);\n\n const body = this.replaceFileRefs(request.body, fileMap);\n let responseBody: unknown;\n\n if (request.type === 'router') {\n const intent = new Intent(request.target);\n intent.data = [body, rr];\n const routerModule = await this.routerManager.routing(intent);\n const moduleInstance = routerModule?.getModuleInstance?.();\n if (!routerModule || !moduleInstance || !routerModule.propertyKeys) {\n rr.resStatusCode(HttpStatus.NotFound);\n rr.resSetHeader(HttpHeaders.ContentType, [Mimes.ApplicationJson]);\n await rr.resEnd(JSON.stringify(this.buildErrorResponse(request.target, { message: 'Not found router target' }, request.requestUUID)));\n return false;\n }\n for (const key of routerModule.propertyKeys) {\n const handler = (moduleInstance as Record<string | symbol, unknown>)[key];\n if (typeof handler === 'function') {\n const result = (handler as (body: unknown, rr: RequestResponse) => unknown)(body, rr);\n responseBody = result instanceof Promise ? await result : result;\n }\n break;\n }\n } else {\n const intent = new Intent(request.target);\n intent.data = [body, rr];\n const result = await this.intentManager.publishMeta(intent);\n if (result.target.length <= 0) {\n rr.resStatusCode(HttpStatus.NotFound);\n rr.resSetHeader(HttpHeaders.ContentType, [Mimes.ApplicationJson]);\n await rr.resEnd(JSON.stringify(this.buildErrorResponse(request.target, { message: 'Not found intent target' }, request.requestUUID)));\n return false;\n }\n const rdata = result.return[0];\n responseBody = rdata instanceof Promise ? await rdata : rdata;\n }\n\n const response = this.buildResponse(request.target, responseBody, request.requestUUID);\n const multipart = await this.buildMultipartResponse(response);\n rr.resStatusCode(HttpStatus.Ok);\n if (multipart.hasFiles) {\n rr.resSetHeader(HttpHeaders.ContentType, [`multipart/mixed; boundary=${multipart.boundary}`]);\n await rr.resEnd(multipart.buffer);\n } else {\n rr.resSetHeader(HttpHeaders.ContentType, [Mimes.ApplicationJson]);\n await rr.resEnd(JSON.stringify(response));\n }\n return false;\n } catch (error) {\n rr.resStatusCode(HttpStatus.BadRequest);\n rr.resSetHeader(HttpHeaders.ContentType, [Mimes.ApplicationJson]);\n const message = error instanceof Error ? error.message : 'Invalid request';\n await rr.resEnd(JSON.stringify(this.buildErrorResponse('', { message })));\n return false;\n }\n }\n\n async proceedAfter({ rr }: { rr: RequestResponse; app: SimpleBootHttpServer; carrier: Map<string, unknown> }) {\n return true;\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yBAAoB;AAGpB,yBAA4B;AAC5B,mBAAsB;AACtB,wBAA2B;AAC3B,IAAAA,sBAAuB;AACvB,IAAAA,sBAA8B;AAC9B,IAAAA,sBAA8B;AAC9B,uBAA0B;AAE1B,SAAoB;AACpB,kBAA4B;;;;;;;;;;;AA2BrB,IAAM,sBAAN,MAAMC,qBAAmB;EAC9B,YACU,eACA,eAA4B;AAD5B,SAAA,gBAAA;AACA,SAAA,gBAAA;EACP;EAEH,MAAM,OAAO,KAAyB;EAAG;EAEjC,kBAAkB,IAAmB;AAC3C,UAAM,SAAS,GAAG,eAAe,+BAAY,4BAA4B;AACzE,UAAM,cAAc,GAAG,eAAe,+BAAY,WAAW;AAC7D,WAAO,QAAQ,YAAW,MAAO,WAAW,CAAC,CAAC,eAAe,YAAY,SAAS,mBAAM,iBAAiB;EAC3G;EAEQ,cAAc,QAAgB,MAAe,aAAoB;AACvE,WAAO;MACL,OAAO;MACP;MACA;MACA;;EAEJ;EAEQ,mBAAmB,QAAgB,MAAe,aAAoB;AAC5E,WAAO;MACL,OAAO;MACP;MACA;MACA;;EAEJ;EAEQ,UAAU,OAAc;AAC9B,QAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AACvC,aAAO;IACT;AACA,UAAM,UAAW,MAA8B;AAC/C,WAAO,OAAO,YAAY;EAC5B;EAEQ,gBAAgB,OAAgB,SAAmD;AACzF,QAAI,KAAK,UAAU,KAAK,GAAG;AACzB,YAAM,OAAO,QAAQ,IAAI,MAAM,KAAK;AACpC,UAAI,MAAM;AACR,eAAO;MACT;IACF;AACA,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,aAAO,MAAM,IAAI,UAAQ,KAAK,gBAAgB,MAAM,OAAO,CAAC;IAC9D;AACA,QAAI,SAAS,OAAO,UAAU,UAAU;AACtC,YAAM,SAAkC,CAAA;AACxC,aAAO,KAAK,KAAK,EAAE,QAAQ,SAAM;AAC/B,eAAO,GAAG,IAAI,KAAK,gBAAiB,MAAkC,GAAG,GAAG,OAAO;MACrF,CAAC;AACD,aAAO;IACT;AACA,WAAO;EACT;EAEQ,YAAY,OAAc;AAChC,QAAI,iBAAiB,2BAAU,MAAM;AACnC,aAAO;IACT;AACA,QAAI,OAAO,SAAS,KAAK,GAAG;AAC1B,aAAO;IACT;AACA,QAAI,iBAAiB,YAAY;AAC/B,aAAO;IACT;AACA,QAAI,iBAAiB,aAAa;AAChC,aAAO;IACT;AACA,QAAI,SAAS,OAAO,UAAU,YAAY,YAAY,OAAO;AAC3D,YAAM,cAAe,MAA+B;AACpD,aAAO,OAAO,SAAS,WAAW,KAAK,uBAAuB,cAAc,uBAAuB;IACrG;AACA,WAAO;EACT;EAEQ,SAAS,OAAiB;AAChC,QAAI,OAAO,SAAS,KAAK,GAAG;AAC1B,aAAO;IACT;AACA,QAAI,iBAAiB,YAAY;AAC/B,aAAO,OAAO,KAAK,KAAK;IAC1B;AACA,WAAO,OAAO,KAAK,KAAK;EAC1B;EAEQ,MAAM,YAAY,OAAoB,IAAU;AACtD,QAAI,iBAAiB,2BAAU,MAAM;AACnC,YAAM,OAAO,MAAM;AACnB,YAAM,OAAO,MAAM,eAAe;AAClC,YAAM,OAAO,MAAM,gBAAgB,MAAM,YAAY;AACrD,YAAMC,UAAS,MAAM,GAAG,SAAS,SAAS,MAAM,IAAI;AACpD,aAAO,EAAE,IAAI,MAAM,MAAM,QAAAA,QAAM;IACjC;AAEA,QAAI,SAAS,OAAO,UAAU,YAAY,YAAY,OAAO;AAC3D,YAAM,UAAU;AAChB,YAAMA,UAAS,KAAK,SAAS,QAAQ,MAAM;AAC3C,aAAO;QACL;QACA,MAAM,QAAQ,QAAQ;QACtB,MAAM,QAAQ,QAAQ;QACtB,QAAAA;;IAEJ;AAEA,UAAM,SAAS,KAAK,SAAS,KAAmB;AAChD,WAAO,EAAE,IAAI,MAAM,QAAQ,MAAM,4BAA4B,OAAM;EACrE;EAEQ,MAAM,uBAAuB,MAAa;AAChD,UAAM,cAA2B,CAAA;AACjC,QAAI,YAAY;AAEhB,UAAM,eAAe,OAAO,UAAsB;AAChD,YAAM,KAAK,IAAI,EAAE,SAAS;AAC1B,YAAM,QAAQ,MAAM,KAAK,YAAY,OAAO,EAAE;AAC9C,kBAAY,KAAK,KAAK;AACtB,aAAO;IACT;AAEA,UAAM,eAAe,OAAO,UAAoC;AAC9D,UAAI,KAAK,YAAY,KAAK,GAAG;AAC3B,eAAO,EAAE,OAAO,MAAM,aAAa,KAAK,EAAC;MAC3C;AACA,UAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,cAAM,WAAW,CAAA;AACjB,mBAAW,QAAQ,OAAO;AACxB,mBAAS,KAAK,MAAM,aAAa,IAAI,CAAC;QACxC;AACA,eAAO;MACT;AACA,UAAI,SAAS,OAAO,UAAU,UAAU;AACtC,cAAM,SAAkC,CAAA;AACxC,mBAAW,OAAO,OAAO,KAAK,KAAK,GAAG;AACpC,iBAAO,GAAG,IAAI,MAAM,aAAc,MAAkC,GAAG,CAAC;QAC1E;AACA,eAAO;MACT;AACA,aAAO;IACT;AAEA,UAAM,UAAU,MAAM,aAAa,IAAI;AACvC,UAAM,WAAW,yBAAyB,wBAAY,MAAK,CAAE;AAC7D,UAAM,QAAkB,CAAA;AAExB,UAAM,YAAY,CAAC,SAAmB,YAAmB;AACvD,YAAM,KAAK,OAAO,KAAK,KAAK,QAAQ;GAAQ,MAAM,CAAC;AACnD,YAAM,KAAK,OAAO,KAAK,QAAQ,KAAK,MAAM,IAAI,YAAY,MAAM,CAAC;AACjE,YAAM,KAAK,OAAO;AAClB,YAAM,KAAK,OAAO,KAAK,QAAQ,MAAM,CAAC;IACxC;AAEA,cAAU,CAAC,kCAAkC,6CAA+C,GAAG,OAAO,KAAK,KAAK,UAAU,OAAO,GAAG,MAAM,CAAC;AAE3I,eAAW,SAAS,aAAa;AAC/B,gBAAU,CAAC,iBAAiB,MAAM,IAAI,IAAI,yCAA0C,MAAM,EAAE,gBAAkB,MAAM,IAAI,GAAI,GAAG,MAAM,MAAM;IAC7I;AAEA,UAAM,KAAK,OAAO,KAAK,KAAK,QAAQ;GAAU,MAAM,CAAC;AACrD,WAAO,EAAE,UAAU,QAAQ,OAAO,OAAO,KAAK,GAAG,UAAU,YAAY,SAAS,EAAC;EACnF;EAEQ,aAAa,MAAa;AAChC,QAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AACrC,aAAO;IACT;AACA,UAAM,QAAQ;AACd,QAAI,MAAM,SAAS,UAAa,MAAM,SAAS,YAAY,MAAM,SAAS,UAAU;AAClF,aAAO;IACT;AACA,QAAI,MAAM,WAAW,UAAa,OAAO,MAAM,WAAW,UAAU;AAClE,aAAO;IACT;AACA,QAAI,MAAM,gBAAgB,UAAa,OAAO,MAAM,gBAAgB,UAAU;AAC5E,aAAO;IACT;AACA,QAAI,MAAM,UAAU,QAAW;AAC7B,UAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,GAAG;AAC/B,eAAO;MACT;AACA,iBAAW,YAAY,MAAM,OAAO;AAClC,YAAI,CAAC,YAAY,OAAO,aAAa,YAAY,OAAQ,SAA8B,OAAO,UAAU;AACtG,iBAAO;QACT;MACF;IACF;AACA,WAAO;EACT;EAEQ,cAAc,UAAiC;AACrD,UAAM,YAAY,SAAS;AAC3B,WAAO,OAAO,cAAc,WAAW,YAAY;EACrD;EAEQ,WAAW,SAA2B,UAAiC;AAC7E,UAAM,UAAU,oBAAI,IAAG;AACvB,UAAM,cAAc,OAAO,QAAQ,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,iBAAiB,2BAAU,IAAI;AAClG,QAAI,QAAQ,SAAS,QAAQ,MAAM,SAAS,GAAG;AAC7C,cAAQ,MAAM,QAAQ,cAAW;AAC/B,cAAM,QAAQ,SAAS,SAAS,EAAE;AAClC,YAAI,iBAAiB,2BAAU,MAAM;AACnC,kBAAQ,IAAI,SAAS,IAAI,KAAK;QAChC;MACF,CAAC;AACD,aAAO;IACT;AACA,gBAAY,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAK;AACnC,cAAQ,IAAI,KAAK,KAAsC;IACzD,CAAC;AACD,WAAO;EACT;EAEA,MAAM,cAAc,EAAE,GAAE,GAAqF;AAC3G,QAAI,CAAC,KAAK,kBAAkB,EAAE,GAAG;AAC/B,aAAO;IACT;AAEA,QAAI;AACF,YAAM,WAAW,MAAM,GAAG,+BAA8B;AACxD,YAAM,aAAa,KAAK,cAAc,QAAQ;AAC9C,UAAI,CAAC,YAAY;AACf,WAAG,cAAc,6BAAW,UAAU;AACtC,WAAG,aAAa,+BAAY,aAAa,CAAC,mBAAM,eAAe,CAAC;AAChE,cAAM,GAAG,OAAO,KAAK,UAAU,KAAK,mBAAmB,IAAI,EAAE,SAAS,iBAAgB,CAAE,CAAC,CAAC;AAC1F,eAAO;MACT;AAEA,YAAM,OAAO,KAAK,MAAM,UAAU;AAClC,YAAM,UAAU,KAAK,aAAa,IAAI;AACtC,UAAI,CAAC,SAAS;AACZ,WAAG,cAAc,6BAAW,UAAU;AACtC,WAAG,aAAa,+BAAY,aAAa,CAAC,mBAAM,eAAe,CAAC;AAChE,cAAM,GAAG,OAAO,KAAK,UAAU,KAAK,mBAAmB,IAAI,EAAE,SAAS,eAAc,CAAE,CAAC,CAAC;AACxF,eAAO;MACT;AACA,UAAI,CAAC,QAAQ,QAAQ;AACnB,WAAG,cAAc,6BAAW,UAAU;AACtC,WAAG,aAAa,+BAAY,aAAa,CAAC,mBAAM,eAAe,CAAC;AAChE,cAAM,GAAG,OAAO,KAAK,UAAU,KAAK,mBAAmB,IAAI,EAAE,SAAS,mBAAkB,GAAI,QAAQ,WAAW,CAAC,CAAC;AACjH,eAAO;MACT;AAEA,YAAM,UAAU,KAAK,WAAW,SAAS,QAAQ;AAEjD,YAAM,OAAO,KAAK,gBAAgB,QAAQ,MAAM,OAAO;AACvD,UAAI;AAEJ,UAAI,QAAQ,SAAS,UAAU;AAC7B,cAAM,SAAS,IAAI,2BAAO,QAAQ,MAAM;AACxC,eAAO,OAAO,CAAC,MAAM,EAAE;AACvB,cAAM,eAAe,MAAM,KAAK,cAAc,QAAQ,MAAM;AAC5D,cAAM,iBAAiB,cAAc,oBAAmB;AACxD,YAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,aAAa,cAAc;AAClE,aAAG,cAAc,6BAAW,QAAQ;AACpC,aAAG,aAAa,+BAAY,aAAa,CAAC,mBAAM,eAAe,CAAC;AAChE,gBAAM,GAAG,OAAO,KAAK,UAAU,KAAK,mBAAmB,QAAQ,QAAQ,EAAE,SAAS,0BAAyB,GAAI,QAAQ,WAAW,CAAC,CAAC;AACpI,iBAAO;QACT;AACA,mBAAW,OAAO,aAAa,cAAc;AAC3C,gBAAM,UAAW,eAAoD,GAAG;AACxE,cAAI,OAAO,YAAY,YAAY;AACjC,kBAAM,SAAU,QAA4D,MAAM,EAAE;AACpF,2BAAe,kBAAkB,UAAU,MAAM,SAAS;UAC5D;AACA;QACF;MACF,OAAO;AACL,cAAM,SAAS,IAAI,2BAAO,QAAQ,MAAM;AACxC,eAAO,OAAO,CAAC,MAAM,EAAE;AACvB,cAAM,SAAS,MAAM,KAAK,cAAc,YAAY,MAAM;AAC1D,YAAI,OAAO,OAAO,UAAU,GAAG;AAC7B,aAAG,cAAc,6BAAW,QAAQ;AACpC,aAAG,aAAa,+BAAY,aAAa,CAAC,mBAAM,eAAe,CAAC;AAChE,gBAAM,GAAG,OAAO,KAAK,UAAU,KAAK,mBAAmB,QAAQ,QAAQ,EAAE,SAAS,0BAAyB,GAAI,QAAQ,WAAW,CAAC,CAAC;AACpI,iBAAO;QACT;AACA,cAAM,QAAQ,OAAO,OAAO,CAAC;AAC7B,uBAAe,iBAAiB,UAAU,MAAM,QAAQ;MAC1D;AAEA,YAAM,WAAW,KAAK,cAAc,QAAQ,QAAQ,cAAc,QAAQ,WAAW;AACrF,YAAM,YAAY,MAAM,KAAK,uBAAuB,QAAQ;AAC5D,SAAG,cAAc,6BAAW,EAAE;AAC9B,UAAI,UAAU,UAAU;AACtB,WAAG,aAAa,+BAAY,aAAa,CAAC,6BAA6B,UAAU,QAAQ,EAAE,CAAC;AAC5F,cAAM,GAAG,OAAO,UAAU,MAAM;MAClC,OAAO;AACL,WAAG,aAAa,+BAAY,aAAa,CAAC,mBAAM,eAAe,CAAC;AAChE,cAAM,GAAG,OAAO,KAAK,UAAU,QAAQ,CAAC;MAC1C;AACA,aAAO;IACT,SAAS,OAAO;AACd,SAAG,cAAc,6BAAW,UAAU;AACtC,SAAG,aAAa,+BAAY,aAAa,CAAC,mBAAM,eAAe,CAAC;AAChE,YAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU;AACzD,YAAM,GAAG,OAAO,KAAK,UAAU,KAAK,mBAAmB,IAAI,EAAE,QAAO,CAAE,CAAC,CAAC;AACxE,aAAO;IACT;EACF;EAEA,MAAM,aAAa,EAAE,GAAE,GAAqF;AAC1G,WAAO;EACT;;AAnTW,sBAAmB,WAAA;EAD/B;uDAG0B,sCAAa,eAAb,uCAAa,aAAA,KAAA,QAAA,QAAA,KAAA,OACb,sCAAa,eAAb,uCAAa,aAAA,KAAA,MAAA,CAAA;GAH3B,mBAAmB;",
6
+ "names": ["import_simple_boot", "TopicProtocolFilter", "buffer"]
7
+ }
@@ -16,6 +16,7 @@ var filters_exports = {};
16
16
  module.exports = __toCommonJS(filters_exports);
17
17
  __reExport(filters_exports, require("./CacheFilter"), module.exports);
18
18
  __reExport(filters_exports, require("./Filter"), module.exports);
19
+ __reExport(filters_exports, require("./TopicProtocolFilter"), module.exports);
19
20
  __reExport(filters_exports, require("./HttpStatusFilter"), module.exports);
20
21
  __reExport(filters_exports, require("./OpenApi3Filter"), module.exports);
21
22
  __reExport(filters_exports, require("./ResourceFilter"), module.exports);
@@ -24,6 +25,7 @@ __reExport(filters_exports, require("./ThrowFilter"), module.exports);
24
25
  0 && (module.exports = {
25
26
  ...require("./CacheFilter"),
26
27
  ...require("./Filter"),
28
+ ...require("./TopicProtocolFilter"),
27
29
  ...require("./HttpStatusFilter"),
28
30
  ...require("./OpenApi3Filter"),
29
31
  ...require("./ResourceFilter"),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/filters/index.ts"],
4
- "sourcesContent": ["export * from './CacheFilter';\nexport * from './Filter';\nexport * from './HttpStatusFilter';\nexport * from './OpenApi3Filter';\nexport * from './ResourceFilter';\nexport * from './ThrowFilter';\n"],
5
- "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA,4BAAc,0BAAd;AACA,4BAAc,qBADd;AAEA,4BAAc,+BAFd;AAGA,4BAAc,6BAHd;AAIA,4BAAc,6BAJd;AAKA,4BAAc,0BALd;",
4
+ "sourcesContent": ["export * from './CacheFilter';\nexport * from './Filter';\nexport * from './TopicProtocolFilter';\nexport * from './HttpStatusFilter';\nexport * from './OpenApi3Filter';\nexport * from './ResourceFilter';\nexport * from './ThrowFilter';\n"],
5
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA,4BAAc,0BAAd;AACA,4BAAc,qBADd;AAEA,4BAAc,kCAFd;AAGA,4BAAc,+BAHd;AAIA,4BAAc,6BAJd;AAKA,4BAAc,6BALd;AAMA,4BAAc,0BANd;",
6
6
  "names": []
7
7
  }
package/dist/cjs/index.js CHANGED
@@ -14,11 +14,39 @@ var __copyProps = (to, from, except, desc) => {
14
14
  }
15
15
  return to;
16
16
  };
17
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
17
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
19
  var src_exports = {};
19
20
  __export(src_exports, {
20
21
  default: () => src_default
21
22
  });
22
23
  module.exports = __toCommonJS(src_exports);
24
+ __reExport(src_exports, require("./codes"), module.exports);
25
+ __reExport(src_exports, require("./decorators"), module.exports);
26
+ __reExport(src_exports, require("./endpoints"), module.exports);
27
+ __reExport(src_exports, require("./errors"), module.exports);
28
+ __reExport(src_exports, require("./filters"), module.exports);
29
+ __reExport(src_exports, require("./inject"), module.exports);
30
+ __reExport(src_exports, require("./lifecycle"), module.exports);
31
+ __reExport(src_exports, require("./models"), module.exports);
32
+ __reExport(src_exports, require("./option"), module.exports);
33
+ __reExport(src_exports, require("./resolvers"), module.exports);
34
+ __reExport(src_exports, require("./session"), module.exports);
35
+ __reExport(src_exports, require("./SimpleBootHttpServer"), module.exports);
23
36
  var src_default = {};
37
+ // Annotate the CommonJS export names for ESM import in node:
38
+ 0 && (module.exports = {
39
+ ...require("./codes"),
40
+ ...require("./decorators"),
41
+ ...require("./endpoints"),
42
+ ...require("./errors"),
43
+ ...require("./filters"),
44
+ ...require("./inject"),
45
+ ...require("./lifecycle"),
46
+ ...require("./models"),
47
+ ...require("./option"),
48
+ ...require("./resolvers"),
49
+ ...require("./session"),
50
+ ...require("./SimpleBootHttpServer")
51
+ });
24
52
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "sourcesContent": ["// export * from './codes';\n// export * from './decorators';\n// export * from './endpoints';\n// export * from './errors';\n// export * from './filters';\n// export * from './inject';\n// export * from './lifecycle';\n// export * from './models';\n// export * from './option';\n// export * from './resolvers';\n// export * from './session';\n// export * from './SimpleBootHttpServer';\nexport default {}"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA,IAAO,cAAQ,CAAC;",
4
+ "sourcesContent": ["export * from './codes';\nexport * from './decorators';\nexport * from './endpoints';\nexport * from './errors';\nexport * from './filters';\nexport * from './inject';\nexport * from './lifecycle';\nexport * from './models';\nexport * from './option';\nexport * from './resolvers';\nexport * from './session';\nexport * from './SimpleBootHttpServer';\nexport default {}"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAc,oBAAd;AACA,wBAAc,yBADd;AAEA,wBAAc,wBAFd;AAGA,wBAAc,qBAHd;AAIA,wBAAc,sBAJd;AAKA,wBAAc,qBALd;AAMA,wBAAc,wBANd;AAOA,wBAAc,qBAPd;AAQA,wBAAc,qBARd;AASA,wBAAc,wBATd;AAUA,wBAAc,sBAVd;AAWA,wBAAc,mCAXd;AAYA,IAAO,cAAQ,CAAC;",
6
6
  "names": []
7
7
  }