erudit 3.0.0-dev.15 → 3.0.0-dev.16

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 (243) hide show
  1. package/app/app.vue +191 -195
  2. package/app/components/Loading.vue +23 -23
  3. package/app/components/SiteAside.vue +393 -393
  4. package/app/components/SiteMain.vue +32 -32
  5. package/app/components/ads/Ads.vue +35 -0
  6. package/app/components/ads/AdsBannerAside.vue +61 -0
  7. package/app/components/ads/AdsBannerBottom.vue +22 -0
  8. package/app/components/ads/AdsProviderCustom.vue +35 -0
  9. package/app/components/ads/AdsProviderYandex.vue +54 -0
  10. package/app/components/ads/AdsReplacer.vue +73 -0
  11. package/app/components/aside/AsideListItem.vue +74 -74
  12. package/app/components/aside/AsideMajor.vue +56 -56
  13. package/app/components/aside/AsideMinor.vue +73 -71
  14. package/app/components/aside/major/PaneContentScroll.vue +23 -23
  15. package/app/components/aside/major/PaneSwitch.vue +54 -54
  16. package/app/components/aside/major/PaneSwitchButton.vue +63 -63
  17. package/app/components/aside/major/SiteInfo.vue +85 -85
  18. package/app/components/aside/major/panes/Language.vue +79 -79
  19. package/app/components/aside/major/panes/Pages.vue +34 -34
  20. package/app/components/aside/major/panes/Search.vue +11 -11
  21. package/app/components/aside/major/panes/nav/Nav.vue +92 -92
  22. package/app/components/aside/major/panes/nav/NavBook.vue +95 -95
  23. package/app/components/aside/major/panes/nav/NavBookLoading.vue +24 -24
  24. package/app/components/aside/major/panes/nav/NavGlobal.vue +16 -16
  25. package/app/components/aside/major/panes/nav/fnav/FNav.vue +105 -105
  26. package/app/components/aside/major/panes/nav/fnav/FNavBook.vue +32 -32
  27. package/app/components/aside/major/panes/nav/fnav/FNavFlags.vue +40 -40
  28. package/app/components/aside/major/panes/nav/fnav/FNavFolder.vue +60 -60
  29. package/app/components/aside/major/panes/nav/fnav/FNavItem.vue +34 -34
  30. package/app/components/aside/major/panes/nav/fnav/FNavSeparator.vue +80 -80
  31. package/app/components/aside/major/panes/nav/fnav/FNavTopic.vue +24 -24
  32. package/app/components/aside/major/panes/other/ItemContent.vue +29 -29
  33. package/app/components/aside/major/panes/other/ItemGenerator.vue +13 -13
  34. package/app/components/aside/major/panes/other/ItemTheme.vue +54 -54
  35. package/app/components/aside/major/panes/other/Other.vue +16 -16
  36. package/app/components/aside/minor/AsideMinorContributor.vue +5 -5
  37. package/app/components/aside/minor/AsideMinorNews.vue +11 -11
  38. package/app/components/aside/minor/AsideMinorPane.vue +15 -15
  39. package/app/components/aside/minor/AsideMinorTopLink.vue +67 -67
  40. package/app/components/aside/minor/Contribute.vue +145 -145
  41. package/app/components/aside/minor/content/AsideMinorContent.vue +92 -92
  42. package/app/components/aside/minor/topic/AsideMinorTopic.vue +32 -32
  43. package/app/components/aside/minor/topic/TopicContributors.vue +177 -177
  44. package/app/components/aside/minor/topic/TopicNav.vue +49 -49
  45. package/app/components/aside/minor/topic/TopicToc.vue +214 -214
  46. package/app/components/aside/minor/topic/TopicTocItem.vue +32 -32
  47. package/app/components/aside/utils/AsideOverlayPane.vue +40 -40
  48. package/app/components/bitran/BitranContent.vue +91 -91
  49. package/app/components/bitran/RenderWrapper.vue +10 -10
  50. package/app/components/contributor/ContributorAvatar.vue +45 -45
  51. package/app/components/contributor/ContributorListItem.vue +35 -35
  52. package/app/components/main/topic/MainTopic.vue +88 -78
  53. package/app/components/main/topic/TopicPartSwitch.vue +118 -118
  54. package/app/components/main/utils/Breadcrumb.vue +74 -70
  55. package/app/components/main/utils/ContentDecoration.vue +29 -29
  56. package/app/components/main/utils/ContentDescription.vue +19 -19
  57. package/app/components/main/utils/ContentPopover.vue +188 -188
  58. package/app/components/main/utils/ContentPopovers.vue +111 -111
  59. package/app/components/main/utils/ContentReferences.vue +70 -70
  60. package/app/components/main/utils/ContentSection.vue +45 -45
  61. package/app/components/main/utils/ContentTitle.vue +63 -63
  62. package/app/components/main/utils/reference/ReferenceGroup.vue +38 -38
  63. package/app/components/main/utils/reference/ReferenceItem.vue +70 -70
  64. package/app/components/main/utils/reference/ReferenceSource.vue +120 -118
  65. package/app/components/preview/Preview.vue +186 -186
  66. package/app/components/preview/PreviewDisplay.vue +139 -139
  67. package/app/components/preview/PreviewFooterAction.vue +73 -73
  68. package/app/components/preview/PreviewLoading.vue +14 -14
  69. package/app/components/preview/PreviewScreen.vue +141 -141
  70. package/app/components/preview/display/Alert.vue +50 -50
  71. package/app/components/preview/display/Custom.vue +18 -18
  72. package/app/components/preview/display/GenericLink.vue +48 -48
  73. package/app/components/preview/display/PageLink.vue +22 -20
  74. package/app/components/preview/display/Unique.vue +55 -55
  75. package/app/components/transition/Fade.vue +19 -19
  76. package/app/components/tree/TreeContainer.vue +11 -11
  77. package/app/components/tree/TreeItem.vue +89 -89
  78. package/app/composables/bitran.ts +108 -108
  79. package/app/composables/bitranContent.ts +92 -92
  80. package/app/composables/bitranLocation.ts +7 -7
  81. package/app/composables/contentData.ts +38 -38
  82. package/app/composables/contentPage.ts +158 -158
  83. package/app/composables/contentRoute.ts +45 -45
  84. package/app/composables/darkMagic.ts +24 -24
  85. package/app/composables/externalApi.ts +69 -63
  86. package/app/composables/favicon.ts +8 -8
  87. package/app/composables/formatText.ts +99 -99
  88. package/app/composables/majorPane.ts +60 -60
  89. package/app/composables/phrases.ts +65 -65
  90. package/app/composables/theme.ts +29 -29
  91. package/app/composables/url.ts +33 -33
  92. package/app/pages/_test/preview.vue +110 -110
  93. package/app/pages/article/[...articleId].vue +3 -3
  94. package/app/pages/book/[...bookId].vue +47 -47
  95. package/app/pages/group/[...groupId].vue +66 -64
  96. package/app/pages/index.vue +32 -32
  97. package/app/pages/members.vue +6 -6
  98. package/app/pages/practice/[...practice].vue +3 -3
  99. package/app/pages/summary/[...summaryId].vue +3 -3
  100. package/app/plugins/analytics.ts +87 -0
  101. package/app/plugins/prerender.server.ts +22 -22
  102. package/app/scripts/_immediate.js +9 -9
  103. package/app/scripts/aside/index.ts +59 -59
  104. package/app/scripts/aside/major/nav.ts +26 -26
  105. package/app/scripts/aside/minor/state.ts +37 -37
  106. package/app/scripts/aside/minor/topic.ts +3 -3
  107. package/app/scripts/flag.ts +28 -28
  108. package/app/scripts/og.ts +27 -27
  109. package/app/scripts/preview/build.ts +76 -76
  110. package/app/scripts/preview/data/alert.ts +19 -19
  111. package/app/scripts/preview/data/custom.ts +8 -8
  112. package/app/scripts/preview/data/genericLink.ts +24 -24
  113. package/app/scripts/preview/data/pageLink.ts +23 -23
  114. package/app/scripts/preview/data/unique.ts +72 -72
  115. package/app/scripts/preview/data.ts +24 -24
  116. package/app/scripts/preview/display.ts +37 -37
  117. package/app/scripts/preview/footer.ts +9 -9
  118. package/app/scripts/preview/request.ts +51 -51
  119. package/app/scripts/preview/state.ts +63 -63
  120. package/app/styles/_immediate.css +7 -7
  121. package/app/styles/_util.scss +43 -43
  122. package/app/styles/_utils.scss +44 -44
  123. package/app/styles/app.scss +91 -91
  124. package/app/styles/def/_bp.scss +27 -27
  125. package/app/styles/def/_size.scss +7 -7
  126. package/app/styles/def/_z.scss +5 -5
  127. package/app/styles/normalize.scss +49 -49
  128. package/app/styles/partials/_darkMagic.scss +5 -5
  129. package/app/styles/partials/_fnav.scss +15 -15
  130. package/app/styles/partials/_preview.scss +5 -5
  131. package/bin/erudit.mjs +2 -2
  132. package/const.ts +4 -4
  133. package/globalPath.ts +21 -21
  134. package/globals/bitran.ts +1 -1
  135. package/globals/content.ts +27 -27
  136. package/globals/contributor.ts +5 -5
  137. package/globals/erudit.ts +5 -5
  138. package/globals/register.ts +18 -18
  139. package/languages/en.ts +94 -94
  140. package/languages/ru.ts +98 -98
  141. package/module/bitran.ts +66 -66
  142. package/module/config.ts +35 -35
  143. package/module/imports.ts +67 -67
  144. package/module/index.ts +47 -49
  145. package/module/logger.ts +10 -10
  146. package/module/paths.ts +22 -22
  147. package/module/restart.ts +61 -61
  148. package/nuxt.config.ts +131 -134
  149. package/package.json +8 -7
  150. package/server/api/aside/major/nav/bookIds.ts +5 -5
  151. package/server/api/aside/major/nav/bookNav/[...bookId].ts +20 -20
  152. package/server/api/aside/major/nav/global.ts +7 -7
  153. package/server/api/aside/minor/news.ts +7 -7
  154. package/server/api/aside/minor/path.ts +82 -82
  155. package/server/api/bitran/content/[...location].ts +10 -10
  156. package/server/api/bitran/toc/[...location].ts +9 -9
  157. package/server/api/content/data.ts +75 -75
  158. package/server/api/contributor/count.ts +6 -6
  159. package/server/api/fake/content.ts +11 -11
  160. package/server/api/fake/shared/languages.ts +12 -12
  161. package/server/api/language/functions.ts +12 -12
  162. package/server/api/language/phrase/[phraseId].ts +19 -19
  163. package/server/api/language/phraseIds.ts +8 -8
  164. package/server/api/prerender.ts +120 -120
  165. package/server/api/preview/page/[...parts].ts +78 -78
  166. package/server/api/preview/unique/[...location].ts +61 -61
  167. package/server/api/problem/generator/[...path].ts +26 -0
  168. package/server/plugin/bitran/content.ts +190 -190
  169. package/server/plugin/bitran/elements/include.ts +229 -229
  170. package/server/plugin/bitran/location.ts +39 -39
  171. package/server/plugin/bitran/toc.ts +94 -94
  172. package/server/plugin/bitran/transpiler.ts +18 -18
  173. package/server/plugin/build/close.ts +12 -12
  174. package/server/plugin/build/jobs/content/builderArgs.ts +8 -8
  175. package/server/plugin/build/jobs/content/generic.ts +191 -191
  176. package/server/plugin/build/jobs/content/parse.ts +113 -113
  177. package/server/plugin/build/jobs/content/path.ts +6 -6
  178. package/server/plugin/build/jobs/content/type/book.ts +9 -9
  179. package/server/plugin/build/jobs/content/type/group.ts +37 -37
  180. package/server/plugin/build/jobs/content/type/topic.ts +36 -36
  181. package/server/plugin/build/jobs/contributors.ts +66 -66
  182. package/server/plugin/build/jobs/language.ts +36 -36
  183. package/server/plugin/build/jobs/nav.ts +345 -265
  184. package/server/plugin/build/process.ts +32 -32
  185. package/server/plugin/build/rebuild.ts +66 -66
  186. package/server/plugin/build/setup.ts +19 -19
  187. package/server/plugin/content/context.ts +119 -119
  188. package/server/plugin/db/entities/Book.ts +7 -7
  189. package/server/plugin/db/entities/Content.ts +45 -45
  190. package/server/plugin/db/entities/Contribution.ts +10 -10
  191. package/server/plugin/db/entities/Contributor.ts +16 -16
  192. package/server/plugin/db/entities/File.ts +10 -10
  193. package/server/plugin/db/entities/Group.ts +14 -14
  194. package/server/plugin/db/entities/Hash.ts +15 -15
  195. package/server/plugin/db/entities/Topic.ts +20 -20
  196. package/server/plugin/db/entities/Unique.ts +21 -21
  197. package/server/plugin/db/reset.ts +12 -12
  198. package/server/plugin/db/setup.ts +49 -49
  199. package/server/plugin/global.ts +16 -16
  200. package/server/plugin/importer.ts +16 -16
  201. package/server/plugin/index.ts +9 -9
  202. package/server/plugin/logger.ts +23 -23
  203. package/server/plugin/nav/node.ts +27 -27
  204. package/server/plugin/nav/utils.ts +175 -175
  205. package/server/plugin/repository/book.ts +21 -21
  206. package/server/plugin/repository/content.ts +240 -240
  207. package/server/plugin/repository/contentId.ts +40 -40
  208. package/server/plugin/repository/contributor.ts +8 -8
  209. package/server/plugin/repository/file.ts +10 -10
  210. package/server/plugin/repository/frontNav.ts +145 -145
  211. package/server/plugin/repository/topic.ts +35 -35
  212. package/server/tsconfig.json +9 -9
  213. package/shared/aside/minor.ts +51 -51
  214. package/shared/asset.ts +22 -22
  215. package/shared/bitran/contentId.ts +56 -56
  216. package/shared/bitran/stringContent.ts +6 -6
  217. package/shared/bitran/toc.ts +8 -8
  218. package/shared/content/bookId.ts +12 -12
  219. package/shared/content/context.ts +9 -9
  220. package/shared/content/data/base.ts +32 -32
  221. package/shared/content/data/index.ts +5 -5
  222. package/shared/content/data/type/book.ts +5 -5
  223. package/shared/content/data/type/group.ts +6 -6
  224. package/shared/content/data/type/topic.ts +11 -11
  225. package/shared/content/previousNext.ts +9 -9
  226. package/shared/contributor.ts +5 -5
  227. package/shared/frontNav.ts +41 -41
  228. package/shared/icons.ts +38 -38
  229. package/shared/image.ts +5 -5
  230. package/shared/link.ts +28 -28
  231. package/shared/popover.ts +8 -8
  232. package/shared/types/language.ts +74 -74
  233. package/shared/utils/objectsEqual.ts +4 -4
  234. package/shared/utils/stringColor.ts +9 -9
  235. package/test/contentId.test.ts +91 -91
  236. package/tsconfig.json +8 -8
  237. package/utils/contentPath.ts +67 -67
  238. package/utils/slash.ts +11 -11
  239. package/utils/stress.ts +9 -9
  240. package/app/components/ads/BannerTemplate.vue +0 -51
  241. package/app/components/ads/BottomBanner.vue +0 -45
  242. package/app/components/ads/LeftBanner.vue +0 -50
  243. package/module/problemGenerators.ts +0 -46
@@ -1,14 +1,14 @@
1
- import { Column, Entity, PrimaryColumn } from 'typeorm';
2
- import type { GroupType } from '@erudit-js/cog/schema';
3
-
4
- @Entity('group')
5
- export class DbGroup {
6
- @PrimaryColumn('varchar')
7
- contentId!: string;
8
-
9
- @Column('varchar')
10
- type!: GroupType;
11
-
12
- @Column('text', { nullable: true })
13
- content?: string;
14
- }
1
+ import { Column, Entity, PrimaryColumn } from 'typeorm';
2
+ import type { GroupType } from '@erudit-js/cog/schema';
3
+
4
+ @Entity('group')
5
+ export class DbGroup {
6
+ @PrimaryColumn('varchar')
7
+ contentId!: string;
8
+
9
+ @Column('varchar')
10
+ type!: GroupType;
11
+
12
+ @Column('text', { nullable: true })
13
+ content?: string;
14
+ }
@@ -1,15 +1,15 @@
1
- import { Column, Entity, PrimaryColumn } from 'typeorm';
2
-
3
- /**
4
- * TODO:
5
- * Create hash of Bitran content of content items and use it to distinguish between content item version.
6
- */
7
-
8
- @Entity('hash')
9
- export class DbHash {
10
- @PrimaryColumn('varchar')
11
- id!: string;
12
-
13
- @Column('varchar')
14
- hash!: string;
15
- }
1
+ import { Column, Entity, PrimaryColumn } from 'typeorm';
2
+
3
+ /**
4
+ * TODO:
5
+ * Create hash of Bitran content of content items and use it to distinguish between content item version.
6
+ */
7
+
8
+ @Entity('hash')
9
+ export class DbHash {
10
+ @PrimaryColumn('varchar')
11
+ id!: string;
12
+
13
+ @Column('varchar')
14
+ hash!: string;
15
+ }
@@ -1,20 +1,20 @@
1
- import { Column, Entity, PrimaryColumn } from 'typeorm';
2
- import type { TopicPart } from '@erudit-js/cog/schema';
3
-
4
- @Entity('topic')
5
- export class DbTopic {
6
- @PrimaryColumn('varchar')
7
- contentId!: string;
8
-
9
- @Column('simple-array')
10
- parts!: TopicPart[];
11
-
12
- @Column('text', { nullable: true })
13
- article?: string;
14
-
15
- @Column('text', { nullable: true })
16
- summary?: string;
17
-
18
- @Column('text', { nullable: true })
19
- practice?: string;
20
- }
1
+ import { Column, Entity, PrimaryColumn } from 'typeorm';
2
+ import type { TopicPart } from '@erudit-js/cog/schema';
3
+
4
+ @Entity('topic')
5
+ export class DbTopic {
6
+ @PrimaryColumn('varchar')
7
+ contentId!: string;
8
+
9
+ @Column('simple-array')
10
+ parts!: TopicPart[];
11
+
12
+ @Column('text', { nullable: true })
13
+ article?: string;
14
+
15
+ @Column('text', { nullable: true })
16
+ summary?: string;
17
+
18
+ @Column('text', { nullable: true })
19
+ practice?: string;
20
+ }
@@ -1,21 +1,21 @@
1
- import { Column, Entity, PrimaryColumn } from 'typeorm';
2
-
3
- import type { BitranContext } from '@erudit/shared/bitran/context';
4
-
5
- @Entity('unique')
6
- export class DbUnique {
7
- @PrimaryColumn('varchar')
8
- location!: string;
9
-
10
- @Column('varchar')
11
- productName!: string;
12
-
13
- @Column('text')
14
- content!: string;
15
-
16
- @Column('simple-json')
17
- context!: BitranContext;
18
-
19
- @Column('varchar', { nullable: true })
20
- title?: string;
21
- }
1
+ import { Column, Entity, PrimaryColumn } from 'typeorm';
2
+
3
+ import type { BitranContext } from '@erudit/shared/bitran/context';
4
+
5
+ @Entity('unique')
6
+ export class DbUnique {
7
+ @PrimaryColumn('varchar')
8
+ location!: string;
9
+
10
+ @Column('varchar')
11
+ productName!: string;
12
+
13
+ @Column('text')
14
+ content!: string;
15
+
16
+ @Column('simple-json')
17
+ context!: BitranContext;
18
+
19
+ @Column('varchar', { nullable: true })
20
+ title?: string;
21
+ }
@@ -1,12 +1,12 @@
1
- import { ERUDIT_SERVER } from '@server/global';
2
-
3
- export async function resetDatabase() {
4
- const db = ERUDIT_SERVER.DB;
5
-
6
- if (!db) {
7
- return;
8
- }
9
-
10
- await db.dropDatabase();
11
- await db.synchronize(true);
12
- }
1
+ import { ERUDIT_SERVER } from '@server/global';
2
+
3
+ export async function resetDatabase() {
4
+ const db = ERUDIT_SERVER.DB;
5
+
6
+ if (!db) {
7
+ return;
8
+ }
9
+
10
+ await db.dropDatabase();
11
+ await db.synchronize(true);
12
+ }
@@ -1,49 +1,49 @@
1
- import { rmSync } from 'node:fs';
2
- import { DataSource } from 'typeorm';
3
-
4
- import { PROJECT_DIR } from '#erudit/globalPaths';
5
- import { ERUDIT_SERVER } from '@server/global';
6
- import { logger } from '@server/logger';
7
-
8
- // Database Entities
9
- import { DbContributor } from './entities/Contributor';
10
- import { DbBook } from './entities/Book';
11
- import { DbContent } from './entities/Content';
12
- import { DbContribution } from './entities/Contribution';
13
- import { DbGroup } from './entities/Group';
14
- import { DbHash } from './entities/Hash';
15
- import { DbTopic } from './entities/Topic';
16
- import { DbUnique } from './entities/Unique';
17
- import { DbFile } from './entities/File';
18
-
19
- export async function setupDatabase() {
20
- rmSync(PROJECT_DIR + '/.erudit/data.sqlite', { force: true });
21
-
22
- ERUDIT_SERVER.DB = new DataSource({
23
- type: 'sqlite',
24
- enableWAL: true,
25
- database: PROJECT_DIR + '/.erudit/data.sqlite',
26
- synchronize: true,
27
- dropSchema: true,
28
- entities: [
29
- DbBook,
30
- DbContent,
31
- DbContribution,
32
- DbContributor,
33
- DbGroup,
34
- DbHash,
35
- DbTopic,
36
- DbUnique,
37
- DbFile,
38
- ],
39
- });
40
-
41
- try {
42
- // Wait before creating connection in case fast server restarts
43
- // Otherwise, it may crash the whole Node process
44
- await new Promise((resolve) => setTimeout(resolve, 500));
45
- await ERUDIT_SERVER.DB.initialize();
46
- } catch (error) {
47
- logger.error('Error creating database connection:', error);
48
- }
49
- }
1
+ import { rmSync } from 'node:fs';
2
+ import { DataSource } from 'typeorm';
3
+
4
+ import { PROJECT_DIR } from '#erudit/globalPaths';
5
+ import { ERUDIT_SERVER } from '@server/global';
6
+ import { logger } from '@server/logger';
7
+
8
+ // Database Entities
9
+ import { DbContributor } from './entities/Contributor';
10
+ import { DbBook } from './entities/Book';
11
+ import { DbContent } from './entities/Content';
12
+ import { DbContribution } from './entities/Contribution';
13
+ import { DbGroup } from './entities/Group';
14
+ import { DbHash } from './entities/Hash';
15
+ import { DbTopic } from './entities/Topic';
16
+ import { DbUnique } from './entities/Unique';
17
+ import { DbFile } from './entities/File';
18
+
19
+ export async function setupDatabase() {
20
+ rmSync(PROJECT_DIR + '/.erudit/data.sqlite', { force: true });
21
+
22
+ ERUDIT_SERVER.DB = new DataSource({
23
+ type: 'sqlite',
24
+ enableWAL: true,
25
+ database: PROJECT_DIR + '/.erudit/data.sqlite',
26
+ synchronize: true,
27
+ dropSchema: true,
28
+ entities: [
29
+ DbBook,
30
+ DbContent,
31
+ DbContribution,
32
+ DbContributor,
33
+ DbGroup,
34
+ DbHash,
35
+ DbTopic,
36
+ DbUnique,
37
+ DbFile,
38
+ ],
39
+ });
40
+
41
+ try {
42
+ // Wait before creating connection in case fast server restarts
43
+ // Otherwise, it may crash the whole Node process
44
+ await new Promise((resolve) => setTimeout(resolve, 500));
45
+ await ERUDIT_SERVER.DB.initialize();
46
+ } catch (error) {
47
+ logger.error('Error creating database connection:', error);
48
+ }
49
+ }
@@ -1,16 +1,16 @@
1
- import type { DataSource } from 'typeorm';
2
- import type { EruditConfig } from '@erudit-js/cog/schema';
3
-
4
- import type { EruditPhrases } from '@shared/types/language';
5
- import type { NavNode, RootNavNode } from '@server/nav/node';
6
-
7
- interface EruditServer {
8
- BUILD_PROMISE: Promise<void>;
9
- CONFIG: Partial<EruditConfig>;
10
- LANGUAGE: { phrases: EruditPhrases; functions: Record<string, Function> };
11
- DB: DataSource;
12
- NAV?: RootNavNode;
13
- NAV_BOOKS?: Record<string, NavNode>;
14
- }
15
-
16
- export const ERUDIT_SERVER: EruditServer = {} as any;
1
+ import type { DataSource } from 'typeorm';
2
+ import type { EruditConfig } from '@erudit-js/cog/schema';
3
+
4
+ import type { EruditPhrases } from '@shared/types/language';
5
+ import type { NavNode, RootNavNode } from '@server/nav/node';
6
+
7
+ interface EruditServer {
8
+ BUILD_PROMISE: Promise<void>;
9
+ CONFIG: Partial<EruditConfig>;
10
+ LANGUAGE: { phrases: EruditPhrases; functions: Record<string, Function> };
11
+ DB: DataSource;
12
+ NAV?: RootNavNode;
13
+ NAV_BOOKS?: Record<string, NavNode>;
14
+ }
15
+
16
+ export const ERUDIT_SERVER: EruditServer = {} as any;
@@ -1,16 +1,16 @@
1
- import { createJiti } from 'jiti';
2
- import { ERUDIT_DIR, PROJECT_DIR } from '#erudit/globalPaths';
3
-
4
- const jiti = createJiti(ERUDIT_DIR, {
5
- // Enable reimporting same files during process in development mode
6
- fsCache: !import.meta.dev,
7
- moduleCache: !import.meta.dev,
8
- alias: {
9
- '#project': PROJECT_DIR,
10
- '#content': PROJECT_DIR + '/content',
11
- },
12
- });
13
-
14
- export async function IMPORT(...args: Parameters<typeof jiti.import>) {
15
- return jiti.import(...args) as Promise<any>;
16
- }
1
+ import { createJiti } from 'jiti';
2
+ import { ERUDIT_DIR, PROJECT_DIR } from '#erudit/globalPaths';
3
+
4
+ export const jiti = createJiti(ERUDIT_DIR, {
5
+ // Enable reimporting same files during process in development mode
6
+ fsCache: !import.meta.dev,
7
+ moduleCache: !import.meta.dev,
8
+ alias: {
9
+ '#project': PROJECT_DIR,
10
+ '#content': PROJECT_DIR + '/content',
11
+ },
12
+ });
13
+
14
+ export async function IMPORT(...args: Parameters<typeof jiti.import>) {
15
+ return jiti.import(...args) as Promise<any>;
16
+ }
@@ -1,9 +1,9 @@
1
- import { ERUDIT_SERVER } from '@server/global';
2
- import { build } from '@server/build/process';
3
- import { close } from '@server/build/close';
4
-
5
- export default defineNitroPlugin((_nitro) => {
6
- build();
7
- _nitro.hooks.hook('request', async () => await ERUDIT_SERVER.BUILD_PROMISE);
8
- _nitro.hooks.hook('close', close);
9
- });
1
+ import { ERUDIT_SERVER } from '@server/global';
2
+ import { build } from '@server/build/process';
3
+ import { close } from '@server/build/close';
4
+
5
+ export default defineNitroPlugin((_nitro) => {
6
+ build();
7
+ _nitro.hooks.hook('request', async () => await ERUDIT_SERVER.BUILD_PROMISE);
8
+ _nitro.hooks.hook('close', close);
9
+ });
@@ -1,23 +1,23 @@
1
- import chalk from 'chalk';
2
- import { createConsola } from 'consola';
3
- import { brandColorTitle } from '@erudit-js/cog/utils/brandNode';
4
-
5
- import eruditConfig from '#erudit/config';
6
-
7
- // TODO: Consola has buggy behaviour when called inside Nitro
8
- // @see https://github.com/nitrojs/nitro/issues/3079
9
-
10
- export const logger = createConsola({
11
- defaults: {
12
- //tag: brandColorTitle + ' Server',
13
- message: chalk.gray(`[${brandColorTitle} Server]`),
14
- },
15
- });
16
-
17
- export const debug = createConsola({
18
- defaults: {
19
- //tag: brandColorTitle + ' Server Debug',
20
- message: chalk.gray(`[${brandColorTitle} Server Debug]`),
21
- level: eruditConfig?.debug?.log ? 3 : -999,
22
- },
23
- });
1
+ import chalk from 'chalk';
2
+ import { createConsola } from 'consola';
3
+ import { brandColorTitle } from '@erudit-js/cog/utils/brandNode';
4
+
5
+ import eruditConfig from '#erudit/config';
6
+
7
+ // TODO: Consola has buggy behaviour when called inside Nitro
8
+ // @see https://github.com/nitrojs/nitro/issues/3079
9
+
10
+ export const logger = createConsola({
11
+ defaults: {
12
+ //tag: brandColorTitle + ' Server',
13
+ message: chalk.gray(`[${brandColorTitle} Server]`),
14
+ },
15
+ });
16
+
17
+ export const debug = createConsola({
18
+ defaults: {
19
+ //tag: brandColorTitle + ' Server Debug',
20
+ message: chalk.gray(`[${brandColorTitle} Server Debug]`),
21
+ level: eruditConfig?.debug?.log ? 3 : -999,
22
+ },
23
+ });
@@ -1,27 +1,27 @@
1
- import type { ContentType } from '@erudit-js/cog/schema';
2
-
3
- export interface NavNode {
4
- type: ContentType;
5
- path: string;
6
- idPart: string;
7
- shortId: string;
8
- fullId: string;
9
- skip: boolean;
10
- children?: NavNode[];
11
- parent?: NavNode | RootNavNode;
12
- }
13
-
14
- export interface RootNavNode {
15
- type: '#root';
16
- children?: NavNode[];
17
- }
18
-
19
- export function isRootNode(node: NavNode | RootNavNode) {
20
- return node?.type === '#root';
21
- }
22
-
23
- export function createRootNode(): RootNavNode {
24
- return {
25
- type: '#root',
26
- };
27
- }
1
+ import type { ContentType } from '@erudit-js/cog/schema';
2
+
3
+ export interface NavNode {
4
+ type: ContentType;
5
+ fsPath: string;
6
+ idPart: string;
7
+ shortId: string;
8
+ fullId: string;
9
+ skip: boolean;
10
+ children?: NavNode[];
11
+ parent?: NavNode | RootNavNode;
12
+ }
13
+
14
+ export interface RootNavNode {
15
+ type: '#root';
16
+ children?: NavNode[];
17
+ }
18
+
19
+ export function isRootNode(node: NavNode | RootNavNode) {
20
+ return node?.type === '#root';
21
+ }
22
+
23
+ export function createRootNode(): RootNavNode {
24
+ return {
25
+ type: '#root',
26
+ };
27
+ }