@rindo/core 1.8.12

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 (463) hide show
  1. package/LICENSE.md +27 -0
  2. package/bin/rindo +22 -0
  3. package/build-conditionals/index.d.ts +2 -0
  4. package/build-conditionals/index.mjs +66 -0
  5. package/build-conditionals/package.json +6 -0
  6. package/compiler/index.js +2 -0
  7. package/compiler/package.json +6 -0
  8. package/compiler/rindo.js +6765 -0
  9. package/dist/cli/index.js +6068 -0
  10. package/dist/client/css-shim-14a9812e.js +656 -0
  11. package/dist/client/css-shim-69821662.js +658 -0
  12. package/dist/client/declarations/rindo.core.d.ts +1347 -0
  13. package/dist/client/dom-68c8fe31.js +139 -0
  14. package/dist/client/dom-af01458a.js +137 -0
  15. package/dist/client/index.js +2937 -0
  16. package/dist/client/index.mjs +2820 -0
  17. package/dist/client/polyfills/core-js.js +10 -0
  18. package/dist/client/polyfills/css-shim.js +656 -0
  19. package/dist/client/polyfills/dom.js +146 -0
  20. package/dist/client/polyfills/es5-html-element.js +18 -0
  21. package/dist/client/polyfills/index.js +35 -0
  22. package/dist/client/polyfills/promise.js +9 -0
  23. package/dist/client/polyfills/system.js +6 -0
  24. package/dist/client/shadow-css-6ef31c68.js +386 -0
  25. package/dist/client/shadow-css-8fd1a9e4.js +388 -0
  26. package/dist/compiler/app-core/app-es5-disabled.d.ts +2 -0
  27. package/dist/compiler/app-core/app-polyfills.d.ts +3 -0
  28. package/dist/compiler/app-core/build-conditionals.d.ts +6 -0
  29. package/dist/compiler/app-core/bundle-app-core.d.ts +6 -0
  30. package/dist/compiler/app-core/component-styles.d.ts +4 -0
  31. package/dist/compiler/app-core/format-component-runtime-meta.d.ts +4 -0
  32. package/dist/compiler/app-core/optimize-module.d.ts +7 -0
  33. package/dist/compiler/browser/build-conditionals-client.d.ts +3 -0
  34. package/dist/compiler/browser/compile-options.d.ts +12 -0
  35. package/dist/compiler/browser/compile.d.ts +2 -0
  36. package/dist/compiler/browser/create-compiler.d.ts +14 -0
  37. package/dist/compiler/browser/index.d.ts +11 -0
  38. package/dist/compiler/build/build-ctx.d.ts +74 -0
  39. package/dist/compiler/build/build-finish.d.ts +3 -0
  40. package/dist/compiler/build/build-hmr.d.ts +2 -0
  41. package/dist/compiler/build/build-results.d.ts +2 -0
  42. package/dist/compiler/build/build-stats.d.ts +3 -0
  43. package/dist/compiler/build/build.d.ts +2 -0
  44. package/dist/compiler/build/cache-stats.d.ts +4 -0
  45. package/dist/compiler/build/compiler-build-id.d.ts +6 -0
  46. package/dist/compiler/build/compiler-ctx.d.ts +44 -0
  47. package/dist/compiler/build/init-index-html.d.ts +2 -0
  48. package/dist/compiler/build/validate-files.d.ts +2 -0
  49. package/dist/compiler/build/write-build.d.ts +2 -0
  50. package/dist/compiler/cache.d.ts +22 -0
  51. package/dist/compiler/compiler.d.ts +27 -0
  52. package/dist/compiler/component-hydrate/bundle-hydrate-factory.d.ts +3 -0
  53. package/dist/compiler/component-hydrate/generate-hydrate-app.d.ts +2 -0
  54. package/dist/compiler/component-hydrate/hydrate-factory-closure.d.ts +2 -0
  55. package/dist/compiler/component-hydrate/update-to-hydrate-components.d.ts +2 -0
  56. package/dist/compiler/component-hydrate/write-hydrate-outputs.d.ts +3 -0
  57. package/dist/compiler/component-lazy/generate-cjs.d.ts +3 -0
  58. package/dist/compiler/component-lazy/generate-esm-browser.d.ts +3 -0
  59. package/dist/compiler/component-lazy/generate-esm.d.ts +3 -0
  60. package/dist/compiler/component-lazy/generate-lazy-app.d.ts +3 -0
  61. package/dist/compiler/component-lazy/generate-lazy-module.d.ts +4 -0
  62. package/dist/compiler/component-lazy/generate-system.d.ts +3 -0
  63. package/dist/compiler/component-lazy/update-to-lazy-component.d.ts +2 -0
  64. package/dist/compiler/component-lazy/write-lazy-entry-module.d.ts +2 -0
  65. package/dist/compiler/component-native/update-to-native-component.d.ts +2 -0
  66. package/dist/compiler/config/config-reload.d.ts +3 -0
  67. package/dist/compiler/config/config-utils.d.ts +4 -0
  68. package/dist/compiler/config/validate-config.d.ts +4 -0
  69. package/dist/compiler/config/validate-copy.d.ts +2 -0
  70. package/dist/compiler/config/validate-dev-server.d.ts +2 -0
  71. package/dist/compiler/config/validate-docs.d.ts +2 -0
  72. package/dist/compiler/config/validate-namespace.d.ts +3 -0
  73. package/dist/compiler/config/validate-output-stats.d.ts +2 -0
  74. package/dist/compiler/config/validate-outputs-angular.d.ts +2 -0
  75. package/dist/compiler/config/validate-outputs-custom.d.ts +2 -0
  76. package/dist/compiler/config/validate-outputs-dist-module.d.ts +2 -0
  77. package/dist/compiler/config/validate-outputs-dist.d.ts +2 -0
  78. package/dist/compiler/config/validate-outputs-hydrate-script.d.ts +2 -0
  79. package/dist/compiler/config/validate-outputs-www.d.ts +2 -0
  80. package/dist/compiler/config/validate-outputs.d.ts +2 -0
  81. package/dist/compiler/config/validate-paths.d.ts +2 -0
  82. package/dist/compiler/config/validate-plugins.d.ts +2 -0
  83. package/dist/compiler/config/validate-prerender.d.ts +2 -0
  84. package/dist/compiler/config/validate-rollup-config.d.ts +2 -0
  85. package/dist/compiler/config/validate-service-worker.d.ts +2 -0
  86. package/dist/compiler/config/validate-testing.d.ts +2 -0
  87. package/dist/compiler/config/validate-workers.d.ts +2 -0
  88. package/dist/compiler/copy/assets-copy-tasks.d.ts +3 -0
  89. package/dist/compiler/copy/hashed-copy.d.ts +2 -0
  90. package/dist/compiler/copy/local-copy-tasks.d.ts +3 -0
  91. package/dist/compiler/docs/constants.d.ts +2 -0
  92. package/dist/compiler/docs/custom/index.d.ts +2 -0
  93. package/dist/compiler/docs/docs.d.ts +2 -0
  94. package/dist/compiler/docs/generate-doc-data.d.ts +3 -0
  95. package/dist/compiler/docs/json/index.d.ts +3 -0
  96. package/dist/compiler/docs/readme/docs-util.d.ts +13 -0
  97. package/dist/compiler/docs/readme/index.d.ts +3 -0
  98. package/dist/compiler/docs/readme/markdown-css-props.d.ts +2 -0
  99. package/dist/compiler/docs/readme/markdown-dependencies.d.ts +2 -0
  100. package/dist/compiler/docs/readme/markdown-events.d.ts +2 -0
  101. package/dist/compiler/docs/readme/markdown-methods.d.ts +2 -0
  102. package/dist/compiler/docs/readme/markdown-props.d.ts +2 -0
  103. package/dist/compiler/docs/readme/markdown-slots.d.ts +2 -0
  104. package/dist/compiler/docs/readme/markdown-usage.d.ts +6 -0
  105. package/dist/compiler/docs/readme/output-docs.d.ts +3 -0
  106. package/dist/compiler/docs/style-docs.d.ts +2 -0
  107. package/dist/compiler/docs/vscode/index.d.ts +2 -0
  108. package/dist/compiler/entries/component-bundles.d.ts +3 -0
  109. package/dist/compiler/entries/component-graph.d.ts +2 -0
  110. package/dist/compiler/entries/default-bundles.d.ts +3 -0
  111. package/dist/compiler/entries/entry-modules.d.ts +6 -0
  112. package/dist/compiler/entries/resolve-component-dependencies.d.ts +2 -0
  113. package/dist/compiler/events.d.ts +15 -0
  114. package/dist/compiler/fs-watch/fs-watch-init.d.ts +2 -0
  115. package/dist/compiler/fs-watch/fs-watch-log.d.ts +2 -0
  116. package/dist/compiler/fs-watch/fs-watch-rebuild.d.ts +7 -0
  117. package/dist/compiler/html/inject-module-preloads.d.ts +3 -0
  118. package/dist/compiler/html/inject-sw-script.d.ts +4 -0
  119. package/dist/compiler/html/inline-esm-import.d.ts +2 -0
  120. package/dist/compiler/html/inline-style-sheets.d.ts +2 -0
  121. package/dist/compiler/html/update-global-styles-link.d.ts +2 -0
  122. package/dist/compiler/html/used-components.d.ts +2 -0
  123. package/dist/compiler/html/utils.d.ts +2 -0
  124. package/dist/compiler/html/validate-manifest-json.d.ts +2 -0
  125. package/dist/compiler/index.d.ts +10 -0
  126. package/dist/compiler/index.js +18008 -0
  127. package/dist/compiler/output-targets/empty-dir.d.ts +6 -0
  128. package/dist/compiler/output-targets/index.d.ts +2 -0
  129. package/dist/compiler/output-targets/output-angular.d.ts +4 -0
  130. package/dist/compiler/output-targets/output-app.d.ts +4 -0
  131. package/dist/compiler/output-targets/output-collection.d.ts +3 -0
  132. package/dist/compiler/output-targets/output-copy.d.ts +2 -0
  133. package/dist/compiler/output-targets/output-custom.d.ts +2 -0
  134. package/dist/compiler/output-targets/output-docs.d.ts +2 -0
  135. package/dist/compiler/output-targets/output-hydrate.d.ts +2 -0
  136. package/dist/compiler/output-targets/output-lazy-loader.d.ts +2 -0
  137. package/dist/compiler/output-targets/output-module.d.ts +4 -0
  138. package/dist/compiler/output-targets/output-prerender.d.ts +2 -0
  139. package/dist/compiler/output-targets/output-service-workers.d.ts +2 -0
  140. package/dist/compiler/output-targets/output-types.d.ts +2 -0
  141. package/dist/compiler/output-targets/output-utils.d.ts +54 -0
  142. package/dist/compiler/output-targets/output-www.d.ts +2 -0
  143. package/dist/compiler/plugin/plugin.d.ts +6 -0
  144. package/dist/compiler/polyfills.d.ts +0 -0
  145. package/dist/compiler/prerender/crawl-urls.d.ts +3 -0
  146. package/dist/compiler/prerender/host-config.d.ts +12 -0
  147. package/dist/compiler/prerender/prerender-config.d.ts +2 -0
  148. package/dist/compiler/prerender/prerender-main.d.ts +2 -0
  149. package/dist/compiler/prerender/prerender-queue.d.ts +3 -0
  150. package/dist/compiler/prerender/prerender-template-html.d.ts +2 -0
  151. package/dist/compiler/prerender/prerendered-write-path.d.ts +2 -0
  152. package/dist/compiler/prerender/robots-txt.d.ts +2 -0
  153. package/dist/compiler/prerender/sitemap-xml.d.ts +3 -0
  154. package/dist/compiler/rollup-plugins/component-entry.d.ts +3 -0
  155. package/dist/compiler/rollup-plugins/css-transformer.d.ts +3 -0
  156. package/dist/compiler/rollup-plugins/global-scripts.d.ts +4 -0
  157. package/dist/compiler/rollup-plugins/image-plugin.d.ts +3 -0
  158. package/dist/compiler/rollup-plugins/in-memory-fs-read.d.ts +3 -0
  159. package/dist/compiler/rollup-plugins/loader.d.ts +4 -0
  160. package/dist/compiler/rollup-plugins/plugin-helper.d.ts +5 -0
  161. package/dist/compiler/rollup-plugins/rindo-build-conditionals.d.ts +7 -0
  162. package/dist/compiler/rollup-plugins/rindo-client.d.ts +3 -0
  163. package/dist/compiler/rollup-plugins/rindo-external-runtime.d.ts +2 -0
  164. package/dist/compiler/rollup-plugins/rindo-hydrate.d.ts +3 -0
  165. package/dist/compiler/rollup-plugins/rindo-public-plugin.d.ts +2 -0
  166. package/dist/compiler/service-worker/generate-sw.d.ts +7 -0
  167. package/dist/compiler/service-worker/service-worker-util.d.ts +2 -0
  168. package/dist/compiler/style/cached-styles.d.ts +5 -0
  169. package/dist/compiler/style/component-styles.d.ts +2 -0
  170. package/dist/compiler/style/css-imports.d.ts +9 -0
  171. package/dist/compiler/style/css-to-esm.d.ts +5 -0
  172. package/dist/compiler/style/generate-styles.d.ts +2 -0
  173. package/dist/compiler/style/global-styles.d.ts +3 -0
  174. package/dist/compiler/style/normalize-styles.d.ts +2 -0
  175. package/dist/compiler/style/optimize-css.d.ts +2 -0
  176. package/dist/compiler/style/scope-css.d.ts +3 -0
  177. package/dist/compiler/style/style-utils.d.ts +10 -0
  178. package/dist/compiler/transformers/add-component-meta-proxy.d.ts +3 -0
  179. package/dist/compiler/transformers/add-component-meta-static.d.ts +4 -0
  180. package/dist/compiler/transformers/add-imports.d.ts +3 -0
  181. package/dist/compiler/transformers/collections/add-external-import.d.ts +2 -0
  182. package/dist/compiler/transformers/collections/parse-collection-components.d.ts +2 -0
  183. package/dist/compiler/transformers/collections/parse-collection-deprecated.d.ts +2 -0
  184. package/dist/compiler/transformers/collections/parse-collection-manifest.d.ts +7 -0
  185. package/dist/compiler/transformers/collections/parse-collection-module.d.ts +2 -0
  186. package/dist/compiler/transformers/component-build-conditionals.d.ts +2 -0
  187. package/dist/compiler/transformers/component-hydrate/hydrate-component.d.ts +3 -0
  188. package/dist/compiler/transformers/component-hydrate/hydrate-runtime-cmp-meta.d.ts +3 -0
  189. package/dist/compiler/transformers/component-hydrate/tranform-to-hydrate-component.d.ts +2 -0
  190. package/dist/compiler/transformers/component-lazy/lazy-component.d.ts +3 -0
  191. package/dist/compiler/transformers/component-lazy/lazy-constructor.d.ts +3 -0
  192. package/dist/compiler/transformers/component-lazy/lazy-element-getter.d.ts +3 -0
  193. package/dist/compiler/transformers/component-lazy/transform-lazy-component.d.ts +4 -0
  194. package/dist/compiler/transformers/component-native/native-component.d.ts +3 -0
  195. package/dist/compiler/transformers/component-native/native-connected-callback.d.ts +3 -0
  196. package/dist/compiler/transformers/component-native/native-constructor.d.ts +3 -0
  197. package/dist/compiler/transformers/component-native/native-element-getter.d.ts +3 -0
  198. package/dist/compiler/transformers/component-native/native-static-style.d.ts +3 -0
  199. package/dist/compiler/transformers/component-native/tranform-to-native-component.d.ts +4 -0
  200. package/dist/compiler/transformers/core-runtime-apis.d.ts +30 -0
  201. package/dist/compiler/transformers/create-event.d.ts +3 -0
  202. package/dist/compiler/transformers/decorators-to-static/component-decorator.d.ts +3 -0
  203. package/dist/compiler/transformers/decorators-to-static/convert-decorators.d.ts +3 -0
  204. package/dist/compiler/transformers/decorators-to-static/decorator-utils.d.ts +10 -0
  205. package/dist/compiler/transformers/decorators-to-static/element-decorator.d.ts +3 -0
  206. package/dist/compiler/transformers/decorators-to-static/event-decorator.d.ts +4 -0
  207. package/dist/compiler/transformers/decorators-to-static/listen-decorator.d.ts +6 -0
  208. package/dist/compiler/transformers/decorators-to-static/method-decorator.d.ts +3 -0
  209. package/dist/compiler/transformers/decorators-to-static/prop-decorator.d.ts +4 -0
  210. package/dist/compiler/transformers/decorators-to-static/state-decorator.d.ts +3 -0
  211. package/dist/compiler/transformers/decorators-to-static/style-to-static.d.ts +3 -0
  212. package/dist/compiler/transformers/decorators-to-static/watch-decorator.d.ts +3 -0
  213. package/dist/compiler/transformers/define-custom-element.d.ts +3 -0
  214. package/dist/compiler/transformers/host-data-transform.d.ts +3 -0
  215. package/dist/compiler/transformers/legacy-props.d.ts +3 -0
  216. package/dist/compiler/transformers/remove-static-meta-properties.d.ts +2 -0
  217. package/dist/compiler/transformers/reserved-public-members.d.ts +3 -0
  218. package/dist/compiler/transformers/rindo-import-path.d.ts +3 -0
  219. package/dist/compiler/transformers/static-to-meta/call-expression.d.ts +3 -0
  220. package/dist/compiler/transformers/static-to-meta/class-methods.d.ts +3 -0
  221. package/dist/compiler/transformers/static-to-meta/component.d.ts +3 -0
  222. package/dist/compiler/transformers/static-to-meta/element-ref.d.ts +2 -0
  223. package/dist/compiler/transformers/static-to-meta/encapsulation.d.ts +3 -0
  224. package/dist/compiler/transformers/static-to-meta/events.d.ts +3 -0
  225. package/dist/compiler/transformers/static-to-meta/import.d.ts +3 -0
  226. package/dist/compiler/transformers/static-to-meta/listeners.d.ts +3 -0
  227. package/dist/compiler/transformers/static-to-meta/methods.d.ts +3 -0
  228. package/dist/compiler/transformers/static-to-meta/props.d.ts +3 -0
  229. package/dist/compiler/transformers/static-to-meta/states.d.ts +3 -0
  230. package/dist/compiler/transformers/static-to-meta/string-literal.d.ts +3 -0
  231. package/dist/compiler/transformers/static-to-meta/styles.d.ts +3 -0
  232. package/dist/compiler/transformers/static-to-meta/vdom.d.ts +3 -0
  233. package/dist/compiler/transformers/static-to-meta/visitor.d.ts +3 -0
  234. package/dist/compiler/transformers/static-to-meta/watchers.d.ts +3 -0
  235. package/dist/compiler/transformers/style-imports.d.ts +3 -0
  236. package/dist/compiler/transformers/transform-utils.d.ts +31 -0
  237. package/dist/compiler/transformers/update-component-class.d.ts +3 -0
  238. package/dist/compiler/transformers/update-rindo-core-import.d.ts +3 -0
  239. package/dist/compiler/transformers/watcher-meta-transform.d.ts +3 -0
  240. package/dist/compiler/transpile/compiler-options.d.ts +4 -0
  241. package/dist/compiler/transpile/transpile-app.d.ts +2 -0
  242. package/dist/compiler/transpile/transpile-module.d.ts +5 -0
  243. package/dist/compiler/transpile/transpile-service.d.ts +3 -0
  244. package/dist/compiler/transpile/transpile-to-es5-main.d.ts +2 -0
  245. package/dist/compiler/transpile/validate-types-main.d.ts +2 -0
  246. package/dist/compiler/types/generate-app-types.d.ts +2 -0
  247. package/dist/compiler/types/generate-component-types.d.ts +8 -0
  248. package/dist/compiler/types/generate-event-types.d.ts +2 -0
  249. package/dist/compiler/types/generate-method-types.d.ts +2 -0
  250. package/dist/compiler/types/generate-prop-types.d.ts +2 -0
  251. package/dist/compiler/types/generate-types.d.ts +2 -0
  252. package/dist/compiler/types/rindo-types.d.ts +3 -0
  253. package/dist/compiler/types/types-utils.d.ts +4 -0
  254. package/dist/compiler/types/update-import-refs.d.ts +11 -0
  255. package/dist/compiler/types/validate-package-json.d.ts +9 -0
  256. package/dist/declarations/assets.d.ts +17 -0
  257. package/dist/declarations/browser-compile.d.ts +47 -0
  258. package/dist/declarations/build-conditionals.d.ts +91 -0
  259. package/dist/declarations/build-events.d.ts +19 -0
  260. package/dist/declarations/build.d.ts +247 -0
  261. package/dist/declarations/cache.d.ts +11 -0
  262. package/dist/declarations/collection-manifest.d.ts +106 -0
  263. package/dist/declarations/collection.d.ts +139 -0
  264. package/dist/declarations/compiler.d.ts +53 -0
  265. package/dist/declarations/component-compiler-meta.d.ts +198 -0
  266. package/dist/declarations/component-constructor.d.ts +61 -0
  267. package/dist/declarations/component-interfaces.d.ts +123 -0
  268. package/dist/declarations/config.d.ts +409 -0
  269. package/dist/declarations/css-var-shim.d.ts +9 -0
  270. package/dist/declarations/decorators.d.ts +150 -0
  271. package/dist/declarations/dev-server.d.ts +135 -0
  272. package/dist/declarations/diagnostics.d.ts +21 -0
  273. package/dist/declarations/docs.d.ts +101 -0
  274. package/dist/declarations/entry.d.ts +28 -0
  275. package/dist/declarations/events.d.ts +13 -0
  276. package/dist/declarations/file-system.d.ts +91 -0
  277. package/dist/declarations/fs-watch.d.ts +15 -0
  278. package/dist/declarations/host-element.d.ts +53 -0
  279. package/dist/declarations/hydrate.d.ts +99 -0
  280. package/dist/declarations/in-memory-fs.d.ts +59 -0
  281. package/dist/declarations/index.d.ts +45 -0
  282. package/dist/declarations/jsdoc.d.ts +16 -0
  283. package/dist/declarations/jsx.d.ts +1050 -0
  284. package/dist/declarations/logger.d.ts +25 -0
  285. package/dist/declarations/minify-js.d.ts +11 -0
  286. package/dist/declarations/module.d.ts +35 -0
  287. package/dist/declarations/optimize-css.d.ts +12 -0
  288. package/dist/declarations/output-targets.d.ts +189 -0
  289. package/dist/declarations/plugin.d.ts +23 -0
  290. package/dist/declarations/prerender.d.ts +79 -0
  291. package/dist/declarations/render.d.ts +62 -0
  292. package/dist/declarations/runtime.d.ts +92 -0
  293. package/dist/declarations/screenshots.d.ts +192 -0
  294. package/dist/declarations/server.d.ts +19 -0
  295. package/dist/declarations/style.d.ts +35 -0
  296. package/dist/declarations/system.d.ts +174 -0
  297. package/dist/declarations/testing.d.ts +523 -0
  298. package/dist/declarations/transpile.d.ts +24 -0
  299. package/dist/declarations/types.d.ts +24 -0
  300. package/dist/declarations/vdom.d.ts +55 -0
  301. package/dist/declarations/worker.d.ts +33 -0
  302. package/dist/dev-server/content-type-db.json +1 -0
  303. package/dist/dev-server/index.js +887 -0
  304. package/dist/dev-server/static/app-error.css +257 -0
  305. package/dist/dev-server/static/dev-server-client.html +13 -0
  306. package/dist/dev-server/static/favicon.ico +0 -0
  307. package/dist/dev-server/templates/directory-index.html +132 -0
  308. package/dist/dev-server/templates/initial-load.html +160 -0
  309. package/dist/hydrate/index.d.ts +101 -0
  310. package/dist/hydrate/index.mjs +1281 -0
  311. package/dist/hydrate/platform.mjs +347 -0
  312. package/dist/index.d.ts +99 -0
  313. package/dist/index.js +1 -0
  314. package/dist/mock-doc/index.d.ts +851 -0
  315. package/dist/mock-doc/index.js +3982 -0
  316. package/dist/mock-doc/index.mjs +3954 -0
  317. package/dist/runtime/index.js +2576 -0
  318. package/dist/runtime/index.mjs +2521 -0
  319. package/dist/runtime/shadow-css-6ef31c68.js +386 -0
  320. package/dist/runtime/shadow-css-8fd1a9e4.js +388 -0
  321. package/dist/screenshot/connector-base.d.ts +42 -0
  322. package/dist/screenshot/connector-local.d.ts +7 -0
  323. package/dist/screenshot/index.d.ts +3 -0
  324. package/dist/screenshot/index.js +520 -0
  325. package/dist/screenshot/pixel-match.d.ts +1 -0
  326. package/dist/screenshot/screenshot-fs.d.ts +15 -0
  327. package/dist/sys/node/graceful-fs.js +975 -0
  328. package/dist/sys/node/index.js +33545 -0
  329. package/dist/sys/node/node-fetch.js +1779 -0
  330. package/dist/sys/node/open-in-editor.js +734 -0
  331. package/dist/sys/node/sys-worker.js +67035 -0
  332. package/dist/sys/node/visualstudio.vbs +82 -0
  333. package/dist/sys/node/websocket.js +3728 -0
  334. package/dist/sys/node/xdg-open +1066 -0
  335. package/dist/testing/build-conditionals.d.ts +4 -0
  336. package/dist/testing/build-conditionals.js +43 -0
  337. package/dist/testing/core.d.ts +35 -0
  338. package/dist/testing/core.js +52 -0
  339. package/dist/testing/index.d.ts +13 -0
  340. package/dist/testing/index.js +40511 -0
  341. package/dist/testing/jest/jest-config.d.ts +4 -0
  342. package/dist/testing/jest/jest-environment.d.ts +12 -0
  343. package/dist/testing/jest/jest-preprocessor.d.ts +10 -0
  344. package/dist/testing/jest/jest-runner.d.ts +5 -0
  345. package/dist/testing/jest/jest-screenshot.d.ts +2 -0
  346. package/dist/testing/jest/jest-serializer.d.ts +5 -0
  347. package/dist/testing/jest/jest-setup-test-framework.d.ts +1 -0
  348. package/dist/testing/matchers/attributes.d.ts +14 -0
  349. package/dist/testing/matchers/class-list.d.ts +12 -0
  350. package/dist/testing/matchers/events.d.ts +13 -0
  351. package/dist/testing/matchers/html.d.ts +12 -0
  352. package/dist/testing/matchers/index.d.ts +21 -0
  353. package/dist/testing/matchers/screenshot.d.ts +5 -0
  354. package/dist/testing/matchers/text.d.ts +4 -0
  355. package/dist/testing/mock-fetch.d.ts +46 -0
  356. package/dist/testing/mocks.d.ts +12 -0
  357. package/dist/testing/platform.d.ts +23 -0
  358. package/dist/testing/platform.js +321 -0
  359. package/dist/testing/puppeteer/puppeteer-browser.d.ts +6 -0
  360. package/dist/testing/puppeteer/puppeteer-declarations.d.ts +396 -0
  361. package/dist/testing/puppeteer/puppeteer-element.d.ts +65 -0
  362. package/dist/testing/puppeteer/puppeteer-emulate.d.ts +2 -0
  363. package/dist/testing/puppeteer/puppeteer-events.d.ts +21 -0
  364. package/dist/testing/puppeteer/puppeteer-find.d.ts +5 -0
  365. package/dist/testing/puppeteer/puppeteer-page.d.ts +2 -0
  366. package/dist/testing/puppeteer/puppeteer-screenshot.d.ts +4 -0
  367. package/dist/testing/spec-page.d.ts +5 -0
  368. package/dist/testing/task-queue.d.ts +15 -0
  369. package/dist/testing/test-transpile.d.ts +5 -0
  370. package/dist/testing/testing-fs.d.ts +31 -0
  371. package/dist/testing/testing-logger.d.ts +23 -0
  372. package/dist/testing/testing-sys.d.ts +19 -0
  373. package/dist/testing/testing-utils.d.ts +5 -0
  374. package/dist/testing/testing.d.ts +12 -0
  375. package/dist/utils/index.js +1575 -0
  376. package/dist/utils/index.mjs +1511 -0
  377. package/internal/client/build-conditionals.mjs +82 -0
  378. package/internal/client/css-shim.rindo-client.mjs +656 -0
  379. package/internal/client/dom.rindo-client.mjs +137 -0
  380. package/internal/client/index.mjs +2859 -0
  381. package/internal/client/polyfills/core-js.js +10 -0
  382. package/internal/client/polyfills/css-shim.js +656 -0
  383. package/internal/client/polyfills/dom.js +146 -0
  384. package/internal/client/polyfills/es5-html-element.js +18 -0
  385. package/internal/client/polyfills/index.js +35 -0
  386. package/internal/client/polyfills/promise.js +9 -0
  387. package/internal/client/polyfills/system.js +6 -0
  388. package/internal/client/shadow-css.rindo-client.mjs +386 -0
  389. package/internal/images.d.ts +5 -0
  390. package/internal/index.d.ts +18 -0
  391. package/internal/index.js +1 -0
  392. package/internal/package.json +6 -0
  393. package/mock-doc/index.js +2 -0
  394. package/mock-doc/package.json +10 -0
  395. package/package.json +186 -0
  396. package/readme.md +174 -0
  397. package/runtime/package.json +5 -0
  398. package/screenshot/compare/assets/favicon.ico +0 -0
  399. package/screenshot/compare/assets/logo.png +0 -0
  400. package/screenshot/compare/build/app.css +1 -0
  401. package/screenshot/compare/build/app.esm.js +1 -0
  402. package/screenshot/compare/build/app.js +818 -0
  403. package/screenshot/compare/build/p-020f8d73.js +1 -0
  404. package/screenshot/compare/build/p-09qdknbg.system.entry.js +1 -0
  405. package/screenshot/compare/build/p-0a13mpsc.system.entry.js +1 -0
  406. package/screenshot/compare/build/p-113f7459.js +1 -0
  407. package/screenshot/compare/build/p-168ec2c4.system.js +1 -0
  408. package/screenshot/compare/build/p-2ab1fdf1.system.js +1 -0
  409. package/screenshot/compare/build/p-2pxcsgrj.entry.js +1 -0
  410. package/screenshot/compare/build/p-42fb7034.system.js +1 -0
  411. package/screenshot/compare/build/p-54d9d7c2.system.js +1 -0
  412. package/screenshot/compare/build/p-67c1f911.js +1 -0
  413. package/screenshot/compare/build/p-68613371.system.js +1 -0
  414. package/screenshot/compare/build/p-7dvsjpu0.entry.js +1 -0
  415. package/screenshot/compare/build/p-aa67fb06.js +1 -0
  416. package/screenshot/compare/build/p-aeb3cec1.system.js +1 -0
  417. package/screenshot/compare/build/p-b6e44a24.js +1 -0
  418. package/screenshot/compare/build/p-c1c25b8a.js +1 -0
  419. package/screenshot/compare/build/p-c9bopbjy.system.entry.js +1 -0
  420. package/screenshot/compare/build/p-c9iqz1pp.system.entry.js +1 -0
  421. package/screenshot/compare/build/p-dizjz8rg.entry.js +1 -0
  422. package/screenshot/compare/build/p-dnta0rwp.system.entry.js +1 -0
  423. package/screenshot/compare/build/p-e9670d22.system.js +1 -0
  424. package/screenshot/compare/build/p-efb0eac6.js +1 -0
  425. package/screenshot/compare/build/p-ei9jkpd0.system.entry.js +1 -0
  426. package/screenshot/compare/build/p-ejpsp3kx.js +1 -0
  427. package/screenshot/compare/build/p-ejwcppol.entry.js +1 -0
  428. package/screenshot/compare/build/p-f6612d5d.system.js +1 -0
  429. package/screenshot/compare/build/p-foiivsfc.css +1 -0
  430. package/screenshot/compare/build/p-gpjjyogx.entry.js +1 -0
  431. package/screenshot/compare/build/p-howklem2.system.entry.js +1 -0
  432. package/screenshot/compare/build/p-knv9wvoc.entry.js +1 -0
  433. package/screenshot/compare/build/p-nsqsfhhy.entry.js +1 -0
  434. package/screenshot/compare/build/p-ojt278pp.entry.js +1 -0
  435. package/screenshot/compare/build/p-oywass99.entry.js +1 -0
  436. package/screenshot/compare/build/p-q3ujhub6.entry.js +1 -0
  437. package/screenshot/compare/build/p-qw4xnmxv.entry.js +1 -0
  438. package/screenshot/compare/build/p-t1wvevhc.system.entry.js +1 -0
  439. package/screenshot/compare/build/p-tnjarrex.system.entry.js +1 -0
  440. package/screenshot/compare/build/p-vhfpd6kk.system.entry.js +1 -0
  441. package/screenshot/compare/build/p-vk6rhemd.system.entry.js +1 -0
  442. package/screenshot/compare/build/p-w6bnm16k.entry.js +1 -0
  443. package/screenshot/compare/build/p-xje6d7zl.system.entry.js +1 -0
  444. package/screenshot/compare/build/p-y5jlrcha.system.entry.js +1 -0
  445. package/screenshot/compare/build/p-yh170wkt.entry.js +1 -0
  446. package/screenshot/compare/host.config.json +15 -0
  447. package/screenshot/compare/index.html +1 -0
  448. package/screenshot/compare/manifest.json +13 -0
  449. package/screenshot/connector.js +3 -0
  450. package/screenshot/index.js +2 -0
  451. package/screenshot/local-connector.js +3 -0
  452. package/screenshot/package.json +13 -0
  453. package/screenshot/pixel-match.js +2660 -0
  454. package/sys/node/index.js +2 -0
  455. package/sys/node/package.json +5 -0
  456. package/testing/index.js +2 -0
  457. package/testing/jest-environment.js +3 -0
  458. package/testing/jest-preprocessor.js +3 -0
  459. package/testing/jest-preset.js +40 -0
  460. package/testing/jest-runner.js +3 -0
  461. package/testing/jest-setuptestframework.js +3 -0
  462. package/testing/jest.preprocessor.js +7 -0
  463. package/testing/package.json +6 -0
@@ -0,0 +1,1281 @@
1
+ import { hydrateFactory } from '@rindo/core/hydrate-factory';
2
+ import { constrainTimeouts, patchWindow, MockWindow, serializeNodeToHtml } from '@rindo/core/mock-doc';
3
+
4
+ const URL_ = /*@__PURE__*/(function(){
5
+ if (typeof URL === 'function') {
6
+ return URL;
7
+ }
8
+ const requireFunc = typeof __webpack_require__ === 'function' ? __non_webpack_require__ : require;
9
+ if (typeof requireFunc === 'function') {
10
+ try {
11
+ return requireFunc('url').URL;
12
+ } catch (e) {}
13
+ }
14
+ return function() {}
15
+ })();
16
+
17
+ function normalizeHydrateOptions(inputOpts) {
18
+ const outputOpts = Object.assign({
19
+ hasTimedOut: false,
20
+ serializeToHtml: false,
21
+ destroyWindow: false,
22
+ destroyDocument: false,
23
+ }, inputOpts || {});
24
+ if (typeof outputOpts.clientHydrateAnnotations !== 'boolean') {
25
+ outputOpts.clientHydrateAnnotations = true;
26
+ }
27
+ if (typeof outputOpts.constrainTimeouts !== 'boolean') {
28
+ outputOpts.constrainTimeouts = true;
29
+ }
30
+ if (typeof outputOpts.maxHydrateCount !== 'number') {
31
+ outputOpts.maxHydrateCount = 300;
32
+ }
33
+ if (typeof outputOpts.timeout !== 'number') {
34
+ outputOpts.timeout = 15000;
35
+ }
36
+ if (!Array.isArray(outputOpts.excludeComponents)) {
37
+ outputOpts.excludeComponents = [];
38
+ }
39
+ outputOpts.excludeComponents = outputOpts.excludeComponents
40
+ .filter(c => typeof c === 'string' && c.includes('-'))
41
+ .map(c => c.toLowerCase());
42
+ return outputOpts;
43
+ }
44
+ function generateHydrateResults(opts) {
45
+ if (typeof opts.url !== 'string') {
46
+ opts.url = `https://hydrate-rindojs.web.app/`;
47
+ }
48
+ const results = {
49
+ diagnostics: [],
50
+ url: opts.url,
51
+ host: null,
52
+ hostname: null,
53
+ href: null,
54
+ port: null,
55
+ pathname: null,
56
+ search: null,
57
+ hash: null,
58
+ html: null,
59
+ hydratedCount: 0,
60
+ anchors: [],
61
+ components: [],
62
+ imgs: [],
63
+ scripts: [],
64
+ styles: [],
65
+ title: null
66
+ };
67
+ try {
68
+ const url = new URL_(opts.url, `https://hydrate-rindojs.web.app/`);
69
+ results.url = url.href;
70
+ results.host = url.host;
71
+ results.hostname = url.hostname;
72
+ results.href = url.href;
73
+ results.port = url.port;
74
+ results.pathname = url.pathname;
75
+ results.search = url.search;
76
+ results.hash = url.hash;
77
+ }
78
+ catch (e) {
79
+ renderCatchError(results, e);
80
+ }
81
+ return results;
82
+ }
83
+ function renderBuildError(results, msg) {
84
+ const diagnostic = {
85
+ level: 'error',
86
+ type: 'build',
87
+ header: 'Hydrate Error',
88
+ messageText: msg,
89
+ relFilePath: null,
90
+ absFilePath: null,
91
+ lines: []
92
+ };
93
+ if (results.pathname) {
94
+ if (results.pathname !== '/') {
95
+ diagnostic.header += ': ' + results.pathname;
96
+ }
97
+ }
98
+ else if (results.url) {
99
+ diagnostic.header += ': ' + results.url;
100
+ }
101
+ results.diagnostics.push(diagnostic);
102
+ return diagnostic;
103
+ }
104
+ function renderCatchError(results, err) {
105
+ const diagnostic = renderBuildError(results, null);
106
+ if (err != null) {
107
+ if (err.stack != null) {
108
+ diagnostic.messageText = err.stack.toString();
109
+ }
110
+ else {
111
+ if (err.message != null) {
112
+ diagnostic.messageText = err.message.toString();
113
+ }
114
+ else {
115
+ diagnostic.messageText = err.toString();
116
+ }
117
+ }
118
+ }
119
+ return diagnostic;
120
+ }
121
+
122
+ function initializeWindow(win, opts, results) {
123
+ try {
124
+ win.location.href = opts.url;
125
+ }
126
+ catch (e) {
127
+ renderCatchError(results, e);
128
+ }
129
+ if (typeof opts.userAgent === 'string') {
130
+ try {
131
+ win.navigator.userAgent = opts.userAgent;
132
+ }
133
+ catch (e) { }
134
+ }
135
+ if (typeof opts.cookie === 'string') {
136
+ try {
137
+ win.document.cookie = opts.cookie;
138
+ }
139
+ catch (e) { }
140
+ }
141
+ if (typeof opts.referrer === 'string') {
142
+ try {
143
+ win.document.referrer = opts.referrer;
144
+ }
145
+ catch (e) { }
146
+ }
147
+ if (typeof opts.direction === 'string') {
148
+ try {
149
+ win.document.documentElement.setAttribute('dir', opts.direction);
150
+ }
151
+ catch (e) { }
152
+ }
153
+ if (typeof opts.language === 'string') {
154
+ try {
155
+ win.document.documentElement.setAttribute('lang', opts.language);
156
+ }
157
+ catch (e) { }
158
+ }
159
+ try {
160
+ win.customElements = null;
161
+ }
162
+ catch (e) { }
163
+ if (opts.constrainTimeouts) {
164
+ constrainTimeouts(win);
165
+ }
166
+ try {
167
+ win.console.error = function () {
168
+ renderCatchError(results, [...arguments].join(', '));
169
+ };
170
+ win.console.debug = function () {
171
+ const diagnostic = renderCatchError(results, [...arguments].join(', '));
172
+ diagnostic.level = 'debug';
173
+ diagnostic.messageText = 'Hydrate Debug';
174
+ };
175
+ }
176
+ catch (e) {
177
+ renderCatchError(results, e);
178
+ }
179
+ return win;
180
+ }
181
+
182
+ function inspectElement(results, elm, depth) {
183
+ const children = elm.children;
184
+ for (let i = 0, ii = children.length; i < ii; i++) {
185
+ const childElm = children[i];
186
+ const tagName = childElm.nodeName.toLowerCase();
187
+ if (tagName.includes('-')) {
188
+ const cmp = results.components.find(c => c.tag === tagName);
189
+ if (cmp != null) {
190
+ cmp.count++;
191
+ if (depth > cmp.depth) {
192
+ cmp.depth = depth;
193
+ }
194
+ }
195
+ }
196
+ else {
197
+ switch (tagName) {
198
+ case 'a':
199
+ const anchor = collectAttributes(childElm);
200
+ anchor.href = childElm.href;
201
+ if (typeof anchor.href === 'string') {
202
+ if (!results.anchors.some(a => a.href === anchor.href)) {
203
+ results.anchors.push(anchor);
204
+ }
205
+ }
206
+ break;
207
+ case 'img':
208
+ const img = collectAttributes(childElm);
209
+ img.src = childElm.src;
210
+ if (typeof img.src === 'string') {
211
+ if (!results.imgs.some(a => a.src === img.src)) {
212
+ results.imgs.push(img);
213
+ }
214
+ }
215
+ break;
216
+ case 'link':
217
+ const link = collectAttributes(childElm);
218
+ link.href = childElm.href;
219
+ if (typeof link.rel === 'string' && link.rel.toLowerCase() === 'stylesheet') {
220
+ if (typeof link.href === 'string') {
221
+ if (!results.styles.some(s => s.link === link.href)) {
222
+ delete link.rel;
223
+ delete link.type;
224
+ results.styles.push(link);
225
+ }
226
+ }
227
+ }
228
+ break;
229
+ case 'script':
230
+ const script = collectAttributes(childElm);
231
+ script.src = childElm.src;
232
+ if (typeof script.src === 'string') {
233
+ if (!results.scripts.some(s => s.src === script.src)) {
234
+ results.scripts.push(script);
235
+ }
236
+ }
237
+ break;
238
+ }
239
+ }
240
+ depth++;
241
+ inspectElement(results, childElm, depth);
242
+ }
243
+ }
244
+ function collectAttributes(node) {
245
+ const parsedElm = {};
246
+ const attrs = node.attributes;
247
+ for (let i = 0, ii = attrs.length; i < ii; i++) {
248
+ const attr = attrs.item(i);
249
+ const attrName = attr.nodeName.toLowerCase();
250
+ if (SKIP_ATTRS.has(attrName)) {
251
+ continue;
252
+ }
253
+ const attrValue = attr.nodeValue;
254
+ if (attrName === 'class' && attrValue === '') {
255
+ continue;
256
+ }
257
+ parsedElm[attrName] = attrValue;
258
+ }
259
+ return parsedElm;
260
+ }
261
+ const SKIP_ATTRS = new Set([
262
+ 's-id', 'c-id'
263
+ ]);
264
+
265
+ function patchDomImplementation(doc, opts) {
266
+ let win;
267
+ if (doc.defaultView != null) {
268
+ opts.destroyWindow = true;
269
+ patchWindow(doc.defaultView);
270
+ win = doc.defaultView;
271
+ }
272
+ else {
273
+ opts.destroyWindow = true;
274
+ opts.destroyDocument = false;
275
+ win = new MockWindow(false);
276
+ }
277
+ if (win.document !== doc) {
278
+ win.document = doc;
279
+ }
280
+ if (doc.defaultView !== win) {
281
+ doc.defaultView = win;
282
+ }
283
+ const HTMLElement = doc.documentElement.constructor.prototype;
284
+ if (typeof HTMLElement.getRootNode !== 'function') {
285
+ const elm = doc.createElement('unknown-element');
286
+ const HTMLUnknownElement = elm.constructor.prototype;
287
+ HTMLUnknownElement.getRootNode = getRootNode;
288
+ }
289
+ if (typeof doc.createEvent === 'function') {
290
+ const CustomEvent = doc.createEvent('CustomEvent').constructor;
291
+ if (win.CustomEvent !== CustomEvent) {
292
+ win.CustomEvent = CustomEvent;
293
+ }
294
+ }
295
+ try {
296
+ doc.baseURI;
297
+ }
298
+ catch (e) {
299
+ Object.defineProperty(doc, 'baseURI', {
300
+ get() {
301
+ const baseElm = doc.querySelector('base[href]');
302
+ if (baseElm) {
303
+ return (new URL(baseElm.getAttribute('href'), win.location.href)).href;
304
+ }
305
+ return win.location.href;
306
+ }
307
+ });
308
+ }
309
+ return win;
310
+ }
311
+ function getRootNode(opts) {
312
+ const isComposed = (opts != null && opts.composed === true);
313
+ let node = this;
314
+ while (node.parentNode != null) {
315
+ node = node.parentNode;
316
+ if (isComposed === true && node.parentNode == null && node.host != null) {
317
+ node = node.host;
318
+ }
319
+ }
320
+ return node;
321
+ }
322
+
323
+ function relocateMetaCharset(doc) {
324
+ const head = doc.head;
325
+ let charsetElm = head.querySelector('meta[charset]');
326
+ if (charsetElm == null) {
327
+ charsetElm = doc.createElement('meta');
328
+ charsetElm.setAttribute('charset', 'utf-8');
329
+ }
330
+ else {
331
+ charsetElm.remove();
332
+ }
333
+ head.insertBefore(charsetElm, head.firstChild);
334
+ }
335
+
336
+ const commentre = /\/\*[^*]*\*+([^/*][^*]*\*+)*\//g;
337
+ function parseCss(css, filePath) {
338
+ var lineno = 1;
339
+ var column = 1;
340
+ var srcLines;
341
+ function updatePosition(str) {
342
+ const lines = str.match(/\n/g);
343
+ if (lines)
344
+ lineno += lines.length;
345
+ const i = str.lastIndexOf('\n');
346
+ column = ~i ? str.length - i : column + str.length;
347
+ }
348
+ function position() {
349
+ const start = { line: lineno, column: column };
350
+ return function (node) {
351
+ node.position = new ParsePosition(start);
352
+ whitespace();
353
+ return node;
354
+ };
355
+ }
356
+ class ParsePosition {
357
+ constructor(start) {
358
+ this.start = start;
359
+ this.end = { line: lineno, column: column };
360
+ this.source = filePath;
361
+ }
362
+ }
363
+ ParsePosition.prototype.content = css;
364
+ const diagnostics = [];
365
+ function error(msg) {
366
+ if (!srcLines) {
367
+ srcLines = css.split('\n');
368
+ }
369
+ const d = {
370
+ level: 'error',
371
+ type: 'css',
372
+ language: 'css',
373
+ header: 'CSS Parse',
374
+ messageText: msg,
375
+ absFilePath: filePath,
376
+ lines: [{
377
+ lineIndex: lineno - 1,
378
+ lineNumber: lineno,
379
+ errorCharStart: column,
380
+ text: css[lineno - 1],
381
+ }]
382
+ };
383
+ if (lineno > 1) {
384
+ const previousLine = {
385
+ lineIndex: lineno - 1,
386
+ lineNumber: lineno - 1,
387
+ text: css[lineno - 2],
388
+ errorCharStart: -1,
389
+ errorLength: -1
390
+ };
391
+ d.lines.unshift(previousLine);
392
+ }
393
+ if (lineno + 2 < srcLines.length) {
394
+ const nextLine = {
395
+ lineIndex: lineno,
396
+ lineNumber: lineno + 1,
397
+ text: srcLines[lineno],
398
+ errorCharStart: -1,
399
+ errorLength: -1
400
+ };
401
+ d.lines.push(nextLine);
402
+ }
403
+ diagnostics.push(d);
404
+ }
405
+ function stylesheet() {
406
+ const rulesList = rules();
407
+ return {
408
+ type: 'stylesheet',
409
+ stylesheet: {
410
+ source: filePath,
411
+ rules: rulesList,
412
+ diagnostics: diagnostics
413
+ }
414
+ };
415
+ }
416
+ function open() {
417
+ return match(/^{\s*/);
418
+ }
419
+ function close() {
420
+ return match(/^}/);
421
+ }
422
+ function rules() {
423
+ var node;
424
+ const rules = [];
425
+ whitespace();
426
+ comments(rules);
427
+ while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {
428
+ if (node !== false) {
429
+ rules.push(node);
430
+ comments(rules);
431
+ }
432
+ }
433
+ return rules;
434
+ }
435
+ function match(re) {
436
+ const m = re.exec(css);
437
+ if (!m)
438
+ return;
439
+ const str = m[0];
440
+ updatePosition(str);
441
+ css = css.slice(str.length);
442
+ return m;
443
+ }
444
+ function whitespace() {
445
+ match(/^\s*/);
446
+ }
447
+ function comments(rules) {
448
+ var c;
449
+ rules = rules || [];
450
+ while (c = comment()) {
451
+ if (c !== false) {
452
+ rules.push(c);
453
+ }
454
+ }
455
+ return rules;
456
+ }
457
+ function comment() {
458
+ const pos = position();
459
+ if ('/' !== css.charAt(0) || '*' !== css.charAt(1))
460
+ return;
461
+ var i = 2;
462
+ while ('' !== css.charAt(i) && ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1)))
463
+ ++i;
464
+ i += 2;
465
+ if ('' === css.charAt(i - 1)) {
466
+ return error('End of comment missing');
467
+ }
468
+ const str = css.slice(2, i - 2);
469
+ column += 2;
470
+ updatePosition(str);
471
+ css = css.slice(i);
472
+ column += 2;
473
+ return pos({
474
+ type: 'comment',
475
+ comment: str
476
+ });
477
+ }
478
+ function selector() {
479
+ const m = match(/^([^{]+)/);
480
+ if (!m)
481
+ return;
482
+ return trim(m[0])
483
+ .replace(/\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*\/+/g, '')
484
+ .replace(/"(?:\\"|[^"])*"|'(?:\\'|[^'])*'/g, function (m) {
485
+ return m.replace(/,/g, '\u200C');
486
+ })
487
+ .split(/\s*(?![^(]*\)),\s*/)
488
+ .map(function (s) {
489
+ return s.replace(/\u200C/g, ',');
490
+ });
491
+ }
492
+ function declaration() {
493
+ const pos = position();
494
+ var prop = match(/^(\*?[-#\/\*\\\w]+(\[[0-9a-z_-]+\])?)\s*/);
495
+ if (!prop)
496
+ return;
497
+ prop = trim(prop[0]);
498
+ if (!match(/^:\s*/))
499
+ return error(`property missing ':'`);
500
+ const val = match(/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^\)]*?\)|[^};])+)/);
501
+ const ret = pos({
502
+ type: 'declaration',
503
+ property: prop.replace(commentre, ''),
504
+ value: val ? trim(val[0]).replace(commentre, '') : ''
505
+ });
506
+ match(/^[;\s]*/);
507
+ return ret;
508
+ }
509
+ function declarations() {
510
+ const decls = [];
511
+ if (!open())
512
+ return error(`missing '{'`);
513
+ comments(decls);
514
+ var decl;
515
+ while (decl = declaration()) {
516
+ if (decl !== false) {
517
+ decls.push(decl);
518
+ comments(decls);
519
+ }
520
+ }
521
+ if (!close())
522
+ return error(`missing '}'`);
523
+ return decls;
524
+ }
525
+ function keyframe() {
526
+ var m;
527
+ const vals = [];
528
+ const pos = position();
529
+ while (m = match(/^((\d+\.\d+|\.\d+|\d+)%?|[a-z]+)\s*/)) {
530
+ vals.push(m[1]);
531
+ match(/^,\s*/);
532
+ }
533
+ if (!vals.length)
534
+ return;
535
+ return pos({
536
+ type: 'keyframe',
537
+ values: vals,
538
+ declarations: declarations()
539
+ });
540
+ }
541
+ function atkeyframes() {
542
+ const pos = position();
543
+ var m = match(/^@([-\w]+)?keyframes\s*/);
544
+ if (!m)
545
+ return;
546
+ const vendor = m[1];
547
+ m = match(/^([-\w]+)\s*/);
548
+ if (!m)
549
+ return error(`@keyframes missing name`);
550
+ const name = m[1];
551
+ if (!open())
552
+ return error(`@keyframes missing '{'`);
553
+ var frame;
554
+ var frames = comments();
555
+ while (frame = keyframe()) {
556
+ frames.push(frame);
557
+ frames = frames.concat(comments());
558
+ }
559
+ if (!close())
560
+ return error(`@keyframes missing '}'`);
561
+ return pos({
562
+ type: 'keyframes',
563
+ name: name,
564
+ vendor: vendor,
565
+ keyframes: frames
566
+ });
567
+ }
568
+ function atsupports() {
569
+ const pos = position();
570
+ const m = match(/^@supports *([^{]+)/);
571
+ if (!m)
572
+ return;
573
+ const supports = trim(m[1]);
574
+ if (!open())
575
+ return error(`@supports missing '{'`);
576
+ const style = comments().concat(rules());
577
+ if (!close())
578
+ return error(`@supports missing '}'`);
579
+ return pos({
580
+ type: 'supports',
581
+ supports: supports,
582
+ rules: style
583
+ });
584
+ }
585
+ function athost() {
586
+ const pos = position();
587
+ const m = match(/^@host\s*/);
588
+ if (!m)
589
+ return;
590
+ if (!open())
591
+ return error(`@host missing '{'`);
592
+ const style = comments().concat(rules());
593
+ if (!close())
594
+ return error(`@host missing '}'`);
595
+ return pos({
596
+ type: 'host',
597
+ rules: style
598
+ });
599
+ }
600
+ function atmedia() {
601
+ const pos = position();
602
+ const m = match(/^@media *([^{]+)/);
603
+ if (!m)
604
+ return;
605
+ const media = trim(m[1]);
606
+ if (!open())
607
+ return error(`@media missing '{'`);
608
+ const style = comments().concat(rules());
609
+ if (!close())
610
+ return error(`@media missing '}'`);
611
+ return pos({
612
+ type: 'media',
613
+ media: media,
614
+ rules: style
615
+ });
616
+ }
617
+ function atcustommedia() {
618
+ const pos = position();
619
+ const m = match(/^@custom-media\s+(--[^\s]+)\s*([^{;]+);/);
620
+ if (!m)
621
+ return;
622
+ return pos({
623
+ type: 'custom-media',
624
+ name: trim(m[1]),
625
+ media: trim(m[2])
626
+ });
627
+ }
628
+ function atpage() {
629
+ const pos = position();
630
+ const m = match(/^@page */);
631
+ if (!m)
632
+ return;
633
+ const sel = selector() || [];
634
+ if (!open())
635
+ return error(`@page missing '{'`);
636
+ var decls = comments();
637
+ var decl;
638
+ while (decl = declaration()) {
639
+ decls.push(decl);
640
+ decls = decls.concat(comments());
641
+ }
642
+ if (!close())
643
+ return error(`@page missing '}'`);
644
+ return pos({
645
+ type: 'page',
646
+ selectors: sel,
647
+ declarations: decls
648
+ });
649
+ }
650
+ function atdocument() {
651
+ const pos = position();
652
+ const m = match(/^@([-\w]+)?document *([^{]+)/);
653
+ if (!m)
654
+ return;
655
+ const vendor = trim(m[1]);
656
+ const doc = trim(m[2]);
657
+ if (!open())
658
+ return error(`@document missing '{'`);
659
+ const style = comments().concat(rules());
660
+ if (!close())
661
+ return error(`@document missing '}'`);
662
+ return pos({
663
+ type: 'document',
664
+ document: doc,
665
+ vendor: vendor,
666
+ rules: style
667
+ });
668
+ }
669
+ function atfontface() {
670
+ const pos = position();
671
+ const m = match(/^@font-face\s*/);
672
+ if (!m)
673
+ return;
674
+ if (!open())
675
+ return error(`@font-face missing '{'`);
676
+ var decls = comments();
677
+ var decl;
678
+ while (decl = declaration()) {
679
+ decls.push(decl);
680
+ decls = decls.concat(comments());
681
+ }
682
+ if (!close())
683
+ return error(`@font-face missing '}'`);
684
+ return pos({
685
+ type: 'font-face',
686
+ declarations: decls
687
+ });
688
+ }
689
+ const atimport = _compileAtrule('import');
690
+ const atcharset = _compileAtrule('charset');
691
+ const atnamespace = _compileAtrule('namespace');
692
+ function _compileAtrule(name) {
693
+ const re = new RegExp('^@' + name + '\\s*([^;]+);');
694
+ return function () {
695
+ const pos = position();
696
+ const m = match(re);
697
+ if (!m)
698
+ return;
699
+ const ret = { type: name };
700
+ ret[name] = m[1].trim();
701
+ return pos(ret);
702
+ };
703
+ }
704
+ function atrule() {
705
+ if (css[0] !== '@')
706
+ return;
707
+ return atkeyframes()
708
+ || atmedia()
709
+ || atcustommedia()
710
+ || atsupports()
711
+ || atimport()
712
+ || atcharset()
713
+ || atnamespace()
714
+ || atdocument()
715
+ || atpage()
716
+ || athost()
717
+ || atfontface();
718
+ }
719
+ function rule() {
720
+ const pos = position();
721
+ const sel = selector();
722
+ if (!sel)
723
+ return error('selector missing');
724
+ comments();
725
+ return pos({
726
+ type: 'rule',
727
+ selectors: sel,
728
+ declarations: declarations()
729
+ });
730
+ }
731
+ return addParent(stylesheet());
732
+ }
733
+ function trim(str) {
734
+ return str ? str.trim() : '';
735
+ }
736
+ function addParent(obj, parent) {
737
+ const isNode = obj && typeof obj.type === 'string';
738
+ const childParent = isNode ? obj : parent;
739
+ for (const k in obj) {
740
+ const value = obj[k];
741
+ if (Array.isArray(value)) {
742
+ value.forEach(function (v) { addParent(v, childParent); });
743
+ }
744
+ else if (value && typeof value === 'object') {
745
+ addParent(value, childParent);
746
+ }
747
+ }
748
+ if (isNode) {
749
+ Object.defineProperty(obj, 'parent', {
750
+ configurable: true,
751
+ writable: true,
752
+ enumerable: false,
753
+ value: parent || null
754
+ });
755
+ }
756
+ return obj;
757
+ }
758
+
759
+ function getSelectors(sel) {
760
+ SELECTORS.all.length = SELECTORS.tags.length = SELECTORS.classNames.length = SELECTORS.ids.length = SELECTORS.attrs.length = 0;
761
+ sel = sel.replace(/\./g, ' .')
762
+ .replace(/\#/g, ' #')
763
+ .replace(/\[/g, ' [')
764
+ .replace(/\>/g, ' > ')
765
+ .replace(/\+/g, ' + ')
766
+ .replace(/\~/g, ' ~ ')
767
+ .replace(/\*/g, ' * ')
768
+ .replace(/\:not\((.*?)\)/g, ' ');
769
+ const items = sel.split(' ');
770
+ for (var i = 0; i < items.length; i++) {
771
+ items[i] = items[i].split(':')[0];
772
+ if (items[i].length === 0)
773
+ continue;
774
+ if (items[i].charAt(0) === '.') {
775
+ SELECTORS.classNames.push(items[i].substr(1));
776
+ }
777
+ else if (items[i].charAt(0) === '#') {
778
+ SELECTORS.ids.push(items[i].substr(1));
779
+ }
780
+ else if (items[i].charAt(0) === '[') {
781
+ items[i] = items[i].substr(1).split('=')[0].split(']')[0].trim();
782
+ SELECTORS.attrs.push(items[i].toLowerCase());
783
+ }
784
+ else if (/[a-z]/g.test(items[i].charAt(0))) {
785
+ SELECTORS.tags.push(items[i].toLowerCase());
786
+ }
787
+ }
788
+ SELECTORS.classNames = SELECTORS.classNames.sort((a, b) => {
789
+ if (a.length < b.length)
790
+ return -1;
791
+ if (a.length > b.length)
792
+ return 1;
793
+ return 0;
794
+ });
795
+ return SELECTORS;
796
+ }
797
+ const SELECTORS = {
798
+ all: [],
799
+ tags: [],
800
+ classNames: [],
801
+ ids: [],
802
+ attrs: []
803
+ };
804
+
805
+ class StringifyCss {
806
+ constructor(usedSelectors) {
807
+ this.usedSelectors = usedSelectors;
808
+ this.hasUsedAttrs = usedSelectors.attrs.size > 0;
809
+ this.hasUsedClassNames = usedSelectors.classNames.size > 0;
810
+ this.hasUsedIds = usedSelectors.ids.size > 0;
811
+ this.hasUsedTags = usedSelectors.tags.size > 0;
812
+ }
813
+ visit(node) {
814
+ return this[node.type](node);
815
+ }
816
+ mapVisit(nodes, delim) {
817
+ let buf = '';
818
+ delim = delim || '';
819
+ for (let i = 0, length = nodes.length; i < length; i++) {
820
+ buf += this.visit(nodes[i]);
821
+ if (delim && i < length - 1)
822
+ buf += delim;
823
+ }
824
+ return buf;
825
+ }
826
+ compile(node) {
827
+ return node.stylesheet
828
+ .rules.map(this.visit, this)
829
+ .join('');
830
+ }
831
+ comment() {
832
+ return '';
833
+ }
834
+ import(node) {
835
+ return '@import ' + node.import + ';';
836
+ }
837
+ media(node) {
838
+ const mediaCss = this.mapVisit(node.rules);
839
+ if (mediaCss === '') {
840
+ return '';
841
+ }
842
+ return '@media ' + node.media + '{' + this.mapVisit(node.rules) + '}';
843
+ }
844
+ document(node) {
845
+ const documentCss = this.mapVisit(node.rules);
846
+ if (documentCss === '') {
847
+ return '';
848
+ }
849
+ const doc = '@' + (node.vendor || '') + 'document ' + node.document;
850
+ return doc + '{' + documentCss + '}';
851
+ }
852
+ charset(node) {
853
+ return '@charset ' + node.charset + ';';
854
+ }
855
+ namespace(node) {
856
+ return '@namespace ' + node.namespace + ';';
857
+ }
858
+ supports(node) {
859
+ const supportsCss = this.mapVisit(node.rules);
860
+ if (supportsCss === '') {
861
+ return '';
862
+ }
863
+ return '@supports ' + node.supports + '{' + supportsCss + '}';
864
+ }
865
+ keyframes(node) {
866
+ const keyframesCss = this.mapVisit(node.keyframes);
867
+ if (keyframesCss === '') {
868
+ return '';
869
+ }
870
+ return '@' + (node.vendor || '') + 'keyframes ' + node.name + '{' + keyframesCss + '}';
871
+ }
872
+ keyframe(node) {
873
+ const decls = node.declarations;
874
+ return node.values.join(',') + '{' + this.mapVisit(decls) + '}';
875
+ }
876
+ page(node) {
877
+ const sel = node.selectors.length
878
+ ? node.selectors.join(', ')
879
+ : '';
880
+ return '@page ' + sel + '{' + this.mapVisit(node.declarations) + '}';
881
+ }
882
+ ['font-face'](node) {
883
+ const fontCss = this.mapVisit(node.declarations);
884
+ if (fontCss === '') {
885
+ return '';
886
+ }
887
+ return '@font-face{' + fontCss + '}';
888
+ }
889
+ host(node) {
890
+ return '@host{' + this.mapVisit(node.rules) + '}';
891
+ }
892
+ ['custom-media'](node) {
893
+ return '@custom-media ' + node.name + ' ' + node.media + ';';
894
+ }
895
+ rule(node) {
896
+ const decls = node.declarations;
897
+ if (decls == null || decls.length === 0) {
898
+ return '';
899
+ }
900
+ const usedSelectors = this.usedSelectors;
901
+ let i;
902
+ let j;
903
+ for (i = node.selectors.length - 1; i >= 0; i--) {
904
+ const sel = getSelectors(node.selectors[i]);
905
+ let include = true;
906
+ let jlen = sel.classNames.length;
907
+ if (jlen > 0 && this.hasUsedClassNames) {
908
+ for (j = 0; j < jlen; j++) {
909
+ if (!usedSelectors.classNames.has(sel.classNames[j])) {
910
+ include = false;
911
+ break;
912
+ }
913
+ }
914
+ }
915
+ if (include && this.hasUsedTags) {
916
+ jlen = sel.tags.length;
917
+ if (jlen > 0) {
918
+ for (j = 0; j < jlen; j++) {
919
+ if (!usedSelectors.tags.has(sel.tags[j])) {
920
+ include = false;
921
+ break;
922
+ }
923
+ }
924
+ }
925
+ }
926
+ if (include && this.hasUsedAttrs) {
927
+ jlen = sel.attrs.length;
928
+ if (jlen > 0) {
929
+ for (j = 0; j < jlen; j++) {
930
+ if (!usedSelectors.attrs.has(sel.attrs[j])) {
931
+ include = false;
932
+ break;
933
+ }
934
+ }
935
+ }
936
+ }
937
+ if (include && this.hasUsedIds) {
938
+ jlen = sel.ids.length;
939
+ if (jlen > 0) {
940
+ for (j = 0; j < jlen; j++) {
941
+ if (!usedSelectors.ids.has(sel.ids[j])) {
942
+ include = false;
943
+ break;
944
+ }
945
+ }
946
+ }
947
+ }
948
+ if (!include) {
949
+ node.selectors.splice(i, 1);
950
+ }
951
+ }
952
+ if (node.selectors.length === 0) {
953
+ return '';
954
+ }
955
+ return `${node.selectors}{${this.mapVisit(decls)}}`;
956
+ }
957
+ declaration(node) {
958
+ return node.property + ':' + node.value + ';';
959
+ }
960
+ }
961
+
962
+ class UsedSelectors {
963
+ constructor(elm) {
964
+ this.tags = new Set();
965
+ this.classNames = new Set();
966
+ this.ids = new Set();
967
+ this.attrs = new Set();
968
+ this.collectSelectors(elm);
969
+ }
970
+ collectSelectors(elm) {
971
+ if (elm != null && elm.tagName) {
972
+ const tagName = elm.tagName.toLowerCase();
973
+ this.tags.add(tagName);
974
+ const attributes = elm.attributes;
975
+ for (let i = 0, l = attributes.length; i < l; i++) {
976
+ const attr = attributes.item(i);
977
+ const attrName = attr.name.toLowerCase();
978
+ if (attrName === 'class') {
979
+ const classList = elm.classList;
980
+ for (let i = 0, l = classList.length; i < l; i++) {
981
+ this.classNames.add(classList.item(i));
982
+ }
983
+ }
984
+ else if (attrName === 'style') {
985
+ continue;
986
+ }
987
+ else if (attrName === 'id') {
988
+ this.ids.add(attr.value);
989
+ }
990
+ else {
991
+ this.attrs.add(attrName);
992
+ }
993
+ }
994
+ for (let i = 0, l = elm.children.length; i < l; i++) {
995
+ this.collectSelectors(elm.children[i]);
996
+ }
997
+ }
998
+ }
999
+ }
1000
+
1001
+ function removeUnusedStyles(doc, diagnostics) {
1002
+ const styleElms = doc.head.querySelectorAll(`style[data-styles]`);
1003
+ if (styleElms.length > 0) {
1004
+ const usedSelectors = new UsedSelectors(doc.body);
1005
+ for (let i = 0; i < styleElms.length; i++) {
1006
+ removeUnusedStyleText(usedSelectors, diagnostics, styleElms[i]);
1007
+ }
1008
+ }
1009
+ }
1010
+ function removeUnusedStyleText(usedSelectors, diagnostics, styleElm) {
1011
+ try {
1012
+ const cssAst = parseCss(styleElm.innerHTML);
1013
+ if (cssAst.stylesheet.diagnostics.length > 0) {
1014
+ diagnostics.push(...cssAst.stylesheet.diagnostics);
1015
+ return;
1016
+ }
1017
+ try {
1018
+ const stringify = new StringifyCss(usedSelectors);
1019
+ styleElm.innerHTML = stringify.compile(cssAst);
1020
+ }
1021
+ catch (e) {
1022
+ diagnostics.push({
1023
+ level: 'warn',
1024
+ type: 'css',
1025
+ header: 'CSS Stringify',
1026
+ messageText: e
1027
+ });
1028
+ }
1029
+ }
1030
+ catch (e) {
1031
+ diagnostics.push({
1032
+ level: 'warn',
1033
+ type: 'css',
1034
+ header: 'CSS Parse',
1035
+ messageText: e
1036
+ });
1037
+ }
1038
+ }
1039
+
1040
+ function updateCanonicalLink(doc, href) {
1041
+ let canonicalLinkElm = doc.head.querySelector('link[rel="canonical"]');
1042
+ if (typeof href === 'string') {
1043
+ if (canonicalLinkElm == null) {
1044
+ canonicalLinkElm = doc.createElement('link');
1045
+ canonicalLinkElm.setAttribute('rel', 'canonical');
1046
+ doc.head.appendChild(canonicalLinkElm);
1047
+ }
1048
+ canonicalLinkElm.setAttribute('href', href);
1049
+ }
1050
+ else {
1051
+ if (canonicalLinkElm != null) {
1052
+ canonicalLinkElm.parentNode.removeChild(canonicalLinkElm);
1053
+ }
1054
+ }
1055
+ }
1056
+
1057
+ function renderToString(html, userOpts) {
1058
+ const opts = normalizeHydrateOptions(userOpts);
1059
+ opts.serializeToHtml = true;
1060
+ return new Promise(resolve => {
1061
+ const results = generateHydrateResults(opts);
1062
+ if (results.diagnostics.length > 0) {
1063
+ resolve(results);
1064
+ }
1065
+ else if (typeof html === 'string') {
1066
+ try {
1067
+ opts.destroyWindow = true;
1068
+ opts.destroyDocument = true;
1069
+ const win = new MockWindow(html);
1070
+ render(win, opts, results, resolve);
1071
+ }
1072
+ catch (e) {
1073
+ renderCatchError(results, e);
1074
+ resolve(results);
1075
+ }
1076
+ }
1077
+ else if (isValidDocument(html)) {
1078
+ try {
1079
+ opts.destroyDocument = false;
1080
+ const win = patchDomImplementation(html, opts);
1081
+ render(win, opts, results, resolve);
1082
+ }
1083
+ catch (e) {
1084
+ renderCatchError(results, e);
1085
+ resolve(results);
1086
+ }
1087
+ }
1088
+ else {
1089
+ renderBuildError(results, `Invalid html or document. Must be either valid "html" string, or DOM "document".`);
1090
+ resolve(results);
1091
+ }
1092
+ });
1093
+ }
1094
+ function hydrateDocument(doc, userOpts) {
1095
+ const opts = normalizeHydrateOptions(userOpts);
1096
+ opts.serializeToHtml = false;
1097
+ return new Promise(resolve => {
1098
+ const results = generateHydrateResults(opts);
1099
+ if (results.diagnostics.length > 0) {
1100
+ resolve(results);
1101
+ }
1102
+ else if (typeof doc === 'string') {
1103
+ try {
1104
+ opts.destroyWindow = true;
1105
+ opts.destroyDocument = true;
1106
+ const win = new MockWindow(doc);
1107
+ render(win, opts, results, resolve);
1108
+ }
1109
+ catch (e) {
1110
+ renderCatchError(results, e);
1111
+ resolve(results);
1112
+ }
1113
+ }
1114
+ else if (isValidDocument(doc)) {
1115
+ try {
1116
+ opts.destroyDocument = false;
1117
+ const win = patchDomImplementation(doc, opts);
1118
+ render(win, opts, results, resolve);
1119
+ }
1120
+ catch (e) {
1121
+ renderCatchError(results, e);
1122
+ resolve(results);
1123
+ }
1124
+ }
1125
+ else {
1126
+ renderBuildError(results, `Invalid html or document. Must be either valid "html" string, or DOM "document".`);
1127
+ resolve(results);
1128
+ }
1129
+ });
1130
+ }
1131
+ function isValidDocument(doc) {
1132
+ return doc != null &&
1133
+ doc.nodeType === 9 &&
1134
+ doc.documentElement != null &&
1135
+ doc.documentElement.nodeType === 1 &&
1136
+ doc.body != null &&
1137
+ doc.body.nodeType === 1;
1138
+ }
1139
+ function render(win, opts, results, resolve) {
1140
+ if (!process.__rindoErrors) {
1141
+ process.__rindoErrors = true;
1142
+ process.on('unhandledRejection', e => {
1143
+ console.log('unhandledRejection', e);
1144
+ });
1145
+ }
1146
+ initializeWindow(win, opts, results);
1147
+ if (typeof opts.beforeHydrate === 'function') {
1148
+ try {
1149
+ const rtn = opts.beforeHydrate(win.document);
1150
+ if (rtn != null && typeof rtn.then === 'function') {
1151
+ rtn.then(() => {
1152
+ hydrateFactory(win, opts, results, afterHydrate, resolve);
1153
+ });
1154
+ }
1155
+ else {
1156
+ hydrateFactory(win, opts, results, afterHydrate, resolve);
1157
+ }
1158
+ }
1159
+ catch (e) {
1160
+ renderCatchError(results, e);
1161
+ finalizeHydrate(win, opts, results, resolve);
1162
+ }
1163
+ }
1164
+ else {
1165
+ hydrateFactory(win, opts, results, afterHydrate, resolve);
1166
+ }
1167
+ }
1168
+ function afterHydrate(win, opts, results, resolve) {
1169
+ if (typeof opts.afterHydrate === 'function') {
1170
+ try {
1171
+ const rtn = opts.afterHydrate(win.document);
1172
+ if (rtn != null && typeof rtn.then === 'function') {
1173
+ rtn.then(() => {
1174
+ finalizeHydrate(win, opts, results, resolve);
1175
+ });
1176
+ }
1177
+ else {
1178
+ finalizeHydrate(win, opts, results, resolve);
1179
+ }
1180
+ }
1181
+ catch (e) {
1182
+ renderCatchError(results, e);
1183
+ finalizeHydrate(win, opts, results, resolve);
1184
+ }
1185
+ }
1186
+ else {
1187
+ finalizeHydrate(win, opts, results, resolve);
1188
+ }
1189
+ }
1190
+ function finalizeHydrate(win, opts, results, resolve) {
1191
+ try {
1192
+ inspectElement(results, win.document.documentElement, 0);
1193
+ if (opts.removeUnusedStyles !== false) {
1194
+ try {
1195
+ removeUnusedStyles(win.document, results.diagnostics);
1196
+ }
1197
+ catch (e) {
1198
+ renderCatchError(results, e);
1199
+ }
1200
+ }
1201
+ if (typeof opts.title === 'string') {
1202
+ try {
1203
+ win.document.title = opts.title;
1204
+ }
1205
+ catch (e) {
1206
+ renderCatchError(results, e);
1207
+ }
1208
+ }
1209
+ results.title = win.document.title;
1210
+ if (opts.removeScripts) {
1211
+ removeScripts(win.document.documentElement);
1212
+ }
1213
+ try {
1214
+ updateCanonicalLink(win.document, opts.canonicalUrl);
1215
+ }
1216
+ catch (e) {
1217
+ renderCatchError(results, e);
1218
+ }
1219
+ try {
1220
+ relocateMetaCharset(win.document);
1221
+ }
1222
+ catch (e) { }
1223
+ try {
1224
+ const metaStatus = win.document.head.querySelector('meta[http-equiv="status"]');
1225
+ if (metaStatus != null) {
1226
+ const content = metaStatus.getAttribute('content');
1227
+ if (content != null) {
1228
+ results.httpStatus = parseInt(content, 10);
1229
+ }
1230
+ }
1231
+ }
1232
+ catch (e) { }
1233
+ if (opts.clientHydrateAnnotations) {
1234
+ win.document.documentElement.classList.add('hydrated');
1235
+ }
1236
+ if (opts.serializeToHtml) {
1237
+ results.html = serializeNodeToHtml(win.document, {
1238
+ approximateLineWidth: opts.approximateLineWidth,
1239
+ outerHtml: false,
1240
+ prettyHtml: opts.prettyHtml,
1241
+ removeAttributeQuotes: opts.removeAttributeQuotes,
1242
+ removeBooleanAttributeQuotes: opts.removeBooleanAttributeQuotes,
1243
+ removeEmptyAttributes: opts.removeEmptyAttributes,
1244
+ removeHtmlComments: opts.removeHtmlComments,
1245
+ serializeShadowRoot: false,
1246
+ });
1247
+ }
1248
+ }
1249
+ catch (e) {
1250
+ renderCatchError(results, e);
1251
+ }
1252
+ if (opts.destroyWindow) {
1253
+ try {
1254
+ if (!opts.destroyDocument) {
1255
+ const doc = win.document;
1256
+ win.document = null;
1257
+ doc.defaultView = null;
1258
+ }
1259
+ win.close();
1260
+ }
1261
+ catch (e) {
1262
+ renderCatchError(results, e);
1263
+ }
1264
+ }
1265
+ resolve(results);
1266
+ }
1267
+ function removeScripts(elm) {
1268
+ const children = elm.children;
1269
+ for (let i = children.length - 1; i >= 0; i--) {
1270
+ const child = children[i];
1271
+ removeScripts(child);
1272
+ if (child.nodeName === 'SCRIPT') {
1273
+ child.remove();
1274
+ }
1275
+ else if (child.nodeName === 'LINK' && child.getAttribute('rel') === 'modulepreload') {
1276
+ child.remove();
1277
+ }
1278
+ }
1279
+ }
1280
+
1281
+ export { hydrateDocument, renderToString };