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

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 (171) hide show
  1. package/README.MD +24 -209
  2. package/dist/cjs/bundle-entry.js +36 -0
  3. package/dist/cjs/bundle-entry.js.map +7 -0
  4. package/dist/cjs/codes/HttpHeaders.js.map +2 -2
  5. package/dist/cjs/filters/SSRFilter.js +5 -7
  6. package/dist/cjs/filters/SSRFilter.js.map +2 -2
  7. package/dist/cjs/filters/SSRLinkDomDomFilter.js +183 -0
  8. package/dist/cjs/filters/SSRLinkDomDomFilter.js.map +7 -0
  9. package/dist/cjs/filters/SSRWorker.js +1 -2
  10. package/dist/cjs/filters/SSRWorker.js.map +1 -1
  11. package/dist/cjs/index.js.map +2 -2
  12. package/dist/cjs/initializers/JsdomInitializer.js +1 -0
  13. package/dist/cjs/initializers/JsdomInitializer.js.map +2 -2
  14. package/dist/cjs/initializers/LinkedomInitializer.js +81 -0
  15. package/dist/cjs/initializers/LinkedomInitializer.js.map +7 -0
  16. package/dist/cjs/package.json +2 -0
  17. package/dist/cjs/proxy/SymbolIntentApiServiceProxy.js +17 -2
  18. package/dist/cjs/proxy/SymbolIntentApiServiceProxy.js.map +3 -3
  19. package/dist/esm/bundle-entry.js +9 -0
  20. package/dist/esm/bundle-entry.js.map +7 -0
  21. package/dist/esm/codes/HttpHeaders.js.map +2 -2
  22. package/dist/esm/filters/SSRFilter.js +5 -7
  23. package/dist/esm/filters/SSRFilter.js.map +2 -2
  24. package/dist/esm/filters/SSRLinkDomDomFilter.js +160 -0
  25. package/dist/esm/filters/SSRLinkDomDomFilter.js.map +7 -0
  26. package/dist/esm/filters/SSRWorker.js +1 -2
  27. package/dist/esm/filters/SSRWorker.js.map +1 -1
  28. package/dist/esm/index.js.map +2 -2
  29. package/dist/esm/initializers/JsdomInitializer.js +1 -0
  30. package/dist/esm/initializers/JsdomInitializer.js.map +2 -2
  31. package/dist/esm/initializers/LinkedomInitializer.js +48 -0
  32. package/dist/esm/initializers/LinkedomInitializer.js.map +7 -0
  33. package/dist/esm/proxy/SymbolIntentApiServiceProxy.js +18 -3
  34. package/dist/esm/proxy/SymbolIntentApiServiceProxy.js.map +3 -3
  35. package/dist/esm-bundle/dooboostore-simple-boot-http-server-ssr.esm.js +11811 -3
  36. package/dist/esm-bundle/dooboostore-simple-boot-http-server-ssr.esm.js.map +4 -4
  37. package/dist/{esm → types}/SimpleBootHttpSSRServer.d.ts +1 -1
  38. package/dist/types/bundle-entry.d.ts +9 -0
  39. package/dist/types/bundle-entry.d.ts.map +1 -0
  40. package/dist/types/codes/HttpHeaders.d.ts +45 -0
  41. package/dist/types/codes/HttpHeaders.d.ts.map +1 -0
  42. package/dist/{cjs → types}/filters/SSRFilter.d.ts.map +1 -1
  43. package/dist/{esm/filters/SSRFilter.d.ts → types/filters/SSRLinkDomDomFilter.d.ts} +4 -6
  44. package/dist/types/filters/SSRLinkDomDomFilter.d.ts.map +1 -0
  45. package/dist/{esm → types}/index.d.ts.map +1 -1
  46. package/dist/{cjs → types}/initializers/JsdomInitializer.d.ts.map +1 -1
  47. package/dist/types/initializers/LinkedomInitializer.d.ts +11 -0
  48. package/dist/types/initializers/LinkedomInitializer.d.ts.map +1 -0
  49. package/dist/{cjs → types}/proxy/SymbolIntentApiServiceProxy.d.ts.map +1 -1
  50. package/dist/umd-bundle/dooboostore-simple-boot-http-server-ssr.umd.js +11803 -6
  51. package/dist/umd-bundle/dooboostore-simple-boot-http-server-ssr.umd.js.map +4 -4
  52. package/package.json +36 -23
  53. package/src/SimpleBootHttpSSRFactory.ts +11 -0
  54. package/src/SimpleBootHttpSSRServer.ts +21 -0
  55. package/src/bundle-entry.ts +8 -0
  56. package/src/codes/HttpHeaders.ts +17 -0
  57. package/src/codes/Mimes.ts +6 -0
  58. package/src/codes/index.ts +2 -0
  59. package/src/decorators/LoadAroundBefore.ts +28 -0
  60. package/src/decorators/SaveAroundAfter.ts +27 -0
  61. package/src/decorators/index.ts +2 -0
  62. package/src/filters/IntentSchemeFilter.ts +66 -0
  63. package/src/filters/SSRFilter.ts +339 -0
  64. package/src/filters/SSRLinkDomDomFilter.ts +227 -0
  65. package/src/filters/SSRWorker.ts +76 -0
  66. package/{dist/esm/filters/index.d.ts → src/filters/index.ts} +1 -2
  67. package/src/index.ts +9 -0
  68. package/src/initializers/JsdomInitializer.ts +85 -0
  69. package/src/initializers/LinkedomInitializer.ts +69 -0
  70. package/src/initializers/index.ts +1 -0
  71. package/src/node_modules/.bin/acorn +17 -0
  72. package/src/node_modules/.bin/browserslist +17 -0
  73. package/src/node_modules/.bin/eslint +17 -0
  74. package/src/node_modules/.bin/jest +17 -0
  75. package/src/node_modules/.bin/ts-jest +17 -0
  76. package/src/node_modules/.bin/ts-node +17 -0
  77. package/src/node_modules/.bin/ts-node-cwd +17 -0
  78. package/src/node_modules/.bin/ts-node-esm +17 -0
  79. package/src/node_modules/.bin/ts-node-script +17 -0
  80. package/src/node_modules/.bin/ts-node-transpile-only +17 -0
  81. package/src/node_modules/.bin/ts-script +17 -0
  82. package/src/node_modules/.bin/tsc +17 -0
  83. package/src/node_modules/.bin/tsserver +17 -0
  84. package/src/option/HttpSSRServerOption.ts +4 -0
  85. package/src/option/index.ts +1 -0
  86. package/src/proxy/IntentSchemeFrontProxy.ts +67 -0
  87. package/src/proxy/IntentSchemeServerProxy.ts +35 -0
  88. package/src/proxy/SymbolIntentApiServiceProxy.ts +131 -0
  89. package/src/proxy/SymbolIntentApiServiceProxyBase.ts +97 -0
  90. package/{dist/esm/proxy/index.d.ts → src/proxy/index.ts} +1 -2
  91. package/tsconfig.json +24 -0
  92. package/dist/cjs/SimpleBootHttpSSRServer.d.ts +0 -9
  93. package/dist/cjs/codes/HttpHeaders.d.ts +0 -45
  94. package/dist/cjs/codes/HttpHeaders.d.ts.map +0 -1
  95. package/dist/cjs/index.d.ts.map +0 -1
  96. package/dist/esm/SimpleBootHttpSSRFactory.d.ts +0 -8
  97. package/dist/esm/SimpleBootHttpSSRFactory.d.ts.map +0 -1
  98. package/dist/esm/SimpleBootHttpSSRServer.d.ts.map +0 -1
  99. package/dist/esm/codes/HttpHeaders.d.ts +0 -45
  100. package/dist/esm/codes/HttpHeaders.d.ts.map +0 -1
  101. package/dist/esm/codes/Mimes.d.ts +0 -31
  102. package/dist/esm/codes/Mimes.d.ts.map +0 -1
  103. package/dist/esm/codes/index.d.ts +0 -3
  104. package/dist/esm/codes/index.d.ts.map +0 -1
  105. package/dist/esm/decorators/LoadAroundBefore.d.ts +0 -2
  106. package/dist/esm/decorators/LoadAroundBefore.d.ts.map +0 -1
  107. package/dist/esm/decorators/SaveAroundAfter.d.ts +0 -3
  108. package/dist/esm/decorators/SaveAroundAfter.d.ts.map +0 -1
  109. package/dist/esm/decorators/index.d.ts +0 -3
  110. package/dist/esm/decorators/index.d.ts.map +0 -1
  111. package/dist/esm/filters/IntentSchemeFilter.d.ts +0 -20
  112. package/dist/esm/filters/IntentSchemeFilter.d.ts.map +0 -1
  113. package/dist/esm/filters/SSRFilter.d.ts.map +0 -1
  114. package/dist/esm/filters/SSRWorker.d.ts +0 -16
  115. package/dist/esm/filters/SSRWorker.d.ts.map +0 -1
  116. package/dist/esm/filters/index.d.ts.map +0 -1
  117. package/dist/esm/index.d.ts +0 -3
  118. package/dist/esm/initializers/JsdomInitializer.d.ts +0 -11
  119. package/dist/esm/initializers/JsdomInitializer.d.ts.map +0 -1
  120. package/dist/esm/initializers/index.d.ts +0 -2
  121. package/dist/esm/initializers/index.d.ts.map +0 -1
  122. package/dist/esm/option/HttpSSRServerOption.d.ts +0 -4
  123. package/dist/esm/option/HttpSSRServerOption.d.ts.map +0 -1
  124. package/dist/esm/option/index.d.ts +0 -2
  125. package/dist/esm/option/index.d.ts.map +0 -1
  126. package/dist/esm/proxy/IntentSchemeFrontProxy.d.ts +0 -4
  127. package/dist/esm/proxy/IntentSchemeFrontProxy.d.ts.map +0 -1
  128. package/dist/esm/proxy/IntentSchemeServerProxy.d.ts +0 -4
  129. package/dist/esm/proxy/IntentSchemeServerProxy.d.ts.map +0 -1
  130. package/dist/esm/proxy/SymbolIntentApiServiceProxy.d.ts +0 -16
  131. package/dist/esm/proxy/SymbolIntentApiServiceProxy.d.ts.map +0 -1
  132. package/dist/esm/proxy/SymbolIntentApiServiceProxyBase.d.ts +0 -13
  133. package/dist/esm/proxy/SymbolIntentApiServiceProxyBase.d.ts.map +0 -1
  134. package/dist/esm/proxy/index.d.ts.map +0 -1
  135. /package/dist/{cjs → types}/SimpleBootHttpSSRFactory.d.ts +0 -0
  136. /package/dist/{cjs → types}/SimpleBootHttpSSRFactory.d.ts.map +0 -0
  137. /package/dist/{cjs → types}/SimpleBootHttpSSRServer.d.ts.map +0 -0
  138. /package/dist/{cjs → types}/codes/Mimes.d.ts +0 -0
  139. /package/dist/{cjs → types}/codes/Mimes.d.ts.map +0 -0
  140. /package/dist/{cjs → types}/codes/index.d.ts +0 -0
  141. /package/dist/{cjs → types}/codes/index.d.ts.map +0 -0
  142. /package/dist/{cjs → types}/decorators/LoadAroundBefore.d.ts +0 -0
  143. /package/dist/{cjs → types}/decorators/LoadAroundBefore.d.ts.map +0 -0
  144. /package/dist/{cjs → types}/decorators/SaveAroundAfter.d.ts +0 -0
  145. /package/dist/{cjs → types}/decorators/SaveAroundAfter.d.ts.map +0 -0
  146. /package/dist/{cjs → types}/decorators/index.d.ts +0 -0
  147. /package/dist/{cjs → types}/decorators/index.d.ts.map +0 -0
  148. /package/dist/{cjs → types}/filters/IntentSchemeFilter.d.ts +0 -0
  149. /package/dist/{cjs → types}/filters/IntentSchemeFilter.d.ts.map +0 -0
  150. /package/dist/{cjs → types}/filters/SSRFilter.d.ts +0 -0
  151. /package/dist/{cjs → types}/filters/SSRWorker.d.ts +0 -0
  152. /package/dist/{cjs → types}/filters/SSRWorker.d.ts.map +0 -0
  153. /package/dist/{cjs → types}/filters/index.d.ts +0 -0
  154. /package/dist/{cjs → types}/filters/index.d.ts.map +0 -0
  155. /package/dist/{cjs → types}/index.d.ts +0 -0
  156. /package/dist/{cjs → types}/initializers/JsdomInitializer.d.ts +0 -0
  157. /package/dist/{cjs → types}/initializers/index.d.ts +0 -0
  158. /package/dist/{cjs → types}/initializers/index.d.ts.map +0 -0
  159. /package/dist/{cjs → types}/option/HttpSSRServerOption.d.ts +0 -0
  160. /package/dist/{cjs → types}/option/HttpSSRServerOption.d.ts.map +0 -0
  161. /package/dist/{cjs → types}/option/index.d.ts +0 -0
  162. /package/dist/{cjs → types}/option/index.d.ts.map +0 -0
  163. /package/dist/{cjs → types}/proxy/IntentSchemeFrontProxy.d.ts +0 -0
  164. /package/dist/{cjs → types}/proxy/IntentSchemeFrontProxy.d.ts.map +0 -0
  165. /package/dist/{cjs → types}/proxy/IntentSchemeServerProxy.d.ts +0 -0
  166. /package/dist/{cjs → types}/proxy/IntentSchemeServerProxy.d.ts.map +0 -0
  167. /package/dist/{cjs → types}/proxy/SymbolIntentApiServiceProxy.d.ts +0 -0
  168. /package/dist/{cjs → types}/proxy/SymbolIntentApiServiceProxyBase.d.ts +0 -0
  169. /package/dist/{cjs → types}/proxy/SymbolIntentApiServiceProxyBase.d.ts.map +0 -0
  170. /package/dist/{cjs → types}/proxy/index.d.ts +0 -0
  171. /package/dist/{cjs → types}/proxy/index.d.ts.map +0 -0
@@ -0,0 +1,160 @@
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 { LinkedomInitializer } from "../initializers/LinkedomInitializer.js";
12
+ class SSRLinkDomDomFilter {
13
+ constructor(config, otherInstanceSim) {
14
+ this.config = config;
15
+ this.otherInstanceSim = otherInstanceSim;
16
+ this.simpleBootFrontPool = [];
17
+ this.simpleBootFrontQueue = new AsyncBlockingQueue();
18
+ // private indexHTML: string;
19
+ this.welcomUrl = "http://localhost";
20
+ this.poolGeneration = 0;
21
+ config.frontDistIndexFileName = config.frontDistIndexFileName || "index.html";
22
+ }
23
+ async onInit(app) {
24
+ for (let i = 0; i < this.config.poolOption.min; i++) {
25
+ await this.pushQueue();
26
+ }
27
+ if (this.config.poolOption.clearIntervalTime && this.config.poolOption.clearIntervalTime > 0) {
28
+ this.intervalId = setInterval(() => {
29
+ this.poolGeneration++;
30
+ }, this.config.poolOption.clearIntervalTime);
31
+ }
32
+ }
33
+ async onDestroy() {
34
+ if (this.intervalId) {
35
+ clearInterval(this.intervalId);
36
+ }
37
+ this.simpleBootFrontPool.forEach((front) => {
38
+ front.jsdom?.window.close();
39
+ });
40
+ this.simpleBootFrontPool = [];
41
+ }
42
+ async makePage() {
43
+ return new LinkedomInitializer(
44
+ this.config.frontDistPath,
45
+ this.config.frontDistIndexFileName || "index.html",
46
+ { url: this.welcomUrl }
47
+ ).run();
48
+ }
49
+ async makeFront(window) {
50
+ const name = RandomUtils.uuid();
51
+ window.ssrUse = false;
52
+ const option = this.config.factorySimFrontOption(DomRenderProxy.final(window));
53
+ const simpleBootFront = await this.config.factory.create(option, this.config.using, this.config.domExcludes);
54
+ simpleBootFront.run(this.otherInstanceSim);
55
+ simpleBootFront.generation = this.poolGeneration;
56
+ return simpleBootFront;
57
+ }
58
+ enqueueFrontApp(simpleBootFront) {
59
+ this.simpleBootFrontPool.push(simpleBootFront);
60
+ this.simpleBootFrontQueue.enqueue(simpleBootFront);
61
+ }
62
+ async pushQueue() {
63
+ if (this.simpleBootFrontPool.length < this.config.poolOption.max) {
64
+ this.enqueueFrontApp(await this.makeFront(await this.makePage()));
65
+ }
66
+ }
67
+ async proceedBefore({ rr, app }) {
68
+ if (this.config.ssrExcludeFilter?.(rr)) {
69
+ return false;
70
+ }
71
+ if (rr.reqHasAcceptHeader(Mimes.TextHtml) || rr.reqHasAcceptHeader(Mimes.All)) {
72
+ if (this.simpleBootFrontQueue.isEmpty()) {
73
+ await this.pushQueue();
74
+ }
75
+ const simpleBootFront = await this.simpleBootFrontQueue.dequeue();
76
+ try {
77
+ simpleBootFront.option.window.ssrUse = true;
78
+ delete simpleBootFront.option.window.server_side_data;
79
+ const url = rr.reqUrlObj({ host: "localhost" });
80
+ if (this.config.simpleBootFront?.notFoundError) {
81
+ const intent = await simpleBootFront.getIntent(url.pathname);
82
+ if (intent.module === void 0 && !intent.getRouterPathData(rr.reqUrlPathName)) {
83
+ throw new NotFoundError({ message: `Not Found: ${rr.reqUrlPathName}` });
84
+ }
85
+ }
86
+ const targetUrl = url.toString();
87
+ await simpleBootFront.goRouting(targetUrl);
88
+ await new Promise((r) => setTimeout(r, 0));
89
+ const data = await firstValueFrom(
90
+ // @ts-ignore
91
+ simpleBootFront.routingSubjectObservable.pipe(
92
+ // @ts-ignore
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
+ const html = this.makeHTML(simpleBootFront);
101
+ await this.writeOkHtmlAndEnd({ rr }, html);
102
+ } finally {
103
+ simpleBootFront.option.window.ssrUse = false;
104
+ delete simpleBootFront.option.window.server_side_data;
105
+ if (simpleBootFront.generation < this.poolGeneration) {
106
+ const jsdom = simpleBootFront.jsdom;
107
+ jsdom?.window.close();
108
+ const index = this.simpleBootFrontPool.indexOf(simpleBootFront);
109
+ if (index > -1) {
110
+ this.simpleBootFrontPool.splice(index, 1);
111
+ }
112
+ this.pushQueue();
113
+ } else {
114
+ this.simpleBootFrontQueue.enqueue(simpleBootFront);
115
+ }
116
+ }
117
+ return false;
118
+ } else {
119
+ return true;
120
+ }
121
+ }
122
+ makeHTML(simpleBootFront) {
123
+ simpleBootFront.option.window.document.querySelectorAll("*").forEach((el) => {
124
+ Array.from(el.attributes).forEach((attr) => {
125
+ if (/^dr-/.test(attr.name) || /^domstyle/.test(attr.name) || /this-path/.test(attr.name)) {
126
+ el.removeAttribute(attr.name);
127
+ }
128
+ });
129
+ });
130
+ let html = simpleBootFront.option.window.document.documentElement.outerHTML;
131
+ html = "<!DOCTYPE html>" + html;
132
+ html = html.replace(/\$\{[\s\S]*?\}\$/g, "");
133
+ const serverSideData = simpleBootFront.option.window.server_side_data;
134
+ if (serverSideData) {
135
+ const data = Object.entries(serverSideData).map(([k, v]) => {
136
+ if (typeof v === "string") {
137
+ return `window.server_side_data.${k} = ${v}`;
138
+ } else {
139
+ return `window.server_side_data.${k} = ${JSON.stringify(v)}`;
140
+ }
141
+ }).join(";");
142
+ if (data) {
143
+ html = html.replace("</head>", `<script> window.server_side_data={}; ${data}; </script></head>`);
144
+ }
145
+ }
146
+ return html;
147
+ }
148
+ async writeOkHtmlAndEnd({ rr, status = HttpStatus.Ok }, html) {
149
+ rr.resStatusCode(status);
150
+ rr.resSetHeader(HttpHeaders.ContentType, Mimes.TextHtml);
151
+ await rr.resEnd(html);
152
+ }
153
+ async proceedAfter({ rr, app }) {
154
+ return true;
155
+ }
156
+ }
157
+ export {
158
+ SSRLinkDomDomFilter
159
+ };
160
+ //# sourceMappingURL=SSRLinkDomDomFilter.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/filters/SSRLinkDomDomFilter.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 { JsdomInitializer } from '../initializers/JsdomInitializer';\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 { firstValueFrom } from '@dooboostore/core/message/internal/firstValueFrom';\nimport { parseHTML } from 'linkedom';\nimport { LinkedomInitializer } from '../initializers/LinkedomInitializer';\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 SSRLinkDomDomFilter 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 return new LinkedomInitializer(\n this.config.frontDistPath,\n this.config.frontDistIndexFileName || 'index.html',\n { url: this.welcomUrl }\n ).run();\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 await simpleBootFront.goRouting(targetUrl);\n await new Promise(r => setTimeout(r, 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\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 // @ts-ignore\n simpleBootFront.routingSubjectObservable.pipe(\n // @ts-ignore\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 const html = this.makeHTML(simpleBootFront);\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 html = '<!DOCTYPE html>' + html;\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
+ }
@@ -4,9 +4,8 @@ class SSRWorker {
4
4
  constructor(factory, otherInstanceSim) {
5
5
  this.factory = factory;
6
6
  this.otherInstanceSim = otherInstanceSim;
7
+ this.welcomUrl = "http://localhost";
7
8
  }
8
- welcomUrl = "http://localhost";
9
- simpleBootFront;
10
9
  async run() {
11
10
  this.simpleBootFront = await this.makeFront();
12
11
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/filters/SSRWorker.ts"],
4
4
  "sourcesContent": ["import { ConstructorType } from '@dooboostore/core/types';\nimport {FactoryAndParams} from './SSRFilter';\nimport {JsdomInitializer} from '../initializers/JsdomInitializer';\nimport JSDOM from 'jsdom';\nimport {RandomUtils} from '@dooboostore/core/random/RandomUtils';\nimport {SimpleBootFront} from '@dooboostore/simple-boot-front/SimpleBootFront';\n\nexport class SSRWorker {\n public welcomUrl = 'http://localhost'\n private simpleBootFront?: SimpleBootFront;\n\n constructor(public factory: FactoryAndParams, public otherInstanceSim?: Map<ConstructorType<any>, any>) {\n\n }\n\n async run() {\n this.simpleBootFront = await this.makeFront();\n }\n\n async makeJsdom() {\n const jsdom = await new JsdomInitializer(this.factory.frontDistPath, this.factory.frontDistIndexFileName || 'index.html', {url: this.welcomUrl}).run();\n return jsdom;\n }\n\n async makeFront(jsdom?: JSDOM.JSDOM) {\n if (!jsdom) {\n jsdom = await this.makeJsdom();\n }\n const name = RandomUtils.uuid();\n // const jsdom = await this.makeJsdom();\n const window = jsdom.window as unknown as Window & typeof globalThis;\n (window as any).ssrUse = false;\n const option = this.factory.factorySimFrontOption(window);\n // option.name = name;\n const simpleBootFront = await this.factory.factory.create(option, this.factory.using, this.factory.domExcludes);\n simpleBootFront.run(this.otherInstanceSim);\n (simpleBootFront as any).jsdom = jsdom;\n return simpleBootFront;\n }\n\n\n async getHtml(url: string) {\n if (this.simpleBootFront && (this.simpleBootFront.option.window as any).ssrUse) {\n\n } else if (this.simpleBootFront) {\n (this.simpleBootFront.option.window as any).ssrUse = true;\n delete (this.simpleBootFront.option.window as any).server_side_data;\n\n // run\n await this.simpleBootFront.goRouting(url);\n let html = this.simpleBootFront.option.window.document.documentElement.outerHTML;\n\n const serverSideData = (this.simpleBootFront.option.window as any).server_side_data;\n if (serverSideData) {\n const data = Object.entries(serverSideData).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 }).join(';');\n if (data) {\n html = html.replace('</head>', `<script> window.server_side_data={}; ${data}; </script></head>`);\n }\n }\n\n this.makeFront().then(it => {\n this.simpleBootFront = it;\n });\n return html;\n } {\n\n }\n\n }\n}"],
5
- "mappings": "AAEA,SAAQ,wBAAuB;AAE/B,SAAQ,mBAAkB;AAGnB,MAAM,UAAU;AAAA,EAInB,YAAmB,SAAkC,kBAAmD;AAArF;AAAkC;AAAA,EAErD;AAAA,EALO,YAAY;AAAA,EACX;AAAA,EAMR,MAAM,MAAM;AACR,SAAK,kBAAkB,MAAM,KAAK,UAAU;AAAA,EAChD;AAAA,EAEA,MAAM,YAAY;AACd,UAAM,QAAQ,MAAM,IAAI,iBAAiB,KAAK,QAAQ,eAAe,KAAK,QAAQ,0BAA0B,cAAc,EAAC,KAAK,KAAK,UAAS,CAAC,EAAE,IAAI;AACrJ,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,UAAU,OAAqB;AACjC,QAAI,CAAC,OAAO;AACR,cAAQ,MAAM,KAAK,UAAU;AAAA,IACjC;AACA,UAAM,OAAO,YAAY,KAAK;AAE9B,UAAM,SAAS,MAAM;AACrB,IAAC,OAAe,SAAS;AACzB,UAAM,SAAS,KAAK,QAAQ,sBAAsB,MAAM;AAExD,UAAM,kBAAkB,MAAM,KAAK,QAAQ,QAAQ,OAAO,QAAQ,KAAK,QAAQ,OAAO,KAAK,QAAQ,WAAW;AAC9G,oBAAgB,IAAI,KAAK,gBAAgB;AACzC,IAAC,gBAAwB,QAAQ;AACjC,WAAO;AAAA,EACX;AAAA,EAGA,MAAM,QAAQ,KAAa;AACvB,QAAI,KAAK,mBAAoB,KAAK,gBAAgB,OAAO,OAAe,QAAQ;AAAA,IAEhF,WAAW,KAAK,iBAAiB;AAC7B,MAAC,KAAK,gBAAgB,OAAO,OAAe,SAAS;AACrD,aAAQ,KAAK,gBAAgB,OAAO,OAAe;AAGnD,YAAM,KAAK,gBAAgB,UAAU,GAAG;AACxC,UAAI,OAAO,KAAK,gBAAgB,OAAO,OAAO,SAAS,gBAAgB;AAEvE,YAAM,iBAAkB,KAAK,gBAAgB,OAAO,OAAe;AACnE,UAAI,gBAAgB;AAChB,cAAM,OAAO,OAAO,QAAQ,cAAc,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM;AACxD,cAAI,OAAO,MAAM,UAAU;AACvB,mBAAO,2BAA2B,CAAC,MAAM,CAAC;AAAA,UAC9C,OAAO;AACH,mBAAO,2BAA2B,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;AAAA,UAC9D;AAAA,QACJ,CAAC,EAAE,KAAK,GAAG;AACX,YAAI,MAAM;AACN,iBAAO,KAAK,QAAQ,WAAW,wCAAwC,IAAI,oBAAoB;AAAA,QACnG;AAAA,MACJ;AAEA,WAAK,UAAU,EAAE,KAAK,QAAM;AACxB,aAAK,kBAAkB;AAAA,MAC3B,CAAC;AACD,aAAO;AAAA,IACX;AAAE;AAAA,IAEF;AAAA,EAEJ;AACJ;",
5
+ "mappings": "AAEA,SAAQ,wBAAuB;AAE/B,SAAQ,mBAAkB;AAGnB,MAAM,UAAU;AAAA,EAInB,YAAmB,SAAkC,kBAAmD;AAArF;AAAkC;AAHrD,SAAO,YAAY;AAAA,EAKnB;AAAA,EAEA,MAAM,MAAM;AACR,SAAK,kBAAkB,MAAM,KAAK,UAAU;AAAA,EAChD;AAAA,EAEA,MAAM,YAAY;AACd,UAAM,QAAQ,MAAM,IAAI,iBAAiB,KAAK,QAAQ,eAAe,KAAK,QAAQ,0BAA0B,cAAc,EAAC,KAAK,KAAK,UAAS,CAAC,EAAE,IAAI;AACrJ,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,UAAU,OAAqB;AACjC,QAAI,CAAC,OAAO;AACR,cAAQ,MAAM,KAAK,UAAU;AAAA,IACjC;AACA,UAAM,OAAO,YAAY,KAAK;AAE9B,UAAM,SAAS,MAAM;AACrB,IAAC,OAAe,SAAS;AACzB,UAAM,SAAS,KAAK,QAAQ,sBAAsB,MAAM;AAExD,UAAM,kBAAkB,MAAM,KAAK,QAAQ,QAAQ,OAAO,QAAQ,KAAK,QAAQ,OAAO,KAAK,QAAQ,WAAW;AAC9G,oBAAgB,IAAI,KAAK,gBAAgB;AACzC,IAAC,gBAAwB,QAAQ;AACjC,WAAO;AAAA,EACX;AAAA,EAGA,MAAM,QAAQ,KAAa;AACvB,QAAI,KAAK,mBAAoB,KAAK,gBAAgB,OAAO,OAAe,QAAQ;AAAA,IAEhF,WAAW,KAAK,iBAAiB;AAC7B,MAAC,KAAK,gBAAgB,OAAO,OAAe,SAAS;AACrD,aAAQ,KAAK,gBAAgB,OAAO,OAAe;AAGnD,YAAM,KAAK,gBAAgB,UAAU,GAAG;AACxC,UAAI,OAAO,KAAK,gBAAgB,OAAO,OAAO,SAAS,gBAAgB;AAEvE,YAAM,iBAAkB,KAAK,gBAAgB,OAAO,OAAe;AACnE,UAAI,gBAAgB;AAChB,cAAM,OAAO,OAAO,QAAQ,cAAc,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM;AACxD,cAAI,OAAO,MAAM,UAAU;AACvB,mBAAO,2BAA2B,CAAC,MAAM,CAAC;AAAA,UAC9C,OAAO;AACH,mBAAO,2BAA2B,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;AAAA,UAC9D;AAAA,QACJ,CAAC,EAAE,KAAK,GAAG;AACX,YAAI,MAAM;AACN,iBAAO,KAAK,QAAQ,WAAW,wCAAwC,IAAI,oBAAoB;AAAA,QACnG;AAAA,MACJ;AAEA,WAAK,UAAU,EAAE,KAAK,QAAM;AACxB,aAAK,kBAAkB;AAAA,MAC3B,CAAC;AACD,aAAO;AAAA,IACX;AAAE;AAAA,IAEF;AAAA,EAEJ;AACJ;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "sourcesContent": ["// export * from './SimpleBootHttpSSRFactory';\n// export * from './SimpleBootHttpSSRServer';\n// export * from './codes';\n// export * from './decorators';\n// export * from './filters';\n// export * from './initializers';\n// export * from './option';\n// export * from './proxy';\nexport default {\n\n}"],
5
- "mappings": "AAQA,IAAO,cAAQ,CAEf;",
4
+ "sourcesContent": ["// export * from './codes';\n// export * from './decorators';\n// export * from './filters';\n// export * from './initializers';\n// export * from './option';\n// export * from './proxy';\n// export * from './SimpleBootHttpSSRFactory';\n// export * from './SimpleBootHttpSSRServer';\nexport default {}"],
5
+ "mappings": "AAQA,IAAO,cAAQ,CAAC;",
6
6
  "names": []
7
7
  }
@@ -28,6 +28,7 @@ class JsdomInitializer {
28
28
  global.IntersectionObserver = jsdom.window.IntersectionObserver;
29
29
  global.NodeFilter = jsdom.window.NodeFilter;
30
30
  global.Node = jsdom.window.Node;
31
+ global.DocumentFragment = jsdom.window.DocumentFragment;
31
32
  global.HTMLElement = jsdom.window.HTMLElement;
32
33
  global.HTMLMetaElement = jsdom.window.HTMLMetaElement;
33
34
  global.Element = jsdom.window.Element;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/initializers/JsdomInitializer.ts"],
4
- "sourcesContent": ["import * as JSDOM from 'jsdom';\nimport { ReconfigureSettings } from 'jsdom';\nimport fs from 'fs';\nimport path from 'path';\n\nexport class JsdomInitializer {\n constructor(\n private frontDistPath: string,\n private frontDistIndexFileName: string,\n private reconfigureSettings?: ReconfigureSettings\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<JSDOM.JSDOM> {\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 jsdom = await JSDOM.JSDOM.fromFile(pathStr, {});\n if (this.reconfigureSettings) {\n jsdom.reconfigure(this.reconfigureSettings);\n }\n // devDependencies\n // \"@types/jsdom\": \"^21.1.2\",\n // \"canvas\": \"^3.1.0\",\n // global setting\n // @ts-ignore\n global.document = jsdom.window.document;\n // @ts-ignore\n global.window = jsdom.window as unknown as Window & typeof globalThis;\n // @ts-ignore\n global.window.requestAnimationFrame = () => {};\n global.window.scrollTo = () => {};\n // const originalPushState = global.window.history.pushState;\n // global.window.history.pushState = (data: any,title: any,path: string) => {\n // console.log('----iida',path)\n // path.replace()\n //\n // let s = `${UrlUtils.origin(global.window.location.href)}${path?`${path}`:''}`;\n // console.log('----da',s)\n // originalPushState.apply(global.window.history, [data, title, s]);\n // }\n // const originalReplaceState = global.window.history.replaceState;\n // global.window.history.replaceState = (data: any,title: any,path: string) => {\n // let s = `${UrlUtils.origin(global.window.location.href)}${path?`${path}`:''}`;\n // originalReplaceState.apply(global.window.history, [data, title, s]);\n // }\n // const dummyResponse = {ok: false, json: () => Promise.resolve({})}; // as Response;\n // global.fetch = (...data: any): Promise<any> => {\n // console.log('dummy fetch')\n // return Promise.resolve(dummyResponse)\n // };\n // @ts-ignore\n global.history = jsdom.window.history;\n global.Event = jsdom.window.Event;\n // @ts-ignore\n global.PopStateEvent = jsdom.window.Event;\n global.IntersectionObserver = jsdom.window.IntersectionObserver;\n // @ts-ignore\n // global.Error = ErrorBase;\n // @ts-ignore\n // global.navigator = jsdom.window.navigator;\n global.NodeFilter = jsdom.window.NodeFilter;\n global.Node = jsdom.window.Node;\n global.HTMLElement = jsdom.window.HTMLElement;\n global.HTMLMetaElement = jsdom.window.HTMLMetaElement;\n global.Element = jsdom.window.Element;\n global.HTMLCanvasElement = jsdom.window.HTMLCanvasElement;\n global.HTMLCanvasElement.prototype.getContext = () => {\n return null;\n };\n global.CanvasRenderingContext2D = jsdom.window.CanvasRenderingContext2D;\n global.CanvasPattern = jsdom.window.CanvasPattern;\n global.CanvasGradient = jsdom.window.CanvasGradient;\n global.Path2D = jsdom.window.Path2D;\n global.ImageData = jsdom.window.ImageData;\n return jsdom;\n }\n}\n//\n// export default new JsdomInitializer();\n"],
5
- "mappings": "AAAA,YAAY,WAAW;AAEvB,OAAO,QAAQ;AACf,OAAO,UAAU;AAEV,MAAM,iBAAiB;AAAA,EAC5B,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,MAA4B;AAGhC,UAAM,UAAU,KAAK,KAAK,KAAK,eAAe,KAAK,sBAAsB;AAEzE,UAAM,QAAQ,MAAM,MAAM,MAAM,SAAS,SAAS,CAAC,CAAC;AACpD,QAAI,KAAK,qBAAqB;AAC5B,YAAM,YAAY,KAAK,mBAAmB;AAAA,IAC5C;AAMA,WAAO,WAAW,MAAM,OAAO;AAE/B,WAAO,SAAS,MAAM;AAEtB,WAAO,OAAO,wBAAwB,MAAM;AAAA,IAAC;AAC7C,WAAO,OAAO,WAAW,MAAM;AAAA,IAAC;AAqBhC,WAAO,UAAU,MAAM,OAAO;AAC9B,WAAO,QAAQ,MAAM,OAAO;AAE5B,WAAO,gBAAgB,MAAM,OAAO;AACpC,WAAO,uBAAuB,MAAM,OAAO;AAK3C,WAAO,aAAa,MAAM,OAAO;AACjC,WAAO,OAAO,MAAM,OAAO;AAC3B,WAAO,cAAc,MAAM,OAAO;AAClC,WAAO,kBAAkB,MAAM,OAAO;AACtC,WAAO,UAAU,MAAM,OAAO;AAC9B,WAAO,oBAAoB,MAAM,OAAO;AACxC,WAAO,kBAAkB,UAAU,aAAa,MAAM;AACpD,aAAO;AAAA,IACT;AACA,WAAO,2BAA2B,MAAM,OAAO;AAC/C,WAAO,gBAAgB,MAAM,OAAO;AACpC,WAAO,iBAAiB,MAAM,OAAO;AACrC,WAAO,SAAS,MAAM,OAAO;AAC7B,WAAO,YAAY,MAAM,OAAO;AAChC,WAAO;AAAA,EACT;AACF;",
4
+ "sourcesContent": ["import * as JSDOM from 'jsdom';\nimport { ReconfigureSettings } from 'jsdom';\nimport fs from 'fs';\nimport path from 'path';\n\nexport class JsdomInitializer {\n constructor(\n private frontDistPath: string,\n private frontDistIndexFileName: string,\n private reconfigureSettings?: ReconfigureSettings\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<JSDOM.JSDOM> {\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 jsdom = await JSDOM.JSDOM.fromFile(pathStr, {});\n if (this.reconfigureSettings) {\n jsdom.reconfigure(this.reconfigureSettings);\n }\n // devDependencies\n // \"@types/jsdom\": \"^21.1.2\",\n // \"canvas\": \"^3.1.0\",\n // global setting\n // @ts-ignore\n global.document = jsdom.window.document;\n // @ts-ignore\n global.window = jsdom.window as unknown as Window & typeof globalThis;\n // @ts-ignore\n global.window.requestAnimationFrame = () => {};\n global.window.scrollTo = () => {};\n // const originalPushState = global.window.history.pushState;\n // global.window.history.pushState = (data: any,title: any,path: string) => {\n // console.log('----iida',path)\n // path.replace()\n //\n // let s = `${UrlUtils.origin(global.window.location.href)}${path?`${path}`:''}`;\n // console.log('----da',s)\n // originalPushState.apply(global.window.history, [data, title, s]);\n // }\n // const originalReplaceState = global.window.history.replaceState;\n // global.window.history.replaceState = (data: any,title: any,path: string) => {\n // let s = `${UrlUtils.origin(global.window.location.href)}${path?`${path}`:''}`;\n // originalReplaceState.apply(global.window.history, [data, title, s]);\n // }\n // const dummyResponse = {ok: false, json: () => Promise.resolve({})}; // as Response;\n // global.fetch = (...data: any): Promise<any> => {\n // console.log('dummy fetch')\n // return Promise.resolve(dummyResponse)\n // };\n // @ts-ignore\n global.history = jsdom.window.history;\n global.Event = jsdom.window.Event;\n // @ts-ignore\n global.PopStateEvent = jsdom.window.Event;\n global.IntersectionObserver = jsdom.window.IntersectionObserver;\n // @ts-ignore\n // global.Error = ErrorBase;\n // @ts-ignore\n // global.navigator = jsdom.window.navigator;\n global.NodeFilter = jsdom.window.NodeFilter;\n global.Node = jsdom.window.Node;\n global.DocumentFragment = jsdom.window.DocumentFragment;\n global.HTMLElement = jsdom.window.HTMLElement;\n global.HTMLMetaElement = jsdom.window.HTMLMetaElement;\n global.Element = jsdom.window.Element;\n global.HTMLCanvasElement = jsdom.window.HTMLCanvasElement;\n global.HTMLCanvasElement.prototype.getContext = () => {\n return null;\n };\n global.CanvasRenderingContext2D = jsdom.window.CanvasRenderingContext2D;\n global.CanvasPattern = jsdom.window.CanvasPattern;\n global.CanvasGradient = jsdom.window.CanvasGradient;\n global.Path2D = jsdom.window.Path2D;\n global.ImageData = jsdom.window.ImageData;\n return jsdom;\n }\n}\n//\n// export default new JsdomInitializer();\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;AAEvB,OAAO,QAAQ;AACf,OAAO,UAAU;AAEV,MAAM,iBAAiB;AAAA,EAC5B,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,MAA4B;AAGhC,UAAM,UAAU,KAAK,KAAK,KAAK,eAAe,KAAK,sBAAsB;AAEzE,UAAM,QAAQ,MAAM,MAAM,MAAM,SAAS,SAAS,CAAC,CAAC;AACpD,QAAI,KAAK,qBAAqB;AAC5B,YAAM,YAAY,KAAK,mBAAmB;AAAA,IAC5C;AAMA,WAAO,WAAW,MAAM,OAAO;AAE/B,WAAO,SAAS,MAAM;AAEtB,WAAO,OAAO,wBAAwB,MAAM;AAAA,IAAC;AAC7C,WAAO,OAAO,WAAW,MAAM;AAAA,IAAC;AAqBhC,WAAO,UAAU,MAAM,OAAO;AAC9B,WAAO,QAAQ,MAAM,OAAO;AAE5B,WAAO,gBAAgB,MAAM,OAAO;AACpC,WAAO,uBAAuB,MAAM,OAAO;AAK3C,WAAO,aAAa,MAAM,OAAO;AACjC,WAAO,OAAO,MAAM,OAAO;AAC3B,WAAO,mBAAmB,MAAM,OAAO;AACvC,WAAO,cAAc,MAAM,OAAO;AAClC,WAAO,kBAAkB,MAAM,OAAO;AACtC,WAAO,UAAU,MAAM,OAAO;AAC9B,WAAO,oBAAoB,MAAM,OAAO;AACxC,WAAO,kBAAkB,UAAU,aAAa,MAAM;AACpD,aAAO;AAAA,IACT;AACA,WAAO,2BAA2B,MAAM,OAAO;AAC/C,WAAO,gBAAgB,MAAM,OAAO;AACpC,WAAO,iBAAiB,MAAM,OAAO;AACrC,WAAO,SAAS,MAAM,OAAO;AAC7B,WAAO,YAAY,MAAM,OAAO;AAChC,WAAO;AAAA,EACT;AACF;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,48 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { parseHTML } from "linkedom";
4
+ class LinkedomInitializer {
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);
17
+ global.document = w.document;
18
+ global.window = w;
19
+ global.window.requestAnimationFrame = () => {
20
+ };
21
+ global.window.scrollTo = () => {
22
+ };
23
+ global.history = w.history;
24
+ global.Event = w.Event;
25
+ global.PopStateEvent = w.Event;
26
+ global.IntersectionObserver = w.IntersectionObserver;
27
+ global.NodeFilter = w.NodeFilter;
28
+ global.Node = w.Node;
29
+ global.DocumentFragment = w.DocumentFragment;
30
+ global.HTMLElement = w.HTMLElement;
31
+ global.HTMLMetaElement = w.HTMLMetaElement;
32
+ global.Element = w.Element;
33
+ global.HTMLCanvasElement = w.HTMLCanvasElement;
34
+ global.HTMLCanvasElement.prototype.getContext = () => {
35
+ return null;
36
+ };
37
+ global.CanvasRenderingContext2D = w.CanvasRenderingContext2D;
38
+ global.CanvasPattern = w.CanvasPattern;
39
+ global.CanvasGradient = w.CanvasGradient;
40
+ global.Path2D = w.Path2D;
41
+ global.ImageData = w.ImageData;
42
+ return w;
43
+ }
44
+ }
45
+ export {
46
+ LinkedomInitializer
47
+ };
48
+ //# sourceMappingURL=LinkedomInitializer.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/initializers/LinkedomInitializer.ts"],
4
+ "sourcesContent": ["import fs from 'fs';\nimport path from 'path';\nimport { parseHTML } from 'linkedom';\n\nexport class LinkedomInitializer {\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);\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,oBAAoB;AAAA,EAC/B,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,IAAI;AAUxB,WAAO,WAAW,EAAE;AAEpB,WAAO,SAAS;AAEhB,WAAO,OAAO,wBAAwB,MAAM;AAAA,IAAC;AAC7C,WAAO,OAAO,WAAW,MAAM;AAAA,IAAC;AAEhC,WAAO,UAAU,EAAE;AACnB,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
+ }
@@ -1,11 +1,22 @@
1
- import { getSim } from "@dooboostore/simple-boot/decorators/SimDecorator";
1
+ var __decorate = function(decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = function(k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var _a;
11
+ import { getSim, Sim } from "@dooboostore/simple-boot/decorators/SimDecorator";
2
12
  import { makeIntentHeaderBySymbol } from "../codes/HttpHeaders.js";
3
13
  import { ConvertUtils } from "@dooboostore/core/convert/ConvertUtils";
4
14
  import { ApiService } from "@dooboostore/simple-boot/fetch/ApiService";
5
15
  const _ = ApiService;
6
- class SymbolIntentApiServiceProxy {
16
+ let SymbolIntentApiServiceProxy = class SymbolIntentApiServiceProxy2 {
7
17
  constructor(apiService) {
8
18
  this.apiService = apiService;
19
+ console.log("-------apiService", apiService);
9
20
  }
10
21
  get(target, prop, receiver) {
11
22
  const simConfig = getSim(target);
@@ -81,7 +92,11 @@ class SymbolIntentApiServiceProxy {
81
92
  console.log("SymbolIntentApiServiceProxy apply");
82
93
  return Reflect.apply(target, thisArg, argArray);
83
94
  }
84
- }
95
+ };
96
+ SymbolIntentApiServiceProxy = __decorate([
97
+ Sim,
98
+ __metadata("design:paramtypes", [typeof (_a = typeof ApiService !== "undefined" && ApiService) === "function" ? _a : Object])
99
+ ], SymbolIntentApiServiceProxy);
85
100
  export {
86
101
  SymbolIntentApiServiceProxy
87
102
  };
@@ -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';\nimport { Inject } from '@dooboostore/simple-boot/decorators/inject/Inject';\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 }\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,SAAS,cAAmB;AAC5B,SAAS,gCAAgC;AACzC,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAK3B,MAAM,IAAI;AAEH,MAAM,4BAAyE;AAAA,EAGpF,YAAoB,YAAwB;AAAxB;AAAA,EACpB;AAAA,EAEA,IAAI,QAAW,MAAuB,UAAoB;AACxD,UAAM,YAAY,OAAO,MAAM;AAC/B,UAAM,aAAa,KAAK;AACxB,UAAM,QAAQ,QAAQ,IAAI,QAAQ,MAAM,QAAQ;AAChD,QAAI,OAAO,UAAU,cAAc,WAAW,QAAQ;AACpD,aAAO,YAAa,MAAa;AAC/B,cAAM,IAAI;AACV,cAAM,IAAI,CAAC,eAAuB;AAEhC,gBAAM,UAAU,EAAC,GAAI,YAAY,WAAW,CAAC,GAAI,GAAG,yBAAyB,UAAU,MAAgB,EAAC;AACxG,gBAAM,SAAS,YAAY,UAAU;AACrC,cAAG,WAAW,UAAU,YAAY,mBAAmB;AACrD,mBAAO,WAAW,KAAK;AAAA,cACrB,QAAQ,IAAI,OAAO,IAAI,CAAC;AAAA,cACxB,QAAQ;AAAA,gBACN,iBAAiB,YAAY;AAAA,gBAC7B,eAAe,YAAY;AAAA,gBAC3B,OAAO;AAAA,kBACL,aAAa;AAAA,kBACb;AAAA,kBACA,MAAM,aAAa,WAAW,YAAY,IAAI;AAAA,gBAChD;AAAA,cACF;AAAA,YACF,CAAC;AAAA,UACH,WAAW,WAAW,QAAQ;AAC5B,mBAAO,WAAW,SAAS;AAAA,cACzB,QAAQ,IAAI,OAAO,IAAI,CAAC;AAAA,cACxB,QAAQ;AAAA,gBACN,iBAAiB,YAAY;AAAA,gBAC7B,eAAe,YAAY;AAAA,gBAC3B,OAAO;AAAA,kBACL,aAAa;AAAA,kBACb;AAAA,kBACA,MAAM,YAAY;AAAA,gBACpB;AAAA,cACF;AAAA,YACF,CAAC;AAAA,UACH,WAAU,WAAW,SAAS;AAC5B,mBAAO,WAAW,UAAU;AAAA,cAC1B,QAAQ,IAAI,OAAO,IAAI,CAAC;AAAA,cACxB,QAAQ;AAAA,gBACN,iBAAiB,YAAY;AAAA,gBAC7B,eAAe,YAAY;AAAA,gBAC3B,OAAO;AAAA,kBACL,aAAa;AAAA,kBACb;AAAA,kBACA,MAAM,YAAY;AAAA,gBACpB;AAAA,cACF;AAAA,YACF,CAAC;AAAA,UACH,OAAO;AACL,mBAAO,WAAW,MAAM,EAAE;AAAA;AAAA,cAExB,QAAQ,EAAC,KAAK,IAAI,OAAO,IAAI,CAAC,IAAI,cAAc,YAAY,KAAI;AAAA,cAChE,QAAQ;AAAA,gBACN,iBAAiB,YAAY;AAAA,gBAC7B,eAAe,YAAY;AAAA,gBAC3B,OAAO;AAAA,kBACL,aAAa;AAAA,kBACb;AAAA,gBACF;AAAA,cACF;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QAiCF;AACA,aAAK,KAAK,CAAC;AACX,eAAO,QAAQ,MAAM,GAAG,QAAQ,IAAI;AAAA,MAEtC;AAAA,IACF;AACA,WAAO,QAAQ,IAAI,QAAQ,MAAM,QAAQ;AAAA,EAC3C;AAAA,EAEA,MAAM,QAAW,SAAc,UAAsB;AACnD,YAAQ,IAAI,mCAAmC;AAE/C,WAAO,QAAQ,MAAM,QAAQ,SAAS,QAAQ;AAAA,EAChD;AAKF;",
6
- "names": []
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,SAAS,QAAQ,WAAW;AAC5B,SAAS,gCAAgC;AACzC,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;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,YAAY,OAAO,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,GAAG,yBAAyB,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,aAAa,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,eAAU,eAAV,gBAAU,aAAA,KAAA,MAAA,CAAA;GAH/B,2BAA2B;",
6
+ "names": ["SymbolIntentApiServiceProxy"]
7
7
  }