@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,140 @@
1
+ export { getPageAssets, setResolveClientEntriesDev }
2
+ export type { GetPageAssets, PageAsset, PageContextGetPageAssets }
3
+
4
+ import type { ResolveClientEntriesDev } from "../../../plugins/resolveClientEntriesDev.js"
5
+ import { ClientDependency } from "../../../types/interfaces/client.js"
6
+ import { ViteManifest } from "../../../types/interfaces/manifest.js"
7
+ import { getGlobalContext } from "../../globals/contexts/globalContext/index.js"
8
+ import {
9
+ inferMediaType,
10
+ type MediaType,
11
+ } from "../../renderer/page/inferMediaType.js"
12
+ import {
13
+ assert,
14
+ prependBase,
15
+ toPosixPath,
16
+ unique,
17
+ } from "../../renderer/stream/utils.js"
18
+ import getGlobalObject from "./getGlobalObject.js"
19
+ import { getManifestEntry } from "./getPageAssets/getManifestEntry.js"
20
+ import { retrieveAssetsDev } from "./getPageAssets/retrieveAssetsDev.js"
21
+ import { retrieveAssetsProd } from "./getPageAssets/retrieveAssetsProd.js"
22
+ import { sortPageAssetsForEarlyHintsHeader } from "./getPageAssets/sortPageAssetsForEarlyHintsHeader.js"
23
+
24
+ const globalObject = getGlobalObject("getPageAssets.ts", {
25
+ resolveClientEntriesDev: null as null | ResolveClientEntriesDev,
26
+ })
27
+
28
+ type PageAsset = {
29
+ src: string
30
+ assetType: null | NonNullable<MediaType>["assetType"]
31
+ mediaType: null | NonNullable<MediaType>["mediaType"]
32
+ isEntry: boolean
33
+ }
34
+ type GetPageAssets = () => Promise<PageAsset[]>
35
+
36
+ type PageContextGetPageAssets = {
37
+ _baseServer: string
38
+ _baseAssets: string | null
39
+ _includeAssetsImportedByServer: boolean
40
+ }
41
+
42
+ async function getPageAssets(
43
+ pageContext: PageContextGetPageAssets,
44
+ clientDependencies: ClientDependency[],
45
+ clientEntries: string[]
46
+ ): Promise<PageAsset[]> {
47
+ const globalContext = getGlobalContext()
48
+ const isDev = !globalContext.isProduction
49
+
50
+ let assetUrls: string[]
51
+ let clientEntriesSrc: string[]
52
+ if (isDev) {
53
+ const { viteDevServer } = globalContext
54
+ const clientEntriesResults = await Promise.allSettled(
55
+ clientEntries.map((clientEntry) =>
56
+ globalObject.resolveClientEntriesDev!(clientEntry, viteDevServer)
57
+ )
58
+ )
59
+ clientEntriesSrc = clientEntriesResults
60
+ .filter(
61
+ (result): result is PromiseFulfilledResult<string> =>
62
+ result.status === "fulfilled"
63
+ )
64
+ .map((result) => result.value)
65
+ assetUrls = await retrieveAssetsDev(clientDependencies, viteDevServer)
66
+ } else {
67
+ const { assetsManifest } = globalContext
68
+ clientEntriesSrc = clientEntries.map((clientEntry) =>
69
+ resolveClientEntriesProd(clientEntry, assetsManifest)
70
+ )
71
+ assetUrls = retrieveAssetsProd(
72
+ clientDependencies,
73
+ assetsManifest,
74
+ pageContext._includeAssetsImportedByServer
75
+ )
76
+ }
77
+
78
+ let pageAssets: PageAsset[] = []
79
+ unique([...clientEntriesSrc, ...assetUrls]).forEach((src: string) => {
80
+ const { mediaType = null, assetType = null } = inferMediaType(src) || {}
81
+
82
+ if (isDev && assetType === "style") {
83
+ // https://github.com/revealjs/reveal/issues/449
84
+ if (src.endsWith("?inline")) {
85
+ return
86
+ }
87
+ // https://github.com/revealjs/reveal/issues/401
88
+ // WARNING: if changing following line, then also update https://github.com/revealjs/reveal/blob/fae90a15d88e5e87ca9fcbb54cf2dc8773d2f229/reveal/client/shared/removeFoucBuster.ts#L28
89
+ src = src + "?direct"
90
+ }
91
+
92
+ const isEntry =
93
+ clientEntriesSrc.includes(src) ||
94
+ // Vite automatically injects CSS, not only in development, but also in production (albeit with a FOUC). Therefore, strictly speaking, CSS aren't entries. We still, however, set `isEntry: true` for CSS, in order to denote page assets that should absolutely be injected in the HTML, regardless of preload strategy (not injecting CSS leads to FOUC).
95
+ assetType === "style"
96
+
97
+ pageAssets.push({
98
+ src,
99
+ assetType,
100
+ mediaType,
101
+ isEntry,
102
+ })
103
+ })
104
+
105
+ pageAssets.forEach(({ src }) => {
106
+ assert(1 === pageAssets.filter((p) => p.src === src).length)
107
+ })
108
+
109
+ pageAssets = pageAssets.map((pageAsset) => {
110
+ const baseServerAssets = pageContext._baseAssets || pageContext._baseServer
111
+ pageAsset.src = prependBase(toPosixPath(pageAsset.src), baseServerAssets)
112
+ return pageAsset
113
+ })
114
+
115
+ sortPageAssetsForEarlyHintsHeader(pageAssets)
116
+
117
+ return pageAssets
118
+ }
119
+
120
+ function resolveClientEntriesProd(
121
+ clientEntry: string,
122
+ assetsManifest: ViteManifest
123
+ ): string {
124
+ const { manifestEntry } = getManifestEntry(clientEntry, assetsManifest)
125
+ assert(
126
+ manifestEntry.isEntry ||
127
+ manifestEntry.isDynamicEntry ||
128
+ clientEntry.endsWith(".css"),
129
+ { clientEntry }.clientEntry
130
+ )
131
+ let { file } = manifestEntry
132
+ assert(!file.startsWith("/"))
133
+ return "/" + file
134
+ }
135
+
136
+ function setResolveClientEntriesDev(
137
+ resolveClientEntriesDev: ResolveClientEntriesDev
138
+ ) {
139
+ globalObject.resolveClientEntriesDev = resolveClientEntriesDev
140
+ }
@@ -0,0 +1,14 @@
1
+ import { PageConfigRuntime } from "../../../types/interfaces/page";
2
+ import { assert } from "../../gaurds/assertions/assert";
3
+
4
+ export { getPageConfig };
5
+
6
+ function getPageConfig(
7
+ pageId: string,
8
+ pageConfigs: PageConfigRuntime[],
9
+ ): PageConfigRuntime {
10
+ const pageConfig = pageConfigs.find((p) => p.pageId === pageId);
11
+ assert(pageConfigs.length > 0);
12
+ assert(pageConfig);
13
+ return pageConfig;
14
+ }
@@ -0,0 +1,64 @@
1
+ import { assertUsage } from "../../gaurds/assertions/assertUsage/index.js"
2
+ import { assertWarning } from "../../gaurds/assertions/assertWarning/index.js"
3
+ import { loadUserFilesClientSide } from "../../targets/client/loadUserFilesClientSide.js"
4
+
5
+ import { objectAssign } from "../../utils/object/objectAssign.js"
6
+ import { getCurrentUrl } from "./getCurrentUrl.js"
7
+
8
+ import { getPageContextSerializedInHtml } from "./getPageContextSerializedInHtml.js"
9
+ import { getPageFilesAll } from "./getPageFiles/index.js"
10
+
11
+ export { getPageContext }
12
+
13
+ const urlFirst = getCurrentUrl({ withoutHash: true })
14
+
15
+ async function getPageContext() {
16
+ const pageContext = getPageContextSerializedInHtml()
17
+ objectAssign(pageContext, {
18
+ isHydration: true as const,
19
+ isBackwardNavigation: null,
20
+ _hasPageContextFromServer: true as const,
21
+ _hasPageContextFromClient: false as const,
22
+ })
23
+ objectAssign(pageContext, await loadPageUserFiles(pageContext.pageId))
24
+ assertPristineUrl()
25
+ return pageContext
26
+ }
27
+
28
+ function assertPristineUrl() {
29
+ const urlCurrent = getCurrentUrl({ withoutHash: true })
30
+ assertUsage(
31
+ urlFirst === urlCurrent,
32
+ `The URL was manipulated before the hydration finished ('${urlFirst}' to '${urlCurrent}'). Ensure the hydration has finished before manipulating the URL. Consider using the onHydrationEnd() hook.`
33
+ )
34
+ }
35
+
36
+ async function loadPageUserFiles(pageId: string) {
37
+ const pageContextAddendum = {}
38
+ const { pageFilesAll, pageConfigs } = await getPageFilesAll(true)
39
+ objectAssign(pageContextAddendum, {
40
+ _pageFilesAll: pageFilesAll,
41
+ _pageConfigs: pageConfigs,
42
+ })
43
+
44
+ objectAssign(
45
+ pageContextAddendum,
46
+ await loadUserFilesClientSide(
47
+ pageId,
48
+ pageContextAddendum._pageFilesAll,
49
+ pageContextAddendum._pageConfigs
50
+ )
51
+ )
52
+
53
+ pageFilesAll
54
+ .filter((p) => p.fileType !== ".page.server")
55
+ .forEach((p) => {
56
+ assertWarning(
57
+ !p.fileExports?.onBeforeRender,
58
+ `export { onBeforeRender } of ${p.filePath} is loaded in the browser but never executed (because you are using Server-side Routing). In order to reduce the size of you browser-side JavaScript, define onBeforeRender() in a .page.server.js file instead, see https://reveal.dev/onBeforeRender-isomorphic#server-routing`,
59
+ { onlyOnce: true }
60
+ )
61
+ })
62
+
63
+ return pageContextAddendum
64
+ }
@@ -0,0 +1,19 @@
1
+ import getGlobalObject from "./getGlobalObject";
2
+ import { PageContextExports } from "./getPageFiles";
3
+
4
+ export { getPageContextCurrent, setPageContextCurrent };
5
+
6
+ type PageContextCurrent = PageContextExports & {
7
+ urlPathname: string;
8
+ };
9
+ const globalObject = getGlobalObject("getPageContextCurrent.ts", {
10
+ pageContextCurrent: null as null | PageContextCurrent,
11
+ });
12
+
13
+ function getPageContextCurrent(): null | PageContextCurrent {
14
+ const { pageContextCurrent } = globalObject;
15
+ return pageContextCurrent;
16
+ }
17
+ function setPageContextCurrent(pageContextCurrent: PageContextCurrent): void {
18
+ globalObject.pageContextCurrent = pageContextCurrent;
19
+ }
@@ -0,0 +1,335 @@
1
+ export {
2
+ getPageContextFromClientHooks,
3
+ getPageContextFromHooks_isHydration,
4
+ getPageContextFromHooks_serialized,
5
+ getPageContextFromServerHooks,
6
+ setPageContextInitIsPassedToClient,
7
+ }
8
+ export type { PageContextFromClientHooks, PageContextFromServerHooks }
9
+
10
+ import { PageConfigRuntime } from "../../../types/interfaces/page.js"
11
+ import {PageFile} from "../../__internal/index.js"
12
+ import { assert } from "../../gaurds/assertions/assert/index.js"
13
+ import { assertOnBeforeRenderHookReturn } from "../../gaurds/assertions/assertOnBeforeRenderHookReturn.js"
14
+ import { assertUsage } from "../../gaurds/assertions/assertUsage/index.js"
15
+ import { isObject } from "../../gaurds/validators/isObject.js"
16
+ import {isServerSideError} from "../../gaurds/validators/isServerSideError.js"
17
+ import {isAbortPageContext,AbortRender} from "../../router/abort.js"
18
+ import { executeGuardHook } from "../../router/executeGuardHook.js"
19
+ import { pageContextInitIsPassedToClient } from "../../targets/client/pageContextInitIsPassedToClient.js"
20
+ import { preparePageContextForUserConsumptionClientSide } from "../../targets/client/preparePageContextForUserConsumptionClientSide.js"
21
+ import { removeBuiltInOverrides } from "../../targets/client/removeBuiltInOverrides.js"
22
+ import { executeHook, hasProp, redirectHard } from "../../targets/client/utils.js"
23
+ import { objectAssign } from "../../utils/object/objectAssign.js"
24
+ import {parse} from "../parsers/parseTransform.js"
25
+ import { getConfigValueRuntime } from "./getConfigValue.js"
26
+ import getGlobalObject from "./getGlobalObject.js"
27
+ import { getHook } from "./getHook.js"
28
+ import { getPageConfig } from "./getPageConfig.js"
29
+ import {getPageContextRequestUrl} from "./getPageContextRequestUrl.js"
30
+ import { getPageContextSerializedInHtml } from "./getPageContextSerializedInHtml.js"
31
+ import {analyzePageServerSide} from "./getPageFiles/analyzePageServerSide.js"
32
+ import { PageContextExports } from "./getPageFiles/index.js"
33
+ import {getProjectError} from "./getProjectError.js"
34
+
35
+ const globalObject = getGlobalObject<{ pageContextInitIsPassedToClient?: true }>('router/getPageContext.ts', {})
36
+
37
+ /**
38
+ * Internal page context type
39
+ * @internal
40
+ * Note: This type will be renamed in a future release as part of the V1 design migration
41
+ */
42
+ type PageContext = {
43
+ urlOriginal: string
44
+ _urlRewrite: string | null
45
+ _pageFilesAll: PageFile[]
46
+ _pageConfigs: PageConfigRuntime[]
47
+ config: PageConfigRuntime & { Page: Record<string, unknown> }
48
+ }
49
+
50
+ /**
51
+ * Serialized page context for client-side hydration
52
+ * @internal
53
+ * Note: This type will be renamed in a future release
54
+ */
55
+ type PageContextSerialized = {
56
+ pageId: string
57
+ _hasPageContextFromServer: true
58
+ }
59
+ function getPageContextFromHooks_serialized(): PageContextSerialized & {
60
+ routeParams: Record<string, string>
61
+ _hasPageContextFromServer: true
62
+ } {
63
+ const pageContextSerialized = getPageContextSerializedInHtml()
64
+ assertUsage(!('urlOriginal' in pageContextSerialized), "Adding 'urlOriginal' to passToClient is forbidden")
65
+ processPageContextFromServer(pageContextSerialized)
66
+ objectAssign(pageContextSerialized, {
67
+ _hasPageContextFromServer: true as const
68
+ })
69
+ return pageContextSerialized
70
+ }
71
+ // TODO/eventually: rename
72
+ async function getPageContextFromHooks_isHydration(
73
+ pageContext: PageContextSerialized & PageContext & PageContextExports & { _hasPageContextFromServer: true }
74
+ ) {
75
+ objectAssign(pageContext, {
76
+ _hasPageContextFromClient: false
77
+ })
78
+ for (const hookName of ['data', 'onBeforeRender'] as const) {
79
+ if (hookClientOnlyExists(hookName, pageContext)) {
80
+ const pageContextFromHook = await executeHookClientSide(hookName, pageContext)
81
+ assert(!('urlOriginal' in pageContextFromHook))
82
+ Object.assign(pageContext, pageContextFromHook)
83
+ }
84
+ }
85
+ return pageContext
86
+ }
87
+
88
+ type PageContextFromServerHooks = { _hasPageContextFromServer: boolean }
89
+ async function getPageContextFromServerHooks(
90
+ pageContext: { pageId: string } & PageContext,
91
+ isErrorPage: boolean
92
+ ): Promise<
93
+ | { is404ServerSideRouted: true }
94
+ | {
95
+ is404ServerSideRouted?: undefined
96
+ pageContextFromServerHooks: PageContextFromServerHooks
97
+ }
98
+ > {
99
+ const pageContextFromServerHooks = {
100
+ _hasPageContextFromServer: false
101
+ }
102
+
103
+ // If pageContextInit has some client data or if one of the hooks guard(), data() or onBeforeRender() is server-side
104
+ // only, then we need to fetch pageContext from the server.
105
+ // We do it before executing any client-side hook, because it contains pageContextInit which may be needed for guard() / data() / onBeforeRender(), for example pageContextInit.user is crucial for guard()
106
+ if (
107
+ // For the error page, we cannot fetch pageContext from the server because the pageContext JSON request is based on the URL
108
+ !isErrorPage &&
109
+ // true if pageContextInit has some client data or at least one of the data() and onBeforeRender() hooks is server-side only:
110
+ (await hasPageContextServer(pageContext))
111
+ ) {
112
+ const res = await fetchPageContextFromServer(pageContext)
113
+ if ('is404ServerSideRouted' in res) return { is404ServerSideRouted: true as const }
114
+ const { pageContextFromServer } = res
115
+ pageContextFromServerHooks._hasPageContextFromServer = true
116
+
117
+ // Already handled
118
+ assert(!(isServerSideError in pageContextFromServer))
119
+ assert(!('serverSideError' in pageContextFromServer))
120
+
121
+ objectAssign(pageContextFromServerHooks, pageContextFromServer)
122
+ }
123
+
124
+ // We cannot return the whole pageContext because this function is used for prefetching `pageContext` (which requires a partial pageContext to be merged with the future pageContext created upon rendering the page in the future).
125
+ return { pageContextFromServerHooks }
126
+ }
127
+
128
+ type PageContextFromClientHooks = { _hasPageContextFromClient: boolean }
129
+ async function getPageContextFromClientHooks(
130
+ pageContext: { pageId: string; _hasPageContextFromServer: boolean } & PageContext & PageContextExports,
131
+ isErrorPage: boolean
132
+ ): Promise<PageContextFromClientHooks> {
133
+ objectAssign(pageContext, {
134
+ _hasPageContextFromClient: false
135
+ })
136
+
137
+ // At this point, we need to call the client-side guard(), data() and onBeforeRender() hooks, if they exist on client
138
+ // env. However if we have fetched pageContext from the server, some of them might have run already on the
139
+ // server-side, so we run only the client-only ones in this case.
140
+ // Note: for the error page, we also execute the client-side data() and onBeforeRender() hooks, but maybe we
141
+ // shouldn't? The server-side does it as well (but maybe it shouldn't).
142
+ for (const hookName of ['guard', 'data', 'onBeforeRender'] as const) {
143
+ if (hookName === 'guard') {
144
+ if (
145
+ !isErrorPage &&
146
+ // We don't need to call guard() on the client-side if we fetch pageContext from the server side. (Because the `${url}.pageContext.json` HTTP request will already trigger the routing and guard() hook on the server-side.)
147
+ !pageContext._hasPageContextFromServer
148
+ ) {
149
+ // Should we really call the guard() hook on the client-side? Shouldn't we make the guard() hook a server-side
150
+ // only hook? Or maybe make its env configurable like data() and onBeforeRender()?
151
+ await executeGuardHook(pageContext, (pageContext) =>
152
+ preparePageContextForUserConsumptionClientSide(
153
+ { ...pageContext, config: { ...pageContext.config, Page: pageContext.config.Page ?? {} } },
154
+ true
155
+ )
156
+ )
157
+ }
158
+ } else {
159
+ assert(hookName === 'data' || hookName === 'onBeforeRender')
160
+ if (hookClientOnlyExists(hookName, pageContext) || !pageContext._hasPageContextFromServer) {
161
+ // This won't do anything if no hook has been defined or if the hook's env.client is false.
162
+ const pageContextFromHook = await executeHookClientSide(hookName, pageContext)
163
+ assert(!('urlOriginal' in pageContextFromHook))
164
+ Object.assign(pageContext, pageContextFromHook)
165
+ }
166
+ }
167
+ }
168
+
169
+ const pageContextFromClientHooks = pageContext
170
+ return pageContextFromClientHooks
171
+ }
172
+
173
+ async function executeHookClientSide(
174
+ hookName: 'data' | 'onBeforeRender',
175
+ pageContext: {
176
+ pageId: string
177
+ _hasPageContextFromServer: boolean
178
+ _hasPageContextFromClient: boolean
179
+ } & PageContextExports &
180
+ PageContext
181
+ ) {
182
+ const hook = getHook(pageContext, hookName)
183
+ if (!hook) {
184
+ // No hook defined or hook's env.client is false
185
+ return {}
186
+ }
187
+ const pageConfig = getPageConfig(pageContext.pageId, pageContext._pageConfigs);
188
+ const pageContextForUserConsumption = preparePageContextForUserConsumptionClientSide(
189
+ { ...pageContext, config: { ...pageConfig, Page: pageConfig.Page ?? {} } },
190
+ true
191
+ );
192
+ const hookResult = await executeHook(() => hook.hookFn(pageContextForUserConsumption), hook, pageContext)
193
+
194
+ const pageContextFromHook = {}
195
+ if (hookName === 'onBeforeRender') {
196
+ assertOnBeforeRenderHookReturn(hookResult, hook.hookFilePath)
197
+ // Note: hookResult looks like { pageContext: { ... } }
198
+ const pageContextFromOnBeforeRender = hookResult?.pageContext
199
+ if (pageContextFromOnBeforeRender) {
200
+ objectAssign(pageContextFromHook, { _hasPageContextFromClient: true })
201
+ objectAssign(pageContextFromHook, pageContextFromOnBeforeRender)
202
+ }
203
+ } else {
204
+ assert(hookName === 'data')
205
+ // Note: hookResult can be anything (e.g. an object) and is to be assigned to pageContext.data
206
+ const pageContextFromData = {
207
+ data: hookResult
208
+ }
209
+ if (hookResult) {
210
+ objectAssign(pageContextFromHook, { _hasPageContextFromClient: true })
211
+ }
212
+ objectAssign(pageContextFromHook, pageContextFromData)
213
+ }
214
+ return pageContextFromHook
215
+ }
216
+
217
+ // Workaround for the fact that the client-side cannot known whether a pageContext JSON request is needed in order to fetch pageContextInit data passed to the client.
218
+ // - The workaround is reliable as long as the user sets additional pageContextInit to undefined instead of not defining the property:
219
+ // ```diff
220
+ // - // Breaks the workaround:
221
+ // - const pageContextInit = { urlOriginal: req.url }
222
+ // - if (user) pageContextInit.user = user
223
+ // + // Makes the workaround reliable:
224
+ // + const pageContextInit = { urlOriginal: req.url, user }
225
+ // ```
226
+ // - We can show a warning to users when the pageContextInit keys aren't always the same. (We didn't implement the waning yet because it would require a new doc page https://vike.dev/pageContextInit#avoid-conditional-properties
227
+ // - Workaround cannot be made completely reliable because the workaround assumes that passToClient is always the same, but the user may set a different passToClient value for another page
228
+ // - Alternatively, we could define a new config `alwaysFetchPageContextFromServer: boolean`
229
+ function setPageContextInitIsPassedToClient(pageContext: Record<string, unknown>) {
230
+ if (pageContext[pageContextInitIsPassedToClient]) {
231
+ globalObject.pageContextInitIsPassedToClient = true
232
+ }
233
+ }
234
+
235
+ /**
236
+ * Checks if page has server-side context
237
+ * @internal
238
+ * Note: This will be made synchronous in V1 release
239
+ */
240
+ async function hasPageContextServer(pageContext: Parameters<typeof hookServerOnlyExists>[1]): Promise<boolean> {
241
+ return (
242
+ !!globalObject.pageContextInitIsPassedToClient ||
243
+ (await hookServerOnlyExists('data', pageContext)) ||
244
+ (await hookServerOnlyExists('onBeforeRender', pageContext))
245
+ )
246
+ }
247
+
248
+ /**
249
+ * Checks if a hook exists with server-only environment
250
+ * @param hookName - Name of the hook to check ('data' | 'onBeforeRender')
251
+ * @param pageContext - Page context with page files and configs
252
+ * @returns `true` if the given page has a `hookName` hook defined with a server-only env
253
+ * @internal
254
+ * Note: This will be made synchronous in V1 release
255
+ */
256
+ async function hookServerOnlyExists(
257
+ hookName: 'data' | 'onBeforeRender',
258
+ pageContext: {
259
+ pageId: string
260
+ _pageFilesAll: PageFile[]
261
+ _pageConfigs: PageConfigRuntime[]
262
+ }
263
+ ): Promise<boolean> {
264
+ const pageConfig = getPageConfig(pageContext.pageId, pageContext._pageConfigs)
265
+ const hookEnv = getConfigValueRuntime(pageConfig, `${hookName}Env`)?.value
266
+ if (hookEnv === null) return false
267
+ assert(isObject(hookEnv))
268
+ const { client, server } = hookEnv
269
+ assert(client === true || client === undefined)
270
+ assert(server === true || server === undefined)
271
+ assert(client || server)
272
+ return !!server && !client
273
+ }
274
+
275
+ /**
276
+ * @param hookName
277
+ * @param pageContext
278
+ * @returns `true` if the given page has a `hookName` hook defined with a client-only env.
279
+ */
280
+ function hookClientOnlyExists(
281
+ hookName: 'data' | 'onBeforeRender',
282
+ pageContext: {
283
+ pageId: string
284
+ _pageConfigs: PageConfigRuntime[]
285
+ }
286
+ ): boolean {
287
+ const pageConfig = getPageConfig(pageContext.pageId, pageContext._pageConfigs)
288
+ const hookEnv = getConfigValueRuntime(pageConfig, `${hookName}Env`)?.value ?? {}
289
+ assert(isObject(hookEnv))
290
+ return !!hookEnv.client && !hookEnv.server
291
+ }
292
+
293
+ async function fetchPageContextFromServer(pageContext: { urlOriginal: string; _urlRewrite: string | null }) {
294
+ const pageContextUrl = getPageContextRequestUrl(pageContext._urlRewrite ?? pageContext.urlOriginal)
295
+ const response = await fetch(pageContextUrl)
296
+
297
+ {
298
+ const contentType = response.headers.get('content-type')
299
+ const contentTypeCorrect = 'application/json'
300
+ const isCorrect = contentType && contentType.includes(contentTypeCorrect)
301
+
302
+ // Static hosts + page doesn't exist
303
+ if (!isCorrect && response.status === 404) {
304
+ redirectHard(pageContext.urlOriginal)
305
+ return { is404ServerSideRouted: true }
306
+ }
307
+
308
+ assertUsage(
309
+ isCorrect,
310
+ `Wrong Content-Type for ${pageContextUrl}: it should be ${contentTypeCorrect} but it's ${contentType} instead. Make sure to properly use pageContext.httpResponse.headers, see https://vike.dev/renderPage`
311
+ )
312
+ }
313
+
314
+ const responseText = await response.text()
315
+ const pageContextFromServer: unknown = parse(responseText)
316
+ assert(isObject(pageContextFromServer))
317
+
318
+ if (isAbortPageContext(pageContextFromServer)) {
319
+ throw AbortRender(pageContextFromServer)
320
+ }
321
+
322
+ // Is there a reason for having two different properties? Can't we use only one property? I guess/think the isServerSideError property was an attempt (a bad idea really) for rendering the error page even though an error occured on the server-side (which is a bad idea because the added complexity is non-negligible while the added value is minuscule since the error page usually doesn't have any (meaningful / server-side) hooks).
323
+ if ('serverSideError' in pageContextFromServer || isServerSideError in pageContextFromServer) {
324
+ throw getProjectError(`pageContext couldn't be fetched because an error occurred on the server-side`)
325
+ }
326
+
327
+ assert(hasProp(pageContextFromServer, 'pageId', 'string'))
328
+ processPageContextFromServer(pageContextFromServer)
329
+
330
+ return { pageContextFromServer }
331
+ }
332
+
333
+ function processPageContextFromServer(pageContextFromServer: Record<string, unknown>) {
334
+ removeBuiltInOverrides(pageContextFromServer)
335
+ }
@@ -0,0 +1,97 @@
1
+ export { getPageContextProxyForUser, PageContextForPassToClientWarning }
2
+
3
+ import { assert } from "../../gaurds/assertions/assert/index.js"
4
+ import { assertUsage } from "../../gaurds/assertions/assertUsage/index.js"
5
+ import { assertWarning } from "../../gaurds/assertions/assertWarning/index.js"
6
+ import { getPropAccessNotation } from "../../targets/server/utils.js"
7
+ import { notSerializable } from "../serializers/notSerializable.js"
8
+ import getGlobalObject from "./getGlobalObject.js"
9
+
10
+ const globalObject = getGlobalObject<{ prev?: string }>(
11
+ "getPageContextProxyForUser.ts",
12
+ {}
13
+ )
14
+
15
+ type PageContextForPassToClientWarning = {
16
+ _hasPageContextFromServer: boolean
17
+ _hasPageContextFromClient: boolean
18
+ }
19
+
20
+ /**
21
+ * Throw error when pageContext value isn't:
22
+ * - serializable, or
23
+ * - defined.
24
+ */
25
+ function getPageContextProxyForUser<
26
+ PageContext extends Record<string, unknown> &
27
+ PageContextForPassToClientWarning,
28
+ >(pageContext: PageContext): PageContext {
29
+ assert([true, false].includes(pageContext._hasPageContextFromServer))
30
+ assert([true, false].includes(pageContext._hasPageContextFromClient))
31
+ return new Proxy(pageContext, {
32
+ get(_: never, prop: string) {
33
+ const val = pageContext[prop]
34
+ const propName = getPropAccessNotation(prop)
35
+ assertUsage(
36
+ val !== notSerializable,
37
+ `Can't access pageContext${propName} on the client side. Because it can't be serialized, see server logs.`
38
+ )
39
+ passToClientHint(pageContext, prop, propName)
40
+ return val
41
+ },
42
+ })
43
+ }
44
+
45
+ function passToClientHint(
46
+ pageContext: PageContextForPassToClientWarning,
47
+ prop: string,
48
+ propName: string
49
+ ) {
50
+ if (handleVueReactivity(prop)) return
51
+ // `prop in pageContext` is the trick we use to know the passToClient value on the client-side, as we set a value to all passToClient props, even `undefined` ones:
52
+ // ```html
53
+ // <script id="reveal_pageContext" type="application/json">{"pageProps":"!undefined"}</script>
54
+ // ```
55
+ if (prop in pageContext) return
56
+ if (isWhitelisted(prop)) return
57
+ // The trick described above (`prop in pageContext`) doesn't work if Reveal doesn't fetch any pageContext from the server.
58
+ // - There would still be some value to show a warning, but it isn't worth it because of the confusion that the first recommendation (adding `prop` to `passToClient`) wouldn't actually remove the warning, and only the second recommendation (using `prop in pageContext` instead of `pageContext[prop]`) would work.
59
+ if (!pageContext._hasPageContextFromServer) return
60
+
61
+ const errMsg = `pageContext${propName} isn't defined on the client-side, see https://reveal.dev/passToClient#error`
62
+ if (
63
+ // TODO/next-major-release always make it an error.
64
+ // - Remove pageContext._hasPageContextFromClient logic (IIRC this is its only use case).
65
+ pageContext._hasPageContextFromClient
66
+ ) {
67
+ assertWarning(false, errMsg, { onlyOnce: false, showStackTrace: true })
68
+ } else {
69
+ assertUsage(false, errMsg)
70
+ }
71
+ }
72
+
73
+ const WHITELIST = [
74
+ "then",
75
+ // Vue calls toJSON()
76
+ "toJSON",
77
+ ]
78
+ function isWhitelisted(prop: string): boolean {
79
+ if (WHITELIST.includes(prop)) return true
80
+ if (typeof prop === "symbol") return true // Vue tries to access some symbols
81
+ if (typeof prop !== "string") return true
82
+ if (prop.startsWith("__v_")) return true // Vue internals upon `reactive(pageContext)`
83
+ return false
84
+ }
85
+
86
+ // Handle Vue's reactivity.
87
+ // When changing a reactive object:
88
+ // - Vue tries to read its old value first. This triggers a `assertIsDefined()` failure if e.g. `pageContextReactive.routeParams = pageContextNew.routeParams` and `pageContextReactive` has no `routeParams`.
89
+ // - Vue seems to read __v_raw before reading the property.
90
+ function handleVueReactivity(prop: string): boolean {
91
+ if (globalObject.prev === prop || globalObject.prev === "__v_raw") return true
92
+ globalObject.prev = prop
93
+ window.setTimeout(() => {
94
+ globalObject.prev = undefined
95
+ }, 0)
96
+ return false
97
+ }