Files
authentik/website/integrations/docusaurus.config.esm.mjs
Dominic R 0e56195c82 website: Fix broken schema links, non-relative paths, unapplied redirect aliases (#16900)
* website: fix broken schema links

* website: Use download links.

* website: Use env constants for URLs.

* website: Add schema redirects.

* website: Use path alias for integrations.

* website: Use docs alias in integrations.

* website: Use relative links, better dead-link checking.

* website: Fix nested docs prefix affecting redirects. Add aliases.

* website: Remove hard links.

* website: Replace hardcoded edit URL with environment URL.

---------

Co-authored-by: Teffen Ellis <teffen@goauthentik.io>
2025-09-21 14:32:26 -04:00

134 lines
4.5 KiB
JavaScript

/**
* @file Docusaurus Integrations config.
*
* @import { AKReleasesPluginOptions } from "@goauthentik/docusaurus-theme/releases/plugin"
* @import { UserThemeConfig, UserThemeConfigExtra } from "@goauthentik/docusaurus-config";
* @import { Options as RedirectsPluginOptions } from "@docusaurus/plugin-client-redirects";
* @import { AKRedirectsPluginOptions } from "@goauthentik/docusaurus-theme/redirects/plugin"
*/
import { resolve } from "node:path";
import { fileURLToPath } from "node:url";
import { createDocusaurusConfig } from "@goauthentik/docusaurus-config";
import {
createAlgoliaConfig,
createClassicPreset,
extendConfig,
} from "@goauthentik/docusaurus-theme/config";
import { RewriteIndex } from "@goauthentik/docusaurus-theme/redirects";
import { parse } from "@goauthentik/docusaurus-theme/redirects/node";
import { prepareReleaseEnvironment } from "@goauthentik/docusaurus-theme/releases/node";
import { remarkLinkRewrite } from "@goauthentik/docusaurus-theme/remark";
const releaseEnvironment = prepareReleaseEnvironment();
const __dirname = fileURLToPath(new URL(".", import.meta.url));
const packageStaticDirectory = resolve(__dirname, "static");
const redirectsFile = resolve(packageStaticDirectory, "_redirects");
const redirects = await parse(redirectsFile);
const redirectsIndex = new RewriteIndex(redirects);
//#region Configuration
export default createDocusaurusConfig(
extendConfig({
future: {
experimental_faster: true,
},
url: releaseEnvironment.integrationsOrigin,
//#region Preset
presets: [
createClassicPreset({
docs: {
path: ".",
routeBasePath: "/",
sidebarPath: "./sidebar.mjs",
editUrl:
"https://github.com/goauthentik/authentik/edit/main/website/integrations/",
beforeDefaultRemarkPlugins: [
remarkLinkRewrite([
["/api", releaseEnvironment.apiReferenceOrigin],
["/docs", releaseEnvironment.currentReleaseOrigin],
]),
],
},
}),
],
//#endregion
//#region Plugins
plugins: [
[
"@goauthentik/docusaurus-theme/releases/plugin",
/** @type {AKReleasesPluginOptions} */ ({
docsDirectory: __dirname,
environment: releaseEnvironment,
}),
],
// Inject redirects for later use during runtime,
// such as navigating to non-existent page with the client-side router.
[
"@goauthentik/docusaurus-theme/redirects/plugin",
/** @type {AKRedirectsPluginOptions} */ ({
redirects,
}),
],
// Create build-time redirects for later use in HTTP responses,
// such as when navigating to a page for the first time.
//
// The existence of the _redirects file is also picked up by
// Netlify's deployment, which will redirect to the correct URL, even
// if the source is no longer present within the build output,
// such as when a page is removed, renamed, or moved.
[
"@docusaurus/plugin-client-redirects",
/** @type {RedirectsPluginOptions} */ ({
createRedirects(existingPath) {
const redirects = redirectsIndex.findAliases(existingPath);
return redirects;
},
}),
],
],
//#endregion
//#region Theme
themes: ["@goauthentik/docusaurus-theme", "@docusaurus/theme-mermaid"],
themeConfig: /** @type {UserThemeConfig & UserThemeConfigExtra} */ ({
algolia: createAlgoliaConfig({
externalUrlRegex: /^(?:https?:\/\/)(?!integrations\.goauthentik.io)/.source,
}),
image: "img/social.png",
navbarReplacements: {
INTEGRATIONS_URL: "/",
},
navbar: {
logo: {
alt: "authentik logo",
src: "img/icon_left_brand.svg",
href: "https://goauthentik.io/",
target: "_self",
},
},
}),
//#endregion
}),
);