@life-and-dev/mdsite 0.5.3 → 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 +29 -37
- package/dist/commands/clean.d.ts +1 -0
- package/dist/commands/clean.js +70 -0
- package/dist/commands/clean.js.map +1 -0
- package/dist/commands/commands.test.js +157 -75
- 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 +5 -64
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/prepare.js +2 -14
- package/dist/commands/prepare.js.map +1 -1
- package/dist/commands/prepare.test.js +26 -24
- 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 +42 -56
- 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/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/index.test.js +13 -0
- package/dist/index.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 +41 -5
- 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 +25 -13
- package/dist/process/runtime-state.js.map +1 -1
- package/dist/process/runtime-state.test.js +10 -10
- 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 +32 -27
- package/dist/renderer/mdsite-nuxt.js.map +1 -1
- package/dist/renderer/mdsite-nuxt.test.js +40 -39
- 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 +22 -15
- 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 -91
- package/mdsite-nuxt/scripts/renderer-hooks.ts +1 -50
- package/mdsite-nuxt/scripts/start.test.ts +0 -1
- package/mdsite-nuxt/scripts/start.ts +0 -1
- package/mdsite-nuxt/utils/mdsite-config.ts +86 -41
- package/package.json +1 -1
- package/mdsite-nuxt/example.config.yml +0 -67
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/commands/preview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/commands/preview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACnG,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AACtH,OAAO,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,eAAe,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AAC7L,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAO7C,KAAK,UAAU,qBAAqB,CAAC,UAAkB,EAAE,iBAAyB;IAChF,IAAI,MAAM,mBAAmB,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACjD,OAAM;IACR,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAA;IACpF,OAAO,CAAC,GAAG,CAAC,MAAM,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAA;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,UAAkB,EAAE,UAAiC,EAAE;IAC7F,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAA;IACnC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,yBAAyB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IACvD,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAA;IACjD,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAEvH,MAAM,0BAA0B,CAAC,WAAW,CAAC,CAAA;IAC7C,MAAM,qBAAqB,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;IAC1D,MAAM,sBAAsB,CAAC,iBAAiB,CAAC,CAAA;IAC/C,MAAM,yBAAyB,CAAC,WAAW,EAAE,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IAEtF,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,UAAkB,EAAE,OAA8B;IACzF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAA;IACjD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAA;IAEzD,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,kBAAkB,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;IACnF,IAAI,aAAa,IAAI,gBAAgB,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,6CAA6C,aAAa,CAAC,GAAG,GAAG,CAAC,CAAA;IACpF,CAAC;IAED,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAEvH,MAAM,0BAA0B,CAAC,WAAW,CAAC,CAAA;IAC7C,MAAM,qBAAqB,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAA;IAClE,MAAM,sBAAsB,CAAC,iBAAiB,CAAC,CAAA;IAE/C,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3D,MAAM,OAAO,GAAG,iBAAiB,CAAC,kBAAkB,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;IACxE,MAAM,GAAG,GAAG,MAAM,2BAA2B,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IAE/E,MAAM,iBAAiB,CAAC,kBAAkB,EAAE,MAAM,EAAE;QAClD,IAAI,EAAE,SAAS;QACf,GAAG;QACH,OAAO;QACP,WAAW;QACX,UAAU,EAAE,kBAAkB;QAC9B,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC;QAClC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,IAAI,IAAI,WAAW,CAAA;IACnE,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC,CAAA;IAC7F,iFAAiF;IACjF,yEAAyE;IACzE,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;IACrE,MAAM,UAAU,GAAG,UAAU,IAAI,IAAI,UAAU,EAAE,CAAA;IAEjD,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;IAC9E,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAA;IACpC,CAAC;IAED,OAAO,4CAA4C,GAAG,WAAW,UAAU,SAAS,OAAO,EAAE,CAAA;AAC/F,CAAC;AAED,SAAS,aAAa,CAAC,GAAsB,EAAE,YAAqB;IAClE,MAAM,IAAI,GAAG,YAAY,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,IAAI,WAAW,CAAA;IACrE,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,IAAI,MAAM,CAAA;IAEhD,OAAO;QACL,GAAG,GAAG;QACN,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;KACjB,CAAA;AACH,CAAC"}
|
package/dist/commands/start.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { loadMdsiteConfig } from '../config/mdsite-config.js';
|
|
2
|
-
import { openUrlInBrowser, waitForTcpPort } from '../process/child-process.js';
|
|
2
|
+
import { openUrlInBrowser, waitForRendererPort, waitForTcpPort } from '../process/child-process.js';
|
|
3
3
|
import { getRuntimeLogPath, isProcessRunning, readRuntimeState, writeRuntimeState } from '../process/runtime-state.js';
|
|
4
4
|
import { ensureRendererDependencies, prepareRenderer, startRendererForeground, startRendererInBackground } from '../renderer/mdsite-nuxt.js';
|
|
5
5
|
import { ensureInitialized } from './init.js';
|
|
@@ -16,27 +16,32 @@ export async function runStartCommand(contentDir, options = {}) {
|
|
|
16
16
|
}
|
|
17
17
|
async function runDetachedStartCommand(contentDir, options) {
|
|
18
18
|
const loaded = await loadMdsiteConfig(contentDir);
|
|
19
|
-
const { config,
|
|
20
|
-
const existingState = await readRuntimeState(
|
|
19
|
+
const { config, contentDir: resolvedContentDir } = loaded;
|
|
20
|
+
const existingState = await readRuntimeState(resolvedContentDir, config, 'start');
|
|
21
21
|
if (existingState && isProcessRunning(existingState.pid)) {
|
|
22
22
|
throw new Error(`mdsite live is already running with PID ${existingState.pid}.`);
|
|
23
23
|
}
|
|
24
24
|
const { rendererDir, rendererEnv } = await prepareRenderer(loaded.contentDir, loaded.config, loaded);
|
|
25
25
|
await ensureRendererDependencies(rendererDir);
|
|
26
26
|
const env = withHostEnv(rendererEnv, options.host);
|
|
27
|
-
const logPath = getRuntimeLogPath(
|
|
27
|
+
const logPath = getRuntimeLogPath(resolvedContentDir, config, 'start');
|
|
28
28
|
const pid = await startRendererInBackground(rendererDir, env, logPath);
|
|
29
|
-
|
|
30
|
-
await writeRuntimeState(configDir, config, {
|
|
29
|
+
await writeRuntimeState(resolvedContentDir, config, {
|
|
31
30
|
kind: 'start',
|
|
32
31
|
pid,
|
|
33
32
|
logPath,
|
|
34
33
|
rendererDir,
|
|
35
|
-
contentDir,
|
|
34
|
+
contentDir: resolvedContentDir,
|
|
36
35
|
command: ['npm', 'run', 'dev'],
|
|
37
36
|
startedAt: new Date().toISOString()
|
|
38
37
|
});
|
|
39
|
-
const
|
|
38
|
+
const host = getStartHost(env);
|
|
39
|
+
const configuredPort = Number.parseInt(getStartPort(env), 10);
|
|
40
|
+
// Nuxt may fall back to the next free port when the configured one is occupied;
|
|
41
|
+
// detect the actual port from the renderer log so we open the right URL.
|
|
42
|
+
const actualPort = await waitForRendererPort(logPath, configuredPort);
|
|
43
|
+
const startUrl = `http://${host}:${actualPort}`;
|
|
44
|
+
const startReady = await waitForTcpPort(host, actualPort).catch(() => false);
|
|
40
45
|
if (startReady) {
|
|
41
46
|
await openUrlInBrowser(startUrl);
|
|
42
47
|
}
|
|
@@ -53,9 +58,6 @@ function withHostEnv(env, host) {
|
|
|
53
58
|
NITRO_HOST: host
|
|
54
59
|
};
|
|
55
60
|
}
|
|
56
|
-
function getStartUrl(env) {
|
|
57
|
-
return `http://${getStartHost(env)}:${getStartPort(env)}`;
|
|
58
|
-
}
|
|
59
61
|
function getStartHost(env) {
|
|
60
62
|
return env.NUXT_HOST ?? env.HOST ?? 'localhost';
|
|
61
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/stop.js
CHANGED
|
@@ -3,10 +3,13 @@ import { clearRuntimeState, readRuntimeState } from '../process/runtime-state.js
|
|
|
3
3
|
import { stopProcess } from '../process/child-process.js';
|
|
4
4
|
export async function runStopCommand(contentDir) {
|
|
5
5
|
const loaded = await loadMdsiteConfig(contentDir);
|
|
6
|
-
const {
|
|
6
|
+
const { config, contentDir: resolvedContentDir } = loaded;
|
|
7
|
+
// Resolve runtime state against the resolved content directory so that
|
|
8
|
+
// `paths.input: <subdir>` setups find their state files (which live in
|
|
9
|
+
// `<resolvedContentDir>/<paths.build>/`, not in the config directory).
|
|
7
10
|
const states = await Promise.all([
|
|
8
|
-
readRuntimeState(
|
|
9
|
-
readRuntimeState(
|
|
11
|
+
readRuntimeState(resolvedContentDir, config, 'start'),
|
|
12
|
+
readRuntimeState(resolvedContentDir, config, 'preview')
|
|
10
13
|
]);
|
|
11
14
|
const messages = [];
|
|
12
15
|
for (const state of states) {
|
|
@@ -14,7 +17,7 @@ export async function runStopCommand(contentDir) {
|
|
|
14
17
|
continue;
|
|
15
18
|
}
|
|
16
19
|
const stopped = await stopProcess(state.pid);
|
|
17
|
-
await clearRuntimeState(
|
|
20
|
+
await clearRuntimeState(resolvedContentDir, config, state.kind);
|
|
18
21
|
if (stopped) {
|
|
19
22
|
messages.push(`Stopped ${state.kind} process ${state.pid}.`);
|
|
20
23
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/commands/stop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEzD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAkB;IACrD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAA;IACjD,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/commands/stop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEzD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAkB;IACrD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAA;IACjD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAA;IAEzD,uEAAuE;IACvE,uEAAuE;IACvE,uEAAuE;IACvE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC/B,gBAAgB,CAAC,kBAAkB,EAAE,MAAM,EAAE,OAAO,CAAC;QACrD,gBAAgB,CAAC,kBAAkB,EAAE,MAAM,EAAE,SAAS,CAAC;KACxD,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAa,EAAE,CAAA;IAE7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,SAAQ;QACV,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC5C,MAAM,iBAAiB,CAAC,kBAAkB,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAE/D,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,GAAG,GAAG,CAAC,CAAA;YAC5D,SAAQ;QACV,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,IAAI,kBAAkB,KAAK,CAAC,GAAG,GAAG,CAAC,CAAA;IAC1E,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,qBAAqB,CAAA;IAC9B,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC3B,CAAC"}
|
|
@@ -3,10 +3,12 @@ import os from 'node:os';
|
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
5
5
|
const waitForTcpPortMock = vi.hoisted(() => vi.fn());
|
|
6
|
+
const waitForRendererPortMock = vi.hoisted(() => vi.fn());
|
|
6
7
|
vi.mock('../process/child-process.js', () => ({
|
|
7
8
|
openUrlInBrowser: vi.fn(),
|
|
8
9
|
runBackground: vi.fn(),
|
|
9
10
|
runForeground: vi.fn(),
|
|
11
|
+
waitForRendererPort: waitForRendererPortMock,
|
|
10
12
|
waitForTcpPort: waitForTcpPortMock,
|
|
11
13
|
stopProcess: vi.fn()
|
|
12
14
|
}));
|
|
@@ -15,7 +17,7 @@ vi.mock('../renderer/mdsite-nuxt.js', async (importOriginal) => {
|
|
|
15
17
|
return { ...actual, prepareRenderer: vi.fn() };
|
|
16
18
|
});
|
|
17
19
|
import { serializeMdsiteConfig } from '../config/mdsite-config.js';
|
|
18
|
-
import { openUrlInBrowser, stopProcess, waitForTcpPort, runBackground, runForeground } from '../process/child-process.js';
|
|
20
|
+
import { openUrlInBrowser, stopProcess, waitForRendererPort, waitForTcpPort, runBackground, runForeground } from '../process/child-process.js';
|
|
19
21
|
import { readRuntimeState } from '../process/runtime-state.js';
|
|
20
22
|
import { prepareRenderer } from '../renderer/mdsite-nuxt.js';
|
|
21
23
|
import { runGenerateCommand } from './generate.js';
|
|
@@ -28,6 +30,7 @@ const runForegroundMock = vi.mocked(runForeground);
|
|
|
28
30
|
const openUrlInBrowserMock = vi.mocked(openUrlInBrowser);
|
|
29
31
|
const stopProcessMock = vi.mocked(stopProcess);
|
|
30
32
|
const waitForTcpPortMocked = vi.mocked(waitForTcpPort);
|
|
33
|
+
const waitForRendererPortMocked = vi.mocked(waitForRendererPort);
|
|
31
34
|
const prepareRendererMock = vi.mocked(prepareRenderer);
|
|
32
35
|
const tempDirs = [];
|
|
33
36
|
async function makeTempDir() {
|
|
@@ -52,27 +55,26 @@ async function createRendererDir(contentDir, withNodeModules = true) {
|
|
|
52
55
|
}
|
|
53
56
|
async function writeConfig(contentDir, overrides = {}) {
|
|
54
57
|
const config = {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
58
|
+
features: {
|
|
59
|
+
bibleTooltips: overrides.features?.bibleTooltips ?? true,
|
|
60
|
+
sourceEdit: overrides.features?.sourceEdit ?? '',
|
|
61
|
+
footer: overrides.features?.footer ?? []
|
|
62
|
+
},
|
|
63
|
+
menu: overrides.menu ?? [],
|
|
64
|
+
paths: {
|
|
65
|
+
input: overrides.paths?.input ?? '',
|
|
66
|
+
build: overrides.paths?.build ?? '.renderer',
|
|
67
|
+
output: overrides.paths?.output ?? '.output'
|
|
65
68
|
},
|
|
66
69
|
site: {
|
|
67
|
-
canonical: '',
|
|
68
|
-
|
|
69
|
-
|
|
70
|
+
canonical: overrides.site?.canonical ?? '',
|
|
71
|
+
favicon: overrides.site?.favicon ?? '',
|
|
72
|
+
name: overrides.site?.name ?? 'Workspace Docs'
|
|
70
73
|
},
|
|
71
74
|
themes: {
|
|
72
|
-
light: { colors: {} },
|
|
73
|
-
dark: { colors: {} }
|
|
74
|
-
}
|
|
75
|
-
...overrides
|
|
75
|
+
light: { colors: (overrides.themes?.light?.colors ?? {}) },
|
|
76
|
+
dark: { colors: (overrides.themes?.dark?.colors ?? {}) }
|
|
77
|
+
}
|
|
76
78
|
};
|
|
77
79
|
await writeFile(path.join(contentDir, 'mdsite.yml'), serializeMdsiteConfig(config), 'utf8');
|
|
78
80
|
return config;
|
|
@@ -86,6 +88,7 @@ describe('CLI workflow coverage', () => {
|
|
|
86
88
|
vi.clearAllMocks();
|
|
87
89
|
openUrlInBrowserMock.mockResolvedValue(true);
|
|
88
90
|
waitForTcpPortMocked.mockResolvedValue(true);
|
|
91
|
+
waitForRendererPortMocked.mockImplementation(async (_logPath, fallbackPort) => fallbackPort);
|
|
89
92
|
prepareRendererMock.mockImplementation(async (contentDir, _config, _options) => {
|
|
90
93
|
const rendererDir = path.join(contentDir, '.renderer');
|
|
91
94
|
return {
|
|
@@ -94,13 +97,14 @@ describe('CLI workflow coverage', () => {
|
|
|
94
97
|
NUXT_CONTENT_PATH: contentDir,
|
|
95
98
|
CONTENT_DIR: contentDir,
|
|
96
99
|
MDSITE_CONFIG_PATH: path.join(contentDir, 'mdsite.yml')
|
|
97
|
-
}
|
|
100
|
+
},
|
|
101
|
+
rendererOutputDir: path.join(rendererDir, '.output')
|
|
98
102
|
};
|
|
99
103
|
});
|
|
100
104
|
});
|
|
101
105
|
it('runInitCommand creates a valid mdsite.yml and pins Node 24 via .nvmrc', async () => {
|
|
102
106
|
const contentDir = await createContentDir();
|
|
103
|
-
await expect(runInitCommand(contentDir)).resolves.toBe(`Created mdsite.yml, .nvmrc
|
|
107
|
+
await expect(runInitCommand(contentDir)).resolves.toBe(`Created mdsite.yml, .nvmrc in ${contentDir}.`);
|
|
104
108
|
const configPath = path.join(contentDir, 'mdsite.yml');
|
|
105
109
|
const configText = await readFile(configPath, 'utf8');
|
|
106
110
|
expect(configText).toContain('name: Workspace Docs');
|
|
@@ -112,17 +116,10 @@ describe('CLI workflow coverage', () => {
|
|
|
112
116
|
const gitignorePath = path.join(contentDir, '.gitignore');
|
|
113
117
|
const gitignoreText = await readFile(gitignorePath, 'utf8');
|
|
114
118
|
expect(gitignoreText).toContain('.mdsite/*');
|
|
115
|
-
expect(gitignoreText).toContain('!.mdsite/package.json');
|
|
116
|
-
expect(gitignoreText).toContain('!.mdsite/package-lock.json');
|
|
117
119
|
expect(gitignoreText).toContain('.output/');
|
|
118
120
|
expect(gitignoreText).toContain('# end mdsite');
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
// The renderer package identity reflects the project: name = sanitized content-dir basename,
|
|
122
|
-
// description = the website name from mdsite.yml (not the bundled renderer's generic identity).
|
|
123
|
-
expect(rendererPkg.name).toBe(path.basename(contentDir).toLowerCase());
|
|
124
|
-
expect(rendererPkg.description).toBe('Workspace Docs');
|
|
125
|
-
await expect(access(path.join(contentDir, '.mdsite', 'package-lock.json'))).resolves.toBeUndefined();
|
|
121
|
+
expect(gitignoreText).not.toContain('!.mdsite/package.json');
|
|
122
|
+
expect(gitignoreText).not.toContain('!.mdsite/package-lock.json');
|
|
126
123
|
});
|
|
127
124
|
it('runInitCommand preserves existing user .gitignore entries while adding mdsite managed patterns', async () => {
|
|
128
125
|
const contentDir = await createContentDir();
|
|
@@ -130,25 +127,23 @@ describe('CLI workflow coverage', () => {
|
|
|
130
127
|
const seededGitignore = [
|
|
131
128
|
'secret.env',
|
|
132
129
|
'build/',
|
|
133
|
-
'# mdsite: generated state (renderer working dir;
|
|
130
|
+
'# mdsite: generated state (renderer working dir; runtime artifacts and materialized renderer)',
|
|
134
131
|
'.mdsite/*',
|
|
135
|
-
'!.mdsite/package.json',
|
|
136
|
-
'!.mdsite/package-lock.json',
|
|
137
132
|
'.output/',
|
|
138
133
|
'# end mdsite'
|
|
139
134
|
].join('\n') + '\n';
|
|
140
135
|
await writeFile(path.join(contentDir, '.gitignore'), seededGitignore, 'utf8');
|
|
141
|
-
await expect(runInitCommand(contentDir)).resolves.toBe(`Created mdsite.yml, .nvmrc
|
|
136
|
+
await expect(runInitCommand(contentDir)).resolves.toBe(`Created mdsite.yml, .nvmrc in ${contentDir}.`);
|
|
142
137
|
const gitignoreText = await readFile(path.join(contentDir, '.gitignore'), 'utf8');
|
|
143
138
|
// User entries preserved verbatim
|
|
144
139
|
expect(gitignoreText).toContain('secret.env');
|
|
145
140
|
expect(gitignoreText).toContain('build/');
|
|
146
141
|
// Managed block present
|
|
147
142
|
expect(gitignoreText).toContain('.mdsite/*');
|
|
148
|
-
expect(gitignoreText).toContain('!.mdsite/package.json');
|
|
149
|
-
expect(gitignoreText).toContain('!.mdsite/package-lock.json');
|
|
150
143
|
expect(gitignoreText).toContain('.output/');
|
|
151
144
|
expect(gitignoreText).toContain('# end mdsite');
|
|
145
|
+
expect(gitignoreText).not.toContain('!.mdsite/package.json');
|
|
146
|
+
expect(gitignoreText).not.toContain('!.mdsite/package-lock.json');
|
|
152
147
|
// Idempotent: exactly ONE managed header, ONE end marker, ONE of each required pattern (no duplication from the seeded prior block)
|
|
153
148
|
expect(gitignoreText.split('# mdsite:').length - 1).toBe(1);
|
|
154
149
|
expect(gitignoreText.split('# end mdsite').length - 1).toBe(1);
|
|
@@ -162,15 +157,13 @@ describe('CLI workflow coverage', () => {
|
|
|
162
157
|
// verbatim instead of stripping it globally and re-emitting it only inside the block.
|
|
163
158
|
const seededGitignore = [
|
|
164
159
|
'.output/',
|
|
165
|
-
'# mdsite: generated state (renderer working dir;
|
|
160
|
+
'# mdsite: generated state (renderer working dir; runtime artifacts and materialized renderer)',
|
|
166
161
|
'.mdsite/*',
|
|
167
|
-
'!.mdsite/package.json',
|
|
168
|
-
'!.mdsite/package-lock.json',
|
|
169
162
|
'.output/',
|
|
170
163
|
'# end mdsite'
|
|
171
164
|
].join('\n') + '\n';
|
|
172
165
|
await writeFile(path.join(contentDir, '.gitignore'), seededGitignore, 'utf8');
|
|
173
|
-
await expect(runInitCommand(contentDir)).resolves.toBe(`Created mdsite.yml, .nvmrc
|
|
166
|
+
await expect(runInitCommand(contentDir)).resolves.toBe(`Created mdsite.yml, .nvmrc in ${contentDir}.`);
|
|
174
167
|
const gitignoreText = await readFile(path.join(contentDir, '.gitignore'), 'utf8');
|
|
175
168
|
// The user's coincidental `.output/` line is preserved outside the block AND re-emitted inside it,
|
|
176
169
|
// so the pattern now appears exactly twice.
|
|
@@ -185,15 +178,13 @@ describe('CLI workflow coverage', () => {
|
|
|
185
178
|
// Corrupted .gitignore: a managed block missing its end marker (e.g. a truncated prior init).
|
|
186
179
|
const seededGitignore = [
|
|
187
180
|
'secret.env',
|
|
188
|
-
'# mdsite: generated state (renderer working dir;
|
|
181
|
+
'# mdsite: generated state (renderer working dir; runtime artifacts and materialized renderer)',
|
|
189
182
|
'.mdsite/*',
|
|
190
|
-
'!.mdsite/package.json',
|
|
191
|
-
'!.mdsite/package-lock.json',
|
|
192
183
|
'.output/',
|
|
193
184
|
'build/'
|
|
194
185
|
].join('\n') + '\n';
|
|
195
186
|
await writeFile(path.join(contentDir, '.gitignore'), seededGitignore, 'utf8');
|
|
196
|
-
await expect(runInitCommand(contentDir)).resolves.toBe(`Created mdsite.yml, .nvmrc
|
|
187
|
+
await expect(runInitCommand(contentDir)).resolves.toBe(`Created mdsite.yml, .nvmrc in ${contentDir}.`);
|
|
197
188
|
const gitignoreText = await readFile(path.join(contentDir, '.gitignore'), 'utf8');
|
|
198
189
|
expect(gitignoreText).toContain('secret.env');
|
|
199
190
|
expect(gitignoreText).toContain('build/');
|
|
@@ -207,14 +198,12 @@ describe('CLI workflow coverage', () => {
|
|
|
207
198
|
const seededGitignore = [
|
|
208
199
|
'secret.env',
|
|
209
200
|
'.mdsite/*',
|
|
210
|
-
'!.mdsite/package.json',
|
|
211
|
-
'!.mdsite/package-lock.json',
|
|
212
201
|
'.output/',
|
|
213
202
|
'# end mdsite',
|
|
214
203
|
'build/'
|
|
215
204
|
].join('\n') + '\n';
|
|
216
205
|
await writeFile(path.join(contentDir, '.gitignore'), seededGitignore, 'utf8');
|
|
217
|
-
await expect(runInitCommand(contentDir)).resolves.toBe(`Created mdsite.yml, .nvmrc
|
|
206
|
+
await expect(runInitCommand(contentDir)).resolves.toBe(`Created mdsite.yml, .nvmrc in ${contentDir}.`);
|
|
218
207
|
const gitignoreText = await readFile(path.join(contentDir, '.gitignore'), 'utf8');
|
|
219
208
|
expect(gitignoreText).toContain('secret.env');
|
|
220
209
|
expect(gitignoreText).toContain('build/');
|
|
@@ -228,12 +217,12 @@ describe('CLI workflow coverage', () => {
|
|
|
228
217
|
const rendererDir = await createRendererDir(contentDir);
|
|
229
218
|
const config = await writeConfig(contentDir);
|
|
230
219
|
runBackgroundMock.mockResolvedValueOnce(4321);
|
|
231
|
-
await expect(runStartCommand(contentDir, { detached: true })).resolves.toBe(`mdsite live running in background (PID 4321). Log: ${path.join(contentDir, '.renderer', '
|
|
220
|
+
await expect(runStartCommand(contentDir, { detached: true })).resolves.toBe(`mdsite live running in background (PID 4321). Log: ${path.join(contentDir, '.renderer', 'live.log')}`);
|
|
232
221
|
expect(runBackgroundMock).toHaveBeenCalledWith('npm', ['run', 'dev'], rendererDir, expect.objectContaining({
|
|
233
222
|
NUXT_CONTENT_PATH: contentDir,
|
|
234
223
|
CONTENT_DIR: contentDir,
|
|
235
224
|
MDSITE_CONFIG_PATH: path.join(contentDir, 'mdsite.yml')
|
|
236
|
-
}), path.join(contentDir, '.renderer', '
|
|
225
|
+
}), path.join(contentDir, '.renderer', 'live.log'));
|
|
237
226
|
expect(waitForTcpPortMocked).toHaveBeenCalledWith('localhost', 3000);
|
|
238
227
|
expect(openUrlInBrowserMock).toHaveBeenCalledWith('http://localhost:3000');
|
|
239
228
|
await expect(readRuntimeState(contentDir, config, 'start')).resolves.toEqual(expect.objectContaining({
|
|
@@ -247,11 +236,8 @@ describe('CLI workflow coverage', () => {
|
|
|
247
236
|
const contentDir = await createContentDir();
|
|
248
237
|
const rendererDir = await createRendererDir(contentDir);
|
|
249
238
|
await writeConfig(contentDir, {
|
|
250
|
-
|
|
251
|
-
output: 'public/site'
|
|
252
|
-
path: '.renderer',
|
|
253
|
-
repo: 'https://github.com/life-and-dev/mdsite',
|
|
254
|
-
gitBranch: 'main'
|
|
239
|
+
paths: {
|
|
240
|
+
output: 'public/site'
|
|
255
241
|
}
|
|
256
242
|
});
|
|
257
243
|
runForegroundMock.mockImplementation(async (_command, args, cwd) => {
|
|
@@ -279,7 +265,7 @@ describe('CLI workflow coverage', () => {
|
|
|
279
265
|
await expect(runGenerateCommand(contentDir)).resolves.toBe(`Generated site synced to ${path.join(contentDir, '.output', 'public')}`);
|
|
280
266
|
runBackgroundMock.mockResolvedValueOnce(2468);
|
|
281
267
|
stopProcessMock.mockResolvedValueOnce(true);
|
|
282
|
-
await expect(runPreviewCommand(contentDir, { detached: true })).resolves.toBe(`mdsite static running in background (PID 2468). URL: http://localhost:3000 Log: ${path.join(contentDir, '.renderer', '
|
|
268
|
+
await expect(runPreviewCommand(contentDir, { detached: true })).resolves.toBe(`mdsite static running in background (PID 2468). URL: http://localhost:3000 Log: ${path.join(contentDir, '.renderer', 'static.log')}`);
|
|
283
269
|
expect(openUrlInBrowserMock).toHaveBeenCalledWith('http://localhost:3000');
|
|
284
270
|
await expect(runStopCommand(contentDir)).resolves.toBe('Stopped preview process 2468.');
|
|
285
271
|
await expect(readRuntimeState(contentDir, config, 'preview')).resolves.toBeNull();
|
|
@@ -315,8 +301,8 @@ describe('CLI workflow coverage', () => {
|
|
|
315
301
|
runForegroundMock.mockRejectedValueOnce(new Error('Failed to start npm run dev.'));
|
|
316
302
|
await expect(runStartCommand(contentDir)).rejects.toThrow('Failed to start npm run dev.');
|
|
317
303
|
await expect(readRuntimeState(contentDir, config, 'start')).resolves.toBeNull();
|
|
318
|
-
await expect(access(path.join(contentDir, '.renderer', '
|
|
319
|
-
await expect(access(path.join(contentDir, '.renderer', '
|
|
304
|
+
await expect(access(path.join(contentDir, '.renderer', 'live.json'))).rejects.toThrow();
|
|
305
|
+
await expect(access(path.join(contentDir, '.renderer', 'live.log'))).rejects.toThrow();
|
|
320
306
|
});
|
|
321
307
|
});
|
|
322
308
|
//# sourceMappingURL=workflows.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.test.js","sourceRoot":"","sources":["../../src/commands/workflows.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workflows.test.js","sourceRoot":"","sources":["../../src/commands/workflows.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,21 +54,20 @@ const defaultDarkColors = {
|
|
|
54
54
|
};
|
|
55
55
|
export function createDefaultMdsiteConfig(siteName, menu) {
|
|
56
56
|
return {
|
|
57
|
-
favicon: '',
|
|
58
57
|
features: {
|
|
59
58
|
bibleTooltips: true,
|
|
60
|
-
sourceEdit:
|
|
59
|
+
sourceEdit: '',
|
|
60
|
+
footer: []
|
|
61
61
|
},
|
|
62
62
|
menu,
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
repo: 'https://github.com/life-and-dev/mdsite',
|
|
68
|
-
gitBranch: 'main'
|
|
63
|
+
paths: {
|
|
64
|
+
input: '',
|
|
65
|
+
build: '.mdsite',
|
|
66
|
+
output: '.output'
|
|
69
67
|
},
|
|
70
68
|
site: {
|
|
71
69
|
canonical: '',
|
|
70
|
+
favicon: '',
|
|
72
71
|
name: siteName
|
|
73
72
|
},
|
|
74
73
|
themes: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-mdsite-config.js","sourceRoot":"","sources":["../../src/config/default-mdsite-config.ts"],"names":[],"mappings":"AAEA,MAAM,kBAAkB,GAAG;IACzB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE,SAAS;IAClB,cAAc,EAAE,SAAS;IACzB,gBAAgB,EAAE,SAAS;IAC3B,iBAAiB,EAAE,SAAS;IAC5B,mBAAmB,EAAE,SAAS;IAC9B,eAAe,EAAE,SAAS;IAC1B,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,SAAS;IACvB,cAAc,EAAE,SAAS;IACzB,eAAe,EAAE,SAAS;IAC1B,aAAa,EAAE,SAAS;IACxB,UAAU,EAAE,SAAS;IACrB,YAAY,EAAE,SAAS;IACvB,SAAS,EAAE,SAAS;IACpB,YAAY,EAAE,SAAS;IACvB,OAAO,EAAE,SAAS;IAClB,cAAc,EAAE,SAAS;CACO,CAAA;AAElC,MAAM,iBAAiB,GAAG;IACxB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE,SAAS;IAClB,cAAc,EAAE,SAAS;IACzB,gBAAgB,EAAE,SAAS;IAC3B,iBAAiB,EAAE,SAAS;IAC5B,mBAAmB,EAAE,SAAS;IAC9B,eAAe,EAAE,SAAS;IAC1B,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,SAAS;IACvB,cAAc,EAAE,SAAS;IACzB,eAAe,EAAE,SAAS;IAC1B,aAAa,EAAE,SAAS;IACxB,UAAU,EAAE,SAAS;IACrB,YAAY,EAAE,SAAS;IACvB,SAAS,EAAE,SAAS;IACpB,YAAY,EAAE,SAAS;IACvB,OAAO,EAAE,SAAS;IAClB,cAAc,EAAE,SAAS;CACO,CAAA;AAElC,MAAM,UAAU,yBAAyB,CAAC,QAAgB,EAAE,IAA0B;IACpF,OAAO;QACL,
|
|
1
|
+
{"version":3,"file":"default-mdsite-config.js","sourceRoot":"","sources":["../../src/config/default-mdsite-config.ts"],"names":[],"mappings":"AAEA,MAAM,kBAAkB,GAAG;IACzB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE,SAAS;IAClB,cAAc,EAAE,SAAS;IACzB,gBAAgB,EAAE,SAAS;IAC3B,iBAAiB,EAAE,SAAS;IAC5B,mBAAmB,EAAE,SAAS;IAC9B,eAAe,EAAE,SAAS;IAC1B,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,SAAS;IACvB,cAAc,EAAE,SAAS;IACzB,eAAe,EAAE,SAAS;IAC1B,aAAa,EAAE,SAAS;IACxB,UAAU,EAAE,SAAS;IACrB,YAAY,EAAE,SAAS;IACvB,SAAS,EAAE,SAAS;IACpB,YAAY,EAAE,SAAS;IACvB,OAAO,EAAE,SAAS;IAClB,cAAc,EAAE,SAAS;CACO,CAAA;AAElC,MAAM,iBAAiB,GAAG;IACxB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE,SAAS;IAClB,cAAc,EAAE,SAAS;IACzB,gBAAgB,EAAE,SAAS;IAC3B,iBAAiB,EAAE,SAAS;IAC5B,mBAAmB,EAAE,SAAS;IAC9B,eAAe,EAAE,SAAS;IAC1B,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,SAAS;IACvB,cAAc,EAAE,SAAS;IACzB,eAAe,EAAE,SAAS;IAC1B,aAAa,EAAE,SAAS;IACxB,UAAU,EAAE,SAAS;IACrB,YAAY,EAAE,SAAS;IACvB,SAAS,EAAE,SAAS;IACpB,YAAY,EAAE,SAAS;IACvB,OAAO,EAAE,SAAS;IAClB,cAAc,EAAE,SAAS;CACO,CAAA;AAElC,MAAM,UAAU,yBAAyB,CAAC,QAAgB,EAAE,IAA0B;IACpF,OAAO;QACL,QAAQ,EAAE;YACR,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,EAAE;SACX;QACD,IAAI;QACJ,KAAK,EAAE;YACL,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,SAAS;SAClB;QACD,IAAI,EAAE;YACJ,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,QAAQ;SACf;QACD,MAAM,EAAE;YACN,KAAK,EAAE;gBACL,MAAM,EAAE,kBAAkB;aAC3B;YACD,IAAI,EAAE;gBACJ,MAAM,EAAE,iBAAiB;aAC1B;SACF;KACF,CAAA;AACH,CAAC"}
|
|
@@ -5,21 +5,20 @@ describe('createDefaultMdsiteConfig', () => {
|
|
|
5
5
|
const menu = ['guide/getting-started', { Docs: ['guide/advanced'] }];
|
|
6
6
|
const config = createDefaultMdsiteConfig('My Site', menu);
|
|
7
7
|
expect(config).toEqual({
|
|
8
|
-
favicon: '',
|
|
9
8
|
features: {
|
|
10
9
|
bibleTooltips: true,
|
|
11
|
-
sourceEdit:
|
|
10
|
+
sourceEdit: '',
|
|
11
|
+
footer: []
|
|
12
12
|
},
|
|
13
13
|
menu,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
repo: 'https://github.com/life-and-dev/mdsite',
|
|
19
|
-
gitBranch: 'main'
|
|
14
|
+
paths: {
|
|
15
|
+
input: '',
|
|
16
|
+
build: '.mdsite',
|
|
17
|
+
output: '.output'
|
|
20
18
|
},
|
|
21
19
|
site: {
|
|
22
20
|
canonical: '',
|
|
21
|
+
favicon: '',
|
|
23
22
|
name: 'My Site'
|
|
24
23
|
},
|
|
25
24
|
themes: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-mdsite-config.test.js","sourceRoot":"","sources":["../../src/config/default-mdsite-config.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AAEtE,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,IAAI,GAAG,CAAC,uBAAuB,EAAE,EAAE,IAAI,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;QAEpE,MAAM,MAAM,GAAG,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;QAEzD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,
|
|
1
|
+
{"version":3,"file":"default-mdsite-config.test.js","sourceRoot":"","sources":["../../src/config/default-mdsite-config.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AAEtE,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,IAAI,GAAG,CAAC,uBAAuB,EAAE,EAAE,IAAI,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;QAEpE,MAAM,MAAM,GAAG,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;QAEzD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,QAAQ,EAAE;gBACR,aAAa,EAAE,IAAI;gBACnB,UAAU,EAAE,EAAE;gBACd,MAAM,EAAE,EAAE;aACX;YACD,IAAI;YACJ,KAAK,EAAE;gBACL,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,SAAS;gBAChB,MAAM,EAAE,SAAS;aAClB;YACD,IAAI,EAAE;gBACJ,SAAS,EAAE,EAAE;gBACb,OAAO,EAAE,EAAE;gBACX,IAAI,EAAE,SAAS;aAChB;YACD,MAAM,EAAE;gBACN,KAAK,EAAE;oBACL,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC;wBAC9B,OAAO,EAAE,SAAS;wBAClB,UAAU,EAAE,SAAS;wBACrB,YAAY,EAAE,SAAS;qBACxB,CAAC;iBACH;gBACD,IAAI,EAAE;oBACJ,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC;wBAC9B,OAAO,EAAE,SAAS;wBAClB,UAAU,EAAE,SAAS;wBACrB,YAAY,EAAE,SAAS;qBACxB,CAAC;iBACH;aACF;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -1,25 +1,48 @@
|
|
|
1
1
|
export type MenuItem = string | null | {
|
|
2
2
|
[key: string]: string | null | MenuItem[];
|
|
3
3
|
};
|
|
4
|
+
/**
|
|
5
|
+
* Footer items mirror the `menu` shape but with no nested sub-menus. Each item
|
|
6
|
+
* is one of:
|
|
7
|
+
* - a bare markdown file name (string) — title is read from the file's H1
|
|
8
|
+
* - `null` — rendered as a vertical separator
|
|
9
|
+
* - a single-key object — the key is the link text, the value is either an
|
|
10
|
+
* internal markdown path or an external URL (http/https)
|
|
11
|
+
*
|
|
12
|
+
* Lives under `features.footer` in `mdsite.yml`.
|
|
13
|
+
*/
|
|
14
|
+
export type FooterItem = string | null | {
|
|
15
|
+
[key: string]: string | null;
|
|
16
|
+
};
|
|
4
17
|
export interface MdsiteConfig {
|
|
5
|
-
content?: {
|
|
6
|
-
path?: string;
|
|
7
|
-
};
|
|
8
|
-
favicon: string;
|
|
9
18
|
features: {
|
|
10
19
|
bibleTooltips: boolean;
|
|
11
|
-
|
|
20
|
+
/**
|
|
21
|
+
* URL prefix for the "Edit on GitHub" link. The renderer appends
|
|
22
|
+
* `<route>.md` to this value to build the edit URL, so the prefix should
|
|
23
|
+
* end with `/` (e.g. `https://github.com/org/repo/blob/main/`). An
|
|
24
|
+
* empty string disables the edit button entirely.
|
|
25
|
+
*/
|
|
26
|
+
sourceEdit: string;
|
|
27
|
+
/**
|
|
28
|
+
* Footer items mirror the `menu` shape but with no nested sub-menus.
|
|
29
|
+
* Each item is one of:
|
|
30
|
+
* - a bare markdown file name (string) — title is read from the file's H1
|
|
31
|
+
* - `null` — rendered as a vertical separator
|
|
32
|
+
* - a single-key object — the key is the link text, the value is either
|
|
33
|
+
* an internal markdown path or an external URL (http/https)
|
|
34
|
+
*/
|
|
35
|
+
footer: FooterItem[];
|
|
12
36
|
};
|
|
13
37
|
menu: MenuItem[];
|
|
14
|
-
|
|
15
|
-
|
|
38
|
+
paths: {
|
|
39
|
+
input: string;
|
|
40
|
+
build: string;
|
|
16
41
|
output: string;
|
|
17
|
-
path: string;
|
|
18
|
-
repo: string;
|
|
19
|
-
gitBranch: string;
|
|
20
42
|
};
|
|
21
43
|
site: {
|
|
22
44
|
canonical: string;
|
|
45
|
+
favicon: string;
|
|
23
46
|
name: string;
|
|
24
47
|
};
|
|
25
48
|
themes: {
|
|
@@ -31,6 +54,19 @@ export interface MdsiteConfig {
|
|
|
31
54
|
};
|
|
32
55
|
};
|
|
33
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Recursive variant of `Partial<T>` for object shapes. Recurses into nested
|
|
59
|
+
* objects so callers can override a single leaf field without restating the
|
|
60
|
+
* rest of the tree. Arrays are passed through unchanged — they should be
|
|
61
|
+
* replaced wholesale, not partially merged — and primitives pass through too.
|
|
62
|
+
*
|
|
63
|
+
* Use this for test/build helpers that layer overrides over a full default
|
|
64
|
+
* object — `Partial<MdsiteConfig>` is too shallow because it only makes the
|
|
65
|
+
* top-level keys optional.
|
|
66
|
+
*/
|
|
67
|
+
export type DeepPartial<T> = T extends ReadonlyArray<unknown> ? T : T extends object ? {
|
|
68
|
+
[K in keyof T]?: DeepPartial<T[K]>;
|
|
69
|
+
} : T;
|
|
34
70
|
export interface LoadedMdsiteConfig {
|
|
35
71
|
config: MdsiteConfig;
|
|
36
72
|
configDir: string;
|