Add environment variable configuration for WEBMENTION_TOKEN and simplify token handling in fetchMentions function
All checks were successful
Deploy / deploy (push) Successful in 1m18s
All checks were successful
Deploy / deploy (push) Successful in 1m18s
This commit is contained in:
parent
1a3e4bf64a
commit
d7cb6b5346
2 changed files with 16 additions and 11 deletions
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
import mdx from '@astrojs/mdx';
|
import mdx from '@astrojs/mdx';
|
||||||
import sitemap from '@astrojs/sitemap';
|
import sitemap from '@astrojs/sitemap';
|
||||||
import { defineConfig, fontProviders } from 'astro/config';
|
import { defineConfig, envField, fontProviders } from 'astro/config';
|
||||||
|
|
||||||
import node from '@astrojs/node';
|
import node from '@astrojs/node';
|
||||||
|
|
||||||
|
|
@ -10,6 +10,16 @@ import node from '@astrojs/node';
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
site: 'https://adrian-altner.de',
|
site: 'https://adrian-altner.de',
|
||||||
|
|
||||||
|
env: {
|
||||||
|
schema: {
|
||||||
|
WEBMENTION_TOKEN: envField.string({
|
||||||
|
context: 'server',
|
||||||
|
access: 'secret',
|
||||||
|
optional: true,
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
devToolbar: {
|
devToolbar: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
---
|
---
|
||||||
|
import { WEBMENTION_TOKEN } from 'astro:env/server';
|
||||||
import { DEFAULT_LOCALE, type Locale } from '~/consts';
|
import { DEFAULT_LOCALE, type Locale } from '~/consts';
|
||||||
import { getLocaleFromUrl, t } from '~/i18n/ui';
|
import { getLocaleFromUrl, t } from '~/i18n/ui';
|
||||||
|
|
||||||
|
|
@ -30,15 +31,9 @@ interface FetchResult {
|
||||||
}
|
}
|
||||||
|
|
||||||
async function fetchMentions(target: string): Promise<FetchResult> {
|
async function fetchMentions(target: string): Promise<FetchResult> {
|
||||||
// Bracket notation prevents Vite from statically replacing at build time.
|
const token = WEBMENTION_TOKEN;
|
||||||
const envKey = 'WEBMENTION_TOKEN';
|
const tokenLen = typeof token === 'string' ? token.length : 0;
|
||||||
const processToken =
|
if (!token) return { mentions: [], debug: `no-token(astroenv=${tokenLen})` };
|
||||||
typeof process !== 'undefined' ? (process.env as Record<string, string | undefined>)[envKey] : undefined;
|
|
||||||
const importMetaToken = (import.meta.env as Record<string, string | undefined>)[envKey];
|
|
||||||
const token = processToken || importMetaToken;
|
|
||||||
const pLen = typeof processToken === 'string' ? processToken.length : 0;
|
|
||||||
const iLen = typeof importMetaToken === 'string' ? importMetaToken.length : 0;
|
|
||||||
if (!token) return { mentions: [], debug: `no-token(pe=${pLen},iml=${iLen})` };
|
|
||||||
const withSlash = target.endsWith('/') ? target : `${target}/`;
|
const withSlash = target.endsWith('/') ? target : `${target}/`;
|
||||||
const withoutSlash = target.replace(/\/+$/, '');
|
const withoutSlash = target.replace(/\/+$/, '');
|
||||||
const fetchOne = async (t: string) => {
|
const fetchOne = async (t: string) => {
|
||||||
|
|
@ -62,7 +57,7 @@ async function fetchMentions(target: string): Promise<FetchResult> {
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
mentions: merged,
|
mentions: merged,
|
||||||
debug: `iml=${iLen} pe=${pLen} slash=${a.status}:${a.entries.length} noslash=${b.status}:${b.entries.length}`,
|
debug: `ok(len=${tokenLen}) slash=${a.status}:${a.entries.length} noslash=${b.status}:${b.entries.length}`,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue