@dooboostore/simple-boot-http-server-ssr 1.0.13 → 1.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.MD +1 -3
  2. package/dist/cjs/filters/IntentSchemeFilter.js.map +2 -2
  3. package/dist/cjs/filters/SSRDomParserFilter.js +186 -0
  4. package/dist/cjs/filters/SSRDomParserFilter.js.map +7 -0
  5. package/dist/cjs/initializers/DomParserInitializer.js +79 -0
  6. package/dist/cjs/initializers/DomParserInitializer.js.map +7 -0
  7. package/dist/cjs/proxy/SymbolIntentApiServiceProxy.js +85 -73
  8. package/dist/cjs/proxy/SymbolIntentApiServiceProxy.js.map +2 -2
  9. package/dist/cjs/proxy/SymbolIntentApiServiceProxyBase.js +2 -77
  10. package/dist/cjs/proxy/SymbolIntentApiServiceProxyBase.js.map +2 -2
  11. package/dist/esm/filters/IntentSchemeFilter.js.map +2 -2
  12. package/dist/esm/filters/SSRDomParserFilter.js +163 -0
  13. package/dist/esm/filters/SSRDomParserFilter.js.map +7 -0
  14. package/dist/esm/initializers/DomParserInitializer.js +46 -0
  15. package/dist/esm/initializers/DomParserInitializer.js.map +7 -0
  16. package/dist/esm/proxy/SymbolIntentApiServiceProxy.js +85 -73
  17. package/dist/esm/proxy/SymbolIntentApiServiceProxy.js.map +2 -2
  18. package/dist/esm/proxy/SymbolIntentApiServiceProxyBase.js +2 -77
  19. package/dist/esm/proxy/SymbolIntentApiServiceProxyBase.js.map +2 -2
  20. package/dist/esm-bundle/dooboostore-simple-boot-http-server-ssr.esm.js +701 -481
  21. package/dist/esm-bundle/dooboostore-simple-boot-http-server-ssr.esm.js.map +4 -4
  22. package/dist/types/filters/IntentSchemeFilter.d.ts.map +1 -1
  23. package/dist/types/filters/SSRDomParserFilter.d.ts +57 -0
  24. package/dist/types/filters/SSRDomParserFilter.d.ts.map +1 -0
  25. package/dist/types/initializers/DomParserInitializer.d.ts +11 -0
  26. package/dist/types/initializers/DomParserInitializer.d.ts.map +1 -0
  27. package/dist/types/proxy/SymbolIntentApiServiceProxy.d.ts +2 -0
  28. package/dist/types/proxy/SymbolIntentApiServiceProxy.d.ts.map +1 -1
  29. package/dist/types/proxy/SymbolIntentApiServiceProxyBase.d.ts +0 -8
  30. package/dist/types/proxy/SymbolIntentApiServiceProxyBase.d.ts.map +1 -1
  31. package/dist/umd-bundle/dooboostore-simple-boot-http-server-ssr.umd.js +701 -481
  32. package/dist/umd-bundle/dooboostore-simple-boot-http-server-ssr.umd.js.map +4 -4
  33. package/package.json +10 -9
  34. package/src/filters/IntentSchemeFilter.ts +51 -48
  35. package/src/filters/SSRDomParserFilter.ts +233 -0
  36. package/src/initializers/DomParserInitializer.ts +70 -0
  37. package/src/proxy/SymbolIntentApiServiceProxy.ts +100 -116
  38. package/src/proxy/SymbolIntentApiServiceProxyBase.ts +7 -85
  39. package/tsconfig.json +2 -1
  40. package/src/node_modules/.bin/acorn +0 -17
  41. package/src/node_modules/.bin/browserslist +0 -17
  42. package/src/node_modules/.bin/eslint +0 -17
  43. package/src/node_modules/.bin/jest +0 -17
  44. package/src/node_modules/.bin/ts-jest +0 -17
  45. package/src/node_modules/.bin/ts-node +0 -17
  46. package/src/node_modules/.bin/ts-node-cwd +0 -17
  47. package/src/node_modules/.bin/ts-node-esm +0 -17
  48. package/src/node_modules/.bin/ts-node-script +0 -17
  49. package/src/node_modules/.bin/ts-node-transpile-only +0 -17
  50. package/src/node_modules/.bin/ts-script +0 -17
  51. package/src/node_modules/.bin/tsc +0 -17
  52. package/src/node_modules/.bin/tsserver +0 -17
@@ -20,86 +20,11 @@ __export(SymbolIntentApiServiceProxyBase_exports, {
20
20
  SymbolIntentApiServiceProxyBase: () => SymbolIntentApiServiceProxyBase
21
21
  });
22
22
  module.exports = __toCommonJS(SymbolIntentApiServiceProxyBase_exports);
23
- var import_SimDecorator = require("@dooboostore/simple-boot/decorators/SimDecorator");
24
- var import_HttpHeaders = require("../codes/HttpHeaders");
25
- var import_ConvertUtils = require("@dooboostore/core/convert/ConvertUtils");
23
+ var import_SymbolIntentApiServiceProxy = require("./SymbolIntentApiServiceProxy");
26
24
  class SymbolIntentApiServiceProxyBase {
27
25
  // 생성자는 프록시될 대상 객체(target)와 의존성을 주입받습니다.
28
26
  constructor(apiService) {
29
- const handler = {
30
- get(target, prop, receiver) {
31
- const simConfig = (0, import_SimDecorator.getSim)(target);
32
- const value = Reflect.get(target, prop, receiver);
33
- if (typeof value === "function" && simConfig?.symbol) {
34
- return function(...args) {
35
- const f = value;
36
- const p = (userConfig) => {
37
- const headers = { ...userConfig?.headers ?? {}, ...(0, import_HttpHeaders.makeIntentHeaderBySymbol)(simConfig.symbol) };
38
- const method = userConfig?.method ?? "post";
39
- if (method === "post" && userConfig?.multipartFormData) {
40
- return apiService.post({
41
- target: `/${String(prop)}`,
42
- config: {
43
- bypassTransform: userConfig?.bypassTransform,
44
- transformText: userConfig?.transformText,
45
- fetch: {
46
- credentials: "include",
47
- headers,
48
- body: import_ConvertUtils.ConvertUtils.toFormData(userConfig?.body)
49
- }
50
- }
51
- });
52
- } else if (method === "post") {
53
- return apiService.postJson({
54
- target: `/${String(prop)}`,
55
- config: {
56
- bypassTransform: userConfig?.bypassTransform,
57
- transformText: userConfig?.transformText,
58
- fetch: {
59
- credentials: "include",
60
- headers,
61
- body: userConfig?.body
62
- }
63
- }
64
- });
65
- } else if (method === "petch") {
66
- return apiService.patchJson({
67
- target: `/${String(prop)}`,
68
- config: {
69
- bypassTransform: userConfig?.bypassTransform,
70
- transformText: userConfig?.transformText,
71
- fetch: {
72
- credentials: "include",
73
- headers,
74
- body: userConfig?.body
75
- }
76
- }
77
- });
78
- } else {
79
- return apiService[method]({
80
- target: { url: `/${String(prop)}`, searchParams: userConfig?.body },
81
- config: {
82
- bypassTransform: userConfig?.bypassTransform,
83
- transformText: userConfig?.transformText,
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("SymbolIntentApiServiceProxyBase apply (from handler)");
100
- return Reflect.apply(target, thisArg, argArray);
101
- }
102
- };
27
+ const handler = import_SymbolIntentApiServiceProxy.SymbolIntentApiServiceProxy.createHandler(apiService);
103
28
  return new Proxy(this, handler);
104
29
  }
105
30
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/proxy/SymbolIntentApiServiceProxyBase.ts"],
4
- "sourcesContent": ["import { getSim, Sim } from '@dooboostore/simple-boot/decorators/SimDecorator';\nimport { makeIntentHeaderBySymbol } from '../codes/HttpHeaders';\nimport { ConvertUtils } from '@dooboostore/core/convert/ConvertUtils';\nimport { ApiService } from '@dooboostore/simple-boot/fetch/ApiService';\n\n\nexport type SymbolIntentApiServiceProxyBaseConfig<T = any> = { method?:'get' | 'post' | 'petch' | 'delete' | 'head', multipartFormData?: boolean, bypassTransform?: boolean; transformText?: boolean, headers?: HeadersInit, body?: T };\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 // ProxyHandler \uAC1D\uCCB4\uB97C \uC815\uC758\uD569\uB2C8\uB2E4.\n const handler: ProxyHandler<T> = {\n get(target: T, prop: string | symbol, receiver: any): any {\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: SymbolIntentApiServiceProxyBaseConfig) => {\n const headers = {...(userConfig?.headers ?? {}), ...makeIntentHeaderBySymbol(simConfig.symbol as Symbol)};\n const method = userConfig?.method ?? 'post';\n if(method === 'post' && userConfig?.multipartFormData) {\n return apiService.post({\n target: `/${String(prop)}`,\n config: {\n bypassTransform: userConfig?.bypassTransform,\n transformText: userConfig?.transformText,\n fetch: {\n credentials: 'include',\n headers: headers,\n body: ConvertUtils.toFormData(userConfig?.body)\n }\n }\n });\n } else if (method === 'post') {\n return apiService.postJson({\n target: `/${String(prop)}`,\n config: {\n bypassTransform: userConfig?.bypassTransform,\n transformText: userConfig?.transformText,\n fetch: {\n credentials: 'include',\n headers: headers,\n body: userConfig?.body\n }\n }\n });\n }else if (method === 'petch') {\n return apiService.patchJson({\n target: `/${String(prop)}`,\n config: {\n bypassTransform: userConfig?.bypassTransform,\n transformText: userConfig?.transformText,\n fetch: {\n credentials: 'include',\n headers: headers,\n body: userConfig?.body\n }\n }\n });\n } else {\n return apiService[method]({\n target: {url: `/${String(prop)}`, searchParams: userConfig?.body},\n config: {\n bypassTransform: userConfig?.bypassTransform,\n transformText: userConfig?.transformText,\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('SymbolIntentApiServiceProxyBase apply (from handler)');\n // @ts-ignore\n return Reflect.apply(target, thisArg, argArray);\n }\n };\n\n // \uC0DD\uC131\uC790\uC5D0\uC11C Proxy \uAC1D\uCCB4\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n\n // @ts-ignore\n return new Proxy(this, handler);\n }\n}"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAA4B;AAC5B,yBAAyC;AACzC,0BAA6B;AAMtB,MAAM,gCAAwD;AAAA;AAAA,EAEnE,YACE,YACA;AAEA,UAAM,UAA2B;AAAA,MAC/B,IAAI,QAAW,MAAuB,UAAoB;AACxD,cAAM,gBAAY,4BAAO,MAAM;AAC/B,cAAM,QAAQ,QAAQ,IAAI,QAAQ,MAAM,QAAQ;AAChD,YAAI,OAAO,UAAU,cAAc,WAAW,QAAQ;AACpD,iBAAO,YAAa,MAAa;AAC/B,kBAAM,IAAI;AACV,kBAAM,IAAI,CAAC,eAAsD;AAC/D,oBAAM,UAAU,EAAC,GAAI,YAAY,WAAW,CAAC,GAAI,OAAG,6CAAyB,UAAU,MAAgB,EAAC;AACxG,oBAAM,SAAS,YAAY,UAAU;AACrC,kBAAG,WAAW,UAAU,YAAY,mBAAmB;AACrD,uBAAO,WAAW,KAAK;AAAA,kBACrB,QAAQ,IAAI,OAAO,IAAI,CAAC;AAAA,kBACxB,QAAQ;AAAA,oBACN,iBAAiB,YAAY;AAAA,oBAC7B,eAAe,YAAY;AAAA,oBAC3B,OAAO;AAAA,sBACL,aAAa;AAAA,sBACb;AAAA,sBACA,MAAM,iCAAa,WAAW,YAAY,IAAI;AAAA,oBAChD;AAAA,kBACF;AAAA,gBACF,CAAC;AAAA,cACH,WAAW,WAAW,QAAQ;AAC5B,uBAAO,WAAW,SAAS;AAAA,kBACzB,QAAQ,IAAI,OAAO,IAAI,CAAC;AAAA,kBACxB,QAAQ;AAAA,oBACN,iBAAiB,YAAY;AAAA,oBAC7B,eAAe,YAAY;AAAA,oBAC3B,OAAO;AAAA,sBACL,aAAa;AAAA,sBACb;AAAA,sBACA,MAAM,YAAY;AAAA,oBACpB;AAAA,kBACF;AAAA,gBACF,CAAC;AAAA,cACH,WAAU,WAAW,SAAS;AAC5B,uBAAO,WAAW,UAAU;AAAA,kBAC1B,QAAQ,IAAI,OAAO,IAAI,CAAC;AAAA,kBACxB,QAAQ;AAAA,oBACN,iBAAiB,YAAY;AAAA,oBAC7B,eAAe,YAAY;AAAA,oBAC3B,OAAO;AAAA,sBACL,aAAa;AAAA,sBACb;AAAA,sBACA,MAAM,YAAY;AAAA,oBACpB;AAAA,kBACF;AAAA,gBACF,CAAC;AAAA,cACH,OAAO;AACL,uBAAO,WAAW,MAAM,EAAE;AAAA,kBACxB,QAAQ,EAAC,KAAK,IAAI,OAAO,IAAI,CAAC,IAAI,cAAc,YAAY,KAAI;AAAA,kBAChE,QAAQ;AAAA,oBACN,iBAAiB,YAAY;AAAA,oBAC7B,eAAe,YAAY;AAAA,oBAC3B,OAAO;AAAA,sBACL,aAAa;AAAA,sBACb;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF,CAAC;AAAA,cACH;AAAA,YACF;AACA,iBAAK,KAAK,CAAC;AACX,mBAAO,QAAQ,MAAM,GAAG,QAAQ,IAAI;AAAA,UACtC;AAAA,QACF;AACA,eAAO,QAAQ,IAAI,QAAQ,MAAM,QAAQ;AAAA,MAC3C;AAAA,MAEA,MAAM,QAAW,SAAc,UAAsB;AACnD,gBAAQ,IAAI,sDAAsD;AAElE,eAAO,QAAQ,MAAM,QAAQ,SAAS,QAAQ;AAAA,MAChD;AAAA,IACF;AAKA,WAAO,IAAI,MAAM,MAAM,OAAO;AAAA,EAChC;AACF;",
4
+ "sourcesContent": ["import {getSim, Sim} from '@dooboostore/simple-boot/decorators/SimDecorator';\nimport {makeIntentHeaderBySymbol} from '../codes/HttpHeaders';\nimport {ConvertUtils} from '@dooboostore/core/convert/ConvertUtils';\nimport {ApiService} from '@dooboostore/simple-boot/fetch/ApiService';\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": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,yCAA0C;AAEnC,MAAM,gCAAwD;AAAA;AAAA,EAEnE,YACE,YACA;AAEA,UAAM,UAAU,+DAA4B,cAAiB,UAAU;AAIvE,WAAO,IAAI,MAAM,MAAM,OAAO;AAAA,EAChC;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/filters/IntentSchemeFilter.ts"],
4
- "sourcesContent": ["import {Filter} from '@dooboostore/simple-boot-http-server/filters/Filter';\nimport {HttpHeaders} from '../codes/HttpHeaders';\nimport {Intent, PublishType} from '@dooboostore/simple-boot/intent/Intent';\nimport {IntentManager} from '@dooboostore/simple-boot/intent/IntentManager';\nimport {Sim} from '@dooboostore/simple-boot/decorators/SimDecorator';\nimport {HttpStatus} from '@dooboostore/simple-boot-http-server/codes/HttpStatus';\nimport {RequestResponse} from '@dooboostore/simple-boot-http-server/models/RequestResponse';\nimport {SimpleBootHttpServer} from '@dooboostore/simple-boot-http-server/SimpleBootHttpServer';\nimport { Mimes } from '../codes/Mimes';\n\n@Sim\nexport class IntentSchemeFilter implements Filter {\n constructor(private intentManager: IntentManager) {\n // (IntentManager as any).\n // console.log('intent constructor', this.intentManager);\n }\n\n async onInit(app: SimpleBootHttpServer) {\n }\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 intent.publishType = PublishType.INLINE_DATA_PARAMETERS;\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 const rdatas = await this.intentManager.publish(intent);\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 rdatas = await this.intentManager.publish(intent);\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}\n"],
5
- "mappings": ";;;;;;;;;;AACA,SAAQ,mBAAkB;AAC1B,SAAQ,QAAQ,mBAAkB;AAClC,SAAQ,qBAAoB;AAC5B,SAAQ,WAAU;AAClB,SAAQ,kBAAiB;AAGzB,SAAS,aAAa;AAGf,IAAM,qBAAN,MAAMA,oBAAkB;EAC3B,YAAoB,eAA4B;AAA5B,SAAA,gBAAA;EAGpB;EAEA,MAAM,OAAO,KAAyB;EACtC;EAEA,MAAM,cAAc,EAAC,IAAI,IAAG,GAA8E;AAEtG,UAAM,MAAM,GAAG;AACf,UAAM,gBAAgB,OAAO,GAAG,UAAU,YAAY,cAAc,YAAW,KAAM,GAAG,CAAC;AACzF,UAAM,aAAa,GAAG,UAAU,YAAY,MAAM;AAClD,UAAM,cAAc,GAAG,UAAU,YAAY,WAAW;AACxD,UAAM,eAAe,GAAG,UAAU,YAAY,0BAA0B;AACxE,QAAI,eAAe,MAAM,gDAAgD,cAAc;AACnF,UAAI,SAAS,IAAI,OAAO,GAAG,YAAY,KAAK,GAAG,EAAE;AACjD,aAAO,cAAc,YAAY;AAGjC,UAAI,gBAAgB,GAAG;AACnB,YAAI,YAAY,SAAS,MAAM,eAAe,GAAG;AAC7C,iBAAO,OAAO,CAAC,MAAM,GAAG,gBAAe,GAAI,EAAE;QACjD,WAAW,YAAY,SAAS,MAAM,iBAAiB,GAAG;AACtD,iBAAO,OAAO,CAAC,MAAM,GAAG,+BAA8B,GAAI,EAAE;QAChE;AACA,cAAM,SAAS,MAAM,KAAK,cAAc,QAAQ,MAAM;AACtD,cAAM,QAAQ,OAAO,CAAC;AACtB,cAAM,QAAQ,iBAAiB,UAAU,MAAM,QAAQ;AACvD,WAAG,cAAc,WAAW,EAAE;AAC9B,WAAG,aAAa,YAAY,aAAa,CAAC,MAAM,eAAe,CAAC;AAChE,cAAM,GAAG,OAAO,QAAQ,KAAK,UAAU,KAAK,IAAI,MAAS;MAC7D,OAAO;AACH,eAAO,OAAO,GAAG,wBAAwB,SAAS,IAAI,CAAC,GAAG,uBAAuB,EAAE,IAAI,CAAC,EAAE;AAC1F,cAAM,SAAS,MAAM,KAAK,cAAc,QAAQ,MAAM;AACtD,cAAM,QAAQ,OAAO,CAAC;AACtB,cAAM,QAAQ,iBAAiB,UAAU,MAAM,QAAQ;AAEvD,WAAG,cAAc,WAAW,EAAE;AAC9B,WAAG,aAAa,YAAY,aAAa,CAAC,MAAM,eAAe,CAAC;AAChE,cAAM,GAAG,OAAO,QAAQ,KAAK,UAAU,KAAK,IAAI,MAAS;MAC7D;AAEA,aAAO;IACX,OAAO;AACH,aAAO;IACX;EACJ;EAEA,MAAM,aAAa,EAAC,IAAI,IAAG,GAA8E;AACrG,WAAO;EACX;;AApDS,qBAAkB,WAAA;EAD9B;uDAEsC,kBAAa,eAAb,mBAAa,aAAA,KAAA,MAAA,CAAA;GADvC,kBAAkB;",
4
+ "sourcesContent": ["import {Filter} from '@dooboostore/simple-boot-http-server/filters/Filter';\nimport {HttpHeaders} from '../codes/HttpHeaders';\nimport {Intent, PublishType} from '@dooboostore/simple-boot/intent/Intent';\nimport {IntentManager} from '@dooboostore/simple-boot/intent/IntentManager';\nimport {Sim} from '@dooboostore/simple-boot/decorators/SimDecorator';\nimport {HttpStatus} from '@dooboostore/simple-boot-http-server/codes/HttpStatus';\nimport {RequestResponse} from '@dooboostore/simple-boot-http-server/models/RequestResponse';\nimport {SimpleBootHttpServer} from '@dooboostore/simple-boot-http-server/SimpleBootHttpServer';\nimport {Mimes} from '../codes/Mimes';\nimport {Promises} from \"@dooboostore/core/promise/Promises\";\n\n@Sim\nexport class IntentSchemeFilter implements Filter {\n constructor(private intentManager: IntentManager) {\n // (IntentManager as any).\n // console.log('intent constructor', this.intentManager);\n }\n\n async onInit(app: SimpleBootHttpServer) {\n }\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 intent.publishType = PublishType.INLINE_DATA_PARAMETERS;\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 rdatas = await this.intentManager.publish(intent);\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 rdatas = await this.intentManager.publish(intent);\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}\n"],
5
+ "mappings": ";;;;;;;;;;AACA,SAAQ,mBAAkB;AAC1B,SAAQ,QAAQ,mBAAkB;AAClC,SAAQ,qBAAoB;AAC5B,SAAQ,WAAU;AAClB,SAAQ,kBAAiB;AAGzB,SAAQ,aAAY;AAIb,IAAM,qBAAN,MAAMA,oBAAkB;EAC7B,YAAoB,eAA4B;AAA5B,SAAA,gBAAA;EAGpB;EAEA,MAAM,OAAO,KAAyB;EACtC;EAEA,MAAM,cAAc,EAAC,IAAI,IAAG,GAAgF;AAE1G,UAAM,MAAM,GAAG;AACf,UAAM,gBAAgB,OAAO,GAAG,UAAU,YAAY,cAAc,YAAW,KAAM,GAAG,CAAC;AACzF,UAAM,aAAa,GAAG,UAAU,YAAY,MAAM;AAClD,UAAM,cAAc,GAAG,UAAU,YAAY,WAAW;AACxD,UAAM,eAAe,GAAG,UAAU,YAAY,0BAA0B;AACxE,QAAI,eAAe,MAAM,gDAAgD,cAAc;AACrF,UAAI,SAAS,IAAI,OAAO,GAAG,YAAY,KAAK,GAAG,EAAE;AACjD,aAAO,cAAc,YAAY;AAIjC,UAAI,gBAAgB,GAAG;AACrB,YAAI,YAAY,SAAS,MAAM,eAAe,GAAG;AAC/C,iBAAO,OAAO,CAAC,MAAM,GAAG,gBAAe,GAAI,EAAE;QAC/C,WAAW,YAAY,SAAS,MAAM,iBAAiB,GAAG;AACxD,iBAAO,OAAO,CAAC,MAAM,GAAG,+BAA8B,GAAI,EAAE;QAC9D;AAEA,cAAM,SAAS,MAAM,KAAK,cAAc,QAAQ,MAAM;AACtD,cAAM,QAAQ,OAAO,CAAC;AACtB,cAAM,QAAQ,iBAAiB,UAAU,MAAM,QAAQ;AACvD,WAAG,cAAc,WAAW,EAAE;AAC9B,WAAG,aAAa,YAAY,aAAa,CAAC,MAAM,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,SAAS,MAAM,KAAK,cAAc,QAAQ,MAAM;AACtD,cAAM,QAAQ,OAAO,CAAC;AACtB,cAAM,QAAQ,iBAAiB,UAAU,MAAM,QAAQ;AAEvD,WAAG,cAAc,WAAW,EAAE;AAC9B,WAAG,aAAa,YAAY,aAAa,CAAC,MAAM,eAAe,CAAC;AAChE,cAAM,GAAG,OAAO,QAAQ,KAAK,UAAU,KAAK,IAAI,MAAS;MAC3D;AAEA,aAAO;IACT,OAAO;AACL,aAAO;IACT;EACF;EAEA,MAAM,aAAa,EAAC,IAAI,IAAG,GAAgF;AACzG,WAAO;EACT;;AAtDW,qBAAkB,WAAA;EAD9B;uDAEoC,kBAAa,eAAb,mBAAa,aAAA,KAAA,MAAA,CAAA;GADrC,kBAAkB;",
6
6
  "names": ["IntentSchemeFilter"]
7
7
  }
@@ -0,0 +1,163 @@
1
+ import { HttpHeaders } from "@dooboostore/simple-boot-http-server/codes/HttpHeaders";
2
+ import { Mimes } from "@dooboostore/simple-boot-http-server/codes/Mimes";
3
+ import { HttpStatus } from "@dooboostore/simple-boot-http-server/codes/HttpStatus";
4
+ import { AsyncBlockingQueue } from "@dooboostore/core/queues/AsyncBlockingQueue";
5
+ import { RandomUtils } from "@dooboostore/core/random/RandomUtils";
6
+ import { NotFoundError } from "@dooboostore/simple-boot-http-server/errors/NotFoundError";
7
+ import { DomRenderProxy } from "@dooboostore/dom-render/DomRenderProxy";
8
+ import { filter } from "@dooboostore/core/message/operators/filter";
9
+ import { first } from "@dooboostore/core/message/operators/first";
10
+ import { firstValueFrom } from "@dooboostore/core/message/internal/firstValueFrom";
11
+ import { Promises } from "@dooboostore/core/promise/Promises";
12
+ import { DomParserInitializer } from "../initializers/DomParserInitializer.js";
13
+ class SSRDomParserFilter {
14
+ constructor(config, otherInstanceSim) {
15
+ this.config = config;
16
+ this.otherInstanceSim = otherInstanceSim;
17
+ this.simpleBootFrontPool = [];
18
+ this.simpleBootFrontQueue = new AsyncBlockingQueue();
19
+ // private indexHTML: string;
20
+ this.welcomUrl = "http://localhost";
21
+ this.poolGeneration = 0;
22
+ config.frontDistIndexFileName = config.frontDistIndexFileName || "index.html";
23
+ }
24
+ async onInit(app) {
25
+ for (let i = 0; i < this.config.poolOption.min; i++) {
26
+ await this.pushQueue();
27
+ }
28
+ if (this.config.poolOption.clearIntervalTime && this.config.poolOption.clearIntervalTime > 0) {
29
+ this.intervalId = setInterval(() => {
30
+ this.poolGeneration++;
31
+ }, this.config.poolOption.clearIntervalTime);
32
+ }
33
+ }
34
+ async onDestroy() {
35
+ if (this.intervalId) {
36
+ clearInterval(this.intervalId);
37
+ }
38
+ this.simpleBootFrontPool.forEach((front) => {
39
+ front.jsdom?.window.close();
40
+ });
41
+ this.simpleBootFrontPool = [];
42
+ }
43
+ async makePage() {
44
+ let windowPromise = await new DomParserInitializer(
45
+ this.config.frontDistPath,
46
+ this.config.frontDistIndexFileName || "index.html",
47
+ { url: this.welcomUrl }
48
+ ).run();
49
+ return windowPromise;
50
+ }
51
+ async makeFront(window) {
52
+ const name = RandomUtils.uuid();
53
+ window.ssrUse = false;
54
+ const option = this.config.factorySimFrontOption(DomRenderProxy.final(window));
55
+ const simpleBootFront = await this.config.factory.create(option, this.config.using, this.config.domExcludes);
56
+ simpleBootFront.run(this.otherInstanceSim);
57
+ simpleBootFront.generation = this.poolGeneration;
58
+ return simpleBootFront;
59
+ }
60
+ enqueueFrontApp(simpleBootFront) {
61
+ this.simpleBootFrontPool.push(simpleBootFront);
62
+ this.simpleBootFrontQueue.enqueue(simpleBootFront);
63
+ }
64
+ async pushQueue() {
65
+ if (this.simpleBootFrontPool.length < this.config.poolOption.max) {
66
+ this.enqueueFrontApp(await this.makeFront(await this.makePage()));
67
+ }
68
+ }
69
+ async proceedBefore({ rr, app }) {
70
+ if (this.config.ssrExcludeFilter?.(rr)) {
71
+ return false;
72
+ }
73
+ if (rr.reqHasAcceptHeader(Mimes.TextHtml) || rr.reqHasAcceptHeader(Mimes.All)) {
74
+ if (this.simpleBootFrontQueue.isEmpty()) {
75
+ await this.pushQueue();
76
+ }
77
+ const simpleBootFront = await this.simpleBootFrontQueue.dequeue();
78
+ try {
79
+ simpleBootFront.option.window.ssrUse = true;
80
+ delete simpleBootFront.option.window.server_side_data;
81
+ const url = rr.reqUrlObj({ host: "localhost" });
82
+ if (this.config.simpleBootFront?.notFoundError) {
83
+ const intent = await simpleBootFront.getIntent(url.pathname);
84
+ if (intent.module === void 0 && !intent.getRouterPathData(rr.reqUrlPathName)) {
85
+ throw new NotFoundError({ message: `Not Found: ${rr.reqUrlPathName}` });
86
+ }
87
+ }
88
+ const targetUrl = url.toString();
89
+ await simpleBootFront.goRouting(targetUrl);
90
+ await Promises.sleep(0);
91
+ const data = await firstValueFrom(
92
+ simpleBootFront.routingSubjectObservable.pipe(
93
+ filter(
94
+ (it) => it.triggerPoint === "end" && typeof it.routerModule.intent.uri === "string" && targetUrl.endsWith(it.routerModule.intent.uri)
95
+ ),
96
+ // delay(1000),
97
+ first()
98
+ )
99
+ );
100
+ await Promises.sleep(0);
101
+ const html = this.makeHTML(simpleBootFront);
102
+ await this.writeOkHtmlAndEnd({ rr }, html);
103
+ } finally {
104
+ simpleBootFront.option.window.ssrUse = false;
105
+ delete simpleBootFront.option.window.server_side_data;
106
+ if (simpleBootFront.generation < this.poolGeneration) {
107
+ const jsdom = simpleBootFront.jsdom;
108
+ jsdom?.window.close();
109
+ const index = this.simpleBootFrontPool.indexOf(simpleBootFront);
110
+ if (index > -1) {
111
+ this.simpleBootFrontPool.splice(index, 1);
112
+ }
113
+ this.pushQueue();
114
+ } else {
115
+ this.simpleBootFrontQueue.enqueue(simpleBootFront);
116
+ }
117
+ }
118
+ return false;
119
+ } else {
120
+ return true;
121
+ }
122
+ }
123
+ makeHTML(simpleBootFront) {
124
+ simpleBootFront.option.window.document.querySelectorAll("*").forEach((el) => {
125
+ Array.from(el.attributes).forEach((attr) => {
126
+ if (/^dr-/.test(attr.name) || /^domstyle/.test(attr.name) || /this-path/.test(attr.name)) {
127
+ el.removeAttribute(attr.name);
128
+ }
129
+ });
130
+ });
131
+ let html = simpleBootFront.option.window.document.documentElement.outerHTML;
132
+ if (!/^<!DOCTYPE html>/i.test(html)) {
133
+ html = "<!DOCTYPE html>" + html;
134
+ }
135
+ html = html.replace(/\$\{[\s\S]*?\}\$/g, "");
136
+ const serverSideData = simpleBootFront.option.window.server_side_data;
137
+ if (serverSideData) {
138
+ const data = Object.entries(serverSideData).map(([k, v]) => {
139
+ if (typeof v === "string") {
140
+ return `window.server_side_data.${k} = ${v}`;
141
+ } else {
142
+ return `window.server_side_data.${k} = ${JSON.stringify(v)}`;
143
+ }
144
+ }).join(";");
145
+ if (data) {
146
+ html = html.replace("</head>", `<script> window.server_side_data={}; ${data}; </script></head>`);
147
+ }
148
+ }
149
+ return html;
150
+ }
151
+ async writeOkHtmlAndEnd({ rr, status = HttpStatus.Ok }, html) {
152
+ rr.resStatusCode(status);
153
+ rr.resSetHeader(HttpHeaders.ContentType, Mimes.TextHtml);
154
+ await rr.resEnd(html);
155
+ }
156
+ async proceedAfter({ rr, app }) {
157
+ return true;
158
+ }
159
+ }
160
+ export {
161
+ SSRDomParserFilter
162
+ };
163
+ //# sourceMappingURL=SSRDomParserFilter.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/filters/SSRDomParserFilter.ts"],
4
+ "sourcesContent": ["import { RequestResponse } from '@dooboostore/simple-boot-http-server/models/RequestResponse';\nimport { HttpHeaders } from '@dooboostore/simple-boot-http-server/codes/HttpHeaders';\nimport { SimpleBootHttpSSRFactory } from '../SimpleBootHttpSSRFactory';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { Filter } from '@dooboostore/simple-boot-http-server/filters/Filter';\nimport { Mimes } from '@dooboostore/simple-boot-http-server/codes/Mimes';\nimport { HttpStatus } from '@dooboostore/simple-boot-http-server/codes/HttpStatus';\nimport { SimpleBootHttpServer } from '@dooboostore/simple-boot-http-server/SimpleBootHttpServer';\nimport { SimFrontOption } from '@dooboostore/simple-boot-front/option/SimFrontOption';\nimport { SimpleBootFront } from '@dooboostore/simple-boot-front/SimpleBootFront';\nimport { AsyncBlockingQueue } from '@dooboostore/core/queues/AsyncBlockingQueue';\nimport { RandomUtils } from '@dooboostore/core/random/RandomUtils';\nimport * as JSDOM from 'jsdom';\nimport { NotFoundError } from '@dooboostore/simple-boot-http-server/errors/NotFoundError';\nimport { DomRenderProxy } from '@dooboostore/dom-render/DomRenderProxy';\nimport { filter } from '@dooboostore/core/message/operators/filter';\nimport { first } from '@dooboostore/core/message/operators/first';\nimport { delay } from '@dooboostore/core/message/operators/delay';\nimport { firstValueFrom } from '@dooboostore/core/message/internal/firstValueFrom';\nimport { parseHTML } from 'linkedom';\nimport {Promises} from '@dooboostore/core/promise/Promises';\nimport { DomParserInitializer } from '../initializers/DomParserInitializer';\n\nexport type FactoryAndParams = {\n frontDistPath: string;\n frontDistIndexFileName?: string;\n factorySimFrontOption: (window: any) => SimFrontOption;\n factory: SimpleBootHttpSSRFactory;\n poolOption: {\n max: number;\n min: number;\n clearIntervalTime?: number;\n };\n using: ConstructorType<any>[];\n domExcludes?: ConstructorType<any>[];\n ssrExcludeFilter?: (rr: RequestResponse) => boolean;\n simpleBootFront?: {\n notFoundError?: boolean;\n };\n};\n\nexport class SSRDomParserFilter implements Filter {\n private simpleBootFrontPool: SimpleBootFront[] = [];\n private simpleBootFrontQueue = new AsyncBlockingQueue<SimpleBootFront>();\n // private indexHTML: string;\n private welcomUrl = 'http://localhost';\n private poolGeneration = 0;\n private intervalId?: NodeJS.Timeout;\n\n constructor(\n public config: FactoryAndParams,\n public otherInstanceSim?: Map<ConstructorType<any>, any>\n ) {\n config.frontDistIndexFileName = config.frontDistIndexFileName || 'index.html';\n // this.indexHTML = JsdomInitializer.loadFile(this.config.frontDistPath, config.frontDistIndexFileName);\n }\n\n async onInit(app: SimpleBootHttpServer) {\n for (let i = 0; i < this.config.poolOption.min; i++) {\n await this.pushQueue();\n }\n\n if (this.config.poolOption.clearIntervalTime && this.config.poolOption.clearIntervalTime > 0) {\n this.intervalId = setInterval(() => {\n this.poolGeneration++;\n }, this.config.poolOption.clearIntervalTime);\n }\n }\n\n async onDestroy() {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n }\n // this.simpleBootFrontQueue.clear();\n this.simpleBootFrontPool.forEach(front => {\n (front as any).jsdom?.window.close();\n });\n this.simpleBootFrontPool = [];\n }\n\n async makePage() {\n let windowPromise = await new DomParserInitializer(\n this.config.frontDistPath,\n this.config.frontDistIndexFileName || 'index.html',\n { url: this.welcomUrl }\n ).run();\n return windowPromise;\n // const jsdom = await new JsdomInitializer(\n // this.config.frontDistPath,\n // this.config.frontDistIndexFileName || 'index.html',\n // { url: this.welcomUrl }\n // ).run();\n // return jsdom;\n }\n\n async makeFront(window: Window) {\n const name = RandomUtils.uuid();\n (window as any).ssrUse = false;\n const option = this.config.factorySimFrontOption(DomRenderProxy.final(window));\n const simpleBootFront = await this.config.factory.create(option, this.config.using, this.config.domExcludes);\n simpleBootFront.run(this.otherInstanceSim);\n (simpleBootFront as any).generation = this.poolGeneration;\n return simpleBootFront;\n }\n\n enqueueFrontApp(simpleBootFront: SimpleBootFront) {\n // this.simpleBootFrontPool.set(simpleBootFront.option.name!, simpleBootFront);\n this.simpleBootFrontPool.push(simpleBootFront);\n this.simpleBootFrontQueue.enqueue(simpleBootFront);\n }\n async pushQueue() {\n if (this.simpleBootFrontPool.length < this.config.poolOption.max) {\n this.enqueueFrontApp(await this.makeFront(await this.makePage()));\n }\n }\n\n async proceedBefore({ rr, app }: { rr: RequestResponse; app: SimpleBootHttpServer; carrier: Map<string, any> }) {\n if (this.config.ssrExcludeFilter?.(rr)) {\n return false;\n }\n if (rr.reqHasAcceptHeader(Mimes.TextHtml) || rr.reqHasAcceptHeader(Mimes.All)) {\n if (this.simpleBootFrontQueue.isEmpty()) {\n await this.pushQueue();\n }\n const simpleBootFront = await this.simpleBootFrontQueue.dequeue();\n try {\n (simpleBootFront.option.window as any).ssrUse = true;\n delete (simpleBootFront.option.window as any).server_side_data;\n const url = rr.reqUrlObj({ host: 'localhost' });\n if (this.config.simpleBootFront?.notFoundError) {\n // intent router check first\n const intent = await simpleBootFront.getIntent(url.pathname);\n // route\uB97C \uBABB\uCC3E\uC740\uC0C1\uD0DC\uC5D0\uC11C router path\uAE4C\uC9C0 \uC548\uB9DE\uC73C\uBA74 404 \uCC98\uB9AC\uD55C\uB2E4. route\uB791 router\uB791 \uB2E4\uB974\uB2C8\uAE50 \uD5DB\uAC08\uB9AC\uC9C0\uB9D0\uB3C4\uB85D\n if (intent.module === undefined && !intent.getRouterPathData(rr.reqUrlPathName)) {\n throw new NotFoundError({ message: `Not Found: ${rr.reqUrlPathName}` });\n }\n }\n\n // runRouting!!\n const targetUrl = url.toString();\n // console.log('runRoutingrunRouting', targetUrl);\n await simpleBootFront.goRouting(targetUrl);\n await Promises.sleep(0); // <--\uC911\uC694: \uC774\uAC70 \uB123\uC5B4\uC57C\uC9C0 \uB450\uBC88\uBD88\uB7EC\uC9C0\uB294\uAC8C \uC5C6\uC5B4\uC9C0\uB294\uB4EF? \uBB50\uC9C0 event loop \uBCC0\uACBD\uB41C\uAC74\uAC00?\n\n // console.log('runRout22222ingrunRouting', targetUrl);\n\n // simpleBootFront.routingSubjectObservable.subscribe(it=>{\n // console.log('zzzzzzzzzzzzzzzzzzz', it);\n // if (it.triggerPoint==='end') {\n // console.log('zzz@@', it.routerModule.intent);\n // }\n // })\n\n const data = await firstValueFrom(\n simpleBootFront.routingSubjectObservable.pipe(\n filter(\n (it) =>\n it.triggerPoint === 'end' &&\n typeof it.routerModule.intent.uri === 'string' &&\n targetUrl.endsWith(it.routerModule.intent.uri)\n ),\n // delay(1000),\n first()\n )\n );\n // console.log('???????done');\n await Promises.sleep(0)\n const html = this.makeHTML(simpleBootFront);\n // console.log('---------',html);\n await this.writeOkHtmlAndEnd({ rr }, html);\n } finally {\n (simpleBootFront.option.window as any).ssrUse = false;\n delete (simpleBootFront.option.window as any).server_side_data;\n if ((simpleBootFront as any).generation < this.poolGeneration) {\n // Stale instance, destroy it\n const jsdom = (simpleBootFront as any).jsdom as JSDOM.JSDOM | undefined;\n jsdom?.window.close();\n const index = this.simpleBootFrontPool.indexOf(simpleBootFront);\n if (index > -1) {\n this.simpleBootFrontPool.splice(index, 1);\n }\n this.pushQueue();\n } else {\n // Current instance, return to queue\n this.simpleBootFrontQueue.enqueue(simpleBootFront);\n }\n }\n return false;\n } else {\n return true;\n }\n }\n\n makeHTML(simpleBootFront: SimpleBootFront) {\n (simpleBootFront.option.window as any).document.querySelectorAll('*').forEach((el:HTMLElement )=> {\n Array.from(el.attributes).forEach(attr => {\n if (/^dr-/.test(attr.name) || /^domstyle/.test(attr.name) || /this-path/.test(attr.name)) {\n el.removeAttribute(attr.name);\n }\n });\n });\n let html = simpleBootFront.option.window.document.documentElement.outerHTML;\n if (!/^<!DOCTYPE html>/i.test(html)) {\n html = '<!DOCTYPE html>' + html;\n }\n html = html.replace(/\\$\\{[\\s\\S]*?\\}\\$/g, '');\n const serverSideData = (simpleBootFront.option.window as any).server_side_data;\n if (serverSideData) {\n const data = Object.entries(serverSideData)\n .map(([k, v]) => {\n if (typeof v === 'string') {\n return `window.server_side_data.${k} = ${v}`;\n } else {\n return `window.server_side_data.${k} = ${JSON.stringify(v)}`;\n }\n })\n .join(';');\n if (data) {\n html = html.replace('</head>', `<script> window.server_side_data={}; ${data}; </script></head>`);\n }\n }\n return html;\n }\n async writeOkHtmlAndEnd({ rr, status = HttpStatus.Ok }: { rr: RequestResponse; status?: HttpStatus }, html: string) {\n rr.resStatusCode(status);\n rr.resSetHeader(HttpHeaders.ContentType, Mimes.TextHtml);\n await rr.resEnd(html);\n }\n\n async proceedAfter({ rr, app }: { rr: RequestResponse; app: SimpleBootHttpServer; carrier: Map<string, any> }) {\n return true;\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,46 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { parseHTML } from "@dooboostore/dom-parser";
4
+ class DomParserInitializer {
5
+ constructor(frontDistPath, frontDistIndexFileName, reconfigureSettings) {
6
+ this.frontDistPath = frontDistPath;
7
+ this.frontDistIndexFileName = frontDistIndexFileName;
8
+ this.reconfigureSettings = reconfigureSettings;
9
+ }
10
+ static loadFile(distPath, filePath) {
11
+ return fs.readFileSync(path.join(distPath, filePath), "utf8");
12
+ }
13
+ async run() {
14
+ const pathStr = path.join(this.frontDistPath, this.frontDistIndexFileName);
15
+ const html = fs.readFileSync(pathStr, "utf8");
16
+ const w = parseHTML(html, { href: this.reconfigureSettings.url });
17
+ ;
18
+ w.location ??= { href: "about:blank" };
19
+ if (this.reconfigureSettings?.url) {
20
+ w.location.href = this.reconfigureSettings.url;
21
+ }
22
+ global.Event = w.Event;
23
+ global.PopStateEvent = w.Event;
24
+ global.IntersectionObserver = w.IntersectionObserver;
25
+ global.NodeFilter = w.NodeFilter;
26
+ global.Node = w.Node;
27
+ global.DocumentFragment = w.DocumentFragment;
28
+ global.HTMLElement = w.HTMLElement;
29
+ global.HTMLMetaElement = w.HTMLMetaElement;
30
+ global.Element = w.Element;
31
+ global.HTMLCanvasElement = w.HTMLCanvasElement;
32
+ global.HTMLCanvasElement.prototype.getContext = () => {
33
+ return null;
34
+ };
35
+ global.CanvasRenderingContext2D = w.CanvasRenderingContext2D;
36
+ global.CanvasPattern = w.CanvasPattern;
37
+ global.CanvasGradient = w.CanvasGradient;
38
+ global.Path2D = w.Path2D;
39
+ global.ImageData = w.ImageData;
40
+ return w;
41
+ }
42
+ }
43
+ export {
44
+ DomParserInitializer
45
+ };
46
+ //# sourceMappingURL=DomParserInitializer.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/initializers/DomParserInitializer.ts"],
4
+ "sourcesContent": ["import fs from 'fs';\nimport path from 'path';\nimport { parseHTML } from '@dooboostore/dom-parser';\n\nexport class DomParserInitializer {\n constructor(\n private frontDistPath: string,\n private frontDistIndexFileName: string,\n private reconfigureSettings?: {url: string}\n ) {}\n\n public static loadFile(distPath: string, filePath: string): string {\n return fs.readFileSync(path.join(distPath, filePath), 'utf8');\n }\n\n async run(): Promise<Window> {\n // const indexHTML = fs.readFileSync(path.join(this.frontDistPath, 'index.html'), 'utf8');\n // const indexHTML = JsdomInitializer.loadFile(this.frontDistPath, this.frontDistIndexFileName);\n const pathStr = path.join(this.frontDistPath, this.frontDistIndexFileName);\n\n const html = fs.readFileSync(pathStr,'utf8');\n\n const w = parseHTML(html, {href: this.reconfigureSettings.url}) as unknown as Window & typeof globalThis; ;\n\n // @ts-ignore\n w.location ??= { href: 'about:blank'};\n if(this.reconfigureSettings?.url){\n // console.log('--',w,w.location);\n // @ts-ignore\n w.location.href = this.reconfigureSettings.url;\n }\n // console.log('!!!!!!!!!!!', html, w.document);\n // @ts-ignore\n // global.document = w.document;\n // @ts-ignore\n // global.window = w as unknown as Window & typeof globalThis;\n // @ts-ignore\n // global.window.requestAnimationFrame = () => {};\n // global.window.scrollTo = () => {};\n // @ts-ignore\n // global.history = w.history;\n global.Event = w.Event;\n // @ts-ignore\n global.PopStateEvent = w.Event;\n global.IntersectionObserver = w.IntersectionObserver;\n // @ts-ignore\n // global.Error = ErrorBase;\n // @ts-ignore\n // global.navigator = w.navigator;\n global.NodeFilter = w.NodeFilter;\n global.Node = w.Node;\n global.DocumentFragment = w.DocumentFragment;\n global.HTMLElement = w.HTMLElement;\n global.HTMLMetaElement = w.HTMLMetaElement;\n global.Element = w.Element;\n global.HTMLCanvasElement = w.HTMLCanvasElement;\n global.HTMLCanvasElement.prototype.getContext = () => {\n return null;\n };\n global.CanvasRenderingContext2D = w.CanvasRenderingContext2D;\n global.CanvasPattern = w.CanvasPattern;\n global.CanvasGradient = w.CanvasGradient;\n global.Path2D = w.Path2D;\n global.ImageData = w.ImageData;\n // console.log('cvvvvvvvvvvvvvv', w.Node.DOCUMENT_FRAGMENT_NODE);\n return w;\n }\n}\n//\n// export default new JsdomInitializer();\n"],
5
+ "mappings": "AAAA,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,SAAS,iBAAiB;AAEnB,MAAM,qBAAqB;AAAA,EAChC,YACU,eACA,wBACA,qBACR;AAHQ;AACA;AACA;AAAA,EACP;AAAA,EAEH,OAAc,SAAS,UAAkB,UAA0B;AACjE,WAAO,GAAG,aAAa,KAAK,KAAK,UAAU,QAAQ,GAAG,MAAM;AAAA,EAC9D;AAAA,EAEA,MAAM,MAAuB;AAG3B,UAAM,UAAU,KAAK,KAAK,KAAK,eAAe,KAAK,sBAAsB;AAEzE,UAAM,OAAO,GAAG,aAAa,SAAQ,MAAM;AAE3C,UAAM,IAAI,UAAU,MAAM,EAAC,MAAM,KAAK,oBAAoB,IAAG,CAAC;AAA4C;AAG1G,MAAE,aAAa,EAAE,MAAM,cAAa;AACpC,QAAG,KAAK,qBAAqB,KAAI;AAG/B,QAAE,SAAS,OAAO,KAAK,oBAAoB;AAAA,IAC7C;AAWA,WAAO,QAAQ,EAAE;AAEjB,WAAO,gBAAgB,EAAE;AACzB,WAAO,uBAAuB,EAAE;AAKhC,WAAO,aAAa,EAAE;AACtB,WAAO,OAAO,EAAE;AAChB,WAAO,mBAAmB,EAAE;AAC5B,WAAO,cAAc,EAAE;AACvB,WAAO,kBAAkB,EAAE;AAC3B,WAAO,UAAU,EAAE;AACnB,WAAO,oBAAoB,EAAE;AAC7B,WAAO,kBAAkB,UAAU,aAAa,MAAM;AACpD,aAAO;AAAA,IACT;AACA,WAAO,2BAA2B,EAAE;AACpC,WAAO,gBAAgB,EAAE;AACzB,WAAO,iBAAiB,EAAE;AAC1B,WAAO,SAAS,EAAE;AAClB,WAAO,YAAY,EAAE;AAErB,WAAO;AAAA,EACT;AACF;",
6
+ "names": []
7
+ }
@@ -7,93 +7,105 @@ var __decorate = function(decorators, target, key, desc) {
7
7
  var __metadata = function(k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
+ var SymbolIntentApiServiceProxy_1;
10
11
  var _a;
11
12
  import { getSim, Sim } from "@dooboostore/simple-boot/decorators/SimDecorator";
12
13
  import { makeIntentHeaderBySymbol } from "../codes/HttpHeaders.js";
13
14
  import { ConvertUtils } from "@dooboostore/core/convert/ConvertUtils";
14
15
  import { ApiService } from "@dooboostore/simple-boot/fetch/ApiService";
15
16
  const _ = ApiService;
16
- let SymbolIntentApiServiceProxy = class SymbolIntentApiServiceProxy2 {
17
+ let SymbolIntentApiServiceProxy = SymbolIntentApiServiceProxy_1 = class SymbolIntentApiServiceProxy2 {
17
18
  constructor(apiService) {
18
19
  this.apiService = apiService;
19
- console.log("-------apiService", apiService);
20
20
  }
21
- get(target, prop, receiver) {
22
- const simConfig = getSim(target);
23
- const apiService = this.apiService;
24
- const value = Reflect.get(target, prop, receiver);
25
- if (typeof value === "function" && simConfig?.symbol) {
26
- return function(...args) {
27
- const f = value;
28
- const p = (userConfig) => {
29
- const headers = { ...userConfig?.headers ?? {}, ...makeIntentHeaderBySymbol(simConfig.symbol) };
30
- const method = userConfig?.method ?? "post";
31
- if (method === "post" && userConfig?.multipartFormData) {
32
- return apiService.post({
33
- target: `/${String(prop)}`,
34
- config: {
35
- bypassTransform: userConfig?.bypassTransform,
36
- transformText: userConfig?.transformText,
37
- fetch: {
38
- credentials: "include",
39
- headers,
40
- body: ConvertUtils.toFormData(userConfig?.body)
41
- }
42
- }
43
- });
44
- } else if (method === "post") {
45
- return apiService.postJson({
46
- target: `/${String(prop)}`,
47
- config: {
48
- bypassTransform: userConfig?.bypassTransform,
49
- transformText: userConfig?.transformText,
50
- fetch: {
51
- credentials: "include",
52
- headers,
53
- body: userConfig?.body
54
- }
55
- }
56
- });
57
- } else if (method === "petch") {
58
- return apiService.patchJson({
59
- target: `/${String(prop)}`,
60
- config: {
61
- bypassTransform: userConfig?.bypassTransform,
62
- transformText: userConfig?.transformText,
63
- fetch: {
64
- credentials: "include",
65
- headers,
66
- body: userConfig?.body
67
- }
21
+ static createHandler(apiService) {
22
+ return {
23
+ get(target, prop, receiver) {
24
+ const simConfig = getSim(target);
25
+ const value = Reflect.get(target, prop, receiver);
26
+ if (typeof value === "function" && simConfig?.symbol) {
27
+ return function(...args) {
28
+ const f = value;
29
+ const p = (userConfig) => {
30
+ const headers = { ...userConfig?.headers ?? {}, ...makeIntentHeaderBySymbol(simConfig.symbol) };
31
+ const method = userConfig?.method ?? "post";
32
+ if (method === "post" && userConfig?.multipartFormData) {
33
+ return apiService.post({
34
+ target: `/${String(prop)}`,
35
+ config: {
36
+ bypassTransform: userConfig?.bypassTransform,
37
+ transformText: userConfig?.transformText,
38
+ config: userConfig?.config,
39
+ fetch: {
40
+ credentials: "include",
41
+ headers,
42
+ body: ConvertUtils.toFormData(userConfig?.body)
43
+ }
44
+ }
45
+ });
46
+ } else if (method === "post") {
47
+ return apiService.postJson({
48
+ target: `/${String(prop)}`,
49
+ config: {
50
+ bypassTransform: userConfig?.bypassTransform,
51
+ transformText: userConfig?.transformText,
52
+ config: userConfig?.config,
53
+ fetch: {
54
+ credentials: "include",
55
+ headers,
56
+ body: userConfig?.body
57
+ }
58
+ }
59
+ });
60
+ } else if (method === "petch") {
61
+ return apiService.patchJson({
62
+ target: `/${String(prop)}`,
63
+ config: {
64
+ bypassTransform: userConfig?.bypassTransform,
65
+ transformText: userConfig?.transformText,
66
+ config: userConfig?.config,
67
+ fetch: {
68
+ credentials: "include",
69
+ headers,
70
+ body: userConfig?.body
71
+ }
72
+ }
73
+ });
74
+ } else {
75
+ return apiService[method]({
76
+ target: { url: `/${String(prop)}`, searchParams: userConfig?.body },
77
+ config: {
78
+ bypassTransform: userConfig?.bypassTransform,
79
+ transformText: userConfig?.transformText,
80
+ config: userConfig?.config,
81
+ fetch: {
82
+ credentials: "include",
83
+ headers
84
+ }
85
+ }
86
+ });
68
87
  }
69
- });
70
- } else {
71
- return apiService[method]({
72
- // return apiService.head({
73
- target: { url: `/${String(prop)}`, searchParams: userConfig?.body },
74
- config: {
75
- bypassTransform: userConfig?.bypassTransform,
76
- transformText: userConfig?.transformText,
77
- fetch: {
78
- credentials: "include",
79
- headers
80
- }
81
- }
82
- });
83
- }
84
- };
85
- args.push(p);
86
- return Reflect.apply(f, target, args);
87
- };
88
- }
89
- return Reflect.get(target, prop, receiver);
88
+ };
89
+ args.push(p);
90
+ return Reflect.apply(f, target, args);
91
+ };
92
+ }
93
+ return Reflect.get(target, prop, receiver);
94
+ },
95
+ apply(target, thisArg, argArray) {
96
+ console.log("SymbolIntentApiServiceProxy apply");
97
+ return Reflect.apply(target, thisArg, argArray);
98
+ }
99
+ };
100
+ }
101
+ get(target, prop, receiver) {
102
+ return SymbolIntentApiServiceProxy_1.createHandler(this.apiService).get(target, prop, receiver);
90
103
  }
91
104
  apply(target, thisArg, argArray) {
92
- console.log("SymbolIntentApiServiceProxy apply");
93
- return Reflect.apply(target, thisArg, argArray);
105
+ return SymbolIntentApiServiceProxy_1.createHandler(this.apiService).apply(target, thisArg, argArray);
94
106
  }
95
107
  };
96
- SymbolIntentApiServiceProxy = __decorate([
108
+ SymbolIntentApiServiceProxy = SymbolIntentApiServiceProxy_1 = __decorate([
97
109
  Sim,
98
110
  __metadata("design:paramtypes", [typeof (_a = typeof ApiService !== "undefined" && ApiService) === "function" ? _a : Object])
99
111
  ], SymbolIntentApiServiceProxy);