(search) add search for api, terms, privacy and license

This commit is contained in:
Valentyne Stigloher 2024-12-28 17:17:45 +01:00
parent 36dbf51c75
commit cf0acf7a8e

View File

@ -17,6 +17,7 @@ import { parsePronouns } from '~/src/buildPronoun.ts';
import { buildCalendar } from '~/src/calendar/calendar.ts';
import { Day } from '~/src/calendar/helpers.ts';
import { genders, gendersWithNumerus } from '~/src/classes.ts';
import forbidden from '~/src/forbidden.ts';
import { clearLinkedText, buildImageUrl } from '~/src/helpers.ts';
import parseMarkdown from '~/src/parseMarkdown.ts';
import { normaliseQuery, type SearchDocument, validateQuery } from '~/src/search.ts';
@ -376,6 +377,84 @@ const kinds: SearchKind[] = [
});
}
if (config.user.enabled) {
addDocument({
url: `/${encodeURIComponent(config.user.termsRoute)}`,
title: translator.translate('terms.header'),
content: [
translator.has('terms.translationDisclaimer')
? translator.translate('terms.translationDisclaimer')
: '',
translator.translate('terms.content.consent'),
translator.translate('terms.content.accounts.header'),
translator.translate('terms.content.accounts.age'),
translator.translate('terms.content.accounts.authentication'),
translator.translate('terms.content.accounts.termination'),
translator.translate('terms.content.accounts.inactivity'),
translator.translate('terms.content.content.header'),
translator.translate('terms.content.content.ownership'),
translator.translate('terms.content.content.liability'),
translator.translate('terms.content.content.violations'),
forbidden.map((violation) => {
translator.translate(`terms.content.content.violationsExamples.${violation}`);
}).join(translator.translate('terms.content.content.violationsSeparator')),
translator.translate('terms.content.content.violationsEnd'),
translator.translate('terms.content.content.violationsStrict'),
translator.translate('terms.content.content.responsibility'),
translator.translate('terms.content.closing.header'),
translator.translate('terms.content.closing.jurisdiction'),
translator.translate('terms.content.closing.changes'),
].join(' '),
});
addDocument({
url: `/${encodeURIComponent(config.user.privacyRoute)}`,
title: translator.translate('privacy.header'),
content: [
translator.has('terms.translationDisclaimer')
? translator.translate('terms.translationDisclaimer')
: '',
translator.translate('privacy.content.intro'),
translator.translate('privacy.content.effort'),
translator.translate('privacy.content.data'),
translator.translate('privacy.content.editRemoval'),
translator.translate('privacy.content.contact'),
translator.translate('privacy.content.cookies'),
translator.translate('privacy.content.plausible'),
translator.translate('privacy.content.turnstile'),
translator.translate('privacy.content.sentry'),
config.ads?.enabled ? translator.translate('privacy.content.publift') : '',
config.ads?.enabled ? translator.translate('privacy.content.gtm') : '',
translator.translate('privacy.content.logsBackups'),
translator.translate('privacy.content.gdpr'),
].join(' '),
});
}
if (config.api) {
addDocument({
url: '/api',
title: translator.translate('api.header'),
});
}
{
const content = await fs.readFile(`${rootDir}/LICENSE.md`, 'utf-8');
const title = content.match(/^# (.*)\n/)?.[1];
// exclude title, date and author from searchable content
const trimmed = content.replace(/^(.+\n+){2}/, '');
const markdown = marked(trimmed);
const parsed = await parseMarkdown(markdown, translator);
const text = JSDOM.fragment(parsed.content ?? '').textContent?.replaceAll(/\s+/g, ' ');
addDocument({
url: '/license',
title: title ?? '',
content: text ?? '',
});
}
addDocument({
url: 'https://shop.pronouns.page',
title: translator.translate('contact.groups.shop'),