mirror of
https://github.com/goauthentik/authentik.git
synced 2026-08-30 18:51:39 -07:00
* Replace npm + Corepack with pnpm
Migrate package management from npm + Corepack to pnpm across the root,
web, and website workspaces:
- Swap npm/Corepack tooling for pnpm: drop package-lock.json files and the
bespoke Corepack bootstrap scripts (setup-corepack.mjs, utils/corepack.mjs,
lint-lockfile.mjs); add pnpm-lock.yaml + pnpm-workspace.yaml per workspace.
- CI uses the official pnpm/action-setup + actions/setup-node; pin the pnpm
store dir via PNPM_HOME so setup-node's `cache: pnpm` post-step succeeds.
- Docker sources pnpm from the official ghcr.io/pnpm/pnpm image via a
${BUILDPLATFORM}-pinned stage; the website docs build does a hoisted root
install so @goauthentik/docusaurus-config resolves its own deps.
- Gate the web install on the `node` dep so runtime-only jobs don't invoke
pnpm; scope the from-stable env setup so the new tooling doesn't run against
the stable checkout's npm packageManager field.
- Resolve @goauthentik/api (client-ts) from its TypeScript source instead of a
tsc-built dist, so it no longer depends on an install-time prepare having run
(the storybook build's environment never built it); sfe's rollup gains .ts
resolution to match.
- Netlify builds with pnpm; encode pnpm's supply-chain controls
(onlyBuiltDependencies/allowBuilds, minimumReleaseAge) in the workspace.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Remove custom node action.
* Format.
35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
import { RedirectEntry } from "@goauthentik/docusaurus-theme/redirects";
|
|
import type { AKRedirectsPluginData } from "@goauthentik/docusaurus-theme/redirects/plugin";
|
|
|
|
import { usePluginData } from "@docusaurus/useGlobalData";
|
|
|
|
/**
|
|
* Hook to retrieve redirects provided by the client-side redirects plugin.
|
|
*/
|
|
export function useRedirectEntries(): RedirectEntry[] | null {
|
|
const pluginData = usePluginData("ak-redirects-plugin", undefined) as
|
|
| AKRedirectsPluginData
|
|
| undefined;
|
|
|
|
if (!pluginData || !pluginData.redirects) {
|
|
return null;
|
|
}
|
|
|
|
return pluginData.redirects;
|
|
}
|
|
|
|
/**
|
|
* Given a URL-like object, return the pathname (i.e. suffix), and the combination query string, hash, etc (i.e. prefix).
|
|
*/
|
|
export function pluckPathnameAffixes(
|
|
url: Pick<URL, "pathname" | "href" | "origin">,
|
|
): [prefix: string, suffix: string] {
|
|
const [, fullPathname = ""] = url.href.split(window.location.origin);
|
|
|
|
if (!fullPathname) return ["", ""];
|
|
|
|
const suffix = fullPathname.slice(url.pathname.length);
|
|
|
|
return [url.pathname, suffix];
|
|
}
|