@dooboostore/simple-boot-http-server 1.0.23 → 1.0.25
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 +113 -0
- package/dist/cjs/SimpleBootHttpServer.js +80 -40
- package/dist/cjs/SimpleBootHttpServer.js.map +3 -3
- package/dist/cjs/codes/HttpHeaders.js +14 -3
- package/dist/cjs/codes/HttpHeaders.js.map +2 -2
- package/dist/cjs/codes/Mimes.js +2 -0
- package/dist/cjs/codes/Mimes.js.map +2 -2
- package/dist/cjs/decorators/MethodMapping.js +40 -9
- package/dist/cjs/decorators/MethodMapping.js.map +3 -3
- package/dist/cjs/endpoints/WebSocketEndPoint.js +16 -0
- package/dist/cjs/endpoints/WebSocketEndPoint.js.map +7 -0
- package/dist/cjs/errors/BadRequestError.js +2 -1
- package/dist/cjs/errors/BadRequestError.js.map +2 -2
- package/dist/cjs/errors/ForbiddenError.js +2 -1
- package/dist/cjs/errors/ForbiddenError.js.map +2 -2
- package/dist/cjs/errors/InternalServerError.js +2 -1
- package/dist/cjs/errors/InternalServerError.js.map +2 -2
- package/dist/cjs/errors/NotFoundError.js +2 -1
- package/dist/cjs/errors/NotFoundError.js.map +2 -2
- package/dist/cjs/errors/UnauthorizedError.js +2 -1
- package/dist/cjs/errors/UnauthorizedError.js.map +2 -2
- package/dist/cjs/filters/CacheFilter.js +75 -35
- package/dist/cjs/filters/CacheFilter.js.map +3 -3
- package/dist/cjs/filters/IntentSchemeFilter.js +97 -0
- package/dist/cjs/filters/IntentSchemeFilter.js.map +7 -0
- package/dist/cjs/filters/ResourceFilter.js +6 -2
- package/dist/cjs/filters/ResourceFilter.js.map +2 -2
- package/dist/cjs/filters/TopicProtocolFilter.js +343 -0
- package/dist/cjs/filters/TopicProtocolFilter.js.map +7 -0
- package/dist/cjs/filters/index.js +5 -1
- package/dist/cjs/filters/index.js.map +2 -2
- package/dist/cjs/index.js +30 -0
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/inject/InjectSituationType.js +1 -1
- package/dist/cjs/inject/InjectSituationType.js.map +2 -2
- package/dist/cjs/models/RequestResponse.js +70 -91
- package/dist/cjs/models/RequestResponse.js.map +3 -3
- package/dist/cjs/models/datas/body/index.js +28 -0
- package/dist/cjs/models/datas/body/index.js.map +7 -0
- package/dist/cjs/models/datas/index.js +32 -0
- package/dist/cjs/models/datas/index.js.map +7 -0
- package/dist/cjs/models/datas/path/ReqPathData.js +29 -0
- package/dist/cjs/models/datas/path/ReqPathData.js.map +7 -0
- package/dist/cjs/models/datas/{search → path}/ReqSearchParamsObj.js.map +1 -1
- package/dist/cjs/models/datas/path/index.js +24 -0
- package/dist/cjs/models/datas/path/index.js.map +7 -0
- package/dist/cjs/models/index.js +4 -16
- package/dist/cjs/models/index.js.map +2 -2
- package/dist/cjs/models/method/index.js +22 -0
- package/dist/cjs/models/method/index.js.map +7 -0
- package/dist/cjs/models/method/patch/index.js +22 -0
- package/dist/cjs/models/method/patch/index.js.map +7 -0
- package/dist/cjs/option/HttpServerOption.js +25 -5
- package/dist/cjs/option/HttpServerOption.js.map +2 -2
- package/dist/cjs/proxy/SymbolIntentApiServiceProxy.js +144 -0
- package/dist/cjs/proxy/SymbolIntentApiServiceProxy.js.map +7 -0
- package/dist/cjs/proxy/SymbolIntentApiServiceProxyBase.js +35 -0
- package/dist/cjs/proxy/SymbolIntentApiServiceProxyBase.js.map +7 -0
- package/dist/cjs/proxy/TopicProtocolApiServiceProxy.js +324 -0
- package/dist/cjs/proxy/TopicProtocolApiServiceProxy.js.map +7 -0
- package/dist/cjs/proxy/index.js +26 -0
- package/dist/cjs/proxy/index.js.map +7 -0
- package/dist/cjs/resolvers/ResourceResolver.js +2 -2
- package/dist/cjs/resolvers/ResourceResolver.js.map +2 -2
- package/dist/cjs/session/SessionManager.js +2 -2
- package/dist/cjs/session/SessionManager.js.map +2 -2
- package/dist/cjs/websocket/WebSocketClient.js +554 -0
- package/dist/cjs/websocket/WebSocketClient.js.map +7 -0
- package/dist/cjs/websocket/WebSocketManager.js +652 -0
- package/dist/cjs/websocket/WebSocketManager.js.map +7 -0
- package/dist/cjs/websocket/index.js +24 -0
- package/dist/cjs/websocket/index.js.map +7 -0
- package/dist/esm/SimpleBootHttpServer.js +60 -20
- package/dist/esm/SimpleBootHttpServer.js.map +2 -2
- package/dist/esm/codes/HttpHeaders.js +12 -2
- package/dist/esm/codes/HttpHeaders.js.map +2 -2
- package/dist/esm/codes/Mimes.js +2 -0
- package/dist/esm/codes/Mimes.js.map +2 -2
- package/dist/esm/decorators/MethodMapping.js +24 -3
- package/dist/esm/decorators/MethodMapping.js.map +2 -2
- package/dist/esm/endpoints/WebSocketEndPoint.js +1 -0
- package/dist/esm/endpoints/WebSocketEndPoint.js.map +7 -0
- package/dist/esm/errors/BadRequestError.js +2 -1
- package/dist/esm/errors/BadRequestError.js.map +2 -2
- package/dist/esm/errors/ForbiddenError.js +2 -1
- package/dist/esm/errors/ForbiddenError.js.map +2 -2
- package/dist/esm/errors/InternalServerError.js +2 -1
- package/dist/esm/errors/InternalServerError.js.map +2 -2
- package/dist/esm/errors/NotFoundError.js +2 -1
- package/dist/esm/errors/NotFoundError.js.map +2 -2
- package/dist/esm/errors/UnauthorizedError.js +2 -1
- package/dist/esm/errors/UnauthorizedError.js.map +2 -2
- package/dist/esm/filters/CacheFilter.js +67 -27
- package/dist/esm/filters/CacheFilter.js.map +2 -2
- package/dist/esm/filters/IntentSchemeFilter.js +74 -0
- package/dist/esm/filters/IntentSchemeFilter.js.map +7 -0
- package/dist/esm/filters/ResourceFilter.js +6 -2
- package/dist/esm/filters/ResourceFilter.js.map +2 -2
- package/dist/esm/filters/TopicProtocolFilter.js +310 -0
- package/dist/esm/filters/TopicProtocolFilter.js.map +7 -0
- package/dist/esm/filters/index.js +2 -0
- package/dist/esm/filters/index.js.map +2 -2
- package/dist/esm/index.js +13 -0
- package/dist/esm/index.js.map +2 -2
- package/dist/esm/inject/InjectSituationType.js +1 -1
- package/dist/esm/inject/InjectSituationType.js.map +2 -2
- package/dist/esm/models/RequestResponse.js +65 -86
- package/dist/esm/models/RequestResponse.js.map +2 -2
- package/dist/esm/models/datas/body/index.js +5 -0
- package/dist/esm/models/datas/body/index.js.map +7 -0
- package/dist/esm/models/datas/index.js +7 -0
- package/dist/esm/models/datas/index.js.map +7 -0
- package/dist/esm/models/datas/path/ReqPathData.js +6 -0
- package/dist/esm/models/datas/path/ReqPathData.js.map +7 -0
- package/dist/esm/models/datas/{search → path}/ReqSearchParamsObj.js.map +1 -1
- package/dist/esm/models/datas/path/index.js +3 -0
- package/dist/esm/models/datas/path/index.js.map +7 -0
- package/dist/esm/models/index.js +2 -8
- package/dist/esm/models/index.js.map +2 -2
- package/dist/esm/models/method/index.js +2 -0
- package/dist/esm/models/method/index.js.map +7 -0
- package/dist/esm/models/method/patch/index.js +2 -0
- package/dist/esm/models/method/patch/index.js.map +7 -0
- package/dist/esm/option/HttpServerOption.js +24 -4
- package/dist/esm/option/HttpServerOption.js.map +2 -2
- package/dist/esm/proxy/SymbolIntentApiServiceProxy.js +121 -0
- package/dist/esm/proxy/SymbolIntentApiServiceProxy.js.map +7 -0
- package/dist/esm/proxy/SymbolIntentApiServiceProxyBase.js +12 -0
- package/dist/esm/proxy/SymbolIntentApiServiceProxyBase.js.map +7 -0
- package/dist/esm/proxy/TopicProtocolApiServiceProxy.js +301 -0
- package/dist/esm/proxy/TopicProtocolApiServiceProxy.js.map +7 -0
- package/dist/esm/proxy/index.js +4 -0
- package/dist/esm/proxy/index.js.map +7 -0
- package/dist/esm/resolvers/ResourceResolver.js +1 -1
- package/dist/esm/resolvers/ResourceResolver.js.map +1 -1
- package/dist/esm/session/SessionManager.js +1 -1
- package/dist/esm/session/SessionManager.js.map +1 -1
- package/dist/esm/websocket/WebSocketClient.js +529 -0
- package/dist/esm/websocket/WebSocketClient.js.map +7 -0
- package/dist/esm/websocket/WebSocketManager.js +622 -0
- package/dist/esm/websocket/WebSocketManager.js.map +7 -0
- package/dist/esm/websocket/index.js +3 -0
- package/dist/esm/websocket/index.js.map +7 -0
- package/dist/esm-bundle/dooboostore-simple-boot-http-server.esm.js +18209 -5299
- package/dist/esm-bundle/dooboostore-simple-boot-http-server.esm.js.map +4 -4
- package/dist/types/SimpleBootHttpServer.d.ts +5 -3
- package/dist/types/SimpleBootHttpServer.d.ts.map +1 -1
- package/dist/types/codes/HttpHeaders.d.ts +3 -0
- package/dist/types/codes/HttpHeaders.d.ts.map +1 -1
- package/dist/types/codes/Mimes.d.ts +3 -1
- package/dist/types/codes/Mimes.d.ts.map +1 -1
- package/dist/types/decorators/MethodMapping.d.ts +13 -2
- package/dist/types/decorators/MethodMapping.d.ts.map +1 -1
- package/dist/types/endpoints/WebSocketEndPoint.d.ts +17 -0
- package/dist/types/endpoints/WebSocketEndPoint.d.ts.map +1 -0
- package/dist/types/errors/BadRequestError.d.ts +2 -2
- package/dist/types/errors/BadRequestError.d.ts.map +1 -1
- package/dist/types/errors/ForbiddenError.d.ts +2 -2
- package/dist/types/errors/ForbiddenError.d.ts.map +1 -1
- package/dist/types/errors/InternalServerError.d.ts +2 -2
- package/dist/types/errors/InternalServerError.d.ts.map +1 -1
- package/dist/types/errors/NotFoundError.d.ts +2 -2
- package/dist/types/errors/NotFoundError.d.ts.map +1 -1
- package/dist/types/errors/UnauthorizedError.d.ts +2 -2
- package/dist/types/errors/UnauthorizedError.d.ts.map +1 -1
- package/dist/types/filters/CacheFilter.d.ts +6 -0
- package/dist/types/filters/CacheFilter.d.ts.map +1 -1
- package/dist/types/filters/IntentSchemeFilter.d.ts +20 -0
- package/dist/types/filters/IntentSchemeFilter.d.ts.map +1 -0
- package/dist/types/filters/ResourceFilter.d.ts.map +1 -1
- package/dist/types/filters/TopicProtocolFilter.d.ts +34 -0
- package/dist/types/filters/TopicProtocolFilter.d.ts.map +1 -0
- package/dist/types/filters/index.d.ts +2 -0
- package/dist/types/filters/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/inject/InjectSituationType.d.ts.map +1 -1
- package/dist/types/models/RequestResponse.d.ts +12 -7
- package/dist/types/models/RequestResponse.d.ts.map +1 -1
- package/dist/types/models/datas/body/index.d.ts +5 -0
- package/dist/types/models/datas/body/index.d.ts.map +1 -0
- package/dist/types/models/datas/index.d.ts +7 -0
- package/dist/types/models/datas/index.d.ts.map +1 -0
- package/dist/types/models/datas/path/ReqPathData.d.ts +4 -0
- package/dist/types/models/datas/path/ReqPathData.d.ts.map +1 -0
- package/dist/types/models/datas/path/ReqSearchParamsObj.d.ts.map +1 -0
- package/dist/types/models/datas/path/index.d.ts +3 -0
- package/dist/types/models/datas/path/index.d.ts.map +1 -0
- package/dist/types/models/index.d.ts +2 -8
- package/dist/types/models/index.d.ts.map +1 -1
- package/dist/types/models/method/index.d.ts +2 -0
- package/dist/types/models/method/index.d.ts.map +1 -0
- package/dist/types/models/method/patch/index.d.ts +2 -0
- package/dist/types/models/method/patch/index.d.ts.map +1 -0
- package/dist/types/option/HttpServerOption.d.ts +30 -20
- package/dist/types/option/HttpServerOption.d.ts.map +1 -1
- package/dist/types/proxy/SymbolIntentApiServiceProxy.d.ts +16 -0
- package/dist/types/proxy/SymbolIntentApiServiceProxy.d.ts.map +1 -0
- package/dist/types/proxy/SymbolIntentApiServiceProxyBase.d.ts +5 -0
- package/dist/types/proxy/SymbolIntentApiServiceProxyBase.d.ts.map +1 -0
- package/dist/types/proxy/TopicProtocolApiServiceProxy.d.ts +28 -0
- package/dist/types/proxy/TopicProtocolApiServiceProxy.d.ts.map +1 -0
- package/dist/types/proxy/index.d.ts +4 -0
- package/dist/types/proxy/index.d.ts.map +1 -0
- package/dist/types/session/SessionManager.d.ts +2 -17
- package/dist/types/session/SessionManager.d.ts.map +1 -1
- package/dist/types/websocket/WebSocketClient.d.ts +88 -0
- package/dist/types/websocket/WebSocketClient.d.ts.map +1 -0
- package/dist/types/websocket/WebSocketManager.d.ts +163 -0
- package/dist/types/websocket/WebSocketManager.d.ts.map +1 -0
- package/dist/types/websocket/index.d.ts +3 -0
- package/dist/types/websocket/index.d.ts.map +1 -0
- package/dist/umd-bundle/dooboostore-simple-boot-http-server.umd.js +18108 -5198
- package/dist/umd-bundle/dooboostore-simple-boot-http-server.umd.js.map +4 -4
- package/dist/umd-bundle/websocket-client.umd.js +11374 -0
- package/dist/umd-bundle/websocket-client.umd.js.map +7 -0
- package/package.json +24 -15
- package/src/SimpleBootHttpServer.ts +367 -313
- package/src/codes/HttpHeaders.ts +13 -2
- package/src/codes/Mimes.ts +27 -25
- package/src/decorators/MethodMapping.ts +17 -4
- package/src/endpoints/WebSocketEndPoint.ts +12 -0
- package/src/errors/BadRequestError.ts +7 -3
- package/src/errors/ForbiddenError.ts +7 -3
- package/src/errors/InternalServerError.ts +7 -3
- package/src/errors/NotFoundError.ts +7 -3
- package/src/errors/UnauthorizedError.ts +7 -3
- package/src/filters/CacheFilter.ts +112 -67
- package/src/filters/IntentSchemeFilter.ts +69 -0
- package/src/filters/ResourceFilter.ts +10 -2
- package/src/filters/TopicProtocolFilter.ts +349 -0
- package/src/filters/index.ts +2 -0
- package/src/index.ts +13 -12
- package/src/inject/InjectSituationType.ts +1 -1
- package/src/models/RequestResponse.ts +136 -242
- package/src/models/datas/body/index.ts +4 -0
- package/src/models/datas/index.ts +6 -0
- package/src/models/datas/path/ReqPathData.ts +3 -0
- package/src/models/datas/path/index.ts +2 -0
- package/src/models/index.ts +2 -8
- package/src/models/method/index.ts +1 -0
- package/src/models/method/patch/index.ts +1 -0
- package/src/option/HttpServerOption.ts +73 -23
- package/src/proxy/SymbolIntentApiServiceProxy.ts +126 -0
- package/src/proxy/SymbolIntentApiServiceProxyBase.ts +16 -0
- package/src/proxy/TopicProtocolApiServiceProxy.ts +328 -0
- package/src/proxy/index.ts +3 -0
- package/src/resolvers/ResourceResolver.ts +1 -1
- package/src/session/SessionManager.ts +3 -3
- package/src/websocket/WebSocketClient.ts +637 -0
- package/src/websocket/WebSocketManager.ts +713 -0
- package/src/websocket/index.ts +2 -0
- package/tsconfig.json +3 -1
- package/README.MD +0 -36
- package/dist/types/models/datas/search/ReqSearchParamsObj.d.ts.map +0 -1
- /package/dist/cjs/models/datas/{search → path}/ReqSearchParamsObj.js +0 -0
- /package/dist/esm/models/datas/{search → path}/ReqSearchParamsObj.js +0 -0
- /package/dist/types/models/datas/{search → path}/ReqSearchParamsObj.d.ts +0 -0
- /package/src/models/datas/{search → path}/ReqSearchParamsObj.ts +0 -0
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
var __decorate = function(decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = function(k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var _a, _b;
|
|
11
|
+
import { Sim } from "@dooboostore/simple-boot";
|
|
12
|
+
import { HttpHeaders } from "../codes/HttpHeaders.js";
|
|
13
|
+
import { Mimes } from "../codes/Mimes.js";
|
|
14
|
+
import { HttpStatus } from "../codes/HttpStatus.js";
|
|
15
|
+
import { Intent } from "@dooboostore/simple-boot";
|
|
16
|
+
import { IntentManager } from "@dooboostore/simple-boot";
|
|
17
|
+
import { RouterManager } from "@dooboostore/simple-boot";
|
|
18
|
+
import { FileUtils } from "@dooboostore/core-node";
|
|
19
|
+
import * as fs from "node:fs";
|
|
20
|
+
import { RandomUtils } from "@dooboostore/core";
|
|
21
|
+
let TopicProtocolFilter = class TopicProtocolFilter2 {
|
|
22
|
+
constructor(intentManager, routerManager) {
|
|
23
|
+
this.intentManager = intentManager;
|
|
24
|
+
this.routerManager = routerManager;
|
|
25
|
+
}
|
|
26
|
+
async onInit(app) {
|
|
27
|
+
}
|
|
28
|
+
isProtocolRequest(rr) {
|
|
29
|
+
const header = rr.reqHeaderFirst(HttpHeaders.XSimpleBootHttpTopicProtocol);
|
|
30
|
+
const contentType = rr.reqHeaderFirst(HttpHeaders.ContentType);
|
|
31
|
+
return header?.toLowerCase() === "topic" && !!contentType && contentType.includes(Mimes.MultipartFormData);
|
|
32
|
+
}
|
|
33
|
+
buildResponse(target, body, requestUUID) {
|
|
34
|
+
return {
|
|
35
|
+
state: "success",
|
|
36
|
+
target,
|
|
37
|
+
requestUUID,
|
|
38
|
+
body
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
buildErrorResponse(target, body, requestUUID) {
|
|
42
|
+
return {
|
|
43
|
+
state: "error",
|
|
44
|
+
target,
|
|
45
|
+
requestUUID,
|
|
46
|
+
body
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
isFileRef(value) {
|
|
50
|
+
if (!value || typeof value !== "object") {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
const fileKey = value.$file;
|
|
54
|
+
return typeof fileKey === "string";
|
|
55
|
+
}
|
|
56
|
+
replaceFileRefs(value, fileMap) {
|
|
57
|
+
if (this.isFileRef(value)) {
|
|
58
|
+
const file = fileMap.get(value.$file);
|
|
59
|
+
if (file) {
|
|
60
|
+
return file;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (Array.isArray(value)) {
|
|
64
|
+
return value.map((item) => this.replaceFileRefs(item, fileMap));
|
|
65
|
+
}
|
|
66
|
+
if (value && typeof value === "object") {
|
|
67
|
+
const result = {};
|
|
68
|
+
Object.keys(value).forEach((key) => {
|
|
69
|
+
result[key] = this.replaceFileRefs(value[key], fileMap);
|
|
70
|
+
});
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
return value;
|
|
74
|
+
}
|
|
75
|
+
isFileValue(value) {
|
|
76
|
+
if (value instanceof FileUtils.File) {
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
if (Buffer.isBuffer(value)) {
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
if (value instanceof Uint8Array) {
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
if (value instanceof ArrayBuffer) {
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
if (value && typeof value === "object" && "buffer" in value) {
|
|
89
|
+
const bufferValue = value.buffer;
|
|
90
|
+
return Buffer.isBuffer(bufferValue) || bufferValue instanceof Uint8Array || bufferValue instanceof ArrayBuffer;
|
|
91
|
+
}
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
toBuffer(value) {
|
|
95
|
+
if (Buffer.isBuffer(value)) {
|
|
96
|
+
return value;
|
|
97
|
+
}
|
|
98
|
+
if (value instanceof Uint8Array) {
|
|
99
|
+
return Buffer.from(value);
|
|
100
|
+
}
|
|
101
|
+
return Buffer.from(value);
|
|
102
|
+
}
|
|
103
|
+
async toFileEntry(value, id) {
|
|
104
|
+
if (value instanceof FileUtils.File) {
|
|
105
|
+
const meta = value.etcData;
|
|
106
|
+
const mime = meta?.contentType ?? "application/octet-stream";
|
|
107
|
+
const name = value.originalName ?? value.fileName ?? "file";
|
|
108
|
+
const buffer2 = await fs.promises.readFile(value.path);
|
|
109
|
+
return { id, name, mime, buffer: buffer2 };
|
|
110
|
+
}
|
|
111
|
+
if (value && typeof value === "object" && "buffer" in value) {
|
|
112
|
+
const payload = value;
|
|
113
|
+
const buffer2 = this.toBuffer(payload.buffer);
|
|
114
|
+
return {
|
|
115
|
+
id,
|
|
116
|
+
name: payload.name ?? "file",
|
|
117
|
+
mime: payload.mime ?? "application/octet-stream",
|
|
118
|
+
buffer: buffer2
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
const buffer = this.toBuffer(value);
|
|
122
|
+
return { id, name: "file", mime: "application/octet-stream", buffer };
|
|
123
|
+
}
|
|
124
|
+
async buildMultipartResponse(body) {
|
|
125
|
+
const fileEntries = [];
|
|
126
|
+
let fileIndex = 0;
|
|
127
|
+
const registerFile = async (value) => {
|
|
128
|
+
const id = `f${++fileIndex}`;
|
|
129
|
+
const entry = await this.toFileEntry(value, id);
|
|
130
|
+
fileEntries.push(entry);
|
|
131
|
+
return id;
|
|
132
|
+
};
|
|
133
|
+
const replaceFiles = async (value) => {
|
|
134
|
+
if (this.isFileValue(value)) {
|
|
135
|
+
return { $file: await registerFile(value) };
|
|
136
|
+
}
|
|
137
|
+
if (Array.isArray(value)) {
|
|
138
|
+
const replaced = [];
|
|
139
|
+
for (const item of value) {
|
|
140
|
+
replaced.push(await replaceFiles(item));
|
|
141
|
+
}
|
|
142
|
+
return replaced;
|
|
143
|
+
}
|
|
144
|
+
if (value && typeof value === "object") {
|
|
145
|
+
const result = {};
|
|
146
|
+
for (const key of Object.keys(value)) {
|
|
147
|
+
result[key] = await replaceFiles(value[key]);
|
|
148
|
+
}
|
|
149
|
+
return result;
|
|
150
|
+
}
|
|
151
|
+
return value;
|
|
152
|
+
};
|
|
153
|
+
const payload = await replaceFiles(body);
|
|
154
|
+
const boundary = `----simple-boot-topic-${RandomUtils.uuid4()}`;
|
|
155
|
+
const parts = [];
|
|
156
|
+
const writePart = (headers, content) => {
|
|
157
|
+
parts.push(Buffer.from(`--${boundary}\r
|
|
158
|
+
`, "utf8"));
|
|
159
|
+
parts.push(Buffer.from(headers.join("\r\n") + "\r\n\r\n", "utf8"));
|
|
160
|
+
parts.push(content);
|
|
161
|
+
parts.push(Buffer.from("\r\n", "utf8"));
|
|
162
|
+
};
|
|
163
|
+
writePart(["Content-Type: application/json", 'Content-Disposition: form-data; name="body"'], Buffer.from(JSON.stringify(payload), "utf8"));
|
|
164
|
+
for (const entry of fileEntries) {
|
|
165
|
+
writePart([`Content-Type: ${entry.mime}`, `Content-Disposition: form-data; name="${entry.id}"; filename="${entry.name}"`], entry.buffer);
|
|
166
|
+
}
|
|
167
|
+
parts.push(Buffer.from(`--${boundary}--\r
|
|
168
|
+
`, "utf8"));
|
|
169
|
+
return { boundary, buffer: Buffer.concat(parts), hasFiles: fileEntries.length > 0 };
|
|
170
|
+
}
|
|
171
|
+
parseRequest(meta) {
|
|
172
|
+
if (!meta || typeof meta !== "object") {
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
const typed = meta;
|
|
176
|
+
if (typed.type !== void 0 && typed.type !== "intent" && typed.type !== "router") {
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
if (typed.target !== void 0 && typeof typed.target !== "string") {
|
|
180
|
+
return null;
|
|
181
|
+
}
|
|
182
|
+
if (typed.requestUUID !== void 0 && typeof typed.requestUUID !== "string") {
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
if (typed.files !== void 0) {
|
|
186
|
+
if (!Array.isArray(typed.files)) {
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
for (const fileMeta of typed.files) {
|
|
190
|
+
if (!fileMeta || typeof fileMeta !== "object" || typeof fileMeta.id !== "string") {
|
|
191
|
+
return null;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return typed;
|
|
196
|
+
}
|
|
197
|
+
getBodyString(formData) {
|
|
198
|
+
const bodyValue = formData.body;
|
|
199
|
+
return typeof bodyValue === "string" ? bodyValue : void 0;
|
|
200
|
+
}
|
|
201
|
+
getFileMap(request, formData) {
|
|
202
|
+
const fileMap = /* @__PURE__ */ new Map();
|
|
203
|
+
const fileEntries = Object.entries(formData).filter(([, value]) => value instanceof FileUtils.File);
|
|
204
|
+
if (request.files && request.files.length > 0) {
|
|
205
|
+
request.files.forEach((fileMeta) => {
|
|
206
|
+
const value = formData[fileMeta.id];
|
|
207
|
+
if (value instanceof FileUtils.File) {
|
|
208
|
+
fileMap.set(fileMeta.id, value);
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
return fileMap;
|
|
212
|
+
}
|
|
213
|
+
fileEntries.forEach(([key, value]) => {
|
|
214
|
+
fileMap.set(key, value);
|
|
215
|
+
});
|
|
216
|
+
return fileMap;
|
|
217
|
+
}
|
|
218
|
+
async proceedBefore({ rr }) {
|
|
219
|
+
if (!this.isProtocolRequest(rr)) {
|
|
220
|
+
return true;
|
|
221
|
+
}
|
|
222
|
+
try {
|
|
223
|
+
const formData = await rr.reqBodyMultipartFormDataObject();
|
|
224
|
+
const bodyString = this.getBodyString(formData);
|
|
225
|
+
if (!bodyString) {
|
|
226
|
+
rr.resStatusCode(HttpStatus.BadRequest);
|
|
227
|
+
rr.resSetHeader(HttpHeaders.ContentType, [Mimes.ApplicationJson]);
|
|
228
|
+
await rr.resEnd(JSON.stringify(this.buildErrorResponse("", { message: "body not found" })));
|
|
229
|
+
return false;
|
|
230
|
+
}
|
|
231
|
+
const meta = JSON.parse(bodyString);
|
|
232
|
+
const request = this.parseRequest(meta);
|
|
233
|
+
if (!request) {
|
|
234
|
+
rr.resStatusCode(HttpStatus.BadRequest);
|
|
235
|
+
rr.resSetHeader(HttpHeaders.ContentType, [Mimes.ApplicationJson]);
|
|
236
|
+
await rr.resEnd(JSON.stringify(this.buildErrorResponse("", { message: "invalid body" })));
|
|
237
|
+
return false;
|
|
238
|
+
}
|
|
239
|
+
if (!request.target) {
|
|
240
|
+
rr.resStatusCode(HttpStatus.BadRequest);
|
|
241
|
+
rr.resSetHeader(HttpHeaders.ContentType, [Mimes.ApplicationJson]);
|
|
242
|
+
await rr.resEnd(JSON.stringify(this.buildErrorResponse("", { message: "target not found" }, request.requestUUID)));
|
|
243
|
+
return false;
|
|
244
|
+
}
|
|
245
|
+
const fileMap = this.getFileMap(request, formData);
|
|
246
|
+
const body = this.replaceFileRefs(request.body, fileMap);
|
|
247
|
+
let responseBody;
|
|
248
|
+
if (request.type === "router") {
|
|
249
|
+
const intent = new Intent(request.target);
|
|
250
|
+
intent.data = [body, rr];
|
|
251
|
+
const routerModule = await this.routerManager.routing(intent);
|
|
252
|
+
const moduleInstance = routerModule?.getModuleInstance?.();
|
|
253
|
+
if (!routerModule || !moduleInstance || !routerModule.propertyKeys) {
|
|
254
|
+
rr.resStatusCode(HttpStatus.NotFound);
|
|
255
|
+
rr.resSetHeader(HttpHeaders.ContentType, [Mimes.ApplicationJson]);
|
|
256
|
+
await rr.resEnd(JSON.stringify(this.buildErrorResponse(request.target, { message: "Not found router target" }, request.requestUUID)));
|
|
257
|
+
return false;
|
|
258
|
+
}
|
|
259
|
+
for (const key of routerModule.propertyKeys) {
|
|
260
|
+
const handler = moduleInstance[key];
|
|
261
|
+
if (typeof handler === "function") {
|
|
262
|
+
const result = handler(body, rr);
|
|
263
|
+
responseBody = result instanceof Promise ? await result : result;
|
|
264
|
+
}
|
|
265
|
+
break;
|
|
266
|
+
}
|
|
267
|
+
} else {
|
|
268
|
+
const intent = new Intent(request.target);
|
|
269
|
+
intent.data = [body, rr];
|
|
270
|
+
const result = await this.intentManager.publishMeta(intent);
|
|
271
|
+
if (result.target.length <= 0) {
|
|
272
|
+
rr.resStatusCode(HttpStatus.NotFound);
|
|
273
|
+
rr.resSetHeader(HttpHeaders.ContentType, [Mimes.ApplicationJson]);
|
|
274
|
+
await rr.resEnd(JSON.stringify(this.buildErrorResponse(request.target, { message: "Not found intent target" }, request.requestUUID)));
|
|
275
|
+
return false;
|
|
276
|
+
}
|
|
277
|
+
const rdata = result.return[0];
|
|
278
|
+
responseBody = rdata instanceof Promise ? await rdata : rdata;
|
|
279
|
+
}
|
|
280
|
+
const response = this.buildResponse(request.target, responseBody, request.requestUUID);
|
|
281
|
+
const multipart = await this.buildMultipartResponse(response);
|
|
282
|
+
rr.resStatusCode(HttpStatus.Ok);
|
|
283
|
+
if (multipart.hasFiles) {
|
|
284
|
+
rr.resSetHeader(HttpHeaders.ContentType, [`multipart/mixed; boundary=${multipart.boundary}`]);
|
|
285
|
+
await rr.resEnd(multipart.buffer);
|
|
286
|
+
} else {
|
|
287
|
+
rr.resSetHeader(HttpHeaders.ContentType, [Mimes.ApplicationJson]);
|
|
288
|
+
await rr.resEnd(JSON.stringify(response));
|
|
289
|
+
}
|
|
290
|
+
return false;
|
|
291
|
+
} catch (error) {
|
|
292
|
+
rr.resStatusCode(HttpStatus.BadRequest);
|
|
293
|
+
rr.resSetHeader(HttpHeaders.ContentType, [Mimes.ApplicationJson]);
|
|
294
|
+
const message = error instanceof Error ? error.message : "Invalid request";
|
|
295
|
+
await rr.resEnd(JSON.stringify(this.buildErrorResponse("", { message })));
|
|
296
|
+
return false;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
async proceedAfter({ rr }) {
|
|
300
|
+
return true;
|
|
301
|
+
}
|
|
302
|
+
};
|
|
303
|
+
TopicProtocolFilter = __decorate([
|
|
304
|
+
Sim,
|
|
305
|
+
__metadata("design:paramtypes", [typeof (_a = typeof IntentManager !== "undefined" && IntentManager) === "function" ? _a : Object, typeof (_b = typeof RouterManager !== "undefined" && RouterManager) === "function" ? _b : Object])
|
|
306
|
+
], TopicProtocolFilter);
|
|
307
|
+
export {
|
|
308
|
+
TopicProtocolFilter
|
|
309
|
+
};
|
|
310
|
+
//# 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": "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",
|
|
6
|
+
"names": ["TopicProtocolFilter", "buffer"]
|
|
7
|
+
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export * from "./CacheFilter.js";
|
|
2
2
|
export * from "./Filter.js";
|
|
3
|
+
export * from "./TopicProtocolFilter.js";
|
|
3
4
|
export * from "./HttpStatusFilter.js";
|
|
4
5
|
export * from "./OpenApi3Filter.js";
|
|
5
6
|
export * from "./ResourceFilter.js";
|
|
6
7
|
export * from "./ThrowFilter.js";
|
|
8
|
+
export * from "./IntentSchemeFilter.js";
|
|
7
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -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';\
|
|
5
|
-
"mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
|
|
4
|
+
"sourcesContent": ["export * from './CacheFilter';\nexport * from './Filter';\nexport * from './TopicProtocolFilter';\nexport * from './HttpStatusFilter';\nexport * from './OpenApi3Filter';\nexport * from './ResourceFilter';\nexport * from './ThrowFilter';\nexport * from './IntentSchemeFilter'"],
|
|
5
|
+
"mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
export * from "./codes/index.js";
|
|
2
|
+
export * from "./decorators/index.js";
|
|
3
|
+
export * from "./endpoints/index.js";
|
|
4
|
+
export * from "./errors/index.js";
|
|
5
|
+
export * from "./filters/index.js";
|
|
6
|
+
export * from "./proxy/index.js";
|
|
7
|
+
export * from "./inject/index.js";
|
|
8
|
+
export * from "./lifecycle/index.js";
|
|
9
|
+
export * from "./models/index.js";
|
|
10
|
+
export * from "./option/index.js";
|
|
11
|
+
export * from "./resolvers/index.js";
|
|
12
|
+
export * from "./session/index.js";
|
|
13
|
+
export * from "./SimpleBootHttpServer.js";
|
|
1
14
|
var src_default = {};
|
|
2
15
|
export {
|
|
3
16
|
src_default as default
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["export * from './codes';\nexport * from './decorators';\nexport * from './endpoints';\nexport * from './errors';\nexport * from './filters';\nexport * from './proxy';\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,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,IAAO,cAAQ,CAAC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
var InjectSituationType;
|
|
2
2
|
((InjectSituationType2) => {
|
|
3
|
-
InjectSituationType2.TransactionManager = Symbol("
|
|
3
|
+
InjectSituationType2.TransactionManager = Symbol.for("simple-boot-http-server:transaction-manager-token");
|
|
4
4
|
})(InjectSituationType || (InjectSituationType = {}));
|
|
5
5
|
export {
|
|
6
6
|
InjectSituationType
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/inject/InjectSituationType.ts"],
|
|
4
|
-
"sourcesContent": ["export namespace InjectSituationType {\n export const TransactionManager = Symbol('
|
|
5
|
-
"mappings": "AAAO,IAAU;AAAA,CAAV,CAAUA,yBAAV;AACE,EAAMA,qBAAA,qBAAqB,OAAO,
|
|
4
|
+
"sourcesContent": ["export namespace InjectSituationType {\n export const TransactionManager = Symbol.for('simple-boot-http-server:transaction-manager-token');\n}"],
|
|
5
|
+
"mappings": "AAAO,IAAU;AAAA,CAAV,CAAUA,yBAAV;AACE,EAAMA,qBAAA,qBAAqB,OAAO,IAAI,mDAAmD;AAAA,GADjF;",
|
|
6
6
|
"names": ["InjectSituationType"]
|
|
7
7
|
}
|