From ff28133aa6594dc3177571419811c4cce1a9c6a9 Mon Sep 17 00:00:00 2001 From: Anton Standrik Date: Sun, 16 Nov 2025 01:05:33 +0300 Subject: [PATCH 1/2] feat: Refreshing page on timer --- .../build/services/entry/EntryService.ts | 21 +++++++++++++++++++ src/core/meta/types.ts | 1 + tests/mocks/single-page/input/ru/page.md | 1 + 3 files changed, 23 insertions(+) diff --git a/src/commands/build/services/entry/EntryService.ts b/src/commands/build/services/entry/EntryService.ts index 20b431535..bdc96dff7 100644 --- a/src/commands/build/services/entry/EntryService.ts +++ b/src/commands/build/services/entry/EntryService.ts @@ -30,6 +30,7 @@ const excludedMetaFields = [ 'noIndex', 'canonical', 'alternate', + 'refreshTimeout', ]; function isPublicMeta(record: {name?: string; property?: string}) { @@ -111,6 +112,7 @@ export class EntryService { description, canonical = '', alternate = [], + refreshTimeout, ...restYamlConfigMeta } = (state.data.meta as Meta) || {}; @@ -142,6 +144,25 @@ export class EntryService { template.setCanonical(canonical); template.addAlternates(alternate); + let normalizedRefreshTimeout: number | undefined; + + if (typeof refreshTimeout === 'number') { + normalizedRefreshTimeout = refreshTimeout; + } else if (typeof refreshTimeout === 'string') { + const parsedRefreshTimeout = Number.parseInt(refreshTimeout, 10); + + if (Number.isFinite(parsedRefreshTimeout)) { + normalizedRefreshTimeout = parsedRefreshTimeout; + } + } + + if (normalizedRefreshTimeout && normalizedRefreshTimeout > 0) { + template.addMeta({ + 'http-equiv': 'refresh', + content: String(normalizedRefreshTimeout), + }); + } + if (csp && !isEmpty(csp)) { template.addCsp(DEFAULT_CSP_SETTINGS); csp.map(template.addCsp); diff --git a/src/core/meta/types.ts b/src/core/meta/types.ts index a73bf6cc5..a5d78177d 100644 --- a/src/core/meta/types.ts +++ b/src/core/meta/types.ts @@ -31,6 +31,7 @@ export type Meta = { description?: string; keywords?: string[]; noIndex?: boolean; + refreshTimeout?: number; metadata?: Hash; __system?: Hash; sourcePath?: string; diff --git a/tests/mocks/single-page/input/ru/page.md b/tests/mocks/single-page/input/ru/page.md index 90b67a7bc..3b764d70c 100644 --- a/tests/mocks/single-page/input/ru/page.md +++ b/tests/mocks/single-page/input/ru/page.md @@ -1,6 +1,7 @@ --- title: Page Title description: Some test description +refreshTimeout: 300 interface: toc: false From 9911ac551386c1f3986f3b4a3279d3485528ded4 Mon Sep 17 00:00:00 2001 From: Anton Standrik Date: Sun, 16 Nov 2025 01:10:43 +0300 Subject: [PATCH 2/2] fix: update test --- tests/e2e/__snapshots__/single-page.spec.ts.snap | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/e2e/__snapshots__/single-page.spec.ts.snap b/tests/e2e/__snapshots__/single-page.spec.ts.snap index e9feea000..daf66042c 100644 --- a/tests/e2e/__snapshots__/single-page.spec.ts.snap +++ b/tests/e2e/__snapshots__/single-page.spec.ts.snap @@ -73,6 +73,7 @@ exports[`Single page mode > simple md2html single page with lang dirs 3`] = ` Page Title | Documentation + @@ -82,7 +83,7 @@ exports[`Single page mode > simple md2html single page with lang dirs 3`] = `