erudit 3.0.0-dev.2 → 3.0.0-dev.20

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 (286) hide show
  1. package/app/app.vue +193 -172
  2. package/app/assets/icons/graduation.svg +3 -0
  3. package/app/components/Loading.vue +23 -23
  4. package/app/components/SiteAside.vue +393 -382
  5. package/app/components/SiteMain.vue +32 -35
  6. package/app/components/ads/Ads.vue +35 -0
  7. package/app/components/ads/AdsBannerAside.vue +61 -0
  8. package/app/components/ads/AdsBannerBottom.vue +22 -0
  9. package/app/components/ads/AdsProviderCustom.vue +35 -0
  10. package/app/components/ads/AdsProviderYandex.vue +54 -0
  11. package/app/components/ads/AdsReplacer.vue +73 -0
  12. package/app/components/aside/AsideListItem.vue +74 -74
  13. package/app/components/aside/AsideMajor.vue +56 -56
  14. package/app/components/aside/AsideMinor.vue +97 -71
  15. package/app/components/aside/major/PaneContentScroll.vue +23 -23
  16. package/app/components/aside/major/PaneSwitch.vue +54 -54
  17. package/app/components/aside/major/PaneSwitchButton.vue +63 -63
  18. package/app/components/aside/major/SiteInfo.vue +85 -85
  19. package/app/components/aside/major/panes/Language.vue +79 -79
  20. package/app/components/aside/major/panes/Pages.vue +31 -34
  21. package/app/components/aside/major/panes/Search.vue +11 -11
  22. package/app/components/aside/major/panes/nav/Nav.vue +92 -91
  23. package/app/components/aside/major/panes/nav/NavBook.vue +95 -86
  24. package/app/components/aside/major/panes/nav/NavBookLoading.vue +24 -24
  25. package/app/components/aside/major/panes/nav/NavGlobal.vue +16 -16
  26. package/app/components/aside/major/panes/nav/fnav/FNav.vue +105 -105
  27. package/app/components/aside/major/panes/nav/fnav/FNavBook.vue +32 -32
  28. package/app/components/aside/major/panes/nav/fnav/FNavFlags.vue +40 -40
  29. package/app/components/aside/major/panes/nav/fnav/FNavFolder.vue +60 -60
  30. package/app/components/aside/major/panes/nav/fnav/FNavItem.vue +34 -34
  31. package/app/components/aside/major/panes/nav/fnav/FNavSeparator.vue +80 -80
  32. package/app/components/aside/major/panes/nav/fnav/FNavTopic.vue +24 -24
  33. package/app/components/aside/major/panes/other/ItemContent.vue +29 -29
  34. package/app/components/aside/major/panes/other/ItemGenerator.vue +13 -15
  35. package/app/components/aside/major/panes/other/ItemTheme.vue +54 -54
  36. package/app/components/aside/major/panes/other/Other.vue +16 -16
  37. package/app/components/aside/minor/{Contribute.vue → AsideMinorContribute.vue} +175 -145
  38. package/app/components/aside/minor/AsideMinorNews.vue +11 -11
  39. package/app/components/aside/minor/AsideMinorPane.vue +15 -15
  40. package/app/components/aside/minor/AsideMinorTopLink.vue +67 -67
  41. package/app/components/aside/minor/content/AsideMinorContent.vue +89 -92
  42. package/app/components/aside/minor/contributor/AsideMinorContributor.vue +78 -0
  43. package/app/components/aside/minor/contributor/BookContribution.vue +64 -0
  44. package/app/components/aside/minor/topic/AsideMinorTopic.vue +29 -32
  45. package/app/components/aside/minor/topic/TopicContributors.vue +177 -177
  46. package/app/components/aside/minor/topic/TopicNav.vue +49 -49
  47. package/app/components/aside/minor/topic/TopicToc.vue +213 -203
  48. package/app/components/aside/minor/topic/TopicTocItem.vue +32 -31
  49. package/app/components/aside/utils/AsideOverlayPane.vue +40 -40
  50. package/app/components/bitran/BitranContent.vue +91 -63
  51. package/app/components/bitran/RenderWrapper.vue +10 -10
  52. package/app/components/contributor/ContributorAvatar.vue +45 -43
  53. package/app/components/contributor/ContributorListItem.vue +35 -35
  54. package/app/components/main/MainBitranContent.vue +47 -0
  55. package/app/components/main/{utils/Breadcrumb.vue → MainBreadcrumb.vue} +67 -75
  56. package/app/components/main/MainDescription.vue +24 -0
  57. package/app/components/main/MainTitle.vue +76 -0
  58. package/app/components/main/content/ContentBreadcrumb.vue +28 -0
  59. package/app/components/main/{utils → content}/ContentDecoration.vue +29 -29
  60. package/app/components/main/{utils → content}/ContentPopover.vue +188 -176
  61. package/app/components/main/{utils → content}/ContentPopovers.vue +111 -105
  62. package/app/components/main/{utils → content}/ContentReferences.vue +70 -70
  63. package/app/components/main/{utils → content}/ContentSection.vue +45 -45
  64. package/app/components/main/{utils → content}/reference/ReferenceGroup.vue +38 -38
  65. package/app/components/main/{utils → content}/reference/ReferenceItem.vue +70 -68
  66. package/app/components/main/{utils → content}/reference/ReferenceSource.vue +120 -116
  67. package/app/components/main/topic/MainTopic.vue +81 -79
  68. package/app/components/main/topic/TopicPartSwitch.vue +124 -118
  69. package/app/components/preview/Preview.vue +186 -177
  70. package/app/components/preview/PreviewDisplay.vue +139 -139
  71. package/app/components/preview/PreviewFooterAction.vue +73 -73
  72. package/app/components/preview/PreviewLoading.vue +14 -14
  73. package/app/components/preview/PreviewScreen.vue +141 -99
  74. package/app/components/preview/display/Alert.vue +50 -50
  75. package/app/components/preview/display/Custom.vue +18 -18
  76. package/app/components/preview/display/GenericLink.vue +48 -48
  77. package/app/components/preview/display/PageLink.vue +22 -20
  78. package/app/components/preview/display/Unique.vue +46 -49
  79. package/app/components/transition/Fade.vue +19 -19
  80. package/app/components/tree/TreeContainer.vue +11 -11
  81. package/app/components/tree/TreeItem.vue +89 -89
  82. package/app/composables/adsAllowed.ts +11 -0
  83. package/app/composables/bitran.ts +108 -127
  84. package/app/composables/bitranLocation.ts +7 -7
  85. package/app/composables/contentData.ts +38 -36
  86. package/app/composables/contentPage.ts +168 -156
  87. package/app/composables/contentRoute.ts +45 -45
  88. package/app/composables/darkMagic.ts +24 -24
  89. package/app/composables/externalApi.ts +69 -63
  90. package/app/composables/favicon.ts +8 -8
  91. package/app/composables/formatText.ts +99 -86
  92. package/app/composables/majorPane.ts +61 -60
  93. package/app/composables/phrases.ts +77 -80
  94. package/app/composables/theme.ts +29 -29
  95. package/app/composables/url.ts +33 -33
  96. package/app/pages/_test/preview.vue +110 -110
  97. package/app/pages/article/[...articleId].vue +3 -3
  98. package/app/pages/book/[...bookId].vue +42 -47
  99. package/app/pages/contributor/[contributorId].vue +224 -0
  100. package/app/pages/contributors.vue +183 -0
  101. package/app/pages/group/[...groupId].vue +52 -65
  102. package/app/pages/index.vue +32 -32
  103. package/app/pages/practice/[...practice].vue +3 -3
  104. package/app/pages/summary/[...summaryId].vue +3 -3
  105. package/app/plugins/analytics.ts +95 -0
  106. package/app/plugins/prerender.server.ts +22 -0
  107. package/app/public/favicon/article.svg +5 -5
  108. package/app/public/favicon/default.svg +3 -3
  109. package/app/public/favicon/practice.svg +3 -3
  110. package/app/public/favicon/summary.svg +4 -4
  111. package/app/public/logotype.svg +2 -2
  112. package/app/scripts/_immediate.js +9 -9
  113. package/app/scripts/aside/index.ts +59 -59
  114. package/app/scripts/aside/major/nav.ts +26 -26
  115. package/app/scripts/aside/minor/state.ts +37 -37
  116. package/app/scripts/aside/minor/topic.ts +3 -3
  117. package/app/scripts/flag.ts +28 -28
  118. package/app/scripts/og.ts +27 -27
  119. package/app/scripts/preview/build.ts +76 -73
  120. package/app/scripts/preview/data/alert.ts +19 -19
  121. package/app/scripts/preview/data/custom.ts +8 -8
  122. package/app/scripts/preview/data/genericLink.ts +24 -24
  123. package/app/scripts/preview/data/pageLink.ts +23 -20
  124. package/app/scripts/preview/data/unique.ts +69 -70
  125. package/app/scripts/preview/data.ts +24 -24
  126. package/app/scripts/preview/display.ts +37 -37
  127. package/app/scripts/preview/footer.ts +9 -9
  128. package/app/scripts/preview/request.ts +51 -51
  129. package/app/scripts/preview/state.ts +63 -63
  130. package/app/styles/_immediate.css +7 -7
  131. package/app/styles/_util.scss +43 -43
  132. package/app/styles/_utils.scss +44 -44
  133. package/app/styles/app.scss +91 -91
  134. package/app/styles/def/_bp.scss +27 -27
  135. package/app/styles/def/_size.scss +7 -7
  136. package/app/styles/def/_z.scss +5 -5
  137. package/app/styles/normalize.scss +49 -63
  138. package/app/styles/partials/_darkMagic.scss +5 -5
  139. package/app/styles/partials/_fnav.scss +15 -15
  140. package/app/styles/partials/_preview.scss +5 -5
  141. package/bin/erudit.mjs +2 -0
  142. package/const.ts +4 -0
  143. package/globalPath.ts +21 -21
  144. package/globals/bitran.ts +1 -47
  145. package/globals/content.ts +27 -22
  146. package/globals/contributor.ts +5 -5
  147. package/globals/erudit.ts +5 -5
  148. package/globals/register.ts +18 -18
  149. package/languages/en.ts +103 -95
  150. package/languages/ru.ts +107 -99
  151. package/module/bitran.ts +66 -34
  152. package/module/config.ts +35 -34
  153. package/module/imports.ts +67 -46
  154. package/module/index.ts +47 -47
  155. package/module/logger.ts +10 -10
  156. package/module/paths.ts +22 -22
  157. package/module/restart.ts +61 -61
  158. package/nuxt.config.ts +131 -112
  159. package/package.json +22 -15
  160. package/server/api/aside/major/nav/bookIds.ts +5 -5
  161. package/server/api/aside/major/nav/bookNav/[...bookId].ts +17 -20
  162. package/server/api/aside/major/nav/global.ts +7 -7
  163. package/server/api/aside/minor/book/[...bookId].ts +18 -0
  164. package/server/api/aside/minor/contributor/[contributorId].ts +18 -0
  165. package/server/api/aside/minor/group/[...groupId].ts +18 -0
  166. package/server/api/aside/minor/news.ts +7 -7
  167. package/server/api/aside/minor/topic.ts +36 -0
  168. package/server/api/bitran/content/[...location].ts +13 -0
  169. package/server/api/bitran/toc/[...location].ts +9 -0
  170. package/server/api/content/data.ts +75 -72
  171. package/server/api/contributor/count.ts +6 -6
  172. package/server/api/contributor/list.ts +44 -0
  173. package/server/api/contributor/page/[contributorId].ts +14 -0
  174. package/server/api/fake/content.ts +11 -11
  175. package/server/api/fake/shared/languages.ts +12 -12
  176. package/server/api/language/functions.ts +12 -12
  177. package/server/api/language/phrase/[phraseId].ts +19 -19
  178. package/server/api/language/phraseIds.ts +8 -8
  179. package/server/api/prerender.ts +19 -0
  180. package/server/api/preview/page/[...parts].ts +78 -51
  181. package/server/api/preview/unique/{[location].ts → [...location].ts} +48 -55
  182. package/server/api/problem/generator/[...path].ts +26 -0
  183. package/server/plugin/bitran/content.ts +252 -187
  184. package/server/plugin/bitran/{products → elements}/include.ts +229 -230
  185. package/server/plugin/bitran/location.ts +43 -25
  186. package/server/plugin/bitran/toc.ts +94 -83
  187. package/server/plugin/bitran/transpiler.ts +18 -46
  188. package/server/plugin/build/close.ts +12 -10
  189. package/server/plugin/build/jobs/content/builderArgs.ts +8 -8
  190. package/server/plugin/build/jobs/content/generic.ts +191 -176
  191. package/server/plugin/build/jobs/content/parse.ts +113 -100
  192. package/server/plugin/build/jobs/content/path.ts +6 -6
  193. package/server/plugin/build/jobs/content/type/book.ts +9 -9
  194. package/server/plugin/build/jobs/content/type/group.ts +37 -37
  195. package/server/plugin/build/jobs/content/type/topic.ts +36 -36
  196. package/server/plugin/build/jobs/contributors.ts +69 -66
  197. package/server/plugin/build/jobs/language.ts +36 -36
  198. package/server/plugin/build/jobs/nav.ts +345 -210
  199. package/server/plugin/build/process.ts +32 -25
  200. package/server/plugin/build/rebuild.ts +66 -55
  201. package/server/plugin/build/setup.ts +19 -21
  202. package/server/plugin/content/context.ts +119 -112
  203. package/server/plugin/db/entities/Book.ts +7 -7
  204. package/server/plugin/db/entities/Content.ts +45 -49
  205. package/server/plugin/db/entities/Contribution.ts +10 -10
  206. package/server/plugin/db/entities/Contributor.ts +25 -16
  207. package/server/plugin/db/entities/File.ts +10 -0
  208. package/server/plugin/db/entities/Group.ts +14 -14
  209. package/server/plugin/db/entities/Hash.ts +15 -15
  210. package/server/plugin/db/entities/Topic.ts +20 -20
  211. package/server/plugin/db/entities/Unique.ts +21 -21
  212. package/server/plugin/db/reset.ts +12 -0
  213. package/server/plugin/db/setup.ts +49 -34
  214. package/server/plugin/global.ts +16 -18
  215. package/server/plugin/importer.ts +16 -12
  216. package/server/plugin/index.ts +9 -9
  217. package/server/plugin/logger.ts +23 -23
  218. package/server/plugin/nav/node.ts +27 -26
  219. package/server/plugin/nav/utils.ts +179 -129
  220. package/server/plugin/repository/asideMinor.ts +51 -0
  221. package/server/plugin/repository/book.ts +39 -21
  222. package/server/plugin/repository/content.ts +240 -238
  223. package/server/plugin/repository/contentId.ts +40 -0
  224. package/server/plugin/repository/contributor.ts +98 -8
  225. package/server/plugin/repository/file.ts +10 -0
  226. package/server/plugin/repository/frontNav.ts +145 -148
  227. package/server/plugin/repository/topic.ts +35 -32
  228. package/server/tsconfig.json +9 -9
  229. package/shared/aside/minor.ts +55 -50
  230. package/shared/asset.ts +22 -15
  231. package/shared/bitran/content.ts +9 -0
  232. package/shared/bitran/contentId.ts +56 -0
  233. package/shared/bitran/toc.ts +8 -8
  234. package/shared/breadcrumb.ts +7 -0
  235. package/shared/content/bookId.ts +12 -0
  236. package/shared/content/context.ts +9 -9
  237. package/shared/content/data/base.ts +32 -32
  238. package/shared/content/data/index.ts +5 -5
  239. package/shared/content/data/type/book.ts +5 -5
  240. package/shared/content/data/type/group.ts +6 -6
  241. package/shared/content/data/type/topic.ts +11 -11
  242. package/shared/content/previousNext.ts +9 -9
  243. package/shared/contributor.ts +33 -5
  244. package/shared/frontNav.ts +41 -41
  245. package/shared/icons.ts +38 -38
  246. package/shared/image.ts +5 -5
  247. package/shared/link.ts +28 -25
  248. package/shared/popover.ts +8 -0
  249. package/shared/types/language.ts +79 -75
  250. package/shared/utils/objectsEqual.ts +4 -4
  251. package/shared/utils/stringColor.ts +9 -9
  252. package/test/contentId.test.ts +91 -0
  253. package/tsconfig.json +8 -8
  254. package/utils/contentPath.ts +67 -0
  255. package/utils/slash.ts +11 -0
  256. package/utils/stress.ts +9 -9
  257. package/app/components/ads/BannerTemplate.vue +0 -51
  258. package/app/components/ads/BottomBanner.vue +0 -45
  259. package/app/components/ads/LeftBanner.vue +0 -50
  260. package/app/components/aside/minor/AsideMinorContributor.vue +0 -5
  261. package/app/components/main/utils/ContentDescription.vue +0 -19
  262. package/app/components/main/utils/ContentFlag.vue +0 -15
  263. package/app/components/main/utils/ContentTitle.vue +0 -39
  264. package/app/composables/bitranContent.ts +0 -37
  265. package/app/pages/members.vue +0 -6
  266. package/app/styles/default.scss +0 -83
  267. package/server/api/aside/minor/path.ts +0 -78
  268. package/server/api/bitran/content/[location].ts +0 -7
  269. package/server/api/bitran/toc/[location].ts +0 -7
  270. package/server/plugin/bitran/products/link.ts +0 -116
  271. package/server/plugin/bitran/setup.ts +0 -9
  272. package/server/plugin/content/absoluteId.ts +0 -94
  273. package/shared/bitran/context.ts +0 -8
  274. package/shared/bitran/default.ts +0 -46
  275. package/shared/bitran/link/Link.vue +0 -167
  276. package/shared/bitran/link/factory.ts +0 -24
  277. package/shared/bitran/link/icon.svg +0 -3
  278. package/shared/bitran/link/languages/en.ts +0 -7
  279. package/shared/bitran/link/languages/ru.ts +0 -7
  280. package/shared/bitran/link/renderer.ts +0 -21
  281. package/shared/bitran/link/shared.ts +0 -17
  282. package/shared/bitran/link/target.ts +0 -134
  283. package/shared/bitran/link/transpiler.ts +0 -10
  284. package/shared/bitran/location.ts +0 -166
  285. package/test/bitran/link/target.test.ts +0 -141
  286. package/test/bitran/location.test.ts +0 -143
package/module/config.ts CHANGED
@@ -1,34 +1,35 @@
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-js/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
+ const configPath = projectPath('erudit.config');
11
+
12
+ try {
13
+ const projectConfig = (await import(configPath)).default;
14
+ if (!projectConfig) throw new Error('Falsy Erudit config!');
15
+ config = projectConfig;
16
+ } catch (error) {
17
+ logger.warn(`Failed to load Erudit config!\n\n${error}`);
18
+ }
19
+
20
+ const templateFilename = '#erudit/config.ts';
21
+
22
+ addTemplate({
23
+ filename: templateFilename,
24
+ write: true,
25
+ getContents: () => `
26
+ import type { EruditConfig } from '@erudit-js/cog/schema';
27
+ export default ${JSON.stringify(config, null, ' ')} as Partial<EruditConfig>;
28
+ `,
29
+ });
30
+
31
+ const alias = (_nuxt.options.alias ||= {});
32
+ alias['#erudit/config'] = eruditEndNuxtPath(`.nuxt/${templateFilename}`);
33
+
34
+ return config;
35
+ }
package/module/imports.ts CHANGED
@@ -1,46 +1,67 @@
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
+ // Bitran
16
+ ...(() => {
17
+ const imports = ['defineAppBitran'];
18
+ return imports.map((name) => ({
19
+ name,
20
+ from: eruditPath(`globals/bitran`),
21
+ }));
22
+ })(),
23
+ // Content
24
+ ...(() => {
25
+ const imports = [
26
+ 'defineBook',
27
+ 'defineGroup',
28
+ 'defineTopic',
29
+ 'defineContentReferences',
30
+ 'defineContentSource',
31
+ ];
32
+ return imports.map((name) => ({
33
+ name,
34
+ from: eruditPath(`globals/content`),
35
+ }));
36
+ })(),
37
+ // Problems Generation
38
+ {
39
+ name: 'defineProblemGenerator',
40
+ from: '@erudit-js/bitran-elements/problem/generator',
41
+ },
42
+ // Helper Asset Path Functions
43
+ ...(() => {
44
+ const imports = [
45
+ 'eruditAsset',
46
+ 'contributorAsset',
47
+ 'contentAsset',
48
+ 'publicAsset',
49
+ ];
50
+ return imports.map((name) => ({
51
+ name,
52
+ from: eruditPath(`shared/asset`),
53
+ }));
54
+ })(),
55
+ ]);
56
+
57
+ addServerImports([
58
+ // Bitran
59
+ ...(() => {
60
+ const imports = ['defineServerBitran'];
61
+ return imports.map((name) => ({
62
+ name,
63
+ from: eruditPath(`globals/bitran`),
64
+ }));
65
+ })(),
66
+ ]);
67
+ }
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 { setupBitranTemplates } 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 setupBitranTemplates(_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
+ const transpile = (_nuxt.options.build.transpile ||= []);
32
+ const optimizeDeps = _nuxt.options.vite.optimizeDeps || {};
33
+ const optimizeDepsInclude = (optimizeDeps.include ||= []);
34
+
35
+ const deps = eruditConfig.dependencies || {};
36
+ for (const [dep, options] of Object.entries(deps)) {
37
+ if (options?.transpile) transpile.push(dep);
38
+ if (options?.optimize) optimizeDepsInclude.push(dep);
39
+ }
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-js/cog/utils/brandNode';
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
+ }
package/module/restart.ts CHANGED
@@ -1,61 +1,61 @@
1
- import { exit } from 'node:process';
2
- import { globSync } from 'glob';
3
- import chokidar, { type FSWatcher } from 'chokidar';
4
- import type { Nuxt } from 'nuxt/schema';
5
-
6
- import { eruditPath, projectPath } from '@erudit/globalPath';
7
- import { logger } from '@erudit/module/logger';
8
- import { stress } from '@erudit/utils/stress';
9
-
10
- const watchTargets: string[] = [
11
- // Erudit Nuxt config file
12
- eruditPath('nuxt.config.ts'),
13
- // Erudit Globals
14
- eruditPath('globals'),
15
- // Erudit Nuxt module non-runtime files
16
- ...globSync(eruditPath('module/**/*')),
17
- // Erudit config in project root
18
- ...globSync(projectPath('erudit.{js,ts}')),
19
- // Erudit Bitran config in project root
20
- ...globSync(projectPath('bitran.{js,ts}')),
21
- ];
22
-
23
- const ignoreTargets: string[] = [
24
- // Erudit Nuxt module runtime files
25
- ...globSync(eruditPath('module/runtime/**/*')),
26
- ];
27
-
28
- const restartDelay = 300;
29
-
30
- //
31
- //
32
- //
33
-
34
- let watcher: FSWatcher;
35
- let restartTimeout: any;
36
- let nuxt: Nuxt;
37
-
38
- export function setupRestartWatcher(_nuxt: Nuxt) {
39
- nuxt = _nuxt;
40
-
41
- if (watcher) return;
42
-
43
- watcher = chokidar.watch(watchTargets, {
44
- ignored: ignoreTargets,
45
- ignoreInitial: true,
46
- });
47
-
48
- watcher.on('all', (event, path) => {
49
- clearTimeout(restartTimeout);
50
- restartTimeout = setTimeout(() => {
51
- console.log('\n');
52
- logger.info(
53
- `Restarting due to critical file change: ${stress(path)}\n\n`,
54
- );
55
- // Nuxt Restart Hook won't work when unhandled Node exception is thrown!
56
- // nuxt.callHook('restart', { hard: true, });
57
- // So we kill the process and restart it in Erudit CLI instead.
58
- exit(1337);
59
- }, restartDelay);
60
- });
61
- }
1
+ import { exit } from 'node:process';
2
+ import { globSync } from 'glob';
3
+ import chokidar, { type FSWatcher } from 'chokidar';
4
+ import type { Nuxt } from 'nuxt/schema';
5
+
6
+ import { eruditPath, projectPath } from '@erudit/globalPath';
7
+ import { logger } from '@erudit/module/logger';
8
+ import { stress } from '@erudit/utils/stress';
9
+
10
+ const watchTargets: string[] = [
11
+ // Erudit Nuxt config file
12
+ eruditPath('nuxt.config.ts'),
13
+ // Erudit Globals
14
+ eruditPath('globals'),
15
+ // Erudit Nuxt module non-runtime files
16
+ ...globSync(eruditPath('module/**/*')),
17
+ // Erudit config in project root
18
+ ...globSync(projectPath('erudit.config.{js,ts}')),
19
+ // Erudit Bitran config in project root
20
+ ...globSync(projectPath('bitran.{app,server}.{js,ts}')),
21
+ ];
22
+
23
+ const ignoreTargets: string[] = [
24
+ // Erudit Nuxt module runtime files
25
+ ...globSync(eruditPath('module/runtime/**/*')),
26
+ ];
27
+
28
+ const restartDelay = 300;
29
+
30
+ //
31
+ //
32
+ //
33
+
34
+ let watcher: FSWatcher;
35
+ let restartTimeout: any;
36
+ let nuxt: Nuxt;
37
+
38
+ export function setupRestartWatcher(_nuxt: Nuxt) {
39
+ nuxt = _nuxt;
40
+
41
+ if (watcher) return;
42
+
43
+ watcher = chokidar.watch(watchTargets, {
44
+ ignored: ignoreTargets,
45
+ ignoreInitial: true,
46
+ });
47
+
48
+ watcher.on('all', (event, path) => {
49
+ clearTimeout(restartTimeout);
50
+ restartTimeout = setTimeout(() => {
51
+ console.log('\n');
52
+ logger.info(
53
+ `Restarting due to critical file change: ${stress(path)}\n\n`,
54
+ );
55
+ // Nuxt Restart Hook won't work when unhandled Node exception is thrown!
56
+ // nuxt.callHook('restart', { hard: true, });
57
+ // So we kill the process and restart it in Erudit CLI instead.
58
+ exit(1337);
59
+ }, restartDelay);
60
+ });
61
+ }