@dooboostore/simple-boot-http-server 1.0.23 → 1.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.MD +27 -1
- package/dist/cjs/SimpleBootHttpServer.js +79 -39
- 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 +7 -6
- 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/filters/CacheFilter.js +75 -35
- package/dist/cjs/filters/CacheFilter.js.map +3 -3
- package/dist/cjs/filters/IntentSchemeFilter.js +98 -0
- package/dist/cjs/filters/IntentSchemeFilter.js.map +7 -0
- package/dist/cjs/filters/ResourceFilter.js +4 -1
- 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 +2 -0
- package/dist/cjs/filters/index.js.map +2 -2
- package/dist/cjs/index.js +28 -0
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/models/RequestResponse.js +51 -89
- package/dist/cjs/models/RequestResponse.js.map +3 -3
- package/dist/cjs/models/datas/body/ReqPathData.js +29 -0
- package/dist/cjs/models/datas/body/ReqPathData.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 +141 -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 +59 -19
- 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 +2 -1
- 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/filters/CacheFilter.js +67 -27
- package/dist/esm/filters/CacheFilter.js.map +2 -2
- package/dist/esm/filters/IntentSchemeFilter.js +75 -0
- package/dist/esm/filters/IntentSchemeFilter.js.map +7 -0
- package/dist/esm/filters/ResourceFilter.js +4 -1
- 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 +1 -0
- package/dist/esm/filters/index.js.map +2 -2
- package/dist/esm/index.js +12 -0
- package/dist/esm/index.js.map +2 -2
- package/dist/esm/models/RequestResponse.js +46 -84
- package/dist/esm/models/RequestResponse.js.map +2 -2
- package/dist/esm/models/datas/body/ReqPathData.js +6 -0
- package/dist/esm/models/datas/body/ReqPathData.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 +118 -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 +13190 -4886
- 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 +3 -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/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 +1 -0
- package/dist/types/filters/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +12 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/models/RequestResponse.d.ts +9 -6
- package/dist/types/models/RequestResponse.d.ts.map +1 -1
- package/dist/types/models/datas/body/ReqPathData.d.ts +4 -0
- package/dist/types/models/datas/body/ReqPathData.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 +18 -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 +13262 -4958
- package/dist/umd-bundle/dooboostore-simple-boot-http-server.umd.js.map +4 -4
- package/dist/umd-bundle/websocket-client.umd.js +11194 -0
- package/dist/umd-bundle/websocket-client.umd.js.map +7 -0
- package/package.json +24 -15
- package/src/SimpleBootHttpServer.ts +366 -312
- package/src/codes/HttpHeaders.ts +13 -2
- package/src/codes/Mimes.ts +27 -25
- package/src/decorators/MethodMapping.ts +4 -3
- package/src/endpoints/WebSocketEndPoint.ts +12 -0
- package/src/filters/CacheFilter.ts +112 -67
- package/src/filters/IntentSchemeFilter.ts +69 -0
- package/src/filters/ResourceFilter.ts +6 -1
- package/src/filters/TopicProtocolFilter.ts +349 -0
- package/src/filters/index.ts +1 -0
- package/src/index.ts +12 -12
- package/src/models/RequestResponse.ts +108 -240
- package/src/models/datas/body/ReqPathData.ts +3 -0
- package/src/option/HttpServerOption.ts +73 -23
- package/src/proxy/SymbolIntentApiServiceProxy.ts +120 -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
|
@@ -0,0 +1,118 @@
|
|
|
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 SymbolIntentApiServiceProxy_1;
|
|
11
|
+
var _a;
|
|
12
|
+
import { getSim, Sim } from "@dooboostore/simple-boot";
|
|
13
|
+
import { makeIntentHeaderBySymbolFor } from "../codes/HttpHeaders.js";
|
|
14
|
+
import { ConvertUtils } from "@dooboostore/core";
|
|
15
|
+
import { ApiService } from "@dooboostore/simple-boot";
|
|
16
|
+
const _ = ApiService;
|
|
17
|
+
let SymbolIntentApiServiceProxy = SymbolIntentApiServiceProxy_1 = class SymbolIntentApiServiceProxy2 {
|
|
18
|
+
constructor(apiService) {
|
|
19
|
+
this.apiService = apiService;
|
|
20
|
+
}
|
|
21
|
+
static createHandler(apiService) {
|
|
22
|
+
return {
|
|
23
|
+
get(target, prop, receiver) {
|
|
24
|
+
if (prop === "_SimpleBoot_origin") {
|
|
25
|
+
return target;
|
|
26
|
+
}
|
|
27
|
+
const simConfig = getSim(target);
|
|
28
|
+
const value = Reflect.get(target, prop, receiver);
|
|
29
|
+
if (typeof value === "function" && simConfig?.symbol) {
|
|
30
|
+
return function(...args) {
|
|
31
|
+
const f = value;
|
|
32
|
+
const p = (userConfig) => {
|
|
33
|
+
const headers = { ...userConfig?.headers ?? {}, ...makeIntentHeaderBySymbolFor(simConfig.symbol) };
|
|
34
|
+
const method = userConfig?.method ?? "post";
|
|
35
|
+
if (method === "post" && userConfig?.multipartFormData) {
|
|
36
|
+
return apiService.post({
|
|
37
|
+
target: `/${String(prop)}`,
|
|
38
|
+
config: {
|
|
39
|
+
responseTransform: userConfig?.bypassTransform ? "response" : void 0,
|
|
40
|
+
transformText: userConfig?.transformText,
|
|
41
|
+
config: userConfig?.config,
|
|
42
|
+
fetch: {
|
|
43
|
+
credentials: "include",
|
|
44
|
+
headers,
|
|
45
|
+
body: ConvertUtils.toFormData(userConfig?.body)
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
} else if (method === "post") {
|
|
50
|
+
return apiService.postJson({
|
|
51
|
+
target: `/${String(prop)}`,
|
|
52
|
+
config: {
|
|
53
|
+
responseTransform: userConfig?.bypassTransform ? "response" : void 0,
|
|
54
|
+
transformText: userConfig?.transformText,
|
|
55
|
+
config: userConfig?.config,
|
|
56
|
+
fetch: {
|
|
57
|
+
credentials: "include",
|
|
58
|
+
headers,
|
|
59
|
+
body: userConfig?.body
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
} else if (method === "petch") {
|
|
64
|
+
return apiService.patchJson({
|
|
65
|
+
target: `/${String(prop)}`,
|
|
66
|
+
config: {
|
|
67
|
+
responseTransform: userConfig?.bypassTransform ? "response" : void 0,
|
|
68
|
+
transformText: userConfig?.transformText,
|
|
69
|
+
config: userConfig?.config,
|
|
70
|
+
fetch: {
|
|
71
|
+
credentials: "include",
|
|
72
|
+
headers,
|
|
73
|
+
body: userConfig?.body
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
} else {
|
|
78
|
+
return apiService[method]({
|
|
79
|
+
target: { url: `/${String(prop)}`, searchParams: userConfig?.body },
|
|
80
|
+
config: {
|
|
81
|
+
responseTransform: userConfig?.bypassTransform ? "response" : void 0,
|
|
82
|
+
transformText: userConfig?.transformText,
|
|
83
|
+
config: userConfig?.config,
|
|
84
|
+
fetch: {
|
|
85
|
+
credentials: "include",
|
|
86
|
+
headers
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
args.push(p);
|
|
93
|
+
return Reflect.apply(f, target, args);
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
return Reflect.get(target, prop, receiver);
|
|
97
|
+
},
|
|
98
|
+
apply(target, thisArg, argArray) {
|
|
99
|
+
console.log("SymbolIntentApiServiceProxy apply");
|
|
100
|
+
return Reflect.apply(target, thisArg, argArray);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
get(target, prop, receiver) {
|
|
105
|
+
return SymbolIntentApiServiceProxy_1.createHandler(this.apiService).get(target, prop, receiver);
|
|
106
|
+
}
|
|
107
|
+
apply(target, thisArg, argArray) {
|
|
108
|
+
return SymbolIntentApiServiceProxy_1.createHandler(this.apiService).apply(target, thisArg, argArray);
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
SymbolIntentApiServiceProxy = SymbolIntentApiServiceProxy_1 = __decorate([
|
|
112
|
+
Sim,
|
|
113
|
+
__metadata("design:paramtypes", [typeof (_a = typeof ApiService !== "undefined" && ApiService) === "function" ? _a : Object])
|
|
114
|
+
], SymbolIntentApiServiceProxy);
|
|
115
|
+
export {
|
|
116
|
+
SymbolIntentApiServiceProxy
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=SymbolIntentApiServiceProxy.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/proxy/SymbolIntentApiServiceProxy.ts"],
|
|
4
|
+
"sourcesContent": ["import { getSim, Sim } from '@dooboostore/simple-boot';\nimport { makeIntentHeaderBySymbolFor } from '../codes/HttpHeaders';\nimport { ConvertUtils } from '@dooboostore/core';\nimport { ApiService } from '@dooboostore/simple-boot';\n\nexport type Config<T = any> = {\n method?: 'get' | 'post' | 'petch' | 'delete' | 'head';\n multipartFormData?: boolean;\n bypassTransform?: boolean;\n transformText?: boolean;\n headers?: HeadersInit;\n body?: T;\n config?: ApiService.ApiServiceConfig;\n};\nconst _ = ApiService;\n\n@Sim\nexport class SymbolIntentApiServiceProxy<T extends object> implements ProxyHandler<T> {\n constructor(private apiService: ApiService) {\n // console.log('-------apiService', apiService);\n }\n\n static createHandler<T extends object>(apiService: ApiService): ProxyHandler<T> {\n return {\n get(target: T, prop: string | symbol, receiver: any): any {\n if (prop === '_SimpleBoot_origin') {\n return target;\n }\n const simConfig = getSim(target);\n const value = Reflect.get(target, prop, receiver);\n if (typeof value === 'function' && simConfig?.symbol) {\n return function (...args: any[]) {\n const f = value as Function;\n const p = (userConfig: Config) => {\n const headers = { ...(userConfig?.headers ?? {}), ...makeIntentHeaderBySymbolFor(simConfig.symbol as Symbol) };\n const method = userConfig?.method ?? 'post';\n if (method === 'post' && userConfig?.multipartFormData) {\n //@ts-ignore\n return apiService.post({\n target: `/${String(prop)}`,\n config: {\n responseTransform: userConfig?.bypassTransform ? 'response' : undefined,\n transformText: userConfig?.transformText,\n config: userConfig?.config,\n fetch: {\n credentials: 'include',\n headers: headers,\n body: ConvertUtils.toFormData(userConfig?.body)\n }\n }\n });\n } else if (method === 'post') {\n //@ts-ignore\n return apiService.postJson({\n target: `/${String(prop)}`,\n config: {\n responseTransform: userConfig?.bypassTransform ? 'response' : undefined,\n transformText: userConfig?.transformText,\n config: userConfig?.config,\n fetch: {\n credentials: 'include',\n headers: headers,\n body: userConfig?.body\n }\n }\n });\n } else if (method === 'petch') {\n //@ts-ignore\n return apiService.patchJson({\n target: `/${String(prop)}`,\n config: {\n responseTransform: userConfig?.bypassTransform ? 'response' : undefined,\n transformText: userConfig?.transformText,\n config: userConfig?.config,\n fetch: {\n credentials: 'include',\n headers: headers,\n body: userConfig?.body\n }\n }\n });\n } else {\n //@ts-ignore\n return apiService[method]({\n target: { url: `/${String(prop)}`, searchParams: userConfig?.body },\n config: {\n responseTransform: userConfig?.bypassTransform ? 'response' : undefined,\n transformText: userConfig?.transformText,\n config: userConfig?.config,\n fetch: {\n credentials: 'include',\n headers: headers\n }\n }\n });\n }\n };\n args.push(p);\n return Reflect.apply(f, target, args);\n };\n }\n return Reflect.get(target, prop, receiver);\n },\n\n apply(target: T, thisArg: any, argArray: any[]): any {\n console.log('SymbolIntentApiServiceProxy apply');\n // @ts-ignore\n return Reflect.apply(target, thisArg, argArray);\n }\n };\n }\n\n get(target: T, prop: string | symbol, receiver: any): any {\n return SymbolIntentApiServiceProxy.createHandler<T>(this.apiService).get!(target, prop, receiver);\n }\n\n apply(target: T, thisArg: any, argArray: any[]): any {\n return SymbolIntentApiServiceProxy.createHandler<T>(this.apiService).apply!(target, thisArg, argArray);\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;AAAA,SAAS,QAAQ,WAAW;AAC5B,SAAS,mCAAmC;AAC5C,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAW3B,MAAM,IAAI;AAGH,IAAM,8BAA2B,gCAAjC,MAAMA,6BAA2B;EACtC,YAAoB,YAAsB;AAAtB,SAAA,aAAA;EAEpB;EAEA,OAAO,cAAgC,YAAsB;AAC3D,WAAO;MACL,IAAI,QAAW,MAAuB,UAAa;AACjD,YAAI,SAAS,sBAAsB;AACjC,iBAAO;QACT;AACA,cAAM,YAAY,OAAO,MAAM;AAC/B,cAAM,QAAQ,QAAQ,IAAI,QAAQ,MAAM,QAAQ;AAChD,YAAI,OAAO,UAAU,cAAc,WAAW,QAAQ;AACpD,iBAAO,YAAa,MAAW;AAC7B,kBAAM,IAAI;AACV,kBAAM,IAAI,CAAC,eAAsB;AAC/B,oBAAM,UAAU,EAAE,GAAI,YAAY,WAAW,CAAA,GAAK,GAAG,4BAA4B,UAAU,MAAgB,EAAC;AAC5G,oBAAM,SAAS,YAAY,UAAU;AACrC,kBAAI,WAAW,UAAU,YAAY,mBAAmB;AAEtD,uBAAO,WAAW,KAAK;kBACrB,QAAQ,IAAI,OAAO,IAAI,CAAC;kBACxB,QAAQ;oBACN,mBAAmB,YAAY,kBAAkB,aAAa;oBAC9D,eAAe,YAAY;oBAC3B,QAAQ,YAAY;oBACpB,OAAO;sBACL,aAAa;sBACb;sBACA,MAAM,aAAa,WAAW,YAAY,IAAI;;;iBAGnD;cACH,WAAW,WAAW,QAAQ;AAE5B,uBAAO,WAAW,SAAS;kBACzB,QAAQ,IAAI,OAAO,IAAI,CAAC;kBACxB,QAAQ;oBACN,mBAAmB,YAAY,kBAAkB,aAAa;oBAC9D,eAAe,YAAY;oBAC3B,QAAQ,YAAY;oBACpB,OAAO;sBACL,aAAa;sBACb;sBACA,MAAM,YAAY;;;iBAGvB;cACH,WAAW,WAAW,SAAS;AAE7B,uBAAO,WAAW,UAAU;kBAC1B,QAAQ,IAAI,OAAO,IAAI,CAAC;kBACxB,QAAQ;oBACN,mBAAmB,YAAY,kBAAkB,aAAa;oBAC9D,eAAe,YAAY;oBAC3B,QAAQ,YAAY;oBACpB,OAAO;sBACL,aAAa;sBACb;sBACA,MAAM,YAAY;;;iBAGvB;cACH,OAAO;AAEL,uBAAO,WAAW,MAAM,EAAE;kBACxB,QAAQ,EAAE,KAAK,IAAI,OAAO,IAAI,CAAC,IAAI,cAAc,YAAY,KAAI;kBACjE,QAAQ;oBACN,mBAAmB,YAAY,kBAAkB,aAAa;oBAC9D,eAAe,YAAY;oBAC3B,QAAQ,YAAY;oBACpB,OAAO;sBACL,aAAa;sBACb;;;iBAGL;cACH;YACF;AACA,iBAAK,KAAK,CAAC;AACX,mBAAO,QAAQ,MAAM,GAAG,QAAQ,IAAI;UACtC;QACF;AACA,eAAO,QAAQ,IAAI,QAAQ,MAAM,QAAQ;MAC3C;MAEA,MAAM,QAAW,SAAc,UAAe;AAC5C,gBAAQ,IAAI,mCAAmC;AAE/C,eAAO,QAAQ,MAAM,QAAQ,SAAS,QAAQ;MAChD;;EAEJ;EAEA,IAAI,QAAW,MAAuB,UAAa;AACjD,WAAO,8BAA4B,cAAiB,KAAK,UAAU,EAAE,IAAK,QAAQ,MAAM,QAAQ;EAClG;EAEA,MAAM,QAAW,SAAc,UAAe;AAC5C,WAAO,8BAA4B,cAAiB,KAAK,UAAU,EAAE,MAAO,QAAQ,SAAS,QAAQ;EACvG;;AArGW,8BAA2B,gCAAA,WAAA;EADvC;uDAEiC,eAAU,eAAV,gBAAU,aAAA,KAAA,MAAA,CAAA;GAD/B,2BAA2B;",
|
|
6
|
+
"names": ["SymbolIntentApiServiceProxy"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SymbolIntentApiServiceProxy } from "./SymbolIntentApiServiceProxy.js";
|
|
2
|
+
class SymbolIntentApiServiceProxyBase {
|
|
3
|
+
// 생성자는 프록시될 대상 객체(target)와 의존성을 주입받습니다.
|
|
4
|
+
constructor(apiService) {
|
|
5
|
+
const handler = SymbolIntentApiServiceProxy.createHandler(apiService);
|
|
6
|
+
return new Proxy(this, handler);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export {
|
|
10
|
+
SymbolIntentApiServiceProxyBase
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=SymbolIntentApiServiceProxyBase.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/proxy/SymbolIntentApiServiceProxyBase.ts"],
|
|
4
|
+
"sourcesContent": ["import {ApiService} from '@dooboostore/simple-boot';\nimport {SymbolIntentApiServiceProxy} from './SymbolIntentApiServiceProxy';\n\nexport class SymbolIntentApiServiceProxyBase<T extends object = any> {\n // \uC0DD\uC131\uC790\uB294 \uD504\uB85D\uC2DC\uB420 \uB300\uC0C1 \uAC1D\uCCB4(target)\uC640 \uC758\uC874\uC131\uC744 \uC8FC\uC785\uBC1B\uC2B5\uB2C8\uB2E4.\n constructor(\n apiService: ApiService,\n ) {\n // SymbolIntentApiServiceProxy\uC758 static handler\uB97C \uC0AC\uC6A9\uD569\uB2C8\uB2E4.\n const handler = SymbolIntentApiServiceProxy.createHandler<T>(apiService);\n\n // \uC0DD\uC131\uC790\uC5D0\uC11C Proxy \uAC1D\uCCB4\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n // @ts-ignore\n return new Proxy(this, handler);\n }\n}"],
|
|
5
|
+
"mappings": "AACA,SAAQ,mCAAkC;AAEnC,MAAM,gCAAwD;AAAA;AAAA,EAEnE,YACE,YACA;AAEA,UAAM,UAAU,4BAA4B,cAAiB,UAAU;AAIvE,WAAO,IAAI,MAAM,MAAM,OAAO;AAAA,EAChC;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,301 @@
|
|
|
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 TopicProtocolApiServiceProxy_1;
|
|
11
|
+
var _a;
|
|
12
|
+
import { getSim, Sim } from "@dooboostore/simple-boot";
|
|
13
|
+
import { HttpHeaders } from "../codes/HttpHeaders.js";
|
|
14
|
+
import { ApiService } from "@dooboostore/simple-boot";
|
|
15
|
+
import { RandomUtils } from "@dooboostore/core";
|
|
16
|
+
let TopicProtocolApiServiceProxy = TopicProtocolApiServiceProxy_1 = class TopicProtocolApiServiceProxy2 {
|
|
17
|
+
constructor(apiService) {
|
|
18
|
+
this.apiService = apiService;
|
|
19
|
+
}
|
|
20
|
+
static isFileValue(value) {
|
|
21
|
+
if (typeof File !== "undefined" && value instanceof File) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
if (typeof Blob !== "undefined" && value instanceof Blob) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
if (typeof ArrayBuffer !== "undefined" && value instanceof ArrayBuffer) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
if (typeof Uint8Array !== "undefined" && value instanceof Uint8Array) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
static toFileEntry(value, id) {
|
|
36
|
+
if (typeof Blob === "undefined") {
|
|
37
|
+
return void 0;
|
|
38
|
+
}
|
|
39
|
+
if (typeof File !== "undefined" && value instanceof File) {
|
|
40
|
+
const blob2 = new Blob([value], { type: value.type });
|
|
41
|
+
return { id, file: blob2, filename: value.name };
|
|
42
|
+
}
|
|
43
|
+
if (value instanceof Blob) {
|
|
44
|
+
return { id, file: value };
|
|
45
|
+
}
|
|
46
|
+
const view = value instanceof Uint8Array ? value : new Uint8Array(value);
|
|
47
|
+
const safe = value instanceof Uint8Array ? new Uint8Array(value) : new Uint8Array(view);
|
|
48
|
+
const blob = new Blob([safe]);
|
|
49
|
+
return { id, file: blob };
|
|
50
|
+
}
|
|
51
|
+
static buildRequest(target, body, type = "intent") {
|
|
52
|
+
const fileEntries = [];
|
|
53
|
+
let fileIndex = 0;
|
|
54
|
+
const registerFile = (value) => {
|
|
55
|
+
const id = `f${++fileIndex}`;
|
|
56
|
+
const entry = TopicProtocolApiServiceProxy_1.toFileEntry(value, id);
|
|
57
|
+
if (entry) {
|
|
58
|
+
fileEntries.push(entry);
|
|
59
|
+
return id;
|
|
60
|
+
}
|
|
61
|
+
return void 0;
|
|
62
|
+
};
|
|
63
|
+
const replaceFiles = (value) => {
|
|
64
|
+
if (TopicProtocolApiServiceProxy_1.isFileValue(value)) {
|
|
65
|
+
const id = registerFile(value);
|
|
66
|
+
if (id) {
|
|
67
|
+
return { $file: id };
|
|
68
|
+
}
|
|
69
|
+
return value;
|
|
70
|
+
}
|
|
71
|
+
if (Array.isArray(value)) {
|
|
72
|
+
return value.map((item) => replaceFiles(item));
|
|
73
|
+
}
|
|
74
|
+
if (value && typeof value === "object") {
|
|
75
|
+
const result = {};
|
|
76
|
+
Object.keys(value).forEach((key) => {
|
|
77
|
+
result[key] = replaceFiles(value[key]);
|
|
78
|
+
});
|
|
79
|
+
return result;
|
|
80
|
+
}
|
|
81
|
+
return value;
|
|
82
|
+
};
|
|
83
|
+
const payload = replaceFiles(body);
|
|
84
|
+
const request = {
|
|
85
|
+
type,
|
|
86
|
+
target,
|
|
87
|
+
requestUUID: RandomUtils.uuid4(),
|
|
88
|
+
body: payload,
|
|
89
|
+
files: fileEntries.length > 0 ? fileEntries.map((entry) => ({ id: entry.id })) : void 0
|
|
90
|
+
};
|
|
91
|
+
return { request, fileEntries };
|
|
92
|
+
}
|
|
93
|
+
static async parseMultipartMixed(response) {
|
|
94
|
+
const contentType = response.headers.get("Content-Type") ?? "";
|
|
95
|
+
const boundaryMatch = contentType.match(/boundary=([^;]+)/i);
|
|
96
|
+
if (!boundaryMatch) {
|
|
97
|
+
return void 0;
|
|
98
|
+
}
|
|
99
|
+
const boundary = boundaryMatch[1].replace(/^"|"$/g, "");
|
|
100
|
+
const buffer = new Uint8Array(await response.arrayBuffer());
|
|
101
|
+
const boundaryBytes = new TextEncoder().encode(`--${boundary}`);
|
|
102
|
+
const endBoundaryBytes = new TextEncoder().encode(`--${boundary}--`);
|
|
103
|
+
const separator = new TextEncoder().encode("\r\n\r\n");
|
|
104
|
+
const indexOf = (source, needle, from = 0) => {
|
|
105
|
+
for (let i = from; i <= source.length - needle.length; i++) {
|
|
106
|
+
let matched = true;
|
|
107
|
+
for (let j = 0; j < needle.length; j++) {
|
|
108
|
+
if (source[i + j] !== needle[j]) {
|
|
109
|
+
matched = false;
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (matched) {
|
|
114
|
+
return i;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return -1;
|
|
118
|
+
};
|
|
119
|
+
const parts = [];
|
|
120
|
+
let cursor = indexOf(buffer, boundaryBytes, 0);
|
|
121
|
+
while (cursor !== -1) {
|
|
122
|
+
const nextBoundary = indexOf(buffer, boundaryBytes, cursor + boundaryBytes.length);
|
|
123
|
+
const endBoundary = indexOf(buffer, endBoundaryBytes, cursor + boundaryBytes.length);
|
|
124
|
+
const isFinal = endBoundary !== -1 && (endBoundary < nextBoundary || nextBoundary === -1);
|
|
125
|
+
const partStart = cursor + boundaryBytes.length;
|
|
126
|
+
if (isFinal) {
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
let headerStart = partStart;
|
|
130
|
+
if (buffer[headerStart] === 13 && buffer[headerStart + 1] === 10) {
|
|
131
|
+
headerStart += 2;
|
|
132
|
+
}
|
|
133
|
+
const headerEnd = indexOf(buffer, separator, headerStart);
|
|
134
|
+
if (headerEnd === -1) {
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
const headerText = new TextDecoder().decode(buffer.slice(headerStart, headerEnd));
|
|
138
|
+
const headers = {};
|
|
139
|
+
headerText.split("\r\n").forEach((line) => {
|
|
140
|
+
const idx = line.indexOf(":");
|
|
141
|
+
if (idx > -1) {
|
|
142
|
+
const key = line.slice(0, idx).trim().toLowerCase();
|
|
143
|
+
headers[key] = line.slice(idx + 1).trim();
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
const bodyStart = headerEnd + separator.length;
|
|
147
|
+
const bodyEnd = nextBoundary === -1 ? buffer.length : nextBoundary - 2;
|
|
148
|
+
const body = buffer.slice(bodyStart, bodyEnd);
|
|
149
|
+
parts.push({ headers, body });
|
|
150
|
+
cursor = nextBoundary;
|
|
151
|
+
}
|
|
152
|
+
return { boundary, parts };
|
|
153
|
+
}
|
|
154
|
+
static parseDispositionFilename(disposition) {
|
|
155
|
+
if (!disposition) {
|
|
156
|
+
return void 0;
|
|
157
|
+
}
|
|
158
|
+
const match = disposition.match(/filename=\"?([^\";]+)\"?/i);
|
|
159
|
+
return match ? match[1] : void 0;
|
|
160
|
+
}
|
|
161
|
+
static parseDispositionName(disposition) {
|
|
162
|
+
if (!disposition) {
|
|
163
|
+
return void 0;
|
|
164
|
+
}
|
|
165
|
+
const match = disposition.match(/name=\"?([^\";]+)\"?/i);
|
|
166
|
+
return match ? match[1] : void 0;
|
|
167
|
+
}
|
|
168
|
+
static replaceFileRefs(value, fileMap) {
|
|
169
|
+
if (value && typeof value === "object" && "$file" in value) {
|
|
170
|
+
const fileKey = value.$file;
|
|
171
|
+
if (typeof fileKey === "string") {
|
|
172
|
+
const file = fileMap.get(fileKey);
|
|
173
|
+
if (file) {
|
|
174
|
+
return file;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (Array.isArray(value)) {
|
|
179
|
+
return value.map((item) => TopicProtocolApiServiceProxy_1.replaceFileRefs(item, fileMap));
|
|
180
|
+
}
|
|
181
|
+
if (value && typeof value === "object") {
|
|
182
|
+
const result = {};
|
|
183
|
+
Object.keys(value).forEach((key) => {
|
|
184
|
+
result[key] = TopicProtocolApiServiceProxy_1.replaceFileRefs(value[key], fileMap);
|
|
185
|
+
});
|
|
186
|
+
return result;
|
|
187
|
+
}
|
|
188
|
+
return value;
|
|
189
|
+
}
|
|
190
|
+
static normalizeResponse(value) {
|
|
191
|
+
if (value && typeof value === "object" && "state" in value && "body" in value) {
|
|
192
|
+
const typed = value;
|
|
193
|
+
if (typed.state === "error") {
|
|
194
|
+
const message = typeof typed.body === "object" && typed.body && "message" in typed.body ? String(typed.body.message) : "TopicProtocol error";
|
|
195
|
+
throw new Error(message);
|
|
196
|
+
}
|
|
197
|
+
return typed.body;
|
|
198
|
+
}
|
|
199
|
+
return value;
|
|
200
|
+
}
|
|
201
|
+
static createHandler(apiService) {
|
|
202
|
+
return {
|
|
203
|
+
get(target, prop, receiver) {
|
|
204
|
+
const simConfig = getSim(target);
|
|
205
|
+
const value = Reflect.get(target, prop, receiver);
|
|
206
|
+
if (typeof value === "function" && simConfig?.symbol) {
|
|
207
|
+
return function(...args) {
|
|
208
|
+
const f = value;
|
|
209
|
+
const p = (userConfig) => {
|
|
210
|
+
const symbolValue = Array.isArray(simConfig.symbol) ? simConfig.symbol[0] : simConfig.symbol;
|
|
211
|
+
const symbolName = symbolValue?.description ?? String(symbolValue ?? simConfig.symbol);
|
|
212
|
+
const targetPath = `Symbol.for(${symbolName}):/${String(prop)}`;
|
|
213
|
+
const { request, fileEntries } = TopicProtocolApiServiceProxy_1.buildRequest(targetPath, userConfig?.body, userConfig?.type ?? "intent");
|
|
214
|
+
const formData = new FormData();
|
|
215
|
+
formData.append("body", JSON.stringify(request));
|
|
216
|
+
fileEntries.forEach((entry) => {
|
|
217
|
+
if (entry.filename) {
|
|
218
|
+
formData.append(entry.id, entry.file, entry.filename);
|
|
219
|
+
} else {
|
|
220
|
+
formData.append(entry.id, entry.file);
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
const headers = {
|
|
224
|
+
...userConfig?.headers ?? {},
|
|
225
|
+
[HttpHeaders.XSimpleBootHttpTopicProtocol]: "topic"
|
|
226
|
+
};
|
|
227
|
+
const endpoint = userConfig?.endpoint ?? "/";
|
|
228
|
+
return apiService.post({
|
|
229
|
+
target: endpoint,
|
|
230
|
+
config: {
|
|
231
|
+
responseTransform: userConfig?.bypassTransform ? "response" : userConfig?.transformText ? "text" : async (response) => {
|
|
232
|
+
const contentType = response.headers.get("Content-Type") ?? "";
|
|
233
|
+
if (contentType.toLowerCase().includes("multipart/mixed")) {
|
|
234
|
+
const parsed2 = await TopicProtocolApiServiceProxy_1.parseMultipartMixed(response);
|
|
235
|
+
if (!parsed2) {
|
|
236
|
+
return void 0;
|
|
237
|
+
}
|
|
238
|
+
const fileMap = /* @__PURE__ */ new Map();
|
|
239
|
+
let jsonBody = void 0;
|
|
240
|
+
parsed2.parts.forEach((part) => {
|
|
241
|
+
const partType = part.headers["content-type"] ?? "";
|
|
242
|
+
const disposition = part.headers["content-disposition"];
|
|
243
|
+
const name = TopicProtocolApiServiceProxy_1.parseDispositionName(disposition);
|
|
244
|
+
if (partType.includes("application/json")) {
|
|
245
|
+
const text2 = new TextDecoder().decode(part.body);
|
|
246
|
+
jsonBody = text2 ? JSON.parse(text2) : void 0;
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
const filename = TopicProtocolApiServiceProxy_1.parseDispositionFilename(disposition);
|
|
250
|
+
if (name) {
|
|
251
|
+
const view = part.body;
|
|
252
|
+
const safe = new Uint8Array(view.byteLength);
|
|
253
|
+
safe.set(view);
|
|
254
|
+
fileMap.set(name, {
|
|
255
|
+
name: filename,
|
|
256
|
+
mime: partType || "application/octet-stream",
|
|
257
|
+
size: view.byteLength,
|
|
258
|
+
buffer: safe.buffer
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
if (jsonBody) {
|
|
263
|
+
const replaced = TopicProtocolApiServiceProxy_1.replaceFileRefs(jsonBody, fileMap);
|
|
264
|
+
return TopicProtocolApiServiceProxy_1.normalizeResponse(replaced);
|
|
265
|
+
}
|
|
266
|
+
return void 0;
|
|
267
|
+
}
|
|
268
|
+
const text = await response.text();
|
|
269
|
+
const parsed = text ? JSON.parse(text) : void 0;
|
|
270
|
+
return TopicProtocolApiServiceProxy_1.normalizeResponse(parsed);
|
|
271
|
+
},
|
|
272
|
+
transformText: userConfig?.transformText,
|
|
273
|
+
config: userConfig?.config,
|
|
274
|
+
fetch: {
|
|
275
|
+
credentials: "include",
|
|
276
|
+
headers,
|
|
277
|
+
body: formData
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
});
|
|
281
|
+
};
|
|
282
|
+
args.push(p);
|
|
283
|
+
return Reflect.apply(f, target, args);
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
return value;
|
|
287
|
+
}
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
get(target, prop, receiver) {
|
|
291
|
+
return TopicProtocolApiServiceProxy_1.createHandler(this.apiService).get(target, prop, receiver);
|
|
292
|
+
}
|
|
293
|
+
};
|
|
294
|
+
TopicProtocolApiServiceProxy = TopicProtocolApiServiceProxy_1 = __decorate([
|
|
295
|
+
Sim,
|
|
296
|
+
__metadata("design:paramtypes", [typeof (_a = typeof ApiService !== "undefined" && ApiService) === "function" ? _a : Object])
|
|
297
|
+
], TopicProtocolApiServiceProxy);
|
|
298
|
+
export {
|
|
299
|
+
TopicProtocolApiServiceProxy
|
|
300
|
+
};
|
|
301
|
+
//# sourceMappingURL=TopicProtocolApiServiceProxy.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/proxy/TopicProtocolApiServiceProxy.ts"],
|
|
4
|
+
"sourcesContent": ["import { getSim, Sim } from '@dooboostore/simple-boot';\nimport { HttpHeaders } from '../codes/HttpHeaders';\nimport { ApiService } from '@dooboostore/simple-boot';\nimport { RandomUtils } from '@dooboostore/core';\nimport { HttpFetcherTarget } from '@dooboostore/core';\n\nexport type TopicProtocolConfig<TBody = unknown> = {\n bypassTransform?: boolean;\n transformText?: boolean;\n headers?: HeadersInit;\n body?: TBody;\n endpoint?: HttpFetcherTarget;\n type?: TopicProtocolType;\n config?: ApiService.ApiServiceConfig;\n};\n\ntype TopicProtocolType = 'intent' | 'router';\ntype TopicProtocolRequest<TBody = unknown> = {\n type: TopicProtocolType;\n target: string;\n requestUUID: string;\n body?: TBody;\n files?: Array<{ id: string }>;\n};\n\ntype FileEntry = { id: string; file: Blob; filename?: string };\ntype MixedPart = { headers: Record<string, string>; body: Uint8Array };\n\n@Sim\nexport class TopicProtocolApiServiceProxy<T extends object> implements ProxyHandler<T> {\n constructor(private apiService: ApiService) {}\n\n private static isFileValue(value: unknown): value is File | Blob | ArrayBuffer | Uint8Array {\n if (typeof File !== 'undefined' && value instanceof File) {\n return true;\n }\n if (typeof Blob !== 'undefined' && value instanceof Blob) {\n return true;\n }\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return true;\n }\n if (typeof Uint8Array !== 'undefined' && value instanceof Uint8Array) {\n return true;\n }\n return false;\n }\n\n private static toFileEntry(value: File | Blob | ArrayBuffer | Uint8Array, id: string): FileEntry | undefined {\n if (typeof Blob === 'undefined') {\n return undefined;\n }\n if (typeof File !== 'undefined' && value instanceof File) {\n const blob = new Blob([value], { type: value.type });\n return { id, file: blob, filename: value.name };\n }\n if (value instanceof Blob) {\n return { id, file: value };\n }\n const view = value instanceof Uint8Array ? value : new Uint8Array(value);\n const safe = value instanceof Uint8Array ? new Uint8Array(value) : new Uint8Array(view);\n const blob = new Blob([safe]);\n return { id, file: blob };\n }\n\n private static buildRequest<TBody>(target: string, body?: TBody, type: TopicProtocolType = 'intent') {\n const fileEntries: FileEntry[] = [];\n let fileIndex = 0;\n\n const registerFile = (value: File | Blob | ArrayBuffer | Uint8Array): string | undefined => {\n const id = `f${++fileIndex}`;\n const entry = TopicProtocolApiServiceProxy.toFileEntry(value, id);\n if (entry) {\n fileEntries.push(entry);\n return id;\n }\n return undefined;\n };\n\n const replaceFiles = (value: unknown): unknown => {\n if (TopicProtocolApiServiceProxy.isFileValue(value)) {\n const id = registerFile(value);\n if (id) {\n return { $file: id };\n }\n return value;\n }\n if (Array.isArray(value)) {\n return value.map(item => replaceFiles(item));\n }\n if (value && typeof value === 'object') {\n const result: Record<string, unknown> = {};\n Object.keys(value).forEach(key => {\n result[key] = replaceFiles((value as Record<string, unknown>)[key]);\n });\n return result;\n }\n return value;\n };\n\n const payload = replaceFiles(body);\n const request: TopicProtocolRequest<TBody> = {\n type,\n target,\n requestUUID: RandomUtils.uuid4(),\n body: payload as TBody,\n files: fileEntries.length > 0 ? fileEntries.map(entry => ({ id: entry.id })) : undefined\n };\n\n return { request, fileEntries };\n }\n\n private static async parseMultipartMixed(response: Response) {\n const contentType = response.headers.get('Content-Type') ?? '';\n const boundaryMatch = contentType.match(/boundary=([^;]+)/i);\n if (!boundaryMatch) {\n return undefined;\n }\n const boundary = boundaryMatch[1].replace(/^\"|\"$/g, '');\n const buffer = new Uint8Array(await response.arrayBuffer());\n const boundaryBytes = new TextEncoder().encode(`--${boundary}`);\n const endBoundaryBytes = new TextEncoder().encode(`--${boundary}--`);\n const separator = new TextEncoder().encode('\\r\\n\\r\\n');\n\n const indexOf = (source: Uint8Array, needle: Uint8Array, from = 0) => {\n for (let i = from; i <= source.length - needle.length; i++) {\n let matched = true;\n for (let j = 0; j < needle.length; j++) {\n if (source[i + j] !== needle[j]) {\n matched = false;\n break;\n }\n }\n if (matched) {\n return i;\n }\n }\n return -1;\n };\n\n const parts: MixedPart[] = [];\n let cursor = indexOf(buffer, boundaryBytes, 0);\n while (cursor !== -1) {\n const nextBoundary = indexOf(buffer, boundaryBytes, cursor + boundaryBytes.length);\n const endBoundary = indexOf(buffer, endBoundaryBytes, cursor + boundaryBytes.length);\n const isFinal = endBoundary !== -1 && (endBoundary < nextBoundary || nextBoundary === -1);\n const partStart = cursor + boundaryBytes.length;\n if (isFinal) {\n break;\n }\n let headerStart = partStart;\n if (buffer[headerStart] === 13 && buffer[headerStart + 1] === 10) {\n headerStart += 2;\n }\n const headerEnd = indexOf(buffer, separator, headerStart);\n if (headerEnd === -1) {\n break;\n }\n const headerText = new TextDecoder().decode(buffer.slice(headerStart, headerEnd));\n const headers: Record<string, string> = {};\n headerText.split('\\r\\n').forEach(line => {\n const idx = line.indexOf(':');\n if (idx > -1) {\n const key = line.slice(0, idx).trim().toLowerCase();\n headers[key] = line.slice(idx + 1).trim();\n }\n });\n const bodyStart = headerEnd + separator.length;\n const bodyEnd = nextBoundary === -1 ? buffer.length : nextBoundary - 2;\n const body = buffer.slice(bodyStart, bodyEnd);\n parts.push({ headers, body });\n cursor = nextBoundary;\n }\n\n return { boundary, parts };\n }\n\n private static parseDispositionFilename(disposition?: string) {\n if (!disposition) {\n return undefined;\n }\n const match = disposition.match(/filename=\\\"?([^\\\";]+)\\\"?/i);\n return match ? match[1] : undefined;\n }\n\n private static parseDispositionName(disposition?: string) {\n if (!disposition) {\n return undefined;\n }\n const match = disposition.match(/name=\\\"?([^\\\";]+)\\\"?/i);\n return match ? match[1] : undefined;\n }\n\n private static replaceFileRefs(value: unknown, fileMap: Map<string, { name?: string; mime?: string; size: number; buffer: ArrayBuffer }>) {\n if (value && typeof value === 'object' && '$file' in value) {\n const fileKey = (value as { $file?: unknown }).$file;\n if (typeof fileKey === 'string') {\n const file = fileMap.get(fileKey);\n if (file) {\n return file;\n }\n }\n }\n if (Array.isArray(value)) {\n return value.map(item => TopicProtocolApiServiceProxy.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] = TopicProtocolApiServiceProxy.replaceFileRefs((value as Record<string, unknown>)[key], fileMap);\n });\n return result;\n }\n return value;\n }\n\n private static normalizeResponse(value: unknown) {\n if (value && typeof value === 'object' && 'state' in value && 'body' in value) {\n const typed = value as { state?: string; body?: unknown };\n if (typed.state === 'error') {\n const message = typeof typed.body === 'object' && typed.body && 'message' in typed.body ? String((typed.body as { message?: unknown }).message) : 'TopicProtocol error';\n throw new Error(message);\n }\n return typed.body;\n }\n return value;\n }\n\n static createHandler<T extends object>(apiService: ApiService): ProxyHandler<T> {\n return {\n get(target: T, prop: string | symbol, receiver: unknown): unknown {\n const simConfig = getSim(target);\n const value = Reflect.get(target, prop, receiver);\n if (typeof value === 'function' && simConfig?.symbol) {\n return function (...args: unknown[]) {\n const f = value as Function;\n const p = (userConfig?: TopicProtocolConfig) => {\n const symbolValue = Array.isArray(simConfig.symbol) ? simConfig.symbol[0] : simConfig.symbol;\n const symbolName = (symbolValue as Symbol | undefined)?.description ?? String(symbolValue ?? simConfig.symbol);\n const targetPath = `Symbol.for(${symbolName}):/${String(prop)}`;\n const { request, fileEntries } = TopicProtocolApiServiceProxy.buildRequest(targetPath, userConfig?.body, userConfig?.type ?? 'intent');\n const formData = new FormData();\n formData.append('body', JSON.stringify(request));\n fileEntries.forEach(entry => {\n if (entry.filename) {\n formData.append(entry.id, entry.file, entry.filename);\n } else {\n formData.append(entry.id, entry.file);\n }\n });\n\n const headers = {\n ...(userConfig?.headers ?? {}),\n [HttpHeaders.XSimpleBootHttpTopicProtocol]: 'topic'\n };\n\n const endpoint = userConfig?.endpoint ?? '/';\n return apiService.post({\n target: endpoint,\n config: {\n responseTransform: userConfig?.bypassTransform\n ? 'response'\n : userConfig?.transformText\n ? 'text'\n : async (response: Response) => {\n const contentType = response.headers.get('Content-Type') ?? '';\n if (contentType.toLowerCase().includes('multipart/mixed')) {\n const parsed = await TopicProtocolApiServiceProxy.parseMultipartMixed(response);\n if (!parsed) {\n return undefined;\n }\n const fileMap = new Map<string, { name?: string; mime?: string; size: number; buffer: ArrayBuffer }>();\n let jsonBody: unknown = undefined;\n parsed.parts.forEach(part => {\n const partType = part.headers['content-type'] ?? '';\n const disposition = part.headers['content-disposition'];\n const name = TopicProtocolApiServiceProxy.parseDispositionName(disposition);\n if (partType.includes('application/json')) {\n const text = new TextDecoder().decode(part.body);\n jsonBody = text ? JSON.parse(text) : undefined;\n return;\n }\n const filename = TopicProtocolApiServiceProxy.parseDispositionFilename(disposition);\n if (name) {\n const view = part.body;\n const safe = new Uint8Array(view.byteLength);\n safe.set(view);\n fileMap.set(name, {\n name: filename,\n mime: partType || 'application/octet-stream',\n size: view.byteLength,\n buffer: safe.buffer\n });\n }\n });\n if (jsonBody) {\n const replaced = TopicProtocolApiServiceProxy.replaceFileRefs(jsonBody, fileMap);\n return TopicProtocolApiServiceProxy.normalizeResponse(replaced);\n }\n return undefined;\n }\n const text = await response.text();\n const parsed = text ? JSON.parse(text) : undefined;\n return TopicProtocolApiServiceProxy.normalizeResponse(parsed);\n },\n transformText: userConfig?.transformText,\n config: userConfig?.config,\n fetch: {\n credentials: 'include',\n headers,\n body: formData\n }\n } as any\n });\n };\n args.push(p);\n return Reflect.apply(f, target, args);\n };\n }\n return value;\n }\n };\n }\n\n get(target: T, prop: string | symbol, receiver: unknown): unknown {\n return TopicProtocolApiServiceProxy.createHandler<T>(this.apiService).get!(target, prop, receiver);\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["TopicProtocolApiServiceProxy", "blob", "parsed", "text"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/proxy/index.ts"],
|
|
4
|
+
"sourcesContent": ["export * from './SymbolIntentApiServiceProxy';\nexport * from './SymbolIntentApiServiceProxyBase';\nexport * from './TopicProtocolApiServiceProxy';\n"],
|
|
5
|
+
"mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -5,7 +5,7 @@ var __decorate = function(decorators, target, key, desc) {
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { Resource } from "../models/datas/Resource.js";
|
|
8
|
-
import { Sim } from "@dooboostore/simple-boot
|
|
8
|
+
import { Sim } from "@dooboostore/simple-boot";
|
|
9
9
|
let ResourceResolver = class ResourceResolver2 {
|
|
10
10
|
resolve(data, rr) {
|
|
11
11
|
return new Resource(data ?? rr).write(rr);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/resolvers/ResourceResolver.ts"],
|
|
4
|
-
"sourcesContent": ["import { Resolver } from './Resolver';\nimport { RequestResponse } from '../models/RequestResponse';\nimport { Resource } from '../models/datas/Resource';\nimport { Sim } from '@dooboostore/simple-boot
|
|
4
|
+
"sourcesContent": ["import { Resolver } from './Resolver';\nimport { RequestResponse } from '../models/RequestResponse';\nimport { Resource } from '../models/datas/Resource';\nimport { Sim } from '@dooboostore/simple-boot';\n\n@Sim\nexport class ResourceResolver implements Resolver {\n resolve(data: string | undefined, rr: RequestResponse): Promise<void> {\n return new Resource(data ?? rr).write(rr);\n }\n}"],
|
|
5
5
|
"mappings": ";;;;;;AAEA,SAAS,gBAAgB;AACzB,SAAS,WAAW;AAGb,IAAM,mBAAN,MAAMA,kBAAgB;EACzB,QAAQ,MAA0B,IAAmB;AACjD,WAAO,IAAI,SAAS,QAAQ,EAAE,EAAE,MAAM,EAAE;EAC5C;;AAHS,mBAAgB,WAAA;EAD5B;GACY,gBAAgB;",
|
|
6
6
|
"names": ["ResourceResolver"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/session/SessionManager.ts"],
|
|
4
|
-
"sourcesContent": ["import {RandomUtils} from '@dooboostore/core
|
|
4
|
+
"sourcesContent": ["import {RandomUtils} from '@dooboostore/core'\nimport { HttpServerOption, SessionOption } from '../option/HttpServerOption';\nimport {RequestResponse} from '../models/RequestResponse';\n\nexport class SessionManager {\n private sessions = new Map<string, { access: number, data?: any }>();\n public sessionOption: SessionOption;\n\n constructor(private option: HttpServerOption) {\n this.sessionOption = option.sessionOption;\n setInterval(async () => {\n const uuids = (await this.getSessionUUIDs());\n for (const uuid of uuids) {\n const dataSet = await this.getSessionDataSet(uuid);\n if (dataSet && this.isExpired(dataSet.access)) {\n await this.deleteSession(uuid);\n }\n }\n }, this.sessionOption.expiredTime);\n }\n\n async getSessionUUIDs() {\n if (this.sessionOption.provider?.uuids) {\n return this.sessionOption.provider.uuids();\n } else {\n return Array.from(this.sessions.keys());\n }\n }\n\n async deleteSession(uuid: string) {\n if (this.sessionOption.provider?.delete) {\n this.sessionOption.provider.delete(uuid);\n } else {\n this.sessions.delete(uuid);\n }\n }\n\n async getSessionDataSet(uuid: string) {\n if (this.sessionOption.provider?.get) {\n return this.sessionOption.provider.get(uuid);\n } else {\n return this.sessions.get(uuid);\n }\n }\n\n async setSessionDataSet(uuid: string, dataSet: { access: number, data?: any }) {\n if (this.sessionOption.provider?.set) {\n this.sessionOption.provider.set(uuid, dataSet);\n } else {\n this.sessions.set(uuid, dataSet);\n }\n }\n\n isExpired(access: number, now: number = Date.now()) {\n return (now - access) >= this.option.sessionOption.expiredTime;\n }\n\n makeUUID() {\n return RandomUtils.uuid('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');\n }\n\n async session(): Promise<{ uuid: string, dataSet: { access: number, data?: any } }>;\n async session(uuid: string): Promise<{ uuid: string, dataSet: { access: number, data?: any } }>;\n async session(rr: RequestResponse): Promise<{ uuid: string, dataSet: { access: number, data?: any } }>;\n async session(rrOrUUID?: string | RequestResponse): Promise<{ uuid: string, dataSet: { access: number, data?: any } } >{\n let uuid: string;\n if (rrOrUUID instanceof RequestResponse) {\n uuid = rrOrUUID.reqCookieGet(this.sessionOption.key) ?? this.makeUUID();\n } else if (typeof rrOrUUID === 'string') {\n uuid = rrOrUUID;\n } else {\n uuid = this.makeUUID()\n }\n let dataSet = await this.getSessionDataSet(uuid);\n const now = Date.now();\n if (dataSet) {\n if (this.isExpired(dataSet.access, now)) {\n delete dataSet.data;\n }\n dataSet.access = now;\n } else {\n dataSet = {\n access: now\n }\n }\n await this.setSessionDataSet(uuid, dataSet);\n return {uuid, dataSet};\n }\n}"],
|
|
5
5
|
"mappings": "AAAA,SAAQ,mBAAkB;AAE1B,SAAQ,uBAAsB;AAEvB,MAAM,eAAe;AAAA,EAIxB,YAAoB,QAA0B;AAA1B;AAHpB,SAAQ,WAAW,oBAAI,IAA4C;AAI/D,SAAK,gBAAgB,OAAO;AAC5B,gBAAY,YAAY;AACpB,YAAM,QAAS,MAAM,KAAK,gBAAgB;AAC1C,iBAAW,QAAQ,OAAO;AACtB,cAAM,UAAU,MAAM,KAAK,kBAAkB,IAAI;AACjD,YAAI,WAAW,KAAK,UAAU,QAAQ,MAAM,GAAG;AAC3C,gBAAM,KAAK,cAAc,IAAI;AAAA,QACjC;AAAA,MACJ;AAAA,IACJ,GAAG,KAAK,cAAc,WAAW;AAAA,EACrC;AAAA,EAEA,MAAM,kBAAkB;AACpB,QAAI,KAAK,cAAc,UAAU,OAAO;AACpC,aAAO,KAAK,cAAc,SAAS,MAAM;AAAA,IAC7C,OAAO;AACH,aAAO,MAAM,KAAK,KAAK,SAAS,KAAK,CAAC;AAAA,IAC1C;AAAA,EACJ;AAAA,EAEA,MAAM,cAAc,MAAc;AAC9B,QAAI,KAAK,cAAc,UAAU,QAAQ;AACrC,WAAK,cAAc,SAAS,OAAO,IAAI;AAAA,IAC3C,OAAO;AACH,WAAK,SAAS,OAAO,IAAI;AAAA,IAC7B;AAAA,EACJ;AAAA,EAEA,MAAM,kBAAkB,MAAc;AAClC,QAAI,KAAK,cAAc,UAAU,KAAK;AAClC,aAAO,KAAK,cAAc,SAAS,IAAI,IAAI;AAAA,IAC/C,OAAO;AACH,aAAO,KAAK,SAAS,IAAI,IAAI;AAAA,IACjC;AAAA,EACJ;AAAA,EAEA,MAAM,kBAAkB,MAAc,SAAyC;AAC3E,QAAI,KAAK,cAAc,UAAU,KAAK;AAClC,WAAK,cAAc,SAAS,IAAI,MAAM,OAAO;AAAA,IACjD,OAAO;AACH,WAAK,SAAS,IAAI,MAAM,OAAO;AAAA,IACnC;AAAA,EACJ;AAAA,EAEA,UAAU,QAAgB,MAAc,KAAK,IAAI,GAAG;AAChD,WAAQ,MAAM,UAAW,KAAK,OAAO,cAAc;AAAA,EACvD;AAAA,EAEA,WAAW;AACP,WAAO,YAAY,KAAK,kCAAkC;AAAA,EAC9D;AAAA,EAKA,MAAM,QAAQ,UAAyG;AACnH,QAAI;AACJ,QAAI,oBAAoB,iBAAiB;AACrC,aAAO,SAAS,aAAa,KAAK,cAAc,GAAG,KAAK,KAAK,SAAS;AAAA,IAC1E,WAAW,OAAO,aAAa,UAAU;AACrC,aAAO;AAAA,IACX,OAAO;AACH,aAAO,KAAK,SAAS;AAAA,IACzB;AACA,QAAI,UAAU,MAAM,KAAK,kBAAkB,IAAI;AAC/C,UAAM,MAAM,KAAK,IAAI;AACrB,QAAI,SAAS;AACT,UAAI,KAAK,UAAU,QAAQ,QAAQ,GAAG,GAAG;AACrC,eAAO,QAAQ;AAAA,MACnB;AACA,cAAQ,SAAS;AAAA,IACrB,OAAO;AACH,gBAAU;AAAA,QACN,QAAQ;AAAA,MACZ;AAAA,IACJ;AACA,UAAM,KAAK,kBAAkB,MAAM,OAAO;AAC1C,WAAO,EAAC,MAAM,QAAO;AAAA,EACzB;AACJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|