Compare commits
	
		
			24 Commits
		
	
	
		
			website/in
			...
			import-org
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 0b96a98183 | |||
| d948345096 | |||
| ecfd1b077d | |||
| 3e67e358ce | |||
| c1032386c6 | |||
| 55cb7f3f2c | |||
| 0c4e5bfc22 | |||
| 69e5b1dfbe | |||
| ccc2a5bdfe | |||
| d86b5e7c8a | |||
| a95776891e | |||
| 031158fdba | |||
| b2fbb92498 | |||
| b1b6bf1a19 | |||
| 179d9d0721 | |||
| 8e94d58851 | |||
| 026669cfce | |||
| c83cea6963 | |||
| 8e01cc2df8 | |||
| 279cec203d | |||
| 41c5030c1e | |||
| 3206fdb7ef | |||
| d7c0868eef | |||
| 7d96a89697 | 
| @ -75,7 +75,7 @@ RUN --mount=type=secret,id=GEOIPUPDATE_ACCOUNT_ID \ | |||||||
|     /bin/sh -c "GEOIPUPDATE_LICENSE_KEY_FILE=/run/secrets/GEOIPUPDATE_LICENSE_KEY /usr/bin/entry.sh || echo 'Failed to get GeoIP database, disabling'; exit 0" |     /bin/sh -c "GEOIPUPDATE_LICENSE_KEY_FILE=/run/secrets/GEOIPUPDATE_LICENSE_KEY /usr/bin/entry.sh || echo 'Failed to get GeoIP database, disabling'; exit 0" | ||||||
|  |  | ||||||
| # Stage 4: Download uv | # Stage 4: Download uv | ||||||
| FROM ghcr.io/astral-sh/uv:0.7.14 AS uv | FROM ghcr.io/astral-sh/uv:0.7.15 AS uv | ||||||
| # Stage 5: Base python image | # Stage 5: Base python image | ||||||
| FROM ghcr.io/goauthentik/fips-python:3.13.5-slim-bookworm-fips AS python-base | FROM ghcr.io/goauthentik/fips-python:3.13.5-slim-bookworm-fips AS python-base | ||||||
|  |  | ||||||
|  | |||||||
							
								
								
									
										6
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								Makefile
									
									
									
									
									
								
							| @ -150,9 +150,9 @@ gen-client-ts: gen-clean-ts  ## Build and install the authentik API for Typescri | |||||||
| 		--additional-properties=npmVersion=${NPM_VERSION} \ | 		--additional-properties=npmVersion=${NPM_VERSION} \ | ||||||
| 		--git-repo-id authentik \ | 		--git-repo-id authentik \ | ||||||
| 		--git-user-id goauthentik | 		--git-user-id goauthentik | ||||||
| 	mkdir -p web/node_modules/@goauthentik/api |  | ||||||
| 	cd ${PWD}/${GEN_API_TS} && npm i | 	cd ${PWD}/${GEN_API_TS} && npm link | ||||||
| 	\cp -rf ${PWD}/${GEN_API_TS}/* web/node_modules/@goauthentik/api | 	cd ${PWD}/web && npm link @goauthentik/api | ||||||
|  |  | ||||||
| gen-client-py: gen-clean-py ## Build and install the authentik API for Python | gen-client-py: gen-clean-py ## Build and install the authentik API for Python | ||||||
| 	docker run \ | 	docker run \ | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.mod
									
									
									
									
									
								
							| @ -29,7 +29,7 @@ require ( | |||||||
| 	github.com/spf13/cobra v1.9.1 | 	github.com/spf13/cobra v1.9.1 | ||||||
| 	github.com/stretchr/testify v1.10.0 | 	github.com/stretchr/testify v1.10.0 | ||||||
| 	github.com/wwt/guac v1.3.2 | 	github.com/wwt/guac v1.3.2 | ||||||
| 	goauthentik.io/api/v3 v3.2025062.5 | 	goauthentik.io/api/v3 v3.2025062.6 | ||||||
| 	golang.org/x/exp v0.0.0-20230210204819-062eb4c674ab | 	golang.org/x/exp v0.0.0-20230210204819-062eb4c674ab | ||||||
| 	golang.org/x/oauth2 v0.30.0 | 	golang.org/x/oauth2 v0.30.0 | ||||||
| 	golang.org/x/sync v0.15.0 | 	golang.org/x/sync v0.15.0 | ||||||
|  | |||||||
							
								
								
									
										4
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								go.sum
									
									
									
									
									
								
							| @ -298,8 +298,8 @@ go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y | |||||||
| go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= | go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= | ||||||
| go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= | go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= | ||||||
| go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= | go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= | ||||||
| goauthentik.io/api/v3 v3.2025062.5 h1:+eQe3S+9WxrO0QczbSQUhtfnCB1w2rse5wmgMkcRUio= | goauthentik.io/api/v3 v3.2025062.6 h1:rlChhGP2vJufYCaTMb4sbRBEE1p2uL5T4HzMqF1AJ4A= | ||||||
| goauthentik.io/api/v3 v3.2025062.5/go.mod h1:zz+mEZg8rY/7eEjkMGWJ2DnGqk+zqxuybGCGrR2O4Kw= | goauthentik.io/api/v3 v3.2025062.6/go.mod h1:zz+mEZg8rY/7eEjkMGWJ2DnGqk+zqxuybGCGrR2O4Kw= | ||||||
| golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= | golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= | ||||||
| golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | ||||||
| golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | ||||||
|  | |||||||
							
								
								
									
										8
									
								
								lifecycle/aws/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								lifecycle/aws/package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -9,7 +9,7 @@ | |||||||
|             "version": "0.0.0", |             "version": "0.0.0", | ||||||
|             "license": "MIT", |             "license": "MIT", | ||||||
|             "devDependencies": { |             "devDependencies": { | ||||||
|                 "aws-cdk": "^2.1019.1", |                 "aws-cdk": "^2.1019.2", | ||||||
|                 "cross-env": "^7.0.3" |                 "cross-env": "^7.0.3" | ||||||
|             }, |             }, | ||||||
|             "engines": { |             "engines": { | ||||||
| @ -17,9 +17,9 @@ | |||||||
|             } |             } | ||||||
|         }, |         }, | ||||||
|         "node_modules/aws-cdk": { |         "node_modules/aws-cdk": { | ||||||
|             "version": "2.1019.1", |             "version": "2.1019.2", | ||||||
|             "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1019.1.tgz", |             "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1019.2.tgz", | ||||||
|             "integrity": "sha512-G2jxKuTsYTrYZX80CDApCrKcZ+AuFxxd+b0dkb0KEkfUsela7RqrDGLm5wOzSCIc3iH6GocR8JDVZuJ+0nNuKg==", |             "integrity": "sha512-LkWZ3IKBkfCPTCu60t4Wb9JMSkb+0Uzk+HIxZeW5sFohq8bxDGV0OP1hcqEC2+KbVYRn7q+YhMeSJ/FOQcgpiw==", | ||||||
|             "dev": true, |             "dev": true, | ||||||
|             "license": "Apache-2.0", |             "license": "Apache-2.0", | ||||||
|             "bin": { |             "bin": { | ||||||
|  | |||||||
| @ -10,7 +10,7 @@ | |||||||
|         "node": ">=20" |         "node": ">=20" | ||||||
|     }, |     }, | ||||||
|     "devDependencies": { |     "devDependencies": { | ||||||
|         "aws-cdk": "^2.1019.1", |         "aws-cdk": "^2.1019.2", | ||||||
|         "cross-env": "^7.0.3" |         "cross-env": "^7.0.3" | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,3 +1,4 @@ | |||||||
| README.md | README.md | ||||||
| node_modules | node_modules | ||||||
| _media | _media | ||||||
|  | !.github/README.md | ||||||
| @ -1,12 +1,12 @@ | |||||||
| { | { | ||||||
|     "name": "@goauthentik/esbuild-plugin-live-reload", |     "name": "@goauthentik/esbuild-plugin-live-reload", | ||||||
|     "version": "1.0.5", |     "version": "1.0.6", | ||||||
|     "lockfileVersion": 3, |     "lockfileVersion": 3, | ||||||
|     "requires": true, |     "requires": true, | ||||||
|     "packages": { |     "packages": { | ||||||
|         "": { |         "": { | ||||||
|             "name": "@goauthentik/esbuild-plugin-live-reload", |             "name": "@goauthentik/esbuild-plugin-live-reload", | ||||||
|             "version": "1.0.5", |             "version": "1.0.6", | ||||||
|             "license": "MIT", |             "license": "MIT", | ||||||
|             "dependencies": { |             "dependencies": { | ||||||
|                 "find-free-ports": "^3.1.1" |                 "find-free-ports": "^3.1.1" | ||||||
| @ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|     "name": "@goauthentik/esbuild-plugin-live-reload", |     "name": "@goauthentik/esbuild-plugin-live-reload", | ||||||
|     "version": "1.0.5", |     "version": "1.0.6", | ||||||
|     "description": "ESBuild + browser refresh. Build completes, page reloads.", |     "description": "ESBuild + browser refresh. Build completes, page reloads.", | ||||||
|     "license": "MIT", |     "license": "MIT", | ||||||
|     "scripts": { |     "scripts": { | ||||||
| @ -2,8 +2,11 @@ | |||||||
|  * @file Prettier configuration for authentik. |  * @file Prettier configuration for authentik. | ||||||
|  * |  * | ||||||
|  * @import { Config as PrettierConfig } from "prettier"; |  * @import { Config as PrettierConfig } from "prettier"; | ||||||
|  * @import { PluginConfig as SortPluginConfig } from "@trivago/prettier-plugin-sort-imports"; |  */ | ||||||
|  * |  | ||||||
|  | import { importsPlugin } from "./imports.js"; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  * @typedef {object} PackageJSONPluginConfig |  * @typedef {object} PackageJSONPluginConfig | ||||||
|  * @property {string[]} [packageSortOrder] Custom ordering array. |  * @property {string[]} [packageSortOrder] Custom ordering array. | ||||||
|  */ |  */ | ||||||
| @ -11,7 +14,7 @@ | |||||||
| /** | /** | ||||||
|  * authentik Prettier configuration. |  * authentik Prettier configuration. | ||||||
|  * |  * | ||||||
|  * @type {PrettierConfig & SortPluginConfig & PackageJSONPluginConfig} |  * @type {PrettierConfig & PackageJSONPluginConfig} | ||||||
|  * @internal |  * @internal | ||||||
|  */ |  */ | ||||||
| export const AuthentikPrettierConfig = { | export const AuthentikPrettierConfig = { | ||||||
| @ -34,32 +37,8 @@ export const AuthentikPrettierConfig = { | |||||||
|     plugins: [ |     plugins: [ | ||||||
|         // --- |         // --- | ||||||
|         "prettier-plugin-packagejson", |         "prettier-plugin-packagejson", | ||||||
|         "@trivago/prettier-plugin-sort-imports", |         importsPlugin(), | ||||||
|     ], |     ], | ||||||
|     importOrder: [ |  | ||||||
|         // --- |  | ||||||
|  |  | ||||||
|         "^(@goauthentik/|#)common.+", |  | ||||||
|         "^(@goauthentik/|#)elements.+", |  | ||||||
|         "^(@goauthentik/|#)components.+", |  | ||||||
|         "^(@goauthentik/|#)user.+", |  | ||||||
|         "^(@goauthentik/|#)admin.+", |  | ||||||
|         "^(@goauthentik/|#)flow.+", |  | ||||||
|  |  | ||||||
|         "^#.+", |  | ||||||
|         "^@goauthentik.+", |  | ||||||
|  |  | ||||||
|         "<THIRD_PARTY_MODULES>", |  | ||||||
|  |  | ||||||
|         "^(@?)lit(.*)$", |  | ||||||
|         "\\.css$", |  | ||||||
|         "^@goauthentik/api$", |  | ||||||
|         "^[./]", |  | ||||||
|     ], |  | ||||||
|     importOrderSideEffects: false, |  | ||||||
|     importOrderSeparation: true, |  | ||||||
|     importOrderSortSpecifiers: true, |  | ||||||
|     importOrderParserPlugins: ["typescript", "jsx", "classProperties", "decorators-legacy"], |  | ||||||
|     overrides: [ |     overrides: [ | ||||||
|         { |         { | ||||||
|             files: "schemas/**/*.json", |             files: "schemas/**/*.json", | ||||||
|  | |||||||
							
								
								
									
										172
									
								
								packages/prettier-config/lib/imports.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										172
									
								
								packages/prettier-config/lib/imports.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,172 @@ | |||||||
|  | import { createRequire } from "node:module"; | ||||||
|  |  | ||||||
|  | import { formatSourceFromFile } from "format-imports"; | ||||||
|  | import { parsers as babelParsers } from "prettier/plugins/babel"; | ||||||
|  | /** | ||||||
|  |  * @file Prettier import plugin. | ||||||
|  |  * | ||||||
|  |  * @import { Plugin, ParserOptions } from "prettier"; | ||||||
|  |  */ | ||||||
|  | import { parsers as typescriptParsers } from "prettier/plugins/typescript"; | ||||||
|  |  | ||||||
|  | const require = createRequire(process.cwd() + "/"); | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @param {string} name | ||||||
|  |  * @returns {string | null} | ||||||
|  |  */ | ||||||
|  | function resolveModule(name) { | ||||||
|  |     try { | ||||||
|  |         return require.resolve(name); | ||||||
|  |     } catch (error) { | ||||||
|  |         return null; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | const webSubmodules = [ | ||||||
|  |     // --- | ||||||
|  |     "common", | ||||||
|  |     "elements", | ||||||
|  |     "components", | ||||||
|  |     "user", | ||||||
|  |     "admin", | ||||||
|  |     "flow", | ||||||
|  | ]; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Ensure that every import without an extension adds one. | ||||||
|  |  * @param {string} input | ||||||
|  |  * @returns {string} | ||||||
|  |  */ | ||||||
|  | function normalizeExtensions(input) { | ||||||
|  |     return input.replace(/(?:import|from)\s*["']((?:\.\.?\/).*?)(?<!\.\w+)["']/gm, (line, path) => { | ||||||
|  |         return line.replace(path, `${path}.js`); | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @param {string} filepath | ||||||
|  |  * @param {string} input | ||||||
|  |  * @returns {string} | ||||||
|  |  */ | ||||||
|  | function normalizeImports(filepath, input) { | ||||||
|  |     let output = input; | ||||||
|  |  | ||||||
|  |     // Replace all TypeScript imports with the paths resolved by Node/Browser import maps. | ||||||
|  |  | ||||||
|  |     for (const submodule of webSubmodules) { | ||||||
|  |         const legacyPattern = new RegExp( | ||||||
|  |             [ | ||||||
|  |                 // --- | ||||||
|  |                 `(?:import|from)`, | ||||||
|  |                 `\\\(?\\n?\\s*`, | ||||||
|  |                 `"(?<suffix>@goauthentik\/${submodule}\/)`, | ||||||
|  |  | ||||||
|  |                 `(?<path>[^"'.]+)`, | ||||||
|  |                 `(?:\.[^"']+)?["']`, | ||||||
|  |                 `\\n?\\s*\\\)?;`, | ||||||
|  |             ].join(""), | ||||||
|  |             "gm", | ||||||
|  |         ); | ||||||
|  |  | ||||||
|  |         output = output.replace( | ||||||
|  |             legacyPattern, | ||||||
|  |             /** | ||||||
|  |              * @param {string} line | ||||||
|  |              * @param {string} suffix | ||||||
|  |              * @param {string} path | ||||||
|  |              */ | ||||||
|  |             (line, suffix, path) => { | ||||||
|  |                 const exported = `@goauthentik/web/${submodule}/${path}`; | ||||||
|  |                 let imported = `#${submodule}/${path}`; | ||||||
|  |  | ||||||
|  |                 let module = resolveModule(`${exported}.ts`); | ||||||
|  |  | ||||||
|  |                 if (!module) { | ||||||
|  |                     module = resolveModule(`${exported}/index.ts`); | ||||||
|  |                     imported += "/index"; | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 if (imported.endsWith(".css")) { | ||||||
|  |                     imported += ".js"; | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 if (!module) { | ||||||
|  |                     console.warn(`\nCannot resolve module ${exported} from ${filepath}`, { | ||||||
|  |                         line, | ||||||
|  |                         path, | ||||||
|  |                         exported, | ||||||
|  |                         imported, | ||||||
|  |                         module, | ||||||
|  |                     }); | ||||||
|  |  | ||||||
|  |                     process.exit(1); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 return ( | ||||||
|  |                     line | ||||||
|  |                         // --- | ||||||
|  |                         .replace(suffix + path, imported) | ||||||
|  |                         .replace(`${imported}.js`, imported) | ||||||
|  |                 ); | ||||||
|  |             }, | ||||||
|  |         ); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     return output; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @returns {Plugin} | ||||||
|  |  */ | ||||||
|  | export function importsPlugin({ | ||||||
|  |     useLegacyCleanup = process.env.AK_FIX_LEGACY_IMPORTS === "true", | ||||||
|  | } = {}) { | ||||||
|  |     /** | ||||||
|  |      * @param {string} input | ||||||
|  |      * @param {ParserOptions} options | ||||||
|  |      */ | ||||||
|  |     const preprocess = (input, { filepath, printWidth }) => { | ||||||
|  |         let output = input; | ||||||
|  |  | ||||||
|  |         if (useLegacyCleanup) { | ||||||
|  |             output = normalizeExtensions(input); | ||||||
|  |             output = normalizeImports(filepath, output); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         const value = formatSourceFromFile.sync(output, filepath, { | ||||||
|  |             nodeProtocol: "always", | ||||||
|  |             maxLineLength: printWidth, | ||||||
|  |             wrappingStyle: "prettier", | ||||||
|  |             groupRules: [ | ||||||
|  |                 "^node:", | ||||||
|  |                 ...webSubmodules.map((submodule) => `^(@goauthentik/|#)${submodule}.+`), | ||||||
|  |  | ||||||
|  |                 "^#.+", | ||||||
|  |                 "^@goauthentik.+", | ||||||
|  |  | ||||||
|  |                 {}, // Other imports. | ||||||
|  |  | ||||||
|  |                 "^(@?)lit(.*)$", | ||||||
|  |                 "\\.css$", | ||||||
|  |                 "^@goauthentik/api$", | ||||||
|  |                 "^[./]", | ||||||
|  |             ], | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         return value || input; | ||||||
|  |     }; | ||||||
|  |  | ||||||
|  |     return { | ||||||
|  |         parsers: { | ||||||
|  |             typescript: { | ||||||
|  |                 ...typescriptParsers.typescript, | ||||||
|  |                 preprocess, | ||||||
|  |             }, | ||||||
|  |             babel: { | ||||||
|  |                 ...babelParsers.babel, | ||||||
|  |                 preprocess, | ||||||
|  |             }, | ||||||
|  |         }, | ||||||
|  |     }; | ||||||
|  | } | ||||||
							
								
								
									
										1848
									
								
								packages/prettier-config/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1848
									
								
								packages/prettier-config/package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|     "name": "@goauthentik/prettier-config", |     "name": "@goauthentik/prettier-config", | ||||||
|     "version": "2.0.1", |     "version": "3.0.0", | ||||||
|     "description": "authentik's Prettier config", |     "description": "authentik's Prettier config", | ||||||
|     "license": "MIT", |     "license": "MIT", | ||||||
|     "scripts": { |     "scripts": { | ||||||
| @ -10,19 +10,19 @@ | |||||||
|     }, |     }, | ||||||
|     "type": "module", |     "type": "module", | ||||||
|     "exports": "./index.js", |     "exports": "./index.js", | ||||||
|  |     "dependencies": { | ||||||
|  |         "format-imports": "^4.0.7" | ||||||
|  |     }, | ||||||
|     "devDependencies": { |     "devDependencies": { | ||||||
|         "@goauthentik/tsconfig": "^1.0.1", |         "@goauthentik/tsconfig": "^1.0.1", | ||||||
|         "@trivago/prettier-plugin-sort-imports": "^5.2.2", |         "@types/node": "^24.0.4", | ||||||
|         "prettier": "^3.5.3", |         "prettier": "^3.6.1", | ||||||
|         "prettier-plugin-organize-imports": "^4.1.0", |         "prettier-plugin-packagejson": "^2.5.16", | ||||||
|         "prettier-plugin-packagejson": "^2.5.15", |  | ||||||
|         "typescript": "^5.8.3" |         "typescript": "^5.8.3" | ||||||
|     }, |     }, | ||||||
|     "peerDependencies": { |     "peerDependencies": { | ||||||
|         "@trivago/prettier-plugin-sort-imports": "^5.2.2", |         "prettier": "^3.6.1", | ||||||
|         "prettier": "^3.5.3", |         "prettier-plugin-packagejson": "^2.5.16" | ||||||
|         "prettier-plugin-organize-imports": "^4.1.0", |  | ||||||
|         "prettier-plugin-packagejson": "^2.5.15" |  | ||||||
|     }, |     }, | ||||||
|     "engines": { |     "engines": { | ||||||
|         "node": ">=22" |         "node": ">=22" | ||||||
|  | |||||||
| @ -17,10 +17,10 @@ dependencies = [ | |||||||
|     "django-countries==7.6.1", |     "django-countries==7.6.1", | ||||||
|     "django-cte==2.0.0", |     "django-cte==2.0.0", | ||||||
|     "django-filter==25.1", |     "django-filter==25.1", | ||||||
|     "django-guardian==3.0.0", |     "django-guardian==3.0.3", | ||||||
|     "django-model-utils==5.0.0", |     "django-model-utils==5.0.0", | ||||||
|     "django-pglock==1.7.2", |     "django-pglock==1.7.2", | ||||||
|     "django-prometheus==2.4.0", |     "django-prometheus==2.4.1", | ||||||
|     "django-redis==6.0.0", |     "django-redis==6.0.0", | ||||||
|     "django-storages[s3]==1.14.6", |     "django-storages[s3]==1.14.6", | ||||||
|     "django-tenants==3.8.0", |     "django-tenants==3.8.0", | ||||||
| @ -36,7 +36,7 @@ dependencies = [ | |||||||
|     "flower==2.0.1", |     "flower==2.0.1", | ||||||
|     "geoip2==5.1.0", |     "geoip2==5.1.0", | ||||||
|     "geopy==2.4.1", |     "geopy==2.4.1", | ||||||
|     "google-api-python-client==2.173.0", |     "google-api-python-client==2.174.0", | ||||||
|     "gssapi==1.9.0", |     "gssapi==1.9.0", | ||||||
|     "gunicorn==23.0.0", |     "gunicorn==23.0.0", | ||||||
|     "jsonpatch==1.33", |     "jsonpatch==1.33", | ||||||
| @ -44,7 +44,7 @@ dependencies = [ | |||||||
|     "kubernetes==33.1.0", |     "kubernetes==33.1.0", | ||||||
|     "ldap3==2.9.1", |     "ldap3==2.9.1", | ||||||
|     "lxml==5.4.0", |     "lxml==5.4.0", | ||||||
|     "msgraph-sdk==1.34.0", |     "msgraph-sdk==1.35.0", | ||||||
|     "opencontainers==0.0.14", |     "opencontainers==0.0.14", | ||||||
|     "packaging==25.0", |     "packaging==25.0", | ||||||
|     "paramiko==3.5.1", |     "paramiko==3.5.1", | ||||||
|  | |||||||
| @ -9,8 +9,8 @@ | |||||||
|         "strict": true, |         "strict": true, | ||||||
|         "newLine": "lf", |         "newLine": "lf", | ||||||
|         "target": "ESNext", |         "target": "ESNext", | ||||||
|         "module": "ESNext", |         "module": "NodeNext", | ||||||
|         "moduleResolution": "bundler", |         "moduleResolution": "NodeNext", | ||||||
|         "outDir": "dist", |         "outDir": "dist", | ||||||
|         "skipDefaultLibCheck": true, |         "skipDefaultLibCheck": true, | ||||||
|         "skipLibCheck": true, |         "skipLibCheck": true, | ||||||
|  | |||||||
							
								
								
									
										33
									
								
								uv.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										33
									
								
								uv.lock
									
									
									
										generated
									
									
									
								
							| @ -279,10 +279,10 @@ requires-dist = [ | |||||||
|     { name = "django-countries", specifier = "==7.6.1" }, |     { name = "django-countries", specifier = "==7.6.1" }, | ||||||
|     { name = "django-cte", specifier = "==2.0.0" }, |     { name = "django-cte", specifier = "==2.0.0" }, | ||||||
|     { name = "django-filter", specifier = "==25.1" }, |     { name = "django-filter", specifier = "==25.1" }, | ||||||
|     { name = "django-guardian", specifier = "==3.0.0" }, |     { name = "django-guardian", specifier = "==3.0.3" }, | ||||||
|     { name = "django-model-utils", specifier = "==5.0.0" }, |     { name = "django-model-utils", specifier = "==5.0.0" }, | ||||||
|     { name = "django-pglock", specifier = "==1.7.2" }, |     { name = "django-pglock", specifier = "==1.7.2" }, | ||||||
|     { name = "django-prometheus", specifier = "==2.4.0" }, |     { name = "django-prometheus", specifier = "==2.4.1" }, | ||||||
|     { name = "django-redis", specifier = "==6.0.0" }, |     { name = "django-redis", specifier = "==6.0.0" }, | ||||||
|     { name = "django-storages", extras = ["s3"], specifier = "==1.14.6" }, |     { name = "django-storages", extras = ["s3"], specifier = "==1.14.6" }, | ||||||
|     { name = "django-tenants", specifier = "==3.8.0" }, |     { name = "django-tenants", specifier = "==3.8.0" }, | ||||||
| @ -298,7 +298,7 @@ requires-dist = [ | |||||||
|     { name = "flower", specifier = "==2.0.1" }, |     { name = "flower", specifier = "==2.0.1" }, | ||||||
|     { name = "geoip2", specifier = "==5.1.0" }, |     { name = "geoip2", specifier = "==5.1.0" }, | ||||||
|     { name = "geopy", specifier = "==2.4.1" }, |     { name = "geopy", specifier = "==2.4.1" }, | ||||||
|     { name = "google-api-python-client", specifier = "==2.173.0" }, |     { name = "google-api-python-client", specifier = "==2.174.0" }, | ||||||
|     { name = "gssapi", specifier = "==1.9.0" }, |     { name = "gssapi", specifier = "==1.9.0" }, | ||||||
|     { name = "gunicorn", specifier = "==23.0.0" }, |     { name = "gunicorn", specifier = "==23.0.0" }, | ||||||
|     { name = "jsonpatch", specifier = "==1.33" }, |     { name = "jsonpatch", specifier = "==1.33" }, | ||||||
| @ -306,7 +306,7 @@ requires-dist = [ | |||||||
|     { name = "kubernetes", specifier = "==33.1.0" }, |     { name = "kubernetes", specifier = "==33.1.0" }, | ||||||
|     { name = "ldap3", specifier = "==2.9.1" }, |     { name = "ldap3", specifier = "==2.9.1" }, | ||||||
|     { name = "lxml", specifier = "==5.4.0" }, |     { name = "lxml", specifier = "==5.4.0" }, | ||||||
|     { name = "msgraph-sdk", specifier = "==1.34.0" }, |     { name = "msgraph-sdk", specifier = "==1.35.0" }, | ||||||
|     { name = "opencontainers", git = "https://github.com/vsoch/oci-python?rev=ceb4fcc090851717a3069d78e85ceb1e86c2740c" }, |     { name = "opencontainers", git = "https://github.com/vsoch/oci-python?rev=ceb4fcc090851717a3069d78e85ceb1e86c2740c" }, | ||||||
|     { name = "packaging", specifier = "==25.0" }, |     { name = "packaging", specifier = "==25.0" }, | ||||||
|     { name = "paramiko", specifier = "==3.5.1" }, |     { name = "paramiko", specifier = "==3.5.1" }, | ||||||
| @ -1021,14 +1021,14 @@ wheels = [ | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "django-guardian" | name = "django-guardian" | ||||||
| version = "3.0.0" | version = "3.0.3" | ||||||
| source = { registry = "https://pypi.org/simple" } | source = { registry = "https://pypi.org/simple" } | ||||||
| dependencies = [ | dependencies = [ | ||||||
|     { name = "django" }, |     { name = "django" }, | ||||||
| ] | ] | ||||||
| sdist = { url = "https://files.pythonhosted.org/packages/30/82/2c76cdf77eae3cb0c3df394686daf8f84bcd604c0da7a26fa19f5fe74ed4/django_guardian-3.0.0.tar.gz", hash = "sha256:0c79d55c4af2cfc14fbd19539846a1ebfed2a38198b7697e0f5177b7f654e1cd", size = 79895, upload-time = "2025-05-07T19:33:23.328Z" } | sdist = { url = "https://files.pythonhosted.org/packages/30/c2/3ed43813dd7313f729dbaa829b4f9ed4a647530151f672cfb5f843c12edf/django_guardian-3.0.3.tar.gz", hash = "sha256:4e59eab4d836da5a027cf0c176d14bc2a4e22cbbdf753159a03946c08c8a196d", size = 85410, upload-time = "2025-06-25T20:42:17.475Z" } | ||||||
| wheels = [ | wheels = [ | ||||||
|     { url = "https://files.pythonhosted.org/packages/a5/81/a2f3d3245d1f4cf446d78863526fba0b1b140d60784095a5cc2d4e8ac709/django_guardian-3.0.0-py3-none-any.whl", hash = "sha256:f3ebe3cc7f486e267041b780c3429ad5db72c909df40c2f74adb1b059582a3cd", size = 112672, upload-time = "2025-05-07T19:33:21.719Z" }, |     { url = "https://files.pythonhosted.org/packages/8b/13/e6f629a978ef5fab8b8d2760cacc3e451016cef952cf4c049d672c5c6b07/django_guardian-3.0.3-py3-none-any.whl", hash = "sha256:d2164cea9f03c369d7ade21802710f3ab23ca6734bcc7dfcfb385906783916c7", size = 118198, upload-time = "2025-06-25T20:42:15.377Z" }, | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -1070,14 +1070,15 @@ wheels = [ | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "django-prometheus" | name = "django-prometheus" | ||||||
| version = "2.4.0" | version = "2.4.1" | ||||||
| source = { registry = "https://pypi.org/simple" } | source = { registry = "https://pypi.org/simple" } | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  |     { name = "django" }, | ||||||
|     { name = "prometheus-client" }, |     { name = "prometheus-client" }, | ||||||
| ] | ] | ||||||
| sdist = { url = "https://files.pythonhosted.org/packages/e8/b9/c758675671d71a1800feaad5c5fbcdecbd8d34296b63f9dc5662db39abda/django_prometheus-2.4.0.tar.gz", hash = "sha256:67da5c73d8e859aa73f6e11f52341c482691b17f8bd9844157cff6cdf51ce9bc", size = 24393, upload-time = "2025-06-18T18:06:28.673Z" } | sdist = { url = "https://files.pythonhosted.org/packages/98/f4/cb39ddd2a41e07a274c4e162c076e906ae232d63b66bbabdea0300878877/django_prometheus-2.4.1.tar.gz", hash = "sha256:073628243d2a6de6a8a8c20e5b512872dfb85d66e1b60b28bcf1eca0155dad95", size = 24464, upload-time = "2025-06-25T15:45:37.149Z" } | ||||||
| wheels = [ | wheels = [ | ||||||
|     { url = "https://files.pythonhosted.org/packages/38/05/d980950fb8c3f6f96c644599b1a025fb50e827477b1acf36daef72aa7e76/django_prometheus-2.4.0-py2.py3-none-any.whl", hash = "sha256:5b46b5f07b02ba8dd7abdb03a3c39073e8fd9120e2293a1ecb949bbb865378ac", size = 29528, upload-time = "2025-06-18T18:06:27.079Z" }, |     { url = "https://files.pythonhosted.org/packages/01/50/9c5e022fa92574e5d20606687f15a2aa255e10512a17d11a8216fa117f72/django_prometheus-2.4.1-py2.py3-none-any.whl", hash = "sha256:7fe5af7f7c9ad9cd8a429fe0f3f1bf651f0e244f77162147869eab7ec09cc5e7", size = 29541, upload-time = "2025-06-25T15:45:35.433Z" }, | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -1402,7 +1403,7 @@ wheels = [ | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "google-api-python-client" | name = "google-api-python-client" | ||||||
| version = "2.173.0" | version = "2.174.0" | ||||||
| source = { registry = "https://pypi.org/simple" } | source = { registry = "https://pypi.org/simple" } | ||||||
| dependencies = [ | dependencies = [ | ||||||
|     { name = "google-api-core" }, |     { name = "google-api-core" }, | ||||||
| @ -1411,9 +1412,9 @@ dependencies = [ | |||||||
|     { name = "httplib2" }, |     { name = "httplib2" }, | ||||||
|     { name = "uritemplate" }, |     { name = "uritemplate" }, | ||||||
| ] | ] | ||||||
| sdist = { url = "https://files.pythonhosted.org/packages/8f/7e/7c6e43e54f611f0f97f1678ea567fe06fecd545bd574db05e204e5b136fe/google_api_python_client-2.173.0.tar.gz", hash = "sha256:b537bc689758f4be3e6f40d59a6c0cd305abafdea91af4bc66ec31d40c08c804", size = 13091318, upload-time = "2025-06-19T19:39:05.881Z" } | sdist = { url = "https://files.pythonhosted.org/packages/1a/fd/860fef0cf3edbad828e2ab4d2ddee5dfe8e595b6da748ac6c77e95bc7bef/google_api_python_client-2.174.0.tar.gz", hash = "sha256:9eb7616a820b38a9c12c5486f9b9055385c7feb18b20cbafc5c5a688b14f3515", size = 13127872, upload-time = "2025-06-25T19:27:12.977Z" } | ||||||
| wheels = [ | wheels = [ | ||||||
|     { url = "https://files.pythonhosted.org/packages/e6/c9/dc9ca0537ee2ddac0f0b1e458903afe3f490a0f90dfd4b1b16eb339cdfbb/google_api_python_client-2.173.0-py3-none-any.whl", hash = "sha256:16a8e81c772dd116f5c4ee47d83643149e1367dc8fb4f47cb471fbcb5c7d7ac7", size = 13612778, upload-time = "2025-06-19T19:39:03.283Z" }, |     { url = "https://files.pythonhosted.org/packages/16/2d/4250b81e8f5309b58650660f403584db6f64067acac74475893a8f33348d/google_api_python_client-2.174.0-py3-none-any.whl", hash = "sha256:f695205ceec97bfaa1590a14282559c4109326c473b07352233a3584cdbf4b89", size = 13650466, upload-time = "2025-06-25T19:27:10.426Z" }, | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @ -2071,7 +2072,7 @@ wheels = [ | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "msgraph-sdk" | name = "msgraph-sdk" | ||||||
| version = "1.34.0" | version = "1.35.0" | ||||||
| source = { registry = "https://pypi.org/simple" } | source = { registry = "https://pypi.org/simple" } | ||||||
| dependencies = [ | dependencies = [ | ||||||
|     { name = "azure-identity" }, |     { name = "azure-identity" }, | ||||||
| @ -2081,9 +2082,9 @@ dependencies = [ | |||||||
|     { name = "microsoft-kiota-serialization-text" }, |     { name = "microsoft-kiota-serialization-text" }, | ||||||
|     { name = "msgraph-core" }, |     { name = "msgraph-core" }, | ||||||
| ] | ] | ||||||
| sdist = { url = "https://files.pythonhosted.org/packages/92/7a/c69b4fc4b9c02a6d14eddc96b91319dd7e91f0987245d4243a74b9c17fcf/msgraph_sdk-1.34.0.tar.gz", hash = "sha256:f71a81d3291f49d3610220de47bbbb6321aa62f7129d17a958f301b9acadfe99", size = 5968516, upload-time = "2025-06-18T11:43:33.287Z" } | sdist = { url = "https://files.pythonhosted.org/packages/33/49/25df000defb136542400bbe3096b3e1dab384e5b02fec4c6c4cb4a433296/msgraph_sdk-1.35.0.tar.gz", hash = "sha256:513f77d3332618af35d2f456ff26e2050f136abc8856858a69d63e811480eddd", size = 5967030, upload-time = "2025-06-25T10:28:30.599Z" } | ||||||
| wheels = [ | wheels = [ | ||||||
|     { url = "https://files.pythonhosted.org/packages/f2/0c/75f8066eca60fe9b2d5e1dd868b592533671b7b5cc711e655afd5c44d259/msgraph_sdk-1.34.0-py3-none-any.whl", hash = "sha256:d6daea012b78a7a4dd07fabb782ae00e4a9fe4f8d6016e8037769962533aa8ae", size = 24491410, upload-time = "2025-06-18T11:43:30.824Z" }, |     { url = "https://files.pythonhosted.org/packages/72/ae/a0ea8742af0c99c9f53d82bca19f027f10d747874f725fa2f8d165eb60b3/msgraph_sdk-1.35.0-py3-none-any.whl", hash = "sha256:0e2305a0d6d8343f3a29aa227183c6acc6191f4dfda8522ea41d97e7fe25a0d1", size = 24490922, upload-time = "2025-06-25T10:28:28.127Z" }, | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
|  | |||||||
| @ -4,7 +4,6 @@ | |||||||
|  * @import { InlineConfig, Plugin } from "vite"; |  * @import { InlineConfig, Plugin } from "vite"; | ||||||
|  */ |  */ | ||||||
| import postcssLit from "rollup-plugin-postcss-lit"; | import postcssLit from "rollup-plugin-postcss-lit"; | ||||||
| import tsconfigPaths from "vite-tsconfig-paths"; |  | ||||||
|  |  | ||||||
| const CSSImportPattern = /import [\w$]+ from .+\.(css)/g; | const CSSImportPattern = /import [\w$]+ from .+\.(css)/g; | ||||||
| const JavaScriptFilePattern = /\.m?(js|ts|tsx)$/; | const JavaScriptFilePattern = /\.m?(js|ts|tsx)$/; | ||||||
| @ -61,7 +60,7 @@ const config = { | |||||||
|          */ |          */ | ||||||
|         const overrides = { |         const overrides = { | ||||||
|             define: createBundleDefinitions(), |             define: createBundleDefinitions(), | ||||||
|             plugins: [inlineCSSPlugin, postcssLit(), tsconfigPaths()], |             plugins: [inlineCSSPlugin, postcssLit()], | ||||||
|         }; |         }; | ||||||
|  |  | ||||||
|         return mergeConfig(config, overrides); |         return mergeConfig(config, overrides); | ||||||
|  | |||||||
| @ -4,6 +4,7 @@ | |||||||
|  * @import { ThemeVarsPartial } from "storybook/internal/theming"; |  * @import { ThemeVarsPartial } from "storybook/internal/theming"; | ||||||
|  */ |  */ | ||||||
| import { createUIThemeEffect, resolveUITheme } from "@goauthentik/web/common/theme.ts"; | import { createUIThemeEffect, resolveUITheme } from "@goauthentik/web/common/theme.ts"; | ||||||
|  |  | ||||||
| import { addons } from "@storybook/manager-api"; | import { addons } from "@storybook/manager-api"; | ||||||
| import { create } from "@storybook/theming/create"; | import { create } from "@storybook/theming/create"; | ||||||
|  |  | ||||||
|  | |||||||
| @ -10,10 +10,11 @@ | |||||||
|  *   PluginBuild |  *   PluginBuild | ||||||
|  * } from "esbuild" |  * } from "esbuild" | ||||||
|  */ |  */ | ||||||
| import { MonoRepoRoot } from "@goauthentik/core/paths/node"; |  | ||||||
| import * as fs from "node:fs/promises"; | import * as fs from "node:fs/promises"; | ||||||
| import * as path from "node:path"; | import * as path from "node:path"; | ||||||
|  |  | ||||||
|  | import { MonoRepoRoot } from "@goauthentik/core/paths/node"; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * @typedef {Omit<OnLoadArgs, 'pluginData'> & LoadDataFields} LoadData Data passed to `onload`. |  * @typedef {Omit<OnLoadArgs, 'pluginData'> & LoadDataFields} LoadData Data passed to `onload`. | ||||||
|  * |  * | ||||||
|  | |||||||
| @ -1,4 +1,5 @@ | |||||||
| import { createESLintPackageConfig } from "@goauthentik/eslint-config"; | import { createESLintPackageConfig } from "@goauthentik/eslint-config"; | ||||||
|  |  | ||||||
| import tseslint from "typescript-eslint"; | import tseslint from "typescript-eslint"; | ||||||
|  |  | ||||||
| // @ts-check | // @ts-check | ||||||
|  | |||||||
							
								
								
									
										306
									
								
								web/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										306
									
								
								web/package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -34,7 +34,7 @@ | |||||||
|                 "@openlayers-elements/maps": "^0.4.0", |                 "@openlayers-elements/maps": "^0.4.0", | ||||||
|                 "@patternfly/elements": "^4.1.0", |                 "@patternfly/elements": "^4.1.0", | ||||||
|                 "@patternfly/patternfly": "^4.224.2", |                 "@patternfly/patternfly": "^4.224.2", | ||||||
|                 "@sentry/browser": "^9.31.0", |                 "@sentry/browser": "^9.32.0", | ||||||
|                 "@spotlightjs/spotlight": "^3.0.1", |                 "@spotlightjs/spotlight": "^3.0.1", | ||||||
|                 "@webcomponents/webcomponentsjs": "^2.8.0", |                 "@webcomponents/webcomponentsjs": "^2.8.0", | ||||||
|                 "base64-js": "^1.5.1", |                 "base64-js": "^1.5.1", | ||||||
| @ -75,7 +75,7 @@ | |||||||
|             "devDependencies": { |             "devDependencies": { | ||||||
|                 "@eslint/js": "^9.27.0", |                 "@eslint/js": "^9.27.0", | ||||||
|                 "@goauthentik/core": "^1.0.0", |                 "@goauthentik/core": "^1.0.0", | ||||||
|                 "@goauthentik/esbuild-plugin-live-reload": "^1.0.4", |                 "@goauthentik/esbuild-plugin-live-reload": "^1.0.5", | ||||||
|                 "@goauthentik/eslint-config": "^1.0.5", |                 "@goauthentik/eslint-config": "^1.0.5", | ||||||
|                 "@goauthentik/prettier-config": "^1.0.5", |                 "@goauthentik/prettier-config": "^1.0.5", | ||||||
|                 "@goauthentik/tsconfig": "^1.0.4", |                 "@goauthentik/tsconfig": "^1.0.4", | ||||||
| @ -128,7 +128,6 @@ | |||||||
|                 "typescript": "^5.8.3", |                 "typescript": "^5.8.3", | ||||||
|                 "typescript-eslint": "^8.35.0", |                 "typescript-eslint": "^8.35.0", | ||||||
|                 "vite-plugin-lit-css": "^2.0.0", |                 "vite-plugin-lit-css": "^2.0.0", | ||||||
|                 "vite-tsconfig-paths": "^5.0.1", |  | ||||||
|                 "wireit": "^0.14.12" |                 "wireit": "^0.14.12" | ||||||
|             }, |             }, | ||||||
|             "engines": { |             "engines": { | ||||||
| @ -1716,20 +1715,6 @@ | |||||||
|                 "node": ">=6" |                 "node": ">=6" | ||||||
|             } |             } | ||||||
|         }, |         }, | ||||||
|         "node_modules/@gerrit0/mini-shiki": { |  | ||||||
|             "version": "3.4.2", |  | ||||||
|             "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-3.4.2.tgz", |  | ||||||
|             "integrity": "sha512-3jXo5bNjvvimvdbIhKGfFxSnKCX+MA8wzHv55ptzk/cx8wOzT+BRcYgj8aFN3yTiTs+zvQQiaZFr7Jce1ZG3fw==", |  | ||||||
|             "dev": true, |  | ||||||
|             "license": "MIT", |  | ||||||
|             "dependencies": { |  | ||||||
|                 "@shikijs/engine-oniguruma": "^3.4.2", |  | ||||||
|                 "@shikijs/langs": "^3.4.2", |  | ||||||
|                 "@shikijs/themes": "^3.4.2", |  | ||||||
|                 "@shikijs/types": "^3.4.2", |  | ||||||
|                 "@shikijs/vscode-textmate": "^10.0.2" |  | ||||||
|             } |  | ||||||
|         }, |  | ||||||
|         "node_modules/@goauthentik/api": { |         "node_modules/@goauthentik/api": { | ||||||
|             "version": "2025.6.2-1750856752", |             "version": "2025.6.2-1750856752", | ||||||
|             "resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2025.6.2-1750856752.tgz", |             "resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2025.6.2-1750856752.tgz", | ||||||
| @ -1740,8 +1725,20 @@ | |||||||
|             "link": true |             "link": true | ||||||
|         }, |         }, | ||||||
|         "node_modules/@goauthentik/esbuild-plugin-live-reload": { |         "node_modules/@goauthentik/esbuild-plugin-live-reload": { | ||||||
|             "resolved": "packages/esbuild-plugin-live-reload", |             "version": "1.0.5", | ||||||
|             "link": true |             "resolved": "https://registry.npmjs.org/@goauthentik/esbuild-plugin-live-reload/-/esbuild-plugin-live-reload-1.0.5.tgz", | ||||||
|  |             "integrity": "sha512-MZ/najY+Xn62ijzj7JDS1sVupWI3BNRwJc4kykB/iP9CdLJw+xO71qPTjfCEEOVYMZrOTftD4KOLhRYx3GTqkA==", | ||||||
|  |             "dev": true, | ||||||
|  |             "license": "MIT", | ||||||
|  |             "dependencies": { | ||||||
|  |                 "find-free-ports": "^3.1.1" | ||||||
|  |             }, | ||||||
|  |             "engines": { | ||||||
|  |                 "node": ">=22" | ||||||
|  |             }, | ||||||
|  |             "peerDependencies": { | ||||||
|  |                 "esbuild": "^0.25.4" | ||||||
|  |             } | ||||||
|         }, |         }, | ||||||
|         "node_modules/@goauthentik/eslint-config": { |         "node_modules/@goauthentik/eslint-config": { | ||||||
|             "version": "1.0.5", |             "version": "1.0.5", | ||||||
| @ -4058,6 +4055,7 @@ | |||||||
|             "integrity": "sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==", |             "integrity": "sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==", | ||||||
|             "dev": true, |             "dev": true, | ||||||
|             "license": "MIT", |             "license": "MIT", | ||||||
|  |             "peer": true, | ||||||
|             "engines": { |             "engines": { | ||||||
|                 "node": "^12.20.0 || ^14.18.0 || >=16.0.0" |                 "node": "^12.20.0 || ^14.18.0 || >=16.0.0" | ||||||
|             }, |             }, | ||||||
| @ -4561,75 +4559,75 @@ | |||||||
|             "dev": true |             "dev": true | ||||||
|         }, |         }, | ||||||
|         "node_modules/@sentry-internal/browser-utils": { |         "node_modules/@sentry-internal/browser-utils": { | ||||||
|             "version": "9.31.0", |             "version": "9.32.0", | ||||||
|             "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-9.31.0.tgz", |             "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-9.32.0.tgz", | ||||||
|             "integrity": "sha512-rviu/jUmeQbY4rSO8l4pubOtRIhFtH5Gu/ryRNMTlpJRdomp4uxddqthHUDH5g6xCXZsMTyJEIdx0aTqbgr/GQ==", |             "integrity": "sha512-mVWdruSWXF+2WgS24jwLhWFyC/nDQbKXseLR8paU9LGSnVtlBlQseIx1GrANbJrhBxiEWSft4WiuxU34wPsbXg==", | ||||||
|             "license": "MIT", |             "license": "MIT", | ||||||
|             "dependencies": { |             "dependencies": { | ||||||
|                 "@sentry/core": "9.31.0" |                 "@sentry/core": "9.32.0" | ||||||
|             }, |             }, | ||||||
|             "engines": { |             "engines": { | ||||||
|                 "node": ">=18" |                 "node": ">=18" | ||||||
|             } |             } | ||||||
|         }, |         }, | ||||||
|         "node_modules/@sentry-internal/feedback": { |         "node_modules/@sentry-internal/feedback": { | ||||||
|             "version": "9.31.0", |             "version": "9.32.0", | ||||||
|             "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-9.31.0.tgz", |             "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-9.32.0.tgz", | ||||||
|             "integrity": "sha512-Ygi/8UZ7p2B4DhXQjZDtOc45vNUHkfk2XETBTBGkByEQkE8vygzSiKhgRcnVpzwq+8xKFMRy+PxvpcCo+PNQew==", |             "integrity": "sha512-OaXaovXqlhN1sG2wtJMhxMEjyeuK7RwY57o96LgKE0bWM//Fs9WWCOkGa+7l8TOf0+0ib7gfhJZlpN0hlqOgRw==", | ||||||
|             "license": "MIT", |             "license": "MIT", | ||||||
|             "dependencies": { |             "dependencies": { | ||||||
|                 "@sentry/core": "9.31.0" |                 "@sentry/core": "9.32.0" | ||||||
|             }, |             }, | ||||||
|             "engines": { |             "engines": { | ||||||
|                 "node": ">=18" |                 "node": ">=18" | ||||||
|             } |             } | ||||||
|         }, |         }, | ||||||
|         "node_modules/@sentry-internal/replay": { |         "node_modules/@sentry-internal/replay": { | ||||||
|             "version": "9.31.0", |             "version": "9.32.0", | ||||||
|             "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-9.31.0.tgz", |             "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-9.32.0.tgz", | ||||||
|             "integrity": "sha512-V5rvcO/xSj8JMw4ZnZT2cBYC+UOuIiZ2Flj4EoIurxMrTgowE1uMXUBA32EBfuB5/vQSJXB6W5uAudhk7LjBPQ==", |             "integrity": "sha512-mOHUKjUtHbEwshikrCQPM1ZqWAMUEcpEGashnXQp3KQivvbTxrExiNnt6XK5TjJyGvsI3A907Bp/HvEzgneYgQ==", | ||||||
|             "license": "MIT", |             "license": "MIT", | ||||||
|             "dependencies": { |             "dependencies": { | ||||||
|                 "@sentry-internal/browser-utils": "9.31.0", |                 "@sentry-internal/browser-utils": "9.32.0", | ||||||
|                 "@sentry/core": "9.31.0" |                 "@sentry/core": "9.32.0" | ||||||
|             }, |             }, | ||||||
|             "engines": { |             "engines": { | ||||||
|                 "node": ">=18" |                 "node": ">=18" | ||||||
|             } |             } | ||||||
|         }, |         }, | ||||||
|         "node_modules/@sentry-internal/replay-canvas": { |         "node_modules/@sentry-internal/replay-canvas": { | ||||||
|             "version": "9.31.0", |             "version": "9.32.0", | ||||||
|             "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-9.31.0.tgz", |             "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-9.32.0.tgz", | ||||||
|             "integrity": "sha512-VGqfvQCIuXQZeecrBf8bd4sj8lYGzUA/2CffTAkad1nB1Onyz0Kzo54qLWemivCxA3ufHf6DCpNA3Loa/0ywFQ==", |             "integrity": "sha512-tu+coeTRpJxknmWPMJC2jqmIM5IsVoRn9gEDdkSrcPbgx/GwgE03fSJVBJL1tOEA8yRNIhZPMR86ORE7/7n2ow==", | ||||||
|             "license": "MIT", |             "license": "MIT", | ||||||
|             "dependencies": { |             "dependencies": { | ||||||
|                 "@sentry-internal/replay": "9.31.0", |                 "@sentry-internal/replay": "9.32.0", | ||||||
|                 "@sentry/core": "9.31.0" |                 "@sentry/core": "9.32.0" | ||||||
|             }, |             }, | ||||||
|             "engines": { |             "engines": { | ||||||
|                 "node": ">=18" |                 "node": ">=18" | ||||||
|             } |             } | ||||||
|         }, |         }, | ||||||
|         "node_modules/@sentry/browser": { |         "node_modules/@sentry/browser": { | ||||||
|             "version": "9.31.0", |             "version": "9.32.0", | ||||||
|             "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-9.31.0.tgz", |             "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-9.32.0.tgz", | ||||||
|             "integrity": "sha512-DzG72JJTqHzE0Qo2fHeHm3xgFs97InaSQStmTMxOA59yPqvAXbweNPcsgCNu1q76+jZyaJcoy1qOwahnLuEVDg==", |             "integrity": "sha512-BzPogpH87n+sC9VPfXaXkiKJtagLpIB87LGg1hSBURpwGx6Rt2ORmaVYgwwuuFZX8Hia727IIM7pbcbNfrXGRQ==", | ||||||
|             "license": "MIT", |             "license": "MIT", | ||||||
|             "dependencies": { |             "dependencies": { | ||||||
|                 "@sentry-internal/browser-utils": "9.31.0", |                 "@sentry-internal/browser-utils": "9.32.0", | ||||||
|                 "@sentry-internal/feedback": "9.31.0", |                 "@sentry-internal/feedback": "9.32.0", | ||||||
|                 "@sentry-internal/replay": "9.31.0", |                 "@sentry-internal/replay": "9.32.0", | ||||||
|                 "@sentry-internal/replay-canvas": "9.31.0", |                 "@sentry-internal/replay-canvas": "9.32.0", | ||||||
|                 "@sentry/core": "9.31.0" |                 "@sentry/core": "9.32.0" | ||||||
|             }, |             }, | ||||||
|             "engines": { |             "engines": { | ||||||
|                 "node": ">=18" |                 "node": ">=18" | ||||||
|             } |             } | ||||||
|         }, |         }, | ||||||
|         "node_modules/@sentry/core": { |         "node_modules/@sentry/core": { | ||||||
|             "version": "9.31.0", |             "version": "9.32.0", | ||||||
|             "resolved": "https://registry.npmjs.org/@sentry/core/-/core-9.31.0.tgz", |             "resolved": "https://registry.npmjs.org/@sentry/core/-/core-9.32.0.tgz", | ||||||
|             "integrity": "sha512-6JeoPGvBgT9m2YFIf2CrW+KrrOYzUqb9+Xwr/Dw25kPjVKy+WJjWqK8DKCNLgkBA22OCmSOmHuRwFR0YxGVdZQ==", |             "integrity": "sha512-1wAXMMmeY4Ny2MJBCuri3b4LMVPjqXdgbVgTxxipGW+gzPsjv+8+LCSnJAR/cRBr8JoXV+qGC2tE06rI1XDj3A==", | ||||||
|             "license": "MIT", |             "license": "MIT", | ||||||
|             "engines": { |             "engines": { | ||||||
|                 "node": ">=18" |                 "node": ">=18" | ||||||
| @ -4719,55 +4717,6 @@ | |||||||
|                 "node": ">=14.18" |                 "node": ">=14.18" | ||||||
|             } |             } | ||||||
|         }, |         }, | ||||||
|         "node_modules/@shikijs/engine-oniguruma": { |  | ||||||
|             "version": "3.4.2", |  | ||||||
|             "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.4.2.tgz", |  | ||||||
|             "integrity": "sha512-zcZKMnNndgRa3ORja6Iemsr3DrLtkX3cAF7lTJkdMB6v9alhlBsX9uNiCpqofNrXOvpA3h6lHcLJxgCIhVOU5Q==", |  | ||||||
|             "dev": true, |  | ||||||
|             "license": "MIT", |  | ||||||
|             "dependencies": { |  | ||||||
|                 "@shikijs/types": "3.4.2", |  | ||||||
|                 "@shikijs/vscode-textmate": "^10.0.2" |  | ||||||
|             } |  | ||||||
|         }, |  | ||||||
|         "node_modules/@shikijs/langs": { |  | ||||||
|             "version": "3.4.2", |  | ||||||
|             "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.4.2.tgz", |  | ||||||
|             "integrity": "sha512-H6azIAM+OXD98yztIfs/KH5H4PU39t+SREhmM8LaNXyUrqj2mx+zVkr8MWYqjceSjDw9I1jawm1WdFqU806rMA==", |  | ||||||
|             "dev": true, |  | ||||||
|             "license": "MIT", |  | ||||||
|             "dependencies": { |  | ||||||
|                 "@shikijs/types": "3.4.2" |  | ||||||
|             } |  | ||||||
|         }, |  | ||||||
|         "node_modules/@shikijs/themes": { |  | ||||||
|             "version": "3.4.2", |  | ||||||
|             "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.4.2.tgz", |  | ||||||
|             "integrity": "sha512-qAEuAQh+brd8Jyej2UDDf+b4V2g1Rm8aBIdvt32XhDPrHvDkEnpb7Kzc9hSuHUxz0Iuflmq7elaDuQAP9bHIhg==", |  | ||||||
|             "dev": true, |  | ||||||
|             "license": "MIT", |  | ||||||
|             "dependencies": { |  | ||||||
|                 "@shikijs/types": "3.4.2" |  | ||||||
|             } |  | ||||||
|         }, |  | ||||||
|         "node_modules/@shikijs/types": { |  | ||||||
|             "version": "3.4.2", |  | ||||||
|             "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.4.2.tgz", |  | ||||||
|             "integrity": "sha512-zHC1l7L+eQlDXLnxvM9R91Efh2V4+rN3oMVS2swCBssbj2U/FBwybD1eeLaq8yl/iwT+zih8iUbTBCgGZOYlVg==", |  | ||||||
|             "dev": true, |  | ||||||
|             "license": "MIT", |  | ||||||
|             "dependencies": { |  | ||||||
|                 "@shikijs/vscode-textmate": "^10.0.2", |  | ||||||
|                 "@types/hast": "^3.0.4" |  | ||||||
|             } |  | ||||||
|         }, |  | ||||||
|         "node_modules/@shikijs/vscode-textmate": { |  | ||||||
|             "version": "10.0.2", |  | ||||||
|             "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", |  | ||||||
|             "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", |  | ||||||
|             "dev": true, |  | ||||||
|             "license": "MIT" |  | ||||||
|         }, |  | ||||||
|         "node_modules/@sinclair/typebox": { |         "node_modules/@sinclair/typebox": { | ||||||
|             "version": "0.27.8", |             "version": "0.27.8", | ||||||
|             "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", |             "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", | ||||||
| @ -13238,6 +13187,7 @@ | |||||||
|             "integrity": "sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==", |             "integrity": "sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==", | ||||||
|             "dev": true, |             "dev": true, | ||||||
|             "license": "MIT", |             "license": "MIT", | ||||||
|  |             "peer": true, | ||||||
|             "engines": { |             "engines": { | ||||||
|                 "node": ">=12.20" |                 "node": ">=12.20" | ||||||
|             } |             } | ||||||
| @ -13248,6 +13198,7 @@ | |||||||
|             "integrity": "sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==", |             "integrity": "sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==", | ||||||
|             "dev": true, |             "dev": true, | ||||||
|             "license": "MIT", |             "license": "MIT", | ||||||
|  |             "peer": true, | ||||||
|             "engines": { |             "engines": { | ||||||
|                 "node": "^12.20.0 || ^14.13.1 || >=16.0.0" |                 "node": "^12.20.0 || ^14.13.1 || >=16.0.0" | ||||||
|             }, |             }, | ||||||
| @ -15698,6 +15649,7 @@ | |||||||
|             "version": "3.1.1", |             "version": "3.1.1", | ||||||
|             "resolved": "https://registry.npmjs.org/find-free-ports/-/find-free-ports-3.1.1.tgz", |             "resolved": "https://registry.npmjs.org/find-free-ports/-/find-free-ports-3.1.1.tgz", | ||||||
|             "integrity": "sha512-hQebewth9i5qkf0a0u06iFaxQssk5ZnPBBggsa1vk8zCYaZoz9IZXpoRLTbEOrYdqfrjvcxU00gYoCPgmXugKA==", |             "integrity": "sha512-hQebewth9i5qkf0a0u06iFaxQssk5ZnPBBggsa1vk8zCYaZoz9IZXpoRLTbEOrYdqfrjvcxU00gYoCPgmXugKA==", | ||||||
|  |             "dev": true, | ||||||
|             "license": "MIT" |             "license": "MIT" | ||||||
|         }, |         }, | ||||||
|         "node_modules/find-replace": { |         "node_modules/find-replace": { | ||||||
| @ -16242,6 +16194,7 @@ | |||||||
|             "integrity": "sha512-cmP497iLq54AZnv4YRAEMnEyQ1eIn4tGKbmswqwmFV4GBnAqE8NLtWxxdXa++AalfgL5EBH4IxTPyquEuGY/jA==", |             "integrity": "sha512-cmP497iLq54AZnv4YRAEMnEyQ1eIn4tGKbmswqwmFV4GBnAqE8NLtWxxdXa++AalfgL5EBH4IxTPyquEuGY/jA==", | ||||||
|             "dev": true, |             "dev": true, | ||||||
|             "license": "MIT", |             "license": "MIT", | ||||||
|  |             "peer": true, | ||||||
|             "funding": { |             "funding": { | ||||||
|                 "url": "https://github.com/fisker/git-hooks-list?sponsor=1" |                 "url": "https://github.com/fisker/git-hooks-list?sponsor=1" | ||||||
|             } |             } | ||||||
| @ -16360,12 +16313,6 @@ | |||||||
|                 "url": "https://github.com/sponsors/sindresorhus" |                 "url": "https://github.com/sponsors/sindresorhus" | ||||||
|             } |             } | ||||||
|         }, |         }, | ||||||
|         "node_modules/globrex": { |  | ||||||
|             "version": "0.1.2", |  | ||||||
|             "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", |  | ||||||
|             "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", |  | ||||||
|             "dev": true |  | ||||||
|         }, |  | ||||||
|         "node_modules/gopd": { |         "node_modules/gopd": { | ||||||
|             "version": "1.2.0", |             "version": "1.2.0", | ||||||
|             "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", |             "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", | ||||||
| @ -19172,16 +19119,6 @@ | |||||||
|             "dev": true, |             "dev": true, | ||||||
|             "license": "MIT" |             "license": "MIT" | ||||||
|         }, |         }, | ||||||
|         "node_modules/linkify-it": { |  | ||||||
|             "version": "5.0.0", |  | ||||||
|             "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", |  | ||||||
|             "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", |  | ||||||
|             "dev": true, |  | ||||||
|             "license": "MIT", |  | ||||||
|             "dependencies": { |  | ||||||
|                 "uc.micro": "^2.0.0" |  | ||||||
|             } |  | ||||||
|         }, |  | ||||||
|         "node_modules/lit": { |         "node_modules/lit": { | ||||||
|             "version": "3.3.0", |             "version": "3.3.0", | ||||||
|             "resolved": "https://registry.npmjs.org/lit/-/lit-3.3.0.tgz", |             "resolved": "https://registry.npmjs.org/lit/-/lit-3.3.0.tgz", | ||||||
| @ -19586,13 +19523,6 @@ | |||||||
|                 "node": ">=16.14" |                 "node": ">=16.14" | ||||||
|             } |             } | ||||||
|         }, |         }, | ||||||
|         "node_modules/lunr": { |  | ||||||
|             "version": "2.3.9", |  | ||||||
|             "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", |  | ||||||
|             "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", |  | ||||||
|             "dev": true, |  | ||||||
|             "license": "MIT" |  | ||||||
|         }, |  | ||||||
|         "node_modules/lz-string": { |         "node_modules/lz-string": { | ||||||
|             "version": "1.5.0", |             "version": "1.5.0", | ||||||
|             "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", |             "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", | ||||||
| @ -19654,24 +19584,6 @@ | |||||||
|                 "url": "https://github.com/sponsors/sindresorhus" |                 "url": "https://github.com/sponsors/sindresorhus" | ||||||
|             } |             } | ||||||
|         }, |         }, | ||||||
|         "node_modules/markdown-it": { |  | ||||||
|             "version": "14.1.0", |  | ||||||
|             "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", |  | ||||||
|             "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", |  | ||||||
|             "dev": true, |  | ||||||
|             "license": "MIT", |  | ||||||
|             "dependencies": { |  | ||||||
|                 "argparse": "^2.0.1", |  | ||||||
|                 "entities": "^4.4.0", |  | ||||||
|                 "linkify-it": "^5.0.0", |  | ||||||
|                 "mdurl": "^2.0.0", |  | ||||||
|                 "punycode.js": "^2.3.1", |  | ||||||
|                 "uc.micro": "^2.1.0" |  | ||||||
|             }, |  | ||||||
|             "bin": { |  | ||||||
|                 "markdown-it": "bin/markdown-it.mjs" |  | ||||||
|             } |  | ||||||
|         }, |  | ||||||
|         "node_modules/markdown-table": { |         "node_modules/markdown-table": { | ||||||
|             "version": "3.0.4", |             "version": "3.0.4", | ||||||
|             "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", |             "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", | ||||||
| @ -20069,13 +19981,6 @@ | |||||||
|                 "url": "https://opencollective.com/unified" |                 "url": "https://opencollective.com/unified" | ||||||
|             } |             } | ||||||
|         }, |         }, | ||||||
|         "node_modules/mdurl": { |  | ||||||
|             "version": "2.0.0", |  | ||||||
|             "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", |  | ||||||
|             "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", |  | ||||||
|             "dev": true, |  | ||||||
|             "license": "MIT" |  | ||||||
|         }, |  | ||||||
|         "node_modules/media-typer": { |         "node_modules/media-typer": { | ||||||
|             "version": "0.3.0", |             "version": "0.3.0", | ||||||
|             "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", |             "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", | ||||||
| @ -23018,6 +22923,7 @@ | |||||||
|             "integrity": "sha512-h+3tSpr2nVpp+YOK1MDIYtYhHVXr8/0V59UUbJpIJFaqi3w4fvUokJo6eV8W+vELrUXIZzJ+DKm5G7lYzrMcKQ==", |             "integrity": "sha512-h+3tSpr2nVpp+YOK1MDIYtYhHVXr8/0V59UUbJpIJFaqi3w4fvUokJo6eV8W+vELrUXIZzJ+DKm5G7lYzrMcKQ==", | ||||||
|             "dev": true, |             "dev": true, | ||||||
|             "license": "MIT", |             "license": "MIT", | ||||||
|  |             "peer": true, | ||||||
|             "dependencies": { |             "dependencies": { | ||||||
|                 "sort-package-json": "3.2.1", |                 "sort-package-json": "3.2.1", | ||||||
|                 "synckit": "0.11.6" |                 "synckit": "0.11.6" | ||||||
| @ -23265,16 +23171,6 @@ | |||||||
|                 "node": ">=6" |                 "node": ">=6" | ||||||
|             } |             } | ||||||
|         }, |         }, | ||||||
|         "node_modules/punycode.js": { |  | ||||||
|             "version": "2.3.1", |  | ||||||
|             "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", |  | ||||||
|             "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", |  | ||||||
|             "dev": true, |  | ||||||
|             "license": "MIT", |  | ||||||
|             "engines": { |  | ||||||
|                 "node": ">=6" |  | ||||||
|             } |  | ||||||
|         }, |  | ||||||
|         "node_modules/puppeteer-core": { |         "node_modules/puppeteer-core": { | ||||||
|             "version": "22.15.0", |             "version": "22.15.0", | ||||||
|             "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.15.0.tgz", |             "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.15.0.tgz", | ||||||
| @ -25377,7 +25273,8 @@ | |||||||
|             "resolved": "https://registry.npmjs.org/sort-object-keys/-/sort-object-keys-1.1.3.tgz", |             "resolved": "https://registry.npmjs.org/sort-object-keys/-/sort-object-keys-1.1.3.tgz", | ||||||
|             "integrity": "sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==", |             "integrity": "sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==", | ||||||
|             "dev": true, |             "dev": true, | ||||||
|             "license": "MIT" |             "license": "MIT", | ||||||
|  |             "peer": true | ||||||
|         }, |         }, | ||||||
|         "node_modules/sort-package-json": { |         "node_modules/sort-package-json": { | ||||||
|             "version": "3.2.1", |             "version": "3.2.1", | ||||||
| @ -25385,6 +25282,7 @@ | |||||||
|             "integrity": "sha512-rTfRdb20vuoAn7LDlEtCqOkYfl2X+Qze6cLbNOzcDpbmKEhJI30tTN44d5shbKJnXsvz24QQhlCm81Bag7EOKg==", |             "integrity": "sha512-rTfRdb20vuoAn7LDlEtCqOkYfl2X+Qze6cLbNOzcDpbmKEhJI30tTN44d5shbKJnXsvz24QQhlCm81Bag7EOKg==", | ||||||
|             "dev": true, |             "dev": true, | ||||||
|             "license": "MIT", |             "license": "MIT", | ||||||
|  |             "peer": true, | ||||||
|             "dependencies": { |             "dependencies": { | ||||||
|                 "detect-indent": "^7.0.1", |                 "detect-indent": "^7.0.1", | ||||||
|                 "detect-newline": "^4.0.1", |                 "detect-newline": "^4.0.1", | ||||||
| @ -26077,6 +25975,7 @@ | |||||||
|             "integrity": "sha512-2pR2ubZSV64f/vqm9eLPz/KOvR9Dm+Co/5ChLgeHl0yEDRc6h5hXHoxEQH8Y5Ljycozd3p1k5TTSVdzYGkPvLw==", |             "integrity": "sha512-2pR2ubZSV64f/vqm9eLPz/KOvR9Dm+Co/5ChLgeHl0yEDRc6h5hXHoxEQH8Y5Ljycozd3p1k5TTSVdzYGkPvLw==", | ||||||
|             "dev": true, |             "dev": true, | ||||||
|             "license": "MIT", |             "license": "MIT", | ||||||
|  |             "peer": true, | ||||||
|             "dependencies": { |             "dependencies": { | ||||||
|                 "@pkgr/core": "^0.2.4" |                 "@pkgr/core": "^0.2.4" | ||||||
|             }, |             }, | ||||||
| @ -26287,6 +26186,7 @@ | |||||||
|             "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", |             "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", | ||||||
|             "dev": true, |             "dev": true, | ||||||
|             "license": "MIT", |             "license": "MIT", | ||||||
|  |             "peer": true, | ||||||
|             "dependencies": { |             "dependencies": { | ||||||
|                 "fdir": "^6.4.4", |                 "fdir": "^6.4.4", | ||||||
|                 "picomatch": "^4.0.2" |                 "picomatch": "^4.0.2" | ||||||
| @ -26523,26 +26423,6 @@ | |||||||
|             "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", |             "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", | ||||||
|             "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==" |             "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==" | ||||||
|         }, |         }, | ||||||
|         "node_modules/tsconfck": { |  | ||||||
|             "version": "3.1.3", |  | ||||||
|             "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.3.tgz", |  | ||||||
|             "integrity": "sha512-ulNZP1SVpRDesxeMLON/LtWM8HIgAJEIVpVVhBM6gsmvQ8+Rh+ZG7FWGvHh7Ah3pRABwVJWklWCr/BTZSv0xnQ==", |  | ||||||
|             "dev": true, |  | ||||||
|             "bin": { |  | ||||||
|                 "tsconfck": "bin/tsconfck.js" |  | ||||||
|             }, |  | ||||||
|             "engines": { |  | ||||||
|                 "node": "^18 || >=20" |  | ||||||
|             }, |  | ||||||
|             "peerDependencies": { |  | ||||||
|                 "typescript": "^5.0.0" |  | ||||||
|             }, |  | ||||||
|             "peerDependenciesMeta": { |  | ||||||
|                 "typescript": { |  | ||||||
|                     "optional": true |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         }, |  | ||||||
|         "node_modules/tsconfig-paths": { |         "node_modules/tsconfig-paths": { | ||||||
|             "version": "3.15.0", |             "version": "3.15.0", | ||||||
|             "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", |             "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", | ||||||
| @ -27156,43 +27036,6 @@ | |||||||
|             "dev": true, |             "dev": true, | ||||||
|             "license": "MIT" |             "license": "MIT" | ||||||
|         }, |         }, | ||||||
|         "node_modules/typedoc": { |  | ||||||
|             "version": "0.28.5", |  | ||||||
|             "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.5.tgz", |  | ||||||
|             "integrity": "sha512-5PzUddaA9FbaarUzIsEc4wNXCiO4Ot3bJNeMF2qKpYlTmM9TTaSHQ7162w756ERCkXER/+o2purRG6YOAv6EMA==", |  | ||||||
|             "dev": true, |  | ||||||
|             "license": "Apache-2.0", |  | ||||||
|             "dependencies": { |  | ||||||
|                 "@gerrit0/mini-shiki": "^3.2.2", |  | ||||||
|                 "lunr": "^2.3.9", |  | ||||||
|                 "markdown-it": "^14.1.0", |  | ||||||
|                 "minimatch": "^9.0.5", |  | ||||||
|                 "yaml": "^2.7.1" |  | ||||||
|             }, |  | ||||||
|             "bin": { |  | ||||||
|                 "typedoc": "bin/typedoc" |  | ||||||
|             }, |  | ||||||
|             "engines": { |  | ||||||
|                 "node": ">= 18", |  | ||||||
|                 "pnpm": ">= 10" |  | ||||||
|             }, |  | ||||||
|             "peerDependencies": { |  | ||||||
|                 "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x" |  | ||||||
|             } |  | ||||||
|         }, |  | ||||||
|         "node_modules/typedoc-plugin-markdown": { |  | ||||||
|             "version": "4.6.3", |  | ||||||
|             "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-4.6.3.tgz", |  | ||||||
|             "integrity": "sha512-86oODyM2zajXwLs4Wok2mwVEfCwCnp756QyhLGX2IfsdRYr1DXLCgJgnLndaMUjJD7FBhnLk2okbNE9PdLxYRw==", |  | ||||||
|             "dev": true, |  | ||||||
|             "license": "MIT", |  | ||||||
|             "engines": { |  | ||||||
|                 "node": ">= 18" |  | ||||||
|             }, |  | ||||||
|             "peerDependencies": { |  | ||||||
|                 "typedoc": "0.28.x" |  | ||||||
|             } |  | ||||||
|         }, |  | ||||||
|         "node_modules/types-ramda": { |         "node_modules/types-ramda": { | ||||||
|             "version": "0.30.1", |             "version": "0.30.1", | ||||||
|             "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", |             "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", | ||||||
| @ -27249,13 +27092,6 @@ | |||||||
|                 "node": ">=8" |                 "node": ">=8" | ||||||
|             } |             } | ||||||
|         }, |         }, | ||||||
|         "node_modules/uc.micro": { |  | ||||||
|             "version": "2.1.0", |  | ||||||
|             "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", |  | ||||||
|             "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", |  | ||||||
|             "dev": true, |  | ||||||
|             "license": "MIT" |  | ||||||
|         }, |  | ||||||
|         "node_modules/ufo": { |         "node_modules/ufo": { | ||||||
|             "version": "1.5.4", |             "version": "1.5.4", | ||||||
|             "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", |             "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", | ||||||
| @ -27909,25 +27745,6 @@ | |||||||
|                 "uuid": "dist/bin/uuid" |                 "uuid": "dist/bin/uuid" | ||||||
|             } |             } | ||||||
|         }, |         }, | ||||||
|         "node_modules/vite-tsconfig-paths": { |  | ||||||
|             "version": "5.0.1", |  | ||||||
|             "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-5.0.1.tgz", |  | ||||||
|             "integrity": "sha512-yqwv+LstU7NwPeNqajZzLEBVpUFU6Dugtb2P84FXuvaoYA+/70l9MHE+GYfYAycVyPSDYZ7mjOFuYBRqlEpTig==", |  | ||||||
|             "dev": true, |  | ||||||
|             "dependencies": { |  | ||||||
|                 "debug": "^4.1.1", |  | ||||||
|                 "globrex": "^0.1.2", |  | ||||||
|                 "tsconfck": "^3.0.3" |  | ||||||
|             }, |  | ||||||
|             "peerDependencies": { |  | ||||||
|                 "vite": "*" |  | ||||||
|             }, |  | ||||||
|             "peerDependenciesMeta": { |  | ||||||
|                 "vite": { |  | ||||||
|                     "optional": true |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         }, |  | ||||||
|         "node_modules/vite/node_modules/@esbuild/aix-ppc64": { |         "node_modules/vite/node_modules/@esbuild/aix-ppc64": { | ||||||
|             "version": "0.21.5", |             "version": "0.21.5", | ||||||
|             "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", |             "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", | ||||||
| @ -29467,6 +29284,7 @@ | |||||||
|         "packages/esbuild-plugin-live-reload": { |         "packages/esbuild-plugin-live-reload": { | ||||||
|             "name": "@goauthentik/esbuild-plugin-live-reload", |             "name": "@goauthentik/esbuild-plugin-live-reload", | ||||||
|             "version": "1.0.5", |             "version": "1.0.5", | ||||||
|  |             "extraneous": true, | ||||||
|             "license": "MIT", |             "license": "MIT", | ||||||
|             "dependencies": { |             "dependencies": { | ||||||
|                 "find-free-ports": "^3.1.1" |                 "find-free-ports": "^3.1.1" | ||||||
| @ -29490,16 +29308,6 @@ | |||||||
|                 "esbuild": "^0.25.5" |                 "esbuild": "^0.25.5" | ||||||
|             } |             } | ||||||
|         }, |         }, | ||||||
|         "packages/esbuild-plugin-live-reload/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/monorepo": { |         "packages/monorepo": { | ||||||
|             "name": "@goauthentik/monorepo", |             "name": "@goauthentik/monorepo", | ||||||
|             "version": "1.0.0", |             "version": "1.0.0", | ||||||
|  | |||||||
| @ -105,7 +105,7 @@ | |||||||
|         "@openlayers-elements/maps": "^0.4.0", |         "@openlayers-elements/maps": "^0.4.0", | ||||||
|         "@patternfly/elements": "^4.1.0", |         "@patternfly/elements": "^4.1.0", | ||||||
|         "@patternfly/patternfly": "^4.224.2", |         "@patternfly/patternfly": "^4.224.2", | ||||||
|         "@sentry/browser": "^9.31.0", |         "@sentry/browser": "^9.32.0", | ||||||
|         "@spotlightjs/spotlight": "^3.0.1", |         "@spotlightjs/spotlight": "^3.0.1", | ||||||
|         "@webcomponents/webcomponentsjs": "^2.8.0", |         "@webcomponents/webcomponentsjs": "^2.8.0", | ||||||
|         "base64-js": "^1.5.1", |         "base64-js": "^1.5.1", | ||||||
| @ -146,9 +146,9 @@ | |||||||
|     "devDependencies": { |     "devDependencies": { | ||||||
|         "@eslint/js": "^9.27.0", |         "@eslint/js": "^9.27.0", | ||||||
|         "@goauthentik/core": "^1.0.0", |         "@goauthentik/core": "^1.0.0", | ||||||
|         "@goauthentik/esbuild-plugin-live-reload": "^1.0.4", |         "@goauthentik/esbuild-plugin-live-reload": "^1.0.5", | ||||||
|         "@goauthentik/eslint-config": "^1.0.5", |         "@goauthentik/eslint-config": "^1.0.5", | ||||||
|         "@goauthentik/prettier-config": "^1.0.5", |         "@goauthentik/prettier-config": "^3.0.0", | ||||||
|         "@goauthentik/tsconfig": "^1.0.4", |         "@goauthentik/tsconfig": "^1.0.4", | ||||||
|         "@hcaptcha/types": "^1.0.4", |         "@hcaptcha/types": "^1.0.4", | ||||||
|         "@lit/localize-tools": "^0.8.0", |         "@lit/localize-tools": "^0.8.0", | ||||||
| @ -199,7 +199,6 @@ | |||||||
|         "typescript": "^5.8.3", |         "typescript": "^5.8.3", | ||||||
|         "typescript-eslint": "^8.35.0", |         "typescript-eslint": "^8.35.0", | ||||||
|         "vite-plugin-lit-css": "^2.0.0", |         "vite-plugin-lit-css": "^2.0.0", | ||||||
|         "vite-tsconfig-paths": "^5.0.1", |  | ||||||
|         "wireit": "^0.14.12" |         "wireit": "^0.14.12" | ||||||
|     }, |     }, | ||||||
|     "optionalDependencies": { |     "optionalDependencies": { | ||||||
|  | |||||||
| @ -7,6 +7,4 @@ | |||||||
|  * @ignore |  * @ignore | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
| export {}; |  | ||||||
|  |  | ||||||
| export default {}; | export default {}; | ||||||
|  | |||||||
| @ -3,9 +3,12 @@ | |||||||
|  * |  * | ||||||
|  * @runtime node |  * @runtime node | ||||||
|  */ |  */ | ||||||
| import { MonoRepoRoot } from "#paths/node"; |  | ||||||
| import { execSync } from "node:child_process"; | import { execSync } from "node:child_process"; | ||||||
|  |  | ||||||
|  | import { MonoRepoRoot } from "#paths/node"; | ||||||
|  |  | ||||||
|  | // ts-import-sorter: disable | ||||||
| import PackageJSON from "../../../../package.json" with { type: "json" }; | import PackageJSON from "../../../../package.json" with { type: "json" }; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  | |||||||
| @ -1,10 +1,11 @@ | |||||||
| /** | /** | ||||||
|  * @file Rollup configuration for the SFE package. |  * @file Rollup configuration for the SFE package. | ||||||
|  */ |  */ | ||||||
|  | import { resolve as resolvePath } from "node:path"; | ||||||
|  |  | ||||||
| import commonjs from "@rollup/plugin-commonjs"; | import commonjs from "@rollup/plugin-commonjs"; | ||||||
| import resolve from "@rollup/plugin-node-resolve"; | import resolve from "@rollup/plugin-node-resolve"; | ||||||
| import swc from "@rollup/plugin-swc"; | import swc from "@rollup/plugin-swc"; | ||||||
| import { resolve as resolvePath } from "node:path"; |  | ||||||
| import copy from "rollup-plugin-copy"; | import copy from "rollup-plugin-copy"; | ||||||
|  |  | ||||||
| export async function createConfig() { | export async function createConfig() { | ||||||
|  | |||||||
| @ -1,6 +1,4 @@ | |||||||
| import { fromByteArray } from "base64-js"; |  | ||||||
| import "formdata-polyfill"; | import "formdata-polyfill"; | ||||||
| import $ from "jquery"; |  | ||||||
| import "weakmap-polyfill"; | import "weakmap-polyfill"; | ||||||
|  |  | ||||||
| import { | import { | ||||||
| @ -16,6 +14,9 @@ import { | |||||||
|     type RedirectChallenge, |     type RedirectChallenge, | ||||||
| } from "@goauthentik/api"; | } from "@goauthentik/api"; | ||||||
|  |  | ||||||
|  | import { fromByteArray } from "base64-js"; | ||||||
|  | import $ from "jquery"; | ||||||
|  |  | ||||||
| interface GlobalAuthentik { | interface GlobalAuthentik { | ||||||
|     brand: { |     brand: { | ||||||
|         branding_logo: string; |         branding_logo: string; | ||||||
|  | |||||||
| @ -3,10 +3,12 @@ | |||||||
|  * |  * | ||||||
|  * @runtime node |  * @runtime node | ||||||
|  */ |  */ | ||||||
| import { DistDirectoryName } from "#paths"; |  | ||||||
| import { dirname, resolve } from "node:path"; | import { dirname, resolve } from "node:path"; | ||||||
| import { fileURLToPath } from "node:url"; | import { fileURLToPath } from "node:url"; | ||||||
|  |  | ||||||
|  | import { DistDirectoryName } from "#paths"; | ||||||
|  |  | ||||||
| const relativeDirname = dirname(fileURLToPath(import.meta.url)); | const relativeDirname = dirname(fileURLToPath(import.meta.url)); | ||||||
|  |  | ||||||
| //#region Base paths | //#region Base paths | ||||||
|  | |||||||
| @ -9,14 +9,15 @@ | |||||||
|  * long spew of "this string is not translated" and replacing it with a |  * long spew of "this string is not translated" and replacing it with a | ||||||
|  * summary of how many strings are missing with respect to the source locale. |  * summary of how many strings are missing with respect to the source locale. | ||||||
|  * |  * | ||||||
|  * @import { ConfigFile } from "@lit/localize-tools/lib/types/config" |  * @import { ConfigFile } from "@lit/localize-tools/lib/types/config.js" | ||||||
|  * @import { Stats } from "fs"; |  * @import { Stats } from "node:fs"; | ||||||
|  */ |  */ | ||||||
| import { PackageRoot } from "#paths/node"; |  | ||||||
| import { spawnSync } from "node:child_process"; | import { spawnSync } from "node:child_process"; | ||||||
| import { readFileSync, statSync } from "node:fs"; | import { readFileSync, statSync } from "node:fs"; | ||||||
| import path from "node:path"; | import path from "node:path"; | ||||||
|  |  | ||||||
|  | import { PackageRoot } from "#paths/node"; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * @type {ConfigFile} |  * @type {ConfigFile} | ||||||
|  */ |  */ | ||||||
|  | |||||||
| @ -1,21 +1,25 @@ | |||||||
| /// <reference types="../types/esbuild.js" /> |  | ||||||
| /** | /** | ||||||
|  * @file ESBuild script for building the authentik web UI. |  * @file ESBuild script for building the authentik web UI. | ||||||
|  * |  * | ||||||
|  * @import { BuildOptions } from "esbuild"; |  * @import { BuildOptions } from "esbuild"; | ||||||
|  */ |  */ | ||||||
|  | import * as fs from "node:fs/promises"; | ||||||
|  | import * as path from "node:path"; | ||||||
|  |  | ||||||
| import { mdxPlugin } from "#bundler/mdx-plugin/node"; | import { mdxPlugin } from "#bundler/mdx-plugin/node"; | ||||||
| import { createBundleDefinitions } from "#bundler/utils/node"; | import { createBundleDefinitions } from "#bundler/utils/node"; | ||||||
| import { DistDirectory, EntryPoint, PackageRoot } from "#paths/node"; | import { DistDirectory, EntryPoint, PackageRoot } from "#paths/node"; | ||||||
|  |  | ||||||
| import { NodeEnvironment } from "@goauthentik/core/environment/node"; | import { NodeEnvironment } from "@goauthentik/core/environment/node"; | ||||||
| import { MonoRepoRoot, resolvePackage } from "@goauthentik/core/paths/node"; | import { MonoRepoRoot, resolvePackage } from "@goauthentik/core/paths/node"; | ||||||
| import { readBuildIdentifier } from "@goauthentik/core/version/node"; | import { readBuildIdentifier } from "@goauthentik/core/version/node"; | ||||||
|  |  | ||||||
| import { deepmerge } from "deepmerge-ts"; | import { deepmerge } from "deepmerge-ts"; | ||||||
| import esbuild from "esbuild"; | import esbuild from "esbuild"; | ||||||
| import copy from "esbuild-plugin-copy"; | import { copy } from "esbuild-plugin-copy"; | ||||||
| import { polyfillNode } from "esbuild-plugin-polyfill-node"; | import { polyfillNode } from "esbuild-plugin-polyfill-node"; | ||||||
| import * as fs from "node:fs/promises"; |  | ||||||
| import * as path from "node:path"; | /// <reference types="../types/esbuild.js" /> | ||||||
|  |  | ||||||
| const logPrefix = "[Build]"; | const logPrefix = "[Build]"; | ||||||
|  |  | ||||||
|  | |||||||
| @ -6,9 +6,12 @@ | |||||||
|  * @import { ProgramMessage } from "@lit/localize-tools/src/messages.js" |  * @import { ProgramMessage } from "@lit/localize-tools/src/messages.js" | ||||||
|  * @import { Locale } from "@lit/localize-tools/src/types/locale.js" |  * @import { Locale } from "@lit/localize-tools/src/types/locale.js" | ||||||
|  */ |  */ | ||||||
| import { PackageRoot } from "#paths/node"; |  | ||||||
| import { readFileSync } from "node:fs"; | import { readFileSync } from "node:fs"; | ||||||
| import path from "node:path"; | import path from "node:path"; | ||||||
|  |  | ||||||
|  | import { PackageRoot } from "#paths/node"; | ||||||
|  |  | ||||||
| import pseudolocale from "pseudolocale"; | import pseudolocale from "pseudolocale"; | ||||||
|  |  | ||||||
| import { makeFormatter } from "@lit/localize-tools/lib/formatters/index.js"; | import { makeFormatter } from "@lit/localize-tools/lib/formatters/index.js"; | ||||||
|  | |||||||
| @ -1,19 +1,21 @@ | |||||||
|  | import "#elements/EmptyState"; | ||||||
|  |  | ||||||
|  | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
|  | import { globalAK } from "#common/global"; | ||||||
|  |  | ||||||
|  | import { ModalButton } from "#elements/buttons/ModalButton"; | ||||||
| import { WithBrandConfig } from "#elements/mixins/branding"; | import { WithBrandConfig } from "#elements/mixins/branding"; | ||||||
| import { WithLicenseSummary } from "#elements/mixins/license"; | import { WithLicenseSummary } from "#elements/mixins/license"; | ||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; |  | ||||||
| import { globalAK } from "@goauthentik/common/global"; | import { AdminApi, CapabilitiesEnum, LicenseSummaryStatusEnum } from "@goauthentik/api"; | ||||||
| import "@goauthentik/elements/EmptyState"; |  | ||||||
| import { ModalButton } from "@goauthentik/elements/buttons/ModalButton"; |  | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { TemplateResult, css, html } from "lit"; | import { css, html, TemplateResult } from "lit"; | ||||||
| import { customElement } from "lit/decorators.js"; | import { customElement } from "lit/decorators.js"; | ||||||
| import { until } from "lit/directives/until.js"; | import { until } from "lit/directives/until.js"; | ||||||
|  |  | ||||||
| import PFAbout from "@patternfly/patternfly/components/AboutModalBox/about-modal-box.css"; | import PFAbout from "@patternfly/patternfly/components/AboutModalBox/about-modal-box.css"; | ||||||
|  |  | ||||||
| import { AdminApi, CapabilitiesEnum, LicenseSummaryStatusEnum } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| @customElement("ak-about-modal") | @customElement("ak-about-modal") | ||||||
| export class AboutModal extends WithLicenseSummary(WithBrandConfig(ModalButton)) { | export class AboutModal extends WithLicenseSummary(WithBrandConfig(ModalButton)) { | ||||||
|     static get styles() { |     static get styles() { | ||||||
|  | |||||||
| @ -1,8 +1,9 @@ | |||||||
| import { ID_REGEX, SLUG_REGEX, UUID_REGEX } from "@goauthentik/elements/router/Route"; | import { ID_REGEX, SLUG_REGEX, UUID_REGEX } from "#elements/router/Route"; | ||||||
|  |  | ||||||
| import { spread } from "@open-wc/lit-helpers"; | import { spread } from "@open-wc/lit-helpers"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { TemplateResult, html, nothing } from "lit"; | import { html, nothing, TemplateResult } from "lit"; | ||||||
| import { repeat } from "lit/directives/repeat.js"; | import { repeat } from "lit/directives/repeat.js"; | ||||||
|  |  | ||||||
| // The second attribute type is of string[] to help with the 'activeWhen' control, which was | // The second attribute type is of string[] to help with the 'activeWhen' control, which was | ||||||
|  | |||||||
| @ -1,28 +1,31 @@ | |||||||
| import "#admin/AdminInterface/AboutModal"; | import "#admin/AdminInterface/AboutModal"; | ||||||
| import type { AboutModal } from "#admin/AdminInterface/AboutModal"; |  | ||||||
| import { ROUTES } from "#admin/Routes"; |  | ||||||
| import { EVENT_API_DRAWER_TOGGLE, EVENT_NOTIFICATION_DRAWER_TOGGLE } from "#common/constants"; |  | ||||||
| import { configureSentry } from "#common/sentry/index"; |  | ||||||
| import { me } from "#common/users"; |  | ||||||
| import { WebsocketClient } from "#common/ws"; |  | ||||||
| import { SidebarToggleEventDetail } from "#components/ak-page-header"; |  | ||||||
| import { AuthenticatedInterface } from "#elements/AuthenticatedInterface"; |  | ||||||
| import "#elements/ak-locale-context/ak-locale-context"; | import "#elements/ak-locale-context/ak-locale-context"; | ||||||
| import "#elements/banner/EnterpriseStatusBanner"; | import "#elements/banner/EnterpriseStatusBanner"; | ||||||
| import "#elements/banner/EnterpriseStatusBanner"; |  | ||||||
| import "#elements/banner/VersionBanner"; |  | ||||||
| import "#elements/banner/VersionBanner"; | import "#elements/banner/VersionBanner"; | ||||||
| import "#elements/messages/MessageContainer"; | import "#elements/messages/MessageContainer"; | ||||||
| import "#elements/messages/MessageContainer"; |  | ||||||
| import { WithCapabilitiesConfig } from "#elements/mixins/capabilities"; |  | ||||||
| import "#elements/notifications/APIDrawer"; | import "#elements/notifications/APIDrawer"; | ||||||
| import "#elements/notifications/NotificationDrawer"; | import "#elements/notifications/NotificationDrawer"; | ||||||
| import { getURLParam, updateURLParams } from "#elements/router/RouteMatch"; |  | ||||||
| import "#elements/router/RouterOutlet"; | import "#elements/router/RouterOutlet"; | ||||||
| import "#elements/sidebar/Sidebar"; | import "#elements/sidebar/Sidebar"; | ||||||
| import "#elements/sidebar/SidebarItem"; | import "#elements/sidebar/SidebarItem"; | ||||||
|  |  | ||||||
| import { CSSResult, TemplateResult, css, html, nothing } from "lit"; | import { EVENT_API_DRAWER_TOGGLE, EVENT_NOTIFICATION_DRAWER_TOGGLE } from "#common/constants"; | ||||||
|  | import { configureSentry } from "#common/sentry/index"; | ||||||
|  | import { me } from "#common/users"; | ||||||
|  | import { WebsocketClient } from "#common/ws"; | ||||||
|  |  | ||||||
|  | import { AuthenticatedInterface } from "#elements/AuthenticatedInterface"; | ||||||
|  | import { WithCapabilitiesConfig } from "#elements/mixins/capabilities"; | ||||||
|  | import { getURLParam, updateURLParams } from "#elements/router/RouteMatch"; | ||||||
|  |  | ||||||
|  | import { SidebarToggleEventDetail } from "#components/ak-page-header"; | ||||||
|  |  | ||||||
|  | import type { AboutModal } from "#admin/AdminInterface/AboutModal"; | ||||||
|  | import { ROUTES } from "#admin/Routes"; | ||||||
|  |  | ||||||
|  | import { CapabilitiesEnum, SessionUser, UiThemeEnum } from "@goauthentik/api"; | ||||||
|  |  | ||||||
|  | import { css, CSSResult, html, nothing, TemplateResult } from "lit"; | ||||||
| import { customElement, eventOptions, property, query } from "lit/decorators.js"; | import { customElement, eventOptions, property, query } from "lit/decorators.js"; | ||||||
| import { classMap } from "lit/directives/class-map.js"; | import { classMap } from "lit/directives/class-map.js"; | ||||||
|  |  | ||||||
| @ -32,8 +35,6 @@ import PFNav from "@patternfly/patternfly/components/Nav/nav.css"; | |||||||
| import PFPage from "@patternfly/patternfly/components/Page/page.css"; | import PFPage from "@patternfly/patternfly/components/Page/page.css"; | ||||||
| import PFBase from "@patternfly/patternfly/patternfly-base.css"; | import PFBase from "@patternfly/patternfly/patternfly-base.css"; | ||||||
|  |  | ||||||
| import { CapabilitiesEnum, SessionUser, UiThemeEnum } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| import { | import { | ||||||
|     AdminSidebarEnterpriseEntries, |     AdminSidebarEnterpriseEntries, | ||||||
|     AdminSidebarEntries, |     AdminSidebarEntries, | ||||||
|  | |||||||
| @ -1,12 +1,17 @@ | |||||||
|  | import "#components/ak-page-header"; | ||||||
|  |  | ||||||
| import { DEFAULT_CONFIG } from "#common/api/config"; | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
| import { parseAPIResponseError, pluckErrorDetail } from "#common/errors/network"; | import { parseAPIResponseError, pluckErrorDetail } from "#common/errors/network"; | ||||||
| import { MessageLevel } from "#common/messages"; | import { MessageLevel } from "#common/messages"; | ||||||
| import "#components/ak-page-header"; |  | ||||||
| import { AKElement } from "#elements/Base"; | import { AKElement } from "#elements/Base"; | ||||||
| import { showMessage } from "#elements/messages/MessageContainer"; | import { showMessage } from "#elements/messages/MessageContainer"; | ||||||
|  |  | ||||||
|  | import { AdminApi } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import * as Sentry from "@sentry/browser"; | import * as Sentry from "@sentry/browser"; | ||||||
|  |  | ||||||
| import { CSSResult, TemplateResult, html } from "lit"; | import { CSSResult, html, TemplateResult } from "lit"; | ||||||
| import { customElement } from "lit/decorators.js"; | import { customElement } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| import PFButton from "@patternfly/patternfly/components/Button/button.css"; | import PFButton from "@patternfly/patternfly/components/Button/button.css"; | ||||||
| @ -15,8 +20,6 @@ import PFPage from "@patternfly/patternfly/components/Page/page.css"; | |||||||
| import PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css"; | import PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css"; | ||||||
| import PFBase from "@patternfly/patternfly/patternfly-base.css"; | import PFBase from "@patternfly/patternfly/patternfly-base.css"; | ||||||
|  |  | ||||||
| import { AdminApi } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| @customElement("ak-admin-debug-page") | @customElement("ak-admin-debug-page") | ||||||
| export class DebugPage extends AKElement { | export class DebugPage extends AKElement { | ||||||
|     static get styles(): CSSResult[] { |     static get styles(): CSSResult[] { | ||||||
|  | |||||||
| @ -1,5 +1,6 @@ | |||||||
| import "@goauthentik/admin/admin-overview/AdminOverviewPage"; | import "#admin/admin-overview/AdminOverviewPage"; | ||||||
| import { ID_REGEX, Route, SLUG_REGEX, UUID_REGEX } from "@goauthentik/elements/router/Route"; |  | ||||||
|  | import { ID_REGEX, Route, SLUG_REGEX, UUID_REGEX } from "#elements/router/Route"; | ||||||
|  |  | ||||||
| import { html } from "lit"; | import { html } from "lit"; | ||||||
|  |  | ||||||
| @ -13,147 +14,147 @@ export const ROUTES: Route[] = [ | |||||||
|         return html`<ak-admin-overview></ak-admin-overview>`; |         return html`<ak-admin-overview></ak-admin-overview>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/administration/dashboard/users$"), async () => { |     new Route(new RegExp("^/administration/dashboard/users$"), async () => { | ||||||
|         await import("@goauthentik/admin/admin-overview/DashboardUserPage"); |         await import("#admin/admin-overview/DashboardUserPage"); | ||||||
|         return html`<ak-admin-dashboard-users></ak-admin-dashboard-users>`; |         return html`<ak-admin-dashboard-users></ak-admin-dashboard-users>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/administration/system-tasks$"), async () => { |     new Route(new RegExp("^/administration/system-tasks$"), async () => { | ||||||
|         await import("@goauthentik/admin/system-tasks/SystemTaskListPage"); |         await import("#admin/system-tasks/SystemTaskListPage"); | ||||||
|         return html`<ak-system-task-list></ak-system-task-list>`; |         return html`<ak-system-task-list></ak-system-task-list>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/core/providers$"), async () => { |     new Route(new RegExp("^/core/providers$"), async () => { | ||||||
|         await import("@goauthentik/admin/providers/ProviderListPage"); |         await import("#admin/providers/ProviderListPage"); | ||||||
|         return html`<ak-provider-list></ak-provider-list>`; |         return html`<ak-provider-list></ak-provider-list>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp(`^/core/providers/(?<id>${ID_REGEX})$`), async (args) => { |     new Route(new RegExp(`^/core/providers/(?<id>${ID_REGEX})$`), async (args) => { | ||||||
|         await import("@goauthentik/admin/providers/ProviderViewPage"); |         await import("#admin/providers/ProviderViewPage"); | ||||||
|         return html`<ak-provider-view .providerID=${parseInt(args.id, 10)}></ak-provider-view>`; |         return html`<ak-provider-view .providerID=${parseInt(args.id, 10)}></ak-provider-view>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/core/applications$"), async () => { |     new Route(new RegExp("^/core/applications$"), async () => { | ||||||
|         await import("@goauthentik/admin/applications/ApplicationListPage"); |         await import("#admin/applications/ApplicationListPage"); | ||||||
|         return html`<ak-application-list></ak-application-list>`; |         return html`<ak-application-list></ak-application-list>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp(`^/core/applications/(?<slug>${SLUG_REGEX})$`), async (args) => { |     new Route(new RegExp(`^/core/applications/(?<slug>${SLUG_REGEX})$`), async (args) => { | ||||||
|         await import("@goauthentik/admin/applications/ApplicationViewPage"); |         await import("#admin/applications/ApplicationViewPage"); | ||||||
|         return html`<ak-application-view .applicationSlug=${args.slug}></ak-application-view>`; |         return html`<ak-application-view .applicationSlug=${args.slug}></ak-application-view>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/core/sources$"), async () => { |     new Route(new RegExp("^/core/sources$"), async () => { | ||||||
|         await import("@goauthentik/admin/sources/SourceListPage"); |         await import("#admin/sources/SourceListPage"); | ||||||
|         return html`<ak-source-list></ak-source-list>`; |         return html`<ak-source-list></ak-source-list>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp(`^/core/sources/(?<slug>${SLUG_REGEX})$`), async (args) => { |     new Route(new RegExp(`^/core/sources/(?<slug>${SLUG_REGEX})$`), async (args) => { | ||||||
|         await import("@goauthentik/admin/sources/SourceViewPage"); |         await import("#admin/sources/SourceViewPage"); | ||||||
|         return html`<ak-source-view .sourceSlug=${args.slug}></ak-source-view>`; |         return html`<ak-source-view .sourceSlug=${args.slug}></ak-source-view>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/core/property-mappings$"), async () => { |     new Route(new RegExp("^/core/property-mappings$"), async () => { | ||||||
|         await import("@goauthentik/admin/property-mappings/PropertyMappingListPage"); |         await import("#admin/property-mappings/PropertyMappingListPage"); | ||||||
|         return html`<ak-property-mapping-list></ak-property-mapping-list>`; |         return html`<ak-property-mapping-list></ak-property-mapping-list>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/core/tokens$"), async () => { |     new Route(new RegExp("^/core/tokens$"), async () => { | ||||||
|         await import("@goauthentik/admin/tokens/TokenListPage"); |         await import("#admin/tokens/TokenListPage"); | ||||||
|         return html`<ak-token-list></ak-token-list>`; |         return html`<ak-token-list></ak-token-list>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/core/brands"), async () => { |     new Route(new RegExp("^/core/brands"), async () => { | ||||||
|         await import("@goauthentik/admin/brands/BrandListPage"); |         await import("#admin/brands/BrandListPage"); | ||||||
|         return html`<ak-brand-list></ak-brand-list>`; |         return html`<ak-brand-list></ak-brand-list>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/policy/policies$"), async () => { |     new Route(new RegExp("^/policy/policies$"), async () => { | ||||||
|         await import("@goauthentik/admin/policies/PolicyListPage"); |         await import("#admin/policies/PolicyListPage"); | ||||||
|         return html`<ak-policy-list></ak-policy-list>`; |         return html`<ak-policy-list></ak-policy-list>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/policy/reputation$"), async () => { |     new Route(new RegExp("^/policy/reputation$"), async () => { | ||||||
|         await import("@goauthentik/admin/policies/reputation/ReputationListPage"); |         await import("#admin/policies/reputation/ReputationListPage"); | ||||||
|         return html`<ak-policy-reputation-list></ak-policy-reputation-list>`; |         return html`<ak-policy-reputation-list></ak-policy-reputation-list>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/identity/groups$"), async () => { |     new Route(new RegExp("^/identity/groups$"), async () => { | ||||||
|         await import("@goauthentik/admin/groups/GroupListPage"); |         await import("#admin/groups/GroupListPage"); | ||||||
|         return html`<ak-group-list></ak-group-list>`; |         return html`<ak-group-list></ak-group-list>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp(`^/identity/groups/(?<uuid>${UUID_REGEX})$`), async (args) => { |     new Route(new RegExp(`^/identity/groups/(?<uuid>${UUID_REGEX})$`), async (args) => { | ||||||
|         await import("@goauthentik/admin/groups/GroupViewPage"); |         await import("#admin/groups/GroupViewPage"); | ||||||
|         return html`<ak-group-view .groupId=${args.uuid}></ak-group-view>`; |         return html`<ak-group-view .groupId=${args.uuid}></ak-group-view>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/identity/users$"), async () => { |     new Route(new RegExp("^/identity/users$"), async () => { | ||||||
|         await import("@goauthentik/admin/users/UserListPage"); |         await import("#admin/users/UserListPage"); | ||||||
|         return html`<ak-user-list></ak-user-list>`; |         return html`<ak-user-list></ak-user-list>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp(`^/identity/users/(?<id>${ID_REGEX})$`), async (args) => { |     new Route(new RegExp(`^/identity/users/(?<id>${ID_REGEX})$`), async (args) => { | ||||||
|         await import("@goauthentik/admin/users/UserViewPage"); |         await import("#admin/users/UserViewPage"); | ||||||
|         return html`<ak-user-view .userId=${parseInt(args.id, 10)}></ak-user-view>`; |         return html`<ak-user-view .userId=${parseInt(args.id, 10)}></ak-user-view>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/identity/roles$"), async () => { |     new Route(new RegExp("^/identity/roles$"), async () => { | ||||||
|         await import("@goauthentik/admin/roles/RoleListPage"); |         await import("#admin/roles/RoleListPage"); | ||||||
|         return html`<ak-role-list></ak-role-list>`; |         return html`<ak-role-list></ak-role-list>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/identity/initial-permissions$"), async () => { |     new Route(new RegExp("^/identity/initial-permissions$"), async () => { | ||||||
|         await import("@goauthentik/admin/rbac/InitialPermissionsListPage"); |         await import("#admin/rbac/InitialPermissionsListPage"); | ||||||
|         return html`<ak-initial-permissions-list></ak-initial-permissions-list>`; |         return html`<ak-initial-permissions-list></ak-initial-permissions-list>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp(`^/identity/roles/(?<id>${UUID_REGEX})$`), async (args) => { |     new Route(new RegExp(`^/identity/roles/(?<id>${UUID_REGEX})$`), async (args) => { | ||||||
|         await import("@goauthentik/admin/roles/RoleViewPage"); |         await import("#admin/roles/RoleViewPage"); | ||||||
|         return html`<ak-role-view roleId=${args.id}></ak-role-view>`; |         return html`<ak-role-view roleId=${args.id}></ak-role-view>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/flow/stages/invitations$"), async () => { |     new Route(new RegExp("^/flow/stages/invitations$"), async () => { | ||||||
|         await import("@goauthentik/admin/stages/invitation/InvitationListPage"); |         await import("#admin/stages/invitation/InvitationListPage"); | ||||||
|         return html`<ak-stage-invitation-list></ak-stage-invitation-list>`; |         return html`<ak-stage-invitation-list></ak-stage-invitation-list>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/flow/stages/prompts$"), async () => { |     new Route(new RegExp("^/flow/stages/prompts$"), async () => { | ||||||
|         await import("@goauthentik/admin/stages/prompt/PromptListPage"); |         await import("#admin/stages/prompt/PromptListPage"); | ||||||
|         return html`<ak-stage-prompt-list></ak-stage-prompt-list>`; |         return html`<ak-stage-prompt-list></ak-stage-prompt-list>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/flow/stages$"), async () => { |     new Route(new RegExp("^/flow/stages$"), async () => { | ||||||
|         await import("@goauthentik/admin/stages/StageListPage"); |         await import("#admin/stages/StageListPage"); | ||||||
|         return html`<ak-stage-list></ak-stage-list>`; |         return html`<ak-stage-list></ak-stage-list>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/flow/flows$"), async () => { |     new Route(new RegExp("^/flow/flows$"), async () => { | ||||||
|         await import("@goauthentik/admin/flows/FlowListPage"); |         await import("#admin/flows/FlowListPage"); | ||||||
|         return html`<ak-flow-list></ak-flow-list>`; |         return html`<ak-flow-list></ak-flow-list>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp(`^/flow/flows/(?<slug>${SLUG_REGEX})$`), async (args) => { |     new Route(new RegExp(`^/flow/flows/(?<slug>${SLUG_REGEX})$`), async (args) => { | ||||||
|         await import("@goauthentik/admin/flows/FlowViewPage"); |         await import("#admin/flows/FlowViewPage"); | ||||||
|         return html`<ak-flow-view .flowSlug=${args.slug}></ak-flow-view>`; |         return html`<ak-flow-view .flowSlug=${args.slug}></ak-flow-view>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/events/log$"), async () => { |     new Route(new RegExp("^/events/log$"), async () => { | ||||||
|         await import("@goauthentik/admin/events/EventListPage"); |         await import("#admin/events/EventListPage"); | ||||||
|         return html`<ak-event-list></ak-event-list>`; |         return html`<ak-event-list></ak-event-list>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp(`^/events/log/(?<id>${UUID_REGEX})$`), async (args) => { |     new Route(new RegExp(`^/events/log/(?<id>${UUID_REGEX})$`), async (args) => { | ||||||
|         await import("@goauthentik/admin/events/EventViewPage"); |         await import("#admin/events/EventViewPage"); | ||||||
|         return html`<ak-event-view .eventID=${args.id}></ak-event-view>`; |         return html`<ak-event-view .eventID=${args.id}></ak-event-view>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/events/transports$"), async () => { |     new Route(new RegExp("^/events/transports$"), async () => { | ||||||
|         await import("@goauthentik/admin/events/TransportListPage"); |         await import("#admin/events/TransportListPage"); | ||||||
|         return html`<ak-event-transport-list></ak-event-transport-list>`; |         return html`<ak-event-transport-list></ak-event-transport-list>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/events/rules$"), async () => { |     new Route(new RegExp("^/events/rules$"), async () => { | ||||||
|         await import("@goauthentik/admin/events/RuleListPage"); |         await import("#admin/events/RuleListPage"); | ||||||
|         return html`<ak-event-rule-list></ak-event-rule-list>`; |         return html`<ak-event-rule-list></ak-event-rule-list>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/outpost/outposts$"), async () => { |     new Route(new RegExp("^/outpost/outposts$"), async () => { | ||||||
|         await import("@goauthentik/admin/outposts/OutpostListPage"); |         await import("#admin/outposts/OutpostListPage"); | ||||||
|         return html`<ak-outpost-list></ak-outpost-list>`; |         return html`<ak-outpost-list></ak-outpost-list>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/outpost/integrations$"), async () => { |     new Route(new RegExp("^/outpost/integrations$"), async () => { | ||||||
|         await import("@goauthentik/admin/outposts/ServiceConnectionListPage"); |         await import("#admin/outposts/ServiceConnectionListPage"); | ||||||
|         return html`<ak-outpost-service-connection-list></ak-outpost-service-connection-list>`; |         return html`<ak-outpost-service-connection-list></ak-outpost-service-connection-list>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/crypto/certificates$"), async () => { |     new Route(new RegExp("^/crypto/certificates$"), async () => { | ||||||
|         await import("@goauthentik/admin/crypto/CertificateKeyPairListPage"); |         await import("#admin/crypto/CertificateKeyPairListPage"); | ||||||
|         return html`<ak-crypto-certificate-list></ak-crypto-certificate-list>`; |         return html`<ak-crypto-certificate-list></ak-crypto-certificate-list>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/admin/settings$"), async () => { |     new Route(new RegExp("^/admin/settings$"), async () => { | ||||||
|         await import("@goauthentik/admin/admin-settings/AdminSettingsPage"); |         await import("#admin/admin-settings/AdminSettingsPage"); | ||||||
|         return html`<ak-admin-settings></ak-admin-settings>`; |         return html`<ak-admin-settings></ak-admin-settings>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/blueprints/instances$"), async () => { |     new Route(new RegExp("^/blueprints/instances$"), async () => { | ||||||
|         await import("@goauthentik/admin/blueprints/BlueprintListPage"); |         await import("#admin/blueprints/BlueprintListPage"); | ||||||
|         return html`<ak-blueprint-list></ak-blueprint-list>`; |         return html`<ak-blueprint-list></ak-blueprint-list>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/debug$"), async () => { |     new Route(new RegExp("^/debug$"), async () => { | ||||||
|         await import("@goauthentik/admin/DebugPage"); |         await import("#admin/DebugPage"); | ||||||
|         return html`<ak-admin-debug-page></ak-admin-debug-page>`; |         return html`<ak-admin-debug-page></ak-admin-debug-page>`; | ||||||
|     }), |     }), | ||||||
|     new Route(new RegExp("^/enterprise/licenses$"), async () => { |     new Route(new RegExp("^/enterprise/licenses$"), async () => { | ||||||
|         await import("@goauthentik/admin/enterprise/EnterpriseLicenseListPage"); |         await import("#admin/enterprise/EnterpriseLicenseListPage"); | ||||||
|         return html`<ak-enterprise-license-list></ak-enterprise-license-list>`; |         return html`<ak-enterprise-license-list></ak-enterprise-license-list>`; | ||||||
|     }), |     }), | ||||||
| ]; | ]; | ||||||
|  | |||||||
| @ -8,18 +8,22 @@ import "#admin/admin-overview/cards/WorkerStatusCard"; | |||||||
| import "#admin/admin-overview/charts/AdminLoginAuthorizeChart"; | import "#admin/admin-overview/charts/AdminLoginAuthorizeChart"; | ||||||
| import "#admin/admin-overview/charts/OutpostStatusChart"; | import "#admin/admin-overview/charts/OutpostStatusChart"; | ||||||
| import "#admin/admin-overview/charts/SyncStatusChart"; | import "#admin/admin-overview/charts/SyncStatusChart"; | ||||||
| import { me } from "#common/users"; |  | ||||||
| import "#components/ak-page-header"; | import "#components/ak-page-header"; | ||||||
| import { AKElement } from "#elements/Base"; |  | ||||||
| import "#elements/cards/AggregatePromiseCard"; | import "#elements/cards/AggregatePromiseCard"; | ||||||
| import type { QuickAction } from "#elements/cards/QuickActionsCard"; |  | ||||||
| import "#elements/cards/QuickActionsCard"; | import "#elements/cards/QuickActionsCard"; | ||||||
|  |  | ||||||
|  | import { me } from "#common/users"; | ||||||
|  |  | ||||||
|  | import { AKElement } from "#elements/Base"; | ||||||
|  | import type { QuickAction } from "#elements/cards/QuickActionsCard"; | ||||||
| import { WithLicenseSummary } from "#elements/mixins/license"; | import { WithLicenseSummary } from "#elements/mixins/license"; | ||||||
| import { paramURL } from "#elements/router/RouterOutlet"; | import { paramURL } from "#elements/router/RouterOutlet"; | ||||||
|  |  | ||||||
|  | import { SessionUser } from "@goauthentik/api"; | ||||||
| import { createReleaseNotesURL } from "@goauthentik/core/version"; | import { createReleaseNotesURL } from "@goauthentik/core/version"; | ||||||
|  |  | ||||||
| import { msg, str } from "@lit/localize"; | import { msg, str } from "@lit/localize"; | ||||||
| import { CSSResult, TemplateResult, css, html, nothing } from "lit"; | import { css, CSSResult, html, nothing, TemplateResult } from "lit"; | ||||||
| import { customElement, state } from "lit/decorators.js"; | import { customElement, state } from "lit/decorators.js"; | ||||||
| import { classMap } from "lit/directives/class-map.js"; | import { classMap } from "lit/directives/class-map.js"; | ||||||
|  |  | ||||||
| @ -29,8 +33,6 @@ import PFPage from "@patternfly/patternfly/components/Page/page.css"; | |||||||
| import PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css"; | import PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css"; | ||||||
| import PFBase from "@patternfly/patternfly/patternfly-base.css"; | import PFBase from "@patternfly/patternfly/patternfly-base.css"; | ||||||
|  |  | ||||||
| import { SessionUser } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| const AdminOverviewBase = WithLicenseSummary(AKElement); | const AdminOverviewBase = WithLicenseSummary(AKElement); | ||||||
|  |  | ||||||
| @customElement("ak-admin-overview") | @customElement("ak-admin-overview") | ||||||
|  | |||||||
| @ -1,10 +1,13 @@ | |||||||
| import "#admin/admin-overview/charts/AdminModelPerDay"; | import "#admin/admin-overview/charts/AdminModelPerDay"; | ||||||
| import "#components/ak-page-header"; | import "#components/ak-page-header"; | ||||||
| import { AKElement } from "#elements/Base"; |  | ||||||
| import "#elements/cards/AggregatePromiseCard"; | import "#elements/cards/AggregatePromiseCard"; | ||||||
|  |  | ||||||
|  | import { AKElement } from "#elements/Base"; | ||||||
|  |  | ||||||
|  | import { EventActions, EventsEventsVolumeListRequest } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { CSSResult, TemplateResult, css, html } from "lit"; | import { css, CSSResult, html, TemplateResult } from "lit"; | ||||||
| import { customElement } from "lit/decorators.js"; | import { customElement } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| import PFContent from "@patternfly/patternfly/components/Content/content.css"; | import PFContent from "@patternfly/patternfly/components/Content/content.css"; | ||||||
| @ -13,8 +16,6 @@ import PFList from "@patternfly/patternfly/components/List/list.css"; | |||||||
| import PFPage from "@patternfly/patternfly/components/Page/page.css"; | import PFPage from "@patternfly/patternfly/components/Page/page.css"; | ||||||
| import PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css"; | import PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css"; | ||||||
|  |  | ||||||
| import { EventActions, EventsEventsVolumeListRequest } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| @customElement("ak-admin-dashboard-users") | @customElement("ak-admin-dashboard-users") | ||||||
| export class DashboardUserPage extends AKElement { | export class DashboardUserPage extends AKElement { | ||||||
|     static get styles(): CSSResult[] { |     static get styles(): CSSResult[] { | ||||||
|  | |||||||
| @ -1,15 +1,17 @@ | |||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | import "#elements/Spinner"; | ||||||
| import { AKElement } from "@goauthentik/elements/Base"; |  | ||||||
| import "@goauthentik/elements/Spinner"; | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
|  |  | ||||||
|  | import { AKElement } from "#elements/Base"; | ||||||
|  |  | ||||||
|  | import { EventsApi, EventTopPerUser } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { CSSResult, TemplateResult, html } from "lit"; | import { CSSResult, html, TemplateResult } from "lit"; | ||||||
| import { customElement, property } from "lit/decorators.js"; | import { customElement, property } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| import PFTable from "@patternfly/patternfly/components/Table/table.css"; | import PFTable from "@patternfly/patternfly/components/Table/table.css"; | ||||||
|  |  | ||||||
| import { EventTopPerUser, EventsApi } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| @customElement("ak-top-applications-table") | @customElement("ak-top-applications-table") | ||||||
| export class TopApplicationsTable extends AKElement { | export class TopApplicationsTable extends AKElement { | ||||||
|     @property({ attribute: false }) |     @property({ attribute: false }) | ||||||
|  | |||||||
| @ -1,14 +1,11 @@ | |||||||
| import { EVENT_REFRESH } from "@goauthentik/common/constants"; | import { EVENT_REFRESH } from "#common/constants"; | ||||||
| import { PFSize } from "@goauthentik/common/enums.js"; | import { PFSize } from "#common/enums"; | ||||||
| import { | import { APIError, parseAPIResponseError, pluckErrorDetail } from "#common/errors/network"; | ||||||
|     APIError, |  | ||||||
|     parseAPIResponseError, | import { AggregateCard } from "#elements/cards/AggregateCard"; | ||||||
|     pluckErrorDetail, |  | ||||||
| } from "@goauthentik/common/errors/network"; |  | ||||||
| import { AggregateCard } from "@goauthentik/elements/cards/AggregateCard"; |  | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { PropertyValues, TemplateResult, html, nothing } from "lit"; | import { html, nothing, PropertyValues, TemplateResult } from "lit"; | ||||||
| import { state } from "lit/decorators.js"; | import { state } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| export interface AdminStatus { | export interface AdminStatus { | ||||||
|  | |||||||
| @ -1,15 +1,13 @@ | |||||||
| import { | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
|     AdminStatus, |  | ||||||
|     AdminStatusCard, |  | ||||||
| } from "@goauthentik/admin/admin-overview/cards/AdminStatusCard"; |  | ||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; |  | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { AdminStatus, AdminStatusCard } from "#admin/admin-overview/cards/AdminStatusCard"; | ||||||
| import { TemplateResult, html } from "lit"; |  | ||||||
| import { customElement, state } from "lit/decorators.js"; |  | ||||||
|  |  | ||||||
| import { AdminApi, SystemInfo } from "@goauthentik/api"; | import { AdminApi, SystemInfo } from "@goauthentik/api"; | ||||||
|  |  | ||||||
|  | import { msg } from "@lit/localize"; | ||||||
|  | import { html, TemplateResult } from "lit"; | ||||||
|  | import { customElement, state } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| type StatusContent = { icon: string; message: TemplateResult }; | type StatusContent = { icon: string; message: TemplateResult }; | ||||||
|  |  | ||||||
| @customElement("ak-admin-fips-status-system") | @customElement("ak-admin-fips-status-system") | ||||||
|  | |||||||
| @ -1,25 +1,27 @@ | |||||||
| import { EventGeo, renderEventUser } from "@goauthentik/admin/events/utils"; | import "#components/ak-event-info"; | ||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | import "#elements/Tabs"; | ||||||
| import { EventWithContext } from "@goauthentik/common/events"; | import "#elements/buttons/Dropdown"; | ||||||
| import { actionToLabel } from "@goauthentik/common/labels"; | import "#elements/buttons/ModalButton"; | ||||||
| import { formatElapsedTime } from "@goauthentik/common/temporal"; | import "#elements/buttons/SpinnerButton/index"; | ||||||
| import "@goauthentik/components/ak-event-info"; |  | ||||||
| import "@goauthentik/elements/Tabs"; | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
| import "@goauthentik/elements/buttons/Dropdown"; | import { EventWithContext } from "#common/events"; | ||||||
| import "@goauthentik/elements/buttons/ModalButton"; | import { actionToLabel } from "#common/labels"; | ||||||
| import "@goauthentik/elements/buttons/SpinnerButton"; | import { formatElapsedTime } from "#common/temporal"; | ||||||
| import { PaginatedResponse } from "@goauthentik/elements/table/Table"; |  | ||||||
| import { Table, TableColumn } from "@goauthentik/elements/table/Table"; | import { PaginatedResponse, Table, TableColumn } from "#elements/table/Table"; | ||||||
| import { SlottedTemplateResult } from "@goauthentik/elements/types"; | import { SlottedTemplateResult } from "#elements/types"; | ||||||
|  |  | ||||||
|  | import { EventGeo, renderEventUser } from "#admin/events/utils"; | ||||||
|  |  | ||||||
|  | import { Event, EventsApi } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { CSSResult, TemplateResult, css, html } from "lit"; | import { css, CSSResult, html, TemplateResult } from "lit"; | ||||||
| import { customElement, property } from "lit/decorators.js"; | import { customElement, property } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| import PFCard from "@patternfly/patternfly/components/Card/card.css"; | import PFCard from "@patternfly/patternfly/components/Card/card.css"; | ||||||
|  |  | ||||||
| import { Event, EventsApi } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| @customElement("ak-recent-events") | @customElement("ak-recent-events") | ||||||
| export class RecentEventsCard extends Table<Event> { | export class RecentEventsCard extends Table<Event> { | ||||||
|     @property() |     @property() | ||||||
|  | |||||||
| @ -1,15 +1,13 @@ | |||||||
| import { | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
|     AdminStatus, |  | ||||||
|     AdminStatusCard, |  | ||||||
| } from "@goauthentik/admin/admin-overview/cards/AdminStatusCard"; |  | ||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; |  | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { AdminStatus, AdminStatusCard } from "#admin/admin-overview/cards/AdminStatusCard"; | ||||||
| import { TemplateResult, html } from "lit"; |  | ||||||
| import { customElement, state } from "lit/decorators.js"; |  | ||||||
|  |  | ||||||
| import { AdminApi, OutpostsApi, SystemInfo } from "@goauthentik/api"; | import { AdminApi, OutpostsApi, SystemInfo } from "@goauthentik/api"; | ||||||
|  |  | ||||||
|  | import { msg } from "@lit/localize"; | ||||||
|  | import { html, TemplateResult } from "lit"; | ||||||
|  | import { customElement, state } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| @customElement("ak-admin-status-system") | @customElement("ak-admin-status-system") | ||||||
| export class SystemStatusCard extends AdminStatusCard<SystemInfo> { | export class SystemStatusCard extends AdminStatusCard<SystemInfo> { | ||||||
|     now?: Date; |     now?: Date; | ||||||
|  | |||||||
| @ -1,15 +1,13 @@ | |||||||
| import { | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
|     AdminStatus, |  | ||||||
|     AdminStatusCard, |  | ||||||
| } from "@goauthentik/admin/admin-overview/cards/AdminStatusCard"; |  | ||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; |  | ||||||
|  |  | ||||||
| import { msg, str } from "@lit/localize"; | import { AdminStatus, AdminStatusCard } from "#admin/admin-overview/cards/AdminStatusCard"; | ||||||
| import { TemplateResult, html } from "lit"; |  | ||||||
| import { customElement } from "lit/decorators.js"; |  | ||||||
|  |  | ||||||
| import { AdminApi, Version } from "@goauthentik/api"; | import { AdminApi, Version } from "@goauthentik/api"; | ||||||
|  |  | ||||||
|  | import { msg, str } from "@lit/localize"; | ||||||
|  | import { html, TemplateResult } from "lit"; | ||||||
|  | import { customElement } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| @customElement("ak-admin-status-version") | @customElement("ak-admin-status-version") | ||||||
| export class VersionStatusCard extends AdminStatusCard<Version> { | export class VersionStatusCard extends AdminStatusCard<Version> { | ||||||
|     icon = "pf-icon pf-icon-bundle"; |     icon = "pf-icon pf-icon-bundle"; | ||||||
|  | |||||||
| @ -1,15 +1,13 @@ | |||||||
| import { | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
|     AdminStatus, |  | ||||||
|     AdminStatusCard, |  | ||||||
| } from "@goauthentik/admin/admin-overview/cards/AdminStatusCard"; |  | ||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; |  | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { AdminStatus, AdminStatusCard } from "#admin/admin-overview/cards/AdminStatusCard"; | ||||||
| import { TemplateResult, html } from "lit"; |  | ||||||
| import { customElement } from "lit/decorators.js"; |  | ||||||
|  |  | ||||||
| import { AdminApi, Worker } from "@goauthentik/api"; | import { AdminApi, Worker } from "@goauthentik/api"; | ||||||
|  |  | ||||||
|  | import { msg } from "@lit/localize"; | ||||||
|  | import { html, TemplateResult } from "lit"; | ||||||
|  | import { customElement } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| @customElement("ak-admin-status-card-workers") | @customElement("ak-admin-status-card-workers") | ||||||
| export class WorkersStatusCard extends AdminStatusCard<Worker[]> { | export class WorkersStatusCard extends AdminStatusCard<Worker[]> { | ||||||
|     icon = "pf-icon pf-icon-server"; |     icon = "pf-icon pf-icon-server"; | ||||||
|  | |||||||
| @ -1,12 +1,14 @@ | |||||||
|  | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
|  |  | ||||||
| import { EventChart } from "#elements/charts/EventChart"; | import { EventChart } from "#elements/charts/EventChart"; | ||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; |  | ||||||
|  | import { EventActions, EventsApi, EventVolume } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import { ChartData, ChartDataset } from "chart.js"; | import { ChartData, ChartDataset } from "chart.js"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { customElement } from "lit/decorators.js"; | import { customElement } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| import { EventActions, EventVolume, EventsApi } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| @customElement("ak-charts-admin-login-authorization") | @customElement("ak-charts-admin-login-authorization") | ||||||
| export class AdminLoginAuthorizeChart extends EventChart { | export class AdminLoginAuthorizeChart extends EventChart { | ||||||
|     async apiRequest(): Promise<EventVolume[]> { |     async apiRequest(): Promise<EventVolume[]> { | ||||||
|  | |||||||
| @ -1,17 +1,19 @@ | |||||||
|  | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
|  |  | ||||||
| import { EventChart } from "#elements/charts/EventChart"; | import { EventChart } from "#elements/charts/EventChart"; | ||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; |  | ||||||
|  | import { | ||||||
|  |     EventActions, | ||||||
|  |     EventsApi, | ||||||
|  |     EventsEventsVolumeListRequest, | ||||||
|  |     EventVolume, | ||||||
|  | } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import { ChartData } from "chart.js"; | import { ChartData } from "chart.js"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { customElement, property } from "lit/decorators.js"; | import { customElement, property } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| import { |  | ||||||
|     EventActions, |  | ||||||
|     EventVolume, |  | ||||||
|     EventsApi, |  | ||||||
|     EventsEventsVolumeListRequest, |  | ||||||
| } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| @customElement("ak-charts-admin-model-per-day") | @customElement("ak-charts-admin-model-per-day") | ||||||
| export class AdminModelPerDay extends EventChart { | export class AdminModelPerDay extends EventChart { | ||||||
|     @property() |     @property() | ||||||
|  | |||||||
| @ -1,15 +1,19 @@ | |||||||
|  | import "#elements/forms/ConfirmationForm"; | ||||||
|  |  | ||||||
|  | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
|  |  | ||||||
|  | import { AKChart } from "#elements/charts/Chart"; | ||||||
| import { actionToColor } from "#elements/charts/EventChart"; | import { actionToColor } from "#elements/charts/EventChart"; | ||||||
| import { SummarizedSyncStatus } from "@goauthentik/admin/admin-overview/charts/SyncStatusChart"; |  | ||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | import { SummarizedSyncStatus } from "#admin/admin-overview/charts/SyncStatusChart"; | ||||||
| import { AKChart } from "@goauthentik/elements/charts/Chart"; |  | ||||||
| import "@goauthentik/elements/forms/ConfirmationForm"; | import { EventActions, OutpostsApi } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import { ChartData, ChartOptions } from "chart.js"; | import { ChartData, ChartOptions } from "chart.js"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { customElement } from "lit/decorators.js"; | import { customElement } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| import { EventActions, OutpostsApi } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| @customElement("ak-admin-status-chart-outpost") | @customElement("ak-admin-status-chart-outpost") | ||||||
| export class OutpostStatusChart extends AKChart<SummarizedSyncStatus[]> { | export class OutpostStatusChart extends AKChart<SummarizedSyncStatus[]> { | ||||||
|     getChartType(): string { |     getChartType(): string { | ||||||
|  | |||||||
| @ -1,12 +1,10 @@ | |||||||
| import { actionToColor } from "#elements/charts/EventChart"; | import "#elements/forms/ConfirmationForm"; | ||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; |  | ||||||
| import { AKChart } from "@goauthentik/elements/charts/Chart"; |  | ||||||
| import "@goauthentik/elements/forms/ConfirmationForm"; |  | ||||||
| import { PaginatedResponse } from "@goauthentik/elements/table/Table"; |  | ||||||
| import { ChartData, ChartOptions } from "chart.js"; |  | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
| import { customElement } from "lit/decorators.js"; |  | ||||||
|  | import { AKChart } from "#elements/charts/Chart"; | ||||||
|  | import { actionToColor } from "#elements/charts/EventChart"; | ||||||
|  | import { PaginatedResponse } from "#elements/table/Table"; | ||||||
|  |  | ||||||
| import { | import { | ||||||
|     EventActions, |     EventActions, | ||||||
| @ -16,6 +14,11 @@ import { | |||||||
|     SystemTaskStatusEnum, |     SystemTaskStatusEnum, | ||||||
| } from "@goauthentik/api"; | } from "@goauthentik/api"; | ||||||
|  |  | ||||||
|  | import { ChartData, ChartOptions } from "chart.js"; | ||||||
|  |  | ||||||
|  | import { msg } from "@lit/localize"; | ||||||
|  | import { customElement } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| export interface SummarizedSyncStatus { | export interface SummarizedSyncStatus { | ||||||
|     healthy: number; |     healthy: number; | ||||||
|     failed: number; |     failed: number; | ||||||
|  | |||||||
| @ -1,5 +1,8 @@ | |||||||
| import { AkControlElement } from "@goauthentik/elements/AkControlElement.js"; | import { AkControlElement } from "#elements/AkControlElement"; | ||||||
| import { type Spread } from "@goauthentik/elements/types"; | import { type Spread } from "#elements/types"; | ||||||
|  |  | ||||||
|  | import { FooterLink } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import { spread } from "@open-wc/lit-helpers"; | import { spread } from "@open-wc/lit-helpers"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| @ -11,8 +14,6 @@ import PFFormControl from "@patternfly/patternfly/components/FormControl/form-co | |||||||
| import PFInputGroup from "@patternfly/patternfly/components/InputGroup/input-group.css"; | import PFInputGroup from "@patternfly/patternfly/components/InputGroup/input-group.css"; | ||||||
| import PFBase from "@patternfly/patternfly/patternfly-base.css"; | import PFBase from "@patternfly/patternfly/patternfly-base.css"; | ||||||
|  |  | ||||||
| import { FooterLink } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| export interface IFooterLinkInput { | export interface IFooterLinkInput { | ||||||
|     footerLink: FooterLink; |     footerLink: FooterLink; | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,26 +1,28 @@ | |||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | import "#components/ak-number-input"; | ||||||
| import "@goauthentik/components/ak-number-input"; | import "#components/ak-switch-input"; | ||||||
| import "@goauthentik/components/ak-switch-input"; | import "#components/ak-text-input"; | ||||||
| import "@goauthentik/components/ak-text-input"; | import "#elements/ak-array-input"; | ||||||
| import "@goauthentik/elements/ak-array-input.js"; | import "#elements/forms/FormGroup"; | ||||||
| import { Form } from "@goauthentik/elements/forms/Form"; | import "#elements/forms/HorizontalFormElement"; | ||||||
| import "@goauthentik/elements/forms/FormGroup"; | import "#elements/forms/Radio"; | ||||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; | import "#elements/forms/SearchSelect/index"; | ||||||
| import "@goauthentik/elements/forms/Radio"; | import "#elements/utils/TimeDeltaHelp"; | ||||||
| import "@goauthentik/elements/forms/SearchSelect"; | import "./AdminSettingsFooterLinks.js"; | ||||||
| import "@goauthentik/elements/utils/TimeDeltaHelp"; |  | ||||||
|  | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
|  |  | ||||||
|  | import { Form } from "#elements/forms/Form"; | ||||||
|  |  | ||||||
|  | import { AdminApi, FooterLink, Settings, SettingsRequest } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { CSSResult, TemplateResult, css, html } from "lit"; | import { css, CSSResult, html, TemplateResult } from "lit"; | ||||||
| import { customElement, property } from "lit/decorators.js"; | import { customElement, property } from "lit/decorators.js"; | ||||||
| import { ifDefined } from "lit/directives/if-defined.js"; | import { ifDefined } from "lit/directives/if-defined.js"; | ||||||
|  |  | ||||||
| import PFList from "@patternfly/patternfly/components/List/list.css"; | import PFList from "@patternfly/patternfly/components/List/list.css"; | ||||||
|  |  | ||||||
| import { AdminApi, FooterLink, Settings, SettingsRequest } from "@goauthentik/api"; | import { akFooterLinkInput, IFooterLinkInput } from "./AdminSettingsFooterLinks.js"; | ||||||
|  |  | ||||||
| import "./AdminSettingsFooterLinks.js"; |  | ||||||
| import { IFooterLinkInput, akFooterLinkInput } from "./AdminSettingsFooterLinks.js"; |  | ||||||
|  |  | ||||||
| const DEFAULT_REPUTATION_LOWER_LIMIT = -5; | const DEFAULT_REPUTATION_LOWER_LIMIT = -5; | ||||||
| const DEFAULT_REPUTATION_UPPER_LIMIT = 5; | const DEFAULT_REPUTATION_UPPER_LIMIT = 5; | ||||||
|  | |||||||
| @ -1,9 +1,6 @@ | |||||||
| import "#admin/admin-settings/AdminSettingsForm"; | import "#admin/admin-settings/AdminSettingsForm"; | ||||||
| import { AdminSettingsForm } from "#admin/admin-settings/AdminSettingsForm"; |  | ||||||
| import { DEFAULT_CONFIG } from "#common/api/config"; |  | ||||||
| import "#components/ak-page-header"; | import "#components/ak-page-header"; | ||||||
| import "#components/events/ObjectChangelog"; | import "#components/events/ObjectChangelog"; | ||||||
| import { AKElement } from "#elements/Base"; |  | ||||||
| import "#elements/CodeMirror"; | import "#elements/CodeMirror"; | ||||||
| import "#elements/EmptyState"; | import "#elements/EmptyState"; | ||||||
| import "#elements/Tabs"; | import "#elements/Tabs"; | ||||||
| @ -11,6 +8,14 @@ import "#elements/buttons/ModalButton"; | |||||||
| import "#elements/buttons/SpinnerButton/ak-spinner-button"; | import "#elements/buttons/SpinnerButton/ak-spinner-button"; | ||||||
| import "#elements/forms/ModalForm"; | import "#elements/forms/ModalForm"; | ||||||
|  |  | ||||||
|  | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
|  |  | ||||||
|  | import { AKElement } from "#elements/Base"; | ||||||
|  |  | ||||||
|  | import { AdminSettingsForm } from "#admin/admin-settings/AdminSettingsForm"; | ||||||
|  |  | ||||||
|  | import { AdminApi, Settings } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { html, nothing } from "lit"; | import { html, nothing } from "lit"; | ||||||
| import { customElement, query, state } from "lit/decorators.js"; | import { customElement, query, state } from "lit/decorators.js"; | ||||||
| @ -26,8 +31,6 @@ import PFPage from "@patternfly/patternfly/components/Page/page.css"; | |||||||
| import PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css"; | import PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css"; | ||||||
| import PFBase from "@patternfly/patternfly/patternfly-base.css"; | import PFBase from "@patternfly/patternfly/patternfly-base.css"; | ||||||
|  |  | ||||||
| import { AdminApi, Settings } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| @customElement("ak-admin-settings") | @customElement("ak-admin-settings") | ||||||
| export class AdminSettingsPage extends AKElement { | export class AdminSettingsPage extends AKElement { | ||||||
|     static get styles() { |     static get styles() { | ||||||
|  | |||||||
| @ -1,11 +1,12 @@ | |||||||
| import "@goauthentik/elements/messages/MessageContainer"; | import "#elements/messages/MessageContainer"; | ||||||
|  | import "../AdminSettingsFooterLinks.js"; | ||||||
|  |  | ||||||
| import { Meta, StoryObj, WebComponentsRenderer } from "@storybook/web-components"; | import { Meta, StoryObj, WebComponentsRenderer } from "@storybook/web-components"; | ||||||
| import { DecoratorFunction } from "storybook/internal/types"; | import { DecoratorFunction } from "storybook/internal/types"; | ||||||
|  |  | ||||||
| import { html } from "lit"; | import { html } from "lit"; | ||||||
|  |  | ||||||
| import { FooterLinkInput } from "../AdminSettingsFooterLinks.js"; | import { FooterLinkInput } from "../AdminSettingsFooterLinks.js"; | ||||||
| import "../AdminSettingsFooterLinks.js"; |  | ||||||
|  |  | ||||||
| // eslint-disable-next-line @typescript-eslint/no-explicit-any | // eslint-disable-next-line @typescript-eslint/no-explicit-any | ||||||
| type Decorator = DecoratorFunction<WebComponentsRenderer, any>; | type Decorator = DecoratorFunction<WebComponentsRenderer, any>; | ||||||
|  | |||||||
| @ -1,10 +1,11 @@ | |||||||
| import { render } from "@goauthentik/elements/tests/utils.js"; | import "../AdminSettingsFooterLinks.js"; | ||||||
|  |  | ||||||
|  | import { render } from "#elements/tests/utils"; | ||||||
|  |  | ||||||
| import { $, expect } from "@wdio/globals"; | import { $, expect } from "@wdio/globals"; | ||||||
|  |  | ||||||
| import { html } from "lit"; | import { html } from "lit"; | ||||||
|  |  | ||||||
| import "../AdminSettingsFooterLinks.js"; |  | ||||||
|  |  | ||||||
| describe("ak-admin-settings-footer-link", () => { | describe("ak-admin-settings-footer-link", () => { | ||||||
|     afterEach(async () => { |     afterEach(async () => { | ||||||
|         await browser.execute(async () => { |         await browser.execute(async () => { | ||||||
|  | |||||||
| @ -1,12 +1,14 @@ | |||||||
|  | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
|  |  | ||||||
| import { EventChart } from "#elements/charts/EventChart"; | import { EventChart } from "#elements/charts/EventChart"; | ||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; |  | ||||||
|  | import { EventActions, EventsApi, EventVolume } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import { ChartData } from "chart.js"; | import { ChartData } from "chart.js"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { customElement, property } from "lit/decorators.js"; | import { customElement, property } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| import { EventActions, EventVolume, EventsApi } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| @customElement("ak-charts-application-authorize") | @customElement("ak-charts-application-authorize") | ||||||
| export class ApplicationAuthorizeChart extends EventChart { | export class ApplicationAuthorizeChart extends EventChart { | ||||||
|     @property({ attribute: "application-id" }) |     @property({ attribute: "application-id" }) | ||||||
|  | |||||||
| @ -1,15 +1,11 @@ | |||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | import "#components/ak-status-label"; | ||||||
| import "@goauthentik/components/ak-status-label"; | import "#elements/events/LogViewer"; | ||||||
| import "@goauthentik/elements/events/LogViewer"; | import "#elements/forms/HorizontalFormElement"; | ||||||
| import { Form } from "@goauthentik/elements/forms/Form"; | import "#elements/forms/SearchSelect/index"; | ||||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; |  | ||||||
| import "@goauthentik/elements/forms/SearchSelect"; |  | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
| import { CSSResult, TemplateResult, html } from "lit"; |  | ||||||
| import { customElement, property } from "lit/decorators.js"; |  | ||||||
|  |  | ||||||
| import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; | import { Form } from "#elements/forms/Form"; | ||||||
|  |  | ||||||
| import { | import { | ||||||
|     Application, |     Application, | ||||||
| @ -19,6 +15,12 @@ import { | |||||||
|     User, |     User, | ||||||
| } from "@goauthentik/api"; | } from "@goauthentik/api"; | ||||||
|  |  | ||||||
|  | import { msg } from "@lit/localize"; | ||||||
|  | import { CSSResult, html, TemplateResult } from "lit"; | ||||||
|  | import { customElement, property } from "lit/decorators.js"; | ||||||
|  |  | ||||||
|  | import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; | ||||||
|  |  | ||||||
| @customElement("ak-application-check-access-form") | @customElement("ak-application-check-access-form") | ||||||
| export class ApplicationCheckAccessForm extends Form<{ forUser: number }> { | export class ApplicationCheckAccessForm extends Form<{ forUser: number }> { | ||||||
|     @property({ attribute: false }) |     @property({ attribute: false }) | ||||||
|  | |||||||
| @ -1,33 +1,35 @@ | |||||||
| import { CapabilitiesEnum, WithCapabilitiesConfig } from "#elements/mixins/capabilities"; | import "#admin/applications/ProviderSelectModal"; | ||||||
| import "@goauthentik/admin/applications/ProviderSelectModal"; | import "#components/ak-file-input"; | ||||||
| import { iconHelperText } from "@goauthentik/admin/helperText"; | import "#components/ak-radio-input"; | ||||||
| import { policyEngineModes } from "@goauthentik/admin/policies/PolicyEngineModes"; | import "#components/ak-slug-input"; | ||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | import "#components/ak-switch-input"; | ||||||
| import "@goauthentik/components/ak-file-input"; | import "#components/ak-text-input"; | ||||||
| import "@goauthentik/components/ak-radio-input"; | import "#components/ak-textarea-input"; | ||||||
| import "@goauthentik/components/ak-slug-input"; | import "#elements/Alert"; | ||||||
| import "@goauthentik/components/ak-switch-input"; | import "#elements/forms/FormGroup"; | ||||||
| import "@goauthentik/components/ak-text-input"; | import "#elements/forms/HorizontalFormElement"; | ||||||
| import "@goauthentik/components/ak-textarea-input"; | import "#elements/forms/ModalForm"; | ||||||
| import "@goauthentik/elements/Alert"; | import "#elements/forms/ProxyForm"; | ||||||
| import "@goauthentik/elements/forms/FormGroup"; | import "#elements/forms/Radio"; | ||||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; | import "#elements/forms/SearchSelect/ak-search-select"; | ||||||
| import "@goauthentik/elements/forms/ModalForm"; |  | ||||||
| import { ModelForm } from "@goauthentik/elements/forms/ModelForm"; |  | ||||||
| import "@goauthentik/elements/forms/ProxyForm"; |  | ||||||
| import "@goauthentik/elements/forms/Radio"; |  | ||||||
| import "@goauthentik/elements/forms/SearchSelect/ak-search-select"; |  | ||||||
| import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; | import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; | ||||||
|  | import "./components/ak-backchannel-input.js"; | ||||||
|  | import "./components/ak-provider-search-input.js"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
| import { TemplateResult, html, nothing } from "lit"; |  | ||||||
| import { customElement, property, state } from "lit/decorators.js"; | import { ModelForm } from "#elements/forms/ModelForm"; | ||||||
| import { ifDefined } from "lit/directives/if-defined.js"; | import { CapabilitiesEnum, WithCapabilitiesConfig } from "#elements/mixins/capabilities"; | ||||||
|  |  | ||||||
|  | import { iconHelperText } from "#admin/helperText"; | ||||||
|  | import { policyEngineModes } from "#admin/policies/PolicyEngineModes"; | ||||||
|  |  | ||||||
| import { Application, CoreApi, Provider } from "@goauthentik/api"; | import { Application, CoreApi, Provider } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import "./components/ak-backchannel-input"; | import { msg } from "@lit/localize"; | ||||||
| import "./components/ak-provider-search-input"; | import { html, nothing, TemplateResult } from "lit"; | ||||||
|  | import { customElement, property, state } from "lit/decorators.js"; | ||||||
|  | import { ifDefined } from "lit/directives/if-defined.js"; | ||||||
|  |  | ||||||
| @customElement("ak-application-form") | @customElement("ak-application-form") | ||||||
| export class ApplicationForm extends WithCapabilitiesConfig(ModelForm<Application, string>) { | export class ApplicationForm extends WithCapabilitiesConfig(ModelForm<Application, string>) { | ||||||
|  | |||||||
| @ -1,29 +1,30 @@ | |||||||
| import "#admin/applications/ApplicationForm"; | import "#admin/applications/ApplicationForm"; | ||||||
| import { DEFAULT_CONFIG } from "#common/api/config"; |  | ||||||
| import "#elements/AppIcon"; | import "#elements/AppIcon"; | ||||||
| import "#elements/ak-mdx/ak-mdx"; | import "#elements/ak-mdx/ak-mdx"; | ||||||
| import "#elements/buttons/SpinnerButton/ak-spinner-button"; | import "#elements/buttons/SpinnerButton/ak-spinner-button"; | ||||||
| import "#elements/forms/DeleteBulkForm"; | import "#elements/forms/DeleteBulkForm"; | ||||||
| import "#elements/forms/ModalForm"; | import "#elements/forms/ModalForm"; | ||||||
|  | import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; | ||||||
|  | import "./ApplicationWizardHint.js"; | ||||||
|  |  | ||||||
|  | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
|  |  | ||||||
| import { WithBrandConfig } from "#elements/mixins/branding"; | import { WithBrandConfig } from "#elements/mixins/branding"; | ||||||
| import { getURLParam } from "#elements/router/RouteMatch"; | import { getURLParam } from "#elements/router/RouteMatch"; | ||||||
| import { PaginatedResponse } from "#elements/table/Table"; | import { PaginatedResponse, TableColumn } from "#elements/table/Table"; | ||||||
| import { TableColumn } from "#elements/table/Table"; |  | ||||||
| import { TablePage } from "#elements/table/TablePage"; | import { TablePage } from "#elements/table/TablePage"; | ||||||
| import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; |  | ||||||
|  | import { Application, CoreApi, PoliciesApi } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import MDApplication from "~docs/add-secure-apps/applications/index.md"; | import MDApplication from "~docs/add-secure-apps/applications/index.md"; | ||||||
|  |  | ||||||
| import { msg, str } from "@lit/localize"; | import { msg, str } from "@lit/localize"; | ||||||
| import { CSSResult, TemplateResult, css, html } from "lit"; | import { css, CSSResult, html, TemplateResult } from "lit"; | ||||||
| import { customElement, property } from "lit/decorators.js"; | import { customElement, property } from "lit/decorators.js"; | ||||||
| import { ifDefined } from "lit/directives/if-defined.js"; | import { ifDefined } from "lit/directives/if-defined.js"; | ||||||
|  |  | ||||||
| import PFCard from "@patternfly/patternfly/components/Card/card.css"; | import PFCard from "@patternfly/patternfly/components/Card/card.css"; | ||||||
|  |  | ||||||
| import { Application, CoreApi, PoliciesApi } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| import "./ApplicationWizardHint.js"; |  | ||||||
|  |  | ||||||
| export const applicationListStyle = css` | export const applicationListStyle = css` | ||||||
|     /* Fix alignment issues with images in tables */ |     /* Fix alignment issues with images in tables */ | ||||||
|     .pf-c-table tbody > tr > * { |     .pf-c-table tbody > tr > * { | ||||||
|  | |||||||
| @ -4,18 +4,27 @@ import "#admin/applications/ApplicationForm"; | |||||||
| import "#admin/applications/entitlements/ApplicationEntitlementPage"; | import "#admin/applications/entitlements/ApplicationEntitlementPage"; | ||||||
| import "#admin/policies/BoundPoliciesList"; | import "#admin/policies/BoundPoliciesList"; | ||||||
| import "#admin/rbac/ObjectPermissionsPage"; | import "#admin/rbac/ObjectPermissionsPage"; | ||||||
| import { DEFAULT_CONFIG } from "#common/api/config"; |  | ||||||
| import { PFSize } from "#common/enums"; |  | ||||||
| import "#components/ak-page-header"; | import "#components/ak-page-header"; | ||||||
| import "#components/events/ObjectChangelog"; | import "#components/events/ObjectChangelog"; | ||||||
| import "#elements/AppIcon"; | import "#elements/AppIcon"; | ||||||
| import { AKElement } from "#elements/Base"; |  | ||||||
| import "#elements/EmptyState"; | import "#elements/EmptyState"; | ||||||
| import "#elements/Tabs"; | import "#elements/Tabs"; | ||||||
| import "#elements/buttons/SpinnerButton/ak-spinner-button"; | import "#elements/buttons/SpinnerButton/ak-spinner-button"; | ||||||
|  |  | ||||||
|  | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
|  | import { PFSize } from "#common/enums"; | ||||||
|  |  | ||||||
|  | import { AKElement } from "#elements/Base"; | ||||||
|  |  | ||||||
|  | import { | ||||||
|  |     Application, | ||||||
|  |     CoreApi, | ||||||
|  |     OutpostsApi, | ||||||
|  |     RbacPermissionsAssignedByUsersListModelEnum, | ||||||
|  | } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { CSSResult, PropertyValues, TemplateResult, html } from "lit"; | import { CSSResult, html, PropertyValues, TemplateResult } from "lit"; | ||||||
| import { customElement, property, state } from "lit/decorators.js"; | import { customElement, property, state } from "lit/decorators.js"; | ||||||
| import { ifDefined } from "lit/directives/if-defined.js"; | import { ifDefined } from "lit/directives/if-defined.js"; | ||||||
|  |  | ||||||
| @ -29,13 +38,6 @@ import PFPage from "@patternfly/patternfly/components/Page/page.css"; | |||||||
| import PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css"; | import PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css"; | ||||||
| import PFBase from "@patternfly/patternfly/patternfly-base.css"; | import PFBase from "@patternfly/patternfly/patternfly-base.css"; | ||||||
|  |  | ||||||
| import { |  | ||||||
|     Application, |  | ||||||
|     CoreApi, |  | ||||||
|     OutpostsApi, |  | ||||||
|     RbacPermissionsAssignedByUsersListModelEnum, |  | ||||||
| } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| @customElement("ak-application-view") | @customElement("ak-application-view") | ||||||
| export class ApplicationViewPage extends AKElement { | export class ApplicationViewPage extends AKElement { | ||||||
|     @property({ type: String }) |     @property({ type: String }) | ||||||
|  | |||||||
| @ -1,14 +1,13 @@ | |||||||
| import "@goauthentik/admin/applications/wizard/ak-application-wizard"; | import "#admin/applications/wizard/ak-application-wizard"; | ||||||
| import { | import "#components/ak-hint/ak-hint"; | ||||||
|     ShowHintController, | import "#components/ak-hint/ak-hint-body"; | ||||||
|     ShowHintControllerHost, | import "#elements/Label"; | ||||||
| } from "@goauthentik/components/ak-hint/ShowHintController"; | import "#elements/buttons/ActionButton/ak-action-button"; | ||||||
| import "@goauthentik/components/ak-hint/ak-hint"; |  | ||||||
| import "@goauthentik/components/ak-hint/ak-hint-body"; | import { AKElement } from "#elements/Base"; | ||||||
| import { AKElement } from "@goauthentik/elements/Base"; | import { getURLParam } from "#elements/router/RouteMatch"; | ||||||
| import "@goauthentik/elements/Label"; |  | ||||||
| import "@goauthentik/elements/buttons/ActionButton/ak-action-button"; | import { ShowHintController, ShowHintControllerHost } from "#components/ak-hint/ShowHintController"; | ||||||
| import { getURLParam } from "@goauthentik/elements/router/RouteMatch"; |  | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { css, html } from "lit"; | import { css, html } from "lit"; | ||||||
|  | |||||||
| @ -1,15 +1,16 @@ | |||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | import "#elements/buttons/SpinnerButton/index"; | ||||||
| import "@goauthentik/elements/buttons/SpinnerButton"; |  | ||||||
| import { PaginatedResponse } from "@goauthentik/elements/table/Table"; |  | ||||||
| import { TableColumn } from "@goauthentik/elements/table/Table"; |  | ||||||
| import { TableModal } from "@goauthentik/elements/table/TableModal"; |  | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
| import { TemplateResult, html } from "lit"; |  | ||||||
| import { customElement, property } from "lit/decorators.js"; | import { PaginatedResponse, TableColumn } from "#elements/table/Table"; | ||||||
|  | import { TableModal } from "#elements/table/TableModal"; | ||||||
|  |  | ||||||
| import { Provider, ProvidersApi } from "@goauthentik/api"; | import { Provider, ProvidersApi } from "@goauthentik/api"; | ||||||
|  |  | ||||||
|  | import { msg } from "@lit/localize"; | ||||||
|  | import { html, TemplateResult } from "lit"; | ||||||
|  | import { customElement, property } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| @customElement("ak-provider-select-table") | @customElement("ak-provider-select-table") | ||||||
| export class ProviderSelectModal extends TableModal<Provider> { | export class ProviderSelectModal extends TableModal<Provider> { | ||||||
|     checkbox = true; |     checkbox = true; | ||||||
|  | |||||||
| @ -1,15 +1,16 @@ | |||||||
| import "@goauthentik/admin/applications/ProviderSelectModal"; | import "#admin/applications/ProviderSelectModal"; | ||||||
| import { AKElement } from "@goauthentik/elements/Base"; | import "#elements/chips/Chip"; | ||||||
| import "@goauthentik/elements/chips/Chip"; | import "#elements/chips/ChipGroup"; | ||||||
| import "@goauthentik/elements/chips/ChipGroup"; |  | ||||||
|  |  | ||||||
| import { TemplateResult, html, nothing } from "lit"; | import { AKElement } from "#elements/Base"; | ||||||
|  |  | ||||||
|  | import { Provider } from "@goauthentik/api"; | ||||||
|  |  | ||||||
|  | import { html, nothing, TemplateResult } from "lit"; | ||||||
| import { customElement, property } from "lit/decorators.js"; | import { customElement, property } from "lit/decorators.js"; | ||||||
| import { ifDefined } from "lit/directives/if-defined.js"; | import { ifDefined } from "lit/directives/if-defined.js"; | ||||||
| import { map } from "lit/directives/map.js"; | import { map } from "lit/directives/map.js"; | ||||||
|  |  | ||||||
| import { Provider } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| @customElement("ak-backchannel-providers-input") | @customElement("ak-backchannel-providers-input") | ||||||
| export class AkBackchannelProvidersInput extends AKElement { | export class AkBackchannelProvidersInput extends AKElement { | ||||||
|     // Render into the lightDOM. This effectively erases the shadowDOM nature of this component, but |     // Render into the lightDOM. This effectively erases the shadowDOM nature of this component, but | ||||||
|  | |||||||
| @ -1,13 +1,15 @@ | |||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | import "#elements/forms/SearchSelect/index"; | ||||||
| import { groupBy } from "@goauthentik/common/utils"; |  | ||||||
| import { AKElement } from "@goauthentik/elements/Base"; | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
| import "@goauthentik/elements/forms/SearchSelect"; | import { groupBy } from "#common/utils"; | ||||||
|  |  | ||||||
|  | import { AKElement } from "#elements/Base"; | ||||||
|  |  | ||||||
|  | import { Provider, ProvidersAllListRequest, ProvidersApi } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import { html, nothing } from "lit"; | import { html, nothing } from "lit"; | ||||||
| import { customElement, property } from "lit/decorators.js"; | import { customElement, property } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| import { Provider, ProvidersAllListRequest, ProvidersApi } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| const renderElement = (item: Provider) => item.name; | const renderElement = (item: Provider) => item.name; | ||||||
| const renderValue = (item: Provider | undefined) => item?.pk; | const renderValue = (item: Provider | undefined) => item?.pk; | ||||||
| const doGroupBy = (items: Provider[]) => groupBy(items, (item) => item.verboseName); | const doGroupBy = (items: Provider[]) => groupBy(items, (item) => item.verboseName); | ||||||
|  | |||||||
| @ -1,21 +1,23 @@ | |||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | import "#elements/CodeMirror"; | ||||||
| import "@goauthentik/elements/CodeMirror"; | import "#elements/forms/HorizontalFormElement"; | ||||||
| import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror"; | import "#elements/forms/Radio"; | ||||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; | import "#elements/forms/SearchSelect/index"; | ||||||
| import { ModelForm } from "@goauthentik/elements/forms/ModelForm"; |  | ||||||
| import "@goauthentik/elements/forms/Radio"; | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
| import "@goauthentik/elements/forms/SearchSelect"; |  | ||||||
|  | import { CodeMirrorMode } from "#elements/CodeMirror"; | ||||||
|  | import { ModelForm } from "#elements/forms/ModelForm"; | ||||||
|  |  | ||||||
|  | import { ApplicationEntitlement, CoreApi } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import YAML from "yaml"; | import YAML from "yaml"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { CSSResult } from "lit"; | import { CSSResult, html, TemplateResult } from "lit"; | ||||||
| import { TemplateResult, html } from "lit"; |  | ||||||
| import { customElement, property } from "lit/decorators.js"; | import { customElement, property } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| import PFContent from "@patternfly/patternfly/components/Content/content.css"; | import PFContent from "@patternfly/patternfly/components/Content/content.css"; | ||||||
|  |  | ||||||
| import { ApplicationEntitlement, CoreApi } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| @customElement("ak-application-entitlement-form") | @customElement("ak-application-entitlement-form") | ||||||
| export class ApplicationEntitlementForm extends ModelForm<ApplicationEntitlement, string> { | export class ApplicationEntitlementForm extends ModelForm<ApplicationEntitlement, string> { | ||||||
|     async loadInstance(pk: string): Promise<ApplicationEntitlement> { |     async loadInstance(pk: string): Promise<ApplicationEntitlement> { | ||||||
|  | |||||||
| @ -1,21 +1,18 @@ | |||||||
| import "@goauthentik/admin/applications/entitlements/ApplicationEntitlementForm"; | import "#admin/applications/entitlements/ApplicationEntitlementForm"; | ||||||
| import "@goauthentik/admin/policies/BoundPoliciesList"; | import "#admin/policies/BoundPoliciesList"; | ||||||
| import { PolicyBindingCheckTarget } from "@goauthentik/admin/policies/utils"; | import "#admin/rbac/ObjectPermissionModal"; | ||||||
| import "@goauthentik/admin/rbac/ObjectPermissionModal"; | import "#components/ak-status-label"; | ||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | import "#elements/Tabs"; | ||||||
| import { PFSize } from "@goauthentik/common/enums"; | import "#elements/forms/DeleteBulkForm"; | ||||||
| import "@goauthentik/components/ak-status-label"; | import "#elements/forms/ModalForm"; | ||||||
| import "@goauthentik/elements/Tabs"; | import "#elements/forms/ProxyForm"; | ||||||
| import "@goauthentik/elements/forms/DeleteBulkForm"; |  | ||||||
| import "@goauthentik/elements/forms/ModalForm"; |  | ||||||
| import "@goauthentik/elements/forms/ProxyForm"; |  | ||||||
| import { PaginatedResponse } from "@goauthentik/elements/table/Table"; |  | ||||||
| import { Table, TableColumn } from "@goauthentik/elements/table/Table"; |  | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
| import { TemplateResult, html } from "lit"; | import { PFSize } from "#common/enums"; | ||||||
| import { customElement, property } from "lit/decorators.js"; |  | ||||||
| import { ifDefined } from "lit/directives/if-defined.js"; | import { PaginatedResponse, Table, TableColumn } from "#elements/table/Table"; | ||||||
|  |  | ||||||
|  | import { PolicyBindingCheckTarget } from "#admin/policies/utils"; | ||||||
|  |  | ||||||
| import { | import { | ||||||
|     ApplicationEntitlement, |     ApplicationEntitlement, | ||||||
| @ -23,6 +20,11 @@ import { | |||||||
|     RbacPermissionsAssignedByUsersListModelEnum, |     RbacPermissionsAssignedByUsersListModelEnum, | ||||||
| } from "@goauthentik/api"; | } from "@goauthentik/api"; | ||||||
|  |  | ||||||
|  | import { msg } from "@lit/localize"; | ||||||
|  | import { html, TemplateResult } from "lit"; | ||||||
|  | import { customElement, property } from "lit/decorators.js"; | ||||||
|  | import { ifDefined } from "lit/directives/if-defined.js"; | ||||||
|  |  | ||||||
| @customElement("ak-application-entitlements-list") | @customElement("ak-application-entitlements-list") | ||||||
| export class ApplicationEntitlementsPage extends Table<ApplicationEntitlement> { | export class ApplicationEntitlementsPage extends Table<ApplicationEntitlement> { | ||||||
|     @property() |     @property() | ||||||
|  | |||||||
| @ -1,23 +1,25 @@ | |||||||
| import { styles } from "@goauthentik/admin/applications/wizard/ApplicationWizardFormStepStyles.css.js"; | import { KeyUnknown, serializeForm } from "#elements/forms/Form"; | ||||||
| import { WizardStep } from "@goauthentik/components/ak-wizard/WizardStep.js"; | import { HorizontalFormElement } from "#elements/forms/HorizontalFormElement"; | ||||||
|  |  | ||||||
| import { | import { | ||||||
|     NavigationEventInit, |     NavigationEventInit, | ||||||
|     WizardNavigationEvent, |     WizardNavigationEvent, | ||||||
|     WizardUpdateEvent, |     WizardUpdateEvent, | ||||||
| } from "@goauthentik/components/ak-wizard/events"; | } from "#components/ak-wizard/events"; | ||||||
| import { KeyUnknown, serializeForm } from "@goauthentik/elements/forms/Form"; | import { WizardStep } from "#components/ak-wizard/WizardStep"; | ||||||
| import { HorizontalFormElement } from "@goauthentik/elements/forms/HorizontalFormElement"; |  | ||||||
|  | import { styles } from "#admin/applications/wizard/ApplicationWizardFormStepStyles.styles"; | ||||||
|  |  | ||||||
|  | import { ValidationError } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { property, query } from "lit/decorators.js"; | import { property, query } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| import { ValidationError } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| import { | import { | ||||||
|     ApplicationTransactionValidationError, |     ApplicationTransactionValidationError, | ||||||
|     type ApplicationWizardState, |     type ApplicationWizardState, | ||||||
|     type ApplicationWizardStateUpdate, |     type ApplicationWizardStateUpdate, | ||||||
| } from "./types"; | } from "./types.js"; | ||||||
|  |  | ||||||
| export class ApplicationWizardStep extends WizardStep { | export class ApplicationWizardStep extends WizardStep { | ||||||
|     static get styles() { |     static get styles() { | ||||||
|  | |||||||
| @ -1,23 +1,26 @@ | |||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | import "#components/ak-wizard/ak-wizard-steps"; | ||||||
| import "@goauthentik/components/ak-wizard/ak-wizard-steps.js"; |  | ||||||
| import { WizardUpdateEvent } from "@goauthentik/components/ak-wizard/events"; |  | ||||||
| import { AKElement } from "@goauthentik/elements/Base.js"; |  | ||||||
|  |  | ||||||
| import { ContextProvider } from "@lit/context"; |  | ||||||
| import { html } from "lit"; |  | ||||||
| import { customElement, state } from "lit/decorators.js"; |  | ||||||
|  |  | ||||||
| import { ProvidersApi, ProxyMode } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| import { applicationWizardProvidersContext } from "./ContextIdentity"; |  | ||||||
| import { providerTypeRenderers } from "./steps/ProviderChoices.js"; |  | ||||||
| import "./steps/ak-application-wizard-application-step.js"; | import "./steps/ak-application-wizard-application-step.js"; | ||||||
| import "./steps/ak-application-wizard-bindings-step.js"; | import "./steps/ak-application-wizard-bindings-step.js"; | ||||||
| import "./steps/ak-application-wizard-edit-binding-step.js"; | import "./steps/ak-application-wizard-edit-binding-step.js"; | ||||||
| import "./steps/ak-application-wizard-provider-choice-step.js"; | import "./steps/ak-application-wizard-provider-choice-step.js"; | ||||||
| import "./steps/ak-application-wizard-provider-step.js"; | import "./steps/ak-application-wizard-provider-step.js"; | ||||||
| import "./steps/ak-application-wizard-submit-step.js"; | import "./steps/ak-application-wizard-submit-step.js"; | ||||||
| import { type ApplicationWizardState, type ApplicationWizardStateUpdate } from "./types"; |  | ||||||
|  | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
|  |  | ||||||
|  | import { AKElement } from "#elements/Base"; | ||||||
|  |  | ||||||
|  | import { WizardUpdateEvent } from "#components/ak-wizard/events"; | ||||||
|  |  | ||||||
|  | import { ProvidersApi, ProxyMode } from "@goauthentik/api"; | ||||||
|  |  | ||||||
|  | import { ContextProvider } from "@lit/context"; | ||||||
|  | import { html } from "lit"; | ||||||
|  | import { customElement, state } from "lit/decorators.js"; | ||||||
|  |  | ||||||
|  | import { applicationWizardProvidersContext } from "./ContextIdentity.js"; | ||||||
|  | import { providerTypeRenderers } from "./steps/ProviderChoices.js"; | ||||||
|  | import { type ApplicationWizardState, type ApplicationWizardStateUpdate } from "./types.js"; | ||||||
|  |  | ||||||
| const freshWizardState = (): ApplicationWizardState => ({ | const freshWizardState = (): ApplicationWizardState => ({ | ||||||
|     providerModel: "", |     providerModel: "", | ||||||
|  | |||||||
| @ -1,12 +1,13 @@ | |||||||
| import { WizardCloseEvent } from "@goauthentik/components/ak-wizard/events.js"; | import "./ak-application-wizard-main.js"; | ||||||
| import { ModalButton } from "@goauthentik/elements/buttons/ModalButton"; |  | ||||||
| import { bound } from "@goauthentik/elements/decorators/bound.js"; | import { ModalButton } from "#elements/buttons/ModalButton"; | ||||||
|  | import { bound } from "#elements/decorators/bound"; | ||||||
|  |  | ||||||
|  | import { WizardCloseEvent } from "#components/ak-wizard/events"; | ||||||
|  |  | ||||||
| import { html } from "lit"; | import { html } from "lit"; | ||||||
| import { customElement } from "lit/decorators.js"; | import { customElement } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| import "./ak-application-wizard-main.js"; |  | ||||||
|  |  | ||||||
| @customElement("ak-application-wizard") | @customElement("ak-application-wizard") | ||||||
| export class AkApplicationWizard extends ModalButton { | export class AkApplicationWizard extends ModalButton { | ||||||
|     constructor() { |     constructor() { | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| import { AKElement } from "@goauthentik/elements/Base"; | import { AKElement } from "#elements/Base"; | ||||||
|  |  | ||||||
| import { css, html } from "lit"; | import { css, html } from "lit"; | ||||||
| import { customElement } from "lit/decorators.js"; | import { customElement } from "lit/decorators.js"; | ||||||
|  | |||||||
| @ -1,9 +1,9 @@ | |||||||
| import "@goauthentik/admin/common/ak-license-notice"; | import "#admin/common/ak-license-notice"; | ||||||
|  |  | ||||||
| import { TemplateResult, html } from "lit"; |  | ||||||
|  |  | ||||||
| import type { TypeCreate } from "@goauthentik/api"; | import type { TypeCreate } from "@goauthentik/api"; | ||||||
|  |  | ||||||
|  | import { html, TemplateResult } from "lit"; | ||||||
|  |  | ||||||
| type ProviderRenderer = () => TemplateResult; | type ProviderRenderer = () => TemplateResult; | ||||||
|  |  | ||||||
| export type LocalTypeCreate = TypeCreate & { | export type LocalTypeCreate = TypeCreate & { | ||||||
|  | |||||||
| @ -1,11 +1,4 @@ | |||||||
| import { | import { type DescriptionPair, renderDescriptionList } from "#components/DescriptionList"; | ||||||
|     type DescriptionPair, |  | ||||||
|     renderDescriptionList, |  | ||||||
| } from "@goauthentik/components/DescriptionList.js"; |  | ||||||
| import { match } from "ts-pattern"; |  | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; |  | ||||||
| import { html } from "lit"; |  | ||||||
|  |  | ||||||
| import { | import { | ||||||
|     ClientTypeEnum, |     ClientTypeEnum, | ||||||
| @ -22,6 +15,11 @@ import { | |||||||
|     SCIMProvider, |     SCIMProvider, | ||||||
| } from "@goauthentik/api"; | } from "@goauthentik/api"; | ||||||
|  |  | ||||||
|  | import { match } from "ts-pattern"; | ||||||
|  |  | ||||||
|  | import { msg } from "@lit/localize"; | ||||||
|  | import { html } from "lit"; | ||||||
|  |  | ||||||
| import { OneOfProvider } from "../types.js"; | import { OneOfProvider } from "../types.js"; | ||||||
|  |  | ||||||
| const renderSummary = (type: string, name: string, fields: DescriptionPair[]) => | const renderSummary = (type: string, name: string, fields: DescriptionPair[]) => | ||||||
|  | |||||||
| @ -1,25 +1,29 @@ | |||||||
| import { ApplicationWizardStep } from "@goauthentik/admin/applications/wizard/ApplicationWizardStep.js"; | import "#admin/applications/wizard/ak-wizard-title"; | ||||||
| import "@goauthentik/admin/applications/wizard/ak-wizard-title.js"; | import "#components/ak-radio-input"; | ||||||
| import { policyEngineModes } from "@goauthentik/admin/policies/PolicyEngineModes"; | import "#components/ak-slug-input"; | ||||||
| import { camelToSnake } from "@goauthentik/common/utils.js"; | import "#components/ak-switch-input"; | ||||||
| import "@goauthentik/components/ak-radio-input"; | import "#components/ak-text-input"; | ||||||
| import "@goauthentik/components/ak-slug-input"; | import "#elements/forms/FormGroup"; | ||||||
| import "@goauthentik/components/ak-switch-input"; | import "#elements/forms/HorizontalFormElement"; | ||||||
| import "@goauthentik/components/ak-text-input"; |  | ||||||
| import { type NavigableButton, type WizardButton } from "@goauthentik/components/ak-wizard/types"; | import { camelToSnake } from "#common/utils"; | ||||||
| import { type KeyUnknown } from "@goauthentik/elements/forms/Form"; |  | ||||||
| import "@goauthentik/elements/forms/FormGroup"; | import { type KeyUnknown } from "#elements/forms/Form"; | ||||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; | import { isSlug } from "#elements/router/utils"; | ||||||
| import { isSlug } from "@goauthentik/elements/router/utils.js"; |  | ||||||
|  | import { type NavigableButton, type WizardButton } from "#components/ak-wizard/types"; | ||||||
|  |  | ||||||
|  | import { ApplicationWizardStep } from "#admin/applications/wizard/ApplicationWizardStep"; | ||||||
|  | import { policyEngineModes } from "#admin/policies/PolicyEngineModes"; | ||||||
|  |  | ||||||
|  | import { type ApplicationRequest } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { html } from "lit"; | import { html } from "lit"; | ||||||
| import { customElement, query, state } from "lit/decorators.js"; | import { customElement, query, state } from "lit/decorators.js"; | ||||||
| import { ifDefined } from "lit/directives/if-defined.js"; | import { ifDefined } from "lit/directives/if-defined.js"; | ||||||
|  |  | ||||||
| import { type ApplicationRequest } from "@goauthentik/api"; | import { ApplicationWizardStateUpdate, ValidationRecord } from "../types.js"; | ||||||
|  |  | ||||||
| import { ApplicationWizardStateUpdate, ValidationRecord } from "../types"; |  | ||||||
|  |  | ||||||
| const autoTrim = (v: unknown) => (typeof v === "string" ? v.trim() : v); | const autoTrim = (v: unknown) => (typeof v === "string" ? v.trim() : v); | ||||||
|  |  | ||||||
|  | |||||||
| @ -1,16 +1,21 @@ | |||||||
| import { ApplicationWizardStep } from "@goauthentik/admin/applications/wizard/ApplicationWizardStep.js"; | import "#admin/applications/wizard/ak-wizard-title"; | ||||||
| import "@goauthentik/admin/applications/wizard/ak-wizard-title.js"; | import "#components/ak-radio-input"; | ||||||
| import "@goauthentik/components/ak-radio-input"; | import "#components/ak-slug-input"; | ||||||
| import "@goauthentik/components/ak-slug-input"; | import "#components/ak-status-label"; | ||||||
| import "@goauthentik/components/ak-status-label"; | import "#components/ak-switch-input"; | ||||||
| import "@goauthentik/components/ak-switch-input"; | import "#components/ak-text-input"; | ||||||
| import "@goauthentik/components/ak-text-input"; | import "#elements/ak-table/ak-select-table"; | ||||||
| import { type WizardButton } from "@goauthentik/components/ak-wizard/types"; | import "#elements/forms/FormGroup"; | ||||||
| import "@goauthentik/elements/ak-table/ak-select-table.js"; | import "#elements/forms/HorizontalFormElement"; | ||||||
| import { SelectTable } from "@goauthentik/elements/ak-table/ak-select-table.js"; | import "./bindings/ak-application-wizard-bindings-toolbar.js"; | ||||||
| import "@goauthentik/elements/forms/FormGroup"; |  | ||||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; | import { SelectTable } from "#elements/ak-table/ak-select-table"; | ||||||
| import { P, match } from "ts-pattern"; |  | ||||||
|  | import { type WizardButton } from "#components/ak-wizard/types"; | ||||||
|  |  | ||||||
|  | import { ApplicationWizardStep } from "#admin/applications/wizard/ApplicationWizardStep"; | ||||||
|  |  | ||||||
|  | import { match, P } from "ts-pattern"; | ||||||
|  |  | ||||||
| import { msg, str } from "@lit/localize"; | import { msg, str } from "@lit/localize"; | ||||||
| import { css, html } from "lit"; | import { css, html } from "lit"; | ||||||
| @ -19,7 +24,6 @@ import { customElement, query } from "lit/decorators.js"; | |||||||
| import PFCard from "@patternfly/patternfly/components/Card/card.css"; | import PFCard from "@patternfly/patternfly/components/Card/card.css"; | ||||||
|  |  | ||||||
| import { makeEditButton } from "./bindings/ak-application-wizard-bindings-edit-button.js"; | import { makeEditButton } from "./bindings/ak-application-wizard-bindings-edit-button.js"; | ||||||
| import "./bindings/ak-application-wizard-bindings-toolbar.js"; |  | ||||||
|  |  | ||||||
| const COLUMNS = [ | const COLUMNS = [ | ||||||
|     [msg("Order"), "order"], |     [msg("Order"), "order"], | ||||||
|  | |||||||
| @ -1,24 +1,28 @@ | |||||||
| import { ApplicationWizardStep } from "@goauthentik/admin/applications/wizard/ApplicationWizardStep.js"; | import "#admin/applications/wizard/ak-wizard-title"; | ||||||
| import "@goauthentik/admin/applications/wizard/ak-wizard-title.js"; | import "#components/ak-radio-input"; | ||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | import "#components/ak-switch-input"; | ||||||
| import { groupBy } from "@goauthentik/common/utils"; | import "#components/ak-text-input"; | ||||||
| import "@goauthentik/components/ak-radio-input"; | import "#components/ak-toggle-group"; | ||||||
| import "@goauthentik/components/ak-switch-input"; | import "#elements/forms/FormGroup"; | ||||||
| import "@goauthentik/components/ak-text-input"; | import "#elements/forms/HorizontalFormElement"; | ||||||
| import "@goauthentik/components/ak-toggle-group"; | import "#elements/forms/SearchSelect/index"; | ||||||
| import { type NavigableButton, type WizardButton } from "@goauthentik/components/ak-wizard/types"; | import "#elements/forms/SearchSelect/ak-search-select-ez"; | ||||||
| import "@goauthentik/elements/forms/FormGroup"; |  | ||||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
| import "@goauthentik/elements/forms/SearchSelect"; | import { groupBy } from "#common/utils"; | ||||||
| import { type SearchSelectBase } from "@goauthentik/elements/forms/SearchSelect/SearchSelect.js"; |  | ||||||
| import "@goauthentik/elements/forms/SearchSelect/ak-search-select-ez.js"; | import { type SearchSelectBase } from "#elements/forms/SearchSelect/SearchSelect"; | ||||||
|  |  | ||||||
|  | import { type NavigableButton, type WizardButton } from "#components/ak-wizard/types"; | ||||||
|  |  | ||||||
|  | import { ApplicationWizardStep } from "#admin/applications/wizard/ApplicationWizardStep"; | ||||||
|  |  | ||||||
|  | import { CoreApi, Group, PoliciesApi, Policy, PolicyBinding, User } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { html, nothing } from "lit"; | import { html, nothing } from "lit"; | ||||||
| import { customElement, query, state } from "lit/decorators.js"; | import { customElement, query, state } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| import { CoreApi, Group, PoliciesApi, Policy, PolicyBinding, User } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| const withQuery = <T>(search: string | undefined, args: T) => (search ? { ...args, search } : args); | const withQuery = <T>(search: string | undefined, args: T) => (search ? { ...args, search } : args); | ||||||
|  |  | ||||||
| enum target { | enum target { | ||||||
|  | |||||||
| @ -1,22 +1,25 @@ | |||||||
|  | import "#admin/applications/wizard/ak-wizard-title"; | ||||||
|  | import "#elements/EmptyState"; | ||||||
|  | import "#elements/forms/FormGroup"; | ||||||
|  | import "#elements/forms/HorizontalFormElement"; | ||||||
|  | import "#elements/wizard/TypeCreateWizardPage"; | ||||||
|  |  | ||||||
|  | import { bound } from "#elements/decorators/bound"; | ||||||
| import { WithLicenseSummary } from "#elements/mixins/license"; | import { WithLicenseSummary } from "#elements/mixins/license"; | ||||||
| import { ApplicationWizardStep } from "@goauthentik/admin/applications/wizard/ApplicationWizardStep.js"; | import { TypeCreateWizardPageLayouts } from "#elements/wizard/TypeCreateWizardPage"; | ||||||
| import "@goauthentik/admin/applications/wizard/ak-wizard-title.js"; |  | ||||||
| import type { NavigableButton, WizardButton } from "@goauthentik/components/ak-wizard/types"; | import type { NavigableButton, WizardButton } from "#components/ak-wizard/types"; | ||||||
| import "@goauthentik/elements/EmptyState.js"; |  | ||||||
| import { bound } from "@goauthentik/elements/decorators/bound.js"; | import { ApplicationWizardStep } from "#admin/applications/wizard/ApplicationWizardStep"; | ||||||
| import "@goauthentik/elements/forms/FormGroup.js"; |  | ||||||
| import "@goauthentik/elements/forms/HorizontalFormElement.js"; | import { TypeCreate } from "@goauthentik/api"; | ||||||
| import { TypeCreateWizardPageLayouts } from "@goauthentik/elements/wizard/TypeCreateWizardPage.js"; |  | ||||||
| import "@goauthentik/elements/wizard/TypeCreateWizardPage.js"; |  | ||||||
|  |  | ||||||
| import { consume } from "@lit/context"; | import { consume } from "@lit/context"; | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { html } from "lit"; | import { html } from "lit"; | ||||||
| import { customElement, state } from "lit/decorators.js"; | import { customElement, state } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| import { TypeCreate } from "@goauthentik/api"; | import { applicationWizardProvidersContext } from "../ContextIdentity.js"; | ||||||
|  |  | ||||||
| import { applicationWizardProvidersContext } from "../ContextIdentity"; |  | ||||||
| import { type LocalTypeCreate } from "./ProviderChoices.js"; | import { type LocalTypeCreate } from "./ProviderChoices.js"; | ||||||
|  |  | ||||||
| @customElement("ak-application-wizard-provider-choice-step") | @customElement("ak-application-wizard-provider-choice-step") | ||||||
|  | |||||||
| @ -1,13 +1,3 @@ | |||||||
| import { type NavigableButton, type WizardButton } from "@goauthentik/components/ak-wizard/types"; |  | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; |  | ||||||
| import { PropertyValues, nothing } from "lit"; |  | ||||||
| import { customElement, query, state } from "lit/decorators.js"; |  | ||||||
| import { html, unsafeStatic } from "lit/static-html.js"; |  | ||||||
|  |  | ||||||
| import { ApplicationWizardStep } from "../ApplicationWizardStep.js"; |  | ||||||
| import { OneOfProvider } from "../types.js"; |  | ||||||
| import { ApplicationWizardProviderForm } from "./providers/ApplicationWizardProviderForm.js"; |  | ||||||
| import "./providers/ak-application-wizard-provider-for-ldap.js"; | import "./providers/ak-application-wizard-provider-for-ldap.js"; | ||||||
| import "./providers/ak-application-wizard-provider-for-oauth.js"; | import "./providers/ak-application-wizard-provider-for-oauth.js"; | ||||||
| import "./providers/ak-application-wizard-provider-for-proxy.js"; | import "./providers/ak-application-wizard-provider-for-proxy.js"; | ||||||
| @ -16,6 +6,17 @@ import "./providers/ak-application-wizard-provider-for-radius.js"; | |||||||
| import "./providers/ak-application-wizard-provider-for-saml.js"; | import "./providers/ak-application-wizard-provider-for-saml.js"; | ||||||
| import "./providers/ak-application-wizard-provider-for-scim.js"; | import "./providers/ak-application-wizard-provider-for-scim.js"; | ||||||
|  |  | ||||||
|  | import { type NavigableButton, type WizardButton } from "#components/ak-wizard/types"; | ||||||
|  |  | ||||||
|  | import { msg } from "@lit/localize"; | ||||||
|  | import { nothing, PropertyValues } from "lit"; | ||||||
|  | import { customElement, query, state } from "lit/decorators.js"; | ||||||
|  | import { html, unsafeStatic } from "lit/static-html.js"; | ||||||
|  |  | ||||||
|  | import { ApplicationWizardStep } from "../ApplicationWizardStep.js"; | ||||||
|  | import { OneOfProvider } from "../types.js"; | ||||||
|  | import { ApplicationWizardProviderForm } from "./providers/ApplicationWizardProviderForm.js"; | ||||||
|  |  | ||||||
| const providerToTag = new Map([ | const providerToTag = new Map([ | ||||||
|     ["ldapprovider", "ak-application-wizard-provider-for-ldap"], |     ["ldapprovider", "ak-application-wizard-provider-for-ldap"], | ||||||
|     ["oauth2provider", "ak-application-wizard-provider-for-oauth"], |     ["oauth2provider", "ak-application-wizard-provider-for-oauth"], | ||||||
|  | |||||||
| @ -1,15 +1,33 @@ | |||||||
| import "@goauthentik/admin/applications/wizard/ak-wizard-title.js"; | import "#admin/applications/wizard/ak-wizard-title"; | ||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; |  | ||||||
| import { EVENT_REFRESH } from "@goauthentik/common/constants"; | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
| import { parseAPIResponseError } from "@goauthentik/common/errors/network"; | import { EVENT_REFRESH } from "#common/constants"; | ||||||
| import { WizardNavigationEvent } from "@goauthentik/components/ak-wizard/events.js"; | import { parseAPIResponseError } from "#common/errors/network"; | ||||||
| import { type WizardButton } from "@goauthentik/components/ak-wizard/types"; |  | ||||||
| import { showAPIErrorMessage } from "@goauthentik/elements/messages/MessageContainer"; | import { showAPIErrorMessage } from "#elements/messages/MessageContainer"; | ||||||
| import { CustomEmitterElement } from "@goauthentik/elements/utils/eventEmitter"; | import { CustomEmitterElement } from "#elements/utils/eventEmitter"; | ||||||
| import { P, match } from "ts-pattern"; |  | ||||||
|  | import { WizardNavigationEvent } from "#components/ak-wizard/events"; | ||||||
|  | import { type WizardButton } from "#components/ak-wizard/types"; | ||||||
|  |  | ||||||
|  | import { | ||||||
|  |     type ApplicationRequest, | ||||||
|  |     CoreApi, | ||||||
|  |     instanceOfValidationError, | ||||||
|  |     type ModelRequest, | ||||||
|  |     type PolicyBinding, | ||||||
|  |     ProviderModelEnum, | ||||||
|  |     ProxyMode, | ||||||
|  |     type ProxyProviderRequest, | ||||||
|  |     type TransactionApplicationRequest, | ||||||
|  |     type TransactionApplicationResponse, | ||||||
|  |     type TransactionPolicyBindingRequest, | ||||||
|  | } from "@goauthentik/api"; | ||||||
|  |  | ||||||
|  | import { match, P } from "ts-pattern"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { TemplateResult, css, html, nothing } from "lit"; | import { css, html, nothing, TemplateResult } from "lit"; | ||||||
| import { customElement, state } from "lit/decorators.js"; | import { customElement, state } from "lit/decorators.js"; | ||||||
| import { classMap } from "lit/directives/class-map.js"; | import { classMap } from "lit/directives/class-map.js"; | ||||||
|  |  | ||||||
| @ -20,22 +38,8 @@ import PFProgressStepper from "@patternfly/patternfly/components/ProgressStepper | |||||||
| import PFTitle from "@patternfly/patternfly/components/Title/title.css"; | import PFTitle from "@patternfly/patternfly/components/Title/title.css"; | ||||||
| import PFBullseye from "@patternfly/patternfly/layouts/Bullseye/bullseye.css"; | import PFBullseye from "@patternfly/patternfly/layouts/Bullseye/bullseye.css"; | ||||||
|  |  | ||||||
| import { |  | ||||||
|     type ApplicationRequest, |  | ||||||
|     CoreApi, |  | ||||||
|     type ModelRequest, |  | ||||||
|     type PolicyBinding, |  | ||||||
|     ProviderModelEnum, |  | ||||||
|     ProxyMode, |  | ||||||
|     type ProxyProviderRequest, |  | ||||||
|     type TransactionApplicationRequest, |  | ||||||
|     type TransactionApplicationResponse, |  | ||||||
|     type TransactionPolicyBindingRequest, |  | ||||||
|     instanceOfValidationError, |  | ||||||
| } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| import { ApplicationWizardStep } from "../ApplicationWizardStep.js"; | import { ApplicationWizardStep } from "../ApplicationWizardStep.js"; | ||||||
| import { OneOfProvider, isApplicationTransactionValidationError } from "../types.js"; | import { isApplicationTransactionValidationError, OneOfProvider } from "../types.js"; | ||||||
| import { providerRenderers } from "./SubmitStepOverviewRenderers.js"; | import { providerRenderers } from "./SubmitStepOverviewRenderers.js"; | ||||||
|  |  | ||||||
| const _submitStates = ["reviewing", "running", "submitted"] as const; | const _submitStates = ["reviewing", "running", "submitted"] as const; | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| import { AKElement } from "@goauthentik/elements/Base.js"; | import { AKElement } from "#elements/Base"; | ||||||
| import { bound } from "@goauthentik/elements/decorators/bound.js"; | import { bound } from "#elements/decorators/bound"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { html } from "lit"; | import { html } from "lit"; | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| import { AKElement } from "@goauthentik/elements/Base"; | import { AKElement } from "#elements/Base"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { html } from "lit"; | import { html } from "lit"; | ||||||
|  | |||||||
| @ -1,18 +1,20 @@ | |||||||
| import { camelToSnake } from "@goauthentik/common/utils.js"; | import "#components/ak-number-input"; | ||||||
| import "@goauthentik/components/ak-number-input"; | import "#components/ak-radio-input"; | ||||||
| import "@goauthentik/components/ak-radio-input"; | import "#components/ak-switch-input"; | ||||||
| import "@goauthentik/components/ak-switch-input"; | import "#components/ak-text-input"; | ||||||
| import "@goauthentik/components/ak-text-input"; | import "#elements/forms/FormGroup"; | ||||||
| import { AKElement } from "@goauthentik/elements/Base.js"; | import "#elements/forms/HorizontalFormElement"; | ||||||
| import { KeyUnknown, serializeForm } from "@goauthentik/elements/forms/Form"; |  | ||||||
| import "@goauthentik/elements/forms/FormGroup"; | import { camelToSnake } from "#common/utils"; | ||||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; |  | ||||||
| import { HorizontalFormElement } from "@goauthentik/elements/forms/HorizontalFormElement"; | import { AKElement } from "#elements/Base"; | ||||||
|  | import { KeyUnknown, serializeForm } from "#elements/forms/Form"; | ||||||
|  | import { HorizontalFormElement } from "#elements/forms/HorizontalFormElement"; | ||||||
|  |  | ||||||
| import { property, query } from "lit/decorators.js"; | import { property, query } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| import { styles as AwadStyles } from "../../ApplicationWizardFormStepStyles.css.js"; | import { styles as AwadStyles } from "../../ApplicationWizardFormStepStyles.styles.js"; | ||||||
| import { type ApplicationWizardState, type OneOfProvider } from "../../types"; | import { type ApplicationWizardState, type OneOfProvider } from "../../types.js"; | ||||||
|  |  | ||||||
| export class ApplicationWizardProviderForm<T extends OneOfProvider> extends AKElement { | export class ApplicationWizardProviderForm<T extends OneOfProvider> extends AKElement { | ||||||
|     static get styles() { |     static get styles() { | ||||||
|  | |||||||
| @ -1,14 +1,16 @@ | |||||||
|  | import "#admin/applications/wizard/ak-wizard-title"; | ||||||
|  |  | ||||||
| import { WithBrandConfig } from "#elements/mixins/branding"; | import { WithBrandConfig } from "#elements/mixins/branding"; | ||||||
| import "@goauthentik/admin/applications/wizard/ak-wizard-title.js"; |  | ||||||
| import { ValidationRecord } from "@goauthentik/admin/applications/wizard/types"; | import { ValidationRecord } from "#admin/applications/wizard/types"; | ||||||
| import { renderForm } from "@goauthentik/admin/providers/ldap/LDAPProviderFormForm.js"; | import { renderForm } from "#admin/providers/ldap/LDAPProviderFormForm"; | ||||||
|  |  | ||||||
|  | import type { LDAPProvider } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { html } from "lit"; | import { html } from "lit"; | ||||||
| import { customElement } from "lit/decorators.js"; | import { customElement } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| import type { LDAPProvider } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| import { ApplicationWizardProviderForm } from "./ApplicationWizardProviderForm.js"; | import { ApplicationWizardProviderForm } from "./ApplicationWizardProviderForm.js"; | ||||||
|  |  | ||||||
| @customElement("ak-application-wizard-provider-for-ldap") | @customElement("ak-application-wizard-provider-for-ldap") | ||||||
|  | |||||||
| @ -1,14 +1,20 @@ | |||||||
| import "@goauthentik/admin/applications/wizard/ak-wizard-title.js"; | import "#admin/applications/wizard/ak-wizard-title"; | ||||||
| import { renderForm } from "@goauthentik/admin/providers/oauth2/OAuth2ProviderFormForm.js"; |  | ||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
|  |  | ||||||
|  | import { renderForm } from "#admin/providers/oauth2/OAuth2ProviderFormForm"; | ||||||
|  |  | ||||||
|  | import { | ||||||
|  |     type OAuth2Provider, | ||||||
|  |     OAuth2ProviderRequest, | ||||||
|  |     type PaginatedOAuthSourceList, | ||||||
|  |     SourcesApi, | ||||||
|  | } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { html } from "lit"; | import { html } from "lit"; | ||||||
| import { customElement, state } from "lit/decorators.js"; | import { customElement, state } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| import { OAuth2ProviderRequest, SourcesApi } from "@goauthentik/api"; |  | ||||||
| import { type OAuth2Provider, type PaginatedOAuthSourceList } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| import { ApplicationTransactionValidationError } from "../../types.js"; | import { ApplicationTransactionValidationError } from "../../types.js"; | ||||||
| import { ApplicationWizardProviderForm } from "./ApplicationWizardProviderForm.js"; | import { ApplicationWizardProviderForm } from "./ApplicationWizardProviderForm.js"; | ||||||
|  |  | ||||||
|  | |||||||
| @ -1,20 +1,22 @@ | |||||||
| import "@goauthentik/admin/applications/wizard/ak-wizard-title.js"; | import "#admin/applications/wizard/ak-wizard-title"; | ||||||
| import { ValidationRecord } from "@goauthentik/admin/applications/wizard/types"; |  | ||||||
|  | import { WizardUpdateEvent } from "#components/ak-wizard/events"; | ||||||
|  |  | ||||||
|  | import { ValidationRecord } from "#admin/applications/wizard/types"; | ||||||
| import { | import { | ||||||
|     ProxyModeValue, |     ProxyModeValue, | ||||||
|  |     renderForm, | ||||||
|     type SetMode, |     type SetMode, | ||||||
|     type SetShowHttpBasic, |     type SetShowHttpBasic, | ||||||
|     renderForm, | } from "#admin/providers/proxy/ProxyProviderFormForm"; | ||||||
| } from "@goauthentik/admin/providers/proxy/ProxyProviderFormForm.js"; |  | ||||||
| import { WizardUpdateEvent } from "@goauthentik/components/ak-wizard/events.js"; | import { ProxyMode, ProxyProvider } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { html } from "lit"; | import { html } from "lit"; | ||||||
| import { customElement, state } from "lit/decorators.js"; | import { customElement, state } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| import { ProxyMode, ProxyProvider } from "@goauthentik/api"; | import { ApplicationWizardProviderForm } from "./ApplicationWizardProviderForm.js"; | ||||||
|  |  | ||||||
| import { ApplicationWizardProviderForm } from "./ApplicationWizardProviderForm"; |  | ||||||
|  |  | ||||||
| @customElement("ak-application-wizard-provider-for-proxy") | @customElement("ak-application-wizard-provider-for-proxy") | ||||||
| export class ApplicationWizardProxyProviderForm extends ApplicationWizardProviderForm<ProxyProvider> { | export class ApplicationWizardProxyProviderForm extends ApplicationWizardProviderForm<ProxyProvider> { | ||||||
|  | |||||||
| @ -1,21 +1,22 @@ | |||||||
| import "@goauthentik/admin/applications/wizard/ak-wizard-title.js"; | import "#admin/applications/wizard/ak-wizard-title"; | ||||||
| import "@goauthentik/admin/common/ak-crypto-certificate-search.js"; | import "#admin/common/ak-crypto-certificate-search"; | ||||||
| import "@goauthentik/admin/common/ak-flow-search/ak-flow-search"; | import "#admin/common/ak-flow-search/ak-flow-search"; | ||||||
|  | import "#components/ak-text-input"; | ||||||
|  | import "#elements/CodeMirror"; | ||||||
|  | import "#elements/ak-dual-select/ak-dual-select-dynamic-selected-provider"; | ||||||
|  |  | ||||||
| import { | import { | ||||||
|     propertyMappingsProvider, |     propertyMappingsProvider, | ||||||
|     propertyMappingsSelector, |     propertyMappingsSelector, | ||||||
| } from "@goauthentik/admin/providers/rac/RACProviderFormHelpers.js"; | } from "#admin/providers/rac/RACProviderFormHelpers"; | ||||||
| import "@goauthentik/components/ak-text-input"; |  | ||||||
| import "@goauthentik/elements/CodeMirror"; | import { FlowsInstancesListDesignationEnum, type RACProvider } from "@goauthentik/api"; | ||||||
| import "@goauthentik/elements/ak-dual-select/ak-dual-select-dynamic-selected-provider.js"; |  | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { html } from "lit"; | import { html } from "lit"; | ||||||
| import { customElement } from "lit/decorators.js"; | import { customElement } from "lit/decorators.js"; | ||||||
| import { ifDefined } from "lit/directives/if-defined.js"; | import { ifDefined } from "lit/directives/if-defined.js"; | ||||||
|  |  | ||||||
| import { FlowsInstancesListDesignationEnum, type RACProvider } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| import { ApplicationWizardProviderForm } from "./ApplicationWizardProviderForm.js"; | import { ApplicationWizardProviderForm } from "./ApplicationWizardProviderForm.js"; | ||||||
|  |  | ||||||
| @customElement("ak-application-wizard-provider-for-rac") | @customElement("ak-application-wizard-provider-for-rac") | ||||||
|  | |||||||
| @ -1,14 +1,16 @@ | |||||||
|  | import "#admin/applications/wizard/ak-wizard-title"; | ||||||
|  |  | ||||||
| import { WithBrandConfig } from "#elements/mixins/branding"; | import { WithBrandConfig } from "#elements/mixins/branding"; | ||||||
| import "@goauthentik/admin/applications/wizard/ak-wizard-title.js"; |  | ||||||
| import { ValidationRecord } from "@goauthentik/admin/applications/wizard/types"; | import { ValidationRecord } from "#admin/applications/wizard/types"; | ||||||
| import { renderForm } from "@goauthentik/admin/providers/radius/RadiusProviderFormForm.js"; | import { renderForm } from "#admin/providers/radius/RadiusProviderFormForm"; | ||||||
|  |  | ||||||
|  | import { RadiusProvider } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { customElement } from "@lit/reactive-element/decorators.js"; | import { customElement } from "@lit/reactive-element/decorators.js"; | ||||||
| import { html } from "lit"; | import { html } from "lit"; | ||||||
|  |  | ||||||
| import { RadiusProvider } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| import { ApplicationWizardProviderForm } from "./ApplicationWizardProviderForm.js"; | import { ApplicationWizardProviderForm } from "./ApplicationWizardProviderForm.js"; | ||||||
|  |  | ||||||
| @customElement("ak-application-wizard-provider-for-radius") | @customElement("ak-application-wizard-provider-for-radius") | ||||||
|  | |||||||
| @ -1,15 +1,16 @@ | |||||||
| import "@goauthentik/admin/applications/wizard/ak-wizard-title.js"; | import "#admin/applications/wizard/ak-wizard-title"; | ||||||
| import { type AkCryptoCertificateSearch } from "@goauthentik/admin/common/ak-crypto-certificate-search"; | import "#elements/forms/FormGroup"; | ||||||
| import { renderForm } from "@goauthentik/admin/providers/saml/SAMLProviderFormForm.js"; |  | ||||||
| import "@goauthentik/elements/forms/FormGroup"; | import { type AkCryptoCertificateSearch } from "#admin/common/ak-crypto-certificate-search"; | ||||||
|  | import { renderForm } from "#admin/providers/saml/SAMLProviderFormForm"; | ||||||
|  |  | ||||||
|  | import { SAMLProvider } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { customElement, state } from "@lit/reactive-element/decorators.js"; | import { customElement, state } from "@lit/reactive-element/decorators.js"; | ||||||
| import { html } from "lit"; | import { html } from "lit"; | ||||||
|  |  | ||||||
| import { SAMLProvider } from "@goauthentik/api"; | import { ApplicationWizardProviderForm } from "./ApplicationWizardProviderForm.js"; | ||||||
|  |  | ||||||
| import { ApplicationWizardProviderForm } from "./ApplicationWizardProviderForm"; |  | ||||||
|  |  | ||||||
| @customElement("ak-application-wizard-provider-for-saml") | @customElement("ak-application-wizard-provider-for-saml") | ||||||
| export class ApplicationWizardProviderSamlForm extends ApplicationWizardProviderForm<SAMLProvider> { | export class ApplicationWizardProviderSamlForm extends ApplicationWizardProviderForm<SAMLProvider> { | ||||||
|  | |||||||
| @ -1,14 +1,15 @@ | |||||||
| import "@goauthentik/admin/applications/wizard/ak-wizard-title.js"; | import "#admin/applications/wizard/ak-wizard-title"; | ||||||
| import { renderForm } from "@goauthentik/admin/providers/scim/SCIMProviderFormForm.js"; | import "#elements/forms/FormGroup"; | ||||||
| import "@goauthentik/elements/forms/FormGroup"; |  | ||||||
|  | import { renderForm } from "#admin/providers/scim/SCIMProviderFormForm"; | ||||||
|  |  | ||||||
|  | import { PaginatedSCIMMappingList, type SCIMProvider } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { customElement, state } from "@lit/reactive-element/decorators.js"; | import { customElement, state } from "@lit/reactive-element/decorators.js"; | ||||||
| import { html } from "lit"; | import { html } from "lit"; | ||||||
|  |  | ||||||
| import { PaginatedSCIMMappingList, type SCIMProvider } from "@goauthentik/api"; | import { ApplicationWizardProviderForm } from "./ApplicationWizardProviderForm.js"; | ||||||
|  |  | ||||||
| import { ApplicationWizardProviderForm } from "./ApplicationWizardProviderForm"; |  | ||||||
|  |  | ||||||
| @customElement("ak-application-wizard-provider-for-scim") | @customElement("ak-application-wizard-provider-for-scim") | ||||||
| export class ApplicationWizardSCIMProvider extends ApplicationWizardProviderForm<SCIMProvider> { | export class ApplicationWizardSCIMProvider extends ApplicationWizardProviderForm<SCIMProvider> { | ||||||
|  | |||||||
| @ -1,23 +1,26 @@ | |||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | import "#components/ak-toggle-group"; | ||||||
| import { docLink } from "@goauthentik/common/global"; | import "#elements/CodeMirror"; | ||||||
| import "@goauthentik/components/ak-toggle-group"; | import "#elements/forms/FormGroup"; | ||||||
| import "@goauthentik/elements/CodeMirror"; | import "#elements/forms/HorizontalFormElement"; | ||||||
| import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror"; | import "#elements/forms/SearchSelect/index"; | ||||||
| import "@goauthentik/elements/forms/FormGroup"; |  | ||||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
| import { ModelForm } from "@goauthentik/elements/forms/ModelForm"; | import { docLink } from "#common/global"; | ||||||
| import "@goauthentik/elements/forms/SearchSelect"; |  | ||||||
|  | import { CodeMirrorMode } from "#elements/CodeMirror"; | ||||||
|  | import { ModelForm } from "#elements/forms/ModelForm"; | ||||||
|  |  | ||||||
|  | import { BlueprintFile, BlueprintInstance, ManagedApi } from "@goauthentik/api"; | ||||||
|  |  | ||||||
| import YAML from "yaml"; | import YAML from "yaml"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { msg } from "@lit/localize"; | ||||||
| import { CSSResult, TemplateResult, html } from "lit"; | import { CSSResult, html, TemplateResult } from "lit"; | ||||||
| import { customElement, state } from "lit/decorators.js"; | import { customElement, state } from "lit/decorators.js"; | ||||||
| import { ifDefined } from "lit/directives/if-defined.js"; | import { ifDefined } from "lit/directives/if-defined.js"; | ||||||
|  |  | ||||||
| import PFContent from "@patternfly/patternfly/components/Content/content.css"; | import PFContent from "@patternfly/patternfly/components/Content/content.css"; | ||||||
|  |  | ||||||
| import { BlueprintFile, BlueprintInstance, ManagedApi } from "@goauthentik/api"; |  | ||||||
|  |  | ||||||
| enum blueprintSource { | enum blueprintSource { | ||||||
|     file = "file", |     file = "file", | ||||||
|     oci = "oci", |     oci = "oci", | ||||||
|  | |||||||
| @ -1,23 +1,18 @@ | |||||||
| import "@goauthentik/admin/blueprints/BlueprintForm"; | import "#admin/blueprints/BlueprintForm"; | ||||||
| import "@goauthentik/admin/rbac/ObjectPermissionModal"; | import "#admin/rbac/ObjectPermissionModal"; | ||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | import "#components/ak-status-label"; | ||||||
| import { EVENT_REFRESH } from "@goauthentik/common/constants"; | import "#elements/buttons/ActionButton/index"; | ||||||
| import { formatElapsedTime } from "@goauthentik/common/temporal"; | import "#elements/buttons/SpinnerButton/index"; | ||||||
| import "@goauthentik/components/ak-status-label"; | import "#elements/forms/DeleteBulkForm"; | ||||||
| import "@goauthentik/elements/buttons/ActionButton"; | import "#elements/forms/ModalForm"; | ||||||
| import "@goauthentik/elements/buttons/SpinnerButton"; |  | ||||||
| import "@goauthentik/elements/forms/DeleteBulkForm"; |  | ||||||
| import "@goauthentik/elements/forms/ModalForm"; |  | ||||||
| import { PaginatedResponse } from "@goauthentik/elements/table/Table"; |  | ||||||
| import { TableColumn } from "@goauthentik/elements/table/Table"; |  | ||||||
| import { TablePage } from "@goauthentik/elements/table/TablePage"; |  | ||||||
| import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; | import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
| import { CSSResult, TemplateResult, html } from "lit"; | import { EVENT_REFRESH } from "#common/constants"; | ||||||
| import { customElement, property } from "lit/decorators.js"; | import { formatElapsedTime } from "#common/temporal"; | ||||||
|  |  | ||||||
| import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; | import { PaginatedResponse, TableColumn } from "#elements/table/Table"; | ||||||
|  | import { TablePage } from "#elements/table/TablePage"; | ||||||
|  |  | ||||||
| import { | import { | ||||||
|     BlueprintInstance, |     BlueprintInstance, | ||||||
| @ -26,6 +21,12 @@ import { | |||||||
|     RbacPermissionsAssignedByUsersListModelEnum, |     RbacPermissionsAssignedByUsersListModelEnum, | ||||||
| } from "@goauthentik/api"; | } from "@goauthentik/api"; | ||||||
|  |  | ||||||
|  | import { msg } from "@lit/localize"; | ||||||
|  | import { CSSResult, html, TemplateResult } from "lit"; | ||||||
|  | import { customElement, property } from "lit/decorators.js"; | ||||||
|  |  | ||||||
|  | import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; | ||||||
|  |  | ||||||
| export function BlueprintStatus(blueprint?: BlueprintInstance): string { | export function BlueprintStatus(blueprint?: BlueprintInstance): string { | ||||||
|     if (!blueprint) return ""; |     if (!blueprint) return ""; | ||||||
|     switch (blueprint.status) { |     switch (blueprint.status) { | ||||||
|  | |||||||
| @ -1,21 +1,19 @@ | |||||||
| import { certificateProvider, certificateSelector } from "@goauthentik/admin/brands/Certificates"; | import "#admin/common/ak-crypto-certificate-search"; | ||||||
| import "@goauthentik/admin/common/ak-crypto-certificate-search"; | import "#admin/common/ak-flow-search/ak-flow-search"; | ||||||
| import "@goauthentik/admin/common/ak-flow-search/ak-flow-search"; | import "#elements/CodeMirror"; | ||||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | import "#elements/ak-dual-select/ak-dual-select-dynamic-selected-provider"; | ||||||
| import { DefaultBrand } from "@goauthentik/common/ui/config"; | import "#elements/ak-dual-select/ak-dual-select-provider"; | ||||||
| import "@goauthentik/elements/CodeMirror"; | import "#elements/forms/FormGroup"; | ||||||
| import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror"; | import "#elements/forms/HorizontalFormElement"; | ||||||
| import "@goauthentik/elements/ak-dual-select/ak-dual-select-dynamic-selected-provider.js"; | import "#elements/forms/SearchSelect/index"; | ||||||
| import "@goauthentik/elements/ak-dual-select/ak-dual-select-provider.js"; |  | ||||||
| import "@goauthentik/elements/forms/FormGroup"; |  | ||||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; |  | ||||||
| import { ModelForm } from "@goauthentik/elements/forms/ModelForm"; |  | ||||||
| import "@goauthentik/elements/forms/SearchSelect"; |  | ||||||
| import YAML from "yaml"; |  | ||||||
|  |  | ||||||
| import { msg } from "@lit/localize"; | import { DEFAULT_CONFIG } from "#common/api/config"; | ||||||
| import { TemplateResult, html } from "lit"; | import { DefaultBrand } from "#common/ui/config"; | ||||||
| import { customElement } from "lit/decorators.js"; |  | ||||||
|  | import { CodeMirrorMode } from "#elements/CodeMirror"; | ||||||
|  | import { ModelForm } from "#elements/forms/ModelForm"; | ||||||
|  |  | ||||||
|  | import { certificateProvider, certificateSelector } from "#admin/brands/Certificates"; | ||||||
|  |  | ||||||
| import { | import { | ||||||
|     Application, |     Application, | ||||||
| @ -25,6 +23,12 @@ import { | |||||||
|     FlowsInstancesListDesignationEnum, |     FlowsInstancesListDesignationEnum, | ||||||
| } from "@goauthentik/api"; | } from "@goauthentik/api"; | ||||||
|  |  | ||||||
|  | import YAML from "yaml"; | ||||||
|  |  | ||||||
|  | import { msg } from "@lit/localize"; | ||||||
|  | import { html, TemplateResult } from "lit"; | ||||||
|  | import { customElement } from "lit/decorators.js"; | ||||||
|  |  | ||||||
| @customElement("ak-brand-form") | @customElement("ak-brand-form") | ||||||
| export class BrandForm extends ModelForm<Brand, string> { | export class BrandForm extends ModelForm<Brand, string> { | ||||||
|     loadInstance(pk: string): Promise<Brand> { |     loadInstance(pk: string): Promise<Brand> { | ||||||
|  | |||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user
	