erudit 2.0.0-dev.9 → 3.0.0-dev.1

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 +111 -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 +209 -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 +7 -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
@@ -1,72 +1,72 @@
1
- import { getTopicPartsLinks } from '@server/repository/topic';
2
- import { getContentBookFor } from '@server/repository/book';
3
- import { getContentGenericData } from '@server/repository/content';
4
-
5
- import type { ContentGenericData } from '@shared/content/data/base';
6
- import type { ContentTopicData } from '@shared/content/data/type/topic';
7
- import type { ContentGroupData } from '@shared/content/data/type/group';
8
- import type { ContentBookData } from '@shared/content/data/type/book';
9
-
10
- export default defineEventHandler(async (event) => {
11
- const contentId = getQuery(event)?.contentId as string;
12
-
13
- if (!contentId)
14
- throw createError({
15
- statusCode: 400,
16
- statusText: 'Missing content ID!',
17
- });
18
-
19
- const generic = await getContentGenericData(contentId);
20
-
21
- switch (generic.type) {
22
- case 'topic':
23
- return await getTopicData(generic);
24
- case 'group':
25
- return await getGroupData(generic);
26
- case 'book':
27
- return await getBookData(generic);
28
- }
29
-
30
- throw createError({
31
- statusCode: 400,
32
- statusText: `Unknown content data type "${generic.type}"!`,
33
- });
34
- });
35
-
36
- //
37
- //
38
- //
39
-
40
- async function getTopicData(
41
- generic: ContentGenericData,
42
- ): Promise<ContentTopicData> {
43
- const contentBook = await getContentBookFor(generic.contentId);
44
-
45
- return {
46
- type: 'topic',
47
- generic,
48
- bookTitle: contentBook?.title,
49
- topicPartLinks: await getTopicPartsLinks(generic.contentId),
50
- };
51
- }
52
-
53
- async function getGroupData(
54
- generic: ContentGenericData,
55
- ): Promise<ContentGroupData> {
56
- const contentBook = await getContentBookFor(generic.contentId);
57
-
58
- return {
59
- type: 'group',
60
- generic,
61
- bookTitle: contentBook?.title,
62
- };
63
- }
64
-
65
- async function getBookData(
66
- generic: ContentGenericData,
67
- ): Promise<ContentBookData> {
68
- return {
69
- type: 'book',
70
- generic,
71
- };
72
- }
1
+ import { getTopicPartsLinks } from '@server/repository/topic';
2
+ import { getContentBookFor } from '@server/repository/book';
3
+ import { getContentGenericData } from '@server/repository/content';
4
+
5
+ import type { ContentGenericData } from '@shared/content/data/base';
6
+ import type { ContentTopicData } from '@shared/content/data/type/topic';
7
+ import type { ContentGroupData } from '@shared/content/data/type/group';
8
+ import type { ContentBookData } from '@shared/content/data/type/book';
9
+
10
+ export default defineEventHandler(async (event) => {
11
+ const contentId = getQuery(event)?.contentId as string;
12
+
13
+ if (!contentId)
14
+ throw createError({
15
+ statusCode: 400,
16
+ statusText: 'Missing content ID!',
17
+ });
18
+
19
+ const generic = await getContentGenericData(contentId);
20
+
21
+ switch (generic.type) {
22
+ case 'topic':
23
+ return await getTopicData(generic);
24
+ case 'group':
25
+ return await getGroupData(generic);
26
+ case 'book':
27
+ return await getBookData(generic);
28
+ }
29
+
30
+ throw createError({
31
+ statusCode: 400,
32
+ statusText: `Unknown content data type "${generic.type}"!`,
33
+ });
34
+ });
35
+
36
+ //
37
+ //
38
+ //
39
+
40
+ async function getTopicData(
41
+ generic: ContentGenericData,
42
+ ): Promise<ContentTopicData> {
43
+ const contentBook = await getContentBookFor(generic.contentId);
44
+
45
+ return {
46
+ type: 'topic',
47
+ generic,
48
+ bookTitle: contentBook?.title,
49
+ topicPartLinks: await getTopicPartsLinks(generic.contentId),
50
+ };
51
+ }
52
+
53
+ async function getGroupData(
54
+ generic: ContentGenericData,
55
+ ): Promise<ContentGroupData> {
56
+ const contentBook = await getContentBookFor(generic.contentId);
57
+
58
+ return {
59
+ type: 'group',
60
+ generic,
61
+ bookTitle: contentBook?.title,
62
+ };
63
+ }
64
+
65
+ async function getBookData(
66
+ generic: ContentGenericData,
67
+ ): Promise<ContentBookData> {
68
+ return {
69
+ type: 'book',
70
+ generic,
71
+ };
72
+ }
@@ -1,6 +1,6 @@
1
- import { DbContributor } from '@server/db/entities/Contributor';
2
- import { ERUDIT_SERVER } from '@server/global';
3
-
4
- export default defineEventHandler(async () => {
5
- return await ERUDIT_SERVER.DB.manager.count(DbContributor);
6
- });
1
+ import { DbContributor } from '@server/db/entities/Contributor';
2
+ import { ERUDIT_SERVER } from '@server/global';
3
+
4
+ export default defineEventHandler(async () => {
5
+ return await ERUDIT_SERVER.DB.manager.count(DbContributor);
6
+ });
@@ -1,11 +1,11 @@
1
- export default defineEventHandler(() => {
2
- return {
3
- commit: {
4
- commit: {
5
- author: {
6
- date: '2019-08-30T14:57:06.000Z'
7
- }
8
- }
9
- }
10
- }
11
- });
1
+ export default defineEventHandler(() => {
2
+ return {
3
+ commit: {
4
+ commit: {
5
+ author: {
6
+ date: '2019-08-30T14:57:06.000Z',
7
+ },
8
+ },
9
+ },
10
+ };
11
+ });
@@ -1,12 +1,12 @@
1
- export default defineEventHandler(() => {
2
- return {
3
- en: {
4
- name: 'English',
5
- link: 'https://en.omath.net',
6
- },
7
- ru: {
8
- name: 'Русский',
9
- link: 'https://omath.ru',
10
- },
11
- };
12
- });
1
+ export default defineEventHandler(() => {
2
+ return {
3
+ en: {
4
+ name: 'English',
5
+ link: 'https://en.omath.net',
6
+ },
7
+ ru: {
8
+ name: 'Русский',
9
+ link: 'https://omath.ru',
10
+ },
11
+ };
12
+ });
@@ -1,12 +1,12 @@
1
- import { ERUDIT_SERVER } from '@server/global';
2
-
3
- export default defineEventHandler(() => {
4
- const strFunctions: Record<string, string> = {};
5
-
6
- for (const [key, func] of Object.entries(
7
- ERUDIT_SERVER.LANGUAGE?.functions || {},
8
- ))
9
- strFunctions[key] = 'return ' + func.toString();
10
-
11
- return strFunctions;
12
- });
1
+ import { ERUDIT_SERVER } from '@server/global';
2
+
3
+ export default defineEventHandler(() => {
4
+ const strFunctions: Record<string, string> = {};
5
+
6
+ for (const [key, func] of Object.entries(
7
+ ERUDIT_SERVER.LANGUAGE?.functions || {},
8
+ ))
9
+ strFunctions[key] = 'return ' + func.toString();
10
+
11
+ return strFunctions;
12
+ });
@@ -1,19 +1,19 @@
1
- import type { EruditPhraseId } from '@shared/types/language';
2
- import { ERUDIT_SERVER } from '@server/global';
3
-
4
- export default defineEventHandler((event) => {
5
- const phraseId = getRouterParam(event, 'phraseId');
6
- const phrase =
7
- ERUDIT_SERVER.LANGUAGE?.phrases?.[phraseId as EruditPhraseId];
8
-
9
- setResponseHeader(event, 'content-type', 'text/plain');
10
-
11
- if (typeof phrase === 'string') return phrase;
12
- else if (typeof phrase === 'function')
13
- return '~!~FUNC~!~' + 'return ' + phrase.toString();
14
-
15
- throw createError({
16
- statusCode: 400,
17
- statusText: `Unknown phrase id "${phraseId}"!`,
18
- });
19
- });
1
+ import type { EruditPhraseId } from '@shared/types/language';
2
+ import { ERUDIT_SERVER } from '@server/global';
3
+
4
+ export default defineEventHandler((event) => {
5
+ const phraseId = getRouterParam(event, 'phraseId');
6
+ const phrase =
7
+ ERUDIT_SERVER.LANGUAGE?.phrases?.[phraseId as EruditPhraseId];
8
+
9
+ setResponseHeader(event, 'content-type', 'text/plain');
10
+
11
+ if (typeof phrase === 'string') return phrase;
12
+ else if (typeof phrase === 'function')
13
+ return '~!~FUNC~!~' + 'return ' + phrase.toString();
14
+
15
+ throw createError({
16
+ statusCode: 400,
17
+ statusText: `Unknown phrase id "${phraseId}"!`,
18
+ });
19
+ });
@@ -1,8 +1,8 @@
1
- import { ERUDIT_SERVER } from '@server/global';
2
- import type { EruditPhraseId } from '@shared/types/language';
3
-
4
- export default defineEventHandler(() => {
5
- return Object.keys(
6
- ERUDIT_SERVER.LANGUAGE?.phrases || [],
7
- ) as EruditPhraseId[];
8
- });
1
+ import { ERUDIT_SERVER } from '@server/global';
2
+ import type { EruditPhraseId } from '@shared/types/language';
3
+
4
+ export default defineEventHandler(() => {
5
+ return Object.keys(
6
+ ERUDIT_SERVER.LANGUAGE?.phrases || [],
7
+ ) as EruditPhraseId[];
8
+ });
@@ -1,51 +1,51 @@
1
- import {
2
- getContentContext,
3
- getTopicPartContext,
4
- getContributorContext,
5
- } from '@erudit/server/plugin/content/context';
6
-
7
- import type { PreviewDataPageLink } from '../../../../app/scripts/preview/data/pageLink';
8
- import type { LinkTargetPageType } from '@erudit/shared/bitran/link/target';
9
- import type { Context, ContextItem } from '@erudit/shared/content/context';
10
-
11
- export default defineEventHandler<Promise<PreviewDataPageLink>>(
12
- async (event) => {
13
- const urlParts = (event.context.params?.parts || '').split('/');
14
- const pageType: LinkTargetPageType = urlParts.shift() as any;
15
- const contentId: string = urlParts.join('/');
16
-
17
- const context: Context = await (async () => {
18
- switch (pageType) {
19
- case 'book':
20
- case 'group':
21
- return await getContentContext(contentId);
22
- case 'article':
23
- case 'summary':
24
- case 'practice':
25
- return await getTopicPartContext(pageType, contentId);
26
- case 'contributor':
27
- return await getContributorContext(contentId);
28
- }
29
-
30
- throw createError(`Can't handle "${pageType}" page type!`);
31
- })();
32
-
33
- const lastContextItem = context.pop() as ContextItem;
34
- const contextStr = context
35
- .filter((c) => !c.hidden)
36
- .map((c) => c.title)
37
- .join(' / ');
38
-
39
- return <PreviewDataPageLink>{
40
- type: 'page-link',
41
- footer: {
42
- secondary:
43
- (contextStr ? contextStr + ' • ' : '') +
44
- lastContextItem.type,
45
- primary: lastContextItem.title,
46
- href: lastContextItem.href,
47
- iconName: lastContextItem.icon,
48
- },
49
- };
50
- },
51
- );
1
+ import {
2
+ getContentContext,
3
+ getTopicPartContext,
4
+ getContributorContext,
5
+ } from '@erudit/server/plugin/content/context';
6
+
7
+ import type { PreviewDataPageLink } from '@app/scripts/preview/data/pageLink';
8
+ import type { LinkTargetPageType } from '@erudit/shared/bitran/link/target';
9
+ import type { Context, ContextItem } from '@erudit/shared/content/context';
10
+
11
+ export default defineEventHandler<Promise<PreviewDataPageLink>>(
12
+ async (event) => {
13
+ const urlParts = (event.context.params?.parts || '').split('/');
14
+ const pageType: LinkTargetPageType = urlParts.shift() as any;
15
+ const contentId: string = urlParts.join('/');
16
+
17
+ const context: Context = await (async () => {
18
+ switch (pageType) {
19
+ case 'book':
20
+ case 'group':
21
+ return await getContentContext(contentId);
22
+ case 'article':
23
+ case 'summary':
24
+ case 'practice':
25
+ return await getTopicPartContext(pageType, contentId);
26
+ case 'contributor':
27
+ return await getContributorContext(contentId);
28
+ }
29
+
30
+ throw createError(`Can't handle "${pageType}" page type!`);
31
+ })();
32
+
33
+ const lastContextItem = context.pop() as ContextItem;
34
+ const contextStr = context
35
+ .filter((c) => !c.hidden)
36
+ .map((c) => c.title)
37
+ .join(' / ');
38
+
39
+ return <PreviewDataPageLink>{
40
+ type: 'page-link',
41
+ footer: {
42
+ secondary:
43
+ (contextStr ? contextStr + ' • ' : '') +
44
+ lastContextItem.type,
45
+ primary: lastContextItem.title,
46
+ href: lastContextItem.href,
47
+ iconName: lastContextItem.icon,
48
+ },
49
+ };
50
+ },
51
+ );
@@ -1,55 +1,55 @@
1
- import type { BitranContent } from 'bitran';
2
-
3
- import { parseUrlLocation } from '@server/bitran/location';
4
- import { getLocationContext } from '@server/content/context';
5
- import { ERUDIT_SERVER } from '@server/global';
6
- import { DbUnique } from '@server/db/entities/Unique';
7
- import { getBitranContent } from '@server/bitran/content';
8
-
9
- import type { Context } from '@shared/content/context';
10
- import type { BitranContext } from '@shared/bitran/context';
11
- import { stringifyBitranLocation } from '@shared/bitran/location';
12
-
13
- interface ReturnType {
14
- context: Context;
15
- productTitle?: string;
16
- bitran: {
17
- productName: string;
18
- context: BitranContext;
19
- content: BitranContent;
20
- };
21
- }
22
-
23
- export default defineEventHandler<Promise<ReturnType>>(async (event) => {
24
- const location = parseUrlLocation(getRouterParam(event, 'location') || '');
25
-
26
- const context = await getLocationContext(location);
27
-
28
- const dbUnique = await (async () => {
29
- const dbUnique = ERUDIT_SERVER.DB.manager.findOne(DbUnique, {
30
- select: ['productName', 'title', 'context'],
31
- where: { location: stringifyBitranLocation(location) },
32
- });
33
-
34
- if (!dbUnique)
35
- throw createError(
36
- `Missing unique "${stringifyBitranLocation(location)}"!`,
37
- );
38
-
39
- return dbUnique as any as DbUnique;
40
- })();
41
-
42
- const bitran = await (async () => {
43
- return {
44
- content: await getBitranContent(location),
45
- context: dbUnique.context,
46
- productName: dbUnique.productName,
47
- };
48
- })();
49
-
50
- return <ReturnType>{
51
- context,
52
- productTitle: dbUnique.title,
53
- bitran,
54
- };
55
- });
1
+ import type { BitranContent } from 'bitran';
2
+
3
+ import { parseUrlLocation } from '@server/bitran/location';
4
+ import { getLocationContext } from '@server/content/context';
5
+ import { ERUDIT_SERVER } from '@server/global';
6
+ import { DbUnique } from '@server/db/entities/Unique';
7
+ import { getBitranContent } from '@server/bitran/content';
8
+
9
+ import type { Context } from '@shared/content/context';
10
+ import type { BitranContext } from '@shared/bitran/context';
11
+ import { stringifyBitranLocation } from '@shared/bitran/location';
12
+
13
+ interface ReturnType {
14
+ context: Context;
15
+ productTitle?: string;
16
+ bitran: {
17
+ productName: string;
18
+ context: BitranContext;
19
+ content: BitranContent;
20
+ };
21
+ }
22
+
23
+ export default defineEventHandler<Promise<ReturnType>>(async (event) => {
24
+ const location = parseUrlLocation(getRouterParam(event, 'location') || '');
25
+
26
+ const context = await getLocationContext(location);
27
+
28
+ const dbUnique = await (async () => {
29
+ const dbUnique = ERUDIT_SERVER.DB.manager.findOne(DbUnique, {
30
+ select: ['productName', 'title', 'context'],
31
+ where: { location: stringifyBitranLocation(location) },
32
+ });
33
+
34
+ if (!dbUnique)
35
+ throw createError(
36
+ `Missing unique "${stringifyBitranLocation(location)}"!`,
37
+ );
38
+
39
+ return dbUnique as any as DbUnique;
40
+ })();
41
+
42
+ const bitran = await (async () => {
43
+ return {
44
+ content: await getBitranContent(location),
45
+ context: dbUnique.context,
46
+ productName: dbUnique.productName,
47
+ };
48
+ })();
49
+
50
+ return <ReturnType>{
51
+ context,
52
+ productTitle: dbUnique.title,
53
+ bitran,
54
+ };
55
+ });