
* web: Format live reload package. * web: Format package.json. * web: Revise globals. * web: Build entrypoints with a single ESBuild context. Clean up entrypoints. * web: WIP Prepare monorepo package for use. * web: Update build paths. Fix types. * web: WIP Add monorepo dependency. * web: Use monorepo utilities when building. * web: Fix issue where linters collide. Update ignore file. - Remove unused sort override for polyfills. * core: Prepare repo for NPM workspaces.
46 lines
1.2 KiB
JavaScript
46 lines
1.2 KiB
JavaScript
import { createRequire } from "node:module";
|
|
import { dirname, join, resolve } from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
|
|
const relativeDirname = dirname(fileURLToPath(import.meta.url));
|
|
|
|
/**
|
|
* @typedef {'~authentik'} MonoRepoRoot
|
|
*/
|
|
|
|
/**
|
|
* The root of the authentik monorepo.
|
|
*/
|
|
// TODO: Revise when this package is moved to the monorepo's `packages/monorepo` directory.
|
|
export const MonoRepoRoot = /** @type {MonoRepoRoot} */ (
|
|
resolve(relativeDirname, "..", "..", "..")
|
|
);
|
|
|
|
const require = createRequire(import.meta.url);
|
|
|
|
/**
|
|
* Resolve a package name to its location in the monorepo to the single node_modules directory.
|
|
* @param {string} packageName
|
|
*
|
|
* @returns {string} The resolved path to the package.
|
|
* @throws {Error} If the package cannot be resolved.
|
|
*/
|
|
export function resolvePackage(packageName) {
|
|
const relativePackageJSONPath = join(packageName, "package.json");
|
|
|
|
/** @type {string} */
|
|
let absolutePackageJSONPath;
|
|
|
|
try {
|
|
absolutePackageJSONPath = require.resolve(relativePackageJSONPath);
|
|
} catch (cause) {
|
|
const error = new Error(`Failed to resolve package "${packageName}"`);
|
|
|
|
error.cause = cause;
|
|
|
|
throw error;
|
|
}
|
|
|
|
return dirname(absolutePackageJSONPath);
|
|
}
|