@dooboostore/simple-boot-http-server-ssr 1.0.9 → 1.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +7 -0
- package/dist/cjs/SimpleBootHttpSSRFactory.d.ts.map +1 -0
- package/dist/cjs/SimpleBootHttpSSRFactory.js +33 -0
- package/dist/cjs/SimpleBootHttpSSRFactory.js.map +7 -0
- package/{SimpleBootHttpSSRServer.d.ts → dist/cjs/SimpleBootHttpSSRServer.d.ts} +2 -2
- package/dist/cjs/SimpleBootHttpSSRServer.d.ts.map +1 -0
- package/dist/cjs/SimpleBootHttpSSRServer.js +41 -0
- package/dist/cjs/SimpleBootHttpSSRServer.js.map +7 -0
- package/dist/cjs/codes/HttpHeaders.d.ts.map +1 -0
- package/dist/cjs/codes/HttpHeaders.js +41 -0
- package/dist/cjs/codes/HttpHeaders.js.map +7 -0
- package/dist/cjs/codes/Mimes.d.ts.map +1 -0
- package/dist/cjs/codes/Mimes.js +33 -0
- package/dist/cjs/codes/Mimes.js.map +7 -0
- package/dist/cjs/codes/index.d.ts +3 -0
- package/dist/cjs/codes/index.d.ts.map +1 -0
- package/dist/cjs/codes/index.js +24 -0
- package/dist/cjs/codes/index.js.map +7 -0
- package/dist/cjs/decorators/LoadAroundBefore.d.ts.map +1 -0
- package/dist/cjs/decorators/LoadAroundBefore.js +54 -0
- package/dist/cjs/decorators/LoadAroundBefore.js.map +7 -0
- package/dist/cjs/decorators/SaveAroundAfter.d.ts.map +1 -0
- package/dist/cjs/decorators/SaveAroundAfter.js +53 -0
- package/dist/cjs/decorators/SaveAroundAfter.js.map +7 -0
- package/dist/cjs/decorators/index.d.ts +3 -0
- package/dist/cjs/decorators/index.d.ts.map +1 -0
- package/dist/cjs/decorators/index.js +24 -0
- package/dist/cjs/decorators/index.js.map +7 -0
- package/dist/cjs/filters/IntentSchemeFilter.d.ts.map +1 -0
- package/dist/cjs/filters/IntentSchemeFilter.js +92 -0
- package/dist/cjs/filters/IntentSchemeFilter.js.map +7 -0
- package/{filters → dist/cjs/filters}/SSRFilter.d.ts +5 -0
- package/dist/cjs/filters/SSRFilter.d.ts.map +1 -0
- package/dist/cjs/filters/SSRFilter.js +204 -0
- package/dist/cjs/filters/SSRFilter.js.map +7 -0
- package/dist/cjs/filters/SSRWorker.d.ts.map +1 -0
- package/dist/cjs/filters/SSRWorker.js +85 -0
- package/dist/cjs/filters/SSRWorker.js.map +7 -0
- package/dist/cjs/filters/index.d.ts +4 -0
- package/dist/cjs/filters/index.d.ts.map +1 -0
- package/dist/cjs/filters/index.js +26 -0
- package/dist/cjs/filters/index.js.map +7 -0
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +24 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/initializers/JsdomInitializer.d.ts.map +1 -0
- package/dist/cjs/initializers/JsdomInitializer.js +82 -0
- package/dist/cjs/initializers/JsdomInitializer.js.map +7 -0
- package/dist/cjs/initializers/index.d.ts +2 -0
- package/dist/cjs/initializers/index.d.ts.map +1 -0
- package/dist/cjs/initializers/index.js +22 -0
- package/dist/cjs/initializers/index.js.map +7 -0
- package/dist/cjs/option/HttpSSRServerOption.d.ts.map +1 -0
- package/dist/cjs/option/HttpSSRServerOption.js +30 -0
- package/dist/cjs/option/HttpSSRServerOption.js.map +7 -0
- package/dist/cjs/option/index.d.ts +2 -0
- package/dist/cjs/option/index.d.ts.map +1 -0
- package/dist/cjs/option/index.js +22 -0
- package/dist/cjs/option/index.js.map +7 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/proxy/IntentSchemeFrontProxy.d.ts.map +1 -0
- package/dist/cjs/proxy/IntentSchemeFrontProxy.js +87 -0
- package/dist/cjs/proxy/IntentSchemeFrontProxy.js.map +7 -0
- package/dist/cjs/proxy/IntentSchemeServerProxy.d.ts.map +1 -0
- package/dist/cjs/proxy/IntentSchemeServerProxy.js +67 -0
- package/dist/cjs/proxy/IntentSchemeServerProxy.js.map +7 -0
- package/{proxy → dist/cjs/proxy}/SymbolIntentApiServiceProxy.d.ts +1 -0
- package/dist/cjs/proxy/SymbolIntentApiServiceProxy.d.ts.map +1 -0
- package/dist/cjs/proxy/SymbolIntentApiServiceProxy.js +111 -0
- package/dist/cjs/proxy/SymbolIntentApiServiceProxy.js.map +7 -0
- package/dist/cjs/proxy/SymbolIntentApiServiceProxyBase.d.ts +13 -0
- package/dist/cjs/proxy/SymbolIntentApiServiceProxyBase.d.ts.map +1 -0
- package/dist/cjs/proxy/SymbolIntentApiServiceProxyBase.js +110 -0
- package/dist/cjs/proxy/SymbolIntentApiServiceProxyBase.js.map +7 -0
- package/dist/cjs/proxy/index.d.ts +5 -0
- package/dist/cjs/proxy/index.d.ts.map +1 -0
- package/dist/cjs/proxy/index.js +28 -0
- package/dist/cjs/proxy/index.js.map +7 -0
- package/dist/esm/SimpleBootHttpSSRFactory.d.ts +8 -0
- package/dist/esm/SimpleBootHttpSSRFactory.d.ts.map +1 -0
- package/dist/esm/SimpleBootHttpSSRFactory.js +10 -0
- package/dist/esm/SimpleBootHttpSSRFactory.js.map +7 -0
- package/dist/esm/SimpleBootHttpSSRServer.d.ts +9 -0
- package/dist/esm/SimpleBootHttpSSRServer.d.ts.map +1 -0
- package/dist/esm/SimpleBootHttpSSRServer.js +18 -0
- package/dist/esm/SimpleBootHttpSSRServer.js.map +7 -0
- package/dist/esm/codes/HttpHeaders.d.ts +45 -0
- package/dist/esm/codes/HttpHeaders.d.ts.map +1 -0
- package/dist/esm/codes/HttpHeaders.js +17 -0
- package/dist/esm/codes/HttpHeaders.js.map +7 -0
- package/dist/esm/codes/Mimes.d.ts +31 -0
- package/dist/esm/codes/Mimes.d.ts.map +1 -0
- package/dist/esm/codes/Mimes.js +10 -0
- package/dist/esm/codes/Mimes.js.map +7 -0
- package/dist/esm/codes/index.d.ts +3 -0
- package/dist/esm/codes/index.d.ts.map +1 -0
- package/dist/esm/codes/index.js +3 -0
- package/dist/esm/codes/index.js.map +7 -0
- package/dist/esm/decorators/LoadAroundBefore.d.ts +2 -0
- package/dist/esm/decorators/LoadAroundBefore.d.ts.map +1 -0
- package/dist/esm/decorators/LoadAroundBefore.js +31 -0
- package/dist/esm/decorators/LoadAroundBefore.js.map +7 -0
- package/dist/esm/decorators/SaveAroundAfter.d.ts +3 -0
- package/dist/esm/decorators/SaveAroundAfter.d.ts.map +1 -0
- package/dist/esm/decorators/SaveAroundAfter.js +29 -0
- package/dist/esm/decorators/SaveAroundAfter.js.map +7 -0
- package/dist/esm/decorators/index.d.ts +3 -0
- package/dist/esm/decorators/index.d.ts.map +1 -0
- package/dist/esm/decorators/index.js +3 -0
- package/dist/esm/decorators/index.js.map +7 -0
- package/dist/esm/filters/IntentSchemeFilter.d.ts +20 -0
- package/dist/esm/filters/IntentSchemeFilter.d.ts.map +1 -0
- package/dist/esm/filters/IntentSchemeFilter.js +69 -0
- package/dist/esm/filters/IntentSchemeFilter.js.map +7 -0
- package/dist/esm/filters/SSRFilter.d.ts +59 -0
- package/dist/esm/filters/SSRFilter.d.ts.map +1 -0
- package/dist/esm/filters/SSRFilter.js +181 -0
- package/dist/esm/filters/SSRFilter.js.map +7 -0
- package/dist/esm/filters/SSRWorker.d.ts +16 -0
- package/dist/esm/filters/SSRWorker.d.ts.map +1 -0
- package/dist/esm/filters/SSRWorker.js +62 -0
- package/dist/esm/filters/SSRWorker.js.map +7 -0
- package/dist/esm/filters/index.d.ts +4 -0
- package/dist/esm/filters/index.d.ts.map +1 -0
- package/dist/esm/filters/index.js +4 -0
- package/dist/esm/filters/index.js.map +7 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/index.js.map +7 -0
- package/dist/esm/initializers/JsdomInitializer.d.ts +11 -0
- package/dist/esm/initializers/JsdomInitializer.d.ts.map +1 -0
- package/dist/esm/initializers/JsdomInitializer.js +49 -0
- package/dist/esm/initializers/JsdomInitializer.js.map +7 -0
- package/dist/esm/initializers/index.d.ts +2 -0
- package/dist/esm/initializers/index.d.ts.map +1 -0
- package/dist/esm/initializers/index.js +2 -0
- package/dist/esm/initializers/index.js.map +7 -0
- package/dist/esm/option/HttpSSRServerOption.d.ts +4 -0
- package/dist/esm/option/HttpSSRServerOption.d.ts.map +1 -0
- package/dist/esm/option/HttpSSRServerOption.js +7 -0
- package/dist/esm/option/HttpSSRServerOption.js.map +7 -0
- package/dist/esm/option/index.d.ts +2 -0
- package/dist/esm/option/index.d.ts.map +1 -0
- package/dist/esm/option/index.js +2 -0
- package/dist/esm/option/index.js.map +7 -0
- package/dist/esm/proxy/IntentSchemeFrontProxy.d.ts +4 -0
- package/dist/esm/proxy/IntentSchemeFrontProxy.d.ts.map +1 -0
- package/dist/esm/proxy/IntentSchemeFrontProxy.js +64 -0
- package/dist/esm/proxy/IntentSchemeFrontProxy.js.map +7 -0
- package/dist/esm/proxy/IntentSchemeServerProxy.d.ts +4 -0
- package/dist/esm/proxy/IntentSchemeServerProxy.d.ts.map +1 -0
- package/dist/esm/proxy/IntentSchemeServerProxy.js +44 -0
- package/dist/esm/proxy/IntentSchemeServerProxy.js.map +7 -0
- package/dist/esm/proxy/SymbolIntentApiServiceProxy.d.ts +16 -0
- package/dist/esm/proxy/SymbolIntentApiServiceProxy.d.ts.map +1 -0
- package/dist/esm/proxy/SymbolIntentApiServiceProxy.js +88 -0
- package/dist/esm/proxy/SymbolIntentApiServiceProxy.js.map +7 -0
- package/dist/esm/proxy/SymbolIntentApiServiceProxyBase.d.ts +13 -0
- package/dist/esm/proxy/SymbolIntentApiServiceProxyBase.d.ts.map +1 -0
- package/dist/esm/proxy/SymbolIntentApiServiceProxyBase.js +87 -0
- package/dist/esm/proxy/SymbolIntentApiServiceProxyBase.js.map +7 -0
- package/dist/esm/proxy/index.d.ts +5 -0
- package/dist/esm/proxy/index.d.ts.map +1 -0
- package/dist/esm/proxy/index.js +5 -0
- package/dist/esm/proxy/index.js.map +7 -0
- package/dist/esm-bundle/dooboostore-simple-boot-http-server-ssr.esm.js +6 -0
- package/dist/esm-bundle/dooboostore-simple-boot-http-server-ssr.esm.js.map +7 -0
- package/dist/umd-bundle/dooboostore-simple-boot-http-server-ssr.umd.js +28 -0
- package/dist/umd-bundle/dooboostore-simple-boot-http-server-ssr.umd.js.map +7 -0
- package/package.json +60 -45
- package/SimpleBootHttpSSRFactory.js +0 -10
- package/SimpleBootHttpSSRServer.js +0 -12
- package/codes/HttpHeaders.js +0 -10
- package/codes/Mimes.js +0 -3
- package/decorators/LoadAroundBefore.js +0 -31
- package/decorators/SaveAroundAfter.js +0 -26
- package/filters/IntentSchemeFilter.js +0 -72
- package/filters/SSRFilter.js +0 -232
- package/filters/SSRWorker.js +0 -72
- package/initializers/JsdomInitializer.js +0 -63
- package/option/HttpSSRServerOption.js +0 -4
- package/proxy/IntentSchemeFrontProxy.js +0 -68
- package/proxy/IntentSchemeServerProxy.js +0 -39
- package/proxy/SymbolIntentApiServiceProxy.js +0 -67
- /package/{SimpleBootHttpSSRFactory.d.ts → dist/cjs/SimpleBootHttpSSRFactory.d.ts} +0 -0
- /package/{codes → dist/cjs/codes}/HttpHeaders.d.ts +0 -0
- /package/{codes → dist/cjs/codes}/Mimes.d.ts +0 -0
- /package/{decorators → dist/cjs/decorators}/LoadAroundBefore.d.ts +0 -0
- /package/{decorators → dist/cjs/decorators}/SaveAroundAfter.d.ts +0 -0
- /package/{filters → dist/cjs/filters}/IntentSchemeFilter.d.ts +0 -0
- /package/{filters → dist/cjs/filters}/SSRWorker.d.ts +0 -0
- /package/{initializers → dist/cjs/initializers}/JsdomInitializer.d.ts +0 -0
- /package/{option → dist/cjs/option}/HttpSSRServerOption.d.ts +0 -0
- /package/{proxy → dist/cjs/proxy}/IntentSchemeFrontProxy.d.ts +0 -0
- /package/{proxy → dist/cjs/proxy}/IntentSchemeServerProxy.d.ts +0 -0
|
@@ -0,0 +1,204 @@
|
|
|
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 SSRFilter_exports = {};
|
|
19
|
+
__export(SSRFilter_exports, {
|
|
20
|
+
SSRFilter: () => SSRFilter
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(SSRFilter_exports);
|
|
23
|
+
var import_HttpHeaders = require("@dooboostore/simple-boot-http-server/codes/HttpHeaders");
|
|
24
|
+
var import_JsdomInitializer = require("../initializers/JsdomInitializer");
|
|
25
|
+
var import_Mimes = require("@dooboostore/simple-boot-http-server/codes/Mimes");
|
|
26
|
+
var import_HttpStatus = require("@dooboostore/simple-boot-http-server/codes/HttpStatus");
|
|
27
|
+
var import_AsyncBlockingQueue = require("@dooboostore/core/queues/AsyncBlockingQueue");
|
|
28
|
+
var import_RandomUtils = require("@dooboostore/core/random/RandomUtils");
|
|
29
|
+
var import_NotFoundError = require("@dooboostore/simple-boot-http-server/errors/NotFoundError");
|
|
30
|
+
var import_DomRenderProxy = require("@dooboostore/dom-render/DomRenderProxy");
|
|
31
|
+
var import_filter = require("@dooboostore/core/message/operators/filter");
|
|
32
|
+
var import_first = require("@dooboostore/core/message/operators/first");
|
|
33
|
+
var import_firstValueFrom = require("@dooboostore/core/message/internal/firstValueFrom");
|
|
34
|
+
class SSRFilter {
|
|
35
|
+
constructor(config, otherInstanceSim) {
|
|
36
|
+
this.config = config;
|
|
37
|
+
this.otherInstanceSim = otherInstanceSim;
|
|
38
|
+
config.frontDistIndexFileName = config.frontDistIndexFileName || "index.html";
|
|
39
|
+
this.indexHTML = import_JsdomInitializer.JsdomInitializer.loadFile(this.config.frontDistPath, config.frontDistIndexFileName);
|
|
40
|
+
}
|
|
41
|
+
simpleBootFrontPool = [];
|
|
42
|
+
simpleBootFrontQueue = new import_AsyncBlockingQueue.AsyncBlockingQueue();
|
|
43
|
+
indexHTML;
|
|
44
|
+
welcomUrl = "http://localhost";
|
|
45
|
+
poolGeneration = 0;
|
|
46
|
+
intervalId;
|
|
47
|
+
async onInit(app) {
|
|
48
|
+
for (let i = 0; i < this.config.poolOption.min; i++) {
|
|
49
|
+
await this.pushQueue();
|
|
50
|
+
}
|
|
51
|
+
if (this.config.poolOption.clearIntervalTime && this.config.poolOption.clearIntervalTime > 0) {
|
|
52
|
+
this.intervalId = setInterval(() => {
|
|
53
|
+
this.poolGeneration++;
|
|
54
|
+
}, this.config.poolOption.clearIntervalTime);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async onDestroy() {
|
|
58
|
+
if (this.intervalId) {
|
|
59
|
+
clearInterval(this.intervalId);
|
|
60
|
+
}
|
|
61
|
+
this.simpleBootFrontPool.forEach((front) => {
|
|
62
|
+
front.jsdom?.window.close();
|
|
63
|
+
});
|
|
64
|
+
this.simpleBootFrontPool = [];
|
|
65
|
+
}
|
|
66
|
+
// workerTs(workerOptions: WorkerOptions) {
|
|
67
|
+
// workerOptions.eval = true;
|
|
68
|
+
// if (!workerOptions.workerData) {
|
|
69
|
+
// workerOptions.workerData = {};
|
|
70
|
+
// }
|
|
71
|
+
// workerOptions.workerData.__filename = '/Users/hyunhakim/source/visualkhh/pet-space/libs/simple-boot-http-ssr/dist/filters/SSRCreatorWorker.js';
|
|
72
|
+
// return new Worker(` const wk = require('worker_threads'); require('ts-node').register(); let file = wk.workerData.__filename; require(file); `, workerOptions,);
|
|
73
|
+
// }
|
|
74
|
+
async makeJsdom() {
|
|
75
|
+
const jsdom = await new import_JsdomInitializer.JsdomInitializer(
|
|
76
|
+
this.config.frontDistPath,
|
|
77
|
+
this.config.frontDistIndexFileName || "index.html",
|
|
78
|
+
{ url: this.welcomUrl }
|
|
79
|
+
).run();
|
|
80
|
+
return jsdom;
|
|
81
|
+
}
|
|
82
|
+
async makeFront(jsdom) {
|
|
83
|
+
const name = import_RandomUtils.RandomUtils.uuid();
|
|
84
|
+
const window = jsdom.window;
|
|
85
|
+
window.ssrUse = false;
|
|
86
|
+
const option = this.config.factorySimFrontOption(import_DomRenderProxy.DomRenderProxy.final(window));
|
|
87
|
+
const simpleBootFront = await this.config.factory.create(option, this.config.using, this.config.domExcludes);
|
|
88
|
+
simpleBootFront.run(this.otherInstanceSim);
|
|
89
|
+
simpleBootFront.jsdom = jsdom;
|
|
90
|
+
simpleBootFront.generation = this.poolGeneration;
|
|
91
|
+
return simpleBootFront;
|
|
92
|
+
}
|
|
93
|
+
enqueueFrontApp(simpleBootFront) {
|
|
94
|
+
this.simpleBootFrontPool.push(simpleBootFront);
|
|
95
|
+
this.simpleBootFrontQueue.enqueue(simpleBootFront);
|
|
96
|
+
}
|
|
97
|
+
// async pushQueue(destorFront?: SimpleBootFront) {
|
|
98
|
+
// if (destorFront) {
|
|
99
|
+
// this.simpleBootFrontPool.delete(destorFront.option.name!);
|
|
100
|
+
// }
|
|
101
|
+
async pushQueue() {
|
|
102
|
+
if (this.simpleBootFrontPool.length < this.config.poolOption.max) {
|
|
103
|
+
this.enqueueFrontApp(await this.makeFront(await this.makeJsdom()));
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
async proceedBefore({ rr, app }) {
|
|
107
|
+
if (this.config.ssrExcludeFilter?.(rr)) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
if (rr.reqHasAcceptHeader(import_Mimes.Mimes.TextHtml) || rr.reqHasAcceptHeader(import_Mimes.Mimes.All)) {
|
|
111
|
+
if (this.simpleBootFrontQueue.isEmpty()) {
|
|
112
|
+
await this.pushQueue();
|
|
113
|
+
}
|
|
114
|
+
const simpleBootFront = await this.simpleBootFrontQueue.dequeue();
|
|
115
|
+
try {
|
|
116
|
+
simpleBootFront.option.window.ssrUse = true;
|
|
117
|
+
delete simpleBootFront.option.window.server_side_data;
|
|
118
|
+
const url = rr.reqUrlObj({ host: "localhost" });
|
|
119
|
+
if (this.config.simpleBootFront?.notFoundError) {
|
|
120
|
+
const intent = await simpleBootFront.getIntent(url.pathname);
|
|
121
|
+
if (intent.module === void 0 && !intent.getRouterPathData(rr.reqUrlPathName)) {
|
|
122
|
+
throw new import_NotFoundError.NotFoundError({ message: `Not Found: ${rr.reqUrlPathName}` });
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
const targetUrl = url.toString();
|
|
126
|
+
await simpleBootFront.goRouting(targetUrl);
|
|
127
|
+
await new Promise((r) => setTimeout(r, 0));
|
|
128
|
+
const data = await (0, import_firstValueFrom.firstValueFrom)(
|
|
129
|
+
// @ts-ignore
|
|
130
|
+
simpleBootFront.routingSubjectObservable.pipe(
|
|
131
|
+
// @ts-ignore
|
|
132
|
+
(0, import_filter.filter)(
|
|
133
|
+
(it) => it.state === "end" && typeof it.routerModule.intent.uri === "string" && targetUrl.endsWith(it.routerModule.intent.uri)
|
|
134
|
+
),
|
|
135
|
+
// delay(1000),
|
|
136
|
+
(0, import_first.first)()
|
|
137
|
+
)
|
|
138
|
+
);
|
|
139
|
+
const html = this.makeHTML(simpleBootFront);
|
|
140
|
+
await this.writeOkHtmlAndEnd({ rr }, html);
|
|
141
|
+
} finally {
|
|
142
|
+
simpleBootFront.option.window.ssrUse = false;
|
|
143
|
+
delete simpleBootFront.option.window.server_side_data;
|
|
144
|
+
if (simpleBootFront.generation < this.poolGeneration) {
|
|
145
|
+
const jsdom = simpleBootFront.jsdom;
|
|
146
|
+
jsdom?.window.close();
|
|
147
|
+
const index = this.simpleBootFrontPool.indexOf(simpleBootFront);
|
|
148
|
+
if (index > -1) {
|
|
149
|
+
this.simpleBootFrontPool.splice(index, 1);
|
|
150
|
+
}
|
|
151
|
+
this.pushQueue();
|
|
152
|
+
} else {
|
|
153
|
+
this.simpleBootFrontQueue.enqueue(simpleBootFront);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return false;
|
|
157
|
+
} else {
|
|
158
|
+
return true;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// const e = Expression.Path.pathNameData(rr.reqUrlPathName, intent.getRouterPath())
|
|
162
|
+
// console.log('------intent', rr.reqUrl, rr.reqUrlPathName, intent.module, intent.getRouterPath(), e)
|
|
163
|
+
// simpleBootFront.option.window.document.documentElemenh
|
|
164
|
+
// "dr-"로 시작하는 모든 attribute를 가진 element에서 해당 attribute를 제거
|
|
165
|
+
makeHTML(simpleBootFront) {
|
|
166
|
+
simpleBootFront.option.window.document.querySelectorAll("*").forEach((el) => {
|
|
167
|
+
Array.from(el.attributes).forEach((attr) => {
|
|
168
|
+
if (/^dr-/.test(attr.name) || /^domstyle/.test(attr.name) || /this-path/.test(attr.name)) {
|
|
169
|
+
el.removeAttribute(attr.name);
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
let html = simpleBootFront.option.window.document.documentElement.outerHTML;
|
|
174
|
+
html = "<!DOCTYPE html>" + html;
|
|
175
|
+
html = html.replace(/\$\{[\s\S]*?\}\$/g, "");
|
|
176
|
+
const serverSideData = simpleBootFront.option.window.server_side_data;
|
|
177
|
+
if (serverSideData) {
|
|
178
|
+
const data = Object.entries(serverSideData).map(([k, v]) => {
|
|
179
|
+
if (typeof v === "string") {
|
|
180
|
+
return `window.server_side_data.${k} = ${v}`;
|
|
181
|
+
} else {
|
|
182
|
+
return `window.server_side_data.${k} = ${JSON.stringify(v)}`;
|
|
183
|
+
}
|
|
184
|
+
}).join(";");
|
|
185
|
+
if (data) {
|
|
186
|
+
html = html.replace("</head>", `<script> window.server_side_data={}; ${data}; </script></head>`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return html;
|
|
190
|
+
}
|
|
191
|
+
async writeOkHtmlAndEnd({ rr, status = import_HttpStatus.HttpStatus.Ok }, html) {
|
|
192
|
+
rr.resStatusCode(status);
|
|
193
|
+
rr.resSetHeader(import_HttpHeaders.HttpHeaders.ContentType, import_Mimes.Mimes.TextHtml);
|
|
194
|
+
await rr.resEnd(html);
|
|
195
|
+
}
|
|
196
|
+
async proceedAfter({ rr, app }) {
|
|
197
|
+
return true;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
201
|
+
0 && (module.exports = {
|
|
202
|
+
SSRFilter
|
|
203
|
+
});
|
|
204
|
+
//# sourceMappingURL=SSRFilter.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/filters/SSRFilter.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';\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 SSRFilter 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 // console.log('SimpleBootHttpSSRFactory init success ', + this.simpleBootFrontPool.length)\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 // workerTs(workerOptions: WorkerOptions) {\n // workerOptions.eval = true;\n // if (!workerOptions.workerData) {\n // workerOptions.workerData = {};\n // }\n // workerOptions.workerData.__filename = '/Users/hyunhakim/source/visualkhh/pet-space/libs/simple-boot-http-ssr/dist/filters/SSRCreatorWorker.js';\n // return new Worker(` const wk = require('worker_threads'); require('ts-node').register(); let file = wk.workerData.__filename; require(file); `, workerOptions,);\n // }\n\n async makeJsdom() {\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(jsdom: JSDOM.JSDOM) {\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.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).jsdom = jsdom;\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\n // async pushQueue(destorFront?: SimpleBootFront) {\n // if (destorFront) {\n // this.simpleBootFrontPool.delete(destorFront.option.name!);\n // }\n async pushQueue() {\n if (this.simpleBootFrontPool.length < this.config.poolOption.max) {\n this.enqueueFrontApp(await this.makeFront(await this.makeJsdom()));\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 // console.log('SSRFilter before-->' , simpleBootFront.option.name, 'poolLength:',this.simpleBootFrontPool.size);\n (simpleBootFront.option.window as any).ssrUse = true;\n delete (simpleBootFront.option.window as any).server_side_data;\n\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('rrrrr');\n // simpleBootFront.routingSubjectObservable.subscribe(it => {\n // if (it.state === 'end' && it.routerModule.intent.uri === targetUrl) {\n // console.log('vvvvvvvvvvvv', it.state, it.routerModule.intent.uri);\n // }\n // });\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 // TODO: \uC635\uC158\uC73C\uB85C \uC774\uAC70 \uD0A4\uACE0 \uB044\uACE0\uD560\uC218\uC788\uAC8C \uD574\uC57C\uB420\uAE4C..?\n // simpleBootFront.routingSubjectObservable.pipe(\n // filter((it) =>\n // it.state === 'end' &&\n // typeof it.routerModule.intent.uri === 'string' &&\n // targetUrl.endsWith(it.routerModule.intent.uri)\n // ),\n // // delay(1000),\n // first()\n // );\n const data = await firstValueFrom(\n // @ts-ignore\n simpleBootFront.routingSubjectObservable.pipe(\n // @ts-ignore\n filter(\n (it: any) =>\n it.state === '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('rrrrrssss');\n // console.log('rrrrrssss122');\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 // console.log('--------->', simpleBootFront.option.window)\n // simpleBootFront.ninitWriteRootRouter();\n // ((simpleBootFront as any).jsdom as JSDOM.JSDOM)?.reconfigure({url: '/' });\n // simpleBootFront.option.window.location.href = 'about:blank';\n // console.log('ddddddddd', (simpleBootFront as any).generation, this.poolGeneration)\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 // Create a new one to maintain pool size\n this.pushQueue();\n } else {\n // Current instance, return to queue\n this.simpleBootFrontQueue.enqueue(simpleBootFront);\n }\n // simpleBootFront.option.window.document.body.innerHTML = this.rootJSDOM.window.document.body.innerHTML;\n // simpleBootFront.writeRootRouter()\n // await simpleBootFront.goRouting('/');\n\n // ((simpleBootFront as any).jsdom as JSDOM.JSDOM)?.reconfigure({url: this.welcomUrl });\n\n // simpleBootFront.option.window.location.href = this.welcomUrl;\n // simpleBootFront.option.window.document.documentElement.outerHTML = this.indexHTML;\n // this.simpleBootFrontQueue.enqueue(simpleBootFront);\n // await new Promise((re, r) => setTimeout(() => re(true), 10000));\n // new Promise((re, r) => setTimeout(() => re(true), 10000)).then(it => {\n // console.log('ddddddddddd')\n // });\n // this.simpleBootFrontPool.delete(simpleBootFront.option.name!);\n // if (isMainThread) { // \uBA54\uC778 \uC2A4\uB808\uB4DC\n // console.log('file-->', __filename)\n // const worker = new Worker(__filename);\n // worker.on('message', (value: any) => {\n // console.log('\uC6CC\uCEE4\uB85C\uBD80\uD130', value)\n // })\n // worker.on('exit', (value: any) => { // parentPort.close()\uAC00 \uC77C\uC5B4\uB098\uBA74 \uC774\uBCA4\uD2B8 \uBC1C\uC0DD\n // console.log('\uC6CC\uCEE4 \uB05D~');\n // })\n // worker.postMessage('ping'); // \uC6CC\uCEE4\uC2A4\uB808\uB4DC\uC5D0\uAC8C \uBA54\uC138\uC9C0\uB97C \uBCF4\uB0B8\uB2E4.\n // } else { // \uC6CC\uCEE4\uC2A4\uB808\uB4DC\n // parentPort.on('message', (value: any) => {\n // console.log(\"\uBD80\uBAA8\uB85C\uBD80\uD130\", value);\n // parentPort.postMessage('pong');\n // parentPort.close(); // \uC6CC\uCEE4\uC2A4\uB808\uB4DC \uC885\uB8CC\uB77C\uACE0 \uBA54\uC778\uC2A4\uB808\uB4DC\uC5D0 \uC54C\uB824\uC918\uC57C exit\uC774\uBCA4\uD2B8 \uBC1C\uC0DD\n // })\n // }\n\n //worker thrad\n // const workerPath = path.join(__dirname, 'SSRWorker.js');\n // const worker = new Worker(workerPath);\n // worker.once('message', (value: any) => {\n // console.log('\uC6CC\uCEE4\uB85C\uBD80\uD130', value)\n // });\n // const receiveWorker = new Worker('/Users/hyunhakim/source/visualkhh/pet-space/libs/simple-boot-http-ssr/dist/filters/SSRCreatorWorker.js');\n // receiveWorker.on('message', (msg: JSDOM.JSDOM)=>{\n // console.log('\uC6CC\uCEE4\uB85C\uBD80\uD130', msg, msg.window.document.body.innerHTML)\n // console.log('a message is sent! : ', msg)\n //\n // });\n //\n // receiveWorker.on('error', err=>{\n // console.error(err);\n // })\n //\n // receiveWorker.on('exit', ()=>console.log('exited!'));\n // receiveWorker.postMessage(\n // {\n // frontDistPath: this.factory.frontDistPath,\n // frontDistIndexFileName: this.factory.frontDistIndexFileName,\n // }\n // );\n\n // const myWorkers = this.workerTs({});\n // myWorkers.postMessage(this);\n // myWorkers.on('message', (value: SimpleBootFront) => {\n // this.pushQueue(value);\n // })\n // this\n // this.pushQueue(simpleBootFront).then(it => {\n // console.log('deee')\n // });\n // console.log('-1->', simpleBootFront.option.window.location.href);\n // simpleBootFront.option.window.location.href = this.welcomUrl;\n // simpleBootFront.option.window.location.reload();\n // console.log('-2->', simpleBootFront.option.window.location.href);\n // simpleBootFront.option.window.location.reload();\n // console.log('-3->', simpleBootFront.option.window.location.href);\n // this.simpleBootFrontQueue.enqueue(simpleBootFront);\n // await this.makeJsdom();\n // simpleBootFront.option.window.location.href = this.welcomUrl;\n }\n // console.log('----doen')\n return false;\n } else {\n // console.log('----doen2')\n return true;\n }\n }\n\n // const e = Expression.Path.pathNameData(rr.reqUrlPathName, intent.getRouterPath())\n // console.log('------intent', rr.reqUrl, rr.reqUrlPathName, intent.module, intent.getRouterPath(), e)\n // simpleBootFront.option.window.document.documentElemenh\n // \"dr-\"\uB85C \uC2DC\uC791\uD558\uB294 \uBAA8\uB4E0 attribute\uB97C \uAC00\uC9C4 element\uC5D0\uC11C \uD574\uB2F9 attribute\uB97C \uC81C\uAC70\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.res.writeHead(status, {[HttpHeaders.ContentType]: Mimes.TextHtml});\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 // console.log('done--------', sw)\n return true;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SSRWorker.d.ts","sourceRoot":"","sources":["../../../src/filters/SSRWorker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,eAAe,EAAC,MAAM,gDAAgD,CAAC;AAE/E,qBAAa,SAAS;IAIC,OAAO,EAAE,gBAAgB;IAAS,gBAAgB,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IAH/F,SAAS,SAAqB;IACrC,OAAO,CAAC,eAAe,CAAC,CAAkB;gBAEvB,OAAO,EAAE,gBAAgB,EAAS,gBAAgB,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IAIhG,GAAG;IAIH,SAAS;IAKT,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK;IAiB7B,OAAO,CAAC,GAAG,EAAE,MAAM;CAkC5B"}
|
|
@@ -0,0 +1,85 @@
|
|
|
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 SSRWorker_exports = {};
|
|
19
|
+
__export(SSRWorker_exports, {
|
|
20
|
+
SSRWorker: () => SSRWorker
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(SSRWorker_exports);
|
|
23
|
+
var import_JsdomInitializer = require("../initializers/JsdomInitializer");
|
|
24
|
+
var import_RandomUtils = require("@dooboostore/core/random/RandomUtils");
|
|
25
|
+
class SSRWorker {
|
|
26
|
+
constructor(factory, otherInstanceSim) {
|
|
27
|
+
this.factory = factory;
|
|
28
|
+
this.otherInstanceSim = otherInstanceSim;
|
|
29
|
+
}
|
|
30
|
+
welcomUrl = "http://localhost";
|
|
31
|
+
simpleBootFront;
|
|
32
|
+
async run() {
|
|
33
|
+
this.simpleBootFront = await this.makeFront();
|
|
34
|
+
}
|
|
35
|
+
async makeJsdom() {
|
|
36
|
+
const jsdom = await new import_JsdomInitializer.JsdomInitializer(this.factory.frontDistPath, this.factory.frontDistIndexFileName || "index.html", { url: this.welcomUrl }).run();
|
|
37
|
+
return jsdom;
|
|
38
|
+
}
|
|
39
|
+
async makeFront(jsdom) {
|
|
40
|
+
if (!jsdom) {
|
|
41
|
+
jsdom = await this.makeJsdom();
|
|
42
|
+
}
|
|
43
|
+
const name = import_RandomUtils.RandomUtils.uuid();
|
|
44
|
+
const window = jsdom.window;
|
|
45
|
+
window.ssrUse = false;
|
|
46
|
+
const option = this.factory.factorySimFrontOption(window);
|
|
47
|
+
const simpleBootFront = await this.factory.factory.create(option, this.factory.using, this.factory.domExcludes);
|
|
48
|
+
simpleBootFront.run(this.otherInstanceSim);
|
|
49
|
+
simpleBootFront.jsdom = jsdom;
|
|
50
|
+
return simpleBootFront;
|
|
51
|
+
}
|
|
52
|
+
async getHtml(url) {
|
|
53
|
+
if (this.simpleBootFront && this.simpleBootFront.option.window.ssrUse) {
|
|
54
|
+
} else if (this.simpleBootFront) {
|
|
55
|
+
this.simpleBootFront.option.window.ssrUse = true;
|
|
56
|
+
delete this.simpleBootFront.option.window.server_side_data;
|
|
57
|
+
await this.simpleBootFront.goRouting(url);
|
|
58
|
+
let html = this.simpleBootFront.option.window.document.documentElement.outerHTML;
|
|
59
|
+
const serverSideData = this.simpleBootFront.option.window.server_side_data;
|
|
60
|
+
if (serverSideData) {
|
|
61
|
+
const data = Object.entries(serverSideData).map(([k, v]) => {
|
|
62
|
+
if (typeof v === "string") {
|
|
63
|
+
return `window.server_side_data.${k} = ${v}`;
|
|
64
|
+
} else {
|
|
65
|
+
return `window.server_side_data.${k} = ${JSON.stringify(v)}`;
|
|
66
|
+
}
|
|
67
|
+
}).join(";");
|
|
68
|
+
if (data) {
|
|
69
|
+
html = html.replace("</head>", `<script> window.server_side_data={}; ${data}; </script></head>`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
this.makeFront().then((it) => {
|
|
73
|
+
this.simpleBootFront = it;
|
|
74
|
+
});
|
|
75
|
+
return html;
|
|
76
|
+
}
|
|
77
|
+
{
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
82
|
+
0 && (module.exports = {
|
|
83
|
+
SSRWorker
|
|
84
|
+
});
|
|
85
|
+
//# sourceMappingURL=SSRWorker.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/filters/SSRWorker.ts"],
|
|
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": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,8BAA+B;AAE/B,yBAA0B;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,yCAAiB,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,+BAAY,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
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/filters/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __copyProps = (to, from, except, desc) => {
|
|
6
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
+
for (let key of __getOwnPropNames(from))
|
|
8
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
9
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
10
|
+
}
|
|
11
|
+
return to;
|
|
12
|
+
};
|
|
13
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var filters_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(filters_exports);
|
|
17
|
+
__reExport(filters_exports, require("./IntentSchemeFilter"), module.exports);
|
|
18
|
+
__reExport(filters_exports, require("./SSRFilter"), module.exports);
|
|
19
|
+
__reExport(filters_exports, require("./SSRWorker"), module.exports);
|
|
20
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
21
|
+
0 && (module.exports = {
|
|
22
|
+
...require("./IntentSchemeFilter"),
|
|
23
|
+
...require("./SSRFilter"),
|
|
24
|
+
...require("./SSRWorker")
|
|
25
|
+
});
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/filters/index.ts"],
|
|
4
|
+
"sourcesContent": ["export * from './IntentSchemeFilter';\nexport * from './SSRFilter';\nexport * from './SSRWorker';"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA,4BAAc,iCAAd;AACA,4BAAc,wBADd;AAEA,4BAAc,wBAFd;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAQA,wBAEC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
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 src_exports = {};
|
|
19
|
+
__export(src_exports, {
|
|
20
|
+
default: () => src_default
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(src_exports);
|
|
23
|
+
var src_default = {};
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,IAAO,cAAQ,CAEf;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsdomInitializer.d.ts","sourceRoot":"","sources":["../../../src/initializers/JsdomInitializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAI5C,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,mBAAmB,CAAC;gBAFpB,aAAa,EAAE,MAAM,EACrB,sBAAsB,EAAE,MAAM,EAC9B,mBAAmB,CAAC,EAAE,mBAAmB;WAGrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI5D,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;CAiElC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
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 JsdomInitializer_exports = {};
|
|
29
|
+
__export(JsdomInitializer_exports, {
|
|
30
|
+
JsdomInitializer: () => JsdomInitializer
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(JsdomInitializer_exports);
|
|
33
|
+
var JSDOM = __toESM(require("jsdom"), 1);
|
|
34
|
+
var import_fs = __toESM(require("fs"), 1);
|
|
35
|
+
var import_path = __toESM(require("path"), 1);
|
|
36
|
+
class JsdomInitializer {
|
|
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 jsdom = await JSDOM.JSDOM.fromFile(pathStr, {});
|
|
48
|
+
if (this.reconfigureSettings) {
|
|
49
|
+
jsdom.reconfigure(this.reconfigureSettings);
|
|
50
|
+
}
|
|
51
|
+
global.document = jsdom.window.document;
|
|
52
|
+
global.window = jsdom.window;
|
|
53
|
+
global.window.requestAnimationFrame = () => {
|
|
54
|
+
};
|
|
55
|
+
global.window.scrollTo = () => {
|
|
56
|
+
};
|
|
57
|
+
global.history = jsdom.window.history;
|
|
58
|
+
global.Event = jsdom.window.Event;
|
|
59
|
+
global.PopStateEvent = jsdom.window.Event;
|
|
60
|
+
global.IntersectionObserver = jsdom.window.IntersectionObserver;
|
|
61
|
+
global.NodeFilter = jsdom.window.NodeFilter;
|
|
62
|
+
global.Node = jsdom.window.Node;
|
|
63
|
+
global.HTMLElement = jsdom.window.HTMLElement;
|
|
64
|
+
global.HTMLMetaElement = jsdom.window.HTMLMetaElement;
|
|
65
|
+
global.Element = jsdom.window.Element;
|
|
66
|
+
global.HTMLCanvasElement = jsdom.window.HTMLCanvasElement;
|
|
67
|
+
global.HTMLCanvasElement.prototype.getContext = () => {
|
|
68
|
+
return null;
|
|
69
|
+
};
|
|
70
|
+
global.CanvasRenderingContext2D = jsdom.window.CanvasRenderingContext2D;
|
|
71
|
+
global.CanvasPattern = jsdom.window.CanvasPattern;
|
|
72
|
+
global.CanvasGradient = jsdom.window.CanvasGradient;
|
|
73
|
+
global.Path2D = jsdom.window.Path2D;
|
|
74
|
+
global.ImageData = jsdom.window.ImageData;
|
|
75
|
+
return jsdom;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
79
|
+
0 && (module.exports = {
|
|
80
|
+
JsdomInitializer
|
|
81
|
+
});
|
|
82
|
+
//# sourceMappingURL=JsdomInitializer.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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;AAAA;AAAA;AAAA;AAAA;AAAA,YAAuB;AAEvB,gBAAe;AACf,kBAAiB;AAEV,MAAM,iBAAiB;AAAA,EAC5B,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,MAA4B;AAGhC,UAAM,UAAU,YAAAA,QAAK,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;",
|
|
6
|
+
"names": ["fs", "path"]
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/initializers/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __copyProps = (to, from, except, desc) => {
|
|
6
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
+
for (let key of __getOwnPropNames(from))
|
|
8
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
9
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
10
|
+
}
|
|
11
|
+
return to;
|
|
12
|
+
};
|
|
13
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var initializers_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(initializers_exports);
|
|
17
|
+
__reExport(initializers_exports, require("./JsdomInitializer"), module.exports);
|
|
18
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
19
|
+
0 && (module.exports = {
|
|
20
|
+
...require("./JsdomInitializer")
|
|
21
|
+
});
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpSSRServerOption.d.ts","sourceRoot":"","sources":["../../../src/option/HttpSSRServerOption.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AAEhG,qBAAa,mBAAoB,SAAQ,gBAAgB;CACxD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
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 HttpSSRServerOption_exports = {};
|
|
19
|
+
__export(HttpSSRServerOption_exports, {
|
|
20
|
+
HttpSSRServerOption: () => HttpSSRServerOption
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(HttpSSRServerOption_exports);
|
|
23
|
+
var import_HttpServerOption = require("@dooboostore/simple-boot-http-server/option/HttpServerOption");
|
|
24
|
+
class HttpSSRServerOption extends import_HttpServerOption.HttpServerOption {
|
|
25
|
+
}
|
|
26
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
27
|
+
0 && (module.exports = {
|
|
28
|
+
HttpSSRServerOption
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=HttpSSRServerOption.js.map
|