@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
package/README.MD CHANGED
@@ -4,7 +4,7 @@
4
4
  [![Build and Test](https://github.com/dooboostore-develop/packages/actions/workflows/main.yaml/badge.svg?branch=main)](https://github.com/dooboostore-develop/packages/actions/workflows/main.yaml)
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](https://opensource.org/licenses/MIT)
6
6
 
7
- **Full Documentation:** [https://dooboostore-develop.github.io/packages/simple-boot-http-server-ssr](https://dooboostore-develop.github.io/packages/simple-boot-http-server-ssr)
7
+ **Full Documentation:** [https://dooboostore-develop.github.io/@dooboostore/simple-boot-http-server-ssr](https://dooboostore-develop.github.io/@dooboostore/simple-boot-http-server-ssr)
8
8
 
9
9
  A framework for building Server-Side Rendered (SSR) applications by seamlessly integrating `@dooboostore/simple-boot-front` and `@dooboostore/simple-boot-http-server`.
10
10
 
@@ -31,8 +31,6 @@ npm start
31
31
 
32
32
  The detailed API documentation is available on our documentation website.
33
33
 
34
- **[Explore the full documentation »](https://dooboostore-develop.github.io/packages/simple-boot-http-server-ssr)**
35
-
36
34
  ## License
37
35
 
38
36
  This package is licensed under the [MIT License](https://opensource.org/licenses/MIT).
@@ -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,yBAA0B;AAC1B,oBAAkC;AAClC,2BAA4B;AAC5B,0BAAkB;AAClB,wBAAyB;AAGzB,mBAAsB;;;;;;;;;;;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,+BAAY,cAAc,YAAW,KAAM,GAAG,CAAC;AACzF,UAAM,aAAa,GAAG,UAAU,+BAAY,MAAM;AAClD,UAAM,cAAc,GAAG,UAAU,+BAAY,WAAW;AACxD,UAAM,eAAe,GAAG,UAAU,+BAAY,0BAA0B;AACxE,QAAI,eAAe,mBAAM,gDAAgD,cAAc;AACnF,UAAI,SAAS,IAAI,qBAAO,GAAG,YAAY,KAAK,GAAG,EAAE;AACjD,aAAO,cAAc,0BAAY;AAGjC,UAAI,gBAAgB,GAAG;AACnB,YAAI,YAAY,SAAS,mBAAM,eAAe,GAAG;AAC7C,iBAAO,OAAO,CAAC,MAAM,GAAG,gBAAe,GAAI,EAAE;QACjD,WAAW,YAAY,SAAS,mBAAM,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,6BAAW,EAAE;AAC9B,WAAG,aAAa,+BAAY,aAAa,CAAC,mBAAM,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,6BAAW,EAAE;AAC9B,WAAG,aAAa,+BAAY,aAAa,CAAC,mBAAM,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,uCAAa,eAAb,wCAAa,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,yBAA0B;AAC1B,oBAAkC;AAClC,2BAA4B;AAC5B,0BAAkB;AAClB,wBAAyB;AAGzB,mBAAoB;;;;;;;;;;;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,+BAAY,cAAc,YAAW,KAAM,GAAG,CAAC;AACzF,UAAM,aAAa,GAAG,UAAU,+BAAY,MAAM;AAClD,UAAM,cAAc,GAAG,UAAU,+BAAY,WAAW;AACxD,UAAM,eAAe,GAAG,UAAU,+BAAY,0BAA0B;AACxE,QAAI,eAAe,mBAAM,gDAAgD,cAAc;AACrF,UAAI,SAAS,IAAI,qBAAO,GAAG,YAAY,KAAK,GAAG,EAAE;AACjD,aAAO,cAAc,0BAAY;AAIjC,UAAI,gBAAgB,GAAG;AACrB,YAAI,YAAY,SAAS,mBAAM,eAAe,GAAG;AAC/C,iBAAO,OAAO,CAAC,MAAM,GAAG,gBAAe,GAAI,EAAE;QAC/C,WAAW,YAAY,SAAS,mBAAM,iBAAiB,GAAG;AACxD,iBAAO,OAAO,CAAC,MAAM,GAAG,+BAA8B,GAAI,EAAE;QAC9D;AAEA,cAAM,SAAS,MAAM,KAAK,cAAc,QAAQ,MAAM;AACtD,cAAM,QAAQ,OAAO,CAAC;AACtB,cAAM,QAAQ,iBAAiB,UAAU,MAAM,QAAQ;AACvD,WAAG,cAAc,6BAAW,EAAE;AAC9B,WAAG,aAAa,+BAAY,aAAa,CAAC,mBAAM,eAAe,CAAC;AAChE,cAAM,GAAG,OAAO,QAAQ,KAAK,UAAU,KAAK,IAAI,MAAS;MAC3D,OAAO;AACL,eAAO,OAAO,GAAG,wBAAwB,SAAS,IAAI,CAAC,GAAG,uBAAuB,EAAE,IAAI,CAAC,EAAE;AAC1F,cAAM,SAAS,MAAM,KAAK,cAAc,QAAQ,MAAM;AACtD,cAAM,QAAQ,OAAO,CAAC;AACtB,cAAM,QAAQ,iBAAiB,UAAU,MAAM,QAAQ;AAEvD,WAAG,cAAc,6BAAW,EAAE;AAC9B,WAAG,aAAa,+BAAY,aAAa,CAAC,mBAAM,eAAe,CAAC;AAChE,cAAM,GAAG,OAAO,QAAQ,KAAK,UAAU,KAAK,IAAI,MAAS;MAC3D;AAEA,aAAO;IACT,OAAO;AACL,aAAO;IACT;EACF;EAEA,MAAM,aAAa,EAAC,IAAI,IAAG,GAAgF;AACzG,WAAO;EACT;;AAtDW,qBAAkB,WAAA;EAD9B;uDAEoC,uCAAa,eAAb,wCAAa,aAAA,KAAA,MAAA,CAAA;GADrC,kBAAkB;",
6
6
  "names": ["IntentSchemeFilter"]
7
7
  }
@@ -0,0 +1,186 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var SSRDomParserFilter_exports = {};
19
+ __export(SSRDomParserFilter_exports, {
20
+ SSRDomParserFilter: () => SSRDomParserFilter
21
+ });
22
+ module.exports = __toCommonJS(SSRDomParserFilter_exports);
23
+ var import_HttpHeaders = require("@dooboostore/simple-boot-http-server/codes/HttpHeaders");
24
+ var import_Mimes = require("@dooboostore/simple-boot-http-server/codes/Mimes");
25
+ var import_HttpStatus = require("@dooboostore/simple-boot-http-server/codes/HttpStatus");
26
+ var import_AsyncBlockingQueue = require("@dooboostore/core/queues/AsyncBlockingQueue");
27
+ var import_RandomUtils = require("@dooboostore/core/random/RandomUtils");
28
+ var import_NotFoundError = require("@dooboostore/simple-boot-http-server/errors/NotFoundError");
29
+ var import_DomRenderProxy = require("@dooboostore/dom-render/DomRenderProxy");
30
+ var import_filter = require("@dooboostore/core/message/operators/filter");
31
+ var import_first = require("@dooboostore/core/message/operators/first");
32
+ var import_firstValueFrom = require("@dooboostore/core/message/internal/firstValueFrom");
33
+ var import_Promises = require("@dooboostore/core/promise/Promises");
34
+ var import_DomParserInitializer = require("../initializers/DomParserInitializer");
35
+ class SSRDomParserFilter {
36
+ constructor(config, otherInstanceSim) {
37
+ this.config = config;
38
+ this.otherInstanceSim = otherInstanceSim;
39
+ this.simpleBootFrontPool = [];
40
+ this.simpleBootFrontQueue = new import_AsyncBlockingQueue.AsyncBlockingQueue();
41
+ // private indexHTML: string;
42
+ this.welcomUrl = "http://localhost";
43
+ this.poolGeneration = 0;
44
+ config.frontDistIndexFileName = config.frontDistIndexFileName || "index.html";
45
+ }
46
+ async onInit(app) {
47
+ for (let i = 0; i < this.config.poolOption.min; i++) {
48
+ await this.pushQueue();
49
+ }
50
+ if (this.config.poolOption.clearIntervalTime && this.config.poolOption.clearIntervalTime > 0) {
51
+ this.intervalId = setInterval(() => {
52
+ this.poolGeneration++;
53
+ }, this.config.poolOption.clearIntervalTime);
54
+ }
55
+ }
56
+ async onDestroy() {
57
+ if (this.intervalId) {
58
+ clearInterval(this.intervalId);
59
+ }
60
+ this.simpleBootFrontPool.forEach((front) => {
61
+ front.jsdom?.window.close();
62
+ });
63
+ this.simpleBootFrontPool = [];
64
+ }
65
+ async makePage() {
66
+ let windowPromise = await new import_DomParserInitializer.DomParserInitializer(
67
+ this.config.frontDistPath,
68
+ this.config.frontDistIndexFileName || "index.html",
69
+ { url: this.welcomUrl }
70
+ ).run();
71
+ return windowPromise;
72
+ }
73
+ async makeFront(window) {
74
+ const name = import_RandomUtils.RandomUtils.uuid();
75
+ window.ssrUse = false;
76
+ const option = this.config.factorySimFrontOption(import_DomRenderProxy.DomRenderProxy.final(window));
77
+ const simpleBootFront = await this.config.factory.create(option, this.config.using, this.config.domExcludes);
78
+ simpleBootFront.run(this.otherInstanceSim);
79
+ simpleBootFront.generation = this.poolGeneration;
80
+ return simpleBootFront;
81
+ }
82
+ enqueueFrontApp(simpleBootFront) {
83
+ this.simpleBootFrontPool.push(simpleBootFront);
84
+ this.simpleBootFrontQueue.enqueue(simpleBootFront);
85
+ }
86
+ async pushQueue() {
87
+ if (this.simpleBootFrontPool.length < this.config.poolOption.max) {
88
+ this.enqueueFrontApp(await this.makeFront(await this.makePage()));
89
+ }
90
+ }
91
+ async proceedBefore({ rr, app }) {
92
+ if (this.config.ssrExcludeFilter?.(rr)) {
93
+ return false;
94
+ }
95
+ if (rr.reqHasAcceptHeader(import_Mimes.Mimes.TextHtml) || rr.reqHasAcceptHeader(import_Mimes.Mimes.All)) {
96
+ if (this.simpleBootFrontQueue.isEmpty()) {
97
+ await this.pushQueue();
98
+ }
99
+ const simpleBootFront = await this.simpleBootFrontQueue.dequeue();
100
+ try {
101
+ simpleBootFront.option.window.ssrUse = true;
102
+ delete simpleBootFront.option.window.server_side_data;
103
+ const url = rr.reqUrlObj({ host: "localhost" });
104
+ if (this.config.simpleBootFront?.notFoundError) {
105
+ const intent = await simpleBootFront.getIntent(url.pathname);
106
+ if (intent.module === void 0 && !intent.getRouterPathData(rr.reqUrlPathName)) {
107
+ throw new import_NotFoundError.NotFoundError({ message: `Not Found: ${rr.reqUrlPathName}` });
108
+ }
109
+ }
110
+ const targetUrl = url.toString();
111
+ await simpleBootFront.goRouting(targetUrl);
112
+ await import_Promises.Promises.sleep(0);
113
+ const data = await (0, import_firstValueFrom.firstValueFrom)(
114
+ simpleBootFront.routingSubjectObservable.pipe(
115
+ (0, import_filter.filter)(
116
+ (it) => it.triggerPoint === "end" && typeof it.routerModule.intent.uri === "string" && targetUrl.endsWith(it.routerModule.intent.uri)
117
+ ),
118
+ // delay(1000),
119
+ (0, import_first.first)()
120
+ )
121
+ );
122
+ await import_Promises.Promises.sleep(0);
123
+ const html = this.makeHTML(simpleBootFront);
124
+ await this.writeOkHtmlAndEnd({ rr }, html);
125
+ } finally {
126
+ simpleBootFront.option.window.ssrUse = false;
127
+ delete simpleBootFront.option.window.server_side_data;
128
+ if (simpleBootFront.generation < this.poolGeneration) {
129
+ const jsdom = simpleBootFront.jsdom;
130
+ jsdom?.window.close();
131
+ const index = this.simpleBootFrontPool.indexOf(simpleBootFront);
132
+ if (index > -1) {
133
+ this.simpleBootFrontPool.splice(index, 1);
134
+ }
135
+ this.pushQueue();
136
+ } else {
137
+ this.simpleBootFrontQueue.enqueue(simpleBootFront);
138
+ }
139
+ }
140
+ return false;
141
+ } else {
142
+ return true;
143
+ }
144
+ }
145
+ makeHTML(simpleBootFront) {
146
+ simpleBootFront.option.window.document.querySelectorAll("*").forEach((el) => {
147
+ Array.from(el.attributes).forEach((attr) => {
148
+ if (/^dr-/.test(attr.name) || /^domstyle/.test(attr.name) || /this-path/.test(attr.name)) {
149
+ el.removeAttribute(attr.name);
150
+ }
151
+ });
152
+ });
153
+ let html = simpleBootFront.option.window.document.documentElement.outerHTML;
154
+ if (!/^<!DOCTYPE html>/i.test(html)) {
155
+ html = "<!DOCTYPE html>" + html;
156
+ }
157
+ html = html.replace(/\$\{[\s\S]*?\}\$/g, "");
158
+ const serverSideData = simpleBootFront.option.window.server_side_data;
159
+ if (serverSideData) {
160
+ const data = Object.entries(serverSideData).map(([k, v]) => {
161
+ if (typeof v === "string") {
162
+ return `window.server_side_data.${k} = ${v}`;
163
+ } else {
164
+ return `window.server_side_data.${k} = ${JSON.stringify(v)}`;
165
+ }
166
+ }).join(";");
167
+ if (data) {
168
+ html = html.replace("</head>", `<script> window.server_side_data={}; ${data}; </script></head>`);
169
+ }
170
+ }
171
+ return html;
172
+ }
173
+ async writeOkHtmlAndEnd({ rr, status = import_HttpStatus.HttpStatus.Ok }, html) {
174
+ rr.resStatusCode(status);
175
+ rr.resSetHeader(import_HttpHeaders.HttpHeaders.ContentType, import_Mimes.Mimes.TextHtml);
176
+ await rr.resEnd(html);
177
+ }
178
+ async proceedAfter({ rr, app }) {
179
+ return true;
180
+ }
181
+ }
182
+ // Annotate the CommonJS export names for ESM import in node:
183
+ 0 && (module.exports = {
184
+ SSRDomParserFilter
185
+ });
186
+ //# 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,79 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+ var DomParserInitializer_exports = {};
29
+ __export(DomParserInitializer_exports, {
30
+ DomParserInitializer: () => DomParserInitializer
31
+ });
32
+ module.exports = __toCommonJS(DomParserInitializer_exports);
33
+ var import_fs = __toESM(require("fs"), 1);
34
+ var import_path = __toESM(require("path"), 1);
35
+ var import_dom_parser = require("@dooboostore/dom-parser");
36
+ class DomParserInitializer {
37
+ constructor(frontDistPath, frontDistIndexFileName, reconfigureSettings) {
38
+ this.frontDistPath = frontDistPath;
39
+ this.frontDistIndexFileName = frontDistIndexFileName;
40
+ this.reconfigureSettings = reconfigureSettings;
41
+ }
42
+ static loadFile(distPath, filePath) {
43
+ return import_fs.default.readFileSync(import_path.default.join(distPath, filePath), "utf8");
44
+ }
45
+ async run() {
46
+ const pathStr = import_path.default.join(this.frontDistPath, this.frontDistIndexFileName);
47
+ const html = import_fs.default.readFileSync(pathStr, "utf8");
48
+ const w = (0, import_dom_parser.parseHTML)(html, { href: this.reconfigureSettings.url });
49
+ ;
50
+ w.location ??= { href: "about:blank" };
51
+ if (this.reconfigureSettings?.url) {
52
+ w.location.href = this.reconfigureSettings.url;
53
+ }
54
+ global.Event = w.Event;
55
+ global.PopStateEvent = w.Event;
56
+ global.IntersectionObserver = w.IntersectionObserver;
57
+ global.NodeFilter = w.NodeFilter;
58
+ global.Node = w.Node;
59
+ global.DocumentFragment = w.DocumentFragment;
60
+ global.HTMLElement = w.HTMLElement;
61
+ global.HTMLMetaElement = w.HTMLMetaElement;
62
+ global.Element = w.Element;
63
+ global.HTMLCanvasElement = w.HTMLCanvasElement;
64
+ global.HTMLCanvasElement.prototype.getContext = () => {
65
+ return null;
66
+ };
67
+ global.CanvasRenderingContext2D = w.CanvasRenderingContext2D;
68
+ global.CanvasPattern = w.CanvasPattern;
69
+ global.CanvasGradient = w.CanvasGradient;
70
+ global.Path2D = w.Path2D;
71
+ global.ImageData = w.ImageData;
72
+ return w;
73
+ }
74
+ }
75
+ // Annotate the CommonJS export names for ESM import in node:
76
+ 0 && (module.exports = {
77
+ DomParserInitializer
78
+ });
79
+ //# 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;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAe;AACf,kBAAiB;AACjB,wBAA0B;AAEnB,MAAM,qBAAqB;AAAA,EAChC,YACU,eACA,wBACA,qBACR;AAHQ;AACA;AACA;AAAA,EACP;AAAA,EAEH,OAAc,SAAS,UAAkB,UAA0B;AACjE,WAAO,UAAAA,QAAG,aAAa,YAAAC,QAAK,KAAK,UAAU,QAAQ,GAAG,MAAM;AAAA,EAC9D;AAAA,EAEA,MAAM,MAAuB;AAG3B,UAAM,UAAU,YAAAA,QAAK,KAAK,KAAK,eAAe,KAAK,sBAAsB;AAEzE,UAAM,OAAO,UAAAD,QAAG,aAAa,SAAQ,MAAM;AAE3C,UAAM,QAAI,6BAAU,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": ["fs", "path"]
7
+ }
@@ -33,89 +33,101 @@ var __decorate = function(decorators, target, key, desc) {
33
33
  var __metadata = function(k, v) {
34
34
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
35
35
  };
36
+ var SymbolIntentApiServiceProxy_1;
36
37
  var _a;
37
38
  const _ = import_ApiService.ApiService;
38
- let SymbolIntentApiServiceProxy = class SymbolIntentApiServiceProxy2 {
39
+ let SymbolIntentApiServiceProxy = SymbolIntentApiServiceProxy_1 = class SymbolIntentApiServiceProxy2 {
39
40
  constructor(apiService) {
40
41
  this.apiService = apiService;
41
- console.log("-------apiService", apiService);
42
42
  }
43
- get(target, prop, receiver) {
44
- const simConfig = (0, import_SimDecorator.getSim)(target);
45
- const apiService = this.apiService;
46
- const value = Reflect.get(target, prop, receiver);
47
- if (typeof value === "function" && simConfig?.symbol) {
48
- return function(...args) {
49
- const f = value;
50
- const p = (userConfig) => {
51
- const headers = { ...userConfig?.headers ?? {}, ...(0, import_HttpHeaders.makeIntentHeaderBySymbol)(simConfig.symbol) };
52
- const method = userConfig?.method ?? "post";
53
- if (method === "post" && userConfig?.multipartFormData) {
54
- return apiService.post({
55
- target: `/${String(prop)}`,
56
- config: {
57
- bypassTransform: userConfig?.bypassTransform,
58
- transformText: userConfig?.transformText,
59
- fetch: {
60
- credentials: "include",
61
- headers,
62
- body: import_ConvertUtils.ConvertUtils.toFormData(userConfig?.body)
63
- }
64
- }
65
- });
66
- } else if (method === "post") {
67
- return apiService.postJson({
68
- target: `/${String(prop)}`,
69
- config: {
70
- bypassTransform: userConfig?.bypassTransform,
71
- transformText: userConfig?.transformText,
72
- fetch: {
73
- credentials: "include",
74
- headers,
75
- body: userConfig?.body
76
- }
77
- }
78
- });
79
- } else if (method === "petch") {
80
- return apiService.patchJson({
81
- target: `/${String(prop)}`,
82
- config: {
83
- bypassTransform: userConfig?.bypassTransform,
84
- transformText: userConfig?.transformText,
85
- fetch: {
86
- credentials: "include",
87
- headers,
88
- body: userConfig?.body
89
- }
43
+ static createHandler(apiService) {
44
+ return {
45
+ get(target, prop, receiver) {
46
+ const simConfig = (0, import_SimDecorator.getSim)(target);
47
+ const value = Reflect.get(target, prop, receiver);
48
+ if (typeof value === "function" && simConfig?.symbol) {
49
+ return function(...args) {
50
+ const f = value;
51
+ const p = (userConfig) => {
52
+ const headers = { ...userConfig?.headers ?? {}, ...(0, import_HttpHeaders.makeIntentHeaderBySymbol)(simConfig.symbol) };
53
+ const method = userConfig?.method ?? "post";
54
+ if (method === "post" && userConfig?.multipartFormData) {
55
+ return apiService.post({
56
+ target: `/${String(prop)}`,
57
+ config: {
58
+ bypassTransform: userConfig?.bypassTransform,
59
+ transformText: userConfig?.transformText,
60
+ config: userConfig?.config,
61
+ fetch: {
62
+ credentials: "include",
63
+ headers,
64
+ body: import_ConvertUtils.ConvertUtils.toFormData(userConfig?.body)
65
+ }
66
+ }
67
+ });
68
+ } else if (method === "post") {
69
+ return apiService.postJson({
70
+ target: `/${String(prop)}`,
71
+ config: {
72
+ bypassTransform: userConfig?.bypassTransform,
73
+ transformText: userConfig?.transformText,
74
+ config: userConfig?.config,
75
+ fetch: {
76
+ credentials: "include",
77
+ headers,
78
+ body: userConfig?.body
79
+ }
80
+ }
81
+ });
82
+ } else if (method === "petch") {
83
+ return apiService.patchJson({
84
+ target: `/${String(prop)}`,
85
+ config: {
86
+ bypassTransform: userConfig?.bypassTransform,
87
+ transformText: userConfig?.transformText,
88
+ config: userConfig?.config,
89
+ fetch: {
90
+ credentials: "include",
91
+ headers,
92
+ body: userConfig?.body
93
+ }
94
+ }
95
+ });
96
+ } else {
97
+ return apiService[method]({
98
+ target: { url: `/${String(prop)}`, searchParams: userConfig?.body },
99
+ config: {
100
+ bypassTransform: userConfig?.bypassTransform,
101
+ transformText: userConfig?.transformText,
102
+ config: userConfig?.config,
103
+ fetch: {
104
+ credentials: "include",
105
+ headers
106
+ }
107
+ }
108
+ });
90
109
  }
91
- });
92
- } else {
93
- return apiService[method]({
94
- // return apiService.head({
95
- target: { url: `/${String(prop)}`, searchParams: userConfig?.body },
96
- config: {
97
- bypassTransform: userConfig?.bypassTransform,
98
- transformText: userConfig?.transformText,
99
- fetch: {
100
- credentials: "include",
101
- headers
102
- }
103
- }
104
- });
105
- }
106
- };
107
- args.push(p);
108
- return Reflect.apply(f, target, args);
109
- };
110
- }
111
- return Reflect.get(target, prop, receiver);
110
+ };
111
+ args.push(p);
112
+ return Reflect.apply(f, target, args);
113
+ };
114
+ }
115
+ return Reflect.get(target, prop, receiver);
116
+ },
117
+ apply(target, thisArg, argArray) {
118
+ console.log("SymbolIntentApiServiceProxy apply");
119
+ return Reflect.apply(target, thisArg, argArray);
120
+ }
121
+ };
122
+ }
123
+ get(target, prop, receiver) {
124
+ return SymbolIntentApiServiceProxy_1.createHandler(this.apiService).get(target, prop, receiver);
112
125
  }
113
126
  apply(target, thisArg, argArray) {
114
- console.log("SymbolIntentApiServiceProxy apply");
115
- return Reflect.apply(target, thisArg, argArray);
127
+ return SymbolIntentApiServiceProxy_1.createHandler(this.apiService).apply(target, thisArg, argArray);
116
128
  }
117
129
  };
118
- SymbolIntentApiServiceProxy = __decorate([
130
+ SymbolIntentApiServiceProxy = SymbolIntentApiServiceProxy_1 = __decorate([
119
131
  import_SimDecorator.Sim,
120
132
  __metadata("design:paramtypes", [typeof (_a = typeof import_ApiService.ApiService !== "undefined" && import_ApiService.ApiService) === "function" ? _a : Object])
121
133
  ], SymbolIntentApiServiceProxy);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/proxy/SymbolIntentApiServiceProxy.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 Config<T = any> = { method?:'get' | 'post' | 'petch' | 'delete' | 'head', multipartFormData?: boolean, bypassTransform?: boolean; transformText?: boolean, headers?: HeadersInit, body?: T };\nconst _ = ApiService;\n@Sim\nexport class SymbolIntentApiServiceProxy<T extends object> implements ProxyHandler<T> {\n\n\n constructor(private apiService: ApiService) {\n console.log('-------apiService', apiService);\n }\n\n get(target: T, prop: string | symbol, receiver: any): any {\n const simConfig = getSim(target)\n const apiService = this.apiService;\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\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 // return apiService.head({\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\n\n\n // if (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 {\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 // }\n\n };\n args.push(p);\n return Reflect.apply(f, target, args);\n // return f.apply(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\n}"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA,0BAA4B;AAC5B,yBAAyC;AACzC,0BAA6B;AAC7B,wBAA2B;;;;;;;;;;;AAI3B,MAAM,IAAI;AAEH,IAAM,8BAAN,MAAMA,6BAA2B;EAGtC,YAAoB,YAAsB;AAAtB,SAAA,aAAA;AAClB,YAAQ,IAAI,qBAAqB,UAAU;EAC7C;EAEA,IAAI,QAAW,MAAuB,UAAa;AACjD,UAAM,gBAAY,4BAAO,MAAM;AAC/B,UAAM,aAAa,KAAK;AACxB,UAAM,QAAQ,QAAQ,IAAI,QAAQ,MAAM,QAAQ;AAChD,QAAI,OAAO,UAAU,cAAc,WAAW,QAAQ;AACpD,aAAO,YAAa,MAAW;AAC7B,cAAM,IAAI;AACV,cAAM,IAAI,CAAC,eAAsB;AAE/B,gBAAM,UAAU,EAAC,GAAI,YAAY,WAAW,CAAA,GAAK,OAAG,6CAAyB,UAAU,MAAgB,EAAC;AACxG,gBAAM,SAAS,YAAY,UAAU;AACrC,cAAG,WAAW,UAAU,YAAY,mBAAmB;AACrD,mBAAO,WAAW,KAAK;cACrB,QAAQ,IAAI,OAAO,IAAI,CAAC;cACxB,QAAQ;gBACN,iBAAiB,YAAY;gBAC7B,eAAe,YAAY;gBAC3B,OAAO;kBACL,aAAa;kBACb;kBACA,MAAM,iCAAa,WAAW,YAAY,IAAI;;;aAGnD;UACH,WAAW,WAAW,QAAQ;AAC5B,mBAAO,WAAW,SAAS;cACzB,QAAQ,IAAI,OAAO,IAAI,CAAC;cACxB,QAAQ;gBACN,iBAAiB,YAAY;gBAC7B,eAAe,YAAY;gBAC3B,OAAO;kBACL,aAAa;kBACb;kBACA,MAAM,YAAY;;;aAGvB;UACH,WAAU,WAAW,SAAS;AAC5B,mBAAO,WAAW,UAAU;cAC1B,QAAQ,IAAI,OAAO,IAAI,CAAC;cACxB,QAAQ;gBACN,iBAAiB,YAAY;gBAC7B,eAAe,YAAY;gBAC3B,OAAO;kBACL,aAAa;kBACb;kBACA,MAAM,YAAY;;;aAGvB;UACH,OAAO;AACL,mBAAO,WAAW,MAAM,EAAE;;cAExB,QAAQ,EAAC,KAAK,IAAI,OAAO,IAAI,CAAC,IAAI,cAAc,YAAY,KAAI;cAChE,QAAQ;gBACN,iBAAiB,YAAY;gBAC7B,eAAe,YAAY;gBAC3B,OAAO;kBACL,aAAa;kBACb;;;aAGL;UACH;QAiCF;AACA,aAAK,KAAK,CAAC;AACX,eAAO,QAAQ,MAAM,GAAG,QAAQ,IAAI;MAEtC;IACF;AACA,WAAO,QAAQ,IAAI,QAAQ,MAAM,QAAQ;EAC3C;EAEA,MAAM,QAAW,SAAc,UAAe;AAC5C,YAAQ,IAAI,mCAAmC;AAE/C,WAAO,QAAQ,MAAM,QAAQ,SAAS,QAAQ;EAChD;;AApHW,8BAA2B,WAAA;EADvC;uDAIiC,iCAAU,eAAV,kCAAU,aAAA,KAAA,MAAA,CAAA;GAH/B,2BAA2B;",
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 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\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 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 ?? {}), ...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 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 return apiService.postJson({\n target: `/${String(prop)}`,\n config: {\n bypassTransform: userConfig?.bypassTransform,\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 return apiService.patchJson({\n target: `/${String(prop)}`,\n config: {\n bypassTransform: userConfig?.bypassTransform,\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 return apiService[method]({\n target: {url: `/${String(prop)}`, searchParams: userConfig?.body},\n config: {\n bypassTransform: userConfig?.bypassTransform,\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}"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA,0BAA0B;AAC1B,yBAAuC;AACvC,0BAA2B;AAC3B,wBAAyB;;;;;;;;;;;;AAYzB,MAAM,IAAI;AAGH,IAAM,8BAA2B,gCAAjC,MAAMA,6BAA2B;EAEtC,YAAoB,YAAsB;AAAtB,SAAA,aAAA;EAEpB;EAEA,OAAO,cAAgC,YAAsB;AAC3D,WAAO;MACL,IAAI,QAAW,MAAuB,UAAa;AACjD,cAAM,gBAAY,4BAAO,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,EAAC,GAAI,YAAY,WAAW,CAAA,GAAK,OAAG,6CAAyB,UAAU,MAAgB,EAAC;AACxG,oBAAM,SAAS,YAAY,UAAU;AACrC,kBAAI,WAAW,UAAU,YAAY,mBAAmB;AACtD,uBAAO,WAAW,KAAK;kBACrB,QAAQ,IAAI,OAAO,IAAI,CAAC;kBACxB,QAAQ;oBACN,iBAAiB,YAAY;oBAC7B,eAAe,YAAY;oBAC3B,QAAQ,YAAY;oBACpB,OAAO;sBACL,aAAa;sBACb;sBACA,MAAM,iCAAa,WAAW,YAAY,IAAI;;;iBAGnD;cACH,WAAW,WAAW,QAAQ;AAC5B,uBAAO,WAAW,SAAS;kBACzB,QAAQ,IAAI,OAAO,IAAI,CAAC;kBACxB,QAAQ;oBACN,iBAAiB,YAAY;oBAC7B,eAAe,YAAY;oBAC3B,QAAQ,YAAY;oBACpB,OAAO;sBACL,aAAa;sBACb;sBACA,MAAM,YAAY;;;iBAGvB;cACH,WAAW,WAAW,SAAS;AAC7B,uBAAO,WAAW,UAAU;kBAC1B,QAAQ,IAAI,OAAO,IAAI,CAAC;kBACxB,QAAQ;oBACN,iBAAiB,YAAY;oBAC7B,eAAe,YAAY;oBAC3B,QAAQ,YAAY;oBACpB,OAAO;sBACL,aAAa;sBACb;sBACA,MAAM,YAAY;;;iBAGvB;cACH,OAAO;AACL,uBAAO,WAAW,MAAM,EAAE;kBACxB,QAAQ,EAAC,KAAK,IAAI,OAAO,IAAI,CAAC,IAAI,cAAc,YAAY,KAAI;kBAChE,QAAQ;oBACN,iBAAiB,YAAY;oBAC7B,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;;AA/FW,8BAA2B,gCAAA,WAAA;EADvC;uDAGiC,iCAAU,eAAV,kCAAU,aAAA,KAAA,MAAA,CAAA;GAF/B,2BAA2B;",
6
6
  "names": ["SymbolIntentApiServiceProxy"]
7
7
  }