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

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 (184) hide show
  1. package/README.md +98 -0
  2. package/dist/cjs/SimpleBootHttpSSRFactory.js.map +1 -1
  3. package/dist/cjs/SimpleBootHttpSSRServer.js +1 -0
  4. package/dist/cjs/SimpleBootHttpSSRServer.js.map +2 -2
  5. package/dist/cjs/bundle-entry.js +0 -4
  6. package/dist/cjs/bundle-entry.js.map +2 -2
  7. package/dist/cjs/filters/SSRDomParserFilter.js +54 -89
  8. package/dist/cjs/filters/SSRDomParserFilter.js.map +2 -2
  9. package/dist/cjs/filters/SSRFilter.js +10 -14
  10. package/dist/cjs/filters/SSRFilter.js.map +2 -2
  11. package/dist/cjs/filters/{SSRLinkDomDomFilter.js → SSRLinkDomFilter.js} +17 -21
  12. package/dist/cjs/filters/SSRLinkDomFilter.js.map +7 -0
  13. package/dist/cjs/filters/SSRSimpleWebComponentDomParserFilter.js +81 -0
  14. package/dist/cjs/filters/SSRSimpleWebComponentDomParserFilter.js.map +7 -0
  15. package/dist/cjs/filters/SSRSimpleWebComponentFilter.js +223 -0
  16. package/dist/cjs/filters/SSRSimpleWebComponentFilter.js.map +7 -0
  17. package/dist/cjs/filters/SSRWorker.js +2 -2
  18. package/dist/cjs/filters/SSRWorker.js.map +2 -2
  19. package/dist/cjs/filters/index.js +9 -3
  20. package/dist/cjs/filters/index.js.map +2 -2
  21. package/dist/cjs/index.js +16 -8
  22. package/dist/cjs/index.js.map +2 -2
  23. package/dist/cjs/initializers/DomParserInitializer.js +5 -2
  24. package/dist/cjs/initializers/DomParserInitializer.js.map +2 -2
  25. package/dist/cjs/proxy/SSRDomParserFilterDataHydrationProxy.js +92 -0
  26. package/dist/cjs/proxy/SSRDomParserFilterDataHydrationProxy.js.map +7 -0
  27. package/dist/cjs/proxy/index.js +2 -8
  28. package/dist/cjs/proxy/index.js.map +2 -2
  29. package/dist/esm/SimpleBootHttpSSRFactory.js.map +1 -1
  30. package/dist/esm/SimpleBootHttpSSRServer.js +1 -0
  31. package/dist/esm/SimpleBootHttpSSRServer.js.map +2 -2
  32. package/dist/esm/bundle-entry.js +0 -2
  33. package/dist/esm/bundle-entry.js.map +2 -2
  34. package/dist/esm/filters/SSRDomParserFilter.js +52 -87
  35. package/dist/esm/filters/SSRDomParserFilter.js.map +2 -2
  36. package/dist/esm/filters/SSRFilter.js +7 -11
  37. package/dist/esm/filters/SSRFilter.js.map +2 -2
  38. package/dist/esm/filters/{SSRLinkDomDomFilter.js → SSRLinkDomFilter.js} +10 -14
  39. package/dist/esm/filters/SSRLinkDomFilter.js.map +7 -0
  40. package/dist/esm/filters/SSRSimpleWebComponentDomParserFilter.js +58 -0
  41. package/dist/esm/filters/SSRSimpleWebComponentDomParserFilter.js.map +7 -0
  42. package/dist/esm/filters/SSRSimpleWebComponentFilter.js +190 -0
  43. package/dist/esm/filters/SSRSimpleWebComponentFilter.js.map +7 -0
  44. package/dist/esm/filters/SSRWorker.js +1 -1
  45. package/dist/esm/filters/SSRWorker.js.map +2 -2
  46. package/dist/esm/filters/index.js +4 -1
  47. package/dist/esm/filters/index.js.map +2 -2
  48. package/dist/esm/index.js +6 -4
  49. package/dist/esm/index.js.map +2 -2
  50. package/dist/esm/initializers/DomParserInitializer.js +6 -3
  51. package/dist/esm/initializers/DomParserInitializer.js.map +2 -2
  52. package/dist/esm/proxy/SSRDomParserFilterDataHydrationProxy.js +69 -0
  53. package/dist/esm/proxy/SSRDomParserFilterDataHydrationProxy.js.map +7 -0
  54. package/dist/esm/proxy/index.js +1 -4
  55. package/dist/esm/proxy/index.js.map +2 -2
  56. package/dist/esm-bundle/dooboostore-simple-boot-http-server-ssr.esm.js +56266 -10404
  57. package/dist/esm-bundle/dooboostore-simple-boot-http-server-ssr.esm.js.map +4 -4
  58. package/dist/types/SimpleBootHttpSSRFactory.d.ts +1 -1
  59. package/dist/types/SimpleBootHttpSSRFactory.d.ts.map +1 -1
  60. package/dist/types/SimpleBootHttpSSRServer.d.ts +3 -2
  61. package/dist/types/SimpleBootHttpSSRServer.d.ts.map +1 -1
  62. package/dist/types/bundle-entry.d.ts +0 -2
  63. package/dist/types/bundle-entry.d.ts.map +1 -1
  64. package/dist/types/filters/SSRDomParserFilter.d.ts +12 -18
  65. package/dist/types/filters/SSRDomParserFilter.d.ts.map +1 -1
  66. package/dist/types/filters/SSRFilter.d.ts +1 -1
  67. package/dist/types/filters/SSRFilter.d.ts.map +1 -1
  68. package/dist/types/filters/{SSRLinkDomDomFilter.d.ts → SSRLinkDomFilter.d.ts} +6 -6
  69. package/dist/types/filters/SSRLinkDomFilter.d.ts.map +1 -0
  70. package/dist/types/filters/SSRSimpleWebComponentDomParserFilter.d.ts +37 -0
  71. package/dist/types/filters/SSRSimpleWebComponentDomParserFilter.d.ts.map +1 -0
  72. package/dist/types/filters/SSRSimpleWebComponentFilter.d.ts +57 -0
  73. package/dist/types/filters/SSRSimpleWebComponentFilter.d.ts.map +1 -0
  74. package/dist/types/filters/SSRWorker.d.ts +1 -1
  75. package/dist/types/filters/SSRWorker.d.ts.map +1 -1
  76. package/dist/types/filters/index.d.ts +4 -1
  77. package/dist/types/filters/index.d.ts.map +1 -1
  78. package/dist/types/index.d.ts +6 -2
  79. package/dist/types/index.d.ts.map +1 -1
  80. package/dist/types/initializers/DomParserInitializer.d.ts +2 -0
  81. package/dist/types/initializers/DomParserInitializer.d.ts.map +1 -1
  82. package/dist/types/proxy/SSRDomParserFilterDataHydrationProxy.d.ts +7 -0
  83. package/dist/types/proxy/SSRDomParserFilterDataHydrationProxy.d.ts.map +1 -0
  84. package/dist/types/proxy/index.d.ts +1 -4
  85. package/dist/types/proxy/index.d.ts.map +1 -1
  86. package/dist/umd-bundle/dooboostore-simple-boot-http-server-ssr.umd.js +56265 -10408
  87. package/dist/umd-bundle/dooboostore-simple-boot-http-server-ssr.umd.js.map +4 -4
  88. package/package.json +22 -15
  89. package/src/SimpleBootHttpSSRFactory.ts +1 -1
  90. package/src/SimpleBootHttpSSRServer.ts +5 -4
  91. package/src/bundle-entry.ts +0 -2
  92. package/src/filters/SSRDomParserFilter.ts +113 -126
  93. package/src/filters/SSRFilter.ts +7 -12
  94. package/src/filters/{SSRLinkDomDomFilter.ts → SSRLinkDomFilter.ts} +10 -15
  95. package/src/filters/SSRSimpleWebComponentDomParserFilter.ts +106 -0
  96. package/src/filters/SSRSimpleWebComponentFilter.ts +306 -0
  97. package/src/filters/SSRWorker.ts +1 -2
  98. package/src/filters/index.ts +5 -2
  99. package/src/index.ts +6 -9
  100. package/src/initializers/DomParserInitializer.ts +9 -2
  101. package/src/proxy/SSRDomParserFilterDataHydrationProxy.ts +63 -0
  102. package/src/proxy/index.ts +1 -4
  103. package/tsconfig.json +1 -0
  104. package/README.MD +0 -36
  105. package/dist/cjs/codes/HttpHeaders.js +0 -41
  106. package/dist/cjs/codes/HttpHeaders.js.map +0 -7
  107. package/dist/cjs/codes/Mimes.js +0 -33
  108. package/dist/cjs/codes/Mimes.js.map +0 -7
  109. package/dist/cjs/codes/index.js +0 -24
  110. package/dist/cjs/codes/index.js.map +0 -7
  111. package/dist/cjs/decorators/LoadAroundBefore.js +0 -54
  112. package/dist/cjs/decorators/LoadAroundBefore.js.map +0 -7
  113. package/dist/cjs/decorators/SaveAroundAfter.js +0 -53
  114. package/dist/cjs/decorators/SaveAroundAfter.js.map +0 -7
  115. package/dist/cjs/decorators/index.js +0 -24
  116. package/dist/cjs/decorators/index.js.map +0 -7
  117. package/dist/cjs/filters/IntentSchemeFilter.js +0 -92
  118. package/dist/cjs/filters/IntentSchemeFilter.js.map +0 -7
  119. package/dist/cjs/filters/SSRLinkDomDomFilter.js.map +0 -7
  120. package/dist/cjs/proxy/IntentSchemeFrontProxy.js +0 -87
  121. package/dist/cjs/proxy/IntentSchemeFrontProxy.js.map +0 -7
  122. package/dist/cjs/proxy/IntentSchemeServerProxy.js +0 -67
  123. package/dist/cjs/proxy/IntentSchemeServerProxy.js.map +0 -7
  124. package/dist/cjs/proxy/SymbolIntentApiServiceProxy.js +0 -138
  125. package/dist/cjs/proxy/SymbolIntentApiServiceProxy.js.map +0 -7
  126. package/dist/cjs/proxy/SymbolIntentApiServiceProxyBase.js +0 -35
  127. package/dist/cjs/proxy/SymbolIntentApiServiceProxyBase.js.map +0 -7
  128. package/dist/esm/codes/HttpHeaders.js +0 -17
  129. package/dist/esm/codes/HttpHeaders.js.map +0 -7
  130. package/dist/esm/codes/Mimes.js +0 -10
  131. package/dist/esm/codes/Mimes.js.map +0 -7
  132. package/dist/esm/codes/index.js +0 -3
  133. package/dist/esm/codes/index.js.map +0 -7
  134. package/dist/esm/decorators/LoadAroundBefore.js +0 -31
  135. package/dist/esm/decorators/LoadAroundBefore.js.map +0 -7
  136. package/dist/esm/decorators/SaveAroundAfter.js +0 -29
  137. package/dist/esm/decorators/SaveAroundAfter.js.map +0 -7
  138. package/dist/esm/decorators/index.js +0 -3
  139. package/dist/esm/decorators/index.js.map +0 -7
  140. package/dist/esm/filters/IntentSchemeFilter.js +0 -69
  141. package/dist/esm/filters/IntentSchemeFilter.js.map +0 -7
  142. package/dist/esm/filters/SSRLinkDomDomFilter.js.map +0 -7
  143. package/dist/esm/proxy/IntentSchemeFrontProxy.js +0 -64
  144. package/dist/esm/proxy/IntentSchemeFrontProxy.js.map +0 -7
  145. package/dist/esm/proxy/IntentSchemeServerProxy.js +0 -44
  146. package/dist/esm/proxy/IntentSchemeServerProxy.js.map +0 -7
  147. package/dist/esm/proxy/SymbolIntentApiServiceProxy.js +0 -115
  148. package/dist/esm/proxy/SymbolIntentApiServiceProxy.js.map +0 -7
  149. package/dist/esm/proxy/SymbolIntentApiServiceProxyBase.js +0 -12
  150. package/dist/esm/proxy/SymbolIntentApiServiceProxyBase.js.map +0 -7
  151. package/dist/types/codes/HttpHeaders.d.ts +0 -45
  152. package/dist/types/codes/HttpHeaders.d.ts.map +0 -1
  153. package/dist/types/codes/Mimes.d.ts +0 -31
  154. package/dist/types/codes/Mimes.d.ts.map +0 -1
  155. package/dist/types/codes/index.d.ts +0 -3
  156. package/dist/types/codes/index.d.ts.map +0 -1
  157. package/dist/types/decorators/LoadAroundBefore.d.ts +0 -2
  158. package/dist/types/decorators/LoadAroundBefore.d.ts.map +0 -1
  159. package/dist/types/decorators/SaveAroundAfter.d.ts +0 -3
  160. package/dist/types/decorators/SaveAroundAfter.d.ts.map +0 -1
  161. package/dist/types/decorators/index.d.ts +0 -3
  162. package/dist/types/decorators/index.d.ts.map +0 -1
  163. package/dist/types/filters/IntentSchemeFilter.d.ts +0 -20
  164. package/dist/types/filters/IntentSchemeFilter.d.ts.map +0 -1
  165. package/dist/types/filters/SSRLinkDomDomFilter.d.ts.map +0 -1
  166. package/dist/types/proxy/IntentSchemeFrontProxy.d.ts +0 -4
  167. package/dist/types/proxy/IntentSchemeFrontProxy.d.ts.map +0 -1
  168. package/dist/types/proxy/IntentSchemeServerProxy.d.ts +0 -4
  169. package/dist/types/proxy/IntentSchemeServerProxy.d.ts.map +0 -1
  170. package/dist/types/proxy/SymbolIntentApiServiceProxy.d.ts +0 -18
  171. package/dist/types/proxy/SymbolIntentApiServiceProxy.d.ts.map +0 -1
  172. package/dist/types/proxy/SymbolIntentApiServiceProxyBase.d.ts +0 -5
  173. package/dist/types/proxy/SymbolIntentApiServiceProxyBase.d.ts.map +0 -1
  174. package/src/codes/HttpHeaders.ts +0 -17
  175. package/src/codes/Mimes.ts +0 -6
  176. package/src/codes/index.ts +0 -2
  177. package/src/decorators/LoadAroundBefore.ts +0 -28
  178. package/src/decorators/SaveAroundAfter.ts +0 -27
  179. package/src/decorators/index.ts +0 -2
  180. package/src/filters/IntentSchemeFilter.ts +0 -69
  181. package/src/proxy/IntentSchemeFrontProxy.ts +0 -67
  182. package/src/proxy/IntentSchemeServerProxy.ts +0 -35
  183. package/src/proxy/SymbolIntentApiServiceProxy.ts +0 -115
  184. package/src/proxy/SymbolIntentApiServiceProxyBase.ts +0 -19
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/filters/SSRSimpleWebComponentFilter.ts"],
4
+ "sourcesContent": ["import { RequestResponse } from '@dooboostore/simple-boot-http-server/models/RequestResponse';\nimport { HttpHeaders } from '@dooboostore/simple-boot-http-server/codes/HttpHeaders';\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 path from 'path';\nimport fs from 'fs';\nimport {HttpMethod} from \"@dooboostore/simple-boot-http-server\";\n\nexport type SWCSSRConfig = {\n frontDistPath: string;\n frontDistIndexFileName?: string;\n welcomUrl?: string;\n ssrExcludeFilter?: (rr: RequestResponse) => boolean;\n /**\n * (Deprecated for Playwright)\n * Function to register components for each request.\n * Playwright evaluates real JS files loaded from your index.html,\n * so component registration happens automatically in the browser context.\n */\n registerComponents?: (window: any) => Promise<void> | void;\n playwright?: {\n waitUntil?: 'load' | 'domcontentloaded' | 'networkidle' | 'commit';\n waitForSelector?: string;\n waitForTimeout?: number;\n timeout?: number;\n ignoreTags?: string[];\n };\n};\n\n/**\n * SSR Filter specifically for Simple Web Component (SWC).\n * It utilizes Playwright to render the page robustly and perfectly matching browser specs.\n *\n * ### Playwright Setup & Requirements\n *\n * To use this filter, Playwright must be installed in your server environment:\n * 1. Install playwright package: `npm install playwright` or `pnpm add playwright`\n * 2. Install browsers: `npx playwright install chromium`\n *\n * If running inside a Docker container (e.g., Alpine Linux), you must use an image that supports Playwright\n * or manually install OS dependencies. Playwright provides official Docker images: `mcr.microsoft.com/playwright:v1.x.x-focal`.\n */\nexport class SSRSimpleWebComponentFilter implements Filter {\n private welcomUrl = 'http://localhost';\n private browser?: any;\n\n constructor(public config: SWCSSRConfig) {\n this.welcomUrl = config.welcomUrl || this.welcomUrl;\n }\n\n async onInit(app: SimpleBootHttpServer) {\n // 1. Initialize Playwright browser when the server starts\n const { chromium } = await import('playwright');\n this.browser = await chromium.launch({\n headless: true,\n args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-web-security'] // Allow CORS for local dev\n });\n console.log('\uD83D\uDE80 Playwright Browser initialized for SSR Filter');\n }\n\n async onDestroy() {\n if (this.browser) {\n await this.browser.close();\n console.log('\uD83D\uDED1 Playwright Browser closed');\n }\n }\n\n async proceedBefore({ rr, app, carrier }: { rr: RequestResponse; app: SimpleBootHttpServer; carrier: Map<string, any> }) {\n if (this.config.ssrExcludeFilter?.(rr)) {\n return true; // Bypass SSR and continue server chain\n }\n\n console.log('playwright2222222', rr.reqHeader('x-ssr-browser'));\n\n // 2. Prevent Infinite Loop:\n // If the request comes from Playwright itself, bypass SSR and serve the original static SPA file.\n if (rr.reqHeader('x-ssr-browser') === 'playwright') {\n return true;\n }\n\n if (rr.reqIsMethod(HttpMethod.GET) && rr.reqHasContentTypeHeader(Mimes.TextHtml)) {\n // Build target URL for Playwright to visit\n // Use the server's actual listening address and port if available\n const protocol = app.option.protocol || 'http';\n const host = app.option.hostname || '127.0.0.1';\n const port = app.option.port || 80;\n\n const url = rr.reqUrlObj({ host: `${host}:${port}` });\n url.protocol = protocol;\n\n const targetUrl = url.toString() ?? this.welcomUrl;\n\n if (!this.browser) {\n console.error('Playwright browser is not initialized. Bypassing SSR.');\n return true;\n }\n\n // Create a fresh context for isolation\n // IMPORTANT: We do NOT use `extraHTTPHeaders` globally because it attaches the header to EVERY request\n // Playwright makes (including CORS requests to FontAwesome or API requests).\n // Instead, we will set the header ONLY for the initial navigation request to our server.\n const context = await this.browser.newContext();\n const page = await context.newPage();\n\n try {\n // Intercept ONLY requests going to our local server and append the bypass header\n await page.route('**/*', route => {\n const request = route.request();\n\n // Only append the x-ssr-browser header for requests to the local server that are NOT API requests\n const isLocal = request.url().startsWith(targetUrl) || request.url().includes('localhost') || request.url().includes('127.0.0.1');\n const isApi = request.url().includes('/api/');\n\n if (isLocal && !isApi) {\n const headers = {\n ...request.headers(),\n 'x-ssr-browser': 'playwright'\n };\n route.continue({ headers }).catch(() => {});\n } else {\n // For external requests (like font-awesome CORS) or API calls, do not add the custom header\n route.continue().catch(() => {});\n }\n });\n\n // 3. Navigate to the page and wait for the framework to finish rendering\n // but normally Playwright just navigates to the targetUrl and loads the real SPA resources.\n\n // \uD83D\uDCA1 Playwright \u2194 Framework \uD1B5\uC2E0 \uC124\uC815\n // \uD504\uB860\uD2B8\uC5D4\uB4DC\uC758 `bootfactory.ts` \uC548\uC758 `onRouteChanged` \uB4F1\uC5D0\uC11C\n // `if (window.onPlaywrightReady) window.onPlaywrightReady()` \uB77C\uACE0 \uD638\uCD9C\uD574\uC8FC\uBA74,\n // \uC544\uB798\uC758 Promise\uAC00 \uC989\uC2DC resolve \uB418\uB3C4\uB85D \uC5F0\uACB0\uD569\uB2C8\uB2E4.\n let resolvePlaywrightReady: () => void;\n const playwrightReadyPromise = new Promise<void>(resolve => {\n resolvePlaywrightReady = resolve;\n });\n\n await page.exposeFunction('onPlaywrightReady', () => {\n console.log('\u26A1\uFE0F [SSR:Playwright] Received \"onPlaywrightReady\" signal from framework!');\n resolvePlaywrightReady();\n });\n\n // 3. Navigate to the page and wait for the framework to finish rendering\n // Since the server will return the `index.html` (due to the bypass header), Playwright will download\n // your main.js / bundle.js, evaluate it, and the Custom Elements will register themselves naturally!\n await page.goto(targetUrl, {\n waitUntil: this.config.playwright?.waitUntil ?? 'networkidle',\n timeout: this.config.playwright?.timeout ?? 15000\n });\n\n // \uD83D\uDCA1 Framework Load Wait (Crucial for SWC)\n // Wait for EITHER the framework to call `window.onPlaywrightReady()` OR a specific innerHTML condition\n await Promise.race([\n playwrightReadyPromise, // \uC9C1\uC811 exposeFunction\uC5D0\uC11C \uD2B8\uB9AC\uAC70\uB41C Promise\n\n page.waitForFunction(\n () => {\n // Fallback 1: If explicit signal variable is set\n return (window as any)._playwrightReadySignalFired === true;\n },\n { timeout: this.config.playwright?.timeout ?? 15000 }\n ),\n\n page.waitForFunction(\n () => {\n // Fallback 2: If no signal, just wait until body has content\n return document.body.innerHTML.trim().length > 100;\n },\n { timeout: this.config.playwright?.timeout ?? 15000 }\n )\n ]).catch(() => console.log('Wait for app mount timeout... proceeding anyway'));\n\n // \uAC15\uC81C\uB85C \uCEF4\uD3EC\uB10C\uD2B8 \uB80C\uB354\uB9C1 \uBC0F \uD3F0\uD2B8\uC5B4\uC378 \uB4F1 \uB9AC\uC18C\uC2A4 \uB85C\uB529 \uB300\uAE30 \uC2DC\uAC04 \uCD94\uAC00 (\uC548\uC804 \uC7A5\uCE58)\n // onPlaywrightReady \uC2E0\uD638\uAC00 \uB5A8\uC5B4\uC838\uB3C4, \uBE44\uB3D9\uAE30 \uB80C\uB354\uB9C1(SwcLoop \uB4F1)\uC774 DOM\uC5D0 \uC644\uC804\uD788 \uBC18\uC601\uB418\uB294 \uB370\n // \uC57D\uAC04\uC758 Microtask \uC9C0\uC5F0\uC774 \uC788\uC744 \uC218 \uC788\uC73C\uBBC0\uB85C \uC544\uC8FC \uC9E7\uAC8C\uB9CC \uAE30\uB2E4\uB824 \uC90D\uB2C8\uB2E4.\n // await new Promise(resolve => setTimeout(resolve, 300));\n\n // Optional: Wait for a specific component to be visible\n if (this.config.playwright?.waitForSelector) {\n await page.waitForSelector(this.config.playwright.waitForSelector, {\n timeout: this.config.playwright?.timeout ?? 15000\n });\n }\n\n // Optional: Hardcoded wait time if explicitly set (fallback)\n if (this.config.playwright?.waitForTimeout) {\n await page.waitForTimeout(this.config.playwright.waitForTimeout);\n }\n\n // 4. Set SSR Attribute before extracting HTML\n await page.evaluate(() => {\n document.body.setAttribute('ssr-use', 'true');\n });\n\n // 5. Generate Final HTML\n const html = await page.evaluate(ignoreTags => {\n const skipTags = new Set(ignoreTags || []);\n\n function serializeNode(node: Node, inBody: boolean = false): string {\n if (node.nodeType === Node.TEXT_NODE) {\n const text = node.textContent || '';\n return text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n }\n if (node.nodeType === Node.COMMENT_NODE) {\n return `<!--${node.textContent}-->`;\n }\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return '';\n }\n\n const el = node as Element;\n const tag = el.tagName.toLowerCase();\n const isBody = tag === 'body';\n const isInsideBody = inBody || isBody;\n\n // \uD83D\uDEAB Skip ignored tags (like <style>) ONLY if we are inside the <body>.\n // This ensures <style> tags in the <head> (global styles) are preserved!\n if (isInsideBody && skipTags.has(tag)) {\n return '';\n }\n\n let s = `<${tag}`;\n\n // 1. Serialize Attributes\n for (let i = 0; i < el.attributes.length; i++) {\n const attr = el.attributes[i];\n s += ` ${attr.name}=\"${attr.value.replace(/\"/g, '&quot;')}\"`;\n }\n\n // Handle void elements (self-closing)\n const voidElements = new Set(['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wbr']);\n if (voidElements.has(tag)) {\n s += '>';\n return s;\n }\n s += '>';\n\n // 2. Serialize Shadow DOM (Declarative Shadow DOM)\n // MUST KEEP for SSR: Without this, the user receives an empty shell until JS loads and re-renders everything.\n // This allows the browser to paint the full UI (including styles inside the component) immediately.\n if (el.shadowRoot) {\n s += `<template shadowrootmode=\"${el.shadowRoot.mode}\">`;\n for (let i = 0; i < el.shadowRoot.childNodes.length; i++) {\n s += serializeNode(el.shadowRoot.childNodes[i], isInsideBody);\n }\n s += '</template>';\n }\n\n // 3. Serialize Light DOM Children\n for (let i = 0; i < el.childNodes.length; i++) {\n s += serializeNode(el.childNodes[i], isInsideBody);\n }\n\n s += `</${tag}>`;\n return s;\n }\n\n let result = '<!DOCTYPE html>\\n<html';\n const htmlNode = document.documentElement;\n for (let i = 0; i < htmlNode.attributes.length; i++) {\n const attr = htmlNode.attributes[i];\n result += ` ${attr.name}=\"${attr.value.replace(/\"/g, '&quot;')}\"`;\n }\n result += '>\\n';\n\n if (document.head) result += serializeNode(document.head, false);\n result += '\\n';\n if (document.body) result += serializeNode(document.body, true);\n\n result += '\\n</html>';\n return result;\n }, this.config.playwright?.ignoreTags || []);\n console.log(`\uD83D\uDC88 [SSR:Playwright] Successfully rendered ${targetUrl}`);\n\n await this.writeOkHtmlAndEnd({ rr }, this.makeHTML(html));\n } catch (e) {\n console.error(`Playwright SSR Error for ${targetUrl}:`, e);\n // If Playwright fails (e.g., timeout), we bypass SSR so the client at least gets the CSR app\n return true;\n } finally {\n await context.close();\n }\n return false; // Tell SimpleBootHttpServer to stop routing because we've handled the response\n }\n return true;\n }\n\n makeHTML(html: string) {\n if (!/^<!DOCTYPE html>/i.test(html)) {\n html = '<!DOCTYPE html>\\n' + html;\n }\n return html;\n }\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() {\n return true;\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,5 +1,5 @@
1
+ import { RandomUtils } from "@dooboostore/core";
1
2
  import { JsdomInitializer } from "../initializers/JsdomInitializer.js";
2
- import { RandomUtils } from "@dooboostore/core/random/RandomUtils";
3
3
  class SSRWorker {
4
4
  constructor(factory, otherInstanceSim) {
5
5
  this.factory = factory;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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": "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;",
4
+ "sourcesContent": ["import { ConstructorType, RandomUtils } from '@dooboostore/core';\nimport {FactoryAndParams} from './SSRFilter';\nimport {JsdomInitializer} from '../initializers/JsdomInitializer';\nimport JSDOM from 'jsdom';\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,SAA0B,mBAAmB;AAE7C,SAAQ,wBAAuB;AAIxB,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,4 +1,7 @@
1
- export * from "./IntentSchemeFilter.js";
2
1
  export * from "./SSRFilter.js";
3
2
  export * from "./SSRWorker.js";
3
+ export * from "./SSRSimpleWebComponentFilter.js";
4
+ export * from "./SSRSimpleWebComponentDomParserFilter.js";
5
+ export * from "./SSRDomParserFilter.js";
6
+ export * from "./SSRLinkDomFilter.js";
4
7
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/filters/index.ts"],
4
- "sourcesContent": ["export * from './IntentSchemeFilter';\nexport * from './SSRFilter';\nexport * from './SSRWorker';"],
5
- "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;",
4
+ "sourcesContent": ["export * from './SSRFilter';\nexport * from './SSRWorker';\nexport * from './SSRSimpleWebComponentFilter';\nexport * from './SSRSimpleWebComponentDomParserFilter';\nexport * from './SSRDomParserFilter';\nexport * from './SSRLinkDomFilter';"],
5
+ "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
6
6
  "names": []
7
7
  }
package/dist/esm/index.js CHANGED
@@ -1,5 +1,7 @@
1
- var src_default = {};
2
- export {
3
- src_default as default
4
- };
1
+ export * from "./filters/index.js";
2
+ export * from "./initializers/index.js";
3
+ export * from "./option/index.js";
4
+ export * from "./proxy/index.js";
5
+ export * from "./SimpleBootHttpSSRFactory.js";
6
+ export * from "./SimpleBootHttpSSRServer.js";
5
7
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
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;",
4
+ "sourcesContent": ["export * from './filters';\nexport * from './initializers';\nexport * from './option';\nexport * from './proxy';\nexport * from './SimpleBootHttpSSRFactory';\nexport * from './SimpleBootHttpSSRServer';"],
5
+ "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
6
6
  "names": []
7
7
  }
@@ -1,6 +1,6 @@
1
1
  import fs from "fs";
2
2
  import path from "path";
3
- import { parseHTML } from "@dooboostore/dom-parser";
3
+ import { DomParser } from "@dooboostore/dom-parser";
4
4
  class DomParserInitializer {
5
5
  constructor(frontDistPath, frontDistIndexFileName, reconfigureSettings) {
6
6
  this.frontDistPath = frontDistPath;
@@ -13,8 +13,8 @@ class DomParserInitializer {
13
13
  async run() {
14
14
  const pathStr = path.join(this.frontDistPath, this.frontDistIndexFileName);
15
15
  const html = fs.readFileSync(pathStr, "utf8");
16
- const w = parseHTML(html, { href: this.reconfigureSettings.url });
17
- ;
16
+ this.domParser = new DomParser(html, { href: this.reconfigureSettings?.url });
17
+ const w = this.domParser.window;
18
18
  w.location ??= { href: "about:blank" };
19
19
  if (this.reconfigureSettings?.url) {
20
20
  w.location.href = this.reconfigureSettings.url;
@@ -39,6 +39,9 @@ class DomParserInitializer {
39
39
  global.ImageData = w.ImageData;
40
40
  return w;
41
41
  }
42
+ destroy() {
43
+ this.domParser?.destroy();
44
+ }
42
45
  }
43
46
  export {
44
47
  DomParserInitializer
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/initializers/DomParserInitializer.ts"],
4
- "sourcesContent": ["import fs from 'fs';\nimport path from 'path';\nimport { parseHTML } from '@dooboostore/dom-parser';\n\nexport class DomParserInitializer {\n constructor(\n private frontDistPath: string,\n private frontDistIndexFileName: string,\n private reconfigureSettings?: {url: string}\n ) {}\n\n public static loadFile(distPath: string, filePath: string): string {\n return fs.readFileSync(path.join(distPath, filePath), 'utf8');\n }\n\n async run(): Promise<Window> {\n // const indexHTML = fs.readFileSync(path.join(this.frontDistPath, 'index.html'), 'utf8');\n // const indexHTML = JsdomInitializer.loadFile(this.frontDistPath, this.frontDistIndexFileName);\n const pathStr = path.join(this.frontDistPath, this.frontDistIndexFileName);\n\n const html = fs.readFileSync(pathStr,'utf8');\n\n const w = parseHTML(html, {href: this.reconfigureSettings.url}) as unknown as Window & typeof globalThis; ;\n\n // @ts-ignore\n w.location ??= { href: 'about:blank'};\n if(this.reconfigureSettings?.url){\n // console.log('--',w,w.location);\n // @ts-ignore\n w.location.href = this.reconfigureSettings.url;\n }\n // console.log('!!!!!!!!!!!', html, w.document);\n // @ts-ignore\n // global.document = w.document;\n // @ts-ignore\n // global.window = w as unknown as Window & typeof globalThis;\n // @ts-ignore\n // global.window.requestAnimationFrame = () => {};\n // global.window.scrollTo = () => {};\n // @ts-ignore\n // global.history = w.history;\n global.Event = w.Event;\n // @ts-ignore\n global.PopStateEvent = w.Event;\n global.IntersectionObserver = w.IntersectionObserver;\n // @ts-ignore\n // global.Error = ErrorBase;\n // @ts-ignore\n // global.navigator = w.navigator;\n global.NodeFilter = w.NodeFilter;\n global.Node = w.Node;\n global.DocumentFragment = w.DocumentFragment;\n global.HTMLElement = w.HTMLElement;\n global.HTMLMetaElement = w.HTMLMetaElement;\n global.Element = w.Element;\n global.HTMLCanvasElement = w.HTMLCanvasElement;\n global.HTMLCanvasElement.prototype.getContext = () => {\n return null;\n };\n global.CanvasRenderingContext2D = w.CanvasRenderingContext2D;\n global.CanvasPattern = w.CanvasPattern;\n global.CanvasGradient = w.CanvasGradient;\n global.Path2D = w.Path2D;\n global.ImageData = w.ImageData;\n // console.log('cvvvvvvvvvvvvvv', w.Node.DOCUMENT_FRAGMENT_NODE);\n return w;\n }\n}\n//\n// export default new JsdomInitializer();\n"],
5
- "mappings": "AAAA,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,SAAS,iBAAiB;AAEnB,MAAM,qBAAqB;AAAA,EAChC,YACU,eACA,wBACA,qBACR;AAHQ;AACA;AACA;AAAA,EACP;AAAA,EAEH,OAAc,SAAS,UAAkB,UAA0B;AACjE,WAAO,GAAG,aAAa,KAAK,KAAK,UAAU,QAAQ,GAAG,MAAM;AAAA,EAC9D;AAAA,EAEA,MAAM,MAAuB;AAG3B,UAAM,UAAU,KAAK,KAAK,KAAK,eAAe,KAAK,sBAAsB;AAEzE,UAAM,OAAO,GAAG,aAAa,SAAQ,MAAM;AAE3C,UAAM,IAAI,UAAU,MAAM,EAAC,MAAM,KAAK,oBAAoB,IAAG,CAAC;AAA4C;AAG1G,MAAE,aAAa,EAAE,MAAM,cAAa;AACpC,QAAG,KAAK,qBAAqB,KAAI;AAG/B,QAAE,SAAS,OAAO,KAAK,oBAAoB;AAAA,IAC7C;AAWA,WAAO,QAAQ,EAAE;AAEjB,WAAO,gBAAgB,EAAE;AACzB,WAAO,uBAAuB,EAAE;AAKhC,WAAO,aAAa,EAAE;AACtB,WAAO,OAAO,EAAE;AAChB,WAAO,mBAAmB,EAAE;AAC5B,WAAO,cAAc,EAAE;AACvB,WAAO,kBAAkB,EAAE;AAC3B,WAAO,UAAU,EAAE;AACnB,WAAO,oBAAoB,EAAE;AAC7B,WAAO,kBAAkB,UAAU,aAAa,MAAM;AACpD,aAAO;AAAA,IACT;AACA,WAAO,2BAA2B,EAAE;AACpC,WAAO,gBAAgB,EAAE;AACzB,WAAO,iBAAiB,EAAE;AAC1B,WAAO,SAAS,EAAE;AAClB,WAAO,YAAY,EAAE;AAErB,WAAO;AAAA,EACT;AACF;",
4
+ "sourcesContent": ["import fs from 'fs';\nimport path from 'path';\nimport { DomParser } from '@dooboostore/dom-parser';\n\nexport class DomParserInitializer {\n private domParser: DomParser;\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 this.domParser = new DomParser(html, {href: this.reconfigureSettings?.url});\n const w = this.domParser.window as unknown as Window & typeof globalThis;\n\n // @ts-ignore\n w.location ??= { href: 'about:blank'};\n if(this.reconfigureSettings?.url){\n // console.log('--',w,w.location);\n // @ts-ignore\n w.location.href = this.reconfigureSettings.url;\n }\n // console.log('!!!!!!!!!!!', html, w.document);\n // @ts-ignore\n // global.document = w.document;\n // @ts-ignore\n // global.window = w as unknown as Window & typeof globalThis;\n // @ts-ignore\n // global.window.requestAnimationFrame = () => {};\n // global.window.scrollTo = () => {};\n // @ts-ignore\n // global.history = w.history;\n global.Event = w.Event;\n // @ts-ignore\n global.PopStateEvent = w.Event;\n global.IntersectionObserver = w.IntersectionObserver;\n // @ts-ignore\n // global.Error = ErrorBase;\n // @ts-ignore\n // global.navigator = w.navigator;\n global.NodeFilter = w.NodeFilter;\n global.Node = w.Node;\n global.DocumentFragment = w.DocumentFragment;\n global.HTMLElement = w.HTMLElement;\n global.HTMLMetaElement = w.HTMLMetaElement;\n global.Element = w.Element;\n global.HTMLCanvasElement = w.HTMLCanvasElement;\n global.HTMLCanvasElement.prototype.getContext = () => {\n return null;\n };\n global.CanvasRenderingContext2D = w.CanvasRenderingContext2D;\n global.CanvasPattern = w.CanvasPattern;\n global.CanvasGradient = w.CanvasGradient;\n global.Path2D = w.Path2D;\n global.ImageData = w.ImageData;\n // console.log('cvvvvvvvvvvvvvv', w.Node.DOCUMENT_FRAGMENT_NODE);\n return w;\n }\n\n destroy(): void {\n this.domParser?.destroy();\n }\n\n}\n//\n// export default new JsdomInitializer();\n"],
5
+ "mappings": "AAAA,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,SAAS,iBAAiB;AAEnB,MAAM,qBAAqB;AAAA,EAEhC,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,SAAK,YAAY,IAAI,UAAU,MAAM,EAAC,MAAM,KAAK,qBAAqB,IAAG,CAAC;AAC1E,UAAM,IAAI,KAAK,UAAU;AAGzB,MAAE,aAAa,EAAE,MAAM,cAAa;AACpC,QAAG,KAAK,qBAAqB,KAAI;AAG/B,QAAE,SAAS,OAAO,KAAK,oBAAoB;AAAA,IAC7C;AAWA,WAAO,QAAQ,EAAE;AAEjB,WAAO,gBAAgB,EAAE;AACzB,WAAO,uBAAuB,EAAE;AAKhC,WAAO,aAAa,EAAE;AACtB,WAAO,OAAO,EAAE;AAChB,WAAO,mBAAmB,EAAE;AAC5B,WAAO,cAAc,EAAE;AACvB,WAAO,kBAAkB,EAAE;AAC3B,WAAO,UAAU,EAAE;AACnB,WAAO,oBAAoB,EAAE;AAC7B,WAAO,kBAAkB,UAAU,aAAa,MAAM;AACpD,aAAO;AAAA,IACT;AACA,WAAO,2BAA2B,EAAE;AACpC,WAAO,gBAAgB,EAAE;AACzB,WAAO,iBAAiB,EAAE;AAC1B,WAAO,SAAS,EAAE;AAClB,WAAO,YAAY,EAAE;AAErB,WAAO;AAAA,EACT;AAAA,EAEA,UAAgB;AACd,SAAK,WAAW,QAAQ;AAAA,EAC1B;AAEF;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,69 @@
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 __param = function(paramIndex, decorator) {
11
+ return function(target, key) {
12
+ decorator(target, key, paramIndex);
13
+ };
14
+ };
15
+ var _a;
16
+ import { Sim, getSim } from "@dooboostore/simple-boot";
17
+ import { SimpleBootFront } from "@dooboostore/simple-boot-front";
18
+ import { ValidUtils } from "@dooboostore/core-web";
19
+ import { Inject } from "@dooboostore/simple-boot";
20
+ let SSRDomParserFilterDataHydrationProxy = class SSRDomParserFilterDataHydrationProxy2 {
21
+ constructor(simpleBootFront) {
22
+ this.simpleBootFront = simpleBootFront;
23
+ }
24
+ get(target, prop, receiver) {
25
+ const value = Reflect.get(target, prop, receiver);
26
+ let current = target;
27
+ let simConfig = getSim(current);
28
+ if (typeof value === "function" && simConfig?.symbol) {
29
+ const methodName = String(prop);
30
+ const symbolStr = simConfig.symbol.toString();
31
+ return (...args) => {
32
+ const pureArgs = args.filter((it) => typeof it !== "function");
33
+ const key = `${symbolStr}.${methodName}(${JSON.stringify(pureArgs)})`;
34
+ if (ValidUtils.isBrowser()) {
35
+ const hydratedData = this.simpleBootFront.cutDataHydration(key);
36
+ if (hydratedData !== void 0) {
37
+ return Promise.resolve(hydratedData);
38
+ }
39
+ }
40
+ const result = Reflect.apply(value, target, args);
41
+ if (!ValidUtils.isBrowser()) {
42
+ const saveData = (data) => {
43
+ this.simpleBootFront.saveDataHydration(key, data);
44
+ };
45
+ if (result instanceof Promise) {
46
+ return result.then((data) => {
47
+ saveData(data);
48
+ return data;
49
+ });
50
+ } else {
51
+ saveData(result);
52
+ return result;
53
+ }
54
+ }
55
+ return result;
56
+ };
57
+ }
58
+ return value;
59
+ }
60
+ };
61
+ SSRDomParserFilterDataHydrationProxy = __decorate([
62
+ Sim,
63
+ __param(0, Inject({ type: SimpleBootFront })),
64
+ __metadata("design:paramtypes", [typeof (_a = typeof SimpleBootFront !== "undefined" && SimpleBootFront) === "function" ? _a : Object])
65
+ ], SSRDomParserFilterDataHydrationProxy);
66
+ export {
67
+ SSRDomParserFilterDataHydrationProxy
68
+ };
69
+ //# sourceMappingURL=SSRDomParserFilterDataHydrationProxy.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/proxy/SSRDomParserFilterDataHydrationProxy.ts"],
4
+ "sourcesContent": ["import { Sim, getSim } from '@dooboostore/simple-boot';\nimport { SimpleBootFront } from '@dooboostore/simple-boot-front';\nimport { ValidUtils } from '@dooboostore/core-web';\nimport { Inject } from '@dooboostore/simple-boot';\n\n@Sim\nexport class SSRDomParserFilterDataHydrationProxy implements ProxyHandler<any> {\n constructor(@Inject({ type: SimpleBootFront }) private simpleBootFront: SimpleBootFront) {}\n\n get(target: any, prop: string | symbol, receiver: any): any {\n const value = Reflect.get(target, prop, receiver);\n let current: any = target;\n let simConfig = getSim(current);\n // console.log('SSRDomParserFilterDataHydrationProxy*****', simConfig);\n // while (!simConfig && current && typeof current === 'object') {\n // const origin = current._SimpleBoot_origin ?? current._domRender_origin ?? current._DomRender_origin ?? current.__target__;\n // if (origin && origin !== current) {\n // current = origin;\n // simConfig = getSim(current);\n // } else {\n // break;\n // }\n // }\n\n if (typeof value === 'function' && simConfig?.symbol) {\n const methodName = String(prop);\n const symbolStr = simConfig.symbol.toString();\n\n return (...args: any[]) => {\n const pureArgs = args.filter(it => typeof it !== 'function');\n const key = `${symbolStr}.${methodName}(${JSON.stringify(pureArgs)})`;\n\n if (ValidUtils.isBrowser()) {\n const hydratedData = this.simpleBootFront.cutDataHydration(key);\n if (hydratedData !== undefined) {\n return Promise.resolve(hydratedData);\n }\n }\n\n const result = Reflect.apply(value, target, args);\n\n if (!ValidUtils.isBrowser()) {\n const saveData = (data: any) => {\n this.simpleBootFront.saveDataHydration(key, data);\n };\n\n if (result instanceof Promise) {\n return result.then(data => {\n saveData(data);\n return data;\n });\n } else {\n saveData(result);\n return result;\n }\n }\n\n return result;\n };\n }\n return value;\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;AAAA,SAAS,KAAK,cAAc;AAC5B,SAAS,uBAAuB;AAChC,SAAS,kBAAkB;AAC3B,SAAS,cAAc;AAGhB,IAAM,uCAAN,MAAMA,sCAAoC;EAC/C,YAAuD,iBAAgC;AAAhC,SAAA,kBAAA;EAAmC;EAE1F,IAAI,QAAa,MAAuB,UAAa;AACnD,UAAM,QAAQ,QAAQ,IAAI,QAAQ,MAAM,QAAQ;AAChD,QAAI,UAAe;AACnB,QAAI,YAAY,OAAO,OAAO;AAY9B,QAAI,OAAO,UAAU,cAAc,WAAW,QAAQ;AACpD,YAAM,aAAa,OAAO,IAAI;AAC9B,YAAM,YAAY,UAAU,OAAO,SAAQ;AAE3C,aAAO,IAAI,SAAe;AACxB,cAAM,WAAW,KAAK,OAAO,QAAM,OAAO,OAAO,UAAU;AAC3D,cAAM,MAAM,GAAG,SAAS,IAAI,UAAU,IAAI,KAAK,UAAU,QAAQ,CAAC;AAElE,YAAI,WAAW,UAAS,GAAI;AAC1B,gBAAM,eAAe,KAAK,gBAAgB,iBAAiB,GAAG;AAC9D,cAAI,iBAAiB,QAAW;AAC9B,mBAAO,QAAQ,QAAQ,YAAY;UACrC;QACF;AAEA,cAAM,SAAS,QAAQ,MAAM,OAAO,QAAQ,IAAI;AAEhD,YAAI,CAAC,WAAW,UAAS,GAAI;AAC3B,gBAAM,WAAW,CAAC,SAAa;AAC7B,iBAAK,gBAAgB,kBAAkB,KAAK,IAAI;UAClD;AAEA,cAAI,kBAAkB,SAAS;AAC7B,mBAAO,OAAO,KAAK,UAAO;AACxB,uBAAS,IAAI;AACb,qBAAO;YACT,CAAC;UACH,OAAO;AACL,qBAAS,MAAM;AACf,mBAAO;UACT;QACF;AAEA,eAAO;MACT;IACF;AACA,WAAO;EACT;;AAvDW,uCAAoC,WAAA;EADhD;EAEc,QAAA,GAAA,OAAO,EAAE,MAAM,gBAAe,CAAE,CAAC;uDAA0B,oBAAe,eAAf,qBAAe,aAAA,KAAA,MAAA,CAAA;GAD5E,oCAAoC;",
6
+ "names": ["SSRDomParserFilterDataHydrationProxy"]
7
+ }
@@ -1,5 +1,2 @@
1
- export * from "./IntentSchemeFrontProxy.js";
2
- export * from "./IntentSchemeServerProxy.js";
3
- export * from "./SymbolIntentApiServiceProxy.js";
4
- export * from "./SymbolIntentApiServiceProxyBase.js";
1
+ export * from "./SSRDomParserFilterDataHydrationProxy.js";
5
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/proxy/index.ts"],
4
- "sourcesContent": ["export * from './IntentSchemeFrontProxy';\nexport * from './IntentSchemeServerProxy';\nexport * from './SymbolIntentApiServiceProxy';\nexport * from './SymbolIntentApiServiceProxyBase';"],
5
- "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
4
+ "sourcesContent": ["export * from './SSRDomParserFilterDataHydrationProxy';\n"],
5
+ "mappings": "AAAA,cAAc;",
6
6
  "names": []
7
7
  }