erudit 4.0.0-dev.4 → 4.0.0-dev.5

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 (336) hide show
  1. package/.nuxtrc +1 -1
  2. package/app/app.vue +34 -34
  3. package/app/components/EruditLink.ts +7 -7
  4. package/app/components/FancyBold.vue +16 -16
  5. package/app/components/FancyCard.vue +52 -58
  6. package/app/components/FancyCardTag.vue +16 -16
  7. package/app/components/Loading.vue +7 -7
  8. package/app/components/Prose.vue +55 -52
  9. package/app/components/ScrollHolder.vue +13 -13
  10. package/app/components/SmartMedia.vue +107 -112
  11. package/app/components/ads/Ads.vue +17 -17
  12. package/app/components/ads/AdsBannerAside.vue +29 -29
  13. package/app/components/ads/AdsBannerBottom.vue +6 -6
  14. package/app/components/ads/AdsReplacer.vue +19 -21
  15. package/app/components/ads/provider/Custom.vue +9 -9
  16. package/app/components/ads/provider/Yandex.vue +56 -56
  17. package/app/components/aside/AsideListItem.vue +47 -52
  18. package/app/components/aside/AsideMajor.vue +6 -6
  19. package/app/components/aside/AsideMinor.vue +47 -52
  20. package/app/components/aside/AsidePlainMessage.vue +9 -9
  21. package/app/components/aside/AsideSwitch.vue +53 -54
  22. package/app/components/aside/major/PaneHolder.vue +61 -61
  23. package/app/components/aside/major/PaneSwitcher.vue +50 -55
  24. package/app/components/aside/major/PaneSwitcherButton.vue +24 -24
  25. package/app/components/aside/major/PaneTemplate.vue +3 -3
  26. package/app/components/aside/major/SiteInfo.vue +40 -42
  27. package/app/components/aside/major/contentNav/PaneBookNav.vue +107 -116
  28. package/app/components/aside/major/contentNav/PaneGlobalNav.vue +19 -19
  29. package/app/components/aside/major/contentNav/items/ContentNavBook.vue +8 -8
  30. package/app/components/aside/major/contentNav/items/ContentNavFolder.vue +55 -56
  31. package/app/components/aside/major/contentNav/items/ContentNavItem.vue +16 -16
  32. package/app/components/aside/major/contentNav/items/ContentNavPage.vue +2 -6
  33. package/app/components/aside/major/contentNav/items/ContentNavSeparator.vue +34 -35
  34. package/app/components/aside/major/contentNav/items/ContentNavTopic.vue +6 -6
  35. package/app/components/aside/major/contentNav/items/Flags.vue +31 -33
  36. package/app/components/aside/major/contentNav/items/ItemTemplate.vue +13 -13
  37. package/app/components/aside/major/languages/PaneLanguages.vue +40 -40
  38. package/app/components/aside/major/pages/PanePages.vue +45 -45
  39. package/app/components/aside/major/search/PaneSearch.vue +109 -100
  40. package/app/components/aside/major/search/SearchInput.vue +52 -53
  41. package/app/components/aside/major/search/SearchResult.vue +123 -75
  42. package/app/components/aside/major/search/SearchStatus.vue +28 -28
  43. package/app/components/aside/major/search/search.worker.ts +129 -129
  44. package/app/components/aside/major/settings/BuildTime.vue +15 -15
  45. package/app/components/aside/major/settings/EngineVersion.vue +8 -7
  46. package/app/components/aside/major/settings/PaneSettings.vue +8 -8
  47. package/app/components/aside/major/settings/ThemeSwitcher.vue +36 -36
  48. package/app/components/aside/major/settings/repository/Repository.vue +18 -18
  49. package/app/components/aside/major/settings/repository/SecondaryGitHub.vue +47 -47
  50. package/app/components/aside/minor/AsideMinorPane.vue +5 -5
  51. package/app/components/aside/minor/AsideMinorPlainHeader.vue +20 -20
  52. package/app/components/aside/minor/content/AsideMinorContentContributions.vue +47 -51
  53. package/app/components/aside/minor/content/AsideMinorContentPage.vue +37 -37
  54. package/app/components/aside/minor/content/AsideMinorContentTopic.vue +61 -66
  55. package/app/components/aside/minor/content/ButtonPaneContributions.vue +101 -114
  56. package/app/components/aside/minor/content/ButtonPaneImprove.vue +112 -123
  57. package/app/components/aside/minor/content/Contribution.vue +36 -36
  58. package/app/components/aside/minor/content/Toc.vue +163 -163
  59. package/app/components/aside/minor/content/TocItem.vue +91 -91
  60. package/app/components/aside/minor/content/TopicPartButton.vue +35 -35
  61. package/app/components/aside/minor/contributor/AsideMinorContributor.vue +36 -39
  62. package/app/components/aside/minor/contributor/ItemBook.vue +33 -39
  63. package/app/components/aside/minor/contributor/ItemContent.vue +17 -17
  64. package/app/components/aside/minor/news/AsideMinorNews.vue +132 -132
  65. package/app/components/aside/minor/news/NewsItem.vue +69 -69
  66. package/app/components/aside/minor/news/RenderNewsElement.vue +42 -42
  67. package/app/components/aside/minor/news/elements/Mix.vue +11 -11
  68. package/app/components/aside/minor/news/elements/P.vue +14 -14
  69. package/app/components/aside/minor/news/elements/Ref.vue +59 -58
  70. package/app/components/aside/minor/news/elements/Text.vue +18 -18
  71. package/app/components/indexPage/IndexPagePersons.vue +116 -117
  72. package/app/components/main/MainAction.vue +26 -26
  73. package/app/components/main/MainBreadcrumbs.vue +28 -28
  74. package/app/components/main/MainContentChild.vue +44 -47
  75. package/app/components/main/MainContentChildren.vue +13 -14
  76. package/app/components/main/MainDecoration.vue +15 -15
  77. package/app/components/main/MainDescription.vue +13 -13
  78. package/app/components/main/MainFlag.vue +129 -133
  79. package/app/components/main/MainFlags.vue +17 -17
  80. package/app/components/main/MainGlow.vue +12 -12
  81. package/app/components/main/MainQuickLink.vue +90 -91
  82. package/app/components/main/MainQuickLinks.vue +40 -40
  83. package/app/components/main/MainQuote.vue +149 -161
  84. package/app/components/main/MainQuoteLoader.vue +86 -86
  85. package/app/components/main/MainSection.vue +44 -44
  86. package/app/components/main/MainSectionPreamble.vue +5 -5
  87. package/app/components/main/MainSubTitle.vue +11 -12
  88. package/app/components/main/MainTitle.vue +32 -32
  89. package/app/components/main/MainTopicPartPage.vue +88 -88
  90. package/app/components/main/MainTopicPartSwitch.vue +67 -71
  91. package/app/components/main/connections/Deps.vue +30 -34
  92. package/app/components/main/connections/Externals.vue +80 -104
  93. package/app/components/main/connections/MainConnections.vue +90 -94
  94. package/app/components/main/connections/MainConnectionsButton.vue +81 -81
  95. package/app/components/main/connections/ScrollPane.vue +10 -10
  96. package/app/components/main/contentStats/Item.vue +28 -34
  97. package/app/components/main/contentStats/ItemElement.vue +19 -19
  98. package/app/components/main/contentStats/ItemMaterials.vue +11 -11
  99. package/app/components/main/contentStats/MainContentStats.vue +50 -53
  100. package/app/components/preview/Preview.vue +110 -118
  101. package/app/components/preview/PreviewError.vue +4 -4
  102. package/app/components/preview/PreviewLoading.vue +3 -3
  103. package/app/components/preview/PreviewScreen.vue +48 -48
  104. package/app/components/preview/PreviewScreenButton.vue +27 -27
  105. package/app/components/preview/screen/ContentPage.vue +27 -30
  106. package/app/components/preview/screen/DirectLink.vue +13 -13
  107. package/app/components/preview/screen/Unique.vue +31 -32
  108. package/app/components/site/SiteAside.vue +50 -51
  109. package/app/components/site/SiteAsideOverlay.vue +8 -8
  110. package/app/components/site/SiteMain.vue +11 -11
  111. package/app/components/transition/Fade.vue +16 -16
  112. package/app/components/transition/Slide.vue +27 -27
  113. package/app/components/tree/TreeContainer.vue +3 -3
  114. package/app/components/tree/TreeItem.vue +27 -31
  115. package/app/composables/ads.ts +11 -11
  116. package/app/composables/analytics.ts +102 -102
  117. package/app/composables/appElements.ts +21 -21
  118. package/app/composables/aside.ts +15 -15
  119. package/app/composables/asideMajorPane.ts +82 -82
  120. package/app/composables/asideMinor.ts +109 -109
  121. package/app/composables/contentNav.ts +7 -7
  122. package/app/composables/favicon.ts +103 -108
  123. package/app/composables/file.ts +4 -3
  124. package/app/composables/formatText.ts +100 -100
  125. package/app/composables/loading.ts +26 -26
  126. package/app/composables/mainContent.ts +22 -22
  127. package/app/composables/og.ts +184 -182
  128. package/app/composables/phrases.ts +98 -98
  129. package/app/composables/preview.ts +44 -44
  130. package/app/composables/route.ts +4 -2
  131. package/app/composables/theme.ts +47 -51
  132. package/app/composables/url.ts +19 -11
  133. package/app/formatters/ru.ts +14 -14
  134. package/app/pages/article/[...articleId].vue +12 -12
  135. package/app/pages/book/[...bookId].vue +56 -56
  136. package/app/pages/contributor/[contributorId].vue +144 -150
  137. package/app/pages/contributors.vue +95 -102
  138. package/app/pages/group/[...groupId].vue +58 -58
  139. package/app/pages/index.vue +113 -117
  140. package/app/pages/page/[...pageId].vue +60 -60
  141. package/app/pages/practice/[...practiceId].vue +12 -12
  142. package/app/pages/sponsors.vue +88 -92
  143. package/app/pages/summary/[...summaryId].vue +12 -12
  144. package/app/plugins/appSetup/client/htmlBranding.ts +6 -6
  145. package/app/plugins/appSetup/client/welcome.ts +37 -35
  146. package/app/plugins/appSetup/config.ts +6 -6
  147. package/app/plugins/appSetup/global.ts +3 -3
  148. package/app/plugins/appSetup/index.ts +27 -28
  149. package/app/plugins/prerender.server.ts +40 -40
  150. package/app/router.options.ts +5 -5
  151. package/app/scripts/theme.js +21 -24
  152. package/app/styles/main.css +128 -124
  153. package/bin/erudit.js +12 -0
  154. package/modules/erudit/env.ts +8 -0
  155. package/modules/erudit/globals/content.ts +4 -4
  156. package/modules/erudit/globals/contributor.ts +1 -1
  157. package/modules/erudit/globals/eruditConfig.ts +5 -10
  158. package/modules/erudit/globals/problem.ts +1 -1
  159. package/modules/erudit/globals/prose.ts +1 -1
  160. package/modules/erudit/globals/public.ts +18 -18
  161. package/modules/erudit/index.ts +50 -60
  162. package/modules/erudit/logger.ts +10 -10
  163. package/modules/erudit/setup/elements/appTemplate.ts +44 -45
  164. package/modules/erudit/setup/elements/globalTemplate.ts +82 -82
  165. package/modules/erudit/setup/elements/globalTypes.ts +259 -273
  166. package/modules/erudit/setup/elements/setup.ts +163 -167
  167. package/modules/erudit/setup/elements/shared.ts +10 -10
  168. package/modules/erudit/setup/elements/tagsTable.ts +28 -28
  169. package/modules/erudit/setup/fullRestart.ts +61 -71
  170. package/modules/erudit/setup/globals.ts +206 -196
  171. package/modules/erudit/setup/publicAssets.ts +43 -52
  172. package/modules/erudit/setup/runtimeConfig.ts +106 -58
  173. package/modules/erudit/watcher.ts +20 -27
  174. package/nuxt.config.ts +102 -84
  175. package/package.json +51 -55
  176. package/server/api/aside/major/frontNav/book/[...shortId].ts +10 -10
  177. package/server/api/aside/major/frontNav/global.ts +5 -5
  178. package/server/api/aside/major/pages.ts +6 -6
  179. package/server/api/contributor/list.ts +60 -61
  180. package/server/api/contributor/page/[contributorId].ts +68 -68
  181. package/server/api/indexPage.ts +81 -81
  182. package/server/api/language/functions.ts +11 -11
  183. package/server/api/language/phrase/[phraseKey].ts +35 -35
  184. package/server/api/main/content/[...contentTypePath].ts +149 -153
  185. package/server/api/news/batch/[batchIndex].ts +5 -5
  186. package/server/api/pageSponsors.ts +56 -58
  187. package/server/api/prerender/content.ts +79 -82
  188. package/server/api/prerender/default.ts +35 -35
  189. package/server/api/prerender/files.ts +10 -10
  190. package/server/api/prerender/frontNav.ts +13 -13
  191. package/server/api/prerender/language.ts +7 -7
  192. package/server/api/prerender/news.ts +8 -8
  193. package/server/api/prerender/quotes.ts +15 -15
  194. package/server/api/preview/contentPage/[...contentTypePath].ts +63 -63
  195. package/server/api/preview/contentUnique/[...contentTypePathUnique].ts +73 -81
  196. package/server/api/problemScript/[...problemScriptPath].ts +88 -92
  197. package/server/api/quote/data/[quoteId].ts +84 -87
  198. package/server/api/quote/ids.ts +3 -3
  199. package/server/erudit/build.ts +132 -137
  200. package/server/erudit/cameos/build.ts +161 -161
  201. package/server/erudit/config.ts +13 -13
  202. package/server/erudit/content/global/build.ts +300 -297
  203. package/server/erudit/content/global/singleton.ts +5 -5
  204. package/server/erudit/content/nav/build.ts +459 -463
  205. package/server/erudit/content/nav/front.ts +125 -127
  206. package/server/erudit/content/nav/repository/books.ts +37 -40
  207. package/server/erudit/content/nav/repository/get.ts +33 -33
  208. package/server/erudit/content/nav/repository/hasChildren.ts +5 -5
  209. package/server/erudit/content/nav/repository/hasNav.ts +3 -3
  210. package/server/erudit/content/nav/repository/hasParent.ts +5 -5
  211. package/server/erudit/content/nav/repository/id.ts +9 -9
  212. package/server/erudit/content/nav/repository/index.ts +9 -9
  213. package/server/erudit/content/nav/repository/order.ts +14 -14
  214. package/server/erudit/content/nav/repository/previousNext.ts +35 -35
  215. package/server/erudit/content/nav/repository/walk.ts +127 -127
  216. package/server/erudit/content/nav/setup.ts +13 -13
  217. package/server/erudit/content/nav/types.ts +24 -24
  218. package/server/erudit/content/repository/breadcrumbs.ts +24 -24
  219. package/server/erudit/content/repository/children.ts +47 -47
  220. package/server/erudit/content/repository/connections.ts +35 -35
  221. package/server/erudit/content/repository/contentLink.ts +16 -16
  222. package/server/erudit/content/repository/decoration.ts +23 -23
  223. package/server/erudit/content/repository/deps.ts +121 -84
  224. package/server/erudit/content/repository/description.ts +11 -11
  225. package/server/erudit/content/repository/elementSnippets.ts +105 -105
  226. package/server/erudit/content/repository/externals.ts +50 -50
  227. package/server/erudit/content/repository/flags.ts +33 -33
  228. package/server/erudit/content/repository/seo.ts +12 -12
  229. package/server/erudit/content/repository/stats.ts +97 -97
  230. package/server/erudit/content/repository/title.ts +27 -27
  231. package/server/erudit/content/repository/topicParts.ts +39 -39
  232. package/server/erudit/content/repository/unique.ts +76 -76
  233. package/server/erudit/content/resolve/book.ts +29 -32
  234. package/server/erudit/content/resolve/group.ts +34 -39
  235. package/server/erudit/content/resolve/index.ts +272 -290
  236. package/server/erudit/content/resolve/page.ts +80 -87
  237. package/server/erudit/content/resolve/topic.ts +220 -246
  238. package/server/erudit/content/resolve/utils/contentError.ts +10 -10
  239. package/server/erudit/content/resolve/utils/insertContentItem.ts +113 -122
  240. package/server/erudit/content/resolve/utils/insertContentResolved.ts +126 -132
  241. package/server/erudit/content/search.ts +146 -163
  242. package/server/erudit/contributors/build.ts +158 -166
  243. package/server/erudit/contributors/global.ts +3 -3
  244. package/server/erudit/contributors/repository/avatarUrl.ts +10 -10
  245. package/server/erudit/contributors/repository/contributions.ts +171 -178
  246. package/server/erudit/contributors/repository/count.ts +3 -3
  247. package/server/erudit/contributors/search.ts +34 -34
  248. package/server/erudit/db/repository/pushFile.ts +23 -26
  249. package/server/erudit/db/repository/pushProblemScript.ts +19 -19
  250. package/server/erudit/db/repository/pushProseLink.ts +40 -40
  251. package/server/erudit/db/schema/cameos.ts +7 -7
  252. package/server/erudit/db/schema/content.ts +18 -18
  253. package/server/erudit/db/schema/contentContributions.ts +15 -15
  254. package/server/erudit/db/schema/contentDeps.ts +21 -21
  255. package/server/erudit/db/schema/contentElementStats.ts +20 -20
  256. package/server/erudit/db/schema/contentProseLinks.ts +23 -23
  257. package/server/erudit/db/schema/contentSnippets.ts +15 -15
  258. package/server/erudit/db/schema/contentToc.ts +16 -16
  259. package/server/erudit/db/schema/contentUniques.ts +19 -25
  260. package/server/erudit/db/schema/contributors.ts +12 -12
  261. package/server/erudit/db/schema/files.ts +11 -11
  262. package/server/erudit/db/schema/groups.ts +6 -6
  263. package/server/erudit/db/schema/index.ts +17 -17
  264. package/server/erudit/db/schema/news.ts +7 -7
  265. package/server/erudit/db/schema/pages.ts +7 -7
  266. package/server/erudit/db/schema/problemScripts.ts +14 -14
  267. package/server/erudit/db/schema/sponsors.ts +9 -9
  268. package/server/erudit/db/schema/topics.ts +9 -9
  269. package/server/erudit/db/setup.ts +62 -62
  270. package/server/erudit/db/types.ts +10 -10
  271. package/server/erudit/global.ts +38 -33
  272. package/server/erudit/importer.ts +94 -97
  273. package/server/erudit/index.ts +96 -90
  274. package/server/erudit/language/list/en.ts +116 -116
  275. package/server/erudit/language/list/ru.ts +120 -120
  276. package/server/erudit/language/list.ts +6 -6
  277. package/server/erudit/language/setup.ts +36 -36
  278. package/server/erudit/language/types.ts +16 -16
  279. package/server/erudit/logger.ts +73 -77
  280. package/server/erudit/news/build.ts +112 -114
  281. package/server/erudit/news/repository/batch.ts +61 -61
  282. package/server/erudit/path.ts +19 -0
  283. package/server/erudit/prose/repository/finalize.ts +68 -68
  284. package/server/erudit/prose/repository/get.ts +54 -54
  285. package/server/erudit/prose/repository/resolve.ts +17 -17
  286. package/server/erudit/prose/storage/callout.ts +16 -14
  287. package/server/erudit/prose/storage/image.ts +22 -20
  288. package/server/erudit/prose/storage/link.ts +222 -226
  289. package/server/erudit/prose/storage/problemScript.ts +23 -21
  290. package/server/erudit/prose/storage/video.ts +16 -14
  291. package/server/erudit/prose/transform/bundleProblemScript.ts +6 -6
  292. package/server/erudit/prose/transform/extensions.ts +15 -15
  293. package/server/erudit/quote/repository/ids.ts +31 -31
  294. package/server/erudit/repository.ts +96 -96
  295. package/server/erudit/sponsors/build.ts +161 -165
  296. package/server/erudit/sponsors/repository/avatarUrl.ts +10 -10
  297. package/server/erudit/sponsors/repository/count.ts +4 -4
  298. package/server/erudit/staticFile.ts +28 -28
  299. package/server/plugins/augmentCss.ts +17 -17
  300. package/server/plugins/lang.ts +5 -7
  301. package/server/plugins/metaViewport.ts +15 -15
  302. package/server/plugins/theme.ts +13 -13
  303. package/server/routes/file/[...path].ts +18 -18
  304. package/server/routes/robots.txt.ts +9 -9
  305. package/server/routes/search.json.gz.ts +76 -75
  306. package/server/routes/sitemap.xml.ts +83 -81
  307. package/shared/search/encoders.ts +10 -10
  308. package/shared/types/asideMajorPages.ts +2 -2
  309. package/shared/types/breadcrumbs.ts +3 -3
  310. package/shared/types/contentChildren.ts +10 -10
  311. package/shared/types/contentConnections.ts +27 -27
  312. package/shared/types/contentStats.ts +6 -6
  313. package/shared/types/elementSnippet.ts +14 -14
  314. package/shared/types/frontContentNav.ts +17 -17
  315. package/shared/types/indexPage.ts +20 -20
  316. package/shared/types/language.ts +174 -174
  317. package/shared/types/mainContent.ts +40 -40
  318. package/shared/types/news.ts +13 -13
  319. package/shared/types/preview.ts +28 -28
  320. package/shared/types/runtimeConfig.ts +29 -48
  321. package/shared/types/search.ts +32 -32
  322. package/shared/utils/contentTypePath.ts +44 -44
  323. package/shared/utils/icons.ts +7 -7
  324. package/shared/utils/pages.ts +19 -20
  325. package/shared/utils/stringColor.ts +8 -8
  326. package/shared/utils/toStringEqual.ts +13 -13
  327. package/shared/utils/zip.ts +64 -64
  328. package/test/shared/utils/zip.test.ts +8 -8
  329. package/tsconfig.json +15 -15
  330. package/bin/erudit.mjs +0 -2
  331. package/modules/erudit/setup/aliases.ts +0 -17
  332. package/modules/erudit/setup/baseUrl.ts +0 -19
  333. package/modules/erudit/setup/nuxtConfig.ts +0 -62
  334. package/modules/erudit/setup/projectConfig.ts +0 -115
  335. package/shared/utils/slasher.ts +0 -64
  336. package/test/shared/utils/slasher.test.ts +0 -75
@@ -1,10 +1,10 @@
1
- import { LibSQLDatabase } from 'drizzle-orm/libsql';
2
- import type { Database } from 'better-sqlite3';
3
-
4
- import type * as schema from './schema';
5
-
6
- export type EruditServerDatabase = LibSQLDatabase<typeof schema> & {
7
- path: string;
8
- connection: Database;
9
- schema: typeof schema;
10
- };
1
+ import { LibSQLDatabase } from 'drizzle-orm/libsql';
2
+ import type { Database } from 'better-sqlite3';
3
+
4
+ import type * as schema from './schema';
5
+
6
+ export type EruditServerDatabase = LibSQLDatabase<typeof schema> & {
7
+ path: string;
8
+ connection: Database;
9
+ schema: typeof schema;
10
+ };
@@ -1,33 +1,38 @@
1
- import type { EruditServerBuildError, EruditServerChangedFiles } from './build';
2
- import type { EruditServerConfig } from './config';
3
- import type { EruditServerContentNav } from './content/nav/types';
4
- import type { EruditServerDatabase } from './db/types';
5
- import type { EruditServerImporter } from './importer';
6
- import type { EruditServerLanguage } from './language/types';
7
- import type { EruditServerLogger } from './logger';
8
- import type { EruditServerRepository } from './repository';
9
-
10
- export const ERUDIT: {
11
- buildError: EruditServerBuildError;
12
- buildPromise: Promise<void>;
13
- changedFiles: EruditServerChangedFiles;
14
- config: EruditServerConfig;
15
- log: EruditServerLogger;
16
- language: EruditServerLanguage;
17
- db: EruditServerDatabase;
18
- repository: EruditServerRepository;
19
- contentNav: EruditServerContentNav;
20
- import: EruditServerImporter;
21
- } = {} as any;
22
-
23
- Object.assign(globalThis, {
24
- defineContributor,
25
- defineSponsor,
26
- defineCameo,
27
- defineBook,
28
- defineTopic,
29
- definePage,
30
- defineGroup,
31
- defineProse,
32
- Include,
33
- });
1
+ import type { EruditMode } from '@erudit-js/core/mode';
2
+
3
+ import type { EruditServerBuildError, EruditServerChangedFiles } from './build';
4
+ import type { EruditServerConfig } from './config';
5
+ import type { EruditServerContentNav } from './content/nav/types';
6
+ import type { EruditServerDatabase } from './db/types';
7
+ import type { EruditServerImporter } from './importer';
8
+ import type { EruditServerLanguage } from './language/types';
9
+ import type { EruditServerLogger } from './logger';
10
+ import type { EruditServerPaths } from './path';
11
+ import type { EruditServerRepository } from './repository';
12
+
13
+ export const ERUDIT: {
14
+ buildError: EruditServerBuildError;
15
+ buildPromise: Promise<void>;
16
+ changedFiles: EruditServerChangedFiles;
17
+ config: EruditServerConfig;
18
+ log: EruditServerLogger;
19
+ language: EruditServerLanguage;
20
+ db: EruditServerDatabase;
21
+ repository: EruditServerRepository;
22
+ contentNav: EruditServerContentNav;
23
+ paths: EruditServerPaths;
24
+ mode: EruditMode;
25
+ import: EruditServerImporter;
26
+ } = {} as any;
27
+
28
+ Object.assign(globalThis, {
29
+ defineContributor,
30
+ defineSponsor,
31
+ defineCameo,
32
+ defineBook,
33
+ defineTopic,
34
+ definePage,
35
+ defineGroup,
36
+ defineProse,
37
+ Include,
38
+ });
@@ -1,97 +1,94 @@
1
- import { createJiti, type Jiti, type JitiOptions } from 'jiti';
2
- import slash from 'slash';
3
- import { insertDocumentId } from '@jsprose/core';
4
- import {
5
- pathToDocumentId,
6
- stringifyDocumentId,
7
- } from '@erudit-js/core/prose/documentId';
8
- import { insertProblemScriptId } from '@erudit-js/prose/elements/problem/problemScript';
9
-
10
- import {
11
- EXTENSIONS,
12
- STATIC_ASSET_EXTENSIONS,
13
- } from './prose/transform/extensions';
14
-
15
- export type EruditServerImporter = Jiti['import'];
16
-
17
- export let jiti: Jiti;
18
-
19
- export async function setupServerImporter() {
20
- const jitiId = ERUDIT.config.paths.project;
21
- const defaultJiti = createJiti(jitiId, createBaseJitiOptions());
22
- const getDefaultCode = defaultJiti.transform.bind(defaultJiti);
23
-
24
- jiti = createJiti(ERUDIT.config.paths.project, {
25
- ...createBaseJitiOptions(),
26
- extensions: EXTENSIONS.map((ext) => '.' + ext),
27
- transform: (opts) => {
28
- if (!opts.filename) {
29
- return { code: getDefaultCode(opts) };
30
- }
31
-
32
- const filename = slash(opts.filename).replace('file://', '');
33
-
34
- const staticAssetModule = tryStaticAssetModule(filename);
35
- if (staticAssetModule) {
36
- return staticAssetModule;
37
- }
38
-
39
- let code = getDefaultCode(opts);
40
-
41
- //
42
- // Insert IDs in `defineDocument(...)` calls
43
- //
44
-
45
- const documentId = pathToDocumentId(
46
- filename,
47
- ERUDIT.config.paths.project,
48
- );
49
-
50
- if (documentId) {
51
- code = insertDocumentId({
52
- code,
53
- documentId: stringifyDocumentId(documentId),
54
- aliasName: 'defineProse',
55
- });
56
- }
57
-
58
- //
59
- // Problem Scripts
60
- //
61
-
62
- code = insertProblemScriptId(filename, code);
63
-
64
- return { code };
65
- },
66
- });
67
-
68
- ERUDIT.import = jiti.import;
69
-
70
- ERUDIT.log.success('Importer setup complete!');
71
- }
72
-
73
- function createBaseJitiOptions(): JitiOptions {
74
- return {
75
- fsCache: false,
76
- moduleCache: false,
77
- alias: {
78
- '#project/': ERUDIT.config.paths.project + '/',
79
- '#content/': ERUDIT.config.paths.project + '/content/',
80
- },
81
- jsx: {
82
- runtime: 'automatic',
83
- importSource: '@jsprose/core',
84
- },
85
- };
86
- }
87
-
88
- function tryStaticAssetModule(filename: unknown) {
89
- if (
90
- typeof filename === 'string' &&
91
- STATIC_ASSET_EXTENSIONS.some((ext) => filename.endsWith('.' + ext))
92
- ) {
93
- return {
94
- code: `exports.default = "${filename}";`,
95
- };
96
- }
97
- }
1
+ import { createJiti, type Jiti, type JitiOptions } from 'jiti';
2
+ import { insertDocumentId } from '@jsprose/core';
3
+ import { sn } from 'unslash';
4
+ import {
5
+ pathToDocumentId,
6
+ stringifyDocumentId,
7
+ } from '@erudit-js/core/prose/documentId';
8
+ import { insertProblemScriptId } from '@erudit-js/prose/elements/problem/problemScript';
9
+
10
+ import {
11
+ EXTENSIONS,
12
+ STATIC_ASSET_EXTENSIONS,
13
+ } from './prose/transform/extensions';
14
+
15
+ export type EruditServerImporter = Jiti['import'];
16
+
17
+ export let jiti: Jiti;
18
+
19
+ export async function setupServerImporter() {
20
+ const jitiId = ERUDIT.paths.project();
21
+ const defaultJiti = createJiti(jitiId, createBaseJitiOptions());
22
+ const getDefaultCode = defaultJiti.transform.bind(defaultJiti);
23
+
24
+ jiti = createJiti(jitiId, {
25
+ ...createBaseJitiOptions(),
26
+ extensions: EXTENSIONS.map((ext) => '.' + ext),
27
+ transform: (opts) => {
28
+ if (!opts.filename) {
29
+ return { code: getDefaultCode(opts) };
30
+ }
31
+
32
+ const filename = sn(opts.filename).replace('file://', '');
33
+
34
+ const staticAssetModule = tryStaticAssetModule(filename);
35
+ if (staticAssetModule) {
36
+ return staticAssetModule;
37
+ }
38
+
39
+ let code = getDefaultCode(opts);
40
+
41
+ //
42
+ // Insert IDs in `defineDocument(...)` calls
43
+ //
44
+
45
+ const documentId = pathToDocumentId(filename, ERUDIT.paths.project());
46
+
47
+ if (documentId) {
48
+ code = insertDocumentId({
49
+ code,
50
+ documentId: stringifyDocumentId(documentId),
51
+ aliasName: 'defineProse',
52
+ });
53
+ }
54
+
55
+ //
56
+ // Problem Scripts
57
+ //
58
+
59
+ code = insertProblemScriptId(filename, code);
60
+
61
+ return { code };
62
+ },
63
+ });
64
+
65
+ ERUDIT.import = jiti.import;
66
+
67
+ ERUDIT.log.success('Importer setup complete!');
68
+ }
69
+
70
+ function createBaseJitiOptions(): JitiOptions {
71
+ return {
72
+ fsCache: false,
73
+ moduleCache: false,
74
+ alias: {
75
+ '#project/': ERUDIT.paths.project() + '/',
76
+ '#content/': ERUDIT.paths.project('content') + '/',
77
+ },
78
+ jsx: {
79
+ runtime: 'automatic',
80
+ importSource: '@jsprose/core',
81
+ },
82
+ };
83
+ }
84
+
85
+ function tryStaticAssetModule(filename: unknown) {
86
+ if (
87
+ typeof filename === 'string' &&
88
+ STATIC_ASSET_EXTENSIONS.some((ext) => filename.endsWith('.' + ext))
89
+ ) {
90
+ return {
91
+ code: `exports.default = "${filename}";`,
92
+ };
93
+ }
94
+ }
@@ -1,90 +1,96 @@
1
- import chalk from 'chalk';
2
-
3
- import { setupServerLogger } from './logger';
4
- import { setupServerRuntimeConfig } from './config';
5
- import { setupServerLanguage } from './language/setup';
6
- import { setupServerDatabase } from './db/setup';
7
- import { setupServerImporter } from './importer';
8
- import { setupServerRepository } from './repository';
9
- import { setupServerContentNav } from './content/nav/setup';
10
- import { buildServerErudit, tryServerWatchProject } from './build';
11
-
12
- let serverSetupPromise: Promise<void>;
13
-
14
- export default defineNitroPlugin((nitro) => {
15
- serverSetupPromise = setupServer();
16
-
17
- nitro.hooks.hook('request', async (event) => {
18
- await serverSetupPromise;
19
- await ERUDIT.buildPromise;
20
-
21
- if (ERUDIT.buildError) {
22
- const accept = getHeader(event, 'accept') || '';
23
- if (accept.includes('text/html')) {
24
- function escapeHtml(str: string) {
25
- return str
26
- .replace(/&/g, '&amp;')
27
- .replace(/</g, '&lt;')
28
- .replace(/>/g, '&gt;')
29
- .replace(/"/g, '&quot;')
30
- .replace(/'/g, '&#39;');
31
- }
32
-
33
- event.node.res.end(`
34
- <!DOCTYPE html>
35
- <html>
36
- <head>
37
- <meta charset="UTF-8">
38
- <title>Erudit Build Error</title>
39
- <style>
40
- :root {
41
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen;
42
- }
43
- </style>
44
- </head>
45
- <body>
46
- <h1>Erudit Build Error</h1>
47
- <pre style="padding: 1em; border-radius: 4px; overflow-x: auto;">
48
- ${escapeHtml(ERUDIT.buildError.stack || '')}
49
- </pre>
50
- </body>
51
- </html>
52
- `);
53
- }
54
- }
55
- });
56
-
57
- nitro.hooks.hook('close', async () => {});
58
- });
59
-
60
- async function setupServer() {
61
- try {
62
- const { registerProseGlobals } = await import('#erudit/prose/global');
63
- registerProseGlobals();
64
-
65
- await setupServerRuntimeConfig();
66
- await setupServerLogger();
67
- await setupServerImporter();
68
- await setupServerLanguage();
69
- await setupServerDatabase();
70
- await setupServerRepository();
71
- await setupServerContentNav();
72
- ERUDIT.log.success(chalk.green('Setup Complete!'));
73
-
74
- await tryServerWatchProject();
75
- await buildServerErudit();
76
- } catch (buildError) {
77
- if (buildError instanceof Error) {
78
- ERUDIT.buildError = buildError;
79
- } else {
80
- ERUDIT.buildError = createError({
81
- statusCode: 500,
82
- statusMessage: 'Unknown Erudit Server Error',
83
- message:
84
- typeof buildError === 'string'
85
- ? buildError
86
- : 'An unknown error occurred!',
87
- });
88
- }
89
- }
90
- }
1
+ import chalk from 'chalk';
2
+ import type { EruditMode } from '@erudit-js/core/mode';
3
+
4
+ import { setupServerLogger } from './logger';
5
+ import { setupServerRuntimeConfig } from './config';
6
+ import { setupServerLanguage } from './language/setup';
7
+ import { setupServerDatabase } from './db/setup';
8
+ import { setupServerImporter } from './importer';
9
+ import { setupServerRepository } from './repository';
10
+ import { setupServerContentNav } from './content/nav/setup';
11
+ import { buildServerErudit, tryServerWatchProject } from './build';
12
+ import { setupServerPaths } from './path';
13
+
14
+ let serverSetupPromise: Promise<void>;
15
+
16
+ export default defineNitroPlugin((nitro) => {
17
+ serverSetupPromise = setupServer();
18
+
19
+ nitro.hooks.hook('request', async (event) => {
20
+ await serverSetupPromise;
21
+ await ERUDIT.buildPromise;
22
+
23
+ if (ERUDIT.buildError) {
24
+ const accept = getHeader(event, 'accept') || '';
25
+ if (accept.includes('text/html')) {
26
+ function escapeHtml(str: string) {
27
+ return str
28
+ .replace(/&/g, '&amp;')
29
+ .replace(/</g, '&lt;')
30
+ .replace(/>/g, '&gt;')
31
+ .replace(/"/g, '&quot;')
32
+ .replace(/'/g, '&#39;');
33
+ }
34
+
35
+ event.node.res.end(`
36
+ <!DOCTYPE html>
37
+ <html>
38
+ <head>
39
+ <meta charset="UTF-8">
40
+ <title>Erudit Build Error</title>
41
+ <style>
42
+ :root {
43
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen;
44
+ }
45
+ </style>
46
+ </head>
47
+ <body>
48
+ <h1>Erudit Build Error</h1>
49
+ <pre style="padding: 1em; border-radius: 4px; overflow-x: auto;">
50
+ ${escapeHtml(ERUDIT.buildError.stack || '')}
51
+ </pre>
52
+ </body>
53
+ </html>
54
+ `);
55
+ }
56
+ }
57
+ });
58
+
59
+ nitro.hooks.hook('close', async () => {});
60
+ });
61
+
62
+ async function setupServer() {
63
+ try {
64
+ const { registerProseGlobals } = await import('#erudit/prose/global');
65
+ registerProseGlobals();
66
+
67
+ const runtimeConfig = useRuntimeConfig();
68
+
69
+ ERUDIT.mode = runtimeConfig.public.eruditMode as EruditMode;
70
+ await setupServerPaths();
71
+ await setupServerRuntimeConfig();
72
+ await setupServerLogger();
73
+ await setupServerImporter();
74
+ await setupServerLanguage();
75
+ await setupServerDatabase();
76
+ await setupServerRepository();
77
+ await setupServerContentNav();
78
+ ERUDIT.log.success(chalk.green('Setup Complete!'));
79
+
80
+ await tryServerWatchProject();
81
+ await buildServerErudit();
82
+ } catch (buildError) {
83
+ if (buildError instanceof Error) {
84
+ ERUDIT.buildError = buildError;
85
+ } else {
86
+ ERUDIT.buildError = createError({
87
+ statusCode: 500,
88
+ statusMessage: 'Unknown Erudit Server Error',
89
+ message:
90
+ typeof buildError === 'string'
91
+ ? buildError
92
+ : 'An unknown error occurred!',
93
+ });
94
+ }
95
+ }
96
+ }