@revealui/core 0.0.1-pre.0

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 (728) hide show
  1. package/LICENSE +202 -0
  2. package/LICENSE_SUMMARY.md +55 -0
  3. package/README.md +201 -0
  4. package/dist/core/__internal/index.ts +63 -0
  5. package/dist/core/__tests__/assertNoInfiniteHttpRedirect.spec.ts +76 -0
  6. package/dist/core/__tests__/deduceRouteStringFromFilesystemPath.spec.ts +88 -0
  7. package/dist/core/__tests__/freezePartial.spec.ts +40 -0
  8. package/dist/core/__tests__/getValuePrintable.spec.ts +15 -0
  9. package/dist/core/__tests__/injectHtmlTags.spec.ts +101 -0
  10. package/dist/core/__tests__/isHtml.spec.ts +23 -0
  11. package/dist/core/__tests__/isNpmPackage.spec.ts +93 -0
  12. package/dist/core/__tests__/normalizeHeaders.spec.ts +142 -0
  13. package/dist/core/__tests__/parseUrl-extras.spec.ts +60 -0
  14. package/dist/core/__tests__/parseUrl.spec.ts +1339 -0
  15. package/dist/core/__tests__/resolvePrecedence/resolvePrecedence_overall.spec.ts +106 -0
  16. package/dist/core/__tests__/resolvePrecedence/resolvePrecedence_route-strings.spec.ts +99 -0
  17. package/dist/core/__tests__/resolveRedirects.spec.ts +132 -0
  18. package/dist/core/__tests__/resolveRouteString.spec.ts +211 -0
  19. package/dist/core/__tests__/resolveUrlPathname.spec.ts +22 -0
  20. package/dist/core/__tests__/trimWithAnsi.spec.ts +40 -0
  21. package/dist/core/api/ssr.ts +63 -0
  22. package/dist/core/assets/extractAssetsQuery.ts +29 -0
  23. package/dist/core/assets/index.ts +173 -0
  24. package/dist/core/assets/inferHtmlTags.ts +61 -0
  25. package/dist/core/assets/injectHtmlTags.ts +236 -0
  26. package/dist/core/assets/mergeScriptTags.ts +77 -0
  27. package/dist/core/assets/sanitizeJson.ts +8 -0
  28. package/dist/core/cli/bin.ts +161 -0
  29. package/dist/core/cli/commands/add.ts +158 -0
  30. package/dist/core/cli/commands/check.ts +47 -0
  31. package/dist/core/cli/commands/doctor/checks/build.ts +83 -0
  32. package/dist/core/cli/commands/doctor/checks/config.ts +130 -0
  33. package/dist/core/cli/commands/doctor/checks/dependencies.ts +144 -0
  34. package/dist/core/cli/commands/doctor/checks/practices.ts +156 -0
  35. package/dist/core/cli/commands/doctor/checks/structure.ts +127 -0
  36. package/dist/core/cli/commands/doctor/fixes/index.ts +136 -0
  37. package/dist/core/cli/commands/doctor/index.ts +47 -0
  38. package/dist/core/cli/commands/doctor/print.ts +44 -0
  39. package/dist/core/cli/commands/doctor/types.ts +16 -0
  40. package/dist/core/cli/commands/fix.ts +161 -0
  41. package/dist/core/cli/commands/init.ts +145 -0
  42. package/dist/core/cli/commands/upgrade.ts +115 -0
  43. package/dist/core/cli/onLoad.ts +7 -0
  44. package/dist/core/cli/utils.ts +6 -0
  45. package/dist/core/components/Config/Config-client.ts +14 -0
  46. package/dist/core/components/Config/Config-server.ts +16 -0
  47. package/dist/core/components/Head/Head-client.ts +4 -0
  48. package/dist/core/components/Head/Head-server.ts +16 -0
  49. package/dist/core/components/Loading.tsx +23 -0
  50. package/dist/core/config/findPageConfig.ts +14 -0
  51. package/dist/core/config/loadConfigValues.ts +28 -0
  52. package/dist/core/constants/UnifiedConstants.ts +348 -0
  53. package/dist/core/dom/applyHeadSettings.tsx +13 -0
  54. package/dist/core/dom/onPageVisibilityChange.ts +17 -0
  55. package/dist/core/dom/updateDocumentHead.ts +15 -0
  56. package/dist/core/errors/ErrorHandler.ts +480 -0
  57. package/dist/core/files/file-system/filesystemPath.ts +27 -0
  58. package/dist/core/files/file-system/findFile.ts +35 -0
  59. package/dist/core/files/file-system/findPackageJson.ts +19 -0
  60. package/dist/core/files/file-system/findPageFiles.ts +40 -0
  61. package/dist/core/files/file-system/pathShim.ts +16 -0
  62. package/dist/core/files/file-system/prependEntriesDir.ts +13 -0
  63. package/dist/core/files/file-system/removeFileExtention.ts +3 -0
  64. package/dist/core/files/file-system/requireResolve.ts +59 -0
  65. package/dist/core/files/file-system/scanCodebase.ts +64 -0
  66. package/dist/core/files/virtual-files/index.ts +31 -0
  67. package/dist/core/files/virtual-files/virtualFileImportUserCode.ts +34 -0
  68. package/dist/core/files/virtual-files/virtualFilePageConfigValuesAll.ts +49 -0
  69. package/dist/core/gaurds/assertions/assert/base.ts +6 -0
  70. package/dist/core/gaurds/assertions/assert/index.ts +2 -0
  71. package/dist/core/gaurds/assertions/assert/log.ts +42 -0
  72. package/dist/core/gaurds/assertions/assertArguments.ts +83 -0
  73. package/dist/core/gaurds/assertions/assertCast.ts +9 -0
  74. package/dist/core/gaurds/assertions/assertCommonJS/base.ts +9 -0
  75. package/dist/core/gaurds/assertions/assertCommonJS/common.ts +30 -0
  76. package/dist/core/gaurds/assertions/assertCommonJS/index.ts +2 -0
  77. package/dist/core/gaurds/assertions/assertExtensions/base.ts +187 -0
  78. package/dist/core/gaurds/assertions/assertExtensions/index.ts +1 -0
  79. package/dist/core/gaurds/assertions/assertHookReturnedObject.ts +30 -0
  80. package/dist/core/gaurds/assertions/assertInfo/base.ts +14 -0
  81. package/dist/core/gaurds/assertions/assertInfo/index.ts +2 -0
  82. package/dist/core/gaurds/assertions/assertInfo/log.ts +28 -0
  83. package/dist/core/gaurds/assertions/assertIs404.ts +12 -0
  84. package/dist/core/gaurds/assertions/assertIsBrowser/base.ts +8 -0
  85. package/dist/core/gaurds/assertions/assertIsBrowser/index.ts +1 -0
  86. package/dist/core/gaurds/assertions/assertIsNotBrowser/base.ts +9 -0
  87. package/dist/core/gaurds/assertions/assertIsNotBrowser/index.ts +1 -0
  88. package/dist/core/gaurds/assertions/assertIsNotProductionRuntime/base.ts +71 -0
  89. package/dist/core/gaurds/assertions/assertIsNotProductionRuntime/index.ts +1 -0
  90. package/dist/core/gaurds/assertions/assertKeys/base.ts +31 -0
  91. package/dist/core/gaurds/assertions/assertKeys/index.ts +1 -0
  92. package/dist/core/gaurds/assertions/assertNoInfiniteHttpRedirect.ts +55 -0
  93. package/dist/core/gaurds/assertions/assertNodeEnv/base.ts +120 -0
  94. package/dist/core/gaurds/assertions/assertNodeEnv/index.ts +1 -0
  95. package/dist/core/gaurds/assertions/assertNodeVersion/base.ts +11 -0
  96. package/dist/core/gaurds/assertions/assertNodeVersion/index.ts +1 -0
  97. package/dist/core/gaurds/assertions/assertOnBeforeRenderHookReturn.ts +37 -0
  98. package/dist/core/gaurds/assertions/assertPageContextProvidedByUser.ts +60 -0
  99. package/dist/core/gaurds/assertions/assertPluginManifest.ts +41 -0
  100. package/dist/core/gaurds/assertions/assertPlusFileExport.ts +66 -0
  101. package/dist/core/gaurds/assertions/assertRoutingType/base.ts +41 -0
  102. package/dist/core/gaurds/assertions/assertRoutingType/index.ts +1 -0
  103. package/dist/core/gaurds/assertions/assertRuntimeManifest.ts +34 -0
  104. package/dist/core/gaurds/assertions/assertSingleInstance/index.ts +142 -0
  105. package/dist/core/gaurds/assertions/assertSingleInstance/onAssertModuleLoad.ts +0 -0
  106. package/dist/core/gaurds/assertions/assertSingleInstance/onClientEntryClientRouting.ts +0 -0
  107. package/dist/core/gaurds/assertions/assertSingleInstance/onClientEntryServerRouting.ts +0 -0
  108. package/dist/core/gaurds/assertions/assertType.ts +12 -0
  109. package/dist/core/gaurds/assertions/assertUsage/base.ts +43 -0
  110. package/dist/core/gaurds/assertions/assertUsage/index.ts +3 -0
  111. package/dist/core/gaurds/assertions/assertUsage/log.ts +29 -0
  112. package/dist/core/gaurds/assertions/assertUsage/node.ts +16 -0
  113. package/dist/core/gaurds/assertions/assertV1Design.ts +29 -0
  114. package/dist/core/gaurds/assertions/assertVersion/base.ts +55 -0
  115. package/dist/core/gaurds/assertions/assertVersion/index.ts +1 -0
  116. package/dist/core/gaurds/assertions/assertWarning/base.ts +43 -0
  117. package/dist/core/gaurds/assertions/assertWarning/index.ts +2 -0
  118. package/dist/core/gaurds/assertions/assertWarning/log.ts +43 -0
  119. package/dist/core/gaurds/assertions/checkType.ts +2 -0
  120. package/dist/core/gaurds/debugger/createDebugger.ts +196 -0
  121. package/dist/core/gaurds/debugger/debugPageFiles.ts +121 -0
  122. package/dist/core/gaurds/debugger/index.ts +2 -0
  123. package/dist/core/gaurds/errors/createErrorWithCleanStackTrace.ts +56 -0
  124. package/dist/core/gaurds/errors/removeErrMsg.ts +8 -0
  125. package/dist/core/gaurds/logger/addOnBeforeLogHook/index.ts +7 -0
  126. package/dist/core/gaurds/logger/formatHintLog.ts +17 -0
  127. package/dist/core/gaurds/logger/log404/index.spec.snapshot-1 +8 -0
  128. package/dist/core/gaurds/logger/log404/index.spec.snapshot-2 +9 -0
  129. package/dist/core/gaurds/logger/log404/index.spec.ts +78 -0
  130. package/dist/core/gaurds/logger/log404/index.ts +208 -0
  131. package/dist/core/gaurds/logger/logErrorHint/errors.ts +17 -0
  132. package/dist/core/gaurds/logger/logErrorHint/getErrorHint.spec.ts +1057 -0
  133. package/dist/core/gaurds/logger/logErrorHint.ts +196 -0
  134. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/fixture-errors/errBabelReact.ts +16 -0
  135. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/fixture-errors/errBabelSolid.ts +16 -0
  136. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/fixture-errors/errEsbuild.ts +39 -0
  137. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/fixture-errors/errMdx1.ts +24 -0
  138. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/fixture-errors/errMdx2.ts +83 -0
  139. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/fixture-errors/errPostcss.ts +33 -0
  140. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/fixture-errors/errSwc.ts +20 -0
  141. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/fixture-errors/errSwcBig.ts +19 -0
  142. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/fixture-errors/errVueCss.ts +36 -0
  143. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/fixture-errors/errVueHtml.ts +17 -0
  144. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/fixture-errors/errVueJavascript.ts +16 -0
  145. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/getPrettyErrMessage.spec.ts +101 -0
  146. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/getPrettyErrorWithCodeSnippet.spec.ts +232 -0
  147. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet.ts +212 -0
  148. package/dist/core/gaurds/logger/loggerNotProd/log.ts +124 -0
  149. package/dist/core/gaurds/logger/loggerNotProd.ts +271 -0
  150. package/dist/core/gaurds/logger/loggerProd.ts +37 -0
  151. package/dist/core/gaurds/logger/loggerRuntime.ts +46 -0
  152. package/dist/core/gaurds/logger/loggerVite/removeSuperfluousViteLog.ts +30 -0
  153. package/dist/core/gaurds/logger/loggerVite.ts +65 -0
  154. package/dist/core/gaurds/logger/overwriteAssertProductionLogger/index.ts +9 -0
  155. package/dist/core/gaurds/logger/trackLogs.ts +35 -0
  156. package/dist/core/gaurds/logger/warnIfErrorIsNotObject.ts +31 -0
  157. package/dist/core/gaurds/normalization/freezePartial.ts +39 -0
  158. package/dist/core/gaurds/normalization/normalizeHeaders.ts +20 -0
  159. package/dist/core/gaurds/normalization/normalizeLink.tsx +14 -0
  160. package/dist/core/gaurds/normalization/normalizeUrlArgument.ts +22 -0
  161. package/dist/core/gaurds/validators/hasProp.ts +116 -0
  162. package/dist/core/gaurds/validators/isArray.ts +4 -0
  163. package/dist/core/gaurds/validators/isArrayOfStrings.ts +7 -0
  164. package/dist/core/gaurds/validators/isAsset.ts +43 -0
  165. package/dist/core/gaurds/validators/isBrowser.ts +5 -0
  166. package/dist/core/gaurds/validators/isBug.ts +5 -0
  167. package/dist/core/gaurds/validators/isCallable.ts +11 -0
  168. package/dist/core/gaurds/validators/isClientSideRoutable.ts +19 -0
  169. package/dist/core/gaurds/validators/isConfigInvalid.ts +10 -0
  170. package/dist/core/gaurds/validators/isDev.ts +56 -0
  171. package/dist/core/gaurds/validators/isErrorDebug.ts +7 -0
  172. package/dist/core/gaurds/validators/isErrorPage.ts +16 -0
  173. package/dist/core/gaurds/validators/isFilePathAbsoluteFilesystem.ts +55 -0
  174. package/dist/core/gaurds/validators/isHtml.ts +9 -0
  175. package/dist/core/gaurds/validators/isNewError.ts +29 -0
  176. package/dist/core/gaurds/validators/isNodeJS.ts +10 -0
  177. package/dist/core/gaurds/validators/isNotFalse.ts +3 -0
  178. package/dist/core/gaurds/validators/isNotNullish.ts +2 -0
  179. package/dist/core/gaurds/validators/isNpmPackage.ts +127 -0
  180. package/dist/core/gaurds/validators/isObject.ts +3 -0
  181. package/dist/core/gaurds/validators/isObjectOfStrings.ts +9 -0
  182. package/dist/core/gaurds/validators/isObjectWithKeys.ts +18 -0
  183. package/dist/core/gaurds/validators/isPlainObject.ts +21 -0
  184. package/dist/core/gaurds/validators/isPromise.ts +9 -0
  185. package/dist/core/gaurds/validators/isPropertyGetter.ts +4 -0
  186. package/dist/core/gaurds/validators/isReact.ts +24 -0
  187. package/dist/core/gaurds/validators/isReactElement.ts +21 -0
  188. package/dist/core/gaurds/validators/isRevealApp.ts +4 -0
  189. package/dist/core/gaurds/validators/isSameErrorMessage.ts +8 -0
  190. package/dist/core/gaurds/validators/isScriptFile.ts +75 -0
  191. package/dist/core/gaurds/validators/isServerSideError.ts +1 -0
  192. package/dist/core/gaurds/validators/isViteCliCall.ts +93 -0
  193. package/dist/core/gaurds/validators/isVitest.ts +7 -0
  194. package/dist/core/gaurds/validators/rollupIsEsm.ts +14 -0
  195. package/dist/core/gaurds/validators/viteIsSSR.ts +23 -0
  196. package/dist/core/globals/contexts/globalContext/getPageFilesExports.ts +28 -0
  197. package/dist/core/globals/contexts/globalContext/index.ts +374 -0
  198. package/dist/core/globals/contexts/globalContext/loadImportBuild.ts +44 -0
  199. package/dist/core/globals/contexts/globalContext/setup.ts +4 -0
  200. package/dist/core/globals/contexts/index.ts +1 -0
  201. package/dist/core/globals/logger/index.ts +1 -0
  202. package/dist/core/globals/logger/numberOfStackTraceLinesToRemove.ts +3 -0
  203. package/dist/core/globals/objects/index.ts +1 -0
  204. package/dist/core/globals/objects/log.ts +24 -0
  205. package/dist/core/globals/patterns/styleFileRE.ts +3 -0
  206. package/dist/core/globals/tags/addPrefixAssertType.ts +11 -0
  207. package/dist/core/globals/tags/addPrefixProjectName.ts +9 -0
  208. package/dist/core/globals/tags/projectTag.ts +3 -0
  209. package/dist/core/globals/tags/projectTagWithVersion.ts +5 -0
  210. package/dist/core/globals/versions/PROJECT_VERSION.ts +2 -0
  211. package/dist/core/globals/versions/projectInfo.ts +5 -0
  212. package/dist/core/handlers/handleErrorWithoutErrorPage.ts +70 -0
  213. package/dist/core/handlers/handlePageContext.ts +15 -0
  214. package/dist/core/handlers/handlePageContextRequestUrl.ts +56 -0
  215. package/dist/core/handlers/openFacebook.ts +20 -0
  216. package/dist/core/hocs/clientOnly.tsx +130 -0
  217. package/dist/core/hooks/callCumulativeHooks.ts +22 -0
  218. package/dist/core/hooks/executeHook.ts +118 -0
  219. package/dist/core/hooks/useConfig/configsCumulative.ts +6 -0
  220. package/dist/core/hooks/useConfig/useConfig-client.ts +82 -0
  221. package/dist/core/hooks/useConfig/useConfig-server.ts +152 -0
  222. package/dist/core/hydration/progressive.ts +252 -0
  223. package/dist/core/index.ts +60 -0
  224. package/dist/core/islands/index.tsx +198 -0
  225. package/dist/core/logging/UnifiedLoggerV2.ts +555 -0
  226. package/dist/core/logging/index.ts +80 -0
  227. package/dist/core/logging/plugins/FilePlugin.ts +132 -0
  228. package/dist/core/logging/plugins/PayloadCMSPlugin.ts +71 -0
  229. package/dist/core/logging/plugins/RemotePlugin.ts +110 -0
  230. package/dist/core/logging/plugins/index.ts +11 -0
  231. package/dist/core/naming/UnifiedNaming.ts +424 -0
  232. package/dist/core/observability/logger.ts +195 -0
  233. package/dist/core/observability/metrics.ts +156 -0
  234. package/dist/core/processing/getters/getAssertErrMsg.ts +49 -0
  235. package/dist/core/processing/getters/getAssetsDir.ts +11 -0
  236. package/dist/core/processing/getters/getBaseServer.ts +16 -0
  237. package/dist/core/processing/getters/getCacheControl.ts +26 -0
  238. package/dist/core/processing/getters/getConfigDefinedAt.ts +73 -0
  239. package/dist/core/processing/getters/getConfigReveal.ts +14 -0
  240. package/dist/core/processing/getters/getConfigValue.ts +68 -0
  241. package/dist/core/processing/getters/getConfigValueBuildTime.ts +92 -0
  242. package/dist/core/processing/getters/getConfigValueFilePathToShowToUser.ts +17 -0
  243. package/dist/core/processing/getters/getCurrentUrl.ts +42 -0
  244. package/dist/core/processing/getters/getEarlyHints.ts +58 -0
  245. package/dist/core/processing/getters/getEnv.ts +33 -0
  246. package/dist/core/processing/getters/getErrorPageId.ts +23 -0
  247. package/dist/core/processing/getters/getExportPath.spec.ts +34 -0
  248. package/dist/core/processing/getters/getExportPath.ts +33 -0
  249. package/dist/core/processing/getters/getFileExtension.ts +19 -0
  250. package/dist/core/processing/getters/getFilePath.ts +269 -0
  251. package/dist/core/processing/getters/getGlobalObject.ts +53 -0
  252. package/dist/core/processing/getters/getHeadSetting.tsx +36 -0
  253. package/dist/core/processing/getters/getHook.ts +222 -0
  254. package/dist/core/processing/getters/getHookFilePathToShowToUser.ts +12 -0
  255. package/dist/core/processing/getters/getHtmlTags.ts +341 -0
  256. package/dist/core/processing/getters/getHttpRequestAsyncStore.ts +122 -0
  257. package/dist/core/processing/getters/getHttpResponseBody.ts +177 -0
  258. package/dist/core/processing/getters/getMostSimilar.ts +72 -0
  259. package/dist/core/processing/getters/getOutDirs.ts +160 -0
  260. package/dist/core/processing/getters/getPageAssets/getManifestEntry.ts +164 -0
  261. package/dist/core/processing/getters/getPageAssets/retrieveAssetsDev.ts +96 -0
  262. package/dist/core/processing/getters/getPageAssets/retrieveAssetsProd.ts +86 -0
  263. package/dist/core/processing/getters/getPageAssets/sortPageAssetsForEarlyHintsHeader.ts +40 -0
  264. package/dist/core/processing/getters/getPageAssets.ts +140 -0
  265. package/dist/core/processing/getters/getPageConfig.ts +14 -0
  266. package/dist/core/processing/getters/getPageContext.ts +64 -0
  267. package/dist/core/processing/getters/getPageContextCurrent.ts +19 -0
  268. package/dist/core/processing/getters/getPageContextFromHooks.ts +335 -0
  269. package/dist/core/processing/getters/getPageContextProxyForUser.ts +97 -0
  270. package/dist/core/processing/getters/getPageContextRequestUrl.ts +22 -0
  271. package/dist/core/processing/getters/getPageContextSerializedInHtml.ts +32 -0
  272. package/dist/core/processing/getters/getPageContextUrlComputed.ts +410 -0
  273. package/dist/core/processing/getters/getPageElement.tsx +148 -0
  274. package/dist/core/processing/getters/getPageFiles/analyzeClientSide.ts +50 -0
  275. package/dist/core/processing/getters/getPageFiles/analyzePageServerSide.ts +32 -0
  276. package/dist/core/processing/getters/getPageFiles/getExportNames.ts +16 -0
  277. package/dist/core/processing/getters/getPageFiles/getExports.ts +193 -0
  278. package/dist/core/processing/getters/getPageFiles/index.ts +9 -0
  279. package/dist/core/processing/getters/getPageFiles/parseGlobResults.ts +167 -0
  280. package/dist/core/processing/getters/getPageFiles/setPageFiles.ts +76 -0
  281. package/dist/core/processing/getters/getPrefetchSettingResolved.ts.ts +87 -0
  282. package/dist/core/processing/getters/getProjectError.ts +18 -0
  283. package/dist/core/processing/getters/getPropAccessNotation.ts +10 -0
  284. package/dist/core/processing/getters/getRandomId.ts +15 -0
  285. package/dist/core/processing/getters/getRevalidationKey.ts +5 -0
  286. package/dist/core/processing/getters/getRevealClientEntry.ts +7 -0
  287. package/dist/core/processing/getters/getRevealConfig/configDefinitionsBuiltIn.ts +711 -0
  288. package/dist/core/processing/getters/getRevealConfig/crawlPlusFiles.ts +409 -0
  289. package/dist/core/processing/getters/getRevealConfig/filesystemRouting.spec.ts +40 -0
  290. package/dist/core/processing/getters/getRevealConfig/filesystemRouting.ts +286 -0
  291. package/dist/core/processing/getters/getRevealConfig/index.ts +1641 -0
  292. package/dist/core/processing/getters/getRevealConfig/loadFileAtConfigTime.ts +181 -0
  293. package/dist/core/processing/getters/getRevealConfig/resolvePointerImport.ts +240 -0
  294. package/dist/core/processing/getters/getRevealConfig/transformPointerImports.spec.ts +30 -0
  295. package/dist/core/processing/getters/getRevealConfig/transformPointerImports.ts +244 -0
  296. package/dist/core/processing/getters/getRevealConfig/transpileAndExecuteFile.ts +490 -0
  297. package/dist/core/processing/getters/getTagAttributesString.ts +27 -0
  298. package/dist/core/processing/getters/getTerminWidth.ts +9 -0
  299. package/dist/core/processing/getters/getValuePrintable.ts +6 -0
  300. package/dist/core/processing/getters/getViteDevScript.ts +47 -0
  301. package/dist/core/processing/iterators/analyzePage.ts +65 -0
  302. package/dist/core/processing/iterators/includes.ts +10 -0
  303. package/dist/core/processing/iterators/index.ts +2 -0
  304. package/dist/core/processing/iterators/objectKeys.ts +6 -0
  305. package/dist/core/processing/parsers/parseEsModule.ts +43 -0
  306. package/dist/core/processing/parsers/parseTransform.ts +36 -0
  307. package/dist/core/processing/serializers/notSerializable.ts +2 -0
  308. package/dist/core/processing/serializers/replaceWithParserPath.ts +30 -0
  309. package/dist/core/processing/serializers/serializePage/PageConfigSerialized.ts +45 -0
  310. package/dist/core/processing/serializers/serializePage/parsePageConfigs.ts +223 -0
  311. package/dist/core/processing/serializers/serializePage/serializeConfigValues.ts +336 -0
  312. package/dist/core/processing/serializers/serializePageContextClientSide.ts +179 -0
  313. package/dist/core/processing/serializers/stringify.ts +188 -0
  314. package/dist/core/processing/serializers/stringifyTypes.ts +103 -0
  315. package/dist/core/processing/setters/addIs404ToPageProps.ts +27 -0
  316. package/dist/core/processing/setters/setAlwaysShowStackTrace.ts +7 -0
  317. package/dist/core/processing/transformers/augmentType.ts +10 -0
  318. package/dist/core/processing/transformers/rollupSourceMap.ts +23 -0
  319. package/dist/core/processing/transformers/slice.ts +52 -0
  320. package/dist/core/renderer/page/executeOnBeforeRenderAndDataHooks.ts +53 -0
  321. package/dist/core/renderer/page/executeOnRenderHtmlHook.ts +261 -0
  322. package/dist/core/renderer/page/index.ts +804 -0
  323. package/dist/core/renderer/page/inferMediaType.ts +128 -0
  324. package/dist/core/renderer/page/loadUserFilesServerSide.ts +154 -0
  325. package/dist/core/renderer/page/preparePageContextForUserConsumption.ts +55 -0
  326. package/dist/core/renderer/page/preparePageContextForUserConsumptionServerSide.ts +38 -0
  327. package/dist/core/renderer/page/renderPageAlreadyRouted.ts +373 -0
  328. package/dist/core/renderer/page/resolveRedirects.ts +75 -0
  329. package/dist/core/renderer/prerender/index.ts +1 -0
  330. package/dist/core/renderer/prerender/runPrerender.ts +1141 -0
  331. package/dist/core/renderer/prerender/utils.ts +22 -0
  332. package/dist/core/renderer/stream/html.ts +408 -0
  333. package/dist/core/renderer/stream/index.ts +1001 -0
  334. package/dist/core/renderer/stream/onLoad.ts +14 -0
  335. package/dist/core/renderer/stream/react-streaming.ts +69 -0
  336. package/dist/core/renderer/stream/utils.ts +66 -0
  337. package/dist/core/resilience/circuit-breaker.ts +212 -0
  338. package/dist/core/resilience/retry.ts +172 -0
  339. package/dist/core/result/adapters.ts +254 -0
  340. package/dist/core/result.ts +332 -0
  341. package/dist/core/router/abort.ts +339 -0
  342. package/dist/core/router/apiRoutes.ts +94 -0
  343. package/dist/core/router/debug.ts +19 -0
  344. package/dist/core/router/deduceRouteStringFromFilesystemPath.ts +75 -0
  345. package/dist/core/router/dynamicApiRoutes.ts +18 -0
  346. package/dist/core/router/dynamicPageRoutes.ts +18 -0
  347. package/dist/core/router/executeGuardHook.ts +45 -0
  348. package/dist/core/router/executeOnBeforeRouteHook.ts +161 -0
  349. package/dist/core/router/index.ts +230 -0
  350. package/dist/core/router/loadPageRoutes.ts +155 -0
  351. package/dist/core/router/noRouteMatch.ts +1 -0
  352. package/dist/core/router/pageRoutes.ts +159 -0
  353. package/dist/core/router/resolvePrecedence.ts +128 -0
  354. package/dist/core/router/resolveRoute.ts +29 -0
  355. package/dist/core/router/resolveRouteFunction.ts +193 -0
  356. package/dist/core/router/resolveRouteString.ts +204 -0
  357. package/dist/core/router/resolveRouteUtils.ts +77 -0
  358. package/dist/core/router/resolveUrlPathname.ts +67 -0
  359. package/dist/core/router/routeInternal.ts +97 -0
  360. package/dist/core/router/utils.ts +30 -0
  361. package/dist/core/services/BaseService.ts +403 -0
  362. package/dist/core/targets/client/abort.ts +11 -0
  363. package/dist/core/targets/client/createPageContext.ts +48 -0
  364. package/dist/core/targets/client/entry.ts +15 -0
  365. package/dist/core/targets/client/executeOnRenderClientHook.ts +94 -0
  366. package/dist/core/targets/client/history.ts +142 -0
  367. package/dist/core/targets/client/index.ts +9 -0
  368. package/dist/core/targets/client/initClientRouter.ts +48 -0
  369. package/dist/core/targets/client/initOnLinkClick.ts +54 -0
  370. package/dist/core/targets/client/loadUserFilesClientSide.ts +92 -0
  371. package/dist/core/targets/client/navigate.ts +45 -0
  372. package/dist/core/targets/client/onBrowserHistoryNavigation.ts +85 -0
  373. package/dist/core/targets/client/onLoad.ts +10 -0
  374. package/dist/core/targets/client/pageContextInitIsPassedToClient.ts +2 -0
  375. package/dist/core/targets/client/pageFiles.ts +4 -0
  376. package/dist/core/targets/client/prefetch.ts +399 -0
  377. package/dist/core/targets/client/preparePageContextForUserConsumptionClientSide.ts +48 -0
  378. package/dist/core/targets/client/removeBuiltInOverrides.ts +37 -0
  379. package/dist/core/targets/client/removeFoucBuster.ts +70 -0
  380. package/dist/core/targets/client/renderPageClientSide.ts +1817 -0
  381. package/dist/core/targets/client/router.ts +15 -0
  382. package/dist/core/targets/client/scrollRestoration.ts +37 -0
  383. package/dist/core/targets/client/setScrollPosition.ts +87 -0
  384. package/dist/core/targets/client/skipLink.ts +63 -0
  385. package/dist/core/targets/client/utils.ts +34 -0
  386. package/dist/core/targets/http/createHttpResponse.ts +254 -0
  387. package/dist/core/targets/http/fetchBanner.ts +25 -0
  388. package/dist/core/targets/http/fetchCard.ts +25 -0
  389. package/dist/core/targets/http/fetchEvents.ts +25 -0
  390. package/dist/core/targets/http/fetchHero.ts +25 -0
  391. package/dist/core/targets/http/fetchMainInfos.ts +25 -0
  392. package/dist/core/targets/http/fetchPage.ts +78 -0
  393. package/dist/core/targets/http/fetchPages.ts +70 -0
  394. package/dist/core/targets/http/fetchVideos.ts +26 -0
  395. package/dist/core/targets/http/fetchYouTube.ts +90 -0
  396. package/dist/core/targets/server/entry.ts +43 -0
  397. package/dist/core/targets/server/middleware/addSsrMiddleware.ts +52 -0
  398. package/dist/core/targets/server/onLoad.ts +7 -0
  399. package/dist/core/targets/server/pageFiles.ts +4 -0
  400. package/dist/core/targets/server/root.ts +10 -0
  401. package/dist/core/targets/server/utils.ts +20 -0
  402. package/dist/core/targets/url/index.ts +439 -0
  403. package/dist/core/targets/url/modifyUrl.ts +45 -0
  404. package/dist/core/targets/url/parseUrl.ts +440 -0
  405. package/dist/core/targets/url/parseUrlExtras.ts +193 -0
  406. package/dist/core/targets/url/redirectHard.ts +3 -0
  407. package/dist/core/targets/url/updateCurrentPath.ts +52 -0
  408. package/dist/core/targets/url/urlToFile.ts +47 -0
  409. package/dist/core/types/UnifiedTypes.ts +493 -0
  410. package/dist/core/types/contracts.ts +61 -0
  411. package/dist/core/types/generator.ts +316 -0
  412. package/dist/core/utils/array/includes.ts +10 -0
  413. package/dist/core/utils/array/slice.ts +52 -0
  414. package/dist/core/utils/array/sorter.ts +130 -0
  415. package/dist/core/utils/array/stringifyStringArray.ts +7 -0
  416. package/dist/core/utils/array/unique.ts +5 -0
  417. package/dist/core/utils/async/genPromise.ts +8 -0
  418. package/dist/core/utils/async/pLimit.ts +157 -0
  419. package/dist/core/utils/async/sleep.ts +3 -0
  420. package/dist/core/utils/async/throttle.ts +14 -0
  421. package/dist/core/utils/index.ts +31 -0
  422. package/dist/core/utils/object/changeEnumerable.ts +9 -0
  423. package/dist/core/utils/object/deepEqual.ts +10 -0
  424. package/dist/core/utils/object/objectAssign.ts +16 -0
  425. package/dist/core/utils/object/objectDefineProperty.ts +15 -0
  426. package/dist/core/utils/object/objectEntries.ts +7 -0
  427. package/dist/core/utils/object/objectEntriesForEach.ts +7 -0
  428. package/dist/core/utils/object/objectFromEntries.ts +6 -0
  429. package/dist/core/utils/string/addWhitespace.ts +9 -0
  430. package/dist/core/utils/string/capitalizeFirstLetter.ts +8 -0
  431. package/dist/core/utils/string/compareString.ts +7 -0
  432. package/dist/core/utils/string/escapeHtml.ts +10 -0
  433. package/dist/core/utils/string/escapeRegex.ts +4 -0
  434. package/dist/core/utils/string/joinEnglish.ts +18 -0
  435. package/dist/core/utils/string/removeEmptyLines.ts +6 -0
  436. package/dist/core/utils/string/stripAnsi.ts +24 -0
  437. package/dist/core/utils/string/trimWithAnsi.ts +40 -0
  438. package/dist/core/utils/string/truncateString.ts +19 -0
  439. package/dist/core/utils/time/humanizeTime.ts +24 -0
  440. package/dist/exports/RenderErrorPage.js +3 -0
  441. package/dist/exports/__internal.js +3 -0
  442. package/dist/exports/abort.js +3 -0
  443. package/dist/exports/bin-entry.js +3 -0
  444. package/dist/exports/cli.js +3 -0
  445. package/dist/exports/client.js +3 -0
  446. package/dist/exports/config.js +1 -0
  447. package/dist/exports/helpers.js +1 -0
  448. package/dist/exports/index.js +33 -0
  449. package/dist/exports/plugin.js +3 -0
  450. package/dist/exports/prerender.js +3 -0
  451. package/dist/exports/router.js +3 -0
  452. package/dist/exports/routing.js +3 -0
  453. package/dist/exports/server.js +3 -0
  454. package/dist/exports/setup.js +3 -0
  455. package/dist/exports/types.js +1 -0
  456. package/dist/index.d.ts +1 -0
  457. package/dist/index.js +33 -0
  458. package/dist/integration/hydration.ts +52 -0
  459. package/dist/integration/onRenderClient.tsx +377 -0
  460. package/dist/integration/onRenderHtml.tsx +761 -0
  461. package/dist/integration/ssrEffect.ts +31 -0
  462. package/dist/integration/styles.css +141 -0
  463. package/dist/plugins/baseUrls.ts +54 -0
  464. package/dist/plugins/buildConfig/index.ts +701 -0
  465. package/dist/plugins/buildConfig/injectRollupInputs.ts +36 -0
  466. package/dist/plugins/commonConfig.ts +112 -0
  467. package/dist/plugins/config/assertResolveAlias.ts +99 -0
  468. package/dist/plugins/config/assertRevealConfig.ts +116 -0
  469. package/dist/plugins/config/fixServerAssets.ts +213 -0
  470. package/dist/plugins/config/index.ts +227 -0
  471. package/dist/plugins/config/pickFirst.ts +3 -0
  472. package/dist/plugins/config/resolveBase.ts +78 -0
  473. package/dist/plugins/devConfig/determineFsAllowList.ts +34 -0
  474. package/dist/plugins/devConfig/determineOptimizeDeps.ts +129 -0
  475. package/dist/plugins/devConfig/index.ts +222 -0
  476. package/dist/plugins/distFileNames.ts +341 -0
  477. package/dist/plugins/envVars.ts +150 -0
  478. package/dist/plugins/extractAssetsPlugin.ts +318 -0
  479. package/dist/plugins/extractExportNamesPlugin.ts +154 -0
  480. package/dist/plugins/fileEnv.ts +374 -0
  481. package/dist/plugins/importBuild/getRevealManifest.ts +20 -0
  482. package/dist/plugins/importBuild/index.ts +120 -0
  483. package/dist/plugins/importUserCode/addImportStatement.ts +32 -0
  484. package/dist/plugins/importUserCode/debug.ts +2 -0
  485. package/dist/plugins/importUserCode/getConfigFileExport.ts +24 -0
  486. package/dist/plugins/importUserCode/getVirtualFilePageConfigValuesAll.ts +95 -0
  487. package/dist/plugins/importUserCode/getVirtualFilePageConfigs.ts +150 -0
  488. package/dist/plugins/importUserCode/index.ts +375 -0
  489. package/dist/plugins/importUserCode/isRuntimeEnvMatch.ts +31 -0
  490. package/dist/plugins/index.ts +233 -0
  491. package/dist/plugins/onLoad.ts +12 -0
  492. package/dist/plugins/packageJsonFile.ts +62 -0
  493. package/dist/plugins/payload/index.ts +62 -0
  494. package/dist/plugins/previewConfig.ts +95 -0
  495. package/dist/plugins/react/index.ts +72 -0
  496. package/dist/plugins/removeRequireHookPlugin.ts +27 -0
  497. package/dist/plugins/resolveClientEntriesDev.ts +87 -0
  498. package/dist/plugins/reveal/index.ts +39 -0
  499. package/dist/plugins/reveal/remove-use-client-server.ts +52 -0
  500. package/dist/plugins/setGlobalContext.ts +53 -0
  501. package/dist/plugins/suppressRollupWarning.ts +94 -0
  502. package/dist/plugins/utils.ts +33 -0
  503. package/dist/plugins/vercel/+config.ts +18 -0
  504. package/dist/plugins/vercel/functions/assert.ts +13 -0
  505. package/dist/plugins/vercel/functions/build.ts +484 -0
  506. package/dist/plugins/vercel/functions/config.ts +147 -0
  507. package/dist/plugins/vercel/functions/helpers.ts +70 -0
  508. package/dist/plugins/vercel/functions/prerender.ts +140 -0
  509. package/dist/plugins/vercel/functions/route-regex.ts +37 -0
  510. package/dist/plugins/vercel/functions/utils.ts +33 -0
  511. package/dist/plugins/vercel/functions/vike.ts +754 -0
  512. package/dist/plugins/vercel/index.ts +186 -0
  513. package/dist/plugins/vercel/plugin.ts +45 -0
  514. package/dist/plugins/vercel/schemas/config/prerender-config.ts +20 -0
  515. package/dist/plugins/vercel/schemas/config/vc-config.ts +45 -0
  516. package/dist/plugins/vercel/schemas/config/vercel.ts +130 -0
  517. package/dist/plugins/vercel/schemas/exports.ts +12 -0
  518. package/dist/plugins/vercel/templates/edge-helpers.ts +72 -0
  519. package/dist/plugins/vercel/templates/node-helpers.ts +60 -0
  520. package/dist/plugins/vercel/templates/ssr_.template.ts +25 -0
  521. package/dist/plugins/vercel/templates/ssr_edge_.template.ts +20 -0
  522. package/dist/plugins/vercel/templates/utils.ts +31 -0
  523. package/dist/plugins/workaroundCssModuleHmr.ts +23 -0
  524. package/dist/types/index.ts +50 -0
  525. package/dist/types/interfaces/app.ts +700 -0
  526. package/dist/types/interfaces/client.ts +10 -0
  527. package/dist/types/interfaces/config.ts +481 -0
  528. package/dist/types/interfaces/context.ts +677 -0
  529. package/dist/types/interfaces/error.ts +6 -0
  530. package/dist/types/interfaces/file.ts +98 -0
  531. package/dist/types/interfaces/host.ts +209 -0
  532. package/dist/types/interfaces/log.ts +3 -0
  533. package/dist/types/interfaces/logic.ts +46 -0
  534. package/dist/types/interfaces/manifest.ts +15 -0
  535. package/dist/types/interfaces/node.ts +8 -0
  536. package/dist/types/interfaces/page.ts +154 -0
  537. package/dist/types/interfaces/reveal.ts +118 -0
  538. package/dist/types/interfaces/tag.ts +3 -0
  539. package/dist/types/modules/assets.d.ts +57 -0
  540. package/dist/types/modules/env.d.ts +34 -0
  541. package/dist/types/modules/global.d.ts +10 -0
  542. package/dist/types/modules/index.d.ts +1 -0
  543. package/dist/types/modules/node.d.ts +2 -0
  544. package/dist/types/modules/payload.d.ts +2 -0
  545. package/dist/types/modules/reveal-vercel.d.ts +19 -0
  546. package/dist/types/modules/reveal.d.ts +1 -0
  547. package/dist/types/modules/stripe.d.ts +41 -0
  548. package/dist/types/modules/supabase.d.ts +19 -0
  549. package/dist/types/modules/tailwindcss.d.ts +49 -0
  550. package/dist/types/modules/vite.d.ts +7 -0
  551. package/dist/types/namespaces/Config.ts +291 -0
  552. package/dist/types/namespaces/PageContext.ts +23 -0
  553. package/dist/types/namespaces/RevealNamespace.ts +51 -0
  554. package/dist/types/namespaces/index.ts +3 -0
  555. package/dist/ui/accents/DiagonalGrid.tsx +36 -0
  556. package/dist/ui/accents/Glass.tsx +33 -0
  557. package/dist/ui/accents/Parallax.tsx +78 -0
  558. package/dist/ui/accents/Shadow.tsx +28 -0
  559. package/dist/ui/accents/index.tsx +4 -0
  560. package/dist/ui/accessibility/index.ts +168 -0
  561. package/dist/ui/ai/ChatGPTAssistant.tsx +113 -0
  562. package/dist/ui/ai/index.ts +3 -0
  563. package/dist/ui/animations/container.ts +7 -0
  564. package/dist/ui/animations/content.ts +16 -0
  565. package/dist/ui/animations/fade.ts +16 -0
  566. package/dist/ui/animations/index.ts +6 -0
  567. package/dist/ui/animations/slide.ts +23 -0
  568. package/dist/ui/animations/text.ts +14 -0
  569. package/dist/ui/animations/transition.ts +1 -0
  570. package/dist/ui/audio/AudioTrack.tsx +26 -0
  571. package/dist/ui/audio/index.tsx +1 -0
  572. package/dist/ui/backgrounds/Diagonal.tsx +46 -0
  573. package/dist/ui/backgrounds/GradientConic.tsx +21 -0
  574. package/dist/ui/backgrounds/GradientConicRev.tsx +50 -0
  575. package/dist/ui/backgrounds/GradientGlass.tsx +28 -0
  576. package/dist/ui/backgrounds/GradientRadial.tsx +37 -0
  577. package/dist/ui/backgrounds/GradientRadialLeft.tsx +33 -0
  578. package/dist/ui/backgrounds/GradientToBottom.tsx +59 -0
  579. package/dist/ui/backgrounds/GradientToTop.tsx +60 -0
  580. package/dist/ui/backgrounds/Solid.tsx +50 -0
  581. package/dist/ui/backgrounds/Straight.tsx +55 -0
  582. package/dist/ui/backgrounds/TopRight.tsx +15 -0
  583. package/dist/ui/backgrounds/Wrapper.tsx +33 -0
  584. package/dist/ui/backgrounds/index.tsx +12 -0
  585. package/dist/ui/buttons/Button.tsx +54 -0
  586. package/dist/ui/buttons/DisclosureButton.tsx +35 -0
  587. package/dist/ui/buttons/GradientButton.tsx +51 -0
  588. package/dist/ui/buttons/IconButton.tsx +24 -0
  589. package/dist/ui/buttons/LikeButton.tsx +221 -0
  590. package/dist/ui/buttons/MobileMenuButton.tsx +63 -0
  591. package/dist/ui/buttons/MusicButton.tsx +53 -0
  592. package/dist/ui/buttons/SignUpButton.tsx +18 -0
  593. package/dist/ui/buttons/index.tsx +8 -0
  594. package/dist/ui/cards/Card.tsx +255 -0
  595. package/dist/ui/cards/ProductCard.tsx +291 -0
  596. package/dist/ui/cards/VideoCard.tsx +201 -0
  597. package/dist/ui/cards/index.tsx +3 -0
  598. package/dist/ui/contexts/DisclosureContext.tsx +44 -0
  599. package/dist/ui/contexts/GlobalContext.tsx +67 -0
  600. package/dist/ui/contexts/MenuContext.tsx +8 -0
  601. package/dist/ui/contexts/PageContext.tsx +28 -0
  602. package/dist/ui/contexts/ThemeContext.tsx +195 -0
  603. package/dist/ui/controls/MusicHeader.tsx +484 -0
  604. package/dist/ui/controls/MusicPlayer.tsx +76 -0
  605. package/dist/ui/controls/MusicSidebar.tsx +118 -0
  606. package/dist/ui/controls/MusicSlider.tsx +25 -0
  607. package/dist/ui/controls/MusicUpload.tsx +296 -0
  608. package/dist/ui/controls/PlayPause.tsx +64 -0
  609. package/dist/ui/controls/PlayerContent.tsx +205 -0
  610. package/dist/ui/controls/SearchContent.tsx +58 -0
  611. package/dist/ui/controls/SearchInput.tsx +118 -0
  612. package/dist/ui/controls/Searchbar.tsx +53 -0
  613. package/dist/ui/controls/SidebarItem.tsx +57 -0
  614. package/dist/ui/controls/SongItem.tsx +45 -0
  615. package/dist/ui/controls/VideoPlayer.tsx +36 -0
  616. package/dist/ui/controls/index.tsx +13 -0
  617. package/dist/ui/dividers/Horizontal.tsx +18 -0
  618. package/dist/ui/dividers/Transparent.tsx +7 -0
  619. package/dist/ui/dividers/index.tsx +2 -0
  620. package/dist/ui/error/ErrorBoundary.tsx +150 -0
  621. package/dist/ui/error/index.tsx +1 -0
  622. package/dist/ui/forms/Input.tsx +38 -0
  623. package/dist/ui/forms/MediaItem.tsx +105 -0
  624. package/dist/ui/forms/index.tsx +2 -0
  625. package/dist/ui/game/Enemy.tsx +52 -0
  626. package/dist/ui/game/Fighters.tsx +38 -0
  627. package/dist/ui/game/GameControls.tsx +37 -0
  628. package/dist/ui/game/HealthBar.tsx +18 -0
  629. package/dist/ui/game/Player.tsx +70 -0
  630. package/dist/ui/game/index.tsx +5 -0
  631. package/dist/ui/hooks/useApiData.ts +57 -0
  632. package/dist/ui/hooks/useAuthModal.ts +18 -0
  633. package/dist/ui/hooks/useCart.ts +21 -0
  634. package/dist/ui/hooks/useChatGPT.ts +94 -0
  635. package/dist/ui/hooks/useCustomProps.ts +31 -0
  636. package/dist/ui/hooks/useData.ts +10 -0
  637. package/dist/ui/hooks/useDebounce.ts +52 -0
  638. package/dist/ui/hooks/useDisclosure.ts +8 -0
  639. package/dist/ui/hooks/useGame.ts +1147 -0
  640. package/dist/ui/hooks/useLayoutClasses.ts +70 -0
  641. package/dist/ui/hooks/useLazyLoad.ts +78 -0
  642. package/dist/ui/hooks/useLikeSong.ts +22 -0
  643. package/dist/ui/hooks/useLivePreview.ts +60 -0
  644. package/dist/ui/hooks/useMenu.ts +6 -0
  645. package/dist/ui/hooks/useOnPlay.ts +23 -0
  646. package/dist/ui/hooks/usePageContext.ts +174 -0
  647. package/dist/ui/hooks/useParallax.ts +161 -0
  648. package/dist/ui/hooks/usePreviewModal.ts +25 -0
  649. package/dist/ui/hooks/useScreenSize.ts +56 -0
  650. package/dist/ui/hooks/useTheme.ts +6 -0
  651. package/dist/ui/images/Carousel.tsx +326 -0
  652. package/dist/ui/images/Circle.tsx +9 -0
  653. package/dist/ui/images/Defs.tsx +7 -0
  654. package/dist/ui/images/Image.tsx +127 -0
  655. package/dist/ui/images/ImageGrid.tsx +73 -0
  656. package/dist/ui/images/Logo.tsx +22 -0
  657. package/dist/ui/images/Path.tsx +27 -0
  658. package/dist/ui/images/Pattern.tsx +70 -0
  659. package/dist/ui/images/PromoBanner.tsx +25 -0
  660. package/dist/ui/images/Rect.tsx +10 -0
  661. package/dist/ui/images/SVG.tsx +58 -0
  662. package/dist/ui/images/Stop.tsx +15 -0
  663. package/dist/ui/images/index.tsx +12 -0
  664. package/dist/ui/layouts/classNames.ts +8 -0
  665. package/dist/ui/layouts/container.ts +20 -0
  666. package/dist/ui/layouts/flex.ts +13 -0
  667. package/dist/ui/layouts/grid.ts +11 -0
  668. package/dist/ui/layouts/main.ts +31 -0
  669. package/dist/ui/layouts/responsive.ts +28 -0
  670. package/dist/ui/layouts/stack.ts +24 -0
  671. package/dist/ui/lists/DescriptionList.tsx +41 -0
  672. package/dist/ui/lists/DisclosurePanel.tsx +20 -0
  673. package/dist/ui/lists/JobOpeningsList.tsx +54 -0
  674. package/dist/ui/lists/List.tsx +18 -0
  675. package/dist/ui/lists/ListElements.tsx +43 -0
  676. package/dist/ui/lists/ListItem.tsx +63 -0
  677. package/dist/ui/lists/ProductList.tsx +37 -0
  678. package/dist/ui/lists/StatsList.tsx +64 -0
  679. package/dist/ui/lists/UList.tsx +54 -0
  680. package/dist/ui/lists/index.ts +9 -0
  681. package/dist/ui/navigation/DesktopMenu.tsx +14 -0
  682. package/dist/ui/navigation/Footer.tsx +128 -0
  683. package/dist/ui/navigation/Link.tsx +225 -0
  684. package/dist/ui/navigation/MobileMenu.tsx +26 -0
  685. package/dist/ui/navigation/NavigationLinks.tsx +244 -0
  686. package/dist/ui/navigation/NotFound.tsx +12 -0
  687. package/dist/ui/navigation/Route.tsx +120 -0
  688. package/dist/ui/navigation/Transition.tsx +40 -0
  689. package/dist/ui/navigation/index.tsx +8 -0
  690. package/dist/ui/notifications/Banner.tsx +69 -0
  691. package/dist/ui/notifications/Error.tsx +12 -0
  692. package/dist/ui/notifications/Loader.tsx +14 -0
  693. package/dist/ui/notifications/NoResults.tsx +11 -0
  694. package/dist/ui/notifications/index.tsx +4 -0
  695. package/dist/ui/providers/AppProvider.tsx +115 -0
  696. package/dist/ui/providers/DisclosureProvider.tsx +21 -0
  697. package/dist/ui/providers/MenuProvider.tsx +40 -0
  698. package/dist/ui/providers/PageContextProvider.tsx +176 -0
  699. package/dist/ui/providers/ThemeProvider.tsx +196 -0
  700. package/dist/ui/shells/App.tsx +57 -0
  701. package/dist/ui/shells/Container.tsx +74 -0
  702. package/dist/ui/shells/Disclosure.tsx +72 -0
  703. package/dist/ui/shells/Field.tsx +21 -0
  704. package/dist/ui/shells/Flex.tsx +193 -0
  705. package/dist/ui/shells/Grid.tsx +118 -0
  706. package/dist/ui/shells/Header.tsx +123 -0
  707. package/dist/ui/shells/Main.tsx +96 -0
  708. package/dist/ui/shells/Nav.tsx +138 -0
  709. package/dist/ui/shells/Section.tsx +94 -0
  710. package/dist/ui/shells/Skeleton.tsx +24 -0
  711. package/dist/ui/shells/index.ts +11 -0
  712. package/dist/ui/text/Article.tsx +141 -0
  713. package/dist/ui/text/Currency.tsx +29 -0
  714. package/dist/ui/text/Heading.tsx +29 -0
  715. package/dist/ui/text/Label.tsx +24 -0
  716. package/dist/ui/text/Motto.tsx +40 -0
  717. package/dist/ui/text/Paragraph.tsx +20 -0
  718. package/dist/ui/text/Span.tsx +20 -0
  719. package/dist/ui/text/TagLine.tsx +20 -0
  720. package/dist/ui/text/Time.tsx +36 -0
  721. package/dist/ui/text/WelcomeHeading.tsx +40 -0
  722. package/dist/ui/text/index.ts +10 -0
  723. package/dist/ui/video/VideoComponent.tsx +23 -0
  724. package/dist/ui/video/VideoDetail.tsx +33 -0
  725. package/dist/ui/video/VideoItem.tsx +51 -0
  726. package/dist/ui/video/VideoList.tsx +155 -0
  727. package/dist/ui/video/index.ts +4 -0
  728. package/package.json +721 -0
@@ -0,0 +1,804 @@
1
+ export { renderPage, renderPage_addWrapper }
2
+
3
+ import pc from "@brillout/picocolors"
4
+
5
+ import {
6
+ PageContextBuiltInServerInternal,
7
+ PageContextServer,
8
+ } from "../../../types/interfaces/context.js"
9
+ import { PageConfigRuntime } from "../../../types/interfaces/page.js"
10
+ import { assert } from "../../gaurds/assertions/assert/index.js"
11
+ import { assertArguments } from "../../gaurds/assertions/assertArguments.js"
12
+ import { assertUsage } from "../../gaurds/assertions/assertUsage/index.js"
13
+ import { assertWarning } from "../../gaurds/assertions/assertWarning/index.js"
14
+ import { PageContextDebugRouteMatches } from "../../gaurds/debugger/debugPageFiles.js"
15
+ import { log404 } from "../../gaurds/logger/log404/index.js"
16
+ import {
17
+ logRuntimeError,
18
+ logRuntimeInfo,
19
+ } from "../../gaurds/logger/loggerRuntime.js"
20
+ import { isConfigInvalid } from "../../gaurds/validators/isConfigInvalid.js"
21
+ import { isNewError } from "../../gaurds/validators/isNewError.js"
22
+ import {
23
+ getGlobalContext,
24
+ initGlobalContext_renderPage,
25
+ } from "../../globals/contexts/globalContext/index.js"
26
+ import { handleErrorWithoutErrorPage } from "../../handlers/handleErrorWithoutErrorPage.js"
27
+ import { handlePageContextRequestUrl } from "../../handlers/handlePageContextRequestUrl.js"
28
+ import { getErrorPageId } from "../../processing/getters/getErrorPageId.js"
29
+ import getGlobalObject from "../../processing/getters/getGlobalObject.js"
30
+ import {
31
+ serializePageContextAbort,
32
+ serializePageContextClientSide,
33
+ } from "../../processing/serializers/serializePageContextClientSide.js"
34
+ import {
35
+ assertNoInfiniteAbortLoop,
36
+ ErrorAbort,
37
+ getPageContextFromAllRewrites,
38
+ isAbortError,
39
+ logAbortErrorHandled,
40
+ PageContextFromRewrite,
41
+ } from "../../router/abort.js"
42
+ import { route } from "../../router/index.js"
43
+ import {
44
+ createHttpResponseError,
45
+ createHttpResponseFavicon404,
46
+ createHttpResponsePageContextJson,
47
+ createHttpResponseRedirect,
48
+ HttpResponse,
49
+ } from "../../targets/http/createHttpResponse.js"
50
+ import {
51
+ addUrlOrigin,
52
+ assertEnv,
53
+ checkType,
54
+ createUrlFromComponents,
55
+ getUrlPretty,
56
+ hasProp,
57
+ isUri,
58
+ isUrl,
59
+ modifyUrlPathname,
60
+ normalizeUrlPathname,
61
+ objectAssign,
62
+ parseUrl,
63
+ prependBase,
64
+ removeBaseServer,
65
+ removeUrlOrigin,
66
+ type UrlPublic,
67
+ } from "../stream/utils.js"
68
+ import { loadUserFilesServerSide } from "./loadUserFilesServerSide.js"
69
+ import {
70
+ getPageContextInitEnhanced,
71
+ getRenderContext,
72
+ PageContextInitEnhanced,
73
+ RenderContext,
74
+ renderPageAlreadyRouted,
75
+ } from "./renderPageAlreadyRouted.js"
76
+ import { resolveRedirects } from "./resolveRedirects.js"
77
+ import {PageFile} from "../../__internal/index.js"
78
+
79
+ const globalObject = getGlobalObject("runtime/renderPage.ts", {
80
+ httpRequestsCount: 0,
81
+ })
82
+ let renderPage_wrapper = async <PageContext>(
83
+ _httpRequestId: number,
84
+ ret: () => Promise<PageContext>
85
+ ) => ({
86
+ pageContextReturn: await ret(),
87
+ })
88
+ const renderPage_addWrapper = (wrapper: typeof renderPage_wrapper) => {
89
+ renderPage_wrapper = wrapper
90
+ }
91
+
92
+ type PageContextAfterRender = {
93
+ httpResponse: Promise<HttpResponse>
94
+ } & Partial<PageContextBuiltInServerInternal>
95
+
96
+ // `renderPage()` calls `renderPageNominal()` while ensuring that errors are `console.error(err)` instead of `throw err`, so that reveal never triggers a server shut down. (Throwing an error in an Express.js middleware shuts down the whole Express.js server.)
97
+ async function renderPage<
98
+ PageContextUserAdded extends {},
99
+ PageContextInit extends {
100
+ /** @deprecated */
101
+ url?: string
102
+ /** The URL of the HTTP request */
103
+ urlOriginal: string
104
+ },
105
+ >(
106
+ pageContextInit: PageContextInit
107
+ ): Promise<
108
+ // Partial because rendering may fail at any user hook.
109
+ // - `.pageContext.json` requests may fail while still returning the HTTP response `JSON.stringify({ serverSideError: true })`.
110
+ PageContextInit & { httpResponse: HttpResponse } & Partial<
111
+ PageContextServer & PageContextUserAdded
112
+ >
113
+ > {
114
+ assertArguments(...arguments)
115
+ assert(hasProp(pageContextInit, "urlOriginal", "string")) // assertUsage() already implemented at assertArguments()
116
+ assertEnv()
117
+ assertIsUrl(pageContextInit.urlOriginal)
118
+ const urlPathnameWithBase = parseUrl(
119
+ pageContextInit.urlOriginal,
120
+ "/"
121
+ ).pathname
122
+ assertIsNotViteRequest(urlPathnameWithBase, pageContextInit.urlOriginal)
123
+ if (urlPathnameWithBase.endsWith("/favicon.ico"))
124
+ return getPageContextHttpResponseFavicon404(pageContextInit) as any
125
+
126
+ const httpRequestId = getRequestId()
127
+ const urlOriginalPretty = getUrlPretty(pageContextInit.urlOriginal)
128
+ logHttpRequest(urlOriginalPretty, httpRequestId)
129
+
130
+ const { pageContextReturn } = await renderPage_wrapper(httpRequestId, () =>
131
+ renderPageAndPrepare(pageContextInit, httpRequestId)
132
+ )
133
+
134
+ logHttpResponse(urlOriginalPretty, httpRequestId, pageContextReturn)
135
+
136
+ checkType<PageContextAfterRender>(pageContextReturn)
137
+ assert(pageContextReturn.httpResponse)
138
+ return pageContextReturn as any
139
+ }
140
+ async function renderPageAndPrepare(
141
+ pageContextInit: { urlOriginal: string } & Record<string, unknown>,
142
+ httpRequestId: number
143
+ ): Promise<PageContextAfterRender> {
144
+ // Invalid config
145
+ const handleInvalidConfig = (err: unknown) => {
146
+ logRuntimeInfo?.(
147
+ pc.bold(
148
+ pc.red("Error while loading a reveal config file, see error above.")
149
+ ),
150
+ httpRequestId,
151
+ "error"
152
+ )
153
+ const pageContextWithError = getPageContextHttpResponseError(
154
+ err,
155
+ pageContextInit,
156
+ null
157
+ )
158
+ return pageContextWithError
159
+ }
160
+ if (isConfigInvalid) {
161
+ if (
162
+ 1 < 2 // Make TS happy
163
+ ) {
164
+ return handleInvalidConfig(isConfigInvalid.err)
165
+ }
166
+ }
167
+
168
+ // Prepare context
169
+ let renderContext: RenderContext
170
+ try {
171
+ await initGlobalContext_renderPage()
172
+ renderContext = await getRenderContext()
173
+ } catch (err) {
174
+ // Errors are expected since assertUsage() is used in both initGlobalContext_renderPage() and getRenderContext().
175
+ // initGlobalContext_renderPage() and getRenderContext() don't call any user hooks => err isn't thrown from user code.
176
+ assert(!isAbortError(err))
177
+ logRuntimeError(err, httpRequestId)
178
+ const pageContextWithError = getPageContextHttpResponseError(
179
+ err,
180
+ pageContextInit,
181
+ null
182
+ )
183
+ return pageContextWithError
184
+ }
185
+ if (isConfigInvalid) {
186
+ return handleInvalidConfig(isConfigInvalid.err)
187
+ } else {
188
+ // From now on, renderContext.pageConfigs contains all the configuration data; getrevealConfig() isn't called anymore for this request
189
+ }
190
+
191
+ // Check Base URL
192
+ assertBaseUrl(pageContextInit)
193
+
194
+ // Normalize URL
195
+ {
196
+ const pageContextHttpResponse = normalizeUrl(pageContextInit, httpRequestId)
197
+ if (pageContextHttpResponse) return pageContextHttpResponse
198
+ }
199
+
200
+ // Permanent redirects (HTTP status code `301`)
201
+ {
202
+ const pageContextHttpResponse = getPermanentRedirect(
203
+ pageContextInit,
204
+ httpRequestId
205
+ )
206
+ if (pageContextHttpResponse) return pageContextHttpResponse
207
+ }
208
+
209
+ return await renderPageAlreadyPrepared(
210
+ pageContextInit,
211
+ httpRequestId,
212
+ renderContext,
213
+ []
214
+ )
215
+ }
216
+
217
+ async function renderPageAlreadyPrepared(
218
+ pageContextInit: { urlOriginal: string } & Record<string, unknown>,
219
+ httpRequestId: number,
220
+ renderContext: RenderContext,
221
+ pageContextsFromRewrite: PageContextFromRewrite[]
222
+ ): Promise<PageContextAfterRender> {
223
+ assertNoInfiniteAbortLoop(
224
+ pageContextsFromRewrite.length,
225
+ // There doesn't seem to be a way to count the number of HTTP redirects (reveal don't have access to the HTTP request headers/cookies)
226
+ // https://stackoverflow.com/questions/9683007/detect-infinite-http-redirect-loop-on-server-side
227
+ 0
228
+ )
229
+ let pageContextNominalPageSuccess:
230
+ | undefined
231
+ | Awaited<ReturnType<typeof renderPageNominal>>
232
+ let pageContextNominalPageInit = {}
233
+ {
234
+ const pageContextFromAllRewrites = getPageContextFromAllRewrites(
235
+ pageContextsFromRewrite
236
+ )
237
+ objectAssign(pageContextNominalPageInit, pageContextFromAllRewrites)
238
+ }
239
+ {
240
+ const pageContextInitEnhanced = getPageContextInitEnhancedSSR(
241
+ pageContextInit,
242
+ renderContext,
243
+ pageContextNominalPageInit._urlRewrite,
244
+ httpRequestId
245
+ )
246
+ objectAssign(pageContextNominalPageInit, pageContextInitEnhanced)
247
+ }
248
+ let errNominalPage: unknown
249
+ {
250
+ try {
251
+ pageContextNominalPageSuccess = await renderPageNominal(
252
+ pageContextNominalPageInit
253
+ )
254
+ } catch (err) {
255
+ errNominalPage = err
256
+ assert(errNominalPage)
257
+ logRuntimeError(errNominalPage, httpRequestId)
258
+ }
259
+ if (!errNominalPage) {
260
+ assert(pageContextNominalPageSuccess === pageContextNominalPageInit)
261
+ }
262
+ }
263
+
264
+ // Log upon 404
265
+ if (
266
+ pageContextNominalPageSuccess &&
267
+ "is404" in pageContextNominalPageSuccess &&
268
+ pageContextNominalPageSuccess.is404 === true
269
+ ) {
270
+ await log404(pageContextNominalPageSuccess)
271
+ }
272
+
273
+ if (errNominalPage === undefined) {
274
+ assert(pageContextNominalPageSuccess)
275
+ return {
276
+ ...pageContextNominalPageSuccess,
277
+ httpResponse: Promise.resolve(pageContextNominalPageSuccess.httpResponse),
278
+ }
279
+ } else {
280
+ assert(errNominalPage)
281
+ assert(pageContextNominalPageSuccess === undefined)
282
+ assert(pageContextNominalPageInit)
283
+ assert(hasProp(pageContextNominalPageInit, "urlOriginal", "string"))
284
+
285
+ const pageContextErrorPageInit = await getPageContextErrorPageInit(
286
+ pageContextInit,
287
+ errNominalPage,
288
+ pageContextNominalPageInit,
289
+ renderContext,
290
+ httpRequestId
291
+ )
292
+
293
+ // Handle `throw redirect()` and `throw render()` while rendering nominal page
294
+ if (isAbortError(errNominalPage)) {
295
+ const handled = await handleAbortError(
296
+ errNominalPage,
297
+ pageContextsFromRewrite,
298
+ pageContextInit,
299
+ pageContextNominalPageInit,
300
+ httpRequestId,
301
+ renderContext,
302
+ pageContextErrorPageInit
303
+ )
304
+ if (handled.pageContextReturn) {
305
+ // - throw redirect()
306
+ // - throw render(url)
307
+ // - throw render(abortStatusCode) if .pageContext.json request
308
+ return handled.pageContextReturn
309
+ } else {
310
+ // - throw render(abortStatusCode) if not .pageContext.json request
311
+ }
312
+ Object.assign(pageContextErrorPageInit, handled.pageContextAbort)
313
+ }
314
+
315
+ {
316
+ const errorPageId = getErrorPageId(
317
+ renderContext.pageFilesAll,
318
+ renderContext.pageConfigs
319
+ )
320
+ if (!errorPageId) {
321
+ objectAssign(pageContextErrorPageInit, { pageId: null })
322
+ const errorPageContext = await handleErrorWithoutErrorPage(
323
+ pageContextErrorPageInit
324
+ )
325
+ return Promise.resolve({
326
+ httpResponse: Promise.resolve(errorPageContext.httpResponse),
327
+ })
328
+ } else {
329
+ objectAssign(pageContextErrorPageInit, { pageId: errorPageId })
330
+ }
331
+ }
332
+
333
+ let pageContextErrorPage:
334
+ | undefined
335
+ | Awaited<ReturnType<typeof renderPageAlreadyRouted>>
336
+ try {
337
+ pageContextErrorPage = await renderPageAlreadyRouted(
338
+ pageContextErrorPageInit
339
+ )
340
+ } catch (errErrorPage) {
341
+ // Handle `throw redirect()` and `throw render()` while rendering error page
342
+ if (isAbortError(errErrorPage)) {
343
+ const handled = await handleAbortError(
344
+ errErrorPage,
345
+ pageContextsFromRewrite,
346
+ pageContextInit,
347
+ pageContextNominalPageInit,
348
+ httpRequestId,
349
+ renderContext,
350
+ pageContextErrorPageInit
351
+ )
352
+ // throw render(abortStatusCode)
353
+ if (!handled.pageContextReturn) {
354
+ const pageContextAbort = errErrorPage._pageContextAbort
355
+ assertWarning(
356
+ false,
357
+ `Failed to render error page because ${pc.cyan(
358
+ pageContextAbort._abortCall
359
+ )} was called: make sure ${pc.cyan(
360
+ pageContextAbort._abortCaller
361
+ )} doesn't occur while the error page is being rendered.`,
362
+ { onlyOnce: false }
363
+ )
364
+ const pageContextHttpWithError = getPageContextHttpResponseError(
365
+ errNominalPage,
366
+ pageContextInit,
367
+ pageContextErrorPageInit
368
+ )
369
+ return pageContextHttpWithError
370
+ }
371
+ // `throw redirect()` / `throw render(url)`
372
+ return handled.pageContextReturn
373
+ }
374
+ if (isNewError(errErrorPage, errNominalPage)) {
375
+ logRuntimeError(errErrorPage, httpRequestId)
376
+ }
377
+ const pageContextWithError = getPageContextHttpResponseError(
378
+ errNominalPage,
379
+ pageContextInit,
380
+ pageContextErrorPageInit
381
+ )
382
+ return pageContextWithError
383
+ }
384
+ return {
385
+ ...pageContextErrorPage,
386
+ httpResponse: Promise.resolve(pageContextErrorPage.httpResponse),
387
+ }
388
+ }
389
+ }
390
+
391
+ function logHttpRequest(urlOriginal: string, httpRequestId: number) {
392
+ logRuntimeInfo?.(getRequestInfoMessage(urlOriginal), httpRequestId, "info")
393
+ }
394
+ function getRequestInfoMessage(urlOriginal: string) {
395
+ return `HTTP request: ${prettyUrl(urlOriginal)}`
396
+ }
397
+ async function logHttpResponse(
398
+ urlOriginalPretty: string,
399
+ httpRequestId: number,
400
+ pageContextReturn: PageContextAfterRender
401
+ ) {
402
+ const httpResponse = await pageContextReturn.httpResponse
403
+ const statusCode = httpResponse?.statusCode ?? null
404
+
405
+ let msg: `HTTP response ${string}` | `HTTP redirect ${string}`
406
+ let isNominal: boolean
407
+ {
408
+ const { errorWhileRendering } = pageContextReturn
409
+ const isSkipped = statusCode === null && !errorWhileRendering
410
+ if (isSkipped) {
411
+ // - URL doesn't include Base URL
412
+ // - Can we abort earlier so that `logHttpResponse()` and `logHttpRequest()` aren't even called?
413
+ // - Error loading a reveal config file
414
+ // - We should show `HTTP response ${urlOriginalPretty} ERR` instead.
415
+ // - Maybe we can/should make the error available at pageContext.errorWhileRendering
416
+ assert(errorWhileRendering === null || errorWhileRendering === undefined)
417
+ msg = `HTTP response ${prettyUrl(urlOriginalPretty)} ${pc.dim("null")}`
418
+ // Erroneous value (it shoud sometimes be `false`) but it's fine as it doesn't seem to have much of an impact.
419
+ isNominal = true
420
+ } else {
421
+ const isSuccess =
422
+ statusCode !== null && statusCode >= 200 && statusCode <= 399
423
+ isNominal = isSuccess || statusCode === 404
424
+ const color = (s: number | string) =>
425
+ pc.bold(isSuccess ? pc.green(String(s)) : pc.red(String(s)))
426
+ const isRedirect = statusCode && 300 <= statusCode && statusCode <= 399
427
+ const type = isRedirect ? "redirect" : "response"
428
+ if (isRedirect) {
429
+ assert(pageContextReturn.httpResponse)
430
+ const headerRedirect = (await pageContextReturn.httpResponse).headers
431
+ .slice()
432
+ .reverse()
433
+ .find((header) => header[0] === "Location")
434
+ assert(headerRedirect)
435
+ const urlRedirect = headerRedirect[1]
436
+ urlOriginalPretty = urlRedirect
437
+ }
438
+ msg = `HTTP ${type} ${prettyUrl(urlOriginalPretty)} ${color(statusCode ?? "ERR")}`
439
+ }
440
+ }
441
+ logRuntimeInfo?.(msg, httpRequestId, isNominal ? "info" : "error")
442
+ }
443
+ function prettyUrl(url: string) {
444
+ return pc.bold(decodeURI(url))
445
+ }
446
+
447
+ function getPageContextHttpResponseError(
448
+ err: unknown,
449
+ pageContextInit: Record<string, unknown>,
450
+ pageContext: null | {
451
+ _pageFilesAll: PageFile[]
452
+ _pageConfigs: PageConfigRuntime[]
453
+ }
454
+ ): PageContextAfterRender {
455
+ const pageContextWithError = createPageContext(pageContextInit)
456
+ const httpResponse = createHttpResponseError(pageContext)
457
+ objectAssign(pageContextWithError, {
458
+ httpResponse,
459
+ errorWhileRendering: err,
460
+ })
461
+ return pageContextWithError
462
+ }
463
+ function getPageContextHttpResponseFavicon404(
464
+ pageContextInit: Record<string, unknown>
465
+ ): PageContextAfterRender {
466
+ const pageContext = createPageContext(pageContextInit)
467
+ const httpResponse = createHttpResponseFavicon404()
468
+ objectAssign(pageContext, {
469
+ httpResponse,
470
+ })
471
+ checkType<PageContextAfterRender>(pageContext)
472
+ return pageContext
473
+ }
474
+
475
+ function createPageContext(pageContextInit: Record<string, unknown>) {
476
+ const pageContext = {
477
+ _isPageContextObject: true,
478
+ }
479
+ Object.assign(pageContext, pageContextInit)
480
+ return pageContext
481
+ }
482
+
483
+ async function renderPageNominal(
484
+ pageContext: {
485
+ _urlRewrite: null | string
486
+ _httpRequestId: number
487
+ } & PageContextInitEnhanced
488
+ ) {
489
+ objectAssign(pageContext, { errorWhileRendering: null })
490
+
491
+ // Route
492
+ {
493
+ const pageContextFromRoute = await route(pageContext)
494
+ objectAssign(pageContext, pageContextFromRoute)
495
+ objectAssign(pageContext, { is404: pageContext.pageId ? null : true })
496
+ if (pageContext.pageId === null) {
497
+ const errorPageId = getErrorPageId(
498
+ pageContext._pageFilesAll,
499
+ pageContext._pageConfigs
500
+ )
501
+ if (!errorPageId) {
502
+ assert(hasProp(pageContext, "pageId", "null"))
503
+ return handleErrorWithoutErrorPage(pageContext)
504
+ }
505
+ objectAssign(pageContext, { pageId: errorPageId })
506
+ }
507
+ }
508
+ assert(hasProp(pageContext, "pageId", "string"))
509
+ assert(pageContext.errorWhileRendering === null)
510
+
511
+ // Render
512
+ const pageContextAfterRender = await renderPageAlreadyRouted(pageContext)
513
+ assert(pageContext === pageContextAfterRender)
514
+ return pageContextAfterRender
515
+ }
516
+
517
+ type PageContextErrorPageInit = Awaited<
518
+ ReturnType<typeof getPageContextErrorPageInit>
519
+ >
520
+ async function getPageContextErrorPageInit(
521
+ pageContextInit: { urlOriginal: string },
522
+ errNominalPage: unknown,
523
+ pageContextNominalPagePartial: Record<string, unknown>,
524
+ renderContext: RenderContext,
525
+ httpRequestId: number
526
+ ) {
527
+ const pageContextInitEnhanced = getPageContextInitEnhancedSSR(
528
+ pageContextInit,
529
+ renderContext,
530
+ null,
531
+ httpRequestId
532
+ )
533
+
534
+ assert(errNominalPage)
535
+ const pageContext = {}
536
+ objectAssign(pageContext, pageContextInitEnhanced)
537
+ objectAssign(pageContext, {
538
+ is404: false,
539
+ errorWhileRendering: errNominalPage as Error,
540
+ routeParams: {} as Record<string, string>,
541
+ })
542
+
543
+ objectAssign(pageContext, {
544
+ _debugRouteMatches:
545
+ (pageContextNominalPagePartial as PageContextDebugRouteMatches)
546
+ ._debugRouteMatches || "ROUTING_ERROR",
547
+ })
548
+
549
+ assert(pageContext.errorWhileRendering)
550
+ return pageContext
551
+ }
552
+
553
+ function getPageContextInitEnhancedSSR(
554
+ pageContextInit: { urlOriginal: string },
555
+ renderContext: RenderContext,
556
+ urlRewrite: null | string,
557
+ httpRequestId: number
558
+ ) {
559
+ const { isClientSideNavigation, _urlHandler } = handlePageContextUrl(
560
+ pageContextInit.urlOriginal
561
+ )
562
+ const pageContextInitEnhanced = getPageContextInitEnhanced(
563
+ pageContextInit,
564
+ renderContext,
565
+ {
566
+ ssr: {
567
+ urlRewrite,
568
+ urlHandler: _urlHandler,
569
+ isClientSideNavigation,
570
+ },
571
+ }
572
+ )
573
+ objectAssign(pageContextInitEnhanced, { _httpRequestId: httpRequestId })
574
+ return pageContextInitEnhanced
575
+ }
576
+
577
+ function handlePageContextUrl(urlOriginal: string): {
578
+ isClientSideNavigation: boolean
579
+ _urlHandler: (urlOriginal: string) => string
580
+ } {
581
+ const { isPageContextRequest } = handlePageContextRequestUrl(urlOriginal)
582
+ return {
583
+ isClientSideNavigation: isPageContextRequest,
584
+ _urlHandler: (url: string) =>
585
+ handlePageContextRequestUrl(url).urlWithoutPageContextRequestSuffix,
586
+ }
587
+ }
588
+
589
+ function getRequestId(): number {
590
+ const httpRequestId = ++globalObject.httpRequestsCount
591
+ assert(httpRequestId >= 1)
592
+ return httpRequestId
593
+ }
594
+
595
+ function assertIsUrl(urlOriginal: string) {
596
+ assertUsage(
597
+ isUrl(urlOriginal),
598
+ `${pc.code("renderPage(pageContextInit)")} (https://reveal.dev/renderPage) called with ${pc.code(
599
+ `pageContextInit.urlOriginal===${JSON.stringify(urlOriginal)}`
600
+ )} which isn't a valid URL.`
601
+ )
602
+ }
603
+ function assertIsNotViteRequest(urlPathname: string, urlOriginal: string) {
604
+ const isViteRequest =
605
+ urlPathname.startsWith("/@vite/client") ||
606
+ urlPathname.startsWith("/@fs/") ||
607
+ urlPathname.startsWith("/__vite_ping")
608
+ assertUsage(
609
+ !isViteRequest,
610
+ `${pc.code("renderPage(pageContextInit)")} (https://reveal.dev/renderPage) called with ${pc.code(
611
+ `pageContextInit.urlOriginal===${JSON.stringify(urlOriginal)}`
612
+ )} which is unexpected because this URL should have already been handled by Vite's development middleware. Make sure to 1. install Vite's development middleware and 2. add Vite's middleware *before* reveal's middleware, see https://reveal.dev/renderPage`
613
+ )
614
+ }
615
+
616
+ function normalizeUrl(
617
+ pageContextInit: { urlOriginal: string },
618
+ httpRequestId: number
619
+ ) {
620
+ const { trailingSlash, disableUrlNormalization, baseServer } =
621
+ getGlobalContext()
622
+ if (disableUrlNormalization) return null
623
+ const { urlOriginal } = pageContextInit
624
+ const { isPageContextRequest } = handlePageContextRequestUrl(urlOriginal)
625
+ if (isPageContextRequest) return null
626
+ const urlNormalized = normalizeUrlPathname(
627
+ urlOriginal,
628
+ trailingSlash,
629
+ baseServer
630
+ )
631
+ if (!urlNormalized) return null
632
+ logRuntimeInfo?.(
633
+ `URL normalized from ${pc.cyan(urlOriginal)} to ${pc.cyan(urlNormalized)} (https://reveal.dev/url-normalization)`,
634
+ httpRequestId,
635
+ "info"
636
+ )
637
+ const httpResponse = createHttpResponseRedirect(
638
+ { url: urlNormalized, statusCode: 301 },
639
+ pageContextInit.urlOriginal
640
+ )
641
+ const pageContextHttpResponse = createPageContext(pageContextInit)
642
+ objectAssign(pageContextHttpResponse, { httpResponse })
643
+ return pageContextHttpResponse
644
+ }
645
+
646
+ function getPermanentRedirect(
647
+ pageContextInit: { urlOriginal: string },
648
+ httpRequestId: number
649
+ ) {
650
+ const { redirects, baseServer } = getGlobalContext()
651
+ const urlWithoutBase = removeBaseServer(
652
+ pageContextInit.urlOriginal,
653
+ baseServer
654
+ )
655
+ let origin: null | string = null
656
+ let urlTargetExternal: null | string = null
657
+ let urlTarget = modifyUrlPathname(urlWithoutBase, (urlPathname) => {
658
+ const urlTarget = resolveRedirects(redirects, urlPathname)
659
+ if (urlTarget === null) return null
660
+ if (!isUrl(urlTarget)) {
661
+ // E.g. `urlTarget === 'mailto:some@example.com'`
662
+ assert(isUri(urlTarget))
663
+ urlTargetExternal = urlTarget
664
+ return null
665
+ }
666
+ const { urlModified, origin: origin_ } = removeUrlOrigin(urlTarget)
667
+ origin = origin_
668
+ return urlModified
669
+ })
670
+ if (urlTargetExternal) {
671
+ urlTarget = urlTargetExternal
672
+ } else {
673
+ if (origin) urlTarget = addUrlOrigin(urlTarget, origin)
674
+ if (urlTarget === urlWithoutBase) return null
675
+ urlTarget = prependBase(urlTarget, baseServer)
676
+ assert(urlTarget !== pageContextInit.urlOriginal)
677
+ }
678
+ logRuntimeInfo?.(
679
+ `Permanent redirect defined by your config.redirects (https://reveal.dev/redirects)`,
680
+ httpRequestId,
681
+ "info"
682
+ )
683
+ const httpResponse = createHttpResponseRedirect(
684
+ { url: urlTarget, statusCode: 301 },
685
+ urlWithoutBase
686
+ )
687
+ const pageContextHttpResponse = createPageContext(pageContextInit)
688
+ objectAssign(pageContextHttpResponse, { httpResponse })
689
+ return pageContextHttpResponse
690
+ }
691
+
692
+ async function handleAbortError(
693
+ errAbort: ErrorAbort,
694
+ pageContextsFromRewrite: PageContextFromRewrite[],
695
+ pageContextInit: { urlOriginal: string },
696
+ // handleAbortError() creates a new pageContext object and we don't merge pageContextNominalPageInit to it: we only use some pageContextNominalPageInit information.
697
+ pageContextNominalPageInit: {
698
+ urlOriginal: string
699
+ urlParsed: UrlPublic
700
+ _urlRewrite: null | string
701
+ isClientSideNavigation: boolean
702
+ },
703
+ httpRequestId: number,
704
+ renderContext: RenderContext,
705
+ pageContextErrorPageInit: PageContextErrorPageInit
706
+ ): Promise<
707
+ | { pageContextReturn: PageContextAfterRender; pageContextAbort?: never }
708
+ | { pageContextReturn?: never; pageContextAbort: Record<string, unknown> }
709
+ > {
710
+ logAbortErrorHandled(
711
+ errAbort,
712
+ getGlobalContext().isProduction,
713
+ pageContextNominalPageInit
714
+ )
715
+
716
+ const pageContextAbort = errAbort._pageContextAbort
717
+ let pageContextSerialized: string
718
+ if (pageContextNominalPageInit.isClientSideNavigation) {
719
+ if (pageContextAbort.abortStatusCode) {
720
+ const errorPageId = getErrorPageId(
721
+ renderContext.pageFilesAll,
722
+ renderContext.pageConfigs
723
+ )
724
+ const abortCall = pageContextAbort._abortCall
725
+ assert(abortCall)
726
+ assertUsage(
727
+ errorPageId,
728
+ `You called ${pc.cyan(
729
+ abortCall
730
+ )} but you didn't define an error page, make sure to define one https://reveal.dev/error-page`
731
+ )
732
+ const pageContext = createPageContext({})
733
+ objectAssign(pageContext, { pageId: errorPageId })
734
+ objectAssign(pageContext, pageContextAbort)
735
+ objectAssign(pageContext, pageContextErrorPageInit)
736
+ objectAssign(pageContext, renderContext)
737
+ objectAssign(pageContext, await loadUserFilesServerSide(pageContext))
738
+ // We include pageContextInit: we don't only serialize pageContextAbort because the error page may need to access pageContextInit
739
+ pageContextSerialized = serializePageContextClientSide(pageContext)
740
+ } else {
741
+ pageContextSerialized = serializePageContextAbort(pageContextAbort)
742
+ }
743
+ const httpResponse = await createHttpResponsePageContextJson(
744
+ pageContextSerialized
745
+ )
746
+ const pageContextReturn = { httpResponse: await httpResponse }
747
+ return {
748
+ pageContextReturn: {
749
+ httpResponse: Promise.resolve(pageContextReturn.httpResponse),
750
+ },
751
+ }
752
+ }
753
+
754
+ if (pageContextAbort._urlRewrite) {
755
+ const pageContextReturn = await renderPageAlreadyPrepared(
756
+ pageContextInit,
757
+ httpRequestId,
758
+ renderContext,
759
+ [...pageContextsFromRewrite, pageContextAbort]
760
+ )
761
+ Object.assign(pageContextReturn, pageContextAbort)
762
+ return { pageContextReturn }
763
+ }
764
+ if (pageContextAbort._urlRedirect) {
765
+ const pageContextReturn = createPageContext(pageContextInit)
766
+ objectAssign(pageContextReturn, pageContextAbort)
767
+ const httpResponse = createHttpResponseRedirect(
768
+ pageContextAbort._urlRedirect,
769
+ (() => {
770
+ const { pathname, searchOriginal } =
771
+ pageContextNominalPageInit.urlParsed
772
+ const urlLogical = createUrlFromComponents(
773
+ null,
774
+ pathname,
775
+ searchOriginal,
776
+ // The server-side doesn't have access to the hash
777
+ null
778
+ )
779
+ return urlLogical
780
+ })()
781
+ )
782
+ objectAssign(pageContextReturn, { httpResponse })
783
+ return { pageContextReturn }
784
+ }
785
+ assert(pageContextAbort.abortStatusCode)
786
+ return { pageContextAbort }
787
+ }
788
+
789
+ function assertBaseUrl(pageContextInit: { urlOriginal: string }) {
790
+ const { baseServer } = getGlobalContext()
791
+ const { urlOriginal } = pageContextInit
792
+ const { urlWithoutPageContextRequestSuffix } =
793
+ handlePageContextRequestUrl(urlOriginal)
794
+ const { hasBaseServer } = parseUrl(
795
+ urlWithoutPageContextRequestSuffix,
796
+ baseServer
797
+ )
798
+ assertUsage(
799
+ hasBaseServer,
800
+ `${pc.code("renderPage(pageContextInit)")} (https://reveal.dev/renderPage) called with ${pc.code(
801
+ `pageContextInit.urlOriginal===${JSON.stringify(urlOriginal)}`
802
+ )} which doesn't start with Base URL ${pc.code(baseServer)} (https://reveal.dev/base-url)`
803
+ )
804
+ }