@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,97 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var IntentSchemeFilter_exports = {};
|
|
19
|
+
__export(IntentSchemeFilter_exports, {
|
|
20
|
+
IntentSchemeFilter: () => IntentSchemeFilter
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(IntentSchemeFilter_exports);
|
|
23
|
+
var import_HttpHeaders = require("../codes/HttpHeaders");
|
|
24
|
+
var import_simple_boot = require("@dooboostore/simple-boot");
|
|
25
|
+
var import_simple_boot2 = require("@dooboostore/simple-boot");
|
|
26
|
+
var import_HttpStatus = require("../codes/HttpStatus");
|
|
27
|
+
var import_Mimes = require("../codes/Mimes");
|
|
28
|
+
var import_NotFoundError = require("../errors/NotFoundError");
|
|
29
|
+
var __decorate = function(decorators, target, key, desc) {
|
|
30
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
31
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
32
|
+
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;
|
|
33
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
34
|
+
};
|
|
35
|
+
var __metadata = function(k, v) {
|
|
36
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
37
|
+
};
|
|
38
|
+
var _a;
|
|
39
|
+
let IntentSchemeFilter = class IntentSchemeFilter2 {
|
|
40
|
+
constructor(intentManager) {
|
|
41
|
+
this.intentManager = intentManager;
|
|
42
|
+
}
|
|
43
|
+
async onInit(app) {
|
|
44
|
+
}
|
|
45
|
+
async proceedBefore({ rr, app }) {
|
|
46
|
+
const url = rr.reqUrl;
|
|
47
|
+
const contentLength = Number(rr.reqHeader(import_HttpHeaders.HttpHeaders.ContentLength.toLowerCase() ?? "0"));
|
|
48
|
+
const acceptType = rr.reqHeader(import_HttpHeaders.HttpHeaders.Accept);
|
|
49
|
+
const contentType = rr.reqHeader(import_HttpHeaders.HttpHeaders.ContentType);
|
|
50
|
+
const intentScheme = rr.reqHeader(import_HttpHeaders.HttpHeaders.XSimpleBootSsrIntentScheme);
|
|
51
|
+
if (acceptType === import_Mimes.Mimes.ApplicationJsonPostSimpleBootSsrIntentScheme && intentScheme) {
|
|
52
|
+
let intent = new import_simple_boot.Intent(`${intentScheme}:/${url}`);
|
|
53
|
+
if (contentLength > 0) {
|
|
54
|
+
if (contentType.includes(import_Mimes.Mimes.ApplicationJson)) {
|
|
55
|
+
intent.data = [await rr.reqBodyJsonData(), rr];
|
|
56
|
+
} else if (contentType.includes(import_Mimes.Mimes.MultipartFormData)) {
|
|
57
|
+
intent.data = [await rr.reqBodyMultipartFormDataObject(), rr];
|
|
58
|
+
}
|
|
59
|
+
const { return: rdatas, target } = await this.intentManager.publishMeta(intent);
|
|
60
|
+
if (target.length <= 0) {
|
|
61
|
+
throw new import_NotFoundError.NotFoundError({ message: "Not found intent target" });
|
|
62
|
+
}
|
|
63
|
+
const rdata = rdatas[0];
|
|
64
|
+
const wdata = rdata instanceof Promise ? await rdata : rdata;
|
|
65
|
+
rr.resStatusCode(import_HttpStatus.HttpStatus.Ok);
|
|
66
|
+
rr.resSetHeader(import_HttpHeaders.HttpHeaders.ContentType, [import_Mimes.Mimes.ApplicationJson]);
|
|
67
|
+
await rr.resEnd(wdata ? JSON.stringify(wdata) : void 0);
|
|
68
|
+
} else {
|
|
69
|
+
intent.data = rr.reqUrlSearchParamTuples.length > 0 ? [rr.reqUrlSearchParamsObj, rr] : [rr];
|
|
70
|
+
const { return: rdatas, target } = await this.intentManager.publishMeta(intent);
|
|
71
|
+
if (target.length <= 0) {
|
|
72
|
+
throw new import_NotFoundError.NotFoundError({ message: "Not found intent target" });
|
|
73
|
+
}
|
|
74
|
+
const rdata = rdatas[0];
|
|
75
|
+
const wdata = rdata instanceof Promise ? await rdata : rdata;
|
|
76
|
+
rr.resStatusCode(import_HttpStatus.HttpStatus.Ok);
|
|
77
|
+
rr.resSetHeader(import_HttpHeaders.HttpHeaders.ContentType, [import_Mimes.Mimes.ApplicationJson]);
|
|
78
|
+
await rr.resEnd(wdata ? JSON.stringify(wdata) : void 0);
|
|
79
|
+
}
|
|
80
|
+
return false;
|
|
81
|
+
} else {
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
async proceedAfter({ rr, app }) {
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
IntentSchemeFilter = __decorate([
|
|
90
|
+
import_simple_boot.sim,
|
|
91
|
+
__metadata("design:paramtypes", [typeof (_a = typeof import_simple_boot2.IntentManager !== "undefined" && import_simple_boot2.IntentManager) === "function" ? _a : Object])
|
|
92
|
+
], IntentSchemeFilter);
|
|
93
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
94
|
+
0 && (module.exports = {
|
|
95
|
+
IntentSchemeFilter
|
|
96
|
+
});
|
|
97
|
+
//# sourceMappingURL=IntentSchemeFilter.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/filters/IntentSchemeFilter.ts"],
|
|
4
|
+
"sourcesContent": ["import { Filter } from './Filter';\nimport { HttpHeaders } from '../codes/HttpHeaders';\nimport {Intent, sim} from '@dooboostore/simple-boot';\nimport { IntentManager } from '@dooboostore/simple-boot';\nimport { Sim } from '@dooboostore/simple-boot';\nimport { HttpStatus } from '../codes/HttpStatus';\nimport { RequestResponse } from '../models/RequestResponse';\nimport { SimpleBootHttpServer } from '../SimpleBootHttpServer';\nimport { Mimes } from '../codes/Mimes';\nimport { NotFoundError } from '../errors/NotFoundError';\n\n@sim\nexport class IntentSchemeFilter implements Filter {\n constructor(private intentManager: IntentManager) {}\n\n async onInit(app: SimpleBootHttpServer) {}\n\n async proceedBefore({ rr, app }: { rr: RequestResponse; app: SimpleBootHttpServer; carrier: Map<string, any> }) {\n // const rr = rrr;\n const url = rr.reqUrl;\n const contentLength = Number(rr.reqHeader(HttpHeaders.ContentLength.toLowerCase() ?? '0'));\n const acceptType = rr.reqHeader(HttpHeaders.Accept);\n const contentType = rr.reqHeader(HttpHeaders.ContentType);\n const intentScheme = rr.reqHeader(HttpHeaders.XSimpleBootSsrIntentScheme);\n if (acceptType === Mimes.ApplicationJsonPostSimpleBootSsrIntentScheme && intentScheme) {\n let intent = new Intent(`${intentScheme}:/${url}`);\n // console.log('---------1--intent request', intentScheme, url, contentLength, contentType );\n // const responseHeader = {} as any;\n // responseHeader[HttpHeaders.ContentType] = Mimes.ApplicationJson;\n if (contentLength > 0) {\n if (contentType.includes(Mimes.ApplicationJson)) {\n intent.data = [await rr.reqBodyJsonData(), rr];\n } else if (contentType.includes(Mimes.MultipartFormData)) {\n intent.data = [await rr.reqBodyMultipartFormDataObject(), rr];\n }\n // console.log('---------2--intent request',intent);\n const { return: rdatas, target } = await this.intentManager.publishMeta(intent);\n if (target.length <= 0) {\n throw new NotFoundError({ message: 'Not found intent target' });\n }\n const rdata = rdatas[0];\n const wdata = rdata instanceof Promise ? await rdata : rdata;\n rr.resStatusCode(HttpStatus.Ok);\n rr.resSetHeader(HttpHeaders.ContentType, [Mimes.ApplicationJson]);\n await rr.resEnd(wdata ? JSON.stringify(wdata) : undefined);\n } else {\n intent.data = rr.reqUrlSearchParamTuples.length > 0 ? [rr.reqUrlSearchParamsObj, rr] : [rr];\n const { return: rdatas, target } = await this.intentManager.publishMeta(intent);\n if (target.length <= 0) {\n throw new NotFoundError({ message: 'Not found intent target' });\n }\n const rdata = rdatas[0];\n const wdata = rdata instanceof Promise ? await rdata : rdata;\n // const wdata =undefined;\n rr.resStatusCode(HttpStatus.Ok);\n rr.resSetHeader(HttpHeaders.ContentType, [Mimes.ApplicationJson]);\n await rr.resEnd(wdata ? JSON.stringify(wdata) : undefined);\n }\n // console.log('---------3--intent request', rr.req.readable, rr.req.readableLength);\n return false;\n } else {\n return true;\n }\n }\n\n async proceedAfter({ rr, app }: { rr: RequestResponse; app: SimpleBootHttpServer; carrier: Map<string, any> }) {\n return true;\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;AACA,yBAA4B;AAC5B,yBAA0B;AAC1B,IAAAA,sBAA8B;AAE9B,wBAA2B;AAG3B,mBAAsB;AACtB,2BAA8B;;;;;;;;;;;AAGvB,IAAM,qBAAN,MAAMC,oBAAkB;EAC7B,YAAoB,eAA4B;AAA5B,SAAA,gBAAA;EAA+B;EAEnD,MAAM,OAAO,KAAyB;EAAG;EAEzC,MAAM,cAAc,EAAE,IAAI,IAAG,GAAiF;AAE5G,UAAM,MAAM,GAAG;AACf,UAAM,gBAAgB,OAAO,GAAG,UAAU,+BAAY,cAAc,YAAW,KAAM,GAAG,CAAC;AACzF,UAAM,aAAa,GAAG,UAAU,+BAAY,MAAM;AAClD,UAAM,cAAc,GAAG,UAAU,+BAAY,WAAW;AACxD,UAAM,eAAe,GAAG,UAAU,+BAAY,0BAA0B;AACxE,QAAI,eAAe,mBAAM,gDAAgD,cAAc;AACrF,UAAI,SAAS,IAAI,0BAAO,GAAG,YAAY,KAAK,GAAG,EAAE;AAIjD,UAAI,gBAAgB,GAAG;AACrB,YAAI,YAAY,SAAS,mBAAM,eAAe,GAAG;AAC/C,iBAAO,OAAO,CAAC,MAAM,GAAG,gBAAe,GAAI,EAAE;QAC/C,WAAW,YAAY,SAAS,mBAAM,iBAAiB,GAAG;AACxD,iBAAO,OAAO,CAAC,MAAM,GAAG,+BAA8B,GAAI,EAAE;QAC9D;AAEA,cAAM,EAAE,QAAQ,QAAQ,OAAM,IAAK,MAAM,KAAK,cAAc,YAAY,MAAM;AAC9E,YAAI,OAAO,UAAU,GAAG;AACtB,gBAAM,IAAI,mCAAc,EAAE,SAAS,0BAAyB,CAAE;QAChE;AACA,cAAM,QAAQ,OAAO,CAAC;AACtB,cAAM,QAAQ,iBAAiB,UAAU,MAAM,QAAQ;AACvD,WAAG,cAAc,6BAAW,EAAE;AAC9B,WAAG,aAAa,+BAAY,aAAa,CAAC,mBAAM,eAAe,CAAC;AAChE,cAAM,GAAG,OAAO,QAAQ,KAAK,UAAU,KAAK,IAAI,MAAS;MAC3D,OAAO;AACL,eAAO,OAAO,GAAG,wBAAwB,SAAS,IAAI,CAAC,GAAG,uBAAuB,EAAE,IAAI,CAAC,EAAE;AAC1F,cAAM,EAAE,QAAQ,QAAQ,OAAM,IAAK,MAAM,KAAK,cAAc,YAAY,MAAM;AAC9E,YAAI,OAAO,UAAU,GAAG;AACtB,gBAAM,IAAI,mCAAc,EAAE,SAAS,0BAAyB,CAAE;QAChE;AACA,cAAM,QAAQ,OAAO,CAAC;AACtB,cAAM,QAAQ,iBAAiB,UAAU,MAAM,QAAQ;AAEvD,WAAG,cAAc,6BAAW,EAAE;AAC9B,WAAG,aAAa,+BAAY,aAAa,CAAC,mBAAM,eAAe,CAAC;AAChE,cAAM,GAAG,OAAO,QAAQ,KAAK,UAAU,KAAK,IAAI,MAAS;MAC3D;AAEA,aAAO;IACT,OAAO;AACL,aAAO;IACT;EACF;EAEA,MAAM,aAAa,EAAE,IAAI,IAAG,GAAiF;AAC3G,WAAO;EACT;;AAvDW,qBAAkB,WAAA;EAD9B;uDAEoC,sCAAa,eAAb,uCAAa,aAAA,KAAA,MAAA,CAAA;GADrC,kBAAkB;",
|
|
6
|
+
"names": ["import_simple_boot", "IntentSchemeFilter"]
|
|
7
|
+
}
|
|
@@ -66,7 +66,8 @@ class ResourceFilter {
|
|
|
66
66
|
return it.test(url);
|
|
67
67
|
}
|
|
68
68
|
if (typeof it === "string") {
|
|
69
|
-
|
|
69
|
+
console.log("url!!!!!!!", url);
|
|
70
|
+
return it === url;
|
|
70
71
|
}
|
|
71
72
|
if (typeof it === "function") {
|
|
72
73
|
return it(rr, app);
|
|
@@ -74,8 +75,11 @@ class ResourceFilter {
|
|
|
74
75
|
if (typeof it === "object" && "request" in it) {
|
|
75
76
|
if (typeof it.request === "function") {
|
|
76
77
|
return it.request(rr, app);
|
|
78
|
+
} else if (it.request instanceof RegExp) {
|
|
79
|
+
return it.request.test(url);
|
|
80
|
+
} else {
|
|
81
|
+
return it.request === url;
|
|
77
82
|
}
|
|
78
|
-
return RegExp(it.request).test(url);
|
|
79
83
|
}
|
|
80
84
|
}) ?? [];
|
|
81
85
|
for (const it of regExps) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/filters/ResourceFilter.ts"],
|
|
4
|
-
"sourcesContent": ["import { Filter } from '../filters/Filter';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport mime from 'mime-types';\nimport { HttpHeaders } from '../codes/HttpHeaders';\nimport { HttpStatus } from '../codes/HttpStatus';\nimport { SimpleBootHttpServer } from '../SimpleBootHttpServer';\nimport { RequestResponse } from '../models/RequestResponse';\nimport { Blob } from 'node:buffer';\n\nexport type RequestFilterType = string | RegExp | ((rr: RequestResponse, app: SimpleBootHttpServer) => boolean) | ((rr: RequestResponse, app: SimpleBootHttpServer) => Promise<boolean>);\n\ntype PathDist = RequestFilterType|{request: RequestFilterType, dist: string | ((rr: RequestResponse, app: SimpleBootHttpServer) => string)};\n\ntype DataDist = {request: RequestFilterType, response: (rr: RequestResponse, app: SimpleBootHttpServer) => (string | Promise<Blob | ArrayBuffer | Response>)};\nexport const isPathDist = (item: any): item is PathDist => {\n return typeof item === 'object' && ('request' in item) && ('dist' in item);\n};\nexport const isDataDist = (item: any): item is DataDist => {\n return typeof item === 'object' && ('request' in item) && ('response' in item);\n};\nexport class ResourceFilter implements Filter {\n // private requestFilter: RequestFilterType;\n private resourceDistPath?: string;\n private resources?: (DataDist|PathDist)[];\n constructor(resourceDistPath: string, resourceRegex: PathDist[]);\n constructor(resourceRegex: DataDist[]);\n constructor(resourceDistPathOrResourceRegex: string | DataDist[], resourceRegex?: PathDist[]) {\n if (typeof resourceDistPathOrResourceRegex === 'string') {\n this.resourceDistPath = resourceDistPathOrResourceRegex;\n this.resources = resourceRegex;\n } else {\n this.resources = resourceDistPathOrResourceRegex;\n // this.requestFilter = resourceDistPathOrResourceRegex\n }\n }\n // constructor(private resourceDistPath: string, private resourceRegex: (RequestFilterType | { request: RequestFilterType, dist: string | ((rr: RequestResponse, app: SimpleBootHttpServer) => (string|Promise<Blob |ArrayBuffer| Response>)) })[] = []) {\n // }\n\n async onInit(app: SimpleBootHttpServer) {\n }\n\n async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n const url = (rr.reqUrlPathName ?? '').replace(/\\.\\./g, '');\n const urlObj = rr.reqUrlObject;\n // const requestUrl = parse(rr.reqUrl ?? '', true);\n // console.log('resource filter!!**-------', url);\n let sw = true;\n const regExps = this.resources?.filter(it => {\n if (it instanceof RegExp) {\n return it.test(url);\n }\n\n if (typeof it === 'string') {\n return RegExp(it).test(url);\n }\n\n if (typeof it === 'function') {\n return it(rr, app);\n }\n\n if (typeof it === 'object' && 'request' in it) {\n if (typeof it.request === 'function') {\n return it.request(rr, app);\n }\n return RegExp(it.request).test(url);\n }\n })??[]\n // console.log('regExps', regExps, url);\n // eslint-disable-next-line no-unused-vars\n for (const it of regExps) {\n sw = false;\n //DataDist\n if (isDataDist(it)) {\n let distValue = typeof it.response === 'function' ? it.response(rr,app) : it.response;\n if (distValue instanceof Promise) {\n const result = await distValue;\n if (result instanceof Response) {\n await rr.resEnd(result);\n break;\n } else if (result instanceof Blob) {\n rr.resStatusCode(HttpStatus.Ok);\n await rr.resEnd(result);\n break;\n }\n }\n } else {\n //PathDist or undefined\n const dist = typeof it === 'object' && 'dist' in it ? it.dist : urlObj.pathname;\n let distValue = typeof dist === 'function' ? dist(rr, app) : dist;\n if (this.resourceDistPath) {\n // It's a string path\n const resourcePath = path.join(this.resourceDistPath, distValue);\n // console.log('-----------',this.resourceDistPath, resourcePath);\n if (fs.existsSync(resourcePath)) {\n rr.resStatusCode(HttpStatus.Ok);\n rr.resSetHeader(HttpHeaders.ContentType, mime.lookup(resourcePath).toString());\n await rr.resEnd(fs.readFileSync(resourcePath));\n break;\n } else {\n rr.resStatusCode(HttpStatus.NotFound);\n await rr.resEnd();\n break;\n }\n } else {\n rr.resStatusCode(HttpStatus.InternalServerError);\n await rr.resEnd();\n break;\n }\n }\n sw = true;\n }\n return sw;\n }\n\n async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n // console.log('resource filter!!end@@**-------');\n return true;\n }\n}"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAe;AACf,uBAAiB;AACjB,wBAAiB;AACjB,yBAA4B;AAC5B,wBAA2B;AAG3B,yBAAqB;AAOd,MAAM,aAAa,CAAC,SAAgC;AACvD,SAAO,OAAO,SAAS,YAAa,aAAa,QAAU,UAAU;AACzE;AACO,MAAM,aAAa,CAAC,SAAgC;AACvD,SAAO,OAAO,SAAS,YAAa,aAAa,QAAU,cAAc;AAC7E;AACO,MAAM,eAAiC;AAAA,EAM5C,YAAY,iCAAuD,eAA4B;AAC7F,QAAI,OAAO,oCAAoC,UAAU;AACvD,WAAK,mBAAmB;AACxB,WAAK,YAAY;AAAA,IACnB,OAAO;AACL,WAAK,YAAY;AAAA,IAEnB;AAAA,EACF;AAAA;AAAA;AAAA,EAIE,MAAM,OAAO,KAA2B;AAAA,EACxC;AAAA,EAEA,MAAM,cAAc,EAAC,IAAI,IAAG,GAAgF;AACxG,UAAM,OAAO,GAAG,kBAAkB,IAAI,QAAQ,SAAS,EAAE;AACzD,UAAM,SAAS,GAAG;AAGlB,QAAI,KAAK;AACT,UAAM,UAAU,KAAK,WAAW,OAAO,QAAM;
|
|
4
|
+
"sourcesContent": ["import { Filter } from '../filters/Filter';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport mime from 'mime-types';\nimport { HttpHeaders } from '../codes/HttpHeaders';\nimport { HttpStatus } from '../codes/HttpStatus';\nimport { SimpleBootHttpServer } from '../SimpleBootHttpServer';\nimport { RequestResponse } from '../models/RequestResponse';\nimport { Blob } from 'node:buffer';\n\nexport type RequestFilterType = string | RegExp | ((rr: RequestResponse, app: SimpleBootHttpServer) => boolean) | ((rr: RequestResponse, app: SimpleBootHttpServer) => Promise<boolean>);\n\ntype PathDist = RequestFilterType|{request: RequestFilterType, dist: string | ((rr: RequestResponse, app: SimpleBootHttpServer) => string)};\n\ntype DataDist = {request: RequestFilterType, response: (rr: RequestResponse, app: SimpleBootHttpServer) => (string | Promise<Blob | ArrayBuffer | Response>)};\nexport const isPathDist = (item: any): item is PathDist => {\n return typeof item === 'object' && ('request' in item) && ('dist' in item);\n};\nexport const isDataDist = (item: any): item is DataDist => {\n return typeof item === 'object' && ('request' in item) && ('response' in item);\n};\nexport class ResourceFilter implements Filter {\n // private requestFilter: RequestFilterType;\n private resourceDistPath?: string;\n private resources?: (DataDist|PathDist)[];\n constructor(resourceDistPath: string, resourceRegex: PathDist[]);\n constructor(resourceRegex: DataDist[]);\n constructor(resourceDistPathOrResourceRegex: string | DataDist[], resourceRegex?: PathDist[]) {\n if (typeof resourceDistPathOrResourceRegex === 'string') {\n this.resourceDistPath = resourceDistPathOrResourceRegex;\n this.resources = resourceRegex;\n } else {\n this.resources = resourceDistPathOrResourceRegex;\n // this.requestFilter = resourceDistPathOrResourceRegex\n }\n }\n // constructor(private resourceDistPath: string, private resourceRegex: (RequestFilterType | { request: RequestFilterType, dist: string | ((rr: RequestResponse, app: SimpleBootHttpServer) => (string|Promise<Blob |ArrayBuffer| Response>)) })[] = []) {\n // }\n\n async onInit(app: SimpleBootHttpServer) {\n }\n\n async proceedBefore({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n const url = (rr.reqUrlPathName ?? '').replace(/\\.\\./g, '');\n const urlObj = rr.reqUrlObject;\n // const requestUrl = parse(rr.reqUrl ?? '', true);\n // console.log('resource filter!!**-------', url);\n let sw = true;\n const regExps = this.resources?.filter(it => {\n // console.log('---it', it, it instanceof RegExp, typeof it)\n if (it instanceof RegExp) {\n // console.log('--------', it.test(url))\n return it.test(url);\n }\n\n if (typeof it === 'string') {\n console.log('url!!!!!!!', url)\n return it === url;\n // return RegExp(it).test(url);\n }\n\n if (typeof it === 'function') {\n return it(rr, app);\n }\n\n if (typeof it === 'object' && 'request' in it) {\n if (typeof it.request === 'function') {\n return it.request(rr, app);\n } else if (it .request instanceof RegExp) {\n return it.request.test(url);\n } else {\n // return RegExp(it.request).test(url);\n return it.request === url\n }\n }\n })??[]\n // console.log('regExps', regExps, url);\n // eslint-disable-next-line no-unused-vars\n for (const it of regExps) {\n sw = false;\n //DataDist\n if (isDataDist(it)) {\n let distValue = typeof it.response === 'function' ? it.response(rr,app) : it.response;\n if (distValue instanceof Promise) {\n const result = await distValue;\n if (result instanceof Response) {\n await rr.resEnd(result);\n break;\n } else if (result instanceof Blob) {\n rr.resStatusCode(HttpStatus.Ok);\n await rr.resEnd(result);\n break;\n }\n }\n } else {\n //PathDist or undefined\n const dist = typeof it === 'object' && 'dist' in it ? it.dist : urlObj.pathname;\n let distValue = typeof dist === 'function' ? dist(rr, app) : dist;\n if (this.resourceDistPath) {\n // It's a string path\n const resourcePath = path.join(this.resourceDistPath, distValue);\n // console.log('-----------',this.resourceDistPath, resourcePath);\n if (fs.existsSync(resourcePath)) {\n rr.resStatusCode(HttpStatus.Ok);\n rr.resSetHeader(HttpHeaders.ContentType, mime.lookup(resourcePath).toString());\n await rr.resEnd(fs.readFileSync(resourcePath));\n break;\n } else {\n rr.resStatusCode(HttpStatus.NotFound);\n await rr.resEnd();\n break;\n }\n } else {\n rr.resStatusCode(HttpStatus.InternalServerError);\n await rr.resEnd();\n break;\n }\n }\n sw = true;\n }\n return sw;\n }\n\n async proceedAfter({rr, app}: {rr: RequestResponse, app: SimpleBootHttpServer, carrier: Map<string, any>}) {\n // console.log('resource filter!!end@@**-------');\n return true;\n }\n}"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["path", "fs", "mime"]
|
|
7
7
|
}
|
|
@@ -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,17 +16,21 @@ 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);
|
|
22
23
|
__reExport(filters_exports, require("./ThrowFilter"), module.exports);
|
|
24
|
+
__reExport(filters_exports, require("./IntentSchemeFilter"), module.exports);
|
|
23
25
|
// Annotate the CommonJS export names for ESM import in node:
|
|
24
26
|
0 && (module.exports = {
|
|
25
27
|
...require("./CacheFilter"),
|
|
26
28
|
...require("./Filter"),
|
|
29
|
+
...require("./TopicProtocolFilter"),
|
|
27
30
|
...require("./HttpStatusFilter"),
|
|
28
31
|
...require("./OpenApi3Filter"),
|
|
29
32
|
...require("./ResourceFilter"),
|
|
30
|
-
...require("./ThrowFilter")
|
|
33
|
+
...require("./ThrowFilter"),
|
|
34
|
+
...require("./IntentSchemeFilter")
|
|
31
35
|
});
|
|
32
36
|
//# 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;AAAA;AAAA,4BAAc,0BAAd;AACA,4BAAc,qBADd;AAEA,4BAAc
|
|
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;AAAA;AAAA,4BAAc,0BAAd;AACA,4BAAc,qBADd;AAEA,4BAAc,kCAFd;AAGA,4BAAc,+BAHd;AAIA,4BAAc,6BAJd;AAKA,4BAAc,6BALd;AAMA,4BAAc,0BANd;AAOA,4BAAc,iCAPd;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|