@revealui/core 0.0.1-pre.0 → 0.0.1-pre.2

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 (712) hide show
  1. package/NOTICE +34 -0
  2. package/dist/exports/RenderErrorPage.js +2 -2
  3. package/dist/exports/bin-entry.js +3 -1
  4. package/dist/node/cli/index.js +3 -0
  5. package/dist/shared/RenderErrorPage.d.ts +3 -0
  6. package/dist/shared/RenderErrorPage.js +3 -0
  7. package/dist/shared/abort.js +3 -0
  8. package/dist/shared/route/routing.js +3 -0
  9. package/package.json +2 -2
  10. package/dist/core/__internal/index.ts +0 -63
  11. package/dist/core/__tests__/assertNoInfiniteHttpRedirect.spec.ts +0 -76
  12. package/dist/core/__tests__/deduceRouteStringFromFilesystemPath.spec.ts +0 -88
  13. package/dist/core/__tests__/freezePartial.spec.ts +0 -40
  14. package/dist/core/__tests__/getValuePrintable.spec.ts +0 -15
  15. package/dist/core/__tests__/injectHtmlTags.spec.ts +0 -101
  16. package/dist/core/__tests__/isHtml.spec.ts +0 -23
  17. package/dist/core/__tests__/isNpmPackage.spec.ts +0 -93
  18. package/dist/core/__tests__/normalizeHeaders.spec.ts +0 -142
  19. package/dist/core/__tests__/parseUrl-extras.spec.ts +0 -60
  20. package/dist/core/__tests__/parseUrl.spec.ts +0 -1339
  21. package/dist/core/__tests__/resolvePrecedence/resolvePrecedence_overall.spec.ts +0 -106
  22. package/dist/core/__tests__/resolvePrecedence/resolvePrecedence_route-strings.spec.ts +0 -99
  23. package/dist/core/__tests__/resolveRedirects.spec.ts +0 -132
  24. package/dist/core/__tests__/resolveRouteString.spec.ts +0 -211
  25. package/dist/core/__tests__/resolveUrlPathname.spec.ts +0 -22
  26. package/dist/core/__tests__/trimWithAnsi.spec.ts +0 -40
  27. package/dist/core/api/ssr.ts +0 -63
  28. package/dist/core/assets/extractAssetsQuery.ts +0 -29
  29. package/dist/core/assets/index.ts +0 -173
  30. package/dist/core/assets/inferHtmlTags.ts +0 -61
  31. package/dist/core/assets/injectHtmlTags.ts +0 -236
  32. package/dist/core/assets/mergeScriptTags.ts +0 -77
  33. package/dist/core/assets/sanitizeJson.ts +0 -8
  34. package/dist/core/cli/bin.ts +0 -161
  35. package/dist/core/cli/commands/add.ts +0 -158
  36. package/dist/core/cli/commands/check.ts +0 -47
  37. package/dist/core/cli/commands/doctor/checks/build.ts +0 -83
  38. package/dist/core/cli/commands/doctor/checks/config.ts +0 -130
  39. package/dist/core/cli/commands/doctor/checks/dependencies.ts +0 -144
  40. package/dist/core/cli/commands/doctor/checks/practices.ts +0 -156
  41. package/dist/core/cli/commands/doctor/checks/structure.ts +0 -127
  42. package/dist/core/cli/commands/doctor/fixes/index.ts +0 -136
  43. package/dist/core/cli/commands/doctor/index.ts +0 -47
  44. package/dist/core/cli/commands/doctor/print.ts +0 -44
  45. package/dist/core/cli/commands/doctor/types.ts +0 -16
  46. package/dist/core/cli/commands/fix.ts +0 -161
  47. package/dist/core/cli/commands/init.ts +0 -145
  48. package/dist/core/cli/commands/upgrade.ts +0 -115
  49. package/dist/core/cli/onLoad.ts +0 -7
  50. package/dist/core/cli/utils.ts +0 -6
  51. package/dist/core/components/Config/Config-client.ts +0 -14
  52. package/dist/core/components/Config/Config-server.ts +0 -16
  53. package/dist/core/components/Head/Head-client.ts +0 -4
  54. package/dist/core/components/Head/Head-server.ts +0 -16
  55. package/dist/core/components/Loading.tsx +0 -23
  56. package/dist/core/config/findPageConfig.ts +0 -14
  57. package/dist/core/config/loadConfigValues.ts +0 -28
  58. package/dist/core/constants/UnifiedConstants.ts +0 -348
  59. package/dist/core/dom/applyHeadSettings.tsx +0 -13
  60. package/dist/core/dom/onPageVisibilityChange.ts +0 -17
  61. package/dist/core/dom/updateDocumentHead.ts +0 -15
  62. package/dist/core/errors/ErrorHandler.ts +0 -480
  63. package/dist/core/files/file-system/filesystemPath.ts +0 -27
  64. package/dist/core/files/file-system/findFile.ts +0 -35
  65. package/dist/core/files/file-system/findPackageJson.ts +0 -19
  66. package/dist/core/files/file-system/findPageFiles.ts +0 -40
  67. package/dist/core/files/file-system/pathShim.ts +0 -16
  68. package/dist/core/files/file-system/prependEntriesDir.ts +0 -13
  69. package/dist/core/files/file-system/removeFileExtention.ts +0 -3
  70. package/dist/core/files/file-system/requireResolve.ts +0 -59
  71. package/dist/core/files/file-system/scanCodebase.ts +0 -64
  72. package/dist/core/files/virtual-files/index.ts +0 -31
  73. package/dist/core/files/virtual-files/virtualFileImportUserCode.ts +0 -34
  74. package/dist/core/files/virtual-files/virtualFilePageConfigValuesAll.ts +0 -49
  75. package/dist/core/gaurds/assertions/assert/base.ts +0 -6
  76. package/dist/core/gaurds/assertions/assert/index.ts +0 -2
  77. package/dist/core/gaurds/assertions/assert/log.ts +0 -42
  78. package/dist/core/gaurds/assertions/assertArguments.ts +0 -83
  79. package/dist/core/gaurds/assertions/assertCast.ts +0 -9
  80. package/dist/core/gaurds/assertions/assertCommonJS/base.ts +0 -9
  81. package/dist/core/gaurds/assertions/assertCommonJS/common.ts +0 -30
  82. package/dist/core/gaurds/assertions/assertCommonJS/index.ts +0 -2
  83. package/dist/core/gaurds/assertions/assertExtensions/base.ts +0 -187
  84. package/dist/core/gaurds/assertions/assertExtensions/index.ts +0 -1
  85. package/dist/core/gaurds/assertions/assertHookReturnedObject.ts +0 -30
  86. package/dist/core/gaurds/assertions/assertInfo/base.ts +0 -14
  87. package/dist/core/gaurds/assertions/assertInfo/index.ts +0 -2
  88. package/dist/core/gaurds/assertions/assertInfo/log.ts +0 -28
  89. package/dist/core/gaurds/assertions/assertIs404.ts +0 -12
  90. package/dist/core/gaurds/assertions/assertIsBrowser/base.ts +0 -8
  91. package/dist/core/gaurds/assertions/assertIsBrowser/index.ts +0 -1
  92. package/dist/core/gaurds/assertions/assertIsNotBrowser/base.ts +0 -9
  93. package/dist/core/gaurds/assertions/assertIsNotBrowser/index.ts +0 -1
  94. package/dist/core/gaurds/assertions/assertIsNotProductionRuntime/base.ts +0 -71
  95. package/dist/core/gaurds/assertions/assertIsNotProductionRuntime/index.ts +0 -1
  96. package/dist/core/gaurds/assertions/assertKeys/base.ts +0 -31
  97. package/dist/core/gaurds/assertions/assertKeys/index.ts +0 -1
  98. package/dist/core/gaurds/assertions/assertNoInfiniteHttpRedirect.ts +0 -55
  99. package/dist/core/gaurds/assertions/assertNodeEnv/base.ts +0 -120
  100. package/dist/core/gaurds/assertions/assertNodeEnv/index.ts +0 -1
  101. package/dist/core/gaurds/assertions/assertNodeVersion/base.ts +0 -11
  102. package/dist/core/gaurds/assertions/assertNodeVersion/index.ts +0 -1
  103. package/dist/core/gaurds/assertions/assertOnBeforeRenderHookReturn.ts +0 -37
  104. package/dist/core/gaurds/assertions/assertPageContextProvidedByUser.ts +0 -60
  105. package/dist/core/gaurds/assertions/assertPluginManifest.ts +0 -41
  106. package/dist/core/gaurds/assertions/assertPlusFileExport.ts +0 -66
  107. package/dist/core/gaurds/assertions/assertRoutingType/base.ts +0 -41
  108. package/dist/core/gaurds/assertions/assertRoutingType/index.ts +0 -1
  109. package/dist/core/gaurds/assertions/assertRuntimeManifest.ts +0 -34
  110. package/dist/core/gaurds/assertions/assertSingleInstance/index.ts +0 -142
  111. package/dist/core/gaurds/assertions/assertSingleInstance/onAssertModuleLoad.ts +0 -0
  112. package/dist/core/gaurds/assertions/assertSingleInstance/onClientEntryClientRouting.ts +0 -0
  113. package/dist/core/gaurds/assertions/assertSingleInstance/onClientEntryServerRouting.ts +0 -0
  114. package/dist/core/gaurds/assertions/assertType.ts +0 -12
  115. package/dist/core/gaurds/assertions/assertUsage/base.ts +0 -43
  116. package/dist/core/gaurds/assertions/assertUsage/index.ts +0 -3
  117. package/dist/core/gaurds/assertions/assertUsage/log.ts +0 -29
  118. package/dist/core/gaurds/assertions/assertUsage/node.ts +0 -16
  119. package/dist/core/gaurds/assertions/assertV1Design.ts +0 -29
  120. package/dist/core/gaurds/assertions/assertVersion/base.ts +0 -55
  121. package/dist/core/gaurds/assertions/assertVersion/index.ts +0 -1
  122. package/dist/core/gaurds/assertions/assertWarning/base.ts +0 -43
  123. package/dist/core/gaurds/assertions/assertWarning/index.ts +0 -2
  124. package/dist/core/gaurds/assertions/assertWarning/log.ts +0 -43
  125. package/dist/core/gaurds/assertions/checkType.ts +0 -2
  126. package/dist/core/gaurds/debugger/createDebugger.ts +0 -196
  127. package/dist/core/gaurds/debugger/debugPageFiles.ts +0 -121
  128. package/dist/core/gaurds/debugger/index.ts +0 -2
  129. package/dist/core/gaurds/errors/createErrorWithCleanStackTrace.ts +0 -56
  130. package/dist/core/gaurds/errors/removeErrMsg.ts +0 -8
  131. package/dist/core/gaurds/logger/addOnBeforeLogHook/index.ts +0 -7
  132. package/dist/core/gaurds/logger/formatHintLog.ts +0 -17
  133. package/dist/core/gaurds/logger/log404/index.spec.ts +0 -78
  134. package/dist/core/gaurds/logger/log404/index.ts +0 -208
  135. package/dist/core/gaurds/logger/logErrorHint/errors.ts +0 -17
  136. package/dist/core/gaurds/logger/logErrorHint/getErrorHint.spec.ts +0 -1057
  137. package/dist/core/gaurds/logger/logErrorHint.ts +0 -196
  138. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/fixture-errors/errBabelReact.ts +0 -16
  139. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/fixture-errors/errBabelSolid.ts +0 -16
  140. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/fixture-errors/errEsbuild.ts +0 -39
  141. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/fixture-errors/errMdx1.ts +0 -24
  142. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/fixture-errors/errMdx2.ts +0 -83
  143. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/fixture-errors/errPostcss.ts +0 -33
  144. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/fixture-errors/errSwc.ts +0 -20
  145. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/fixture-errors/errSwcBig.ts +0 -19
  146. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/fixture-errors/errVueCss.ts +0 -36
  147. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/fixture-errors/errVueHtml.ts +0 -17
  148. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/fixture-errors/errVueJavascript.ts +0 -16
  149. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/getPrettyErrMessage.spec.ts +0 -101
  150. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet/getPrettyErrorWithCodeSnippet.spec.ts +0 -232
  151. package/dist/core/gaurds/logger/loggerNotProd/errorWithCodeSnippet.ts +0 -212
  152. package/dist/core/gaurds/logger/loggerNotProd/log.ts +0 -124
  153. package/dist/core/gaurds/logger/loggerNotProd.ts +0 -271
  154. package/dist/core/gaurds/logger/loggerProd.ts +0 -37
  155. package/dist/core/gaurds/logger/loggerRuntime.ts +0 -46
  156. package/dist/core/gaurds/logger/loggerVite/removeSuperfluousViteLog.ts +0 -30
  157. package/dist/core/gaurds/logger/loggerVite.ts +0 -65
  158. package/dist/core/gaurds/logger/overwriteAssertProductionLogger/index.ts +0 -9
  159. package/dist/core/gaurds/logger/trackLogs.ts +0 -35
  160. package/dist/core/gaurds/logger/warnIfErrorIsNotObject.ts +0 -31
  161. package/dist/core/gaurds/normalization/freezePartial.ts +0 -39
  162. package/dist/core/gaurds/normalization/normalizeHeaders.ts +0 -20
  163. package/dist/core/gaurds/normalization/normalizeLink.tsx +0 -14
  164. package/dist/core/gaurds/normalization/normalizeUrlArgument.ts +0 -22
  165. package/dist/core/gaurds/validators/hasProp.ts +0 -116
  166. package/dist/core/gaurds/validators/isArray.ts +0 -4
  167. package/dist/core/gaurds/validators/isArrayOfStrings.ts +0 -7
  168. package/dist/core/gaurds/validators/isAsset.ts +0 -43
  169. package/dist/core/gaurds/validators/isBrowser.ts +0 -5
  170. package/dist/core/gaurds/validators/isBug.ts +0 -5
  171. package/dist/core/gaurds/validators/isCallable.ts +0 -11
  172. package/dist/core/gaurds/validators/isClientSideRoutable.ts +0 -19
  173. package/dist/core/gaurds/validators/isConfigInvalid.ts +0 -10
  174. package/dist/core/gaurds/validators/isDev.ts +0 -56
  175. package/dist/core/gaurds/validators/isErrorDebug.ts +0 -7
  176. package/dist/core/gaurds/validators/isErrorPage.ts +0 -16
  177. package/dist/core/gaurds/validators/isFilePathAbsoluteFilesystem.ts +0 -55
  178. package/dist/core/gaurds/validators/isHtml.ts +0 -9
  179. package/dist/core/gaurds/validators/isNewError.ts +0 -29
  180. package/dist/core/gaurds/validators/isNodeJS.ts +0 -10
  181. package/dist/core/gaurds/validators/isNotFalse.ts +0 -3
  182. package/dist/core/gaurds/validators/isNotNullish.ts +0 -2
  183. package/dist/core/gaurds/validators/isNpmPackage.ts +0 -127
  184. package/dist/core/gaurds/validators/isObject.ts +0 -3
  185. package/dist/core/gaurds/validators/isObjectOfStrings.ts +0 -9
  186. package/dist/core/gaurds/validators/isObjectWithKeys.ts +0 -18
  187. package/dist/core/gaurds/validators/isPlainObject.ts +0 -21
  188. package/dist/core/gaurds/validators/isPromise.ts +0 -9
  189. package/dist/core/gaurds/validators/isPropertyGetter.ts +0 -4
  190. package/dist/core/gaurds/validators/isReact.ts +0 -24
  191. package/dist/core/gaurds/validators/isReactElement.ts +0 -21
  192. package/dist/core/gaurds/validators/isRevealApp.ts +0 -4
  193. package/dist/core/gaurds/validators/isSameErrorMessage.ts +0 -8
  194. package/dist/core/gaurds/validators/isScriptFile.ts +0 -75
  195. package/dist/core/gaurds/validators/isServerSideError.ts +0 -1
  196. package/dist/core/gaurds/validators/isViteCliCall.ts +0 -93
  197. package/dist/core/gaurds/validators/isVitest.ts +0 -7
  198. package/dist/core/gaurds/validators/rollupIsEsm.ts +0 -14
  199. package/dist/core/gaurds/validators/viteIsSSR.ts +0 -23
  200. package/dist/core/globals/contexts/globalContext/getPageFilesExports.ts +0 -28
  201. package/dist/core/globals/contexts/globalContext/index.ts +0 -374
  202. package/dist/core/globals/contexts/globalContext/loadImportBuild.ts +0 -44
  203. package/dist/core/globals/contexts/globalContext/setup.ts +0 -4
  204. package/dist/core/globals/contexts/index.ts +0 -1
  205. package/dist/core/globals/logger/index.ts +0 -1
  206. package/dist/core/globals/logger/numberOfStackTraceLinesToRemove.ts +0 -3
  207. package/dist/core/globals/objects/index.ts +0 -1
  208. package/dist/core/globals/objects/log.ts +0 -24
  209. package/dist/core/globals/patterns/styleFileRE.ts +0 -3
  210. package/dist/core/globals/tags/addPrefixAssertType.ts +0 -11
  211. package/dist/core/globals/tags/addPrefixProjectName.ts +0 -9
  212. package/dist/core/globals/tags/projectTag.ts +0 -3
  213. package/dist/core/globals/tags/projectTagWithVersion.ts +0 -5
  214. package/dist/core/globals/versions/PROJECT_VERSION.ts +0 -2
  215. package/dist/core/globals/versions/projectInfo.ts +0 -5
  216. package/dist/core/handlers/handleErrorWithoutErrorPage.ts +0 -70
  217. package/dist/core/handlers/handlePageContext.ts +0 -15
  218. package/dist/core/handlers/handlePageContextRequestUrl.ts +0 -56
  219. package/dist/core/handlers/openFacebook.ts +0 -20
  220. package/dist/core/hocs/clientOnly.tsx +0 -130
  221. package/dist/core/hooks/callCumulativeHooks.ts +0 -22
  222. package/dist/core/hooks/executeHook.ts +0 -118
  223. package/dist/core/hooks/useConfig/configsCumulative.ts +0 -6
  224. package/dist/core/hooks/useConfig/useConfig-client.ts +0 -82
  225. package/dist/core/hooks/useConfig/useConfig-server.ts +0 -152
  226. package/dist/core/hydration/progressive.ts +0 -252
  227. package/dist/core/index.ts +0 -60
  228. package/dist/core/islands/index.tsx +0 -198
  229. package/dist/core/logging/UnifiedLoggerV2.ts +0 -555
  230. package/dist/core/logging/index.ts +0 -80
  231. package/dist/core/logging/plugins/FilePlugin.ts +0 -132
  232. package/dist/core/logging/plugins/PayloadCMSPlugin.ts +0 -71
  233. package/dist/core/logging/plugins/RemotePlugin.ts +0 -110
  234. package/dist/core/logging/plugins/index.ts +0 -11
  235. package/dist/core/naming/UnifiedNaming.ts +0 -424
  236. package/dist/core/observability/logger.ts +0 -195
  237. package/dist/core/observability/metrics.ts +0 -156
  238. package/dist/core/processing/getters/getAssertErrMsg.ts +0 -49
  239. package/dist/core/processing/getters/getAssetsDir.ts +0 -11
  240. package/dist/core/processing/getters/getBaseServer.ts +0 -16
  241. package/dist/core/processing/getters/getCacheControl.ts +0 -26
  242. package/dist/core/processing/getters/getConfigDefinedAt.ts +0 -73
  243. package/dist/core/processing/getters/getConfigReveal.ts +0 -14
  244. package/dist/core/processing/getters/getConfigValue.ts +0 -68
  245. package/dist/core/processing/getters/getConfigValueBuildTime.ts +0 -92
  246. package/dist/core/processing/getters/getConfigValueFilePathToShowToUser.ts +0 -17
  247. package/dist/core/processing/getters/getCurrentUrl.ts +0 -42
  248. package/dist/core/processing/getters/getEarlyHints.ts +0 -58
  249. package/dist/core/processing/getters/getEnv.ts +0 -33
  250. package/dist/core/processing/getters/getErrorPageId.ts +0 -23
  251. package/dist/core/processing/getters/getExportPath.spec.ts +0 -34
  252. package/dist/core/processing/getters/getExportPath.ts +0 -33
  253. package/dist/core/processing/getters/getFileExtension.ts +0 -19
  254. package/dist/core/processing/getters/getFilePath.ts +0 -269
  255. package/dist/core/processing/getters/getGlobalObject.ts +0 -53
  256. package/dist/core/processing/getters/getHeadSetting.tsx +0 -36
  257. package/dist/core/processing/getters/getHook.ts +0 -222
  258. package/dist/core/processing/getters/getHookFilePathToShowToUser.ts +0 -12
  259. package/dist/core/processing/getters/getHtmlTags.ts +0 -341
  260. package/dist/core/processing/getters/getHttpRequestAsyncStore.ts +0 -122
  261. package/dist/core/processing/getters/getHttpResponseBody.ts +0 -177
  262. package/dist/core/processing/getters/getMostSimilar.ts +0 -72
  263. package/dist/core/processing/getters/getOutDirs.ts +0 -160
  264. package/dist/core/processing/getters/getPageAssets/getManifestEntry.ts +0 -164
  265. package/dist/core/processing/getters/getPageAssets/retrieveAssetsDev.ts +0 -96
  266. package/dist/core/processing/getters/getPageAssets/retrieveAssetsProd.ts +0 -86
  267. package/dist/core/processing/getters/getPageAssets/sortPageAssetsForEarlyHintsHeader.ts +0 -40
  268. package/dist/core/processing/getters/getPageAssets.ts +0 -140
  269. package/dist/core/processing/getters/getPageConfig.ts +0 -14
  270. package/dist/core/processing/getters/getPageContext.ts +0 -64
  271. package/dist/core/processing/getters/getPageContextCurrent.ts +0 -19
  272. package/dist/core/processing/getters/getPageContextFromHooks.ts +0 -335
  273. package/dist/core/processing/getters/getPageContextProxyForUser.ts +0 -97
  274. package/dist/core/processing/getters/getPageContextRequestUrl.ts +0 -22
  275. package/dist/core/processing/getters/getPageContextSerializedInHtml.ts +0 -32
  276. package/dist/core/processing/getters/getPageContextUrlComputed.ts +0 -410
  277. package/dist/core/processing/getters/getPageElement.tsx +0 -148
  278. package/dist/core/processing/getters/getPageFiles/analyzeClientSide.ts +0 -50
  279. package/dist/core/processing/getters/getPageFiles/analyzePageServerSide.ts +0 -32
  280. package/dist/core/processing/getters/getPageFiles/getExportNames.ts +0 -16
  281. package/dist/core/processing/getters/getPageFiles/getExports.ts +0 -193
  282. package/dist/core/processing/getters/getPageFiles/index.ts +0 -9
  283. package/dist/core/processing/getters/getPageFiles/parseGlobResults.ts +0 -167
  284. package/dist/core/processing/getters/getPageFiles/setPageFiles.ts +0 -76
  285. package/dist/core/processing/getters/getPrefetchSettingResolved.ts.ts +0 -87
  286. package/dist/core/processing/getters/getProjectError.ts +0 -18
  287. package/dist/core/processing/getters/getPropAccessNotation.ts +0 -10
  288. package/dist/core/processing/getters/getRandomId.ts +0 -15
  289. package/dist/core/processing/getters/getRevalidationKey.ts +0 -5
  290. package/dist/core/processing/getters/getRevealClientEntry.ts +0 -7
  291. package/dist/core/processing/getters/getRevealConfig/configDefinitionsBuiltIn.ts +0 -711
  292. package/dist/core/processing/getters/getRevealConfig/crawlPlusFiles.ts +0 -409
  293. package/dist/core/processing/getters/getRevealConfig/filesystemRouting.spec.ts +0 -40
  294. package/dist/core/processing/getters/getRevealConfig/filesystemRouting.ts +0 -286
  295. package/dist/core/processing/getters/getRevealConfig/index.ts +0 -1641
  296. package/dist/core/processing/getters/getRevealConfig/loadFileAtConfigTime.ts +0 -181
  297. package/dist/core/processing/getters/getRevealConfig/resolvePointerImport.ts +0 -240
  298. package/dist/core/processing/getters/getRevealConfig/transformPointerImports.spec.ts +0 -30
  299. package/dist/core/processing/getters/getRevealConfig/transformPointerImports.ts +0 -244
  300. package/dist/core/processing/getters/getRevealConfig/transpileAndExecuteFile.ts +0 -490
  301. package/dist/core/processing/getters/getTagAttributesString.ts +0 -27
  302. package/dist/core/processing/getters/getTerminWidth.ts +0 -9
  303. package/dist/core/processing/getters/getValuePrintable.ts +0 -6
  304. package/dist/core/processing/getters/getViteDevScript.ts +0 -47
  305. package/dist/core/processing/iterators/analyzePage.ts +0 -65
  306. package/dist/core/processing/iterators/includes.ts +0 -10
  307. package/dist/core/processing/iterators/index.ts +0 -2
  308. package/dist/core/processing/iterators/objectKeys.ts +0 -6
  309. package/dist/core/processing/parsers/parseEsModule.ts +0 -43
  310. package/dist/core/processing/parsers/parseTransform.ts +0 -36
  311. package/dist/core/processing/serializers/notSerializable.ts +0 -2
  312. package/dist/core/processing/serializers/replaceWithParserPath.ts +0 -30
  313. package/dist/core/processing/serializers/serializePage/PageConfigSerialized.ts +0 -45
  314. package/dist/core/processing/serializers/serializePage/parsePageConfigs.ts +0 -223
  315. package/dist/core/processing/serializers/serializePage/serializeConfigValues.ts +0 -336
  316. package/dist/core/processing/serializers/serializePageContextClientSide.ts +0 -179
  317. package/dist/core/processing/serializers/stringify.ts +0 -188
  318. package/dist/core/processing/serializers/stringifyTypes.ts +0 -103
  319. package/dist/core/processing/setters/addIs404ToPageProps.ts +0 -27
  320. package/dist/core/processing/setters/setAlwaysShowStackTrace.ts +0 -7
  321. package/dist/core/processing/transformers/augmentType.ts +0 -10
  322. package/dist/core/processing/transformers/rollupSourceMap.ts +0 -23
  323. package/dist/core/processing/transformers/slice.ts +0 -52
  324. package/dist/core/renderer/page/executeOnBeforeRenderAndDataHooks.ts +0 -53
  325. package/dist/core/renderer/page/executeOnRenderHtmlHook.ts +0 -261
  326. package/dist/core/renderer/page/index.ts +0 -804
  327. package/dist/core/renderer/page/inferMediaType.ts +0 -128
  328. package/dist/core/renderer/page/loadUserFilesServerSide.ts +0 -154
  329. package/dist/core/renderer/page/preparePageContextForUserConsumption.ts +0 -55
  330. package/dist/core/renderer/page/preparePageContextForUserConsumptionServerSide.ts +0 -38
  331. package/dist/core/renderer/page/renderPageAlreadyRouted.ts +0 -373
  332. package/dist/core/renderer/page/resolveRedirects.ts +0 -75
  333. package/dist/core/renderer/prerender/index.ts +0 -1
  334. package/dist/core/renderer/prerender/runPrerender.ts +0 -1141
  335. package/dist/core/renderer/prerender/utils.ts +0 -22
  336. package/dist/core/renderer/stream/html.ts +0 -408
  337. package/dist/core/renderer/stream/index.ts +0 -1001
  338. package/dist/core/renderer/stream/onLoad.ts +0 -14
  339. package/dist/core/renderer/stream/react-streaming.ts +0 -69
  340. package/dist/core/renderer/stream/utils.ts +0 -66
  341. package/dist/core/resilience/circuit-breaker.ts +0 -212
  342. package/dist/core/resilience/retry.ts +0 -172
  343. package/dist/core/result/adapters.ts +0 -254
  344. package/dist/core/result.ts +0 -332
  345. package/dist/core/router/abort.ts +0 -339
  346. package/dist/core/router/apiRoutes.ts +0 -94
  347. package/dist/core/router/debug.ts +0 -19
  348. package/dist/core/router/deduceRouteStringFromFilesystemPath.ts +0 -75
  349. package/dist/core/router/dynamicApiRoutes.ts +0 -18
  350. package/dist/core/router/dynamicPageRoutes.ts +0 -18
  351. package/dist/core/router/executeGuardHook.ts +0 -45
  352. package/dist/core/router/executeOnBeforeRouteHook.ts +0 -161
  353. package/dist/core/router/index.ts +0 -230
  354. package/dist/core/router/loadPageRoutes.ts +0 -155
  355. package/dist/core/router/noRouteMatch.ts +0 -1
  356. package/dist/core/router/pageRoutes.ts +0 -159
  357. package/dist/core/router/resolvePrecedence.ts +0 -128
  358. package/dist/core/router/resolveRoute.ts +0 -29
  359. package/dist/core/router/resolveRouteFunction.ts +0 -193
  360. package/dist/core/router/resolveRouteString.ts +0 -204
  361. package/dist/core/router/resolveRouteUtils.ts +0 -77
  362. package/dist/core/router/resolveUrlPathname.ts +0 -67
  363. package/dist/core/router/routeInternal.ts +0 -97
  364. package/dist/core/router/utils.ts +0 -30
  365. package/dist/core/services/BaseService.ts +0 -403
  366. package/dist/core/targets/client/abort.ts +0 -11
  367. package/dist/core/targets/client/createPageContext.ts +0 -48
  368. package/dist/core/targets/client/entry.ts +0 -15
  369. package/dist/core/targets/client/executeOnRenderClientHook.ts +0 -94
  370. package/dist/core/targets/client/history.ts +0 -142
  371. package/dist/core/targets/client/index.ts +0 -9
  372. package/dist/core/targets/client/initClientRouter.ts +0 -48
  373. package/dist/core/targets/client/initOnLinkClick.ts +0 -54
  374. package/dist/core/targets/client/loadUserFilesClientSide.ts +0 -92
  375. package/dist/core/targets/client/navigate.ts +0 -45
  376. package/dist/core/targets/client/onBrowserHistoryNavigation.ts +0 -85
  377. package/dist/core/targets/client/onLoad.ts +0 -10
  378. package/dist/core/targets/client/pageContextInitIsPassedToClient.ts +0 -2
  379. package/dist/core/targets/client/pageFiles.ts +0 -4
  380. package/dist/core/targets/client/prefetch.ts +0 -399
  381. package/dist/core/targets/client/preparePageContextForUserConsumptionClientSide.ts +0 -48
  382. package/dist/core/targets/client/removeBuiltInOverrides.ts +0 -37
  383. package/dist/core/targets/client/removeFoucBuster.ts +0 -70
  384. package/dist/core/targets/client/renderPageClientSide.ts +0 -1817
  385. package/dist/core/targets/client/router.ts +0 -15
  386. package/dist/core/targets/client/scrollRestoration.ts +0 -37
  387. package/dist/core/targets/client/setScrollPosition.ts +0 -87
  388. package/dist/core/targets/client/skipLink.ts +0 -63
  389. package/dist/core/targets/client/utils.ts +0 -34
  390. package/dist/core/targets/http/createHttpResponse.ts +0 -254
  391. package/dist/core/targets/http/fetchBanner.ts +0 -25
  392. package/dist/core/targets/http/fetchCard.ts +0 -25
  393. package/dist/core/targets/http/fetchEvents.ts +0 -25
  394. package/dist/core/targets/http/fetchHero.ts +0 -25
  395. package/dist/core/targets/http/fetchMainInfos.ts +0 -25
  396. package/dist/core/targets/http/fetchPage.ts +0 -78
  397. package/dist/core/targets/http/fetchPages.ts +0 -70
  398. package/dist/core/targets/http/fetchVideos.ts +0 -26
  399. package/dist/core/targets/http/fetchYouTube.ts +0 -90
  400. package/dist/core/targets/server/entry.ts +0 -43
  401. package/dist/core/targets/server/middleware/addSsrMiddleware.ts +0 -52
  402. package/dist/core/targets/server/onLoad.ts +0 -7
  403. package/dist/core/targets/server/pageFiles.ts +0 -4
  404. package/dist/core/targets/server/root.ts +0 -10
  405. package/dist/core/targets/server/utils.ts +0 -20
  406. package/dist/core/targets/url/index.ts +0 -439
  407. package/dist/core/targets/url/modifyUrl.ts +0 -45
  408. package/dist/core/targets/url/parseUrl.ts +0 -440
  409. package/dist/core/targets/url/parseUrlExtras.ts +0 -193
  410. package/dist/core/targets/url/redirectHard.ts +0 -3
  411. package/dist/core/targets/url/updateCurrentPath.ts +0 -52
  412. package/dist/core/targets/url/urlToFile.ts +0 -47
  413. package/dist/core/types/UnifiedTypes.ts +0 -493
  414. package/dist/core/types/contracts.ts +0 -61
  415. package/dist/core/types/generator.ts +0 -316
  416. package/dist/core/utils/array/includes.ts +0 -10
  417. package/dist/core/utils/array/slice.ts +0 -52
  418. package/dist/core/utils/array/sorter.ts +0 -130
  419. package/dist/core/utils/array/stringifyStringArray.ts +0 -7
  420. package/dist/core/utils/array/unique.ts +0 -5
  421. package/dist/core/utils/async/genPromise.ts +0 -8
  422. package/dist/core/utils/async/pLimit.ts +0 -157
  423. package/dist/core/utils/async/sleep.ts +0 -3
  424. package/dist/core/utils/async/throttle.ts +0 -14
  425. package/dist/core/utils/index.ts +0 -31
  426. package/dist/core/utils/object/changeEnumerable.ts +0 -9
  427. package/dist/core/utils/object/deepEqual.ts +0 -10
  428. package/dist/core/utils/object/objectAssign.ts +0 -16
  429. package/dist/core/utils/object/objectDefineProperty.ts +0 -15
  430. package/dist/core/utils/object/objectEntries.ts +0 -7
  431. package/dist/core/utils/object/objectEntriesForEach.ts +0 -7
  432. package/dist/core/utils/object/objectFromEntries.ts +0 -6
  433. package/dist/core/utils/string/addWhitespace.ts +0 -9
  434. package/dist/core/utils/string/capitalizeFirstLetter.ts +0 -8
  435. package/dist/core/utils/string/compareString.ts +0 -7
  436. package/dist/core/utils/string/escapeHtml.ts +0 -10
  437. package/dist/core/utils/string/escapeRegex.ts +0 -4
  438. package/dist/core/utils/string/joinEnglish.ts +0 -18
  439. package/dist/core/utils/string/removeEmptyLines.ts +0 -6
  440. package/dist/core/utils/string/stripAnsi.ts +0 -24
  441. package/dist/core/utils/string/trimWithAnsi.ts +0 -40
  442. package/dist/core/utils/string/truncateString.ts +0 -19
  443. package/dist/core/utils/time/humanizeTime.ts +0 -24
  444. package/dist/integration/hydration.ts +0 -52
  445. package/dist/integration/onRenderClient.tsx +0 -377
  446. package/dist/integration/onRenderHtml.tsx +0 -761
  447. package/dist/integration/ssrEffect.ts +0 -31
  448. package/dist/plugins/baseUrls.ts +0 -54
  449. package/dist/plugins/buildConfig/index.ts +0 -701
  450. package/dist/plugins/buildConfig/injectRollupInputs.ts +0 -36
  451. package/dist/plugins/commonConfig.ts +0 -112
  452. package/dist/plugins/config/assertResolveAlias.ts +0 -99
  453. package/dist/plugins/config/assertRevealConfig.ts +0 -116
  454. package/dist/plugins/config/fixServerAssets.ts +0 -213
  455. package/dist/plugins/config/index.ts +0 -227
  456. package/dist/plugins/config/pickFirst.ts +0 -3
  457. package/dist/plugins/config/resolveBase.ts +0 -78
  458. package/dist/plugins/devConfig/determineFsAllowList.ts +0 -34
  459. package/dist/plugins/devConfig/determineOptimizeDeps.ts +0 -129
  460. package/dist/plugins/devConfig/index.ts +0 -222
  461. package/dist/plugins/distFileNames.ts +0 -341
  462. package/dist/plugins/envVars.ts +0 -150
  463. package/dist/plugins/extractAssetsPlugin.ts +0 -318
  464. package/dist/plugins/extractExportNamesPlugin.ts +0 -154
  465. package/dist/plugins/fileEnv.ts +0 -374
  466. package/dist/plugins/importBuild/getRevealManifest.ts +0 -20
  467. package/dist/plugins/importBuild/index.ts +0 -120
  468. package/dist/plugins/importUserCode/addImportStatement.ts +0 -32
  469. package/dist/plugins/importUserCode/debug.ts +0 -2
  470. package/dist/plugins/importUserCode/getConfigFileExport.ts +0 -24
  471. package/dist/plugins/importUserCode/getVirtualFilePageConfigValuesAll.ts +0 -95
  472. package/dist/plugins/importUserCode/getVirtualFilePageConfigs.ts +0 -150
  473. package/dist/plugins/importUserCode/index.ts +0 -375
  474. package/dist/plugins/importUserCode/isRuntimeEnvMatch.ts +0 -31
  475. package/dist/plugins/index.ts +0 -233
  476. package/dist/plugins/onLoad.ts +0 -12
  477. package/dist/plugins/packageJsonFile.ts +0 -62
  478. package/dist/plugins/payload/index.ts +0 -62
  479. package/dist/plugins/previewConfig.ts +0 -95
  480. package/dist/plugins/react/index.ts +0 -72
  481. package/dist/plugins/removeRequireHookPlugin.ts +0 -27
  482. package/dist/plugins/resolveClientEntriesDev.ts +0 -87
  483. package/dist/plugins/reveal/index.ts +0 -39
  484. package/dist/plugins/reveal/remove-use-client-server.ts +0 -52
  485. package/dist/plugins/setGlobalContext.ts +0 -53
  486. package/dist/plugins/suppressRollupWarning.ts +0 -94
  487. package/dist/plugins/utils.ts +0 -33
  488. package/dist/plugins/vercel/+config.ts +0 -18
  489. package/dist/plugins/vercel/functions/assert.ts +0 -13
  490. package/dist/plugins/vercel/functions/build.ts +0 -484
  491. package/dist/plugins/vercel/functions/config.ts +0 -147
  492. package/dist/plugins/vercel/functions/helpers.ts +0 -70
  493. package/dist/plugins/vercel/functions/prerender.ts +0 -140
  494. package/dist/plugins/vercel/functions/route-regex.ts +0 -37
  495. package/dist/plugins/vercel/functions/utils.ts +0 -33
  496. package/dist/plugins/vercel/functions/vike.ts +0 -754
  497. package/dist/plugins/vercel/index.ts +0 -186
  498. package/dist/plugins/vercel/plugin.ts +0 -45
  499. package/dist/plugins/vercel/schemas/config/prerender-config.ts +0 -20
  500. package/dist/plugins/vercel/schemas/config/vc-config.ts +0 -45
  501. package/dist/plugins/vercel/schemas/config/vercel.ts +0 -130
  502. package/dist/plugins/vercel/schemas/exports.ts +0 -12
  503. package/dist/plugins/vercel/templates/edge-helpers.ts +0 -72
  504. package/dist/plugins/vercel/templates/node-helpers.ts +0 -60
  505. package/dist/plugins/vercel/templates/ssr_.template.ts +0 -25
  506. package/dist/plugins/vercel/templates/ssr_edge_.template.ts +0 -20
  507. package/dist/plugins/vercel/templates/utils.ts +0 -31
  508. package/dist/plugins/workaroundCssModuleHmr.ts +0 -23
  509. package/dist/types/index.ts +0 -50
  510. package/dist/types/interfaces/app.ts +0 -700
  511. package/dist/types/interfaces/client.ts +0 -10
  512. package/dist/types/interfaces/config.ts +0 -481
  513. package/dist/types/interfaces/context.ts +0 -677
  514. package/dist/types/interfaces/error.ts +0 -6
  515. package/dist/types/interfaces/file.ts +0 -98
  516. package/dist/types/interfaces/host.ts +0 -209
  517. package/dist/types/interfaces/log.ts +0 -3
  518. package/dist/types/interfaces/logic.ts +0 -46
  519. package/dist/types/interfaces/manifest.ts +0 -15
  520. package/dist/types/interfaces/node.ts +0 -8
  521. package/dist/types/interfaces/page.ts +0 -154
  522. package/dist/types/interfaces/reveal.ts +0 -118
  523. package/dist/types/interfaces/tag.ts +0 -3
  524. package/dist/types/modules/assets.d.ts +0 -57
  525. package/dist/types/modules/env.d.ts +0 -34
  526. package/dist/types/modules/global.d.ts +0 -10
  527. package/dist/types/modules/index.d.ts +0 -1
  528. package/dist/types/modules/node.d.ts +0 -2
  529. package/dist/types/modules/payload.d.ts +0 -2
  530. package/dist/types/modules/reveal-vercel.d.ts +0 -19
  531. package/dist/types/modules/reveal.d.ts +0 -1
  532. package/dist/types/modules/stripe.d.ts +0 -41
  533. package/dist/types/modules/supabase.d.ts +0 -19
  534. package/dist/types/modules/tailwindcss.d.ts +0 -49
  535. package/dist/types/modules/vite.d.ts +0 -7
  536. package/dist/types/namespaces/Config.ts +0 -291
  537. package/dist/types/namespaces/PageContext.ts +0 -23
  538. package/dist/types/namespaces/RevealNamespace.ts +0 -51
  539. package/dist/types/namespaces/index.ts +0 -3
  540. package/dist/ui/accents/DiagonalGrid.tsx +0 -36
  541. package/dist/ui/accents/Glass.tsx +0 -33
  542. package/dist/ui/accents/Parallax.tsx +0 -78
  543. package/dist/ui/accents/Shadow.tsx +0 -28
  544. package/dist/ui/accents/index.tsx +0 -4
  545. package/dist/ui/accessibility/index.ts +0 -168
  546. package/dist/ui/ai/ChatGPTAssistant.tsx +0 -113
  547. package/dist/ui/ai/index.ts +0 -3
  548. package/dist/ui/animations/container.ts +0 -7
  549. package/dist/ui/animations/content.ts +0 -16
  550. package/dist/ui/animations/fade.ts +0 -16
  551. package/dist/ui/animations/index.ts +0 -6
  552. package/dist/ui/animations/slide.ts +0 -23
  553. package/dist/ui/animations/text.ts +0 -14
  554. package/dist/ui/animations/transition.ts +0 -1
  555. package/dist/ui/audio/AudioTrack.tsx +0 -26
  556. package/dist/ui/audio/index.tsx +0 -1
  557. package/dist/ui/backgrounds/Diagonal.tsx +0 -46
  558. package/dist/ui/backgrounds/GradientConic.tsx +0 -21
  559. package/dist/ui/backgrounds/GradientConicRev.tsx +0 -50
  560. package/dist/ui/backgrounds/GradientGlass.tsx +0 -28
  561. package/dist/ui/backgrounds/GradientRadial.tsx +0 -37
  562. package/dist/ui/backgrounds/GradientRadialLeft.tsx +0 -33
  563. package/dist/ui/backgrounds/GradientToBottom.tsx +0 -59
  564. package/dist/ui/backgrounds/GradientToTop.tsx +0 -60
  565. package/dist/ui/backgrounds/Solid.tsx +0 -50
  566. package/dist/ui/backgrounds/Straight.tsx +0 -55
  567. package/dist/ui/backgrounds/TopRight.tsx +0 -15
  568. package/dist/ui/backgrounds/Wrapper.tsx +0 -33
  569. package/dist/ui/backgrounds/index.tsx +0 -12
  570. package/dist/ui/buttons/Button.tsx +0 -54
  571. package/dist/ui/buttons/DisclosureButton.tsx +0 -35
  572. package/dist/ui/buttons/GradientButton.tsx +0 -51
  573. package/dist/ui/buttons/IconButton.tsx +0 -24
  574. package/dist/ui/buttons/LikeButton.tsx +0 -221
  575. package/dist/ui/buttons/MobileMenuButton.tsx +0 -63
  576. package/dist/ui/buttons/MusicButton.tsx +0 -53
  577. package/dist/ui/buttons/SignUpButton.tsx +0 -18
  578. package/dist/ui/buttons/index.tsx +0 -8
  579. package/dist/ui/cards/Card.tsx +0 -255
  580. package/dist/ui/cards/ProductCard.tsx +0 -291
  581. package/dist/ui/cards/VideoCard.tsx +0 -201
  582. package/dist/ui/cards/index.tsx +0 -3
  583. package/dist/ui/contexts/DisclosureContext.tsx +0 -44
  584. package/dist/ui/contexts/GlobalContext.tsx +0 -67
  585. package/dist/ui/contexts/MenuContext.tsx +0 -8
  586. package/dist/ui/contexts/PageContext.tsx +0 -28
  587. package/dist/ui/contexts/ThemeContext.tsx +0 -195
  588. package/dist/ui/controls/MusicHeader.tsx +0 -484
  589. package/dist/ui/controls/MusicPlayer.tsx +0 -76
  590. package/dist/ui/controls/MusicSidebar.tsx +0 -118
  591. package/dist/ui/controls/MusicSlider.tsx +0 -25
  592. package/dist/ui/controls/MusicUpload.tsx +0 -296
  593. package/dist/ui/controls/PlayPause.tsx +0 -64
  594. package/dist/ui/controls/PlayerContent.tsx +0 -205
  595. package/dist/ui/controls/SearchContent.tsx +0 -58
  596. package/dist/ui/controls/SearchInput.tsx +0 -118
  597. package/dist/ui/controls/Searchbar.tsx +0 -53
  598. package/dist/ui/controls/SidebarItem.tsx +0 -57
  599. package/dist/ui/controls/SongItem.tsx +0 -45
  600. package/dist/ui/controls/VideoPlayer.tsx +0 -36
  601. package/dist/ui/controls/index.tsx +0 -13
  602. package/dist/ui/dividers/Horizontal.tsx +0 -18
  603. package/dist/ui/dividers/Transparent.tsx +0 -7
  604. package/dist/ui/dividers/index.tsx +0 -2
  605. package/dist/ui/error/ErrorBoundary.tsx +0 -150
  606. package/dist/ui/error/index.tsx +0 -1
  607. package/dist/ui/forms/Input.tsx +0 -38
  608. package/dist/ui/forms/MediaItem.tsx +0 -105
  609. package/dist/ui/forms/index.tsx +0 -2
  610. package/dist/ui/game/Enemy.tsx +0 -52
  611. package/dist/ui/game/Fighters.tsx +0 -38
  612. package/dist/ui/game/GameControls.tsx +0 -37
  613. package/dist/ui/game/HealthBar.tsx +0 -18
  614. package/dist/ui/game/Player.tsx +0 -70
  615. package/dist/ui/game/index.tsx +0 -5
  616. package/dist/ui/hooks/useApiData.ts +0 -57
  617. package/dist/ui/hooks/useAuthModal.ts +0 -18
  618. package/dist/ui/hooks/useCart.ts +0 -21
  619. package/dist/ui/hooks/useChatGPT.ts +0 -94
  620. package/dist/ui/hooks/useCustomProps.ts +0 -31
  621. package/dist/ui/hooks/useData.ts +0 -10
  622. package/dist/ui/hooks/useDebounce.ts +0 -52
  623. package/dist/ui/hooks/useDisclosure.ts +0 -8
  624. package/dist/ui/hooks/useGame.ts +0 -1147
  625. package/dist/ui/hooks/useLayoutClasses.ts +0 -70
  626. package/dist/ui/hooks/useLazyLoad.ts +0 -78
  627. package/dist/ui/hooks/useLikeSong.ts +0 -22
  628. package/dist/ui/hooks/useLivePreview.ts +0 -60
  629. package/dist/ui/hooks/useMenu.ts +0 -6
  630. package/dist/ui/hooks/useOnPlay.ts +0 -23
  631. package/dist/ui/hooks/usePageContext.ts +0 -174
  632. package/dist/ui/hooks/useParallax.ts +0 -161
  633. package/dist/ui/hooks/usePreviewModal.ts +0 -25
  634. package/dist/ui/hooks/useScreenSize.ts +0 -56
  635. package/dist/ui/hooks/useTheme.ts +0 -6
  636. package/dist/ui/images/Carousel.tsx +0 -326
  637. package/dist/ui/images/Circle.tsx +0 -9
  638. package/dist/ui/images/Defs.tsx +0 -7
  639. package/dist/ui/images/Image.tsx +0 -127
  640. package/dist/ui/images/ImageGrid.tsx +0 -73
  641. package/dist/ui/images/Logo.tsx +0 -22
  642. package/dist/ui/images/Path.tsx +0 -27
  643. package/dist/ui/images/Pattern.tsx +0 -70
  644. package/dist/ui/images/PromoBanner.tsx +0 -25
  645. package/dist/ui/images/Rect.tsx +0 -10
  646. package/dist/ui/images/SVG.tsx +0 -58
  647. package/dist/ui/images/Stop.tsx +0 -15
  648. package/dist/ui/images/index.tsx +0 -12
  649. package/dist/ui/layouts/classNames.ts +0 -8
  650. package/dist/ui/layouts/container.ts +0 -20
  651. package/dist/ui/layouts/flex.ts +0 -13
  652. package/dist/ui/layouts/grid.ts +0 -11
  653. package/dist/ui/layouts/main.ts +0 -31
  654. package/dist/ui/layouts/responsive.ts +0 -28
  655. package/dist/ui/layouts/stack.ts +0 -24
  656. package/dist/ui/lists/DescriptionList.tsx +0 -41
  657. package/dist/ui/lists/DisclosurePanel.tsx +0 -20
  658. package/dist/ui/lists/JobOpeningsList.tsx +0 -54
  659. package/dist/ui/lists/List.tsx +0 -18
  660. package/dist/ui/lists/ListElements.tsx +0 -43
  661. package/dist/ui/lists/ListItem.tsx +0 -63
  662. package/dist/ui/lists/ProductList.tsx +0 -37
  663. package/dist/ui/lists/StatsList.tsx +0 -64
  664. package/dist/ui/lists/UList.tsx +0 -54
  665. package/dist/ui/lists/index.ts +0 -9
  666. package/dist/ui/navigation/DesktopMenu.tsx +0 -14
  667. package/dist/ui/navigation/Footer.tsx +0 -128
  668. package/dist/ui/navigation/Link.tsx +0 -225
  669. package/dist/ui/navigation/MobileMenu.tsx +0 -26
  670. package/dist/ui/navigation/NavigationLinks.tsx +0 -244
  671. package/dist/ui/navigation/NotFound.tsx +0 -12
  672. package/dist/ui/navigation/Route.tsx +0 -120
  673. package/dist/ui/navigation/Transition.tsx +0 -40
  674. package/dist/ui/navigation/index.tsx +0 -8
  675. package/dist/ui/notifications/Banner.tsx +0 -69
  676. package/dist/ui/notifications/Error.tsx +0 -12
  677. package/dist/ui/notifications/Loader.tsx +0 -14
  678. package/dist/ui/notifications/NoResults.tsx +0 -11
  679. package/dist/ui/notifications/index.tsx +0 -4
  680. package/dist/ui/providers/AppProvider.tsx +0 -115
  681. package/dist/ui/providers/DisclosureProvider.tsx +0 -21
  682. package/dist/ui/providers/MenuProvider.tsx +0 -40
  683. package/dist/ui/providers/PageContextProvider.tsx +0 -176
  684. package/dist/ui/providers/ThemeProvider.tsx +0 -196
  685. package/dist/ui/shells/App.tsx +0 -57
  686. package/dist/ui/shells/Container.tsx +0 -74
  687. package/dist/ui/shells/Disclosure.tsx +0 -72
  688. package/dist/ui/shells/Field.tsx +0 -21
  689. package/dist/ui/shells/Flex.tsx +0 -193
  690. package/dist/ui/shells/Grid.tsx +0 -118
  691. package/dist/ui/shells/Header.tsx +0 -123
  692. package/dist/ui/shells/Main.tsx +0 -96
  693. package/dist/ui/shells/Nav.tsx +0 -138
  694. package/dist/ui/shells/Section.tsx +0 -94
  695. package/dist/ui/shells/Skeleton.tsx +0 -24
  696. package/dist/ui/shells/index.ts +0 -11
  697. package/dist/ui/text/Article.tsx +0 -141
  698. package/dist/ui/text/Currency.tsx +0 -29
  699. package/dist/ui/text/Heading.tsx +0 -29
  700. package/dist/ui/text/Label.tsx +0 -24
  701. package/dist/ui/text/Motto.tsx +0 -40
  702. package/dist/ui/text/Paragraph.tsx +0 -20
  703. package/dist/ui/text/Span.tsx +0 -20
  704. package/dist/ui/text/TagLine.tsx +0 -20
  705. package/dist/ui/text/Time.tsx +0 -36
  706. package/dist/ui/text/WelcomeHeading.tsx +0 -40
  707. package/dist/ui/text/index.ts +0 -10
  708. package/dist/ui/video/VideoComponent.tsx +0 -23
  709. package/dist/ui/video/VideoDetail.tsx +0 -33
  710. package/dist/ui/video/VideoItem.tsx +0 -51
  711. package/dist/ui/video/VideoList.tsx +0 -155
  712. package/dist/ui/video/index.ts +0 -4
@@ -1,1641 +0,0 @@
1
- export {
2
- getConfigValueInterfaceFile,
3
- getRevealConfig,
4
- isRevealConfigFile,
5
- isV1Design,
6
- reloadRevealConfig,
7
- revealConfigDependencies,
8
- }
9
- export type { InterfaceFile, InterfaceValueFile, RevealConfigObject }
10
-
11
- import pc from "@brillout/picocolors"
12
- import path from "path"
13
- import type { ResolvedConfig } from "vite"
14
-
15
- import { getConfigFileExport } from "../../../../plugins/importUserCode/getConfigFileExport.js"
16
- import {
17
- assert,
18
- assertIsNotProductionRuntime,
19
- assertKeys,
20
- assertLog,
21
- assertPosixPath,
22
- assertUsage,
23
- assertWarning,
24
- getMostSimilar,
25
- getOutDirs,
26
- hasProp,
27
- includes,
28
- isNpmPackageImport,
29
- isObject,
30
- joinEnglish,
31
- lowerFirst,
32
- makeFirst,
33
- objectEntries,
34
- objectFromEntries,
35
- objectKeys,
36
- reverse,
37
- } from "../../../../plugins/utils.js"
38
- import type { Config } from "../../../../types/interfaces/config.js"
39
- import type { FilePathResolved } from "../../../../types/interfaces/file.js"
40
- import type {
41
- ConfigEnvInternal,
42
- ConfigValueSource,
43
- ConfigValueSources,
44
- ConfigValuesComputed,
45
- DefinedAtFilePath,
46
- PageConfigBuildTime,
47
- PageConfigGlobalBuildTime,
48
- } from "../../../../types/interfaces/page.js"
49
- import {
50
- assertExtensionsConventions,
51
- assertExtensionsPeerDependencies,
52
- } from "../../../gaurds/assertions/assertExtensions/base.js"
53
- import {
54
- logConfigError,
55
- logConfigErrorRecover,
56
- } from "../../../gaurds/logger/loggerNotProd.js"
57
- import {
58
- removeSuperfluousViteLog_disable,
59
- removeSuperfluousViteLog_enable,
60
- } from "../../../gaurds/logger/loggerVite/removeSuperfluousViteLog.js"
61
- import {
62
- isConfigInvalid,
63
- isConfigInvalid_set,
64
- } from "../../../gaurds/validators/isConfigInvalid.js"
65
- import { getViteDevServer } from "../../../globals/contexts/globalContext/index.js"
66
- import { getConfigDefinedAt } from "../getConfigDefinedAt.js"
67
- import { getConfigReveal } from "../getConfigReveal.js"
68
- import { getConfigValueBuildTime } from "../getConfigValueBuildTime.js"
69
- import { getFilePathResolved } from "../getFilePath.js"
70
- import {
71
- type ConfigDefinitionInternal,
72
- type ConfigDefinitions,
73
- type ConfigNameGlobal,
74
- configDefinitionsBuiltIn,
75
- configDefinitionsBuiltInGlobal,
76
- } from "./configDefinitionsBuiltIn.js"
77
- import { crawlPlusFiles } from "./crawlPlusFiles.js"
78
- import {
79
- type LocationId,
80
- applyFilesystemRoutingRootEffect,
81
- getFilesystemRouteDefinedBy,
82
- getFilesystemRouteString,
83
- getLocationId,
84
- isGlobalLocation,
85
- isInherited,
86
- sortAfterInheritanceOrder,
87
- } from "./filesystemRouting.js"
88
- import {
89
- type ConfigFile,
90
- ImportedFilesLoaded,
91
- loadConfigFile,
92
- loadImportedFile,
93
- loadValueFile,
94
- } from "./loadFileAtConfigTime.js"
95
- import {
96
- clearFilesEnvMap,
97
- resolvePointerImportOfConfig,
98
- } from "./resolvePointerImport.js"
99
- import { isTemporaryBuildFile } from "./transpileAndExecuteFile.js"
100
-
101
- assertIsNotProductionRuntime()
102
-
103
- type InterfaceFile = InterfaceConfigFile | InterfaceValueFile
104
- type InterfaceFileCommons = {
105
- locationId: LocationId
106
- filePath: FilePathResolved
107
- fileExportsByConfigName: Record<ConfigName, { configValue?: unknown }>
108
- }
109
- // +config.js
110
- type InterfaceConfigFile = InterfaceFileCommons & {
111
- isConfigFile: true
112
- isValueFile: false
113
- extendsFilePaths: string[]
114
- isConfigExtend: boolean
115
- }
116
- // +{configName}.js
117
- type InterfaceValueFile = InterfaceFileCommons & {
118
- isConfigFile: false
119
- isValueFile: true
120
- configName: string
121
- }
122
- type ConfigName = string
123
- type InterfaceFilesByLocationId = Record<LocationId, InterfaceFile[]>
124
-
125
- type RevealConfigObject = {
126
- pageConfigs: PageConfigBuildTime[]
127
- pageConfigGlobal: PageConfigGlobalBuildTime
128
- globalRevealConfig: Record<string, unknown>
129
- }
130
-
131
- let devServerIsCorrupt = false
132
- let wasConfigInvalid: boolean | null = null
133
- let revealConfigPromise: Promise<RevealConfigObject> | null = null
134
-
135
- const revealConfigDependencies: Set<string> = new Set()
136
-
137
- function reloadRevealConfig(userRootDir: string, outDirRoot: string) {
138
- revealConfigDependencies.clear()
139
- clearFilesEnvMap()
140
- revealConfigPromise = loadRevealConfig_withErrorHandling(
141
- userRootDir,
142
- outDirRoot,
143
- true,
144
- true
145
- )
146
- handleReloadSideEffects()
147
- }
148
- async function handleReloadSideEffects() {
149
- wasConfigInvalid = !!isConfigInvalid
150
- const revealConfigPromisePrevious = revealConfigPromise
151
- try {
152
- await revealConfigPromise
153
- } catch (err) {
154
- // handleReloadSideEffects() is only called in dev.
155
- // In dev, if loadRevealConfig_withErrorHandling() throws an error, then it's a reveal bug.
156
- console.error(err)
157
- assert(false)
158
- }
159
- if (revealConfigPromise !== revealConfigPromisePrevious) {
160
- // Let the next handleReloadSideEffects() call handle side effects
161
- return
162
- }
163
- if (!isConfigInvalid) {
164
- if (wasConfigInvalid) {
165
- wasConfigInvalid = false
166
- logConfigErrorRecover()
167
- }
168
- if (devServerIsCorrupt) {
169
- devServerIsCorrupt = false
170
- const viteDevServer = getViteDevServer()
171
- assert(viteDevServer)
172
- removeSuperfluousViteLog_enable()
173
- await viteDevServer.restart(true)
174
- removeSuperfluousViteLog_disable()
175
- }
176
- }
177
- }
178
- async function getRevealConfig(
179
- config: ResolvedConfig,
180
- isDev: boolean,
181
- {
182
- crawlWithGit,
183
- tolerateInvalidConfig,
184
- }: {
185
- crawlWithGit?: null | boolean
186
- tolerateInvalidConfig?: true
187
- } = {}
188
- ): Promise<RevealConfigObject> {
189
- const { outDirRoot } = getOutDirs(config)
190
- const userRootDir = config.root
191
- if (!revealConfigPromise) {
192
- const crawlWithGit_ =
193
- crawlWithGit !== undefined
194
- ? crawlWithGit
195
- : (await getConfigReveal(config)).crawl.git
196
- revealConfigPromise = loadRevealConfig_withErrorHandling(
197
- userRootDir,
198
- outDirRoot,
199
- isDev,
200
- crawlWithGit_,
201
- tolerateInvalidConfig
202
- )
203
- }
204
- return await revealConfigPromise
205
- }
206
-
207
- async function isV1Design(
208
- config: ResolvedConfig,
209
- isDev: boolean
210
- ): Promise<boolean> {
211
- const revealConfig = await getRevealConfig(config, isDev)
212
- const { pageConfigs } = revealConfig
213
- const isV1Design = pageConfigs.length > 0
214
- return isV1Design
215
- }
216
-
217
- async function loadInterfaceFiles(
218
- userRootDir: string,
219
- outDirRoot: string,
220
- isDev: boolean,
221
- crawlWithGit: null | boolean
222
- ): Promise<InterfaceFilesByLocationId> {
223
- const plusFiles = await findPlusFiles(
224
- userRootDir,
225
- outDirRoot,
226
- isDev,
227
- crawlWithGit
228
- )
229
- const configFiles: FilePathResolved[] = []
230
- const valueFiles: FilePathResolved[] = []
231
- plusFiles.forEach((f) => {
232
- if (getConfigName(f.filePathAbsoluteFilesystem) === "config") {
233
- configFiles.push(f)
234
- } else {
235
- valueFiles.push(f)
236
- }
237
- })
238
-
239
- let interfaceFilesByLocationId: InterfaceFilesByLocationId = {}
240
-
241
- await Promise.allSettled([
242
- // Config files
243
- ...configFiles.map(async (filePath) => {
244
- const { filePathAbsoluteUserRootDir } = filePath
245
- assert(filePathAbsoluteUserRootDir)
246
- const { configFile, extendsConfigs } = await loadConfigFile(
247
- filePath,
248
- userRootDir,
249
- [],
250
- false
251
- )
252
- assert(filePath.filePathAbsoluteUserRootDir)
253
- const locationId = getLocationId(filePathAbsoluteUserRootDir)
254
- const interfaceFile = getInterfaceFileFromConfigFile(
255
- configFile,
256
- false,
257
- locationId
258
- )
259
-
260
- interfaceFilesByLocationId[locationId] =
261
- interfaceFilesByLocationId[locationId] ?? []
262
- interfaceFilesByLocationId[locationId]!.push(interfaceFile)
263
- extendsConfigs.forEach((extendsConfig) => {
264
- /* We purposely use the same locationId because the Reveal extension's config should only apply to where it's being extended from, for example:
265
- ```js
266
- // /pages/admin/+config.js (Reveal extension)
267
- import revealReact from 'reveal/config'
268
- // Should only apply to /pages/marketing/** (Reveal extension)
269
- export default { extends: [revealReact] } // Reveal extension
270
-
271
- */
272
- const interfaceFile = getInterfaceFileFromConfigFile(
273
- extendsConfig,
274
- true,
275
- locationId
276
- )
277
- assertExtensionsConventions(interfaceFile)
278
- interfaceFilesByLocationId[locationId]!.push(interfaceFile)
279
- })
280
- }),
281
- // Value files
282
- ...valueFiles.map(async (filePath) => {
283
- const { filePathAbsoluteUserRootDir } = filePath
284
- assert(filePathAbsoluteUserRootDir)
285
-
286
- const configName = getConfigName(filePathAbsoluteUserRootDir)
287
- assert(configName)
288
-
289
- const locationId = getLocationId(filePathAbsoluteUserRootDir)
290
-
291
- const interfaceFile: InterfaceValueFile = {
292
- locationId,
293
- filePath,
294
- fileExportsByConfigName: {
295
- [configName]: {},
296
- },
297
- isConfigFile: false,
298
- isValueFile: true,
299
- configName,
300
- }
301
- {
302
- // We don't have access to the custom config definitions defined by the user yet.
303
- // - If `configDef` is `undefined` => we load the file +{configName}.js later.
304
- // - We already need to load +meta.js here (to get the custom config definitions defined by the user)
305
- const configDef = getConfigDefinitionOptional(
306
- configDefinitionsBuiltIn,
307
- configName
308
- )
309
- if (configDef && isLoadableAtBuildTime(configDef)) {
310
- await loadValueFile(interfaceFile, configName, userRootDir)
311
- }
312
- }
313
- {
314
- interfaceFilesByLocationId[locationId] =
315
- interfaceFilesByLocationId[locationId] ?? []
316
- interfaceFilesByLocationId[locationId]!.push(interfaceFile)
317
- }
318
- }),
319
- ])
320
-
321
- assertAllConfigsAreKnown(interfaceFilesByLocationId)
322
-
323
- return interfaceFilesByLocationId
324
- }
325
- function getInterfaceFileFromConfigFile(
326
- configFile: ConfigFile,
327
- isConfigExtend: boolean,
328
- locationId: LocationId
329
- ): InterfaceFile {
330
- const { fileExports, filePath, extendsFilePaths } = configFile
331
- const interfaceFile: InterfaceConfigFile = {
332
- locationId,
333
- filePath,
334
- fileExportsByConfigName: {},
335
- isConfigFile: true,
336
- isValueFile: false,
337
- isConfigExtend,
338
- extendsFilePaths,
339
- }
340
- const fileExport = getConfigFileExport(
341
- fileExports,
342
- filePath.filePathToShowToUser
343
- )
344
- Object.entries(fileExport).forEach(([configName, configValue]) => {
345
- interfaceFile.fileExportsByConfigName[configName] = { configValue }
346
- })
347
- return interfaceFile
348
- }
349
- /** Show error message upon unknown config */
350
- function assertAllConfigsAreKnown(
351
- interfaceFilesByLocationId: InterfaceFilesByLocationId
352
- ) {
353
- objectEntries(interfaceFilesByLocationId).forEach(
354
- ([locationId, interfaceFiles]) => {
355
- const interfaceFilesRelevant = getInterfaceFilesRelevant(
356
- interfaceFilesByLocationId,
357
- locationId
358
- )
359
- const configDefinitions = getConfigDefinitions(interfaceFilesRelevant)
360
- interfaceFiles.forEach((interfaceFile) => {
361
- Object.keys(interfaceFile.fileExportsByConfigName).forEach(
362
- (configName) => {
363
- assertConfigExists(
364
- configName,
365
- Object.keys(configDefinitions),
366
- interfaceFile.filePath.filePathToShowToUser
367
- )
368
- }
369
- )
370
- })
371
- }
372
- )
373
- }
374
-
375
- async function loadRevealConfig_withErrorHandling(
376
- userRootDir: string,
377
- outDirRoot: string,
378
- isDev: boolean,
379
- crawlWithGit: null | boolean,
380
- tolerateInvalidConfig?: boolean
381
- ): Promise<RevealConfigObject> {
382
- let hasError = false
383
- let ret: RevealConfigObject | undefined
384
- let err: unknown
385
- try {
386
- ret = await loadRevealConfig(userRootDir, outDirRoot, isDev, crawlWithGit)
387
- } catch (err_) {
388
- hasError = true
389
- err = err_
390
- }
391
- if (!hasError) {
392
- assert(ret)
393
- assert(err === undefined)
394
- isConfigInvalid_set(false)
395
- return ret
396
- } else {
397
- assert(ret === undefined)
398
- assert(err)
399
- isConfigInvalid_set({ err })
400
- if (!isDev) {
401
- assert(getViteDevServer() === null)
402
- throw err
403
- } else {
404
- logConfigError(err)
405
- if (!tolerateInvalidConfig) {
406
- devServerIsCorrupt = true
407
- }
408
- const dummyData: RevealConfigObject = {
409
- pageConfigs: [],
410
- pageConfigGlobal: {
411
- configDefinitions: {},
412
- configValueSources: {},
413
- },
414
- globalRevealConfig: {},
415
- }
416
- return dummyData
417
- }
418
- }
419
- }
420
- async function loadRevealConfig(
421
- userRootDir: string,
422
- outDirRoot: string,
423
- isDev: boolean,
424
- crawlWithGit: null | boolean
425
- ): Promise<RevealConfigObject> {
426
- const interfaceFilesByLocationId = await loadInterfaceFiles(
427
- userRootDir,
428
- outDirRoot,
429
- isDev,
430
- crawlWithGit
431
- )
432
-
433
- const importedFilesLoaded: ImportedFilesLoaded = {}
434
-
435
- const { globalRevealConfig, pageConfigGlobal } = await getGlobalConfigs(
436
- interfaceFilesByLocationId,
437
- userRootDir,
438
- importedFilesLoaded
439
- )
440
-
441
- const pageConfigs: PageConfigBuildTime[] = (
442
- await Promise.allSettled(
443
- objectEntries(interfaceFilesByLocationId)
444
- .filter(([pageId, interfaceFiles]) => isDefiningPage(interfaceFiles))
445
- .map(async ([locationId]) => {
446
- const interfaceFilesRelevant = getInterfaceFilesRelevant(
447
- interfaceFilesByLocationId,
448
- locationId
449
- )
450
- const interfaceFilesRelevantList: InterfaceFile[] = Object.values(
451
- interfaceFilesRelevant
452
- ).flat(1)
453
-
454
- assertExtensionsPeerDependencies(interfaceFilesRelevantList)
455
-
456
- const configDefinitions = getConfigDefinitions(interfaceFilesRelevant)
457
-
458
- // Load value files of custom config-only configs
459
- await Promise.allSettled(
460
- interfaceFilesRelevantList.map(async (interfaceFile) => {
461
- if (!interfaceFile.isValueFile) return
462
- const { configName } = interfaceFile
463
- if (isGlobalConfig(configName)) return
464
- const configDef = getConfigDefinition(
465
- configDefinitions,
466
- configName,
467
- interfaceFile.filePath.filePathToShowToUser
468
- )
469
- if (!isLoadableAtBuildTime(configDef)) return
470
- const isAlreadyLoaded =
471
- interfacefileIsAlreaydLoaded(interfaceFile)
472
- if (isAlreadyLoaded) return
473
- // Value files of built-in configs should have already been loaded at loadInterfaceFiles()
474
- assert(!(configName in configDefinitionsBuiltIn))
475
- await loadValueFile(interfaceFile, configName, userRootDir)
476
- })
477
- )
478
-
479
- let configValueSources: ConfigValueSources = {}
480
- await Promise.allSettled(
481
- objectEntries(configDefinitions)
482
- .filter(([configName]) => !isGlobalConfig(configName))
483
- .map(async ([configName, configDef]) => {
484
- const sources = await resolveConfigValueSources(
485
- configName,
486
- configDef,
487
- interfaceFilesRelevant,
488
- userRootDir,
489
- importedFilesLoaded
490
- )
491
- if (sources.length === 0) return
492
- configValueSources[configName] = sources
493
- })
494
- )
495
- configValueSources = sortConfigValueSources(
496
- configValueSources,
497
- locationId
498
- )
499
-
500
- const { routeFilesystem, isErrorPage } = determineRouteFilesystem(
501
- locationId,
502
- configValueSources
503
- )
504
-
505
- applyEffectsAll(configValueSources, configDefinitions)
506
- const configValuesComputed = getComputed(
507
- configValueSources,
508
- configDefinitions
509
- )
510
-
511
- assertUsageGlobalConfigs(
512
- interfaceFilesRelevantList,
513
- configDefinitions,
514
- interfaceFilesByLocationId
515
- )
516
-
517
- const pageConfig: PageConfigBuildTime = {
518
- pageId: locationId,
519
- isErrorPage,
520
- routeFilesystem,
521
- configDefinitions,
522
- configValueSources,
523
- configValuesComputed,
524
- }
525
- return pageConfig
526
- })
527
- )
528
- )
529
- .filter(
530
- (result): result is PromiseFulfilledResult<PageConfigBuildTime> =>
531
- result.status === "fulfilled"
532
- )
533
- .map((result) => result.value)
534
-
535
- assertPageConfigs(pageConfigs)
536
-
537
- return { pageConfigs, pageConfigGlobal, globalRevealConfig }
538
- }
539
-
540
- // TODO/soon: refactor
541
- // - Dedupe: most of the assertUsageGlobalConfigs() code below is a copy-paste of the assertUsage() logic inside getGlobalConfigs()
542
- // - This assertUsage() message is slightly better: use this one for getGlobalConfigs()
543
- // Global configs should be defined at global locations
544
- function assertUsageGlobalConfigs(
545
- interfaceFilesRelevantList: InterfaceFile[],
546
- configDefinitions: ConfigDefinitions,
547
- interfaceFilesByLocationId: InterfaceFilesByLocationId
548
- ) {
549
- interfaceFilesRelevantList.forEach((interfaceFile) => {
550
- const configNames: string[] = []
551
- if (interfaceFile.isValueFile) {
552
- configNames.push(interfaceFile.configName)
553
- } else {
554
- configNames.push(...Object.keys(interfaceFile.fileExportsByConfigName))
555
- }
556
- configNames.forEach((configName) => {
557
- if (isGlobalConfig(configName)) return
558
- const configDef = getConfigDefinition(
559
- configDefinitions,
560
- configName,
561
- interfaceFile.filePath.filePathToShowToUser
562
- )
563
- if (configDef.global) {
564
- const locationIds = objectKeys(interfaceFilesByLocationId)
565
- if (!isGlobalLocation(interfaceFile.locationId, locationIds)) {
566
- const interfaceFilesGlobal = objectFromEntries(
567
- objectEntries(interfaceFilesByLocationId).filter(([locationId]) => {
568
- return isGlobalLocation(locationId, locationIds)
569
- })
570
- )
571
- const configFilesGlobal: string[] = []
572
- objectEntries(interfaceFilesGlobal).forEach(
573
- ([locationId, interfaceFiles]) => {
574
- assert(isGlobalLocation(locationId, locationIds))
575
- interfaceFiles.forEach((interfaceFile) => {
576
- if (!interfaceFile.isConfigFile) return
577
- const {
578
- filePath: { filePathAbsoluteUserRootDir },
579
- } = interfaceFile
580
- if (filePathAbsoluteUserRootDir) {
581
- configFilesGlobal.push(filePathAbsoluteUserRootDir)
582
- }
583
- })
584
- }
585
- )
586
- assertUsage(
587
- false,
588
- [
589
- `${interfaceFile.filePath.filePathToShowToUser} sets the config ${pc.cyan(
590
- configName
591
- )} but it's a global config:`,
592
- configFilesGlobal.length > 0
593
- ? `define ${pc.cyan(configName)} at ${joinEnglish(configFilesGlobal, "or")} instead.`
594
- : `create a global config (e.g. /pages/+config.js) and define ${pc.cyan(configName)} there instead.`,
595
- ].join(" ")
596
- )
597
- }
598
- }
599
- })
600
- })
601
- }
602
-
603
- function deriveConfigEnvFromFileName(env: ConfigEnvInternal, fileName: string) {
604
- env = { ...env }
605
- if (fileName.includes(".server.")) {
606
- env.server = true
607
- env.client = false
608
- } else if (fileName.includes(".client.")) {
609
- env.client = true
610
- env.server = false
611
- } else if (fileName.includes(".shared.")) {
612
- env.server = true
613
- env.client = true
614
- }
615
- return env
616
- }
617
-
618
- function assertPageConfigs(pageConfigs: PageConfigBuildTime[]) {
619
- pageConfigs.forEach((pageConfig) => {
620
- assertOnBeforeRenderEnv(pageConfig)
621
- })
622
- }
623
- function assertOnBeforeRenderEnv(pageConfig: PageConfigBuildTime) {
624
- const onBeforeRenderConfig = pageConfig.configValueSources.onBeforeRender?.[0]
625
- if (!onBeforeRenderConfig) return
626
- const onBeforeRenderEnv = onBeforeRenderConfig.configEnv
627
- const isClientRouting = getConfigValueBuildTime(
628
- pageConfig,
629
- "clientRouting",
630
- "boolean"
631
- )
632
- // When using Server Routing, loading a onBeforeRender() hook on the client-side hasn't any effect (the Server Routing's client runtime never calls it); it unnecessarily bloats client bundle sizes
633
- assertUsage(
634
- !(onBeforeRenderEnv.client && !isClientRouting),
635
- `Page ${pageConfig.pageId} has an onBeforeRender() hook with env ${pc.cyan(
636
- JSON.stringify(onBeforeRenderEnv)
637
- )} which doesn't make sense because the page is using Server Routing: onBeforeRender() can be run in the client only when using Client Routing.`
638
- )
639
- }
640
-
641
- function interfacefileIsAlreaydLoaded(interfaceFile: InterfaceFile): boolean {
642
- const configMapValues = Object.values(interfaceFile.fileExportsByConfigName)
643
- const isAlreadyLoaded = configMapValues.some((conf) => "configValue" in conf)
644
- if (isAlreadyLoaded) {
645
- assert(configMapValues.every((conf) => "configValue" in conf))
646
- }
647
- return isAlreadyLoaded
648
- }
649
-
650
- function getInterfaceFilesRelevant(
651
- interfaceFilesByLocationId: InterfaceFilesByLocationId,
652
- locationIdPage: LocationId
653
- ): InterfaceFilesByLocationId {
654
- const interfaceFilesRelevant = Object.fromEntries(
655
- objectEntries(interfaceFilesByLocationId)
656
- .filter(([locationId]) => {
657
- return isInherited(locationId, locationIdPage)
658
- })
659
- .sort(([locationId1], [locationId2]) =>
660
- sortAfterInheritanceOrder(locationId1, locationId2, locationIdPage)
661
- )
662
- )
663
- return interfaceFilesRelevant
664
- }
665
-
666
- async function getGlobalConfigs(
667
- interfaceFilesByLocationId: InterfaceFilesByLocationId,
668
- userRootDir: string,
669
- importedFilesLoaded: ImportedFilesLoaded
670
- ) {
671
- const locationIds = objectKeys(interfaceFilesByLocationId)
672
- const interfaceFilesGlobal = objectFromEntries(
673
- objectEntries(interfaceFilesByLocationId).filter(([locationId]) => {
674
- return isGlobalLocation(locationId, locationIds)
675
- })
676
- )
677
-
678
- // Validate that global configs live in global interface files
679
- {
680
- const interfaceFilesGlobalPaths: string[] = []
681
- objectEntries(interfaceFilesGlobal).forEach(
682
- ([locationId, interfaceFiles]) => {
683
- assert(isGlobalLocation(locationId, locationIds))
684
- interfaceFiles.forEach(
685
- ({ filePath: { filePathAbsoluteUserRootDir } }) => {
686
- if (filePathAbsoluteUserRootDir) {
687
- interfaceFilesGlobalPaths.push(filePathAbsoluteUserRootDir)
688
- }
689
- }
690
- )
691
- }
692
- )
693
- const globalPaths = Array.from(
694
- new Set(interfaceFilesGlobalPaths.map((p) => path.posix.dirname(p)))
695
- )
696
- objectEntries(interfaceFilesByLocationId).forEach(
697
- ([locationId, interfaceFiles]) => {
698
- interfaceFiles.forEach((interfaceFile) => {
699
- Object.keys(interfaceFile.fileExportsByConfigName).forEach(
700
- (configName) => {
701
- if (
702
- !isGlobalLocation(locationId, locationIds) &&
703
- isGlobalConfig(configName)
704
- ) {
705
- assertUsage(
706
- false,
707
- [
708
- `${interfaceFile.filePath.filePathToShowToUser} defines the config ${pc.cyan(
709
- configName
710
- )} which is global:`,
711
- globalPaths.length
712
- ? `define ${pc.cyan(configName)} in ${joinEnglish(globalPaths, "or")} instead`
713
- : `create a global config (e.g. /pages/+config.js) and define ${pc.cyan(configName)} there instead`,
714
- ].join(" ")
715
- )
716
- }
717
- }
718
- )
719
- })
720
- }
721
- )
722
- }
723
-
724
- const globalRevealConfig: Record<string, unknown> = {}
725
- const pageConfigGlobal: PageConfigGlobalBuildTime = {
726
- configDefinitions: configDefinitionsBuiltInGlobal,
727
- configValueSources: {},
728
- }
729
- await Promise.allSettled(
730
- objectEntries(configDefinitionsBuiltInGlobal).map(
731
- async ([configName, configDef]) => {
732
- const sources = await resolveConfigValueSources(
733
- configName,
734
- configDef,
735
- interfaceFilesGlobal,
736
- userRootDir,
737
- importedFilesLoaded
738
- )
739
- const configValueSource = sources[0]
740
- if (!configValueSource) return
741
- if (
742
- configName === "onBeforeRoute" ||
743
- configName === "onPrerenderStart"
744
- ) {
745
- assert(!("value" in configValueSource))
746
- pageConfigGlobal.configValueSources[configName] = [configValueSource]
747
- } else {
748
- assert("value" in configValueSource)
749
- if (
750
- configName === "prerender" &&
751
- typeof configValueSource.value === "boolean"
752
- )
753
- return
754
- const { filePathToShowToUser } = configValueSource.definedAtFilePath
755
- assertWarning(
756
- false,
757
- `Being able to define config ${pc.cyan(
758
- configName
759
- )} in ${filePathToShowToUser} is experimental and will likely be removed. Define the config ${pc.cyan(
760
- configName
761
- )} in reveal's Vite plugin options instead.`,
762
- { onlyOnce: true }
763
- )
764
- globalRevealConfig[configName] = configValueSource.value
765
- }
766
- }
767
- )
768
- )
769
-
770
- return { pageConfigGlobal, globalRevealConfig }
771
- }
772
-
773
- async function resolveConfigValueSources(
774
- configName: string,
775
- configDef: ConfigDefinitionInternal,
776
- interfaceFilesRelevant: InterfaceFilesByLocationId,
777
- userRootDir: string,
778
- importedFilesLoaded: ImportedFilesLoaded
779
- ): Promise<ConfigValueSource[]> {
780
- const sourcesInfo: Parameters<typeof getConfigValueSource>[] = []
781
-
782
- // interfaceFilesRelevant is sorted by sortAfterInheritanceOrder()
783
- for (const interfaceFiles of Object.values(interfaceFilesRelevant)) {
784
- const interfaceFilesDefiningConfig = interfaceFiles.filter(
785
- (interfaceFile) => interfaceFile.fileExportsByConfigName[configName]
786
- )
787
- if (interfaceFilesDefiningConfig.length === 0) continue
788
- const visited = new WeakSet<InterfaceFile>()
789
- const add = (interfaceFile: InterfaceFile) => {
790
- assert(!visited.has(interfaceFile))
791
- visited.add(interfaceFile)
792
- const isHighestInheritancePrecedence = sourcesInfo.length === 0
793
- sourcesInfo.push([
794
- configName,
795
- interfaceFile,
796
- configDef,
797
- userRootDir,
798
- importedFilesLoaded,
799
- isHighestInheritancePrecedence,
800
- ])
801
- }
802
-
803
- // Main resolution logic
804
- {
805
- const interfaceValueFiles = interfaceFilesDefiningConfig
806
- .filter(
807
- (interfaceFile) =>
808
- interfaceFile.isValueFile &&
809
- // We consider side-effect configs (e.g. `export { frontmatter }` of .mdx files) later (i.e. with less priority)
810
- interfaceFile.configName === configName
811
- )
812
- .sort(makeOrderDeterministic)
813
- const interfaceConfigFiles = interfaceFilesDefiningConfig
814
- .filter(
815
- (interfaceFile) =>
816
- interfaceFile.isConfigFile &&
817
- // We consider value from extended configs (e.g. reveal-react) later (i.e. with less priority)
818
- !interfaceFile.isConfigExtend
819
- )
820
- .sort(makeOrderDeterministic)
821
- const interfaceValueFile = interfaceValueFiles[0]
822
- const interfaceConfigFile = interfaceConfigFiles[0]
823
- // Make this value:
824
- // /pages/some-page/+{configName}.js > `export default`
825
- // override that value:
826
- // /pages/some-page/+config.js > `export default { someConfig }`
827
- const interfaceFileWinner = interfaceValueFile ?? interfaceConfigFile
828
- if (interfaceFileWinner) {
829
- const interfaceFilesOverriden = [
830
- ...interfaceValueFiles,
831
- ...interfaceConfigFiles,
832
- ].filter((f) => f !== interfaceFileWinner)
833
- // A user-land conflict of interfaceFiles with the same locationId means that the user has superfluously defined the config twice; the user should remove such redundancy making things unnecessarily ambiguous
834
- warnOverridenConfigValues(
835
- interfaceFileWinner,
836
- interfaceFilesOverriden,
837
- configName
838
- )
839
- ;[interfaceFileWinner, ...interfaceFilesOverriden].forEach(
840
- (interfaceFile) => {
841
- add(interfaceFile)
842
- }
843
- )
844
- }
845
- }
846
-
847
- // Side-effect configs such as `export { frontmatter }` in .mdx files
848
- interfaceFilesDefiningConfig
849
- .filter(
850
- (interfaceFile) =>
851
- interfaceFile.isValueFile &&
852
- // Is side-effect config
853
- interfaceFile.configName !== configName
854
- )
855
- .forEach((interfaceValueFileSideEffect) => {
856
- add(interfaceValueFileSideEffect)
857
- })
858
-
859
- // extends
860
- interfaceFilesDefiningConfig
861
- .filter(
862
- (interfaceFile) =>
863
- interfaceFile.isConfigFile && interfaceFile.isConfigExtend
864
- )
865
- // extended config files are already sorted by inheritance order
866
- .forEach((interfaceFile) => {
867
- add(interfaceFile)
868
- })
869
-
870
- interfaceFilesDefiningConfig.forEach((interfaceFile) => {
871
- assert(visited.has(interfaceFile))
872
- })
873
- }
874
-
875
- const sourcesSettled = await Promise.allSettled(
876
- sourcesInfo.map(async (args) => await getConfigValueSource(...args))
877
- )
878
- const sources: ConfigValueSource[] = sourcesSettled
879
- .filter(
880
- (result): result is PromiseFulfilledResult<ConfigValueSource> =>
881
- result.status === "fulfilled"
882
- )
883
- .map((result) => result.value)
884
- return sources
885
- }
886
- function makeOrderDeterministic(
887
- interfaceFile1: InterfaceFile,
888
- interfaceFile2: InterfaceFile
889
- ): 0 | -1 | 1 {
890
- return lowerFirst<InterfaceFile>((interfaceFile) => {
891
- const { filePathAbsoluteUserRootDir } = interfaceFile.filePath
892
- assert(isInterfaceFileUserLand(interfaceFile))
893
- assert(filePathAbsoluteUserRootDir)
894
- return filePathAbsoluteUserRootDir.length
895
- })(interfaceFile1, interfaceFile2)
896
- }
897
- function warnOverridenConfigValues(
898
- interfaceFileWinner: InterfaceFile,
899
- interfaceFilesOverriden: InterfaceFile[],
900
- configName: string
901
- ) {
902
- interfaceFilesOverriden.forEach((interfaceFileLoser) => {
903
- const loserFilePath = interfaceFileLoser.filePath.filePathToShowToUser
904
- const winnerFilePath = interfaceFileWinner.filePath.filePathToShowToUser
905
- const confName = pc.cyan(configName)
906
- assertWarning(
907
- false,
908
- `The value of the config ${confName} defined at ${loserFilePath} is always overwritten by the value defined at ${winnerFilePath}, remove the superfluous value defined at ${loserFilePath}`,
909
- { onlyOnce: true }
910
- )
911
- })
912
- }
913
-
914
- function isInterfaceFileUserLand(interfaceFile: InterfaceFile) {
915
- return (
916
- (interfaceFile.isConfigFile && !interfaceFile.isConfigExtend) ||
917
- interfaceFile.isValueFile
918
- )
919
- }
920
-
921
- async function getConfigValueSource(
922
- configName: string,
923
- interfaceFile: InterfaceFile,
924
- configDef: ConfigDefinitionInternal,
925
- userRootDir: string,
926
- importedFilesLoaded: ImportedFilesLoaded,
927
- isHighestInheritancePrecedence: boolean
928
- ): Promise<ConfigValueSource> {
929
- const conf = interfaceFile.fileExportsByConfigName[configName]
930
- assert(conf)
931
- const configEnv = deriveConfigEnvFromFileName(
932
- configDef.env,
933
- interfaceFile.filePath.fileName
934
- )
935
- const { locationId } = interfaceFile
936
-
937
- const definedAtFilePath_: DefinedAtFilePath = {
938
- ...interfaceFile.filePath,
939
- fileExportPathToShowToUser: ["default", configName],
940
- }
941
-
942
- const isOverriden = configDef.cumulative
943
- ? false
944
- : !isHighestInheritancePrecedence
945
-
946
- // +client.js
947
- if (configDef._valueIsFilePath) {
948
- let definedAtFilePath: DefinedAtFilePath
949
- let valueFilePath: string
950
- if (interfaceFile.isConfigFile) {
951
- const { configValue } = conf
952
- const pointerImport = resolvePointerImportOfConfig(
953
- configValue,
954
- interfaceFile.filePath,
955
- userRootDir,
956
- configEnv,
957
- configName
958
- )
959
- const configDefinedAt = getConfigDefinedAt(
960
- "Config",
961
- configName,
962
- definedAtFilePath_
963
- )
964
- assertUsage(pointerImport, `${configDefinedAt} should be an import`)
965
- valueFilePath = pointerImport.filePathAbsoluteVite
966
- definedAtFilePath = pointerImport
967
- } else {
968
- assert(interfaceFile.isValueFile)
969
- valueFilePath = interfaceFile.filePath.filePathAbsoluteVite
970
- definedAtFilePath = {
971
- ...interfaceFile.filePath,
972
- fileExportPathToShowToUser: [],
973
- }
974
- }
975
- const configValueSource: ConfigValueSource = {
976
- locationId,
977
- value: valueFilePath,
978
- valueIsFilePath: true,
979
- configEnv,
980
- valueIsImportedAtRuntime: true,
981
- valueIsDefinedByPlusFile: false,
982
- isOverriden,
983
- definedAtFilePath,
984
- }
985
- return configValueSource
986
- }
987
-
988
- // +config.js
989
- if (interfaceFile.isConfigFile) {
990
- assert("configValue" in conf)
991
- const { configValue } = conf
992
-
993
- // Pointer import
994
- const pointerImport = resolvePointerImportOfConfig(
995
- configValue,
996
- interfaceFile.filePath,
997
- userRootDir,
998
- configEnv,
999
- configName
1000
- )
1001
- if (pointerImport) {
1002
- const configValueSource: ConfigValueSource = {
1003
- locationId,
1004
- configEnv,
1005
- valueIsImportedAtRuntime: true,
1006
- valueIsDefinedByPlusFile: false,
1007
- isOverriden,
1008
- definedAtFilePath: pointerImport,
1009
- }
1010
- // Load pointer import
1011
- if (
1012
- isLoadableAtBuildTime(configDef) &&
1013
- // The value of `extends` was already loaded and already used: we don't need the value of `extends` anymore
1014
- configName !== "extends"
1015
- ) {
1016
- if (pointerImport.filePathAbsoluteFilesystem) {
1017
- const fileExport = await loadImportedFile(
1018
- pointerImport,
1019
- userRootDir,
1020
- importedFilesLoaded
1021
- )
1022
- configValueSource.value = fileExport
1023
- } else {
1024
- const configDefinedAt = getConfigDefinedAt(
1025
- "Config",
1026
- configName,
1027
- configValueSource.definedAtFilePath
1028
- )
1029
- assertUsage(
1030
- !configDef.cumulative,
1031
- `${configDefinedAt} cannot be defined over an aliased import`
1032
- )
1033
- }
1034
- }
1035
-
1036
- return configValueSource
1037
- }
1038
-
1039
- // Defined by config file, i.e. +config.js file
1040
- const configValueSource: ConfigValueSource = {
1041
- locationId,
1042
- value: configValue,
1043
- configEnv,
1044
- valueIsImportedAtRuntime: false,
1045
- valueIsDefinedByPlusFile: false,
1046
- isOverriden,
1047
- definedAtFilePath: definedAtFilePath_,
1048
- }
1049
- return configValueSource
1050
- }
1051
-
1052
- // Defined by value file, i.e. +{configName}.js
1053
- if (interfaceFile.isValueFile) {
1054
- const valueAlreadyLoaded = "configValue" in conf
1055
- assert(valueAlreadyLoaded === !!configEnv.config)
1056
- const configValueSource: ConfigValueSource = {
1057
- locationId,
1058
- configEnv,
1059
- valueIsImportedAtRuntime: !valueAlreadyLoaded,
1060
- valueIsDefinedByPlusFile: true,
1061
- isOverriden,
1062
- definedAtFilePath: {
1063
- ...interfaceFile.filePath,
1064
- fileExportPathToShowToUser:
1065
- configName === interfaceFile.configName
1066
- ? []
1067
- : // Side-effect config (e.g. `export { frontmatter }` of .md files)
1068
- [configName],
1069
- },
1070
- }
1071
- if (valueAlreadyLoaded) {
1072
- configValueSource.value = conf.configValue
1073
- }
1074
- return configValueSource
1075
- }
1076
-
1077
- assert(false)
1078
- }
1079
-
1080
- function isDefiningPage(interfaceFiles: InterfaceFile[]): boolean {
1081
- for (const interfaceFile of interfaceFiles) {
1082
- const configNames = Object.keys(interfaceFile.fileExportsByConfigName)
1083
- if (configNames.some((configName) => isDefiningPageConfig(configName))) {
1084
- return true
1085
- }
1086
- }
1087
- return false
1088
- }
1089
- function isDefiningPageConfig(configName: string): boolean {
1090
- return ["Page", "route"].includes(configName)
1091
- }
1092
-
1093
- function getConfigDefinitions(
1094
- interfaceFilesRelevant: InterfaceFilesByLocationId
1095
- ): ConfigDefinitions {
1096
- const configDefinitionsMerged: ConfigDefinitions = {
1097
- ...configDefinitionsBuiltIn,
1098
- }
1099
- Object.entries(interfaceFilesRelevant)
1100
- .reverse()
1101
- .forEach(([_locationId, interfaceFiles]) => {
1102
- interfaceFiles.forEach((interfaceFile) => {
1103
- const configMeta = interfaceFile.fileExportsByConfigName["meta"]
1104
- if (!configMeta) return
1105
- const meta = configMeta.configValue
1106
- assertMetaUsage(
1107
- meta,
1108
- `Config ${pc.cyan("meta")} defined at ${interfaceFile.filePath.filePathToShowToUser}`
1109
- )
1110
-
1111
- // Set configDef._userEffectDefinedAtFilePath
1112
- Object.entries(meta).forEach(([configName, configDef]) => {
1113
- if (!configDef.effect) return
1114
- assert(interfaceFile.isConfigFile)
1115
- configDef._userEffectDefinedAtFilePath = {
1116
- ...interfaceFile.filePath,
1117
- fileExportPathToShowToUser: [
1118
- "default",
1119
- "meta",
1120
- configName,
1121
- "effect",
1122
- ],
1123
- }
1124
- })
1125
-
1126
- objectEntries(meta).forEach(([configName, configDefinition]) => {
1127
- // User can override an existing config definition
1128
- configDefinitionsMerged[configName] = {
1129
- ...configDefinitionsMerged[configName],
1130
- ...configDefinition,
1131
- }
1132
- })
1133
- })
1134
- })
1135
-
1136
- const configDefinitions = configDefinitionsMerged
1137
- return configDefinitions
1138
- }
1139
-
1140
- function assertMetaUsage(
1141
- metaVal: unknown,
1142
- metaConfigDefinedAt: `Config meta defined at ${string}` | null
1143
- ): asserts metaVal is ConfigDefinitions {
1144
- if (!isObject(metaVal)) {
1145
- assert(metaConfigDefinedAt) // We expect internal effects to return a valid meta value
1146
- assertUsage(
1147
- false,
1148
- `${metaConfigDefinedAt} has an invalid type ${pc.cyan(typeof metaVal)}: it should be an object instead.`
1149
- )
1150
- }
1151
- objectEntries(metaVal).forEach(([configName, def]) => {
1152
- if (!isObject(def)) {
1153
- assert(metaConfigDefinedAt) // We expect internal effects to return a valid meta value
1154
- assertUsage(
1155
- false,
1156
- `${metaConfigDefinedAt} sets ${pc.cyan(`meta.${configName}`)} to a value with an invalid type ${pc.cyan(
1157
- typeof def
1158
- )}: it should be an object instead.`
1159
- )
1160
- }
1161
-
1162
- // env
1163
- let configEnv: ConfigEnvInternal
1164
- {
1165
- assert(metaConfigDefinedAt) // We expect internal effects to return a valid meta value
1166
- if (!("env" in def)) {
1167
- assertUsage(
1168
- false,
1169
- `${metaConfigDefinedAt} doesn't set ${pc.cyan(`meta.${configName}.env`)} but it's required.`
1170
- )
1171
- }
1172
- configEnv = getConfigEnvValue(
1173
- def.env,
1174
- `${metaConfigDefinedAt} sets ${pc.cyan(`meta.${configName}.env`)} to`
1175
- )
1176
- }
1177
-
1178
- // effect
1179
- if ("effect" in def) {
1180
- if (!hasProp(def, "effect", "function")) {
1181
- assert(metaConfigDefinedAt) // We expect internal effects to return a valid meta value
1182
- assertUsage(
1183
- false,
1184
- `${metaConfigDefinedAt} sets ${pc.cyan(`meta.${configName}.effect`)} to an invalid type ${pc.cyan(
1185
- typeof def.effect
1186
- )}: it should be a function instead`
1187
- )
1188
- }
1189
- if (!configEnv.config) {
1190
- assert(metaConfigDefinedAt) // We expect internal effects to return a valid meta value
1191
- assertUsage(
1192
- false,
1193
- `${metaConfigDefinedAt} sets ${pc.cyan(
1194
- `meta.${configName}.effect`
1195
- )} but it's only supported if meta.${configName}.env has ${pc.cyan("{ config: true }")} (but it's ${pc.cyan(
1196
- JSON.stringify(configEnv)
1197
- )} instead)`
1198
- )
1199
- }
1200
- }
1201
- })
1202
- }
1203
-
1204
- function applyEffectsAll(
1205
- configValueSources: ConfigValueSources,
1206
- configDefinitions: ConfigDefinitions
1207
- ) {
1208
- objectEntries(configDefinitions).forEach(([configName, configDef]) => {
1209
- if (!configDef.effect) return
1210
- // The value needs to be loaded at config time, that's why we only support effect for configs that are config-only for now.
1211
- // (We could support effect for non config-only by always loading its value at config time, regardless of the config's `env` value.)
1212
- assertUsage(
1213
- configDef.env.config,
1214
- [
1215
- `Cannot add effect to ${pc.cyan(configName)} because its ${pc.cyan("env")} is ${pc.cyan(
1216
- JSON.stringify(configDef.env)
1217
- )}: effects can only be added to configs with an ${pc.cyan("env")} with ${pc.cyan("{ config: true }")}.`,
1218
- ].join(" ")
1219
- )
1220
- const source = configValueSources[configName]?.[0]
1221
- if (!source) return
1222
- // The config value is eagerly loaded since `configDef.env === 'config-only``
1223
- assert("value" in source)
1224
- // Call effect
1225
- const configModFromEffect = configDef.effect({
1226
- configValue: source.value,
1227
- configDefinedAt: getConfigDefinedAt(
1228
- "Config",
1229
- configName,
1230
- source.definedAtFilePath
1231
- ),
1232
- })
1233
- if (!configModFromEffect) return
1234
- assert(hasProp(source, "value")) // We need to assume that the config value is loaded at build-time
1235
- applyEffect(configModFromEffect, configValueSources, configDef)
1236
- })
1237
- }
1238
- function applyEffect(
1239
- configModFromEffect: Config,
1240
- configValueSources: ConfigValueSources,
1241
- configDefEffect: ConfigDefinitionInternal
1242
- ) {
1243
- const notSupported =
1244
- `Effects currently only supports modifying the the ${pc.cyan("env")} of a config.` as const
1245
- objectEntries(configModFromEffect).forEach(([configName, configValue]) => {
1246
- if (configName === "meta") {
1247
- let configDefinedAt: Parameters<typeof assertMetaUsage>[1]
1248
- if (configDefEffect._userEffectDefinedAtFilePath) {
1249
- configDefinedAt = getConfigDefinedAt(
1250
- "Config",
1251
- configName,
1252
- configDefEffect._userEffectDefinedAtFilePath
1253
- )
1254
- } else {
1255
- configDefinedAt = null
1256
- }
1257
- assertMetaUsage(configValue, configDefinedAt)
1258
- objectEntries(configValue).forEach(
1259
- ([configTargetName, configTargetDef]) => {
1260
- {
1261
- const keys = Object.keys(configTargetDef)
1262
- assertUsage(keys.includes("env"), notSupported)
1263
- assertUsage(keys.length === 1, notSupported)
1264
- }
1265
- const envOverriden = configTargetDef.env
1266
- const sources = configValueSources[configTargetName]
1267
- sources?.forEach((configValueSource) => {
1268
- // Apply effect
1269
- configValueSource.configEnv = envOverriden
1270
- })
1271
- }
1272
- )
1273
- } else {
1274
- assertUsage(false, notSupported)
1275
- /* To implement being able to set a config value in an effect:
1276
- * - Copy and append definedAtFile.fileExportPathToShowToUser with ['meta', configName, 'effect']
1277
- * - Copying the definedAtFile of the config that defines the effect
1278
- * - Same precedence as the config that sets the value triggering the effect (not the config defining the effect)
1279
- * - Apply sortConfigValueSources() again?
1280
- configValueSources.push()
1281
- */
1282
- }
1283
- })
1284
- }
1285
-
1286
- function getComputed(
1287
- configValueSources: ConfigValueSources,
1288
- configDefinitions: ConfigDefinitions
1289
- ) {
1290
- const configValuesComputed: ConfigValuesComputed = {}
1291
- objectEntries(configDefinitions).forEach(([configName, configDef]) => {
1292
- if (!configDef._computed) return
1293
- const value = configDef._computed(configValueSources)
1294
- if (value === undefined) return
1295
- configValuesComputed[configName] = {
1296
- value,
1297
- configEnv: configDef.env,
1298
- }
1299
- })
1300
- return configValuesComputed
1301
- }
1302
-
1303
- async function findPlusFiles(
1304
- userRootDir: string,
1305
- outDirRoot: string,
1306
- isDev: boolean,
1307
- crawlWithGit: null | boolean
1308
- ): Promise<FilePathResolved[]> {
1309
- const files = await crawlPlusFiles(
1310
- userRootDir,
1311
- outDirRoot,
1312
- isDev,
1313
- crawlWithGit
1314
- )
1315
-
1316
- const plusFiles: FilePathResolved[] = files.map(
1317
- ({ filePathAbsoluteUserRootDir }) =>
1318
- getFilePathResolved({ filePathAbsoluteUserRootDir, userRootDir })
1319
- )
1320
-
1321
- return plusFiles
1322
- }
1323
-
1324
- function getConfigName(filePath: string): string | null {
1325
- assertPosixPath(filePath)
1326
- if (isTemporaryBuildFile(filePath)) return null
1327
- const fileName = path.posix.basename(filePath)
1328
- assertNoUnexpectedPlusSign(filePath, fileName)
1329
- const basename = fileName.split(".")[0]!
1330
- if (!basename.startsWith("+")) {
1331
- return null
1332
- } else {
1333
- const configName = basename.slice(1)
1334
- assertUsage(configName !== "", `${filePath} Invalid filename ${fileName}`)
1335
- return configName
1336
- }
1337
- }
1338
- /* https://github.com/revealjs/reveal/issues/1407 */
1339
- function assertNoUnexpectedPlusSign(filePath: string, fileName: string) {
1340
- const dirs = path.posix.dirname(filePath).split("/")
1341
- dirs.forEach((dir, i) => {
1342
- const dirPath = dirs.slice(0, i + 1).join("/")
1343
- assertUsage(
1344
- !dir.includes("+"),
1345
- `Character '+' is a reserved character: remove '+' from the directory name ${dirPath}/`
1346
- )
1347
- })
1348
- assertUsage(
1349
- !fileName.slice(1).includes("+"),
1350
- `Character '+' is only allowed at the beginning of filenames: make sure ${filePath} doesn't contain any '+' in its filename other than its first letter`
1351
- )
1352
- }
1353
-
1354
- function handleUnknownConfig(
1355
- configName: string,
1356
- configNames: string[],
1357
- filePathToShowToUser: string
1358
- ) {
1359
- const configNameColored = pc.cyan(configName)
1360
- let errMsg =
1361
- `${filePathToShowToUser} sets an unknown config ${configNameColored}.` as const
1362
-
1363
- // reveal-{react,vue,solid} hint
1364
- {
1365
- const ui = ["reveal"] as const
1366
- const knownRevealExntensionConfigs = {
1367
- description: ui,
1368
- favicon: ui,
1369
- Head: ui,
1370
- Layout: ui,
1371
- onCreateApp: ["reveal"],
1372
- title: ui,
1373
- ssr: ui,
1374
- stream: ui,
1375
- Wrapper: ui,
1376
- } as const
1377
- if (configName in knownRevealExntensionConfigs) {
1378
- const requiredRevealExtension =
1379
- knownRevealExntensionConfigs[
1380
- configName as keyof typeof knownRevealExntensionConfigs
1381
- ]
1382
- assertUsage(
1383
- false,
1384
- [
1385
- errMsg,
1386
- `If you want to use the configuration documented at https://reveal.dev/${configName} then make sure to install the reveal extension ${requiredRevealExtension
1387
- .map((e) => pc.bold(e))
1388
- .join("/")}.`,
1389
- `Also make sure it applies to ${filePathToShowToUser} (see https://reveal.dev/extends#inheritance).`,
1390
- `Alternatively, if you don't want to use the aforementioned reveal extension, define it yourself by using ${pc.cyan(
1391
- "meta"
1392
- )} (https://reveal.dev/meta).`,
1393
- ].join(" ")
1394
- )
1395
- }
1396
- }
1397
-
1398
- // Similarity hint
1399
- let configNameSimilar: string | null = null
1400
- if (configName === "page") {
1401
- configNameSimilar = "Page"
1402
- } else {
1403
- configNameSimilar = getMostSimilar(configName, configNames)
1404
- }
1405
- if (configNameSimilar) {
1406
- assert(configNameSimilar !== configName)
1407
- errMsg += ` Did you mean to set ${pc.cyan(configNameSimilar)} instead?`
1408
- if (configName === "page") {
1409
- errMsg += ` (The name of the config ${pc.cyan("Page")} starts with a capital letter ${pc.cyan(
1410
- "P"
1411
- )} because it defines a UI component: a ubiquitous JavaScript convention is that the name of UI components start with a capital letter.)`
1412
- }
1413
- }
1414
-
1415
- // `meta` hint
1416
- if (!configNameSimilar) {
1417
- errMsg += ` Make sure to define ${configNameColored} by using ${pc.cyan(
1418
- "meta"
1419
- )} (https://reveal.dev/meta), and also make sure the meta configuration applies to ${filePathToShowToUser} (see https://reveal.dev/config#inheritance).`
1420
- }
1421
-
1422
- assertUsage(false, errMsg)
1423
- }
1424
-
1425
- function determineRouteFilesystem(
1426
- locationId: LocationId,
1427
- configValueSources: ConfigValueSources
1428
- ) {
1429
- const configName = "filesystemRoutingRoot"
1430
- const configFilesystemRoutingRoot = configValueSources[configName]?.[0]
1431
- let filesystemRouteString = getFilesystemRouteString(locationId)
1432
- if (determineIsErrorPage(filesystemRouteString)) {
1433
- return { isErrorPage: true as const, routeFilesystem: undefined }
1434
- }
1435
- let filesystemRouteDefinedBy = getFilesystemRouteDefinedBy(locationId) // for log404()
1436
- if (configFilesystemRoutingRoot) {
1437
- const routingRoot = getFilesystemRoutingRootEffect(
1438
- configFilesystemRoutingRoot,
1439
- configName
1440
- )
1441
- if (routingRoot) {
1442
- const {
1443
- filesystemRoutingRootEffect,
1444
- filesystemRoutingRootConfigDefinedAt,
1445
- } = routingRoot
1446
- const debugInfo = {
1447
- locationId,
1448
- routeFilesystem: filesystemRouteString,
1449
- configFilesystemRoutingRoot,
1450
- }
1451
- assertLog(
1452
- filesystemRouteString.startsWith(filesystemRoutingRootEffect.before),
1453
- debugInfo
1454
- )
1455
- filesystemRouteString = applyFilesystemRoutingRootEffect(
1456
- filesystemRouteString,
1457
- filesystemRoutingRootEffect
1458
- )
1459
- filesystemRouteDefinedBy = `${filesystemRouteDefinedBy} (with ${filesystemRoutingRootConfigDefinedAt})`
1460
- }
1461
- }
1462
- assert(filesystemRouteString.startsWith("/"))
1463
- const routeFilesystem = {
1464
- routeString: filesystemRouteString,
1465
- definedBy: filesystemRouteDefinedBy,
1466
- }
1467
- return { routeFilesystem, isErrorPage: undefined }
1468
- }
1469
- function getFilesystemRoutingRootEffect(
1470
- configFilesystemRoutingRoot: ConfigValueSource,
1471
- configName: "filesystemRoutingRoot"
1472
- ) {
1473
- assert(configFilesystemRoutingRoot.configEnv.config)
1474
- // Eagerly loaded since it's config-only
1475
- assert("value" in configFilesystemRoutingRoot)
1476
- const { value } = configFilesystemRoutingRoot
1477
- const configDefinedAt = getConfigDefinedAt(
1478
- "Config",
1479
- configName,
1480
- configFilesystemRoutingRoot.definedAtFilePath
1481
- )
1482
- assertUsage(
1483
- typeof value === "string",
1484
- `${configDefinedAt} should be a string`
1485
- )
1486
- assertUsage(
1487
- value.startsWith("/"),
1488
- `${configDefinedAt} is ${pc.cyan(value)} but it should start with a leading slash ${pc.cyan("/")}`
1489
- )
1490
- const { filePathAbsoluteUserRootDir } =
1491
- configFilesystemRoutingRoot.definedAtFilePath
1492
- assert(filePathAbsoluteUserRootDir)
1493
- const before = getFilesystemRouteString(
1494
- getLocationId(filePathAbsoluteUserRootDir)
1495
- )
1496
- const after = value
1497
- const filesystemRoutingRootEffect = { before, after }
1498
- return {
1499
- filesystemRoutingRootEffect,
1500
- filesystemRoutingRootConfigDefinedAt: configDefinedAt,
1501
- }
1502
- }
1503
- function determineIsErrorPage(routeFilesystem: string) {
1504
- assertPosixPath(routeFilesystem)
1505
- return routeFilesystem.split("/").includes("_error")
1506
- }
1507
-
1508
- function isRevealConfigFile(filePath: string): boolean {
1509
- return !!getConfigName(filePath)
1510
- }
1511
-
1512
- function getConfigEnvValue(
1513
- val: unknown,
1514
- errMsgIntro: `Config meta defined at ${string} sets meta.${
1515
- string // configName
1516
- }.env to`
1517
- ): ConfigEnvInternal {
1518
- const errInvalidValue = `${errMsgIntro} an invalid value ${pc.cyan(JSON.stringify(val))}`
1519
-
1520
- assertUsage(
1521
- isObject(val),
1522
- `${errMsgIntro} an invalid type ${pc.cyan(typeof val)}`
1523
- )
1524
-
1525
- assertKeys(
1526
- val,
1527
- ["config", "server", "client"] as const,
1528
- `${errInvalidValue}:`
1529
- )
1530
- assertUsage(
1531
- hasProp(val, "config", "undefined") || hasProp(val, "config", "boolean"),
1532
- errInvalidValue
1533
- )
1534
- assertUsage(
1535
- hasProp(val, "server", "undefined") || hasProp(val, "server", "boolean"),
1536
- errInvalidValue
1537
- )
1538
- assertUsage(
1539
- hasProp(val, "client", "undefined") || hasProp(val, "client", "boolean"),
1540
- errInvalidValue
1541
- )
1542
- /* To allow users to set an eager config:
1543
- * - Uncomment line below.
1544
- * - Add 'eager' to assertKeys() call above.
1545
- * - Add `eager: boolean` to ConfigEnv type.
1546
- * */
1547
- assertUsage(
1548
- hasProp(val, "eager", "undefined") || hasProp(val, "eager", "boolean"),
1549
- errInvalidValue
1550
- )
1551
-
1552
- return val
1553
- }
1554
-
1555
- function getConfigDefinition(
1556
- configDefinitions: ConfigDefinitions,
1557
- configName: string,
1558
- filePathToShowToUser: string
1559
- ) {
1560
- const configDef = configDefinitions[configName]
1561
- assertConfigExists(
1562
- configName,
1563
- Object.keys(configDefinitions),
1564
- filePathToShowToUser
1565
- )
1566
- assert(configDef)
1567
- return configDef
1568
- }
1569
- function getConfigDefinitionOptional(
1570
- configDefinitions: ConfigDefinitions,
1571
- configName: string
1572
- ) {
1573
- return configDefinitions[configName] ?? null
1574
- }
1575
- function isLoadableAtBuildTime(configDef: ConfigDefinitionInternal): boolean {
1576
- return !!configDef.env.config && !configDef._valueIsFilePath
1577
- }
1578
- function isGlobalConfig(configName: string): configName is ConfigNameGlobal {
1579
- if (configName === "prerender") return false
1580
- const configNamesGlobal = getConfigNamesGlobal()
1581
- return includes(configNamesGlobal, configName)
1582
- }
1583
- function getConfigNamesGlobal() {
1584
- return Object.keys(configDefinitionsBuiltInGlobal)
1585
- }
1586
- function assertConfigExists(
1587
- configName: string,
1588
- configNamesRelevant: string[],
1589
- filePathToShowToUser: string
1590
- ) {
1591
- const configNames = [...configNamesRelevant, ...getConfigNamesGlobal()]
1592
- if (configNames.includes(configName)) return
1593
- handleUnknownConfig(configName, configNames, filePathToShowToUser)
1594
- assert(false)
1595
- }
1596
-
1597
- function sortConfigValueSources(
1598
- configValueSources: ConfigValueSources,
1599
- locationIdPage: LocationId
1600
- ): ConfigValueSources {
1601
- return Object.fromEntries(
1602
- Object.entries(configValueSources)
1603
- // Make order deterministic (no other purpose)
1604
- .sort(([, [source1]], [, [source2]]) =>
1605
- source1!.definedAtFilePath.filePathAbsoluteVite <
1606
- source2!.definedAtFilePath.filePathAbsoluteVite
1607
- ? -1
1608
- : 1
1609
- )
1610
- // Sort after whether the config value was defined by an npm package
1611
- .sort(
1612
- makeFirst(([, [source]]) => {
1613
- const { importPathAbsolute } = source!.definedAtFilePath
1614
- return (
1615
- !!importPathAbsolute &&
1616
- isNpmPackageImport(importPathAbsolute, {
1617
- // Reveal config files don't support path aliases. (If they do one day, then Reveal will/should be able to resolve path aliases.)
1618
- cannotBePathAlias: true,
1619
- })
1620
- )
1621
- })
1622
- )
1623
- // Sort after the filesystem inheritance of the config value
1624
- .sort(([, [source1]], [, [source2]]) =>
1625
- reverse(
1626
- sortAfterInheritanceOrder(
1627
- source1!.locationId,
1628
- source2!.locationId,
1629
- locationIdPage
1630
- )
1631
- )
1632
- )
1633
- )
1634
- }
1635
-
1636
- function getConfigValueInterfaceFile(
1637
- interfaceFile: InterfaceFile,
1638
- configName: string
1639
- ): unknown {
1640
- return interfaceFile.fileExportsByConfigName[configName]?.configValue
1641
- }