@life-and-dev/mdsite 0.6.0 → 0.7.0
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/README.md +16 -17
- package/dist/commands/clean.js +28 -10
- package/dist/commands/clean.js.map +1 -1
- package/dist/commands/commands.test.js +49 -21
- package/dist/commands/commands.test.js.map +1 -1
- package/dist/commands/generate.js +5 -4
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/init.js +2 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/prepare.js +2 -2
- package/dist/commands/prepare.js.map +1 -1
- package/dist/commands/prepare.test.js +9 -10
- package/dist/commands/prepare.test.js.map +1 -1
- package/dist/commands/preview.js +21 -21
- package/dist/commands/preview.js.map +1 -1
- package/dist/commands/start.js +13 -11
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/stop.js +7 -4
- package/dist/commands/stop.js.map +1 -1
- package/dist/commands/workflows.test.js +25 -24
- package/dist/commands/workflows.test.js.map +1 -1
- package/dist/config/default-mdsite-config.js +7 -8
- package/dist/config/default-mdsite-config.js.map +1 -1
- package/dist/config/default-mdsite-config.test.js +7 -8
- package/dist/config/default-mdsite-config.test.js.map +1 -1
- package/dist/config/mdsite-config.d.ts +46 -10
- package/dist/config/mdsite-config.js +46 -24
- package/dist/config/mdsite-config.js.map +1 -1
- package/dist/config/mdsite-config.test.js +55 -50
- package/dist/config/mdsite-config.test.js.map +1 -1
- package/dist/process/child-process.d.ts +4 -0
- package/dist/process/child-process.js +33 -1
- package/dist/process/child-process.js.map +1 -1
- package/dist/process/child-process.test.js +39 -3
- package/dist/process/child-process.test.js.map +1 -1
- package/dist/process/runtime-state.d.ts +13 -5
- package/dist/process/runtime-state.js +21 -13
- package/dist/process/runtime-state.js.map +1 -1
- package/dist/process/runtime-state.test.js +3 -5
- package/dist/process/runtime-state.test.js.map +1 -1
- package/dist/renderer/mdsite-nuxt.d.ts +28 -3
- package/dist/renderer/mdsite-nuxt.js +29 -12
- package/dist/renderer/mdsite-nuxt.js.map +1 -1
- package/dist/renderer/mdsite-nuxt.test.js +34 -12
- package/dist/renderer/mdsite-nuxt.test.js.map +1 -1
- package/mdsite-nuxt/app/components/AppFooter.vue +84 -22
- package/mdsite-nuxt/app/composables/useFooter.test.ts +54 -0
- package/mdsite-nuxt/app/composables/useFooter.ts +48 -31
- package/mdsite-nuxt/app/composables/useSiteConfig.test.ts +13 -87
- package/mdsite-nuxt/app/composables/useSiteConfig.ts +7 -26
- package/mdsite-nuxt/app/composables/useSourceEdit.test.ts +103 -0
- package/mdsite-nuxt/app/composables/useSourceEdit.ts +39 -51
- package/mdsite-nuxt/app/layouts/default.vue +10 -3
- package/mdsite-nuxt/nuxt.config.ts +21 -14
- package/mdsite-nuxt/scripts/generate-favicons.test.ts +3 -3
- package/mdsite-nuxt/scripts/generate-favicons.ts +4 -4
- package/mdsite-nuxt/scripts/generate-indices.test.ts +71 -10
- package/mdsite-nuxt/scripts/generate-indices.ts +161 -27
- package/mdsite-nuxt/scripts/renderer-hooks.test.ts +0 -86
- package/mdsite-nuxt/scripts/renderer-hooks.ts +1 -48
- package/mdsite-nuxt/utils/mdsite-config.ts +86 -41
- package/package.json +1 -1
- package/mdsite-nuxt/example.config.yml +0 -67
|
@@ -9,9 +9,17 @@ export interface RuntimeProcessState {
|
|
|
9
9
|
command: string[];
|
|
10
10
|
startedAt: string;
|
|
11
11
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Working directory for tracked detached processes.
|
|
14
|
+
*
|
|
15
|
+
* Anchored on the content directory (not the config directory) so that
|
|
16
|
+
* `<paths.build>` and `<paths.output>` resolve relative to the project the
|
|
17
|
+
* user is building, even when `paths.input` points the CLI at a sub-folder
|
|
18
|
+
* of the config directory.
|
|
19
|
+
*/
|
|
20
|
+
export declare function getRuntimeDir(contentDir: string, config: MdsiteConfig): string;
|
|
21
|
+
export declare function getRuntimeLogPath(contentDir: string, config: MdsiteConfig, kind: RuntimeProcessKind): string;
|
|
22
|
+
export declare function readRuntimeState(contentDir: string, config: MdsiteConfig, kind: RuntimeProcessKind): Promise<RuntimeProcessState | null>;
|
|
23
|
+
export declare function writeRuntimeState(contentDir: string, config: MdsiteConfig, state: RuntimeProcessState): Promise<void>;
|
|
24
|
+
export declare function clearRuntimeState(contentDir: string, config: MdsiteConfig, kind: RuntimeProcessKind): Promise<void>;
|
|
17
25
|
export declare function isProcessRunning(pid: number): boolean;
|
|
@@ -4,14 +4,22 @@ const RUNTIME_BASENAME = {
|
|
|
4
4
|
start: 'live',
|
|
5
5
|
preview: 'static'
|
|
6
6
|
};
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Working directory for tracked detached processes.
|
|
9
|
+
*
|
|
10
|
+
* Anchored on the content directory (not the config directory) so that
|
|
11
|
+
* `<paths.build>` and `<paths.output>` resolve relative to the project the
|
|
12
|
+
* user is building, even when `paths.input` points the CLI at a sub-folder
|
|
13
|
+
* of the config directory.
|
|
14
|
+
*/
|
|
15
|
+
export function getRuntimeDir(contentDir, config) {
|
|
16
|
+
return path.resolve(contentDir, config.paths.build);
|
|
9
17
|
}
|
|
10
|
-
export function getRuntimeLogPath(
|
|
11
|
-
return path.join(getRuntimeDir(
|
|
18
|
+
export function getRuntimeLogPath(contentDir, config, kind) {
|
|
19
|
+
return path.join(getRuntimeDir(contentDir, config), `${RUNTIME_BASENAME[kind]}.log`);
|
|
12
20
|
}
|
|
13
|
-
export async function readRuntimeState(
|
|
14
|
-
const statePath = getStatePath(
|
|
21
|
+
export async function readRuntimeState(contentDir, config, kind) {
|
|
22
|
+
const statePath = getStatePath(contentDir, config, kind);
|
|
15
23
|
try {
|
|
16
24
|
const content = await readFile(statePath, 'utf8');
|
|
17
25
|
return JSON.parse(content);
|
|
@@ -20,12 +28,12 @@ export async function readRuntimeState(configDir, config, kind) {
|
|
|
20
28
|
return null;
|
|
21
29
|
}
|
|
22
30
|
}
|
|
23
|
-
export async function writeRuntimeState(
|
|
24
|
-
await mkdir(getRuntimeDir(
|
|
25
|
-
await writeFile(getStatePath(
|
|
31
|
+
export async function writeRuntimeState(contentDir, config, state) {
|
|
32
|
+
await mkdir(getRuntimeDir(contentDir, config), { recursive: true });
|
|
33
|
+
await writeFile(getStatePath(contentDir, config, state.kind), `${JSON.stringify(state, null, 2)}\n`, 'utf8');
|
|
26
34
|
}
|
|
27
|
-
export async function clearRuntimeState(
|
|
28
|
-
await rm(getStatePath(
|
|
35
|
+
export async function clearRuntimeState(contentDir, config, kind) {
|
|
36
|
+
await rm(getStatePath(contentDir, config, kind), { force: true });
|
|
29
37
|
}
|
|
30
38
|
export function isProcessRunning(pid) {
|
|
31
39
|
try {
|
|
@@ -36,7 +44,7 @@ export function isProcessRunning(pid) {
|
|
|
36
44
|
return false;
|
|
37
45
|
}
|
|
38
46
|
}
|
|
39
|
-
function getStatePath(
|
|
40
|
-
return path.join(getRuntimeDir(
|
|
47
|
+
function getStatePath(contentDir, config, kind) {
|
|
48
|
+
return path.join(getRuntimeDir(contentDir, config), `${RUNTIME_BASENAME[kind]}.json`);
|
|
41
49
|
}
|
|
42
50
|
//# sourceMappingURL=runtime-state.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-state.js","sourceRoot":"","sources":["../../src/process/runtime-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,IAAI,MAAM,WAAW,CAAA;AAK5B,MAAM,gBAAgB,GAAuC;IAC3D,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,QAAQ;CAClB,CAAA;AAYD,MAAM,UAAU,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"runtime-state.js","sourceRoot":"","sources":["../../src/process/runtime-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,IAAI,MAAM,WAAW,CAAA;AAK5B,MAAM,gBAAgB,GAAuC;IAC3D,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,QAAQ;CAClB,CAAA;AAYD;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkB,EAAE,MAAoB;IACpE,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AACrD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,UAAkB,EAAE,MAAoB,EAAE,IAAwB;IAClG,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AACtF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,UAAkB,EAAE,MAAoB,EAAE,IAAwB;IACvG,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IACxD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QACjD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAwB,CAAA;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,UAAkB,EAAE,MAAoB,EAAE,KAA0B;IAC1G,MAAM,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACnE,MAAM,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;AAC9G,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,UAAkB,EAAE,MAAoB,EAAE,IAAwB;IACxG,MAAM,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;AACnE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;QACpB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,UAAkB,EAAE,MAAoB,EAAE,IAAwB;IACtF,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACvF,CAAC"}
|
|
@@ -4,12 +4,10 @@ import path from 'node:path';
|
|
|
4
4
|
import { afterEach, describe, expect, it, vi } from 'vitest';
|
|
5
5
|
import { clearRuntimeState, getRuntimeDir, getRuntimeLogPath, isProcessRunning, readRuntimeState, writeRuntimeState } from './runtime-state.js';
|
|
6
6
|
const config = {
|
|
7
|
-
|
|
8
|
-
features: { bibleTooltips: true, sourceEdit: true },
|
|
7
|
+
features: { bibleTooltips: true, sourceEdit: '', footer: [] },
|
|
9
8
|
menu: [],
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
site: { canonical: '', name: 'Docs' },
|
|
9
|
+
paths: { input: '', build: '.renderer', output: '.output' },
|
|
10
|
+
site: { canonical: '', favicon: '', name: 'Docs' },
|
|
13
11
|
themes: { light: { colors: {} }, dark: { colors: {} } }
|
|
14
12
|
};
|
|
15
13
|
const tempDirs = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-state.test.js","sourceRoot":"","sources":["../../src/process/runtime-state.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAI5D,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,oBAAoB,CAAA;AAE3B,MAAM,MAAM,GAAiB;IAC3B,
|
|
1
|
+
{"version":3,"file":"runtime-state.test.js","sourceRoot":"","sources":["../../src/process/runtime-state.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,34 @@ import type { MdsiteConfig } from '../config/mdsite-config.js';
|
|
|
2
2
|
export declare function getBundledRendererDir(): string;
|
|
3
3
|
export declare function isInsideNodeModules(targetDir: string): boolean;
|
|
4
4
|
interface PreparedRenderer {
|
|
5
|
+
/**
|
|
6
|
+
* Where the renderer scripts run (`npm run dev` / `generate` / `preview`).
|
|
7
|
+
* In production this is `<configDir>/<paths.build>` (a materialized copy of
|
|
8
|
+
* the bundled renderer). In dev, when the CLI is run from this repo, it is
|
|
9
|
+
* the checked-in `mdsite-nuxt/` submodule.
|
|
10
|
+
*/
|
|
5
11
|
rendererDir: string;
|
|
12
|
+
/**
|
|
13
|
+
* Environment to pass to renderer scripts. Includes the bridge vars
|
|
14
|
+
* (`NUXT_CONTENT_PATH`, `CONTENT_DIR`, `MDSITE_CONFIG_PATH`) and, in dev
|
|
15
|
+
* mode, `MDSITE_NITRO_OUTPUT_DIR` pointing the build output at
|
|
16
|
+
* `<configDir>/<paths.build>/.output/` instead of inside the submodule.
|
|
17
|
+
*/
|
|
6
18
|
rendererEnv: NodeJS.ProcessEnv;
|
|
19
|
+
/**
|
|
20
|
+
* Absolute path of the renderer's Nitro build output directory (the
|
|
21
|
+
* directory that contains `public/` after a successful `npm run generate`).
|
|
22
|
+
*
|
|
23
|
+
* - Production: `<configDir>/<paths.build>/.output` (Nitro's default inside
|
|
24
|
+
* the materialized copy).
|
|
25
|
+
* - Dev: `<configDir>/<paths.build>/.output` (set via `MDSITE_NITRO_OUTPUT_DIR`
|
|
26
|
+
* so the build lands alongside the rest of the CLI's working state rather
|
|
27
|
+
* than inside the `mdsite-nuxt/` submodule).
|
|
28
|
+
*
|
|
29
|
+
* `mdsite clean` removes `<configDir>/<paths.build>` entirely, which
|
|
30
|
+
* covers this path in both modes.
|
|
31
|
+
*/
|
|
32
|
+
rendererOutputDir: string;
|
|
7
33
|
}
|
|
8
34
|
interface PrepareRendererOptions {
|
|
9
35
|
configDir?: string;
|
|
@@ -19,7 +45,6 @@ export declare function previewRendererInBackground(rendererDir: string, env: No
|
|
|
19
45
|
export declare function previewRendererForeground(rendererDir: string, env: NodeJS.ProcessEnv): Promise<void>;
|
|
20
46
|
export declare function generateRenderer(rendererDir: string, env: NodeJS.ProcessEnv): Promise<void>;
|
|
21
47
|
export declare function prepareRendererBackend(rendererDir: string, env: NodeJS.ProcessEnv): Promise<void>;
|
|
22
|
-
export declare function hasPreviewArtifacts(
|
|
23
|
-
export declare function ensurePreviewArtifacts(
|
|
24
|
-
export declare function getRendererGeneratedOutputPath(rendererDir: string): string;
|
|
48
|
+
export declare function hasPreviewArtifacts(rendererOutputDir: string): Promise<boolean>;
|
|
49
|
+
export declare function ensurePreviewArtifacts(rendererOutputDir: string): Promise<void>;
|
|
25
50
|
export {};
|
|
@@ -24,7 +24,7 @@ export async function prepareConfiguredRenderer(contentDir, config, options = {}
|
|
|
24
24
|
}
|
|
25
25
|
export async function ensureConfiguredRendererInstalled(contentDir, config, options = {}) {
|
|
26
26
|
const rendererBaseDir = options.configDir ?? contentDir;
|
|
27
|
-
const rendererDir = path.resolve(rendererBaseDir, config.
|
|
27
|
+
const rendererDir = path.resolve(rendererBaseDir, config.paths.build);
|
|
28
28
|
await ensureDirectoryIsAvailable(rendererDir);
|
|
29
29
|
if (rendererDir !== checkedInRendererDir) {
|
|
30
30
|
await cp(checkedInRendererDir, rendererDir, {
|
|
@@ -37,16 +37,31 @@ export async function ensureConfiguredRendererInstalled(contentDir, config, opti
|
|
|
37
37
|
}
|
|
38
38
|
async function prepareRendererEnvironment(contentDir, config, rendererDir, configPath) {
|
|
39
39
|
await writeCompatibilityConfigFile(rendererDir, contentDir, config);
|
|
40
|
+
// In dev mode, the renderer IS the checked-in submodule. Redirect Nitro's
|
|
41
|
+
// output to `<configDir>/<paths.build>/.output` so the build artifact lives
|
|
42
|
+
// alongside the rest of the CLI's working state (covered by `mdsite clean`)
|
|
43
|
+
// instead of inside the submodule source tree.
|
|
44
|
+
const isDevRenderer = !isInsideNodeModules(checkedInRendererDir) && path.resolve(rendererDir) === path.resolve(checkedInRendererDir);
|
|
45
|
+
const rendererOutputDir = isDevRenderer
|
|
46
|
+
? path.resolve(contentDir, config.paths.build, '.output')
|
|
47
|
+
: path.join(rendererDir, '.output');
|
|
48
|
+
if (isDevRenderer) {
|
|
49
|
+
await mkdir(rendererOutputDir, { recursive: true });
|
|
50
|
+
}
|
|
40
51
|
const rendererEnv = {
|
|
41
52
|
...process.env,
|
|
42
53
|
NUXT_CONTENT_PATH: contentDir,
|
|
43
54
|
CONTENT_DIR: contentDir,
|
|
44
55
|
MDSITE_CONFIG_PATH: configPath ?? path.join(contentDir, 'mdsite.yml')
|
|
45
56
|
};
|
|
57
|
+
if (isDevRenderer) {
|
|
58
|
+
rendererEnv.MDSITE_NITRO_OUTPUT_DIR = rendererOutputDir;
|
|
59
|
+
}
|
|
46
60
|
await writeEnvFile(rendererDir, rendererEnv);
|
|
47
61
|
return {
|
|
48
62
|
rendererDir,
|
|
49
|
-
rendererEnv
|
|
63
|
+
rendererEnv,
|
|
64
|
+
rendererOutputDir
|
|
50
65
|
};
|
|
51
66
|
}
|
|
52
67
|
export async function ensureRendererDependencies(rendererDir) {
|
|
@@ -77,9 +92,9 @@ export async function generateRenderer(rendererDir, env) {
|
|
|
77
92
|
export async function prepareRendererBackend(rendererDir, env) {
|
|
78
93
|
await runRendererScript(rendererDir, env, 'prepare:renderer');
|
|
79
94
|
}
|
|
80
|
-
export async function hasPreviewArtifacts(
|
|
95
|
+
export async function hasPreviewArtifacts(rendererOutputDir) {
|
|
81
96
|
const previewArtifacts = [
|
|
82
|
-
path.join(
|
|
97
|
+
path.join(rendererOutputDir, 'public')
|
|
83
98
|
];
|
|
84
99
|
for (const artifactPath of previewArtifacts) {
|
|
85
100
|
try {
|
|
@@ -91,14 +106,11 @@ export async function hasPreviewArtifacts(rendererDir) {
|
|
|
91
106
|
}
|
|
92
107
|
return true;
|
|
93
108
|
}
|
|
94
|
-
export async function ensurePreviewArtifacts(
|
|
95
|
-
if (!(await hasPreviewArtifacts(
|
|
109
|
+
export async function ensurePreviewArtifacts(rendererOutputDir) {
|
|
110
|
+
if (!(await hasPreviewArtifacts(rendererOutputDir))) {
|
|
96
111
|
throw new Error('Preview is unavailable. Run `mdsite generate` before `mdsite static`.');
|
|
97
112
|
}
|
|
98
113
|
}
|
|
99
|
-
export function getRendererGeneratedOutputPath(rendererDir) {
|
|
100
|
-
return path.join(rendererDir, '.output', 'public');
|
|
101
|
-
}
|
|
102
114
|
async function resolveRendererDir(rendererBaseDir, config, options = {}) {
|
|
103
115
|
if (isInsideNodeModules(checkedInRendererDir)) {
|
|
104
116
|
return ensureConfiguredRendererInstalled(rendererBaseDir, config, options);
|
|
@@ -109,7 +121,7 @@ async function resolveRendererDir(rendererBaseDir, config, options = {}) {
|
|
|
109
121
|
return checkedInRendererDir;
|
|
110
122
|
}
|
|
111
123
|
async function resolveConfiguredRendererDir(contentDir, config) {
|
|
112
|
-
const rendererDir = path.resolve(contentDir, config.
|
|
124
|
+
const rendererDir = path.resolve(contentDir, config.paths.build);
|
|
113
125
|
let rendererStats;
|
|
114
126
|
try {
|
|
115
127
|
rendererStats = await stat(rendererDir);
|
|
@@ -145,6 +157,9 @@ async function writeEnvFile(rendererDir, env) {
|
|
|
145
157
|
`CONTENT_DIR=${serializeEnvValue(env.CONTENT_DIR)}`,
|
|
146
158
|
`MDSITE_CONFIG_PATH=${serializeEnvValue(env.MDSITE_CONFIG_PATH)}`
|
|
147
159
|
];
|
|
160
|
+
if (env.MDSITE_NITRO_OUTPUT_DIR) {
|
|
161
|
+
envLines.push(`MDSITE_NITRO_OUTPUT_DIR=${serializeEnvValue(env.MDSITE_NITRO_OUTPUT_DIR)}`);
|
|
162
|
+
}
|
|
148
163
|
await writeFile(path.join(rendererDir, '.env'), `${envLines.join('\n')}\n`, 'utf8');
|
|
149
164
|
}
|
|
150
165
|
async function writeCompatibilityConfigFile(rendererDir, contentDir, config) {
|
|
@@ -152,8 +167,10 @@ async function writeCompatibilityConfigFile(rendererDir, contentDir, config) {
|
|
|
152
167
|
siteName: config.site.name,
|
|
153
168
|
siteCanonical: config.site.canonical,
|
|
154
169
|
contentPath: contentDir,
|
|
155
|
-
|
|
156
|
-
|
|
170
|
+
features: {
|
|
171
|
+
'bible-tooltips': config.features.bibleTooltips,
|
|
172
|
+
'source-edit': config.features.sourceEdit
|
|
173
|
+
},
|
|
157
174
|
themes: config.themes
|
|
158
175
|
};
|
|
159
176
|
await writeFile(path.join(rendererDir, 'content.config.yml'), YAML.stringify(compatibilityConfig), 'utf8');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mdsite-nuxt.js","sourceRoot":"","sources":["../../src/renderer/mdsite-nuxt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,IAAI,MAAM,MAAM,CAAA;AAGvB,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAE1E,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AACvF,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;AAC/D,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAA;AAEhG,MAAM,UAAU,qBAAqB;IACnC,OAAO,oBAAoB,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;AAC3D,CAAC;
|
|
1
|
+
{"version":3,"file":"mdsite-nuxt.js","sourceRoot":"","sources":["../../src/renderer/mdsite-nuxt.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ vi.mock('../process/child-process.js', () => ({
|
|
|
13
13
|
}));
|
|
14
14
|
import { access, cp, mkdir, stat, writeFile } from 'node:fs/promises';
|
|
15
15
|
import { runBackground, runForeground } from '../process/child-process.js';
|
|
16
|
-
import { ensurePreviewArtifacts, ensureConfiguredRendererInstalled, ensureRendererDependencies, generateRenderer,
|
|
16
|
+
import { ensurePreviewArtifacts, ensureConfiguredRendererInstalled, ensureRendererDependencies, generateRenderer, isInsideNodeModules, prepareRendererBackend, prepareConfiguredRenderer, prepareRenderer, previewRendererForeground, previewRendererInBackground, startRendererForeground, startRendererInBackground } from './mdsite-nuxt.js';
|
|
17
17
|
const accessMock = vi.mocked(access);
|
|
18
18
|
const cpMock = vi.mocked(cp);
|
|
19
19
|
const mkdirMock = vi.mocked(mkdir);
|
|
@@ -22,12 +22,10 @@ const writeFileMock = vi.mocked(writeFile);
|
|
|
22
22
|
const runForegroundMock = vi.mocked(runForeground);
|
|
23
23
|
const runBackgroundMock = vi.mocked(runBackground);
|
|
24
24
|
const baseConfig = {
|
|
25
|
-
|
|
26
|
-
features: { bibleTooltips: true, sourceEdit: true },
|
|
27
|
-
footer: [],
|
|
25
|
+
features: { bibleTooltips: true, sourceEdit: '', footer: [] },
|
|
28
26
|
menu: [],
|
|
29
|
-
|
|
30
|
-
site: { canonical: '', name: 'Docs' },
|
|
27
|
+
paths: { input: '', build: '.renderer', output: '.output' },
|
|
28
|
+
site: { canonical: '', favicon: '', name: 'Docs' },
|
|
31
29
|
themes: {
|
|
32
30
|
light: { colors: { primary: '#111111' } },
|
|
33
31
|
dark: { colors: { primary: '#222222' } }
|
|
@@ -45,10 +43,17 @@ describe('mdsite-nuxt renderer helpers', () => {
|
|
|
45
43
|
const rendererDir = path.resolve(process.cwd(), 'mdsite-nuxt');
|
|
46
44
|
const prepared = await prepareRenderer(contentDir, baseConfig);
|
|
47
45
|
expect(prepared.rendererDir).toBe(rendererDir);
|
|
46
|
+
// In dev the renderer IS the checked-in submodule, so the build output
|
|
47
|
+
// is redirected to <contentDir>/<paths.build>/.output (covered by
|
|
48
|
+
// `mdsite clean`) instead of inside the submodule.
|
|
49
|
+
expect(prepared.rendererOutputDir).toBe(path.join(contentDir, baseConfig.paths.build, '.output'));
|
|
50
|
+
expect(prepared.rendererEnv.MDSITE_NITRO_OUTPUT_DIR).toBe(prepared.rendererOutputDir);
|
|
48
51
|
expect(prepared.rendererEnv.NUXT_CONTENT_PATH).toBe(contentDir);
|
|
49
52
|
expect(prepared.rendererEnv.MDSITE_CONFIG_PATH).toBe(path.join(contentDir, 'mdsite.yml'));
|
|
53
|
+
expect(mkdirMock).toHaveBeenCalledWith(prepared.rendererOutputDir, { recursive: true });
|
|
50
54
|
expect(writeFileMock).toHaveBeenCalledWith(path.join(rendererDir, 'content.config.yml'), expect.stringContaining('siteName: Docs'), 'utf8');
|
|
51
55
|
expect(writeFileMock).toHaveBeenCalledWith(path.join(rendererDir, '.env'), expect.stringContaining(`NUXT_CONTENT_PATH=${JSON.stringify(contentDir)}`), 'utf8');
|
|
56
|
+
expect(writeFileMock).toHaveBeenCalledWith(path.join(rendererDir, '.env'), expect.stringContaining(`MDSITE_NITRO_OUTPUT_DIR=${JSON.stringify(prepared.rendererOutputDir)}`), 'utf8');
|
|
52
57
|
});
|
|
53
58
|
it('prepareRenderer uses effective content dir for content env and runs the checked-in renderer in place', async () => {
|
|
54
59
|
const configDir = '/workspace';
|
|
@@ -57,10 +62,28 @@ describe('mdsite-nuxt renderer helpers', () => {
|
|
|
57
62
|
const configPath = path.join(configDir, 'mdsite.yml');
|
|
58
63
|
const prepared = await prepareRenderer(contentDir, baseConfig, { configDir, configPath });
|
|
59
64
|
expect(prepared.rendererDir).toBe(rendererDir);
|
|
65
|
+
// Output dir is anchored on the content dir, not the config dir, so a
|
|
66
|
+
// sibling `mdsite.yml` (e.g. `paths.input: docs`) still routes the
|
|
67
|
+
// build to the project's own working dir.
|
|
68
|
+
expect(prepared.rendererOutputDir).toBe(path.join(contentDir, baseConfig.paths.build, '.output'));
|
|
60
69
|
expect(prepared.rendererEnv.NUXT_CONTENT_PATH).toBe(contentDir);
|
|
61
70
|
expect(prepared.rendererEnv.CONTENT_DIR).toBe(contentDir);
|
|
62
71
|
expect(prepared.rendererEnv.MDSITE_CONFIG_PATH).toBe(configPath);
|
|
63
72
|
});
|
|
73
|
+
it('prepareRenderer does not redirect the build output when the renderer is the configured build dir', async () => {
|
|
74
|
+
// Production: `ensureConfiguredRendererInstalled` materializes the
|
|
75
|
+
// renderer into `<configDir>/<paths.build>`. Nitro's default `.output`
|
|
76
|
+
// already lives inside `paths.build`, so no env var is needed and
|
|
77
|
+
// `mdsite clean` covers it via the existing `paths.build` removal.
|
|
78
|
+
const contentDir = '/workspace/content';
|
|
79
|
+
const configuredRendererDir = path.resolve(contentDir, baseConfig.paths.build);
|
|
80
|
+
statMock.mockResolvedValueOnce({ isDirectory: () => true });
|
|
81
|
+
mkdirMock.mockResolvedValueOnce(undefined);
|
|
82
|
+
const prepared = await prepareConfiguredRenderer(contentDir, baseConfig);
|
|
83
|
+
expect(prepared.rendererDir).toBe(configuredRendererDir);
|
|
84
|
+
expect(prepared.rendererOutputDir).toBe(path.join(configuredRendererDir, '.output'));
|
|
85
|
+
expect(prepared.rendererEnv.MDSITE_NITRO_OUTPUT_DIR).toBeUndefined();
|
|
86
|
+
});
|
|
64
87
|
it('runs the checked-in renderer in place when the configured renderer dir is absent', async () => {
|
|
65
88
|
const contentDir = '/workspace/content';
|
|
66
89
|
const checkedInRendererDir = path.resolve(process.cwd(), 'mdsite-nuxt');
|
|
@@ -152,15 +175,14 @@ describe('mdsite-nuxt renderer helpers', () => {
|
|
|
152
175
|
await ensureRendererDependencies(rendererDir);
|
|
153
176
|
expect(runForegroundMock).not.toHaveBeenCalled();
|
|
154
177
|
});
|
|
155
|
-
it('checks the generated preview artifact
|
|
156
|
-
const
|
|
157
|
-
await expect(ensurePreviewArtifacts(
|
|
158
|
-
expect(
|
|
159
|
-
expect(accessMock).toHaveBeenCalledWith(path.join(rendererDir, '.output', 'public'));
|
|
178
|
+
it('checks the generated preview artifact inside the resolved renderer output dir', async () => {
|
|
179
|
+
const rendererOutputDir = '/renderer/.output';
|
|
180
|
+
await expect(ensurePreviewArtifacts(rendererOutputDir)).resolves.toBeUndefined();
|
|
181
|
+
expect(accessMock).toHaveBeenCalledWith(path.join(rendererOutputDir, 'public'));
|
|
160
182
|
accessMock.mockImplementationOnce(async () => {
|
|
161
183
|
throw new Error('missing public output');
|
|
162
184
|
});
|
|
163
|
-
await expect(ensurePreviewArtifacts(
|
|
185
|
+
await expect(ensurePreviewArtifacts(rendererOutputDir)).rejects.toThrow('Preview is unavailable. Run `mdsite generate` before `mdsite static`.');
|
|
164
186
|
});
|
|
165
187
|
it('delegates stable dev/generate/preview script names to child-process helpers', async () => {
|
|
166
188
|
const env = { TEST: '1' };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mdsite-nuxt.test.js","sourceRoot":"","sources":["../../src/renderer/mdsite-nuxt.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mdsite-nuxt.test.js","sourceRoot":"","sources":["../../src/renderer/mdsite-nuxt.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +1,44 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
|
|
2
|
+
<!--
|
|
3
|
+
In-flow footer: rendered inside <v-main> by the default layout, so it sits
|
|
4
|
+
at the end of the article and only becomes visible after the user scrolls
|
|
5
|
+
all the way down. Not a fixed/anchored bar.
|
|
6
|
+
-->
|
|
7
|
+
<v-footer
|
|
3
8
|
v-if="hasFooterEntries"
|
|
4
|
-
location="bottom"
|
|
5
|
-
height="56"
|
|
6
9
|
class="app-footer"
|
|
7
|
-
|
|
10
|
+
color="surface-appbar"
|
|
11
|
+
border="top"
|
|
8
12
|
>
|
|
9
|
-
<v-container class="d-flex justify-center align-center">
|
|
13
|
+
<v-container class="d-flex justify-center align-center py-3">
|
|
10
14
|
<div class="footer-links">
|
|
11
|
-
<template v-for="(link, index) in footerHrefs" :key="link
|
|
15
|
+
<template v-for="(link, index) in footerHrefs" :key="linkKey(link, index)">
|
|
16
|
+
<!-- Separator (null entry in mdsite.yml) -->
|
|
17
|
+
<v-divider
|
|
18
|
+
v-if="link.type === 'separator'"
|
|
19
|
+
vertical
|
|
20
|
+
class="mx-2 footer-separator"
|
|
21
|
+
/>
|
|
22
|
+
<!-- Internal link or external URL -->
|
|
12
23
|
<v-btn
|
|
24
|
+
v-else
|
|
13
25
|
:href="link.path"
|
|
14
26
|
variant="text"
|
|
15
27
|
color="on-surface-appbar"
|
|
16
28
|
class="footer-link"
|
|
29
|
+
:target="link.isExternal ? '_blank' : undefined"
|
|
30
|
+
:rel="link.isExternal ? 'noopener noreferrer' : undefined"
|
|
17
31
|
>
|
|
18
32
|
{{ link.title }}
|
|
33
|
+
<v-icon
|
|
34
|
+
v-if="link.isExternal"
|
|
35
|
+
icon="mdi-open-in-new"
|
|
36
|
+
size="14"
|
|
37
|
+
class="ml-1 external-icon"
|
|
38
|
+
/>
|
|
19
39
|
</v-btn>
|
|
20
40
|
<v-divider
|
|
21
|
-
v-if="index
|
|
41
|
+
v-if="shouldRenderInterDivider(link, index)"
|
|
22
42
|
vertical
|
|
23
43
|
class="mx-2"
|
|
24
44
|
/>
|
|
@@ -36,7 +56,7 @@
|
|
|
36
56
|
</v-btn>
|
|
37
57
|
</div>
|
|
38
58
|
</v-container>
|
|
39
|
-
</v-
|
|
59
|
+
</v-footer>
|
|
40
60
|
</template>
|
|
41
61
|
|
|
42
62
|
<script setup lang="ts">
|
|
@@ -44,38 +64,70 @@ import { useSourceEdit } from '~/composables/useSourceEdit';
|
|
|
44
64
|
import { useFooter } from '~/composables/useFooter'
|
|
45
65
|
import { withBasePath } from '../../utils/base-url'
|
|
46
66
|
|
|
67
|
+
interface FooterHref {
|
|
68
|
+
path: string
|
|
69
|
+
title: string
|
|
70
|
+
type: 'link' | 'separator'
|
|
71
|
+
isExternal: boolean
|
|
72
|
+
}
|
|
73
|
+
|
|
47
74
|
const appBaseURL = useRuntimeConfig().app.baseURL
|
|
48
75
|
const { getEditUrl } = useSourceEdit()
|
|
49
|
-
const { links: footerLinks
|
|
76
|
+
const { links: footerLinks } = useFooter()
|
|
50
77
|
|
|
51
78
|
const editUrl = computed(() => getEditUrl())
|
|
52
79
|
|
|
53
80
|
// Render the bar only after the footer JSON has loaded and contains at least
|
|
54
|
-
// one entry. While loading (links
|
|
55
|
-
// whole bar (including the Edit button) is hidden.
|
|
81
|
+
// one entry. While loading (links is the default empty array) or when the
|
|
82
|
+
// array is empty, the whole bar (including the Edit button) is hidden.
|
|
56
83
|
const hasFooterEntries = computed(() =>
|
|
57
|
-
footerLinks.value
|
|
84
|
+
(footerLinks.value?.length ?? 0) > 0
|
|
58
85
|
)
|
|
59
86
|
|
|
60
|
-
|
|
87
|
+
/**
|
|
88
|
+
* Map raw FooterLink entries into the shape the template renders. External
|
|
89
|
+
* URLs keep their raw path (withBasePath passes http(s) through unchanged);
|
|
90
|
+
* internal links get the app base path prepended.
|
|
91
|
+
*/
|
|
92
|
+
const footerHrefs = computed<FooterHref[]>(() => (footerLinks.value ?? []).map(link => ({
|
|
61
93
|
path: withBasePath(link.path, appBaseURL),
|
|
62
|
-
title: link.title
|
|
94
|
+
title: link.title,
|
|
95
|
+
type: link.type,
|
|
96
|
+
isExternal: link.isExternal
|
|
63
97
|
})))
|
|
64
98
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
99
|
+
/**
|
|
100
|
+
* Stable key for the v-for. External URLs and separators can have empty or
|
|
101
|
+
* colliding paths, so fall back to the index to guarantee uniqueness.
|
|
102
|
+
*/
|
|
103
|
+
function linkKey(link: FooterHref, index: number): string {
|
|
104
|
+
if (link.path) return link.path
|
|
105
|
+
return `${link.type}-${index}`
|
|
106
|
+
}
|
|
69
107
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
108
|
+
/**
|
|
109
|
+
* The original layout rendered a trailing v-divider after every entry (except
|
|
110
|
+
* the last) plus an extra one before the Edit button. With separators now
|
|
111
|
+
* living inside the entries themselves, only render the inter-entry divider
|
|
112
|
+
* when the NEXT item is a link — otherwise two visual dividers would stack
|
|
113
|
+
* (e.g. between a separator and the Edit button or between two separators).
|
|
114
|
+
*/
|
|
115
|
+
function shouldRenderInterDivider(link: FooterHref, index: number): boolean {
|
|
116
|
+
if (link.type === 'separator') return false
|
|
117
|
+
const next = footerHrefs.value[index + 1]
|
|
118
|
+
if (next && next.type === 'separator') return false
|
|
119
|
+
// Preserve the original "always add a divider before Edit" behavior.
|
|
120
|
+
return Boolean(editUrl.value) || index < footerHrefs.value.length - 1
|
|
73
121
|
}
|
|
122
|
+
</script>
|
|
74
123
|
|
|
124
|
+
<style scoped>
|
|
75
125
|
.footer-links {
|
|
76
126
|
display: flex;
|
|
77
127
|
align-items: center;
|
|
78
128
|
gap: 0.5rem;
|
|
129
|
+
flex-wrap: wrap;
|
|
130
|
+
justify-content: center;
|
|
79
131
|
}
|
|
80
132
|
|
|
81
133
|
.footer-link {
|
|
@@ -84,13 +136,23 @@ onMounted(async () => {
|
|
|
84
136
|
font-weight: 400;
|
|
85
137
|
}
|
|
86
138
|
|
|
139
|
+
.external-icon {
|
|
140
|
+
opacity: 0.7;
|
|
141
|
+
vertical-align: middle;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.footer-separator {
|
|
145
|
+
opacity: 0.3;
|
|
146
|
+
}
|
|
147
|
+
|
|
87
148
|
/* Make dividers visible with theme colors */
|
|
88
149
|
:deep(.v-divider) {
|
|
89
150
|
opacity: 0.3;
|
|
90
151
|
height: 1.5rem;
|
|
91
152
|
}
|
|
92
153
|
|
|
93
|
-
/* Print: Hide Footer
|
|
154
|
+
/* Print: Hide Footer (also covered by the layout's `.v-footer` rule,
|
|
155
|
+
but kept here as a defensive scoped fallback). */
|
|
94
156
|
@media print {
|
|
95
157
|
.app-footer {
|
|
96
158
|
display: none !important;
|