erudit 3.0.0-dev.17 → 3.0.0-dev.18
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.
- package/app/app.vue +193 -191
- package/app/components/Loading.vue +23 -23
- package/app/components/SiteAside.vue +393 -393
- package/app/components/SiteMain.vue +32 -32
- package/app/components/aside/AsideListItem.vue +74 -74
- package/app/components/aside/AsideMajor.vue +56 -56
- package/app/components/aside/AsideMinor.vue +73 -73
- package/app/components/aside/major/PaneContentScroll.vue +23 -23
- package/app/components/aside/major/PaneSwitch.vue +54 -54
- package/app/components/aside/major/PaneSwitchButton.vue +63 -63
- package/app/components/aside/major/SiteInfo.vue +85 -85
- package/app/components/aside/major/panes/Language.vue +79 -79
- package/app/components/aside/major/panes/Pages.vue +34 -34
- package/app/components/aside/major/panes/Search.vue +11 -11
- package/app/components/aside/major/panes/nav/Nav.vue +92 -92
- package/app/components/aside/major/panes/nav/NavBook.vue +95 -95
- package/app/components/aside/major/panes/nav/NavBookLoading.vue +24 -24
- package/app/components/aside/major/panes/nav/NavGlobal.vue +16 -16
- package/app/components/aside/major/panes/nav/fnav/FNav.vue +105 -105
- package/app/components/aside/major/panes/nav/fnav/FNavBook.vue +32 -32
- package/app/components/aside/major/panes/nav/fnav/FNavFlags.vue +40 -40
- package/app/components/aside/major/panes/nav/fnav/FNavFolder.vue +60 -60
- package/app/components/aside/major/panes/nav/fnav/FNavItem.vue +34 -34
- package/app/components/aside/major/panes/nav/fnav/FNavSeparator.vue +80 -80
- package/app/components/aside/major/panes/nav/fnav/FNavTopic.vue +24 -24
- package/app/components/aside/major/panes/other/ItemContent.vue +29 -29
- package/app/components/aside/major/panes/other/ItemGenerator.vue +13 -13
- package/app/components/aside/major/panes/other/ItemTheme.vue +54 -54
- package/app/components/aside/major/panes/other/Other.vue +16 -16
- package/app/components/aside/minor/AsideMinorContributor.vue +5 -5
- package/app/components/aside/minor/AsideMinorNews.vue +11 -11
- package/app/components/aside/minor/AsideMinorPane.vue +15 -15
- package/app/components/aside/minor/AsideMinorTopLink.vue +67 -67
- package/app/components/aside/minor/Contribute.vue +145 -145
- package/app/components/aside/minor/content/AsideMinorContent.vue +92 -92
- package/app/components/aside/minor/topic/AsideMinorTopic.vue +32 -32
- package/app/components/aside/minor/topic/TopicContributors.vue +177 -177
- package/app/components/aside/minor/topic/TopicNav.vue +49 -49
- package/app/components/aside/minor/topic/TopicToc.vue +214 -214
- package/app/components/aside/minor/topic/TopicTocItem.vue +32 -32
- package/app/components/aside/utils/AsideOverlayPane.vue +40 -40
- package/app/components/bitran/BitranContent.vue +91 -91
- package/app/components/bitran/RenderWrapper.vue +10 -10
- package/app/components/contributor/ContributorAvatar.vue +45 -45
- package/app/components/contributor/ContributorListItem.vue +35 -35
- package/app/components/main/topic/MainTopic.vue +88 -88
- package/app/components/main/topic/TopicPartSwitch.vue +118 -118
- package/app/components/main/utils/Breadcrumb.vue +74 -74
- package/app/components/main/utils/ContentDecoration.vue +29 -29
- package/app/components/main/utils/ContentDescription.vue +19 -19
- package/app/components/main/utils/ContentPopover.vue +188 -188
- package/app/components/main/utils/ContentPopovers.vue +111 -111
- package/app/components/main/utils/ContentReferences.vue +70 -70
- package/app/components/main/utils/ContentSection.vue +45 -45
- package/app/components/main/utils/ContentTitle.vue +63 -63
- package/app/components/main/utils/reference/ReferenceGroup.vue +38 -38
- package/app/components/main/utils/reference/ReferenceItem.vue +70 -70
- package/app/components/main/utils/reference/ReferenceSource.vue +120 -120
- package/app/components/preview/Preview.vue +186 -186
- package/app/components/preview/PreviewDisplay.vue +139 -139
- package/app/components/preview/PreviewFooterAction.vue +73 -73
- package/app/components/preview/PreviewLoading.vue +14 -14
- package/app/components/preview/PreviewScreen.vue +141 -141
- package/app/components/preview/display/Alert.vue +50 -50
- package/app/components/preview/display/Custom.vue +18 -18
- package/app/components/preview/display/GenericLink.vue +48 -48
- package/app/components/preview/display/PageLink.vue +22 -22
- package/app/components/preview/display/Unique.vue +55 -55
- package/app/components/transition/Fade.vue +19 -19
- package/app/components/tree/TreeContainer.vue +11 -11
- package/app/components/tree/TreeItem.vue +89 -89
- package/app/composables/adsAllowed.ts +11 -0
- package/app/composables/bitran.ts +108 -108
- package/app/composables/bitranContent.ts +96 -92
- package/app/composables/bitranLocation.ts +7 -7
- package/app/composables/contentData.ts +38 -38
- package/app/composables/contentPage.ts +168 -158
- package/app/composables/contentRoute.ts +45 -45
- package/app/composables/darkMagic.ts +24 -24
- package/app/composables/externalApi.ts +69 -69
- package/app/composables/favicon.ts +8 -8
- package/app/composables/formatText.ts +99 -99
- package/app/composables/majorPane.ts +60 -60
- package/app/composables/phrases.ts +65 -65
- package/app/composables/theme.ts +29 -29
- package/app/composables/url.ts +33 -33
- package/app/pages/_test/preview.vue +110 -110
- package/app/pages/article/[...articleId].vue +3 -3
- package/app/pages/book/[...bookId].vue +47 -47
- package/app/pages/group/[...groupId].vue +66 -66
- package/app/pages/index.vue +32 -32
- package/app/pages/members.vue +5 -6
- package/app/pages/practice/[...practice].vue +3 -3
- package/app/pages/summary/[...summaryId].vue +3 -3
- package/app/plugins/analytics.ts +8 -0
- package/app/plugins/prerender.server.ts +22 -22
- package/app/scripts/_immediate.js +9 -9
- package/app/scripts/aside/index.ts +59 -59
- package/app/scripts/aside/major/nav.ts +26 -26
- package/app/scripts/aside/minor/state.ts +37 -37
- package/app/scripts/aside/minor/topic.ts +3 -3
- package/app/scripts/flag.ts +28 -28
- package/app/scripts/og.ts +27 -27
- package/app/scripts/preview/build.ts +76 -76
- package/app/scripts/preview/data/alert.ts +19 -19
- package/app/scripts/preview/data/custom.ts +8 -8
- package/app/scripts/preview/data/genericLink.ts +24 -24
- package/app/scripts/preview/data/pageLink.ts +23 -23
- package/app/scripts/preview/data/unique.ts +72 -72
- package/app/scripts/preview/data.ts +24 -24
- package/app/scripts/preview/display.ts +37 -37
- package/app/scripts/preview/footer.ts +9 -9
- package/app/scripts/preview/request.ts +51 -51
- package/app/scripts/preview/state.ts +63 -63
- package/app/styles/_immediate.css +7 -7
- package/app/styles/_util.scss +43 -43
- package/app/styles/_utils.scss +44 -44
- package/app/styles/app.scss +91 -91
- package/app/styles/def/_bp.scss +27 -27
- package/app/styles/def/_size.scss +7 -7
- package/app/styles/def/_z.scss +5 -5
- package/app/styles/normalize.scss +49 -49
- package/app/styles/partials/_darkMagic.scss +5 -5
- package/app/styles/partials/_fnav.scss +15 -15
- package/app/styles/partials/_preview.scss +5 -5
- package/bin/erudit.mjs +2 -2
- package/const.ts +4 -4
- package/globalPath.ts +21 -21
- package/globals/bitran.ts +1 -1
- package/globals/content.ts +27 -27
- package/globals/contributor.ts +5 -5
- package/globals/erudit.ts +5 -5
- package/globals/register.ts +18 -18
- package/languages/en.ts +94 -94
- package/languages/ru.ts +98 -98
- package/module/bitran.ts +66 -66
- package/module/config.ts +35 -35
- package/module/imports.ts +67 -67
- package/module/index.ts +47 -47
- package/module/logger.ts +10 -10
- package/module/paths.ts +22 -22
- package/module/restart.ts +61 -61
- package/nuxt.config.ts +131 -131
- package/package.json +4 -4
- package/server/api/aside/major/nav/bookIds.ts +5 -5
- package/server/api/aside/major/nav/bookNav/[...bookId].ts +17 -20
- package/server/api/aside/major/nav/global.ts +7 -7
- package/server/api/aside/minor/news.ts +7 -7
- package/server/api/aside/minor/path.ts +82 -82
- package/server/api/bitran/content/[...location].ts +10 -10
- package/server/api/bitran/toc/[...location].ts +9 -9
- package/server/api/content/data.ts +75 -75
- package/server/api/contributor/count.ts +6 -6
- package/server/api/fake/content.ts +11 -11
- package/server/api/fake/shared/languages.ts +12 -12
- package/server/api/language/functions.ts +12 -12
- package/server/api/language/phrase/[phraseId].ts +19 -19
- package/server/api/language/phraseIds.ts +8 -8
- package/server/api/prerender.ts +19 -120
- package/server/api/preview/page/[...parts].ts +78 -78
- package/server/api/preview/unique/[...location].ts +61 -61
- package/server/plugin/bitran/content.ts +237 -190
- package/server/plugin/bitran/elements/include.ts +229 -229
- package/server/plugin/bitran/location.ts +39 -39
- package/server/plugin/bitran/toc.ts +94 -94
- package/server/plugin/bitran/transpiler.ts +18 -18
- package/server/plugin/build/close.ts +12 -12
- package/server/plugin/build/jobs/content/builderArgs.ts +8 -8
- package/server/plugin/build/jobs/content/generic.ts +191 -191
- package/server/plugin/build/jobs/content/parse.ts +113 -113
- package/server/plugin/build/jobs/content/path.ts +6 -6
- package/server/plugin/build/jobs/content/type/book.ts +9 -9
- package/server/plugin/build/jobs/content/type/group.ts +37 -37
- package/server/plugin/build/jobs/content/type/topic.ts +36 -36
- package/server/plugin/build/jobs/contributors.ts +66 -66
- package/server/plugin/build/jobs/language.ts +36 -36
- package/server/plugin/build/jobs/nav.ts +345 -345
- package/server/plugin/build/process.ts +32 -32
- package/server/plugin/build/rebuild.ts +66 -66
- package/server/plugin/build/setup.ts +19 -19
- package/server/plugin/content/context.ts +119 -119
- package/server/plugin/db/entities/Book.ts +7 -7
- package/server/plugin/db/entities/Content.ts +45 -45
- package/server/plugin/db/entities/Contribution.ts +10 -10
- package/server/plugin/db/entities/Contributor.ts +16 -16
- package/server/plugin/db/entities/File.ts +10 -10
- package/server/plugin/db/entities/Group.ts +14 -14
- package/server/plugin/db/entities/Hash.ts +15 -15
- package/server/plugin/db/entities/Topic.ts +20 -20
- package/server/plugin/db/entities/Unique.ts +21 -21
- package/server/plugin/db/reset.ts +12 -12
- package/server/plugin/db/setup.ts +49 -49
- package/server/plugin/global.ts +16 -16
- package/server/plugin/importer.ts +16 -16
- package/server/plugin/index.ts +9 -9
- package/server/plugin/logger.ts +23 -23
- package/server/plugin/nav/node.ts +27 -27
- package/server/plugin/nav/utils.ts +179 -175
- package/server/plugin/repository/book.ts +23 -21
- package/server/plugin/repository/content.ts +240 -240
- package/server/plugin/repository/contentId.ts +40 -40
- package/server/plugin/repository/contributor.ts +8 -8
- package/server/plugin/repository/file.ts +10 -10
- package/server/plugin/repository/frontNav.ts +145 -145
- package/server/plugin/repository/topic.ts +35 -35
- package/server/tsconfig.json +9 -9
- package/shared/aside/minor.ts +51 -51
- package/shared/asset.ts +22 -22
- package/shared/bitran/contentId.ts +56 -56
- package/shared/bitran/stringContent.ts +6 -6
- package/shared/bitran/toc.ts +8 -8
- package/shared/content/bookId.ts +12 -12
- package/shared/content/context.ts +9 -9
- package/shared/content/data/base.ts +32 -32
- package/shared/content/data/index.ts +5 -5
- package/shared/content/data/type/book.ts +5 -5
- package/shared/content/data/type/group.ts +6 -6
- package/shared/content/data/type/topic.ts +11 -11
- package/shared/content/previousNext.ts +9 -9
- package/shared/contributor.ts +5 -5
- package/shared/frontNav.ts +41 -41
- package/shared/icons.ts +38 -38
- package/shared/image.ts +5 -5
- package/shared/link.ts +28 -28
- package/shared/popover.ts +8 -8
- package/shared/types/language.ts +74 -74
- package/shared/utils/objectsEqual.ts +4 -4
- package/shared/utils/stringColor.ts +9 -9
- package/test/contentId.test.ts +91 -91
- package/tsconfig.json +8 -8
- package/utils/contentPath.ts +67 -67
- package/utils/slash.ts +11 -11
- package/utils/stress.ts +9 -9
package/module/config.ts
CHANGED
|
@@ -1,35 +1,35 @@
|
|
|
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
|
-
}
|
|
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,67 +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
|
-
// 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
|
-
}
|
|
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 { 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
|
-
});
|
|
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-js/cog/utils/brandNode';
|
|
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.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
|
-
}
|
|
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
|
+
}
|