erudit 2.0.0-dev.9 → 3.0.0-dev.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 (237) hide show
  1. package/app/app.vue +172 -172
  2. package/app/components/Loading.vue +23 -23
  3. package/app/components/SiteAside.vue +382 -382
  4. package/app/components/SiteMain.vue +35 -35
  5. package/app/components/ads/BannerTemplate.vue +51 -51
  6. package/app/components/ads/BottomBanner.vue +45 -45
  7. package/app/components/ads/LeftBanner.vue +50 -50
  8. package/app/components/aside/AsideListItem.vue +74 -74
  9. package/app/components/aside/AsideMajor.vue +56 -56
  10. package/app/components/aside/AsideMinor.vue +71 -71
  11. package/app/components/aside/major/PaneContentScroll.vue +23 -23
  12. package/app/components/aside/major/PaneSwitch.vue +54 -54
  13. package/app/components/aside/major/PaneSwitchButton.vue +63 -63
  14. package/app/components/aside/major/SiteInfo.vue +85 -85
  15. package/app/components/aside/major/panes/Language.vue +79 -79
  16. package/app/components/aside/major/panes/Pages.vue +34 -34
  17. package/app/components/aside/major/panes/Search.vue +11 -3
  18. package/app/components/aside/major/panes/nav/Nav.vue +91 -91
  19. package/app/components/aside/major/panes/nav/NavBook.vue +86 -86
  20. package/app/components/aside/major/panes/nav/NavBookLoading.vue +24 -24
  21. package/app/components/aside/major/panes/nav/NavGlobal.vue +16 -16
  22. package/app/components/aside/major/panes/nav/fnav/FNav.vue +105 -105
  23. package/app/components/aside/major/panes/nav/fnav/FNavBook.vue +32 -32
  24. package/app/components/aside/major/panes/nav/fnav/FNavFlags.vue +40 -40
  25. package/app/components/aside/major/panes/nav/fnav/FNavFolder.vue +60 -60
  26. package/app/components/aside/major/panes/nav/fnav/FNavItem.vue +34 -34
  27. package/app/components/aside/major/panes/nav/fnav/FNavSeparator.vue +80 -80
  28. package/app/components/aside/major/panes/nav/fnav/FNavTopic.vue +24 -24
  29. package/app/components/aside/major/panes/other/ItemContent.vue +29 -29
  30. package/app/components/aside/major/panes/other/ItemGenerator.vue +15 -15
  31. package/app/components/aside/major/panes/other/ItemTheme.vue +54 -54
  32. package/app/components/aside/major/panes/other/Other.vue +16 -16
  33. package/app/components/aside/minor/AsideMinorContributor.vue +5 -5
  34. package/app/components/aside/minor/AsideMinorNews.vue +11 -11
  35. package/app/components/aside/minor/AsideMinorPane.vue +15 -16
  36. package/app/components/aside/minor/AsideMinorTopLink.vue +67 -67
  37. package/app/components/aside/minor/Contribute.vue +145 -145
  38. package/app/components/aside/minor/content/AsideMinorContent.vue +92 -92
  39. package/app/components/aside/minor/topic/AsideMinorTopic.vue +32 -32
  40. package/app/components/aside/minor/topic/TopicContributors.vue +177 -177
  41. package/app/components/aside/minor/topic/TopicNav.vue +49 -49
  42. package/app/components/aside/minor/topic/TopicToc.vue +203 -203
  43. package/app/components/aside/minor/topic/TopicTocItem.vue +31 -31
  44. package/app/components/aside/utils/AsideOverlayPane.vue +40 -40
  45. package/app/components/bitran/BitranContent.vue +63 -63
  46. package/app/components/bitran/RenderWrapper.vue +10 -10
  47. package/app/components/contributor/ContributorAvatar.vue +43 -43
  48. package/app/components/contributor/ContributorListItem.vue +35 -35
  49. package/app/components/main/topic/MainTopic.vue +79 -79
  50. package/app/components/main/topic/TopicPartSwitch.vue +118 -118
  51. package/app/components/main/utils/Breadcrumb.vue +75 -75
  52. package/app/components/main/utils/ContentDecoration.vue +29 -29
  53. package/app/components/main/utils/ContentDescription.vue +19 -20
  54. package/app/components/main/utils/ContentFlag.vue +15 -16
  55. package/app/components/main/utils/ContentPopover.vue +176 -176
  56. package/app/components/main/utils/ContentPopovers.vue +105 -105
  57. package/app/components/main/utils/ContentReferences.vue +70 -76
  58. package/app/components/main/utils/ContentSection.vue +45 -42
  59. package/app/components/main/utils/ContentTitle.vue +39 -37
  60. package/app/components/main/utils/reference/ReferenceGroup.vue +38 -41
  61. package/app/components/main/utils/reference/ReferenceItem.vue +68 -64
  62. package/app/components/main/utils/reference/ReferenceSource.vue +116 -110
  63. package/app/components/preview/Preview.vue +177 -177
  64. package/app/components/preview/PreviewDisplay.vue +139 -139
  65. package/app/components/preview/PreviewFooterAction.vue +73 -73
  66. package/app/components/preview/PreviewLoading.vue +14 -15
  67. package/app/components/preview/PreviewScreen.vue +99 -99
  68. package/app/components/preview/display/Alert.vue +50 -50
  69. package/app/components/preview/display/Custom.vue +18 -18
  70. package/app/components/preview/display/GenericLink.vue +48 -48
  71. package/app/components/preview/display/PageLink.vue +20 -20
  72. package/app/components/preview/display/Unique.vue +49 -49
  73. package/app/components/transition/Fade.vue +19 -22
  74. package/app/components/tree/TreeContainer.vue +11 -12
  75. package/app/components/tree/TreeItem.vue +89 -89
  76. package/app/composables/bitran.ts +127 -127
  77. package/app/composables/bitranContent.ts +37 -37
  78. package/app/composables/bitranLocation.ts +7 -7
  79. package/app/composables/contentData.ts +36 -36
  80. package/app/composables/contentPage.ts +156 -156
  81. package/app/composables/contentRoute.ts +45 -45
  82. package/app/composables/darkMagic.ts +24 -24
  83. package/app/composables/externalApi.ts +63 -63
  84. package/app/composables/favicon.ts +8 -8
  85. package/app/composables/formatText.ts +86 -86
  86. package/app/composables/majorPane.ts +60 -60
  87. package/app/composables/phrases.ts +80 -80
  88. package/app/composables/theme.ts +29 -29
  89. package/app/composables/url.ts +33 -33
  90. package/app/pages/_test/preview.vue +110 -110
  91. package/app/pages/article/[...articleId].vue +3 -3
  92. package/app/pages/book/[...bookId].vue +47 -47
  93. package/app/pages/group/[...groupId].vue +65 -65
  94. package/app/pages/index.vue +32 -32
  95. package/app/pages/members.vue +6 -7
  96. package/app/pages/practice/[...practice].vue +3 -3
  97. package/app/pages/summary/[...summaryId].vue +3 -3
  98. package/app/scripts/_immediate.js +9 -4
  99. package/app/scripts/aside/index.ts +59 -59
  100. package/app/scripts/aside/major/nav.ts +26 -26
  101. package/app/scripts/aside/minor/state.ts +37 -37
  102. package/app/scripts/aside/minor/topic.ts +3 -3
  103. package/app/scripts/flag.ts +28 -28
  104. package/app/scripts/og.ts +27 -27
  105. package/app/scripts/preview/build.ts +73 -84
  106. package/app/scripts/preview/data/alert.ts +19 -19
  107. package/app/scripts/preview/data/custom.ts +8 -8
  108. package/app/scripts/preview/data/genericLink.ts +24 -24
  109. package/app/scripts/preview/data/pageLink.ts +20 -20
  110. package/app/scripts/preview/data/unique.ts +70 -70
  111. package/app/scripts/preview/data.ts +24 -26
  112. package/app/scripts/preview/display.ts +37 -37
  113. package/app/scripts/preview/footer.ts +9 -9
  114. package/app/scripts/preview/request.ts +51 -51
  115. package/app/scripts/preview/state.ts +63 -63
  116. package/app/styles/_immediate.css +7 -3
  117. package/app/styles/_util.scss +43 -50
  118. package/app/styles/_utils.scss +44 -44
  119. package/app/styles/app.scss +91 -91
  120. package/app/styles/def/_bp.scss +27 -24
  121. package/app/styles/def/_size.scss +7 -7
  122. package/app/styles/def/_z.scss +5 -5
  123. package/app/styles/default.scss +83 -85
  124. package/app/styles/normalize.scss +63 -63
  125. package/app/styles/partials/_darkMagic.scss +5 -7
  126. package/app/styles/partials/_fnav.scss +15 -18
  127. package/app/styles/partials/_preview.scss +5 -7
  128. package/globalPath.ts +21 -21
  129. package/globals/bitran.ts +47 -47
  130. package/globals/content.ts +22 -22
  131. package/globals/contributor.ts +5 -5
  132. package/globals/erudit.ts +5 -5
  133. package/globals/register.ts +18 -18
  134. package/languages/en.ts +95 -95
  135. package/languages/ru.ts +99 -99
  136. package/module/bitran.ts +34 -34
  137. package/module/config.ts +34 -34
  138. package/module/imports.ts +46 -46
  139. package/module/index.ts +47 -47
  140. package/module/logger.ts +10 -10
  141. package/module/paths.ts +22 -22
  142. package/module/restart.ts +61 -61
  143. package/nuxt.config.ts +112 -107
  144. package/package.json +3 -3
  145. package/server/api/aside/major/nav/bookIds.ts +5 -5
  146. package/server/api/aside/major/nav/bookNav/[...bookId].ts +20 -20
  147. package/server/api/aside/major/nav/global.ts +7 -7
  148. package/server/api/aside/minor/news.ts +7 -7
  149. package/server/api/aside/minor/path.ts +78 -78
  150. package/server/api/bitran/content/[location].ts +7 -7
  151. package/server/api/bitran/toc/[location].ts +7 -7
  152. package/server/api/content/data.ts +72 -72
  153. package/server/api/contributor/count.ts +6 -6
  154. package/server/api/fake/content.ts +11 -11
  155. package/server/api/fake/shared/languages.ts +12 -12
  156. package/server/api/language/functions.ts +12 -12
  157. package/server/api/language/phrase/[phraseId].ts +19 -19
  158. package/server/api/language/phraseIds.ts +8 -8
  159. package/server/api/preview/page/[...parts].ts +51 -51
  160. package/server/api/preview/unique/[location].ts +55 -55
  161. package/server/plugin/bitran/content.ts +187 -187
  162. package/server/plugin/bitran/location.ts +25 -25
  163. package/server/plugin/bitran/products/include.ts +230 -230
  164. package/server/plugin/bitran/products/link.ts +116 -116
  165. package/server/plugin/bitran/setup.ts +9 -9
  166. package/server/plugin/bitran/toc.ts +83 -83
  167. package/server/plugin/bitran/transpiler.ts +46 -46
  168. package/server/plugin/build/close.ts +10 -10
  169. package/server/plugin/build/jobs/content/builderArgs.ts +8 -8
  170. package/server/plugin/build/jobs/content/generic.ts +176 -176
  171. package/server/plugin/build/jobs/content/parse.ts +100 -100
  172. package/server/plugin/build/jobs/content/path.ts +6 -6
  173. package/server/plugin/build/jobs/content/type/book.ts +9 -9
  174. package/server/plugin/build/jobs/content/type/group.ts +37 -37
  175. package/server/plugin/build/jobs/content/type/topic.ts +36 -36
  176. package/server/plugin/build/jobs/contributors.ts +66 -66
  177. package/server/plugin/build/jobs/language.ts +36 -36
  178. package/server/plugin/build/jobs/nav.ts +210 -209
  179. package/server/plugin/build/process.ts +25 -25
  180. package/server/plugin/build/rebuild.ts +55 -55
  181. package/server/plugin/build/setup.ts +21 -21
  182. package/server/plugin/content/absoluteId.ts +94 -94
  183. package/server/plugin/content/context.ts +112 -112
  184. package/server/plugin/db/entities/Book.ts +7 -7
  185. package/server/plugin/db/entities/Content.ts +49 -49
  186. package/server/plugin/db/entities/Contribution.ts +10 -10
  187. package/server/plugin/db/entities/Contributor.ts +16 -16
  188. package/server/plugin/db/entities/Group.ts +14 -14
  189. package/server/plugin/db/entities/Hash.ts +15 -15
  190. package/server/plugin/db/entities/Topic.ts +20 -20
  191. package/server/plugin/db/entities/Unique.ts +21 -21
  192. package/server/plugin/db/setup.ts +34 -34
  193. package/server/plugin/global.ts +18 -18
  194. package/server/plugin/importer.ts +12 -12
  195. package/server/plugin/index.ts +9 -9
  196. package/server/plugin/logger.ts +23 -23
  197. package/server/plugin/nav/node.ts +26 -26
  198. package/server/plugin/nav/utils.ts +129 -129
  199. package/server/plugin/repository/book.ts +21 -21
  200. package/server/plugin/repository/content.ts +238 -238
  201. package/server/plugin/repository/contributor.ts +8 -8
  202. package/server/plugin/repository/frontNav.ts +148 -148
  203. package/server/plugin/repository/topic.ts +32 -32
  204. package/server/tsconfig.json +9 -7
  205. package/shared/aside/minor.ts +50 -50
  206. package/shared/asset.ts +15 -15
  207. package/shared/bitran/context.ts +8 -8
  208. package/shared/bitran/default.ts +46 -46
  209. package/shared/bitran/link/Link.vue +167 -167
  210. package/shared/bitran/link/factory.ts +24 -24
  211. package/shared/bitran/link/languages/en.ts +7 -7
  212. package/shared/bitran/link/languages/ru.ts +7 -7
  213. package/shared/bitran/link/renderer.ts +21 -21
  214. package/shared/bitran/link/shared.ts +17 -17
  215. package/shared/bitran/link/target.ts +134 -134
  216. package/shared/bitran/link/transpiler.ts +10 -10
  217. package/shared/bitran/location.ts +166 -166
  218. package/shared/bitran/toc.ts +8 -8
  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 +25 -25
  231. package/shared/types/language.ts +75 -75
  232. package/shared/utils/objectsEqual.ts +4 -4
  233. package/shared/utils/stringColor.ts +9 -9
  234. package/test/bitran/link/target.test.ts +141 -141
  235. package/test/bitran/location.test.ts +143 -143
  236. package/tsconfig.json +8 -8
  237. package/utils/stress.ts +9 -9
package/languages/ru.ts CHANGED
@@ -1,99 +1,99 @@
1
- const russian: EruditPhrases = {
2
- _language_title: 'Русский',
3
- _language_code: 'ru',
4
-
5
- site_info_title: 'Erudit',
6
- site_info_slogan: 'Современный учебник',
7
- seo_index_title: 'Erudit - CMS для образовательных сайтов',
8
- seo_index_description:
9
- 'Erudit — CMS для создания и управления идеальными образовательными сайтами, которые поддерживаются сообществом.',
10
- seo_article_description: (contentTitle) =>
11
- `Понятное и интересное объяснение темы «${contentTitle}». Показательные примеры, важные свойства, интересные факты, применение в жизни, понятные доказательства. Здесь вы точно разберетесь!`,
12
- seo_summary_description: (contentTitle) =>
13
- `Конспект темы «${contentTitle}»: ключевые определения, теоремы, свойства и примеры их использвания. Все самое важное и в кратком виде!`,
14
- seo_practice_description: (contentTitle) =>
15
- `Разнообразные задачи с подсказками и ответами по теме «${contentTitle}». Интересные условия, подсказки и подробные решения. Превратите знания в навык!`,
16
- index: 'Оглавление',
17
- pages: 'Страницы',
18
- search: 'Поиск',
19
- language: 'Язык',
20
- other: 'Другое',
21
- ads_replacer:
22
- 'Помогите нам улучшать проект.<br><strong>Включите показ рекламы!</strong>',
23
- theme: 'Тема',
24
- theme_system: 'Системная',
25
- theme_light: 'Светлая',
26
- theme_dark: 'Темная',
27
- content: 'Контент',
28
- generator: 'Генератор',
29
- main_page: 'Главная страница',
30
- members: 'Участники',
31
- add_translation: 'Добавить перевод',
32
- empty_nav: 'Пустая навигация',
33
- flag_dev: 'Разработка',
34
- flag_dev_description:
35
- 'Этот материал в разработке! Он может измениться в будущем и даже содержать ошибки!',
36
- flag_advanced: 'Профиль',
37
- flag_advanced_description:
38
- 'Этот материал предназначен для учеников с высоким уровнем понимания предмета. Информация здесь не предназначена для новичокв!',
39
- flag_secondary: 'Дополнение',
40
- flag_secondary_description:
41
- 'Это дополнительный материал для тех, кто хочет глубже погрузиться предмет и получить дополнительные знания и контекст.',
42
- popover_dependencies: 'Зависимости',
43
- popover_dependencies_description:
44
- 'Царского пути в эту тему нет! Вы сможете разобраться только если знаете следующие темы:',
45
- to_index: 'К оглавлению',
46
- about_book: 'Об учебнике',
47
- close: 'Закрыть',
48
- back: 'Назад',
49
- goto: 'Перейти',
50
- error: 'Ошибка!',
51
- external_link: 'Внешняя ссылка',
52
- external_link_warn: 'Вы собираетесь перейти на внешний ресурс!',
53
- internal_link: 'Внутренняя ссылка',
54
- internal_link_warn: 'Вы собираетесь перейти на внутреннюю страницу сайта!',
55
- book: 'Книга',
56
- group: 'Группа',
57
- topic: 'Тема',
58
- article: 'Статья',
59
- summary: 'Конспект',
60
- practice: 'Задачи',
61
- contributor: 'Автор',
62
- element_id: 'ID элемента',
63
- preview_missing_title: 'Элемент не найден!',
64
- preview_missing_explain:
65
- 'Не удалось найти на этой странице элемент с указанным ID!<br>Возможно, ID элемента указан неправильно или элемент был изменен/удален.',
66
- preview_missing_explain_mismatch: `Не удалось найти на этой странице элемент с указанным ID!<br>Версия страницы, на которую вела ссылка, отличается от текущей версии страницы!<br>Скорее всего, именно это и является причиной ошибки.`,
67
- preview_hash_mismatch_title: 'Несовпадение версий страницы!',
68
- preview_hash_mismatch_explain:
69
- 'Версия страницы, которую вы видите сейчас отличается от версии страницы, на которую вела исходная ссылка!<br>Содержимое может отличаться от того, что вы ожидали увидеть.',
70
- current_page_hash: 'Текущий хеш',
71
- expected_page_hash: 'Ожидаемый хеш',
72
- empty_toc: 'Пустая таблица содержимого...',
73
- contributors: 'Авторы',
74
- no_contributors: 'Авторов нет...',
75
- make_contribution: 'Внести свой вклад',
76
- material_improvement: 'Улучшение материала',
77
- how_to_improve: 'Как улучшить?',
78
- edit_page: 'Редактировать страницу',
79
- report_problem: 'Сообщить о проблеме',
80
- references: 'Источники',
81
- reference_source_featured: 'Избранный источник',
82
- references_description:
83
- 'Список внешних источников, которые использовались при написании этого материала. Для более глубокого погружения в материал рекомендуются ознакомиться с ними подробнее, особенно с избранными источниками, которые отмечены звездочкой:',
84
- };
85
-
86
- export default russian;
87
-
88
- export function m(
89
- number: number,
90
- one: string,
91
- two: string,
92
- five: string,
93
- includeNumber = true,
94
- ) {
95
- const text = [five, one, two, two, two, five][
96
- number % 100 > 10 && number % 100 < 20 ? 0 : Math.min(number % 10, 5)
97
- ];
98
- return includeNumber ? `${number} ${text}` : text;
99
- }
1
+ const russian: EruditPhrases = {
2
+ _language_title: 'Русский',
3
+ _language_code: 'ru',
4
+
5
+ site_info_title: 'Erudit',
6
+ site_info_slogan: 'Современный учебник',
7
+ seo_index_title: 'Erudit - CMS для образовательных сайтов',
8
+ seo_index_description:
9
+ 'Erudit — CMS для создания и управления идеальными образовательными сайтами, которые поддерживаются сообществом.',
10
+ seo_article_description: (contentTitle) =>
11
+ `Понятное и интересное объяснение темы «${contentTitle}». Показательные примеры, важные свойства, интересные факты, применение в жизни, понятные доказательства. Здесь вы точно разберетесь!`,
12
+ seo_summary_description: (contentTitle) =>
13
+ `Конспект темы «${contentTitle}»: ключевые определения, теоремы, свойства и примеры их использвания. Все самое важное и в кратком виде!`,
14
+ seo_practice_description: (contentTitle) =>
15
+ `Разнообразные задачи с подсказками и ответами по теме «${contentTitle}». Интересные условия, подсказки и подробные решения. Превратите знания в навык!`,
16
+ index: 'Оглавление',
17
+ pages: 'Страницы',
18
+ search: 'Поиск',
19
+ language: 'Язык',
20
+ other: 'Другое',
21
+ ads_replacer:
22
+ 'Помогите нам улучшать проект.<br><strong>Включите показ рекламы!</strong>',
23
+ theme: 'Тема',
24
+ theme_system: 'Системная',
25
+ theme_light: 'Светлая',
26
+ theme_dark: 'Темная',
27
+ content: 'Контент',
28
+ generator: 'Генератор',
29
+ main_page: 'Главная страница',
30
+ members: 'Участники',
31
+ add_translation: 'Добавить перевод',
32
+ empty_nav: 'Пустая навигация',
33
+ flag_dev: 'Разработка',
34
+ flag_dev_description:
35
+ 'Этот материал в разработке! Он может измениться в будущем и даже содержать ошибки!',
36
+ flag_advanced: 'Профиль',
37
+ flag_advanced_description:
38
+ 'Этот материал предназначен для учеников с высоким уровнем понимания предмета. Информация здесь не предназначена для новичокв!',
39
+ flag_secondary: 'Дополнение',
40
+ flag_secondary_description:
41
+ 'Это дополнительный материал для тех, кто хочет глубже погрузиться предмет и получить дополнительные знания и контекст.',
42
+ popover_dependencies: 'Зависимости',
43
+ popover_dependencies_description:
44
+ 'Царского пути в эту тему нет! Вы сможете разобраться только если знаете следующие темы:',
45
+ to_index: 'К оглавлению',
46
+ about_book: 'Об учебнике',
47
+ close: 'Закрыть',
48
+ back: 'Назад',
49
+ goto: 'Перейти',
50
+ error: 'Ошибка!',
51
+ external_link: 'Внешняя ссылка',
52
+ external_link_warn: 'Вы собираетесь перейти на внешний ресурс!',
53
+ internal_link: 'Внутренняя ссылка',
54
+ internal_link_warn: 'Вы собираетесь перейти на внутреннюю страницу сайта!',
55
+ book: 'Книга',
56
+ group: 'Группа',
57
+ topic: 'Тема',
58
+ article: 'Статья',
59
+ summary: 'Конспект',
60
+ practice: 'Задачи',
61
+ contributor: 'Автор',
62
+ element_id: 'ID элемента',
63
+ preview_missing_title: 'Элемент не найден!',
64
+ preview_missing_explain:
65
+ 'Не удалось найти на этой странице элемент с указанным ID!<br>Возможно, ID элемента указан неправильно или элемент был изменен/удален.',
66
+ preview_missing_explain_mismatch: `Не удалось найти на этой странице элемент с указанным ID!<br>Версия страницы, на которую вела ссылка, отличается от текущей версии страницы!<br>Скорее всего, именно это и является причиной ошибки.`,
67
+ preview_hash_mismatch_title: 'Несовпадение версий страницы!',
68
+ preview_hash_mismatch_explain:
69
+ 'Версия страницы, которую вы видите сейчас отличается от версии страницы, на которую вела исходная ссылка!<br>Содержимое может отличаться от того, что вы ожидали увидеть.',
70
+ current_page_hash: 'Текущий хеш',
71
+ expected_page_hash: 'Ожидаемый хеш',
72
+ empty_toc: 'Пустая таблица содержимого...',
73
+ contributors: 'Авторы',
74
+ no_contributors: 'Авторов нет...',
75
+ make_contribution: 'Внести свой вклад',
76
+ material_improvement: 'Улучшение материала',
77
+ how_to_improve: 'Как улучшить?',
78
+ edit_page: 'Редактировать страницу',
79
+ report_problem: 'Сообщить о проблеме',
80
+ references: 'Источники',
81
+ reference_source_featured: 'Избранный источник',
82
+ references_description:
83
+ 'Список внешних источников, которые использовались при написании этого материала. Для более глубокого погружения в материал рекомендуются ознакомиться с ними подробнее, особенно с избранными источниками, которые отмечены звездочкой:',
84
+ };
85
+
86
+ export default russian;
87
+
88
+ export function m(
89
+ number: number,
90
+ one: string,
91
+ two: string,
92
+ five: string,
93
+ includeNumber = true,
94
+ ) {
95
+ const text = [five, one, two, two, two, five][
96
+ number % 100 > 10 && number % 100 < 20 ? 0 : Math.min(number % 10, 5)
97
+ ];
98
+ return includeNumber ? `${number} ${text}` : text;
99
+ }
package/module/bitran.ts CHANGED
@@ -1,34 +1,34 @@
1
- import { addTemplate } from 'nuxt/kit';
2
- import type { Nuxt } from 'nuxt/schema';
3
-
4
- import { eruditEndNuxtPath, projectPath } from '@erudit/globalPath';
5
- import type { EruditBitranConfig } from '@erudit/globals/bitran';
6
- import { logger } from '@erudit/module/logger';
7
-
8
- export async function setupBitranConfig(_nuxt: Nuxt) {
9
- let config: Partial<EruditBitranConfig>;
10
-
11
- try {
12
- const projectConfig = (await import(projectPath('bitran'))).default;
13
- if (!projectConfig) throw new Error('Falsy Bitran config!');
14
- config = projectConfig;
15
- } catch (error) {
16
- logger.warn(`Failed to load Bitran config!\n\n${error}`);
17
- }
18
-
19
- const templateFilename = '#erudit/client/bitran.ts';
20
-
21
- addTemplate({
22
- filename: templateFilename,
23
- write: true,
24
- getContents: () => `
25
- ${config ? `import bitranConfig from '${projectPath('bitran')}';` : ''}
26
- export default ${config ? 'bitranConfig' : 'undefined'};
27
- `,
28
- });
29
-
30
- const alias = (_nuxt.options.alias ||= {});
31
- alias['#erudit/client/bitran'] = eruditEndNuxtPath(
32
- `.nuxt/${templateFilename}`,
33
- );
34
- }
1
+ import { addTemplate } from 'nuxt/kit';
2
+ import type { Nuxt } from 'nuxt/schema';
3
+
4
+ import { eruditEndNuxtPath, projectPath } from '@erudit/globalPath';
5
+ import type { EruditBitranConfig } from '@erudit/globals/bitran';
6
+ import { logger } from '@erudit/module/logger';
7
+
8
+ export async function setupBitranConfig(_nuxt: Nuxt) {
9
+ let config: Partial<EruditBitranConfig>;
10
+
11
+ try {
12
+ const projectConfig = (await import(projectPath('bitran'))).default;
13
+ if (!projectConfig) throw new Error('Falsy Bitran config!');
14
+ config = projectConfig;
15
+ } catch (error) {
16
+ logger.warn(`Failed to load Bitran config!\n\n${error}`);
17
+ }
18
+
19
+ const templateFilename = '#erudit/client/bitran.ts';
20
+
21
+ addTemplate({
22
+ filename: templateFilename,
23
+ write: true,
24
+ getContents: () => `
25
+ ${config ? `import bitranConfig from '${projectPath('bitran')}';` : ''}
26
+ export default ${config ? 'bitranConfig' : 'undefined'};
27
+ `,
28
+ });
29
+
30
+ const alias = (_nuxt.options.alias ||= {});
31
+ alias['#erudit/client/bitran'] = eruditEndNuxtPath(
32
+ `.nuxt/${templateFilename}`,
33
+ );
34
+ }
package/module/config.ts CHANGED
@@ -1,34 +1,34 @@
1
- import { addTemplate } from 'nuxt/kit';
2
- import type { Nuxt } from 'nuxt/schema';
3
- import type { EruditConfig } from 'erudit-cog/schema';
4
-
5
- import { eruditEndNuxtPath, projectPath } from '@erudit/globalPath';
6
- import { logger } from '@erudit/module/logger';
7
-
8
- export async function setupEruditConfig(_nuxt: Nuxt) {
9
- let config: Partial<EruditConfig> = {};
10
-
11
- try {
12
- const projectConfig = (await import(projectPath('erudit'))).default;
13
- if (!projectConfig) throw new Error('Falsy Erudit config!');
14
- config = projectConfig;
15
- } catch (error) {
16
- logger.warn(`Failed to load Erudit config!\n\n${error}`);
17
- }
18
-
19
- const templateFilename = '#erudit/config.ts';
20
-
21
- addTemplate({
22
- filename: templateFilename,
23
- write: true,
24
- getContents: () => `
25
- import type { EruditConfig } from 'erudit-cog/schema';
26
- export default ${JSON.stringify(config, null, ' ')} as Partial<EruditConfig>;
27
- `,
28
- });
29
-
30
- const alias = (_nuxt.options.alias ||= {});
31
- alias['#erudit/config'] = eruditEndNuxtPath(`.nuxt/${templateFilename}`);
32
-
33
- return config;
34
- }
1
+ import { addTemplate } from 'nuxt/kit';
2
+ import type { Nuxt } from 'nuxt/schema';
3
+ import type { EruditConfig } from 'erudit-cog/schema';
4
+
5
+ import { eruditEndNuxtPath, projectPath } from '@erudit/globalPath';
6
+ import { logger } from '@erudit/module/logger';
7
+
8
+ export async function setupEruditConfig(_nuxt: Nuxt) {
9
+ let config: Partial<EruditConfig> = {};
10
+
11
+ try {
12
+ const projectConfig = (await import(projectPath('erudit'))).default;
13
+ if (!projectConfig) throw new Error('Falsy Erudit config!');
14
+ config = projectConfig;
15
+ } catch (error) {
16
+ logger.warn(`Failed to load Erudit config!\n\n${error}`);
17
+ }
18
+
19
+ const templateFilename = '#erudit/config.ts';
20
+
21
+ addTemplate({
22
+ filename: templateFilename,
23
+ write: true,
24
+ getContents: () => `
25
+ import type { EruditConfig } from 'erudit-cog/schema';
26
+ export default ${JSON.stringify(config, null, ' ')} as Partial<EruditConfig>;
27
+ `,
28
+ });
29
+
30
+ const alias = (_nuxt.options.alias ||= {});
31
+ alias['#erudit/config'] = eruditEndNuxtPath(`.nuxt/${templateFilename}`);
32
+
33
+ return config;
34
+ }
package/module/imports.ts CHANGED
@@ -1,46 +1,46 @@
1
- import { addImports, addServerImports } from 'nuxt/kit';
2
-
3
- import { eruditPath } from '@erudit/globalPath';
4
-
5
- export function setupGlobalImports() {
6
- addImports([
7
- {
8
- name: 'defineEruditConfig',
9
- from: eruditPath('globals/erudit'),
10
- },
11
- {
12
- name: 'defineContributor',
13
- from: eruditPath('globals/contributor'),
14
- },
15
- {
16
- name: 'defineBitranConfig',
17
- from: eruditPath('globals/bitran'),
18
- },
19
- // Content
20
- ...(() => {
21
- const imports = [
22
- 'defineBook',
23
- 'defineGroup',
24
- 'defineTopic',
25
- 'defineContentReferences',
26
- ];
27
- return imports.map((name) => ({
28
- name,
29
- from: eruditPath(`globals/content`),
30
- }));
31
- })(),
32
- // Helper Asset Path Functions
33
- ...(() => {
34
- const imports = [
35
- 'eruditAsset',
36
- 'contributorAsset',
37
- 'contentAsset',
38
- 'publicAsset',
39
- ];
40
- return imports.map((name) => ({
41
- name,
42
- from: eruditPath(`shared/asset`),
43
- }));
44
- })(),
45
- ]);
46
- }
1
+ import { addImports, addServerImports } from 'nuxt/kit';
2
+
3
+ import { eruditPath } from '@erudit/globalPath';
4
+
5
+ export function setupGlobalImports() {
6
+ addImports([
7
+ {
8
+ name: 'defineEruditConfig',
9
+ from: eruditPath('globals/erudit'),
10
+ },
11
+ {
12
+ name: 'defineContributor',
13
+ from: eruditPath('globals/contributor'),
14
+ },
15
+ {
16
+ name: 'defineBitranConfig',
17
+ from: eruditPath('globals/bitran'),
18
+ },
19
+ // Content
20
+ ...(() => {
21
+ const imports = [
22
+ 'defineBook',
23
+ 'defineGroup',
24
+ 'defineTopic',
25
+ 'defineContentReferences',
26
+ ];
27
+ return imports.map((name) => ({
28
+ name,
29
+ from: eruditPath(`globals/content`),
30
+ }));
31
+ })(),
32
+ // Helper Asset Path Functions
33
+ ...(() => {
34
+ const imports = [
35
+ 'eruditAsset',
36
+ 'contributorAsset',
37
+ 'contentAsset',
38
+ 'publicAsset',
39
+ ];
40
+ return imports.map((name) => ({
41
+ name,
42
+ from: eruditPath(`shared/asset`),
43
+ }));
44
+ })(),
45
+ ]);
46
+ }
package/module/index.ts CHANGED
@@ -1,47 +1,47 @@
1
- import { defineNuxtModule, updateTemplates } from 'nuxt/kit';
2
-
3
- import { registerGlobals } from '@erudit/globals/register';
4
- import { setupRestartWatcher } from '@erudit/module/restart';
5
- import { setupEruditConfig } from '@erudit/module/config';
6
- import { logger } from '@erudit/module/logger';
7
- import { setupGlobalImports } from '@erudit/module/imports';
8
- import { setupBitranConfig } from './bitran';
9
- import { setupGlobalPaths } from './paths';
10
-
11
- export default defineNuxtModule({
12
- meta: { name: 'Erudit', configKey: 'erudit' },
13
- async setup(_options, _nuxt) {
14
- if (_nuxt.options.dev) setupRestartWatcher(_nuxt);
15
-
16
- setupGlobalImports();
17
- registerGlobals();
18
-
19
- const eruditConfig = await setupEruditConfig(_nuxt);
20
- await setupBitranConfig(_nuxt);
21
- setupGlobalPaths(_nuxt);
22
-
23
- if (eruditConfig.site?.baseUrl) {
24
- const newBaseUrl = eruditConfig.site.baseUrl;
25
- _nuxt.options.app.baseURL = newBaseUrl;
26
- _nuxt.options.nitro.runtimeConfig!.app!.baseURL = newBaseUrl;
27
- await updateTemplates();
28
- }
29
-
30
- {
31
- // Handle sub dependencies
32
- const subDeps = eruditConfig.subDeps || [];
33
-
34
- const transpile = (_nuxt.options.build.transpile ||= []);
35
- const optimizeDeps = _nuxt.options.vite.optimizeDeps || {};
36
- const optimizeDepsInclude = (optimizeDeps.include ||= []);
37
-
38
- transpile.push(...subDeps);
39
- optimizeDepsInclude.push(...subDeps);
40
- }
41
-
42
- // TODO: Watch for contributors folder and create/update template with their IDs
43
- // TODO: Create such helpers for other features!
44
-
45
- logger.success('Erudit module setup complete!');
46
- },
47
- });
1
+ import { defineNuxtModule, updateTemplates } from 'nuxt/kit';
2
+
3
+ import { registerGlobals } from '@erudit/globals/register';
4
+ import { setupRestartWatcher } from '@erudit/module/restart';
5
+ import { setupEruditConfig } from '@erudit/module/config';
6
+ import { logger } from '@erudit/module/logger';
7
+ import { setupGlobalImports } from '@erudit/module/imports';
8
+ import { setupBitranConfig } from './bitran';
9
+ import { setupGlobalPaths } from './paths';
10
+
11
+ export default defineNuxtModule({
12
+ meta: { name: 'Erudit', configKey: 'erudit' },
13
+ async setup(_options, _nuxt) {
14
+ if (_nuxt.options.dev) setupRestartWatcher(_nuxt);
15
+
16
+ setupGlobalImports();
17
+ registerGlobals();
18
+
19
+ const eruditConfig = await setupEruditConfig(_nuxt);
20
+ await setupBitranConfig(_nuxt);
21
+ setupGlobalPaths(_nuxt);
22
+
23
+ if (eruditConfig.site?.baseUrl) {
24
+ const newBaseUrl = eruditConfig.site.baseUrl;
25
+ _nuxt.options.app.baseURL = newBaseUrl;
26
+ _nuxt.options.nitro.runtimeConfig!.app!.baseURL = newBaseUrl;
27
+ await updateTemplates();
28
+ }
29
+
30
+ {
31
+ // Handle sub dependencies
32
+ const subDeps = eruditConfig.subDeps || [];
33
+
34
+ const transpile = (_nuxt.options.build.transpile ||= []);
35
+ const optimizeDeps = _nuxt.options.vite.optimizeDeps || {};
36
+ const optimizeDepsInclude = (optimizeDeps.include ||= []);
37
+
38
+ transpile.push(...subDeps);
39
+ optimizeDepsInclude.push(...subDeps);
40
+ }
41
+
42
+ // TODO: Watch for contributors folder and create/update template with their IDs
43
+ // TODO: Create such helpers for other features!
44
+
45
+ logger.success('Erudit module setup complete!');
46
+ },
47
+ });
package/module/logger.ts CHANGED
@@ -1,10 +1,10 @@
1
- import { createConsola } from 'consola';
2
- import { brandColorTitle } from 'erudit-cog/utils/brand';
3
-
4
- const tag = brandColorTitle + ' Module';
5
-
6
- export const logger = createConsola({
7
- defaults: {
8
- tag,
9
- },
10
- });
1
+ import { createConsola } from 'consola';
2
+ import { brandColorTitle } from 'erudit-cog/utils/brand';
3
+
4
+ const tag = brandColorTitle + ' Module';
5
+
6
+ export const logger = createConsola({
7
+ defaults: {
8
+ tag,
9
+ },
10
+ });
package/module/paths.ts CHANGED
@@ -1,22 +1,22 @@
1
- import { addTemplate } from 'nuxt/kit';
2
- import type { Nuxt } from 'nuxt/schema';
3
-
4
- import { ERUDIT_DIR, eruditEndNuxtPath, PROJECT_DIR } from '@erudit/globalPath';
5
-
6
- export function setupGlobalPaths(_nuxt: Nuxt) {
7
- const templateFilename = '#erudit/globalPaths.ts';
8
-
9
- addTemplate({
10
- filename: templateFilename,
11
- write: true,
12
- getContents: () => `
13
- export const ERUDIT_DIR = '${ERUDIT_DIR}';
14
- export const PROJECT_DIR = '${PROJECT_DIR}';
15
- `,
16
- });
17
-
18
- const alias = (_nuxt.options.alias ||= {});
19
- alias['#erudit/globalPaths'] = eruditEndNuxtPath(
20
- `.nuxt/${templateFilename}`,
21
- );
22
- }
1
+ import { addTemplate } from 'nuxt/kit';
2
+ import type { Nuxt } from 'nuxt/schema';
3
+
4
+ import { ERUDIT_DIR, eruditEndNuxtPath, PROJECT_DIR } from '@erudit/globalPath';
5
+
6
+ export function setupGlobalPaths(_nuxt: Nuxt) {
7
+ const templateFilename = '#erudit/globalPaths.ts';
8
+
9
+ addTemplate({
10
+ filename: templateFilename,
11
+ write: true,
12
+ getContents: () => `
13
+ export const ERUDIT_DIR = '${ERUDIT_DIR}';
14
+ export const PROJECT_DIR = '${PROJECT_DIR}';
15
+ `,
16
+ });
17
+
18
+ const alias = (_nuxt.options.alias ||= {});
19
+ alias['#erudit/globalPaths'] = eruditEndNuxtPath(
20
+ `.nuxt/${templateFilename}`,
21
+ );
22
+ }