web: Clean up package paths.
This commit is contained in:
		| @ -1,10 +1,12 @@ | ||||
| /** | ||||
|  * @file MDX plugin for ESBuild. | ||||
|  * | ||||
|  * @import { | ||||
|       OnLoadArgs, | ||||
|       OnLoadResult, | ||||
|       Plugin, | ||||
|       PluginBuild | ||||
|  * } from 'esbuild' | ||||
|  *   OnLoadArgs, | ||||
|  *   OnLoadResult, | ||||
|  *   Plugin, | ||||
|  *   PluginBuild | ||||
|  * } from "esbuild" | ||||
|  */ | ||||
| import * as fs from "node:fs/promises"; | ||||
| import * as path from "node:path"; | ||||
| @ -1,7 +1,8 @@ | ||||
| /** | ||||
|  * @file ESBuild environment utilities. | ||||
|  * @file Bundler utilities. | ||||
|  */ | ||||
| import { AuthentikVersion, NodeEnvironment, serializeEnvironmentVars } from "@goauthentik/monorepo"; | ||||
| import { NodeEnvironment, serializeEnvironmentVars } from "@goauthentik/core/environment/node"; | ||||
| import { AuthentikVersion } from "@goauthentik/core/version/node"; | ||||
| 
 | ||||
| /** | ||||
|  * Creates a mapping of environment variables to their respective runtime constants. | ||||
| @ -71,7 +71,7 @@ export default [ | ||||
|                 ...globals.node, | ||||
|             }, | ||||
|         }, | ||||
|         files: ["scripts/**/*.mjs", "*.ts", "*.mjs"], | ||||
|         files: ["scripts/**/*.mjs", "*.ts", "*.mjs", "**/node.js"], | ||||
|         rules: { | ||||
|             "no-unused-vars": "off", | ||||
|             // We WANT our scripts to output to the console! | ||||
|  | ||||
							
								
								
									
										81
									
								
								web/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										81
									
								
								web/package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -9,7 +9,6 @@ | ||||
|             "version": "0.0.0", | ||||
|             "license": "MIT", | ||||
|             "workspaces": [ | ||||
|                 ".", | ||||
|                 "./packages/*" | ||||
|             ], | ||||
|             "dependencies": { | ||||
| @ -72,8 +71,8 @@ | ||||
|             }, | ||||
|             "devDependencies": { | ||||
|                 "@eslint/js": "^9.11.1", | ||||
|                 "@goauthentik/core": "^1.0.0", | ||||
|                 "@goauthentik/esbuild-plugin-live-reload": "^1.0.4", | ||||
|                 "@goauthentik/monorepo": "^1.0.0", | ||||
|                 "@goauthentik/prettier-config": "^1.0.4", | ||||
|                 "@goauthentik/tsconfig": "^1.0.4", | ||||
|                 "@hcaptcha/types": "^1.0.4", | ||||
| @ -140,6 +139,22 @@ | ||||
|                 "@rollup/rollup-linux-x64-gnu": "4.23.0" | ||||
|             } | ||||
|         }, | ||||
|         "../packages/core": { | ||||
|             "name": "@goauthentik/core", | ||||
|             "version": "1.0.0", | ||||
|             "extraneous": true, | ||||
|             "license": "MIT", | ||||
|             "devDependencies": { | ||||
|                 "@goauthentik/prettier-config": "^1.0.4", | ||||
|                 "@goauthentik/tsconfig": "^1.0.4", | ||||
|                 "@types/node": "^22.14.1", | ||||
|                 "prettier": "^3.3.3", | ||||
|                 "typescript": "^5.6.2" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">=20.11" | ||||
|             } | ||||
|         }, | ||||
|         "../packages/monorepo": { | ||||
|             "name": "@goauthentik/monorepo", | ||||
|             "version": "1.0.4", | ||||
| @ -1587,12 +1602,12 @@ | ||||
|             "resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2025.4.1-1747332783.tgz", | ||||
|             "integrity": "sha512-i+aC13BFLIyD7oGyeCFu6CmJcr3I0TV9n98em3zcpkwH81SXL+LuaXTs7GFk4jtvySMK4dyRf+71L5j8hS2Dug==" | ||||
|         }, | ||||
|         "node_modules/@goauthentik/esbuild-plugin-live-reload": { | ||||
|             "resolved": "packages/esbuild-plugin-live-reload", | ||||
|         "node_modules/@goauthentik/core": { | ||||
|             "resolved": "packages/core", | ||||
|             "link": true | ||||
|         }, | ||||
|         "node_modules/@goauthentik/monorepo": { | ||||
|             "resolved": "packages/monorepo", | ||||
|         "node_modules/@goauthentik/esbuild-plugin-live-reload": { | ||||
|             "resolved": "packages/esbuild-plugin-live-reload", | ||||
|             "link": true | ||||
|         }, | ||||
|         "node_modules/@goauthentik/prettier-config": { | ||||
| @ -1621,10 +1636,6 @@ | ||||
|                 "node": ">=20.11" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/@goauthentik/web": { | ||||
|             "resolved": "", | ||||
|             "link": true | ||||
|         }, | ||||
|         "node_modules/@goauthentik/web-sfe": { | ||||
|             "resolved": "packages/sfe", | ||||
|             "link": true | ||||
| @ -24867,6 +24878,38 @@ | ||||
|                 "url": "https://github.com/sponsors/wooorm" | ||||
|             } | ||||
|         }, | ||||
|         "packages/core": { | ||||
|             "name": "@goauthentik/core", | ||||
|             "version": "1.0.0", | ||||
|             "license": "MIT", | ||||
|             "devDependencies": { | ||||
|                 "@goauthentik/prettier-config": "^1.0.4", | ||||
|                 "@goauthentik/tsconfig": "^1.0.4", | ||||
|                 "@types/node": "^22.14.1", | ||||
|                 "prettier": "^3.3.3", | ||||
|                 "typescript": "^5.6.2" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">=20.11" | ||||
|             } | ||||
|         }, | ||||
|         "packages/core/node_modules/@types/node": { | ||||
|             "version": "22.15.19", | ||||
|             "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.19.tgz", | ||||
|             "integrity": "sha512-3vMNr4TzNQyjHcRZadojpRaD9Ofr6LsonZAoQ+HMUa/9ORTPoxVIw0e0mpqWpdjj8xybyCM+oKOUH2vwFu/oEw==", | ||||
|             "dev": true, | ||||
|             "license": "MIT", | ||||
|             "dependencies": { | ||||
|                 "undici-types": "~6.21.0" | ||||
|             } | ||||
|         }, | ||||
|         "packages/core/node_modules/undici-types": { | ||||
|             "version": "6.21.0", | ||||
|             "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", | ||||
|             "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", | ||||
|             "dev": true, | ||||
|             "license": "MIT" | ||||
|         }, | ||||
|         "packages/esbuild-plugin-live-reload": { | ||||
|             "name": "@goauthentik/esbuild-plugin-live-reload", | ||||
|             "version": "1.0.4", | ||||
| @ -24910,6 +24953,7 @@ | ||||
|         "packages/monorepo": { | ||||
|             "name": "@goauthentik/monorepo", | ||||
|             "version": "1.0.0", | ||||
|             "extraneous": true, | ||||
|             "license": "MIT", | ||||
|             "devDependencies": { | ||||
|                 "@goauthentik/prettier-config": "^1.0.4", | ||||
| @ -24922,23 +24966,6 @@ | ||||
|                 "node": ">=20.11" | ||||
|             } | ||||
|         }, | ||||
|         "packages/monorepo/node_modules/@types/node": { | ||||
|             "version": "22.15.3", | ||||
|             "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.3.tgz", | ||||
|             "integrity": "sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==", | ||||
|             "dev": true, | ||||
|             "license": "MIT", | ||||
|             "dependencies": { | ||||
|                 "undici-types": "~6.21.0" | ||||
|             } | ||||
|         }, | ||||
|         "packages/monorepo/node_modules/undici-types": { | ||||
|             "version": "6.21.0", | ||||
|             "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", | ||||
|             "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", | ||||
|             "dev": true, | ||||
|             "license": "MIT" | ||||
|         }, | ||||
|         "packages/sfe": { | ||||
|             "name": "@goauthentik/web-sfe", | ||||
|             "version": "0.0.0", | ||||
|  | ||||
| @ -55,6 +55,20 @@ | ||||
|             "import": "./*/index.js" | ||||
|         } | ||||
|     }, | ||||
|     "imports": { | ||||
|         "#*/browser": { | ||||
|             "types": "./out/*/browser.d.ts", | ||||
|             "import": "./*/browser.js" | ||||
|         }, | ||||
|         "#*/node": { | ||||
|             "types": "./out/*/node.d.ts", | ||||
|             "import": "./*/node.js" | ||||
|         }, | ||||
|         "#*": { | ||||
|             "types": "./out/*/index.d.ts", | ||||
|             "import": "./*/index.js" | ||||
|         } | ||||
|     }, | ||||
|     "dependencies": { | ||||
|         "@codemirror/lang-css": "^6.3.1", | ||||
|         "@codemirror/lang-html": "^6.4.9", | ||||
| @ -115,8 +129,8 @@ | ||||
|     }, | ||||
|     "devDependencies": { | ||||
|         "@eslint/js": "^9.11.1", | ||||
|         "@goauthentik/core": "^1.0.0", | ||||
|         "@goauthentik/esbuild-plugin-live-reload": "^1.0.4", | ||||
|         "@goauthentik/monorepo": "^1.0.0", | ||||
|         "@goauthentik/prettier-config": "^1.0.4", | ||||
|         "@goauthentik/tsconfig": "^1.0.4", | ||||
|         "@hcaptcha/types": "^1.0.4", | ||||
| @ -392,7 +406,6 @@ | ||||
|         "node": ">=20" | ||||
|     }, | ||||
|     "workspaces": [ | ||||
|         ".", | ||||
|         "./packages/*" | ||||
|     ], | ||||
|     "prettier": "@goauthentik/prettier-config", | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| # `@goauthentik/monorepo` | ||||
| # `@goauthentik/core` | ||||
| 
 | ||||
| This package contains utility scripts common to all TypeScript and JavaScript packages in the | ||||
| `@goauthentik` monorepo. | ||||
| @ -1,7 +1,7 @@ | ||||
| /** | ||||
|  * @file Utility functions for working with environment variables. | ||||
|  */ | ||||
| /// <reference types="./types/global.js" />
 | ||||
| /// <reference types="../types/node.js" />
 | ||||
| 
 | ||||
| //#region Constants
 | ||||
| 
 | ||||
							
								
								
									
										12
									
								
								web/packages/core/index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								web/packages/core/index.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | ||||
| /** | ||||
|  * @file Dummy entry point for the `core` package. | ||||
|  * | ||||
|  * This exists to make TypeScript's module resolution more predictable. | ||||
|  * | ||||
|  * @internal | ||||
|  * @ignore | ||||
|  */ | ||||
|  | ||||
| export {}; | ||||
|  | ||||
| export default {}; | ||||
							
								
								
									
										59
									
								
								web/packages/core/package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								web/packages/core/package.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,59 @@ | ||||
| { | ||||
|     "name": "@goauthentik/core", | ||||
|     "version": "1.0.0", | ||||
|     "description": "Core functionality for the authentik monorepo", | ||||
|     "license": "MIT", | ||||
|     "private": true, | ||||
|     "scripts": { | ||||
|         "build": "tsc -p .", | ||||
|         "prettier": "prettier --write .", | ||||
|         "prettier-check": "prettier --check ." | ||||
|     }, | ||||
|     "main": "index.js", | ||||
|     "type": "module", | ||||
|     "exports": { | ||||
|         "./package.json": "./package.json", | ||||
|         "./*/browser": { | ||||
|             "types": "./out/*/browser.d.ts", | ||||
|             "import": "./*/browser.js" | ||||
|         }, | ||||
|         "./*/node": { | ||||
|             "types": "./out/*/node.d.ts", | ||||
|             "import": "./*/node.js" | ||||
|         }, | ||||
|         "./*": { | ||||
|             "types": "./out/*/index.d.ts", | ||||
|             "import": "./*/index.js" | ||||
|         }, | ||||
|         ".": { | ||||
|             "import": "./index.js", | ||||
|             "types": "./out/index.d.ts" | ||||
|         } | ||||
|     }, | ||||
|     "imports": { | ||||
|         "#*/browser": { | ||||
|             "types": "./out/*/browser.d.ts", | ||||
|             "import": "./*/browser.js" | ||||
|         }, | ||||
|         "#*/node": { | ||||
|             "types": "./out/*/node.d.ts", | ||||
|             "import": "./*/node.js" | ||||
|         }, | ||||
|         "#*": { | ||||
|             "types": "./out/*/index.d.ts", | ||||
|             "import": "./*/index.js" | ||||
|         } | ||||
|     }, | ||||
|     "devDependencies": { | ||||
|         "@goauthentik/prettier-config": "^1.0.4", | ||||
|         "@goauthentik/tsconfig": "^1.0.4", | ||||
|         "@types/node": "^22.14.1", | ||||
|         "prettier": "^3.3.3", | ||||
|         "typescript": "^5.6.2" | ||||
|     }, | ||||
|     "engines": { | ||||
|         "node": ">=20.11" | ||||
|     }, | ||||
|     "types": "./out/index.d.ts", | ||||
|     "prettier": "@goauthentik/prettier-config" | ||||
| } | ||||
| @ -10,22 +10,26 @@ const relativeDirname = dirname(fileURLToPath(import.meta.url)); | ||||
| 
 | ||||
| /** | ||||
|  * The root of the authentik monorepo. | ||||
|  * | ||||
|  * @runtime node | ||||
|  */ | ||||
| // TODO: Revise when this package is moved to the monorepo's `packages/monorepo` directory.
 | ||||
| export const MonoRepoRoot = /** @type {MonoRepoRoot} */ ( | ||||
|     resolve(relativeDirname, "..", "..", "..") | ||||
|     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 | ||||
|  * | ||||
|  * @param {string} packageName | ||||
|  * @param {ImportMeta} [meta] The `import.meta` object of the module. | ||||
|  * | ||||
|  * @runtime node | ||||
|  * @returns {string} The resolved path to the package. | ||||
|  * @throws {Error} If the package cannot be resolved. | ||||
|  */ | ||||
| export function resolvePackage(packageName) { | ||||
| export function resolvePackage(packageName, meta) { | ||||
|     const require = createRequire(meta ? meta.url : import.meta.url); | ||||
| 
 | ||||
|     const relativePackageJSONPath = join(packageName, "package.json"); | ||||
| 
 | ||||
|     /** @type {string} */ | ||||
| @ -34,7 +38,7 @@ export function resolvePackage(packageName) { | ||||
|     try { | ||||
|         absolutePackageJSONPath = require.resolve(relativePackageJSONPath); | ||||
|     } catch (cause) { | ||||
|         const error = new Error(`Failed to resolve package "${packageName}"`); | ||||
|         const error = new Error(`🚫 Failed to resolve package "${packageName}"`); | ||||
| 
 | ||||
|         error.cause = cause; | ||||
| 
 | ||||
| @ -9,6 +9,7 @@ import { fileURLToPath } from "node:url"; | ||||
|  * @param {ImportMeta} meta The `import.meta` object of the module. | ||||
|  * | ||||
|  * @return {boolean} Whether the module was run directly. | ||||
|  * @runtime node | ||||
|  */ | ||||
| export function isMain(meta) { | ||||
|     // Are we not in a module context?
 | ||||
| @ -1,9 +1,11 @@ | ||||
| { | ||||
|     "extends": "@goauthentik/tsconfig", | ||||
|     "compilerOptions": { | ||||
|         "lib": ["DOM", "DOM.Iterable", "ESNext"], | ||||
|         "resolveJsonModule": true, | ||||
|         "baseUrl": ".", | ||||
|         "checkJs": true, | ||||
|         "allowJs": true, | ||||
|         "emitDeclarationOnly": true | ||||
|     } | ||||
| } | ||||
							
								
								
									
										54
									
								
								web/packages/core/types/node.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								web/packages/core/types/node.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,54 @@ | ||||
| /** | ||||
|  * @file Global variables provided by Node.js | ||||
|  */ | ||||
|  | ||||
| declare module "module" { | ||||
|     global { | ||||
|         /** | ||||
|          * @deprecated This is not present in ESM files. | ||||
|          * | ||||
|          * ```js | ||||
|          * import { dirname } from "node:path"; | ||||
|          * import { fileURLToPath } from "node:url"; | ||||
|          * | ||||
|          * const relativeDirname = dirname(fileURLToPath(import.meta.url)); | ||||
|          * ``` | ||||
|          */ | ||||
|         // eslint-disable-next-line no-var | ||||
|         var __dirname: string; | ||||
|     } | ||||
| } | ||||
|  | ||||
| declare module "process" { | ||||
|     global { | ||||
|         namespace NodeJS { | ||||
|             interface ProcessEnv { | ||||
|                 /** | ||||
|                  * The port used by the Docker Compose HTTP service. | ||||
|                  */ | ||||
|                 COMPOSE_PORT_HTTP?: string; | ||||
|  | ||||
|                 /** | ||||
|                  * The port used by the Docker Compose HTTPS service. | ||||
|                  */ | ||||
|                 COMPOSE_PORT_HTTPS?: string; | ||||
|  | ||||
|                 /** | ||||
|                  * An environment variable used to determine | ||||
|                  * whether Node.js is running in production mode. | ||||
|                  * | ||||
|                  * @see {@link https://nodejs.org/en/learn/getting-started/nodejs-the-difference-between-development-and-production | The difference between development and production} | ||||
|                  * @runtime node | ||||
|                  */ | ||||
|                 readonly NODE_ENV?: "development" | "production"; | ||||
|                 /** | ||||
|                  * @todo Determine where this is used and if it is needed, | ||||
|                  * give it a better name. | ||||
|                  * @deprecated | ||||
|                  * @runtime node | ||||
|                  */ | ||||
|                 readonly AK_API_BASE_PATH?: string; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										21
									
								
								web/packages/core/version/index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								web/packages/core/version/index.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| /** | ||||
|  * @file Utility functions for working with semantic versions. | ||||
|  * | ||||
|  * @runtime common | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * Creates a URL to the release notes for the given version. | ||||
|  * | ||||
|  * @param {string} semver | ||||
|  * @returns {URL} | ||||
|  * @runtime common | ||||
|  */ | ||||
| export function createReleaseNotesURL(semver) { | ||||
|     const segments = semver.split("."); | ||||
|     const versionFamily = segments.slice(0, -1).join("."); | ||||
|  | ||||
|     const release = `${versionFamily}#fixed-in-${segments.join("")}`; | ||||
|  | ||||
|     return new URL(`/docs/releases/${release}`, "https://goauthentik.io"); | ||||
| } | ||||
| @ -1,16 +1,24 @@ | ||||
| /** | ||||
|  * @file Utility functions for working with semantic versions. | ||||
|  * | ||||
|  * @runtime node | ||||
|  */ | ||||
| import { MonoRepoRoot } from "#paths/node"; | ||||
| import { execSync } from "node:child_process"; | ||||
| 
 | ||||
| import PackageJSON from "../../../package.json" with { type: "json" }; | ||||
| import { MonoRepoRoot } from "./paths.js"; | ||||
| import PackageJSON from "../../../../package.json" with { type: "json" }; | ||||
| 
 | ||||
| /** | ||||
|  * The current version of authentik in SemVer format. | ||||
|  * | ||||
|  * @runtime node | ||||
|  */ | ||||
| export const AuthentikVersion = /**@type {`${number}.${number}.${number}`} */ (PackageJSON.version); | ||||
| 
 | ||||
| /** | ||||
|  * Reads the last commit hash from the current git repository. | ||||
|  * | ||||
|  * @runtime node | ||||
|  */ | ||||
| export function readGitBuildHash() { | ||||
|     try { | ||||
| @ -34,6 +42,7 @@ export function readGitBuildHash() { | ||||
|  * | ||||
|  * This must match the behavior defined in authentik's server-side `get_full_version` function. | ||||
|  * | ||||
|  * @runtime node | ||||
|  * @see {@link "authentik\_\_init\_\_.py"} | ||||
|  */ | ||||
| export function readBuildIdentifier() { | ||||
| @ -1,6 +0,0 @@ | ||||
| /// <reference types="./types/global.js" /> | ||||
|  | ||||
| export * from "./paths.js"; | ||||
| export * from "./environment.js"; | ||||
| export * from "./version.js"; | ||||
| export * from "./scripting.js"; | ||||
| @ -1,28 +0,0 @@ | ||||
| { | ||||
|     "name": "@goauthentik/monorepo", | ||||
|     "version": "1.0.0", | ||||
|     "description": "Utilities for the authentik monorepo.", | ||||
|     "license": "MIT", | ||||
|     "private": true, | ||||
|     "main": "index.js", | ||||
|     "type": "module", | ||||
|     "exports": { | ||||
|         "./package.json": "./package.json", | ||||
|         ".": { | ||||
|             "types": "./out/index.d.ts", | ||||
|             "import": "./index.js" | ||||
|         } | ||||
|     }, | ||||
|     "devDependencies": { | ||||
|         "@goauthentik/prettier-config": "^1.0.4", | ||||
|         "@goauthentik/tsconfig": "^1.0.4", | ||||
|         "@types/node": "^22.14.1", | ||||
|         "prettier": "^3.3.3", | ||||
|         "typescript": "^5.6.2" | ||||
|     }, | ||||
|     "engines": { | ||||
|         "node": ">=20.11" | ||||
|     }, | ||||
|     "types": "./out/index.d.ts", | ||||
|     "prettier": "@goauthentik/prettier-config" | ||||
| } | ||||
							
								
								
									
										15
									
								
								web/packages/monorepo/types/global.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								web/packages/monorepo/types/global.d.ts
									
									
									
									
										vendored
									
									
								
							| @ -1,15 +0,0 @@ | ||||
| declare module "process" { | ||||
|     global { | ||||
|         namespace NodeJS { | ||||
|             interface ProcessEnv { | ||||
|                 /** | ||||
|                  * An environment variable used to determine | ||||
|                  * whether Node.js is running in production mode. | ||||
|                  * | ||||
|                  * @see {@link https://nodejs.org/en/learn/getting-started/nodejs-the-difference-between-development-and-production | The difference between development and production} | ||||
|                  */ | ||||
|                 NODE_ENV?: "production" | "development"; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -12,7 +12,7 @@ const relativeDirname = dirname(fileURLToPath(import.meta.url)); | ||||
| /** | ||||
|  * The root of the web package. | ||||
|  */ | ||||
| export const PackageRoot = /** @type {WebPackageIdentifier} */ (resolve(relativeDirname)); | ||||
| export const PackageRoot = /** @type {WebPackageIdentifier} */ (resolve(relativeDirname, "..")); | ||||
| 
 | ||||
| /** | ||||
|  * The name of the distribution directory. | ||||
| @ -25,7 +25,7 @@ export const DistDirectoryName = "dist"; | ||||
|  * This is where the built files are located after running the build process. | ||||
|  */ | ||||
| export const DistDirectory = /** @type {`${WebPackageIdentifier}/${DistDirectoryName}`} */ ( | ||||
|     resolve(relativeDirname, DistDirectoryName) | ||||
|     resolve(PackageRoot, DistDirectoryName) | ||||
| ); | ||||
| 
 | ||||
| //#endregion
 | ||||
| @ -11,7 +11,7 @@ | ||||
|  * | ||||
|  * @import { ConfigFile } from "@lit/localize-tools/lib/types/config" | ||||
|  */ | ||||
| import { PackageRoot } from "@goauthentik/web/paths"; | ||||
| import { PackageRoot } from "#paths/node"; | ||||
| import { spawnSync } from "node:child_process"; | ||||
| import { readFileSync, statSync } from "node:fs"; | ||||
| import path from "node:path"; | ||||
|  | ||||
| @ -4,14 +4,13 @@ | ||||
|  * | ||||
|  * @import { BuildOptions } from "esbuild"; | ||||
|  */ | ||||
| import { mdxPlugin } from "#bundler/mdx-plugin/node"; | ||||
| import { createBundleDefinitions } from "#bundler/utils/node"; | ||||
| import { DistDirectory, DistDirectoryName, EntryPoint, PackageRoot } from "#paths/node"; | ||||
| import { NodeEnvironment } from "@goauthentik/core/environment/node"; | ||||
| import { MonoRepoRoot, resolvePackage } from "@goauthentik/core/paths/node"; | ||||
| import { readBuildIdentifier } from "@goauthentik/core/version/node"; | ||||
| import { liveReloadPlugin } from "@goauthentik/esbuild-plugin-live-reload/plugin"; | ||||
| import { | ||||
|     MonoRepoRoot, | ||||
|     NodeEnvironment, | ||||
|     readBuildIdentifier, | ||||
|     resolvePackage, | ||||
| } from "@goauthentik/monorepo"; | ||||
| import { DistDirectory, DistDirectoryName, EntryPoint, PackageRoot } from "@goauthentik/web/paths"; | ||||
| import { deepmerge } from "deepmerge-ts"; | ||||
| import esbuild from "esbuild"; | ||||
| import copy from "esbuild-plugin-copy"; | ||||
| @ -19,12 +18,9 @@ import { polyfillNode } from "esbuild-plugin-polyfill-node"; | ||||
| import * as fs from "node:fs/promises"; | ||||
| import * as path from "node:path"; | ||||
|  | ||||
| import { mdxPlugin } from "./esbuild/build-mdx-plugin.mjs"; | ||||
| import { createBundleDefinitions } from "./esbuild/environment.mjs"; | ||||
|  | ||||
| const logPrefix = "[Build]"; | ||||
|  | ||||
| const patternflyPath = resolvePackage("@patternfly/patternfly"); | ||||
| const patternflyPath = resolvePackage("@patternfly/patternfly", import.meta); | ||||
|  | ||||
| /** | ||||
|  * @type {Readonly<BuildOptions>} | ||||
| @ -163,6 +159,19 @@ async function doWatch() { | ||||
|     await buildContext.rebuild(); | ||||
|     await buildContext.watch(); | ||||
|  | ||||
|     const httpURL = new URL("http://localhost"); | ||||
|     httpURL.port = process.env.COMPOSE_PORT_HTTP ?? "9000"; | ||||
|  | ||||
|     const httpsURL = new URL("http://localhost"); | ||||
|     httpsURL.port = process.env.COMPOSE_PORT_HTTPS ?? "9443"; | ||||
|  | ||||
|     console.log(`\n${logPrefix} 🚀 Server running\n\n`); | ||||
|  | ||||
|     console.log(`  🔓 ${httpURL.href}`); | ||||
|     console.log(`  🔒 ${httpsURL.href}`); | ||||
|  | ||||
|     console.log(`\n---`); | ||||
|  | ||||
|     return /** @type {Promise<void>} */ ( | ||||
|         new Promise((resolve) => { | ||||
|             process.on("SIGINT", () => { | ||||
|  | ||||
| @ -152,6 +152,7 @@ export default [ | ||||
|     { | ||||
|         ignores: [ | ||||
|             "dist/", | ||||
|             "out/", | ||||
|             ".wireit/", | ||||
|             "packages/", | ||||
|             // don't ever lint node_modules | ||||
|  | ||||
| @ -6,7 +6,7 @@ | ||||
|  * @import { ProgramMessage } from "@lit/localize-tools/src/messages.js" | ||||
|  * @import { Locale } from "@lit/localize-tools/src/types/locale.js" | ||||
|  */ | ||||
| import { PackageRoot } from "@goauthentik/web/paths"; | ||||
| import { PackageRoot } from "#paths/node"; | ||||
| import { readFileSync } from "node:fs"; | ||||
| import path from "node:path"; | ||||
| import pseudolocale from "pseudolocale"; | ||||
|  | ||||
| @ -9,6 +9,7 @@ import "@goauthentik/admin/admin-overview/charts/AdminLoginAuthorizeChart"; | ||||
| import "@goauthentik/admin/admin-overview/charts/OutpostStatusChart"; | ||||
| import "@goauthentik/admin/admin-overview/charts/SyncStatusChart"; | ||||
| import { me } from "@goauthentik/common/users"; | ||||
| import { createReleaseNotesURL } from "@goauthentik/core/version"; | ||||
| import { AKElement } from "@goauthentik/elements/Base"; | ||||
| import { WithLicenseSummary } from "@goauthentik/elements/Interface/licenseSummaryProvider.js"; | ||||
| import "@goauthentik/elements/PageHeader"; | ||||
| @ -30,15 +31,6 @@ import PFBase from "@patternfly/patternfly/patternfly-base.css"; | ||||
|  | ||||
| import { SessionUser } from "@goauthentik/api"; | ||||
|  | ||||
| function createReleaseNotesURL(semver: string): URL { | ||||
|     const segments = semver.split("."); | ||||
|     const versionFamily = segments.slice(0, -1).join("."); | ||||
|  | ||||
|     const release = `${versionFamily}#fixed-in-${segments.join("")}`; | ||||
|  | ||||
|     return new URL(`/docs/releases/${release}`, "https://goauthentik.io"); | ||||
| } | ||||
|  | ||||
| const AdminOverviewBase = WithLicenseSummary(AKElement); | ||||
|  | ||||
| @customElement("ak-admin-overview") | ||||
|  | ||||
| @ -61,6 +61,9 @@ | ||||
|         "src/**/*.comp.ts" | ||||
|     ], | ||||
|     "references": [ | ||||
|         { | ||||
|             "path": "./packages/core" | ||||
|         }, | ||||
|         { | ||||
|             "path": "./packages/esbuild-plugin-live-reload" | ||||
|         } | ||||
|  | ||||
							
								
								
									
										9
									
								
								web/types/node.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								web/types/node.d.ts
									
									
									
									
										vendored
									
									
								
							| @ -14,8 +14,8 @@ declare module "module" { | ||||
|          * const relativeDirname = dirname(fileURLToPath(import.meta.url)); | ||||
|          * ``` | ||||
|          */ | ||||
|  | ||||
|         const __dirname: string; | ||||
|         // eslint-disable-next-line no-var | ||||
|         var __dirname: string; | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -24,7 +24,10 @@ declare module "process" { | ||||
|         namespace NodeJS { | ||||
|             interface ProcessEnv { | ||||
|                 /** | ||||
|                  * Node environment, if any. | ||||
|                  * An environment variable used to determine | ||||
|                  * whether Node.js is running in production mode. | ||||
|                  * | ||||
|                  * @see {@link https://nodejs.org/en/learn/getting-started/nodejs-the-difference-between-development-and-production | The difference between development and production} | ||||
|                  */ | ||||
|                 readonly NODE_ENV?: "development" | "production"; | ||||
|                 /** | ||||
|  | ||||
| @ -1,9 +1,9 @@ | ||||
| /// <reference types="@wdio/browser-runner" /> | ||||
| import { createBundleDefinitions } from "#bundler/utils/node"; | ||||
| import { browser } from "@wdio/globals"; | ||||
| import type { Options } from "@wdio/types"; | ||||
| import path from "node:path"; | ||||
| import { fileURLToPath } from "node:url"; | ||||
| import { createBundleDefinitions } from "scripts/esbuild/environment.mjs"; | ||||
| import type { InlineConfig } from "vite"; | ||||
| import litCSS from "vite-plugin-lit-css"; | ||||
| import tsconfigPaths from "vite-tsconfig-paths"; | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Teffen Ellis
					Teffen Ellis