web/NPM Workspaces: Prep ESBuild plugin for publish. (#14552)

* web: Prep ESBuild plugin for publish.

* prettier-config: Update deps.

* eslint-config: Update deps.

* docusaurus-config: Update deps.

* docs: Update deps.

* docs: Enable linter.

* docs: Lint.

* web/sfe: Clean up types. Prep for monorepo.

* esbuild-plugin-live-reload: Update deps.

* web: Tidy ESLint, script commands.

* web: Fix logs.

* web: Lint.

* web: Split compile check from cached version.
This commit is contained in:
Teffen Ellis
2025-05-21 22:09:33 +02:00
committed by GitHub
parent f48496b2cf
commit 614740a4ff
43 changed files with 7478 additions and 5935 deletions

View File

@ -7,6 +7,7 @@ on:
- packages/eslint-config/** - packages/eslint-config/**
- packages/prettier-config/** - packages/prettier-config/**
- packages/tsconfig/** - packages/tsconfig/**
- packages/web/esbuild-plugin-live-reload/**
workflow_dispatch: workflow_dispatch:
jobs: jobs:
publish: publish:

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "@goauthentik/docusaurus-config", "name": "@goauthentik/docusaurus-config",
"version": "1.0.6", "version": "1.1.0",
"description": "authentik's Docusaurus config", "description": "authentik's Docusaurus config",
"license": "MIT", "license": "MIT",
"scripts": { "scripts": {
@ -20,23 +20,24 @@
"prism-react-renderer": "^2.4.1" "prism-react-renderer": "^2.4.1"
}, },
"devDependencies": { "devDependencies": {
"@docusaurus/core": "^3.7.0",
"@docusaurus/preset-classic": "^3.7.0",
"@docusaurus/theme-common": "^3.7.0", "@docusaurus/theme-common": "^3.7.0",
"@docusaurus/theme-mermaid": "^3.7.0", "@docusaurus/theme-search-algolia": "^3.7.0",
"@docusaurus/types": "^3.7.0",
"@goauthentik/prettier-config": "^1.0.1", "@goauthentik/prettier-config": "^1.0.1",
"@goauthentik/tsconfig": "^1.0.1", "@goauthentik/tsconfig": "^1.0.1",
"react": "^18.3.1", "@types/react": "^19.1.5",
"react-dom": "^18.3.1", "@types/react-dom": "^19.1.5",
"typescript": "^5.8.2" "prettier": "^3.5.3",
"react": "^19.1.0",
"react-dom": "^19.1.0",
"typescript": "^5.8.3"
}, },
"peerDependencies": { "peerDependencies": {
"@docusaurus/core": "^3.7.0",
"@docusaurus/preset-classic": "^3.7.0",
"@docusaurus/theme-common": "^3.7.0", "@docusaurus/theme-common": "^3.7.0",
"@docusaurus/theme-mermaid": "^3.7.0", "@docusaurus/theme-search-algolia": "^3.7.0",
"react": "^18.0.0", "@docusaurus/types": "^3.7.0",
"react-dom": "^18.0.0" "react": "^18.0.0 || ^19.0.0",
"react-dom": "^18.0.0 || ^19.0.0"
}, },
"engines": { "engines": {
"node": ">=20.11" "node": ">=20.11"
@ -49,6 +50,11 @@
"out/**/*" "out/**/*"
], ],
"prettier": "@goauthentik/prettier-config", "prettier": "@goauthentik/prettier-config",
"peerDependenciesMeta": {
"@docusaurus/theme-search-algolia": {
"optional": true
}
},
"publishConfig": { "publishConfig": {
"access": "public" "access": "public"
} }

View File

@ -1,37 +1,44 @@
{ {
"name": "@goauthentik/eslint-config", "name": "@goauthentik/eslint-config",
"version": "1.0.1", "version": "1.0.5",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@goauthentik/eslint-config", "name": "@goauthentik/eslint-config",
"version": "1.0.1", "version": "1.0.5",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"eslint": "^9.23.0", "eslint": "^9.27.0",
"eslint-plugin-import": "^2.31.0", "eslint-plugin-import": "^2.31.0",
"eslint-plugin-lit": "^1.15.0", "eslint-plugin-lit": "^2.1.1",
"eslint-plugin-react": "^7.37.4", "eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-wc": "^2.1.1" "eslint-plugin-wc": "^3.0.1"
}, },
"devDependencies": { "devDependencies": {
"@goauthentik/prettier-config": "^1.0.1", "@goauthentik/prettier-config": "^1.0.1",
"@goauthentik/tsconfig": "^1.0.1", "@goauthentik/tsconfig": "^1.0.1",
"@types/eslint": "^9.6.1", "@types/eslint": "^9.6.1",
"typescript": "^5.8.2", "typescript": "^5.8.3",
"typescript-eslint": "^8.29.0" "typescript-eslint": "^8.32.1"
}, },
"engines": { "engines": {
"node": ">=20.11" "node": ">=20.11"
}, },
"optionalDependencies": {
"react": "^18.3.1"
},
"peerDependencies": { "peerDependencies": {
"typescript": "^5.8.2", "react": "^18.0.0 || ^19.0.0",
"typescript-eslint": "^8.29.0" "react-dom": "^18.0.0 || ^19.0.0",
"typescript": "^5.8.3",
"typescript-eslint": "^8.32.1"
},
"peerDependenciesMeta": {
"react": {
"optional": true
},
"react-dom": {
"optional": true
}
} }
}, },
"node_modules/@babel/code-frame": { "node_modules/@babel/code-frame": {
@ -170,9 +177,9 @@
} }
}, },
"node_modules/@eslint-community/eslint-utils": { "node_modules/@eslint-community/eslint-utils": {
"version": "4.5.1", "version": "4.7.0",
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz",
"integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==", "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"eslint-visitor-keys": "^3.4.3" "eslint-visitor-keys": "^3.4.3"
@ -232,9 +239,9 @@
} }
}, },
"node_modules/@eslint/core": { "node_modules/@eslint/core": {
"version": "0.12.0", "version": "0.14.0",
"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz",
"integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@types/json-schema": "^7.0.15" "@types/json-schema": "^7.0.15"
@ -267,12 +274,15 @@
} }
}, },
"node_modules/@eslint/js": { "node_modules/@eslint/js": {
"version": "9.24.0", "version": "9.27.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.27.0.tgz",
"integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==", "integrity": "sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==",
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://eslint.org/donate"
} }
}, },
"node_modules/@eslint/object-schema": { "node_modules/@eslint/object-schema": {
@ -285,30 +295,18 @@
} }
}, },
"node_modules/@eslint/plugin-kit": { "node_modules/@eslint/plugin-kit": {
"version": "0.2.8", "version": "0.3.1",
"resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz", "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz",
"integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==", "integrity": "sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@eslint/core": "^0.13.0", "@eslint/core": "^0.14.0",
"levn": "^0.4.1" "levn": "^0.4.1"
}, },
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
} }
}, },
"node_modules/@eslint/plugin-kit/node_modules/@eslint/core": {
"version": "0.13.0",
"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz",
"integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==",
"license": "Apache-2.0",
"dependencies": {
"@types/json-schema": "^7.0.15"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
"node_modules/@goauthentik/prettier-config": { "node_modules/@goauthentik/prettier-config": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/@goauthentik/prettier-config/-/prettier-config-1.0.1.tgz", "resolved": "https://registry.npmjs.org/@goauthentik/prettier-config/-/prettier-config-1.0.1.tgz",
@ -578,21 +576,21 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/@typescript-eslint/eslint-plugin": { "node_modules/@typescript-eslint/eslint-plugin": {
"version": "8.29.1", "version": "8.32.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.29.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.32.1.tgz",
"integrity": "sha512-ba0rr4Wfvg23vERs3eB+P3lfj2E+2g3lhWcCVukUuhtcdUx5lSIFZlGFEBHKr+3zizDa/TvZTptdNHVZWAkSBg==", "integrity": "sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@eslint-community/regexpp": "^4.10.0", "@eslint-community/regexpp": "^4.10.0",
"@typescript-eslint/scope-manager": "8.29.1", "@typescript-eslint/scope-manager": "8.32.1",
"@typescript-eslint/type-utils": "8.29.1", "@typescript-eslint/type-utils": "8.32.1",
"@typescript-eslint/utils": "8.29.1", "@typescript-eslint/utils": "8.32.1",
"@typescript-eslint/visitor-keys": "8.29.1", "@typescript-eslint/visitor-keys": "8.32.1",
"graphemer": "^1.4.0", "graphemer": "^1.4.0",
"ignore": "^5.3.1", "ignore": "^7.0.0",
"natural-compare": "^1.4.0", "natural-compare": "^1.4.0",
"ts-api-utils": "^2.0.1" "ts-api-utils": "^2.1.0"
}, },
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -607,17 +605,27 @@
"typescript": ">=4.8.4 <5.9.0" "typescript": ">=4.8.4 <5.9.0"
} }
}, },
"node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.4.tgz",
"integrity": "sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 4"
}
},
"node_modules/@typescript-eslint/parser": { "node_modules/@typescript-eslint/parser": {
"version": "8.29.1", "version": "8.32.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.29.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.32.1.tgz",
"integrity": "sha512-zczrHVEqEaTwh12gWBIJWj8nx+ayDcCJs06yoNMY0kwjMWDM6+kppljY+BxWI06d2Ja+h4+WdufDcwMnnMEWmg==", "integrity": "sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/scope-manager": "8.29.1", "@typescript-eslint/scope-manager": "8.32.1",
"@typescript-eslint/types": "8.29.1", "@typescript-eslint/types": "8.32.1",
"@typescript-eslint/typescript-estree": "8.29.1", "@typescript-eslint/typescript-estree": "8.32.1",
"@typescript-eslint/visitor-keys": "8.29.1", "@typescript-eslint/visitor-keys": "8.32.1",
"debug": "^4.3.4" "debug": "^4.3.4"
}, },
"engines": { "engines": {
@ -633,14 +641,14 @@
} }
}, },
"node_modules/@typescript-eslint/scope-manager": { "node_modules/@typescript-eslint/scope-manager": {
"version": "8.29.1", "version": "8.32.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.32.1.tgz",
"integrity": "sha512-2nggXGX5F3YrsGN08pw4XpMLO1Rgtnn4AzTegC2MDesv6q3QaTU5yU7IbS1tf1IwCR0Hv/1EFygLn9ms6LIpDA==", "integrity": "sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/types": "8.29.1", "@typescript-eslint/types": "8.32.1",
"@typescript-eslint/visitor-keys": "8.29.1" "@typescript-eslint/visitor-keys": "8.32.1"
}, },
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -651,16 +659,16 @@
} }
}, },
"node_modules/@typescript-eslint/type-utils": { "node_modules/@typescript-eslint/type-utils": {
"version": "8.29.1", "version": "8.32.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.29.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.32.1.tgz",
"integrity": "sha512-DkDUSDwZVCYN71xA4wzySqqcZsHKic53A4BLqmrWFFpOpNSoxX233lwGu/2135ymTCR04PoKiEEEvN1gFYg4Tw==", "integrity": "sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/typescript-estree": "8.29.1", "@typescript-eslint/typescript-estree": "8.32.1",
"@typescript-eslint/utils": "8.29.1", "@typescript-eslint/utils": "8.32.1",
"debug": "^4.3.4", "debug": "^4.3.4",
"ts-api-utils": "^2.0.1" "ts-api-utils": "^2.1.0"
}, },
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -675,9 +683,9 @@
} }
}, },
"node_modules/@typescript-eslint/types": { "node_modules/@typescript-eslint/types": {
"version": "8.29.1", "version": "8.32.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.32.1.tgz",
"integrity": "sha512-VT7T1PuJF1hpYC3AGm2rCgJBjHL3nc+A/bhOp9sGMKfi5v0WufsX/sHCFBfNTx2F+zA6qBc/PD0/kLRLjdt8mQ==", "integrity": "sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
@ -689,20 +697,20 @@
} }
}, },
"node_modules/@typescript-eslint/typescript-estree": { "node_modules/@typescript-eslint/typescript-estree": {
"version": "8.29.1", "version": "8.32.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.1.tgz",
"integrity": "sha512-l1enRoSaUkQxOQnbi0KPUtqeZkSiFlqrx9/3ns2rEDhGKfTa+88RmXqedC1zmVTOWrLc2e6DEJrTA51C9iLH5g==", "integrity": "sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/types": "8.29.1", "@typescript-eslint/types": "8.32.1",
"@typescript-eslint/visitor-keys": "8.29.1", "@typescript-eslint/visitor-keys": "8.32.1",
"debug": "^4.3.4", "debug": "^4.3.4",
"fast-glob": "^3.3.2", "fast-glob": "^3.3.2",
"is-glob": "^4.0.3", "is-glob": "^4.0.3",
"minimatch": "^9.0.4", "minimatch": "^9.0.4",
"semver": "^7.6.0", "semver": "^7.6.0",
"ts-api-utils": "^2.0.1" "ts-api-utils": "^2.1.0"
}, },
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -742,9 +750,9 @@
} }
}, },
"node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
"version": "7.7.1", "version": "7.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
"integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
"dev": true, "dev": true,
"license": "ISC", "license": "ISC",
"bin": { "bin": {
@ -755,16 +763,16 @@
} }
}, },
"node_modules/@typescript-eslint/utils": { "node_modules/@typescript-eslint/utils": {
"version": "8.29.1", "version": "8.32.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.29.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.32.1.tgz",
"integrity": "sha512-QAkFEbytSaB8wnmB+DflhUPz6CLbFWE2SnSCrRMEa+KnXIzDYbpsn++1HGvnfAsUY44doDXmvRkO5shlM/3UfA==", "integrity": "sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@eslint-community/eslint-utils": "^4.4.0", "@eslint-community/eslint-utils": "^4.7.0",
"@typescript-eslint/scope-manager": "8.29.1", "@typescript-eslint/scope-manager": "8.32.1",
"@typescript-eslint/types": "8.29.1", "@typescript-eslint/types": "8.32.1",
"@typescript-eslint/typescript-estree": "8.29.1" "@typescript-eslint/typescript-estree": "8.32.1"
}, },
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -779,13 +787,13 @@
} }
}, },
"node_modules/@typescript-eslint/visitor-keys": { "node_modules/@typescript-eslint/visitor-keys": {
"version": "8.29.1", "version": "8.32.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.1.tgz",
"integrity": "sha512-RGLh5CRaUEf02viP5c1Vh1cMGffQscyHe7HPAzGpfmfflFg1wUz2rYxd+OZqwpeypYvZ8UxSxuIpF++fmOzEcg==", "integrity": "sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/types": "8.29.1", "@typescript-eslint/types": "8.32.1",
"eslint-visitor-keys": "^4.2.0" "eslint-visitor-keys": "^4.2.0"
}, },
"engines": { "engines": {
@ -1505,19 +1513,19 @@
} }
}, },
"node_modules/eslint": { "node_modules/eslint": {
"version": "9.24.0", "version": "9.27.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz", "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.27.0.tgz",
"integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==", "integrity": "sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.12.1", "@eslint-community/regexpp": "^4.12.1",
"@eslint/config-array": "^0.20.0", "@eslint/config-array": "^0.20.0",
"@eslint/config-helpers": "^0.2.0", "@eslint/config-helpers": "^0.2.1",
"@eslint/core": "^0.12.0", "@eslint/core": "^0.14.0",
"@eslint/eslintrc": "^3.3.1", "@eslint/eslintrc": "^3.3.1",
"@eslint/js": "9.24.0", "@eslint/js": "9.27.0",
"@eslint/plugin-kit": "^0.2.7", "@eslint/plugin-kit": "^0.3.1",
"@humanfs/node": "^0.16.6", "@humanfs/node": "^0.16.6",
"@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/module-importer": "^1.0.1",
"@humanwhocodes/retry": "^0.4.2", "@humanwhocodes/retry": "^0.4.2",
@ -1653,20 +1661,19 @@
} }
}, },
"node_modules/eslint-plugin-lit": { "node_modules/eslint-plugin-lit": {
"version": "1.15.0", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-1.15.0.tgz", "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-2.1.1.tgz",
"integrity": "sha512-Yhr2MYNz6Ln8megKcX503aVZQln8wsywCG49g0heiJ/Qr5UjkE4pGr4Usez2anNcc7NvlvHbQWMYwWcgH3XRKA==", "integrity": "sha512-qmyAOnnTCdS+vDnNxtCoF0icSKIio4GUv6ZLnaCtTX6G/YezRa6Ag6tOQ+MfV5Elvtw9CIXeliRX4mIBSwrPIA==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"parse5": "^6.0.1", "parse5": "^6.0.1",
"parse5-htmlparser2-tree-adapter": "^6.0.1", "parse5-htmlparser2-tree-adapter": "^6.0.1"
"requireindex": "^1.2.0"
}, },
"engines": { "engines": {
"node": ">= 12" "node": ">= 18"
}, },
"peerDependencies": { "peerDependencies": {
"eslint": ">= 5" "eslint": ">= 8"
} }
}, },
"node_modules/eslint-plugin-react": { "node_modules/eslint-plugin-react": {
@ -1731,13 +1738,13 @@
} }
}, },
"node_modules/eslint-plugin-wc": { "node_modules/eslint-plugin-wc": {
"version": "2.2.1", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-wc/-/eslint-plugin-wc-2.2.1.tgz", "resolved": "https://registry.npmjs.org/eslint-plugin-wc/-/eslint-plugin-wc-3.0.1.tgz",
"integrity": "sha512-KstLqGmyQz088DvFlDYHg0sHih+w2QeulreCi1D1ftr357klO2zqHdG/bbnNMmuQdVFDuNkopNIyNhmG0XCT/g==", "integrity": "sha512-0p1wkSlA2Ue3FA4qW+5LZ+15sy0p1nUyVl1eyBMLq4rtN1LtE9IdI49BXNWMz8N8bM/y7Ulx8SWGAni5f8XO5g==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"is-valid-element-name": "^1.0.0", "is-valid-element-name": "^1.0.0",
"js-levenshtein-esm": "^1.2.0" "js-levenshtein-esm": "^2.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"eslint": ">=8.40.0" "eslint": ">=8.40.0"
@ -2696,9 +2703,9 @@
"peer": true "peer": true
}, },
"node_modules/js-levenshtein-esm": { "node_modules/js-levenshtein-esm": {
"version": "1.2.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/js-levenshtein-esm/-/js-levenshtein-esm-1.2.0.tgz", "resolved": "https://registry.npmjs.org/js-levenshtein-esm/-/js-levenshtein-esm-2.0.0.tgz",
"integrity": "sha512-fzreKVq1eD7eGcQr7MtRpQH94f8gIfhdrc7yeih38xh684TNMK9v5aAu2wxfIRMk/GpAJRrzcirMAPIaSDaByQ==", "integrity": "sha512-1n4LEPOL4wRXY8rOQcuA7Iuaphe5xCMayvufCzlLAi+hRsnBRDbSS6XPuV58CBVJxj5D9ApFLyjQ7KzFToyHBw==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/js-tokens": { "node_modules/js-tokens": {
@ -3273,18 +3280,30 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/react": { "node_modules/react": {
"version": "18.3.1", "version": "19.1.0",
"resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz",
"integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==",
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"dependencies": { "peer": true,
"loose-envify": "^1.1.0"
},
"engines": { "engines": {
"node": ">=0.10.0" "node": ">=0.10.0"
} }
}, },
"node_modules/react-dom": {
"version": "19.1.0",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz",
"integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==",
"license": "MIT",
"optional": true,
"peer": true,
"dependencies": {
"scheduler": "^0.26.0"
},
"peerDependencies": {
"react": "^19.1.0"
}
},
"node_modules/react-is": { "node_modules/react-is": {
"version": "16.13.1", "version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
@ -3333,15 +3352,6 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/requireindex": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz",
"integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==",
"license": "MIT",
"engines": {
"node": ">=0.10.5"
}
},
"node_modules/resolve": { "node_modules/resolve": {
"version": "1.22.10", "version": "1.22.10",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
@ -3458,6 +3468,14 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/scheduler": {
"version": "0.26.0",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz",
"integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==",
"license": "MIT",
"optional": true,
"peer": true
},
"node_modules/semver": { "node_modules/semver": {
"version": "6.3.1", "version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
@ -4000,15 +4018,15 @@
} }
}, },
"node_modules/typescript-eslint": { "node_modules/typescript-eslint": {
"version": "8.29.1", "version": "8.32.1",
"resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.29.1.tgz", "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.32.1.tgz",
"integrity": "sha512-f8cDkvndhbQMPcysk6CUSGBWV+g1utqdn71P5YKwMumVMOG/5k7cHq0KyG4O52nB0oKS4aN2Tp5+wB4APJGC+w==", "integrity": "sha512-D7el+eaDHAmXvrZBy1zpzSNIRqnCOrkwTgZxTu3MUqRWk8k0q9m9Ho4+vPf7iHtgUfrK/o8IZaEApsxPlHTFCg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/eslint-plugin": "8.29.1", "@typescript-eslint/eslint-plugin": "8.32.1",
"@typescript-eslint/parser": "8.29.1", "@typescript-eslint/parser": "8.32.1",
"@typescript-eslint/utils": "8.29.1" "@typescript-eslint/utils": "8.32.1"
}, },
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"

View File

@ -1,6 +1,6 @@
{ {
"name": "@goauthentik/eslint-config", "name": "@goauthentik/eslint-config",
"version": "1.0.4", "version": "1.0.5",
"description": "authentik's ESLint config", "description": "authentik's ESLint config",
"license": "MIT", "license": "MIT",
"scripts": { "scripts": {
@ -27,26 +27,25 @@
} }
}, },
"dependencies": { "dependencies": {
"eslint": "^9.23.0", "eslint": "^9.27.0",
"eslint-plugin-import": "^2.31.0", "eslint-plugin-import": "^2.31.0",
"eslint-plugin-lit": "^1.15.0", "eslint-plugin-lit": "^2.1.1",
"eslint-plugin-react": "^7.37.4", "eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-wc": "^2.1.1" "eslint-plugin-wc": "^3.0.1"
}, },
"devDependencies": { "devDependencies": {
"@goauthentik/prettier-config": "^1.0.1", "@goauthentik/prettier-config": "^1.0.1",
"@goauthentik/tsconfig": "^1.0.1", "@goauthentik/tsconfig": "^1.0.1",
"@types/eslint": "^9.6.1", "@types/eslint": "^9.6.1",
"typescript": "^5.8.2", "typescript": "^5.8.3",
"typescript-eslint": "^8.29.0" "typescript-eslint": "^8.32.1"
}, },
"peerDependencies": { "peerDependencies": {
"typescript": "^5.8.2", "react": "^18.0.0 || ^19.0.0",
"typescript-eslint": "^8.29.0" "react-dom": "^18.0.0 || ^19.0.0",
}, "typescript": "^5.8.3",
"optionalDependencies": { "typescript-eslint": "^8.32.1"
"react": "^18.3.1"
}, },
"engines": { "engines": {
"node": ">=20.11" "node": ">=20.11"
@ -58,6 +57,14 @@
"out/**/*" "out/**/*"
], ],
"prettier": "@goauthentik/prettier-config", "prettier": "@goauthentik/prettier-config",
"peerDependenciesMeta": {
"react": {
"optional": true
},
"react-dom": {
"optional": true
}
},
"publishConfig": { "publishConfig": {
"access": "public" "access": "public"
} }

View File

@ -1,19 +1,19 @@
{ {
"name": "@goauthentik/prettier-config", "name": "@goauthentik/prettier-config",
"version": "1.0.1", "version": "1.0.4",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@goauthentik/prettier-config", "name": "@goauthentik/prettier-config",
"version": "1.0.1", "version": "1.0.4",
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
"@goauthentik/tsconfig": "^1.0.1", "@goauthentik/tsconfig": "^1.0.1",
"@trivago/prettier-plugin-sort-imports": "^5.2.2", "@trivago/prettier-plugin-sort-imports": "^5.2.2",
"prettier": "^3.5.3", "prettier": "^3.5.3",
"prettier-plugin-organize-imports": "^4.1.0", "prettier-plugin-organize-imports": "^4.1.0",
"prettier-plugin-packagejson": "^2.5.10", "prettier-plugin-packagejson": "^2.5.14",
"typescript": "^5.8.2" "typescript": "^5.8.2"
}, },
"engines": { "engines": {
@ -23,7 +23,7 @@
"@trivago/prettier-plugin-sort-imports": "^5.2.2", "@trivago/prettier-plugin-sort-imports": "^5.2.2",
"prettier": "^3.5.3", "prettier": "^3.5.3",
"prettier-plugin-organize-imports": "^4.1.0", "prettier-plugin-organize-imports": "^4.1.0",
"prettier-plugin-packagejson": "^2.5.10" "prettier-plugin-packagejson": "^2.5.14"
} }
}, },
"node_modules/@babel/code-frame": { "node_modules/@babel/code-frame": {
@ -206,16 +206,16 @@
} }
}, },
"node_modules/@pkgr/core": { "node_modules/@pkgr/core": {
"version": "0.1.2", "version": "0.2.4",
"resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.2.tgz", "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.4.tgz",
"integrity": "sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ==", "integrity": "sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": "^12.20.0 || ^14.18.0 || >=16.0.0" "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
}, },
"funding": { "funding": {
"url": "https://opencollective.com/unts" "url": "https://opencollective.com/pkgr"
} }
}, },
"node_modules/@trivago/prettier-plugin-sort-imports": { "node_modules/@trivago/prettier-plugin-sort-imports": {
@ -295,9 +295,9 @@
} }
}, },
"node_modules/fdir": { "node_modules/fdir": {
"version": "6.4.3", "version": "6.4.4",
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz",
"integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==", "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peerDependencies": { "peerDependencies": {
@ -309,23 +309,10 @@
} }
} }
}, },
"node_modules/get-stdin": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz",
"integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/git-hooks-list": { "node_modules/git-hooks-list": {
"version": "3.2.0", "version": "4.1.1",
"resolved": "https://registry.npmjs.org/git-hooks-list/-/git-hooks-list-3.2.0.tgz", "resolved": "https://registry.npmjs.org/git-hooks-list/-/git-hooks-list-4.1.1.tgz",
"integrity": "sha512-ZHG9a1gEhUMX1TvGrLdyWb9kDopCBbTnI8z4JgRMYxsijWipgjSEYoPWqBuIB0DnRnvqlQSEeVmzpeuPm7NdFQ==", "integrity": "sha512-cmP497iLq54AZnv4YRAEMnEyQ1eIn4tGKbmswqwmFV4GBnAqE8NLtWxxdXa++AalfgL5EBH4IxTPyquEuGY/jA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"funding": { "funding": {
@ -450,14 +437,14 @@
} }
}, },
"node_modules/prettier-plugin-packagejson": { "node_modules/prettier-plugin-packagejson": {
"version": "2.5.10", "version": "2.5.14",
"resolved": "https://registry.npmjs.org/prettier-plugin-packagejson/-/prettier-plugin-packagejson-2.5.10.tgz", "resolved": "https://registry.npmjs.org/prettier-plugin-packagejson/-/prettier-plugin-packagejson-2.5.14.tgz",
"integrity": "sha512-LUxATI5YsImIVSaaLJlJ3aE6wTD+nvots18U3GuQMJpUyClChaZlQrqx3dBnbhF20OnKWZyx8EgyZypQtBDtgQ==", "integrity": "sha512-h+3tSpr2nVpp+YOK1MDIYtYhHVXr8/0V59UUbJpIJFaqi3w4fvUokJo6eV8W+vELrUXIZzJ+DKm5G7lYzrMcKQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"sort-package-json": "2.15.1", "sort-package-json": "3.2.1",
"synckit": "0.9.2" "synckit": "0.11.6"
}, },
"peerDependencies": { "peerDependencies": {
"prettier": ">= 1.16.0" "prettier": ">= 1.16.0"
@ -469,9 +456,9 @@
} }
}, },
"node_modules/semver": { "node_modules/semver": {
"version": "7.7.1", "version": "7.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
"integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
"dev": true, "dev": true,
"license": "ISC", "license": "ISC",
"bin": { "bin": {
@ -489,50 +476,48 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/sort-package-json": { "node_modules/sort-package-json": {
"version": "2.15.1", "version": "3.2.1",
"resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-2.15.1.tgz", "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-3.2.1.tgz",
"integrity": "sha512-9x9+o8krTT2saA9liI4BljNjwAbvUnWf11Wq+i/iZt8nl2UGYnf3TH5uBydE7VALmP7AGwlfszuEeL8BDyb0YA==", "integrity": "sha512-rTfRdb20vuoAn7LDlEtCqOkYfl2X+Qze6cLbNOzcDpbmKEhJI30tTN44d5shbKJnXsvz24QQhlCm81Bag7EOKg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"detect-indent": "^7.0.1", "detect-indent": "^7.0.1",
"detect-newline": "^4.0.0", "detect-newline": "^4.0.1",
"get-stdin": "^9.0.0", "git-hooks-list": "^4.0.0",
"git-hooks-list": "^3.0.0",
"is-plain-obj": "^4.1.0", "is-plain-obj": "^4.1.0",
"semver": "^7.6.0", "semver": "^7.7.1",
"sort-object-keys": "^1.1.3", "sort-object-keys": "^1.1.3",
"tinyglobby": "^0.2.9" "tinyglobby": "^0.2.12"
}, },
"bin": { "bin": {
"sort-package-json": "cli.js" "sort-package-json": "cli.js"
} }
}, },
"node_modules/synckit": { "node_modules/synckit": {
"version": "0.9.2", "version": "0.11.6",
"resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.6.tgz",
"integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==", "integrity": "sha512-2pR2ubZSV64f/vqm9eLPz/KOvR9Dm+Co/5ChLgeHl0yEDRc6h5hXHoxEQH8Y5Ljycozd3p1k5TTSVdzYGkPvLw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@pkgr/core": "^0.1.0", "@pkgr/core": "^0.2.4"
"tslib": "^2.6.2"
}, },
"engines": { "engines": {
"node": "^14.18.0 || >=16.0.0" "node": "^14.18.0 || >=16.0.0"
}, },
"funding": { "funding": {
"url": "https://opencollective.com/unts" "url": "https://opencollective.com/synckit"
} }
}, },
"node_modules/tinyglobby": { "node_modules/tinyglobby": {
"version": "0.2.12", "version": "0.2.13",
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz",
"integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==", "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"fdir": "^6.4.3", "fdir": "^6.4.4",
"picomatch": "^4.0.2" "picomatch": "^4.0.2"
}, },
"engines": { "engines": {
@ -542,13 +527,6 @@
"url": "https://github.com/sponsors/SuperchupuDev" "url": "https://github.com/sponsors/SuperchupuDev"
} }
}, },
"node_modules/tslib": {
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
"dev": true,
"license": "0BSD"
},
"node_modules/typescript": { "node_modules/typescript": {
"version": "5.8.3", "version": "5.8.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",

View File

@ -1,32 +1,26 @@
{ {
"name": "@goauthentik/prettier-config", "name": "@goauthentik/prettier-config",
"version": "1.0.4", "version": "1.0.5",
"description": "authentik's Prettier config", "description": "authentik's Prettier config",
"license": "MIT", "license": "MIT",
"scripts": { "scripts": {
"build": "tsc -p ." "build": "tsc -p ."
}, },
"type": "module", "type": "module",
"exports": { "exports": "./index.js",
"./package.json": "./package.json",
".": {
"import": "./index.js",
"types": "./out/index.d.ts"
}
},
"devDependencies": { "devDependencies": {
"@goauthentik/tsconfig": "^1.0.1", "@goauthentik/tsconfig": "^1.0.1",
"@trivago/prettier-plugin-sort-imports": "^5.2.2", "@trivago/prettier-plugin-sort-imports": "^5.2.2",
"prettier": "^3.5.3", "prettier": "^3.5.3",
"prettier-plugin-organize-imports": "^4.1.0", "prettier-plugin-organize-imports": "^4.1.0",
"prettier-plugin-packagejson": "^2.5.10", "prettier-plugin-packagejson": "^2.5.14",
"typescript": "^5.8.2" "typescript": "^5.8.2"
}, },
"peerDependencies": { "peerDependencies": {
"@trivago/prettier-plugin-sort-imports": "^5.2.2", "@trivago/prettier-plugin-sort-imports": "^5.2.2",
"prettier": "^3.5.3", "prettier": "^3.5.3",
"prettier-plugin-organize-imports": "^4.1.0", "prettier-plugin-organize-imports": "^4.1.0",
"prettier-plugin-packagejson": "^2.5.10" "prettier-plugin-packagejson": "^2.5.14"
}, },
"engines": { "engines": {
"node": ">=20.11" "node": ">=20.11"

View File

@ -1,91 +1,56 @@
import eslint from "@eslint/js"; import { createESLintPackageConfig } from "@goauthentik/eslint-config";
import tsparser from "@typescript-eslint/parser";
import litconf from "eslint-plugin-lit";
import wcconf from "eslint-plugin-wc";
import globals from "globals";
import tseslint from "typescript-eslint"; import tseslint from "typescript-eslint";
export default [ // @ts-check
// You would not believe how much this change has frustrated users: ["if an ignores key is used
// without any other keys in the configuration object, then the patterns act as global /**
// ignores"](https://eslint.org/docs/latest/use/configure/ignore) * ESLint configuration for authentik's monorepo.
{ */
ignores: [ const ESLintConfig = createESLintPackageConfig({
"dist/", ignorePatterns: [
"out/", "**/dist/**",
// don't lint the cache "**/out/**",
".wireit/", "**/.wireit/**",
// let packages have their own configurations "**/node_modules/",
"packages/", "**/.storybook/*",
// don't ever lint node_modules
"node_modules/",
".storybook/*",
// don't lint build output (make sure it's set to your correct build folder name)
// don't lint nyc coverage output
"coverage/", "coverage/",
"src/locale-codes.ts", "src/locale-codes.ts",
"storybook-static/", "storybook-static/",
"src/locales/", "src/locales/",
], ],
}, });
eslint.configs.recommended,
wcconf.configs["flat/recommended"], export default tseslint.config(
litconf.configs["flat/recommended"], ...ESLintConfig,
...tseslint.configs.recommended,
{ {
languageOptions: {
parser: tsparser,
parserOptions: {
ecmaVersion: 12,
sourceType: "module",
},
},
files: ["src/**"],
rules: { rules: {
"lit/attribute-names": "off",
// "lit/attribute-names": "error",
"lit/no-private-properties": "error",
// "lit/prefer-nothing": "warn",
"lit/no-template-bind": "error",
"no-unused-vars": "off",
"no-console": ["error", { allow: ["debug", "warn", "error"] }],
"@typescript-eslint/ban-ts-comment": "off",
"@typescript-eslint/no-unused-vars": [
"error",
{
argsIgnorePattern: "^_",
varsIgnorePattern: "^_",
caughtErrorsIgnorePattern: "^_",
},
],
},
},
{
languageOptions: {
parser: tsparser,
parserOptions: {
ecmaVersion: 12,
sourceType: "module",
},
globals: {
...globals.nodeBuiltin,
...globals.node,
},
},
files: ["scripts/**/*.mjs", "*.ts", "*.mjs", "**/node.js"],
rules: {
"no-unused-vars": "off",
// We WANT our scripts to output to the console!
"no-console": "off", "no-console": "off",
"@typescript-eslint/ban-ts-comment": "off", },
"@typescript-eslint/no-unused-vars": [ files: ["packages/**/*"],
"error", },
{ {
argsIgnorePattern: "^_", rules: {
varsIgnorePattern: "^_", "no-void": "off",
caughtErrorsIgnorePattern: "^_", "no-implicit-coercion": "off",
}, "prefer-template": "off",
], "@typescript-eslint/ban-ts-comment": "off",
"@typescript-eslint/no-unused-vars": "off",
"@typescript-eslint/no-use-before-define": "off",
"array-callback-return": "off",
"block-scoped-var": "off",
"consistent-return": "off",
"func-names": "off",
"guard-for-in": "off",
"no-bitwise": "off",
"no-div-regex": "off",
"no-else-return": "off",
"no-empty-function": "off",
"no-param-reassign": "off",
"no-throw-literal": "off",
// "no-var": "off",
"prefer-arrow-callback": "off",
"react/jsx-no-leaked-render": "off",
"vars-on-top": "off",
}, },
}, },
]; );

2707
web/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -8,21 +8,20 @@
"build-locales": "wireit", "build-locales": "wireit",
"build-locales:build": "wireit", "build-locales:build": "wireit",
"build-proxy": "wireit", "build-proxy": "wireit",
"build:sfe": "wireit", "build:sfe": "npm run build -w @goauthentik/web-sfe",
"esbuild:watch": "node scripts/build-web.mjs --watch", "esbuild:watch": "node scripts/build-web.mjs --watch",
"extract-locales": "wireit", "extract-locales": "wireit",
"format": "wireit", "format": "wireit",
"lint": "wireit", "lint": "eslint --fix .",
"lint:imports": "wireit", "lint-check": "eslint --max-warnings 0 .",
"prettier": "prettier --cache --write -u .",
"prettier-check": "prettier --cache --check -u .",
"lint:imports": "knip --config scripts/knip.config.ts",
"lint:lockfile": "wireit", "lint:lockfile": "wireit",
"lint:nightmare": "wireit",
"lint:precommit": "wireit",
"lint:types": "wireit", "lint:types": "wireit",
"lit-analyse": "wireit", "lit-analyse": "wireit",
"precommit": "wireit", "precommit": "wireit",
"prettier": "wireit", "pseudolocalize": "node ./scripts/pseudolocalize.mjs",
"prettier-check": "wireit",
"pseudolocalize": "wireit",
"storybook": "storybook dev -p 6006", "storybook": "storybook dev -p 6006",
"storybook:build": "wireit", "storybook:build": "wireit",
"test": "wireit", "test": "wireit",
@ -123,8 +122,8 @@
"md-front-matter": "^1.0.4", "md-front-matter": "^1.0.4",
"mermaid": "^11.4.1", "mermaid": "^11.4.1",
"rapidoc": "^9.3.8", "rapidoc": "^9.3.8",
"react": "^18.3.1", "react": "^19.1.0",
"react-dom": "^18.3.1", "react-dom": "^19.1.0",
"rehype-highlight": "^7.0.2", "rehype-highlight": "^7.0.2",
"rehype-mermaid": "^3.0.0", "rehype-mermaid": "^3.0.0",
"rehype-parse": "^9.0.1", "rehype-parse": "^9.0.1",
@ -141,16 +140,16 @@
"yaml": "^2.5.1" "yaml": "^2.5.1"
}, },
"devDependencies": { "devDependencies": {
"@eslint/js": "^9.11.1", "@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.4",
"@goauthentik/eslint-config": "^1.0.4",
"@goauthentik/prettier-config": "^1.0.4", "@goauthentik/prettier-config": "^1.0.4",
"@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",
"@rollup/plugin-replace": "^6.0.1",
"@storybook/addon-essentials": "^8.6.14", "@storybook/addon-essentials": "^8.6.14",
"@storybook/addon-links": "^8.6.12", "@storybook/addon-links": "^8.6.14",
"@storybook/blocks": "^8.6.12", "@storybook/blocks": "^8.6.12",
"@storybook/experimental-addon-test": "^8.6.14", "@storybook/experimental-addon-test": "^8.6.14",
"@storybook/manager-api": "^8.6.14", "@storybook/manager-api": "^8.6.14",
@ -161,26 +160,25 @@
"@types/chart.js": "^2.9.41", "@types/chart.js": "^2.9.41",
"@types/codemirror": "^5.60.15", "@types/codemirror": "^5.60.15",
"@types/dompurify": "^3.0.5", "@types/dompurify": "^3.0.5",
"@types/eslint__js": "^8.42.3",
"@types/grecaptcha": "^3.0.9", "@types/grecaptcha": "^3.0.9",
"@types/guacamole-common-js": "^1.5.2", "@types/guacamole-common-js": "^1.5.2",
"@types/mocha": "^10.0.8", "@types/mocha": "^10.0.8",
"@types/node": "^22.7.4", "@types/node": "^22.15.21",
"@types/react": "^18.3.13", "@types/react": "^19.1.5",
"@types/react-dom": "^18.3.0", "@types/react-dom": "^19.1.5",
"@typescript-eslint/eslint-plugin": "^8.8.0", "@typescript-eslint/eslint-plugin": "^8.8.0",
"@typescript-eslint/parser": "^8.8.0", "@typescript-eslint/parser": "^8.8.0",
"@wdio/browser-runner": "9.4", "@wdio/browser-runner": "9.4",
"@wdio/cli": "9.4", "@wdio/cli": "9.4",
"@wdio/spec-reporter": "^9.1.2", "@wdio/spec-reporter": "^9.1.2",
"chromedriver": "^131.0.1", "chromedriver": "^131.0.1",
"esbuild": "^0.25.0", "esbuild": "^0.25.4",
"esbuild-plugin-copy": "^2.1.1", "esbuild-plugin-copy": "^2.1.1",
"esbuild-plugin-polyfill-node": "^0.3.0", "esbuild-plugin-polyfill-node": "^0.3.0",
"esbuild-plugins-node-modules-polyfill": "^1.7.0", "esbuild-plugins-node-modules-polyfill": "^1.7.0",
"eslint": "^9.11.1", "eslint": "^9.11.1",
"eslint-plugin-lit": "^1.15.0", "eslint-plugin-lit": "^2.1.1",
"eslint-plugin-wc": "^2.1.1", "eslint-plugin-wc": "^3.0.1",
"github-slugger": "^2.0.0", "github-slugger": "^2.0.0",
"globals": "^15.10.0", "globals": "^15.10.0",
"knip": "^5.30.6", "knip": "^5.30.6",
@ -188,23 +186,23 @@
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"prettier": "^3.3.3", "prettier": "^3.3.3",
"pseudolocale": "^2.1.0", "pseudolocale": "^2.1.0",
"rollup-plugin-postcss-lit": "^2.1.0", "rollup-plugin-postcss-lit": "^2.2.0",
"storybook": "^8.6.14", "storybook": "^8.6.14",
"storybook-addon-mock": "^5.0.0", "storybook-addon-mock": "^5.0.0",
"turnstile-types": "^1.2.3", "turnstile-types": "^1.2.3",
"typescript": "^5.8.3", "typescript": "^5.8.3",
"typescript-eslint": "^8.8.0", "typescript-eslint": "^8.32.1",
"vite-plugin-lit-css": "^2.0.0", "vite-plugin-lit-css": "^2.0.0",
"vite-tsconfig-paths": "^5.0.1", "vite-tsconfig-paths": "^5.0.1",
"wireit": "^0.14.9" "wireit": "^0.14.9"
}, },
"optionalDependencies": { "optionalDependencies": {
"@esbuild/darwin-arm64": "^0.24.0", "@esbuild/darwin-arm64": "^0.25.4",
"@esbuild/linux-arm64": "^0.24.0", "@esbuild/linux-arm64": "^0.25.4",
"@esbuild/linux-x64": "^0.24.0", "@esbuild/linux-x64": "^0.25.4",
"@rollup/rollup-darwin-arm64": "4.23.0", "@rollup/rollup-darwin-arm64": "^4.41.0",
"@rollup/rollup-linux-arm64-gnu": "4.23.0", "@rollup/rollup-linux-arm64-gnu": "^4.41.0",
"@rollup/rollup-linux-x64-gnu": "4.23.0" "@rollup/rollup-linux-x64-gnu": "^4.41.0"
}, },
"wireit": { "wireit": {
"build": { "build": {
@ -239,7 +237,7 @@
], ],
"dependencies": [ "dependencies": [
"build-locales", "build-locales",
"./packages/sfe:build" "build:sfe"
], ],
"env": { "env": {
"NODE_RUNNER": { "NODE_RUNNER": {
@ -248,14 +246,6 @@
} }
} }
}, },
"build:sfe": {
"dependencies": [
"./packages/sfe:build"
],
"files": [
"./packages/sfe/**/*.ts"
]
},
"build-proxy": { "build-proxy": {
"command": "node scripts/build-web.mjs --proxy", "command": "node scripts/build-web.mjs --proxy",
"dependencies": [ "dependencies": [
@ -281,31 +271,17 @@
"extract-locales": { "extract-locales": {
"command": "lit-localize extract" "command": "lit-localize extract"
}, },
"format": {
"command": "prettier --write ."
},
"format:packages": {
"dependencies": [
"./packages/sfe:prettier"
]
},
"lint": {
"command": "eslint --max-warnings 0 --fix",
"env": {
"NODE_OPTIONS": "--max_old_space_size=65536"
}
},
"lint:components": { "lint:components": {
"command": "lit-analyzer src" "command": "lit-analyzer src"
}, },
"lint:imports": {
"command": "knip --config scripts/knip.config.ts"
},
"lint:types:tests": { "lint:types:tests": {
"command": "tsc --noEmit -p ./tests" "command": "tsc --noEmit -p ./tests"
}, },
"lint:types": { "lint:types": {
"command": "NODE_OPTIONS=\"--max-old-space-size=3000\" tsc -b .", "command": "tsc -p .",
"env": {
"NODE_OPTIONS": "--max_old_space_size=8192"
},
"dependencies": [ "dependencies": [
"build-locales", "build-locales",
"lint:types:tests" "lint:types:tests"
@ -316,58 +292,19 @@
"shell": true, "shell": true,
"command": "sh ./scripts/lint-lockfile.sh package-lock.json" "command": "sh ./scripts/lint-lockfile.sh package-lock.json"
}, },
"lint:lockfiles": {
"dependencies": [
"./packages/sfe:lint:lockfile"
]
},
"lint:nightmare": {
"command": "${NODE_RUNNER} ./scripts/eslint.mjs --nightmare",
"env": {
"NODE_RUNNER": {
"external": true,
"default": "node"
}
}
},
"lint:precommit": {
"command": "${NODE_RUNNER} ./scripts/eslint.mjs --precommit",
"env": {
"NODE_RUNNER": {
"external": true,
"default": "node"
}
}
},
"lint:spelling": {
"command": "node scripts/check-spelling.mjs"
},
"lit-analyse": { "lit-analyse": {
"command": "lit-analyzer src" "command": "lit-analyzer src"
}, },
"precommit": { "precommit": {
"command": "prettier --write .", "command": "prettier --write .",
"dependencies": [ "dependencies": [
"lint",
"lint:types", "lint:types",
"lint:components", "lint:components",
"lint:spelling",
"lint:lockfile", "lint:lockfile",
"lint:lockfiles", "lint:lockfiles"
"lint:precommit",
"format:packages"
] ]
}, },
"prettier": {
"dependencies": [
"format"
]
},
"prettier-check": {
"command": "prettier --check ."
},
"pseudolocalize": {
"command": "node scripts/pseudolocalize.mjs"
},
"storybook:build": { "storybook:build": {
"command": "storybook build", "command": "storybook build",
"env": { "env": {
@ -410,8 +347,12 @@
} }
}, },
"tsc": { "tsc": {
"command": "tsc -p .",
"env": {
"NODE_OPTIONS": "--max_old_space_size=8192"
},
"dependencies": [ "dependencies": [
"lint:types" "build-locales"
] ]
} }
}, },
@ -423,9 +364,17 @@
], ],
"prettier": "@goauthentik/prettier-config", "prettier": "@goauthentik/prettier-config",
"overrides": { "overrides": {
"@storybook/addon-docs": {
"react": "^19.1.0",
"react-dom": "^19.1.0"
},
"chromedriver": { "chromedriver": {
"axios": "^1.8.4" "axios": "^1.8.4"
}, },
"storybook-addon-mock": {
"react": "^19.1.0",
"react-dom": "^19.1.0"
},
"rapidoc": { "rapidoc": {
"@apitools/openapi-parser@": "0.0.37" "@apitools/openapi-parser@": "0.0.37"
} }

View File

@ -47,9 +47,9 @@
"devDependencies": { "devDependencies": {
"@goauthentik/prettier-config": "^1.0.4", "@goauthentik/prettier-config": "^1.0.4",
"@goauthentik/tsconfig": "^1.0.4", "@goauthentik/tsconfig": "^1.0.4",
"@types/node": "^22.14.1", "@types/node": "^22.15.21",
"prettier": "^3.3.3", "prettier": "^3.3.3",
"typescript": "^5.6.2" "typescript": "^5.6.3"
}, },
"engines": { "engines": {
"node": ">=20.11" "node": ">=20.11"

View File

@ -0,0 +1,40 @@
# `@goauthentik/esbuild-plugin-live-reload`
_A plugin that enables live reloading of ESBuild during development._
## Usage
### Node.js setup
```js
import { liveReloadPlugin } from "@goauthentik/esbuild-plugin-live-reload";
import esbuild from "esbuild";
const NodeEnvironment = process.env.NODE_ENV || "development";
/**
* @type {esbuild.BuildOptions}
*/
const buildOptions = {
// ... Your build options.
define: {
"process.env.NODE_ENV": JSON.stringify(NodeEnvironment),
},
plugins: [liveReloadPlugin(/** @see {@link LiveReloadPluginOptions} */)],
};
const buildContext = await esbuild.context(buildOptions);
await buildContext.rebuild();
await buildContext.watch();
```
### Browser setup
```js
// Place this at the beginning of your application's entry point.
if (process.env.NODE_ENV === "development") {
await import("@goauthentik/esbuild-plugin-live-reload/client");
}
```

File diff suppressed because it is too large Load Diff

View File

@ -4,6 +4,9 @@
"description": "ESBuild plugin to watch for file changes and trigger client-side reloads.", "description": "ESBuild plugin to watch for file changes and trigger client-side reloads.",
"license": "MIT", "license": "MIT",
"private": true, "private": true,
"scripts": {
"build": "tsc -p ."
},
"main": "index.js", "main": "index.js",
"type": "module", "type": "module",
"exports": { "exports": {
@ -28,16 +31,17 @@
"@goauthentik/prettier-config": "^1.0.4", "@goauthentik/prettier-config": "^1.0.4",
"@goauthentik/tsconfig": "^1.0.4", "@goauthentik/tsconfig": "^1.0.4",
"@trivago/prettier-plugin-sort-imports": "^5.2.2", "@trivago/prettier-plugin-sort-imports": "^5.2.2",
"@types/node": "^22.14.1", "@types/node": "^22.15.21",
"esbuild": "^0.25.0", "esbuild": "^0.25.4",
"prettier": "^3.3.3", "prettier": "^3.5.3",
"typescript": "^5.6.2" "prettier-plugin-packagejson": "^2.5.14",
"typescript": "^5.8.3"
}, },
"peerDependencies": { "peerDependencies": {
"esbuild": "^0.25.0" "esbuild": "^0.25.4"
}, },
"engines": { "engines": {
"node": ">=20.11" "node": ">=22.15.1"
}, },
"types": "./out/index.d.ts", "types": "./out/index.d.ts",
"files": [ "files": [

View File

@ -67,7 +67,6 @@ async function findDisparatePort() {
* @category ESBuild * @category ESBuild
*/ */
export function createRequestHandler({ pathname, dispatcher, logPrefix = "Build Observer" }) { export function createRequestHandler({ pathname, dispatcher, logPrefix = "Build Observer" }) {
// eslint-disable-next-line no-console
const log = console.log.bind(console, `[${logPrefix}]`); const log = console.log.bind(console, `[${logPrefix}]`);
/** /**
@ -130,19 +129,20 @@ export function createRequestHandler({ pathname, dispatcher, logPrefix = "Build
/** /**
* Options for the build observer plugin. * Options for the build observer plugin.
* *
* @typedef {object} BuildObserverOptions * @typedef {object} LiveReloadPluginOptions
* *
* @property {HTTPServer | HTTPSServer} [server] * @property {HTTPServer | HTTPSServer} [server] A server to listen on. If not provided, a new server will be created.
* @property {ListenOptions} [listenOptions] * @property {ListenOptions} [listenOptions] Options for the server's listen method.
* @property {string | URL} [publicURL] * @property {string | URL} [publicURL] A URL to listen on. If not provided, a random port will be used.
* @property {string} [logPrefix] * @property {string} [logPrefix] A prefix to use for log messages.
* @property {string} [relativeRoot] * @property {string} [relativeRoot] A relative path to the root of the project. This is used to resolve build errors, line numbers, and file paths.
*/ */
/** /**
* Creates a plugin that listens for build events and sends them to a server-sent event stream. * Creates a plugin that listens for build events and sends them to a server-sent event stream.
* *
* @param {BuildObserverOptions} [options] * @param {
* } [options]
* @returns {import('esbuild').Plugin} * @returns {import('esbuild').Plugin}
*/ */
export function liveReloadPlugin(options = {}) { export function liveReloadPlugin(options = {}) {
@ -177,6 +177,10 @@ export function liveReloadPlugin(options = {}) {
"import.meta.env.ESBUILD_WATCHER_URL": JSON.stringify(publicURL.href), "import.meta.env.ESBUILD_WATCHER_URL": JSON.stringify(publicURL.href),
}; };
build.initialOptions.define["process.env.NODE_ENV"] ??= JSON.stringify(
process.env.NODE_ENV || "development",
);
const requestHandler = createRequestHandler({ const requestHandler = createRequestHandler({
pathname: publicURL.pathname, pathname: publicURL.pathname,
dispatcher, dispatcher,
@ -191,7 +195,6 @@ export function liveReloadPlugin(options = {}) {
}; };
server.listen(listenOptions, () => { server.listen(listenOptions, () => {
// eslint-disable-next-line no-console
console.log(`[${logPrefix}] Listening`); console.log(`[${logPrefix}] Listening`);
}); });
@ -241,3 +244,5 @@ export function liveReloadPlugin(options = {}) {
}, },
}; };
} }
export default liveReloadPlugin;

View File

@ -1,23 +0,0 @@
{
"arrowParens": "always",
"bracketSpacing": true,
"embeddedLanguageFormatting": "auto",
"htmlWhitespaceSensitivity": "css",
"insertPragma": false,
"jsxSingleQuote": false,
"printWidth": 100,
"proseWrap": "preserve",
"quoteProps": "consistent",
"requirePragma": false,
"semi": true,
"singleQuote": false,
"tabWidth": 4,
"trailingComma": "all",
"useTabs": false,
"vueIndentScriptAndStyle": false,
"plugins": ["@trivago/prettier-plugin-sort-imports"],
"importOrder": ["^(@?)lit(.*)$", "\\.css$", "^@goauthentik/api$", "^[./]"],
"importOrderSeparation": true,
"importOrderSortSpecifiers": true,
"importOrderParserPlugins": ["typescript", "classProperties", "decorators-legacy"]
}

View File

@ -1,6 +1,14 @@
{ {
"name": "@goauthentik/web-sfe", "name": "@goauthentik/web-sfe",
"version": "0.0.0", "version": "0.0.0",
"license": "MIT",
"private": true,
"scripts": {
"build": "rollup -c rollup.config.mjs --bundleConfigAsCjs",
"prettier": "prettier --cache --write -u .",
"prettier-check": "prettier --cache --check -u .",
"watch": "rollup -w -c rollup.config.mjs --bundleConfigAsCjs"
},
"dependencies": { "dependencies": {
"@goauthentik/api": "^2024.6.0-1719577139", "@goauthentik/api": "^2024.6.0-1719577139",
"base64-js": "^1.5.1", "base64-js": "^1.5.1",
@ -10,19 +18,17 @@
"weakmap-polyfill": "^2.0.4" "weakmap-polyfill": "^2.0.4"
}, },
"devDependencies": { "devDependencies": {
"@goauthentik/core": "^1.0.0",
"@rollup/plugin-commonjs": "^28.0.0", "@rollup/plugin-commonjs": "^28.0.0",
"@rollup/plugin-node-resolve": "^15.3.0", "@rollup/plugin-node-resolve": "^15.3.0",
"@rollup/plugin-swc": "^0.4.0", "@rollup/plugin-swc": "^0.4.0",
"@swc/cli": "^0.4.0", "@swc/cli": "^0.4.0",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@trivago/prettier-plugin-sort-imports": "^4.3.0", "@trivago/prettier-plugin-sort-imports": "^5.2.2",
"@types/jquery": "^3.5.31", "prettier": "^3.5.3",
"prettier": "^3.3.2",
"rollup": "^4.23.0", "rollup": "^4.23.0",
"rollup-plugin-copy": "^3.5.0", "rollup-plugin-copy": "^3.5.0"
"wireit": "^0.14.9"
}, },
"license": "MIT",
"optionalDependencies": { "optionalDependencies": {
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/core-darwin-arm64": "^1.6.13", "@swc/core-darwin-arm64": "^1.6.13",
@ -35,29 +41,5 @@
"@swc/core-win32-arm64-msvc": "^1.6.13", "@swc/core-win32-arm64-msvc": "^1.6.13",
"@swc/core-win32-ia32-msvc": "^1.6.13", "@swc/core-win32-ia32-msvc": "^1.6.13",
"@swc/core-win32-x64-msvc": "^1.6.13" "@swc/core-win32-x64-msvc": "^1.6.13"
},
"private": true,
"scripts": {
"build": "wireit",
"prettier": "prettier --write ./src ./tsconfig.json ./rollup.config.js ./package.json",
"watch": "rollup -w -c rollup.config.js --bundleConfigAsCjs"
},
"wireit": {
"build:sfe": {
"command": "rollup -c rollup.config.js --bundleConfigAsCjs",
"files": [
"../../node_modules/bootstrap/dist/css/bootstrap.min.css",
"src/index.ts"
],
"output": [
"./dist/sfe/*"
]
},
"build": {
"command": "mkdir -p ../../dist/sfe && cp -r dist/sfe/* ../../dist/sfe",
"dependencies": [
"build:sfe"
]
}
} }
} }

View File

@ -1,43 +0,0 @@
import commonjs from "@rollup/plugin-commonjs";
import resolve from "@rollup/plugin-node-resolve";
import swc from "@rollup/plugin-swc";
import copy from "rollup-plugin-copy";
export default {
input: "src/index.ts",
output: {
dir: "./dist/sfe",
format: "cjs",
},
context: "window",
plugins: [
copy({
targets: [
{
src: "../../node_modules/bootstrap/dist/css/bootstrap.min.css",
dest: "./dist/sfe",
},
],
}),
resolve({ browser: true }),
commonjs(),
swc({
swc: {
jsc: {
loose: false,
externalHelpers: false,
// Requires v1.2.50 or upper and requires target to be es2016 or upper.
keepClassNames: false,
},
minify: false,
env: {
targets: {
edge: "17",
ie: "11",
},
mode: "entry",
},
},
}),
],
};

View File

@ -0,0 +1,61 @@
/**
* @file Rollup configuration for the SFE package.
*/
import commonjs from "@rollup/plugin-commonjs";
import resolve from "@rollup/plugin-node-resolve";
import swc from "@rollup/plugin-swc";
import { resolve as resolvePath } from "node:path";
import copy from "rollup-plugin-copy";
export async function createConfig() {
// TODO: Move this to a synchronous import once the repo root has NPM Workspaces.
const { resolvePackage, MonoRepoRoot } = await import("@goauthentik/core/paths/node");
const distDirectory = resolvePath(MonoRepoRoot, "web", "dist", "sfe");
const bootstrapDirectory = resolvePackage("bootstrap", import.meta);
const config = {
input: "src/index.ts",
output: {
dir: distDirectory,
format: "cjs",
},
context: "window",
plugins: [
copy({
targets: [
{
src: resolvePath(bootstrapDirectory, "dist", "css", "bootstrap.min.css"),
dest: distDirectory,
},
],
}),
resolve({ browser: true }),
commonjs(),
swc({
swc: {
jsc: {
loose: false,
externalHelpers: false,
// Requires v1.2.50 or upper and requires target to be es2016 or upper.
keepClassNames: false,
},
minify: false,
env: {
targets: {
edge: "17",
ie: "11",
},
mode: "entry",
},
},
}),
],
};
return config;
}
console.log("Preparing SFE package...");
export default createConfig;

View File

@ -1,6 +1,9 @@
{ {
"compilerOptions": { "compilerOptions": {
"types": ["jquery"], "noEmit": true,
"baseUrl": ".",
"outDir": "out",
"types": [],
"esModuleInterop": true, "esModuleInterop": true,
"lib": ["DOM", "ES2015", "ES2017"] "lib": ["DOM", "ES2015", "ES2017"]
} }

42
web/packages/sfe/types/jquery.d.ts vendored Normal file
View File

@ -0,0 +1,42 @@
/**
* @file Minimal typings for jQuery.
*
* This file provides a small subset of the jQuery typings used in authentik's
* Simplified Flow Executor.
*
* Unlike the `@types/jquery` package, this package does not expose `$` as a global
* which causes issues with WebdriverIO.
*/
declare module "jquery" {
export function JQuery<TElement = HTMLElement>(selector: string): JQuery<TElement>;
export namespace JQuery {
function ajax(options: JQueryAjaxSettings): void;
}
export interface JQuery<TElement = HTMLElement> extends ArrayLike<TElement> {
getElements(): TElement[];
getElement(): TElement;
getText(): string;
submit(): void;
html(html: string): JQuery<TElement>;
addClass(className: string): JQuery<TElement>;
removeClass(className: string): JQuery<TElement>;
on(eventName: string, handler: (event: Event) => void): JQuery<TElement>;
trigger(eventName: string): void;
ajax(options: JQueryAjaxSettings): void;
}
export interface JQueryAjaxSettings {
url: string;
type?: string;
data?: string;
contentType?: string;
dataType?: string;
success?: (data: unknown) => void;
error?: (data: unknown) => void;
}
export default JQuery;
}

View File

@ -10,6 +10,7 @@
* 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"
* @import { Stats } from "fs";
*/ */
import { PackageRoot } from "#paths/node"; import { PackageRoot } from "#paths/node";
import { spawnSync } from "node:child_process"; import { spawnSync } from "node:child_process";
@ -37,16 +38,26 @@ function generatedFileIsUpToDateWithXliffSource(loc) {
// than the generated file. The missing XLF file is important enough it // than the generated file. The missing XLF file is important enough it
// generates a unique error message and halts the build. // generates a unique error message and halts the build.
/**
* @type {Stats}
*/
let xlfStat;
try { try {
var xlfStat = statSync(xliff); xlfStat = statSync(xliff);
} catch (_error) { } catch (_error) {
console.error(`lit-localize expected '${loc}.xlf', but XLF file is not present`); console.error(`lit-localize expected '${loc}.xlf', but XLF file is not present`);
process.exit(1); process.exit(1);
} }
/**
* @type {Stats}
*/
let genedStat;
// If the generated file doesn't exist, of course it's not up to date. // If the generated file doesn't exist, of course it's not up to date.
try { try {
var genedStat = statSync(gened); genedStat = statSync(gened);
} catch (_error) { } catch (_error) {
return false; return false;
} }

View File

@ -10,7 +10,6 @@ import { DistDirectory, DistDirectoryName, EntryPoint, PackageRoot } from "#path
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 { liveReloadPlugin } from "@goauthentik/esbuild-plugin-live-reload/plugin";
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";
@ -145,13 +144,17 @@ async function doWatch() {
console.groupEnd(); console.groupEnd();
const buildOptions = createESBuildOptions({ const developmentPlugins = await import("@goauthentik/esbuild-plugin-live-reload/plugin")
entryPoints, .then(({ liveReloadPlugin }) => [
plugins: [
liveReloadPlugin({ liveReloadPlugin({
relativeRoot: PackageRoot, relativeRoot: PackageRoot,
}), }),
], ])
.catch(() => []);
const buildOptions = createESBuildOptions({
entryPoints,
plugins: developmentPlugins,
}); });
const buildContext = await esbuild.context(buildOptions); const buildContext = await esbuild.context(buildOptions);
@ -162,7 +165,7 @@ async function doWatch() {
const httpURL = new URL("http://localhost"); const httpURL = new URL("http://localhost");
httpURL.port = process.env.COMPOSE_PORT_HTTP ?? "9000"; httpURL.port = process.env.COMPOSE_PORT_HTTP ?? "9000";
const httpsURL = new URL("http://localhost"); const httpsURL = new URL("https://localhost");
httpsURL.port = process.env.COMPOSE_PORT_HTTPS ?? "9443"; httpsURL.port = process.env.COMPOSE_PORT_HTTPS ?? "9443";
console.log(`\n${logPrefix} 🚀 Server running\n\n`); console.log(`\n${logPrefix} 🚀 Server running\n\n`);
@ -236,7 +239,6 @@ await cleanDistDirectory()
.then(() => .then(() =>
delegateCommand() delegateCommand()
.then(() => { .then(() => {
console.log("Build complete");
process.exit(0); process.exit(0);
}) })
.catch((error) => { .catch((error) => {

View File

@ -1,15 +0,0 @@
import { execSync } from "child_process";
import path from "path";
const projectRoot = execSync("git rev-parse --show-toplevel", { encoding: "utf8" }).replace(
"\n",
"",
);
const cmd = [
"codespell -D -",
`-D ${path.join(projectRoot, ".github/codespell-dictionary.txt")}`,
`-I ${path.join(projectRoot, ".github/codespell-words.txt")}`,
"-S './src/locales/**' ./src -s",
].join(" ");
console.log(execSync(cmd, { encoding: "utf8" }));

View File

@ -1,61 +0,0 @@
import { execFileSync } from "child_process";
import { ESLint } from "eslint";
import fs from "fs";
import path from "path";
import process from "process";
import { fileURLToPath } from "url";
function changedFiles() {
const gitStatus = execFileSync("git", ["diff", "--name-only", "HEAD"], { encoding: "utf8" });
const gitUntracked = execFileSync("git", ["ls-files", "--others", "--exclude-standard"], {
encoding: "utf8",
});
const changed = gitStatus
.split("\n")
.filter((line) => line.trim().substring(0, 4) === "web/")
.filter((line) => /\.(m|c)?(t|j)s$/.test(line))
.map((line) => line.substring(4))
.filter((line) => fs.existsSync(line));
const untracked = gitUntracked
.split("\n")
.filter((line) => /\.(m|c)?(t|j)s$/.test(line))
.filter((line) => fs.existsSync(line));
const sourceFiles = [...changed, ...untracked].filter((line) => /^src\//.test(line));
const scriptFiles = [...changed, ...untracked].filter(
(line) => /^scripts\//.test(line) || !/^src\//.test(line),
);
return [...sourceFiles, ...scriptFiles];
}
const __dirname = fileURLToPath(new URL(".", import.meta.url));
const projectRoot = path.join(__dirname, "..");
process.chdir(projectRoot);
/**
*
* @param {string[]} flags
* @returns
*/
const hasFlag = (flags) => process.argv.length > 1 && flags.includes(process.argv[2]);
const [configFile, files] = hasFlag(["-n", "--nightmare"])
? [path.join(__dirname, "eslint.nightmare.mjs"), changedFiles()]
: hasFlag(["-p", "--precommit"])
? [path.join(__dirname, "eslint.precommit.mjs"), changedFiles()]
: [path.join(projectRoot, "eslint.config.mjs"), ["."]];
const eslint = new ESLint({
overrideConfigFile: configFile,
warnIgnored: false,
});
const results = await eslint.lintFiles(files);
const formatter = await eslint.loadFormatter("stylish");
const resultText = formatter.format(results);
const errors = results.reduce((acc, result) => acc + result.errorCount, 0);
console.log(resultText);
process.exit(errors > 1 ? 1 : 0);

View File

@ -1,218 +0,0 @@
import eslint from "@eslint/js";
import tsparser from "@typescript-eslint/parser";
import litconf from "eslint-plugin-lit";
import wcconf from "eslint-plugin-wc";
import globals from "globals";
import tseslint from "typescript-eslint";
const MAX_DEPTH = 4;
const MAX_NESTED_CALLBACKS = 4;
const MAX_PARAMS = 5;
// Waiting for SonarJS to be compatible
// const MAX_COGNITIVE_COMPLEXITY = 9;
const rules = {
"accessor-pairs": "error",
"array-callback-return": "error",
"block-scoped-var": "error",
"consistent-return": "error",
"consistent-this": ["error", "that"],
"curly": ["error", "all"],
"dot-notation": [
"error",
{
allowKeywords: true,
},
],
"eqeqeq": "error",
"func-names": "error",
"guard-for-in": "error",
"max-depth": ["error", MAX_DEPTH],
"max-nested-callbacks": ["error", MAX_NESTED_CALLBACKS],
"max-params": ["error", MAX_PARAMS],
"new-cap": "error",
"no-alert": "error",
"no-array-constructor": "error",
"no-bitwise": "error",
"no-caller": "error",
"no-case-declarations": "error",
"no-class-assign": "error",
"no-cond-assign": "error",
"no-const-assign": "error",
"no-constant-condition": "error",
"no-control-regex": "error",
"no-debugger": "error",
"no-delete-var": "error",
"no-div-regex": "error",
"no-dupe-args": "error",
"no-dupe-keys": "error",
"no-duplicate-case": "error",
"no-else-return": "error",
"no-empty": "error",
"no-empty-character-class": "error",
"no-empty-function": "error",
"no-labels": "error",
"no-eq-null": "error",
"no-eval": "error",
"no-ex-assign": "error",
"no-extend-native": "error",
"no-extra-bind": "error",
"no-extra-boolean-cast": "error",
"no-extra-label": "error",
"no-fallthrough": "error",
"no-func-assign": "error",
"no-implied-eval": "error",
"no-implicit-coercion": "error",
"no-implicit-globals": "error",
"no-inner-declarations": ["error", "functions"],
"no-invalid-regexp": "error",
"no-irregular-whitespace": "error",
"no-iterator": "error",
"no-invalid-this": "error",
"no-label-var": "error",
"no-lone-blocks": "error",
"no-lonely-if": "error",
"no-loop-func": "error",
"no-magic-numbers": ["error", { ignore: [0, 1, -1] }],
"no-multi-str": "error",
"no-negated-condition": "error",
"no-nested-ternary": "error",
"no-new": "error",
"no-new-func": "error",
"no-new-wrappers": "error",
"no-obj-calls": "error",
"no-octal": "error",
"no-octal-escape": "error",
"no-param-reassign": "error",
"no-proto": "error",
"no-redeclare": "error",
"no-regex-spaces": "error",
"no-restricted-syntax": ["error", "WithStatement"],
"no-script-url": "error",
"no-self-assign": "error",
"no-self-compare": "error",
"no-sequences": "error",
"no-shadow": "error",
"no-shadow-restricted-names": "error",
"no-sparse-arrays": "error",
"no-this-before-super": "error",
"no-throw-literal": "error",
"no-trailing-spaces": "error",
"no-undef": "error",
"no-undef-init": "error",
"no-unexpected-multiline": "error",
"no-useless-constructor": "error",
"no-unmodified-loop-condition": "error",
"no-unneeded-ternary": "error",
"no-unreachable": "error",
"no-unused-expressions": "error",
"no-unused-labels": "error",
"no-use-before-define": "error",
"no-useless-call": "error",
"no-dupe-class-members": "error",
"no-var": "error",
"no-void": "error",
"no-with": "error",
"prefer-arrow-callback": "error",
"prefer-const": "error",
"prefer-rest-params": "error",
"prefer-spread": "error",
"prefer-template": "error",
"radix": "error",
"require-yield": "error",
"strict": ["error", "global"],
"use-isnan": "error",
"valid-typeof": "error",
"vars-on-top": "error",
"yoda": ["error", "never"],
"no-unused-vars": "off",
"no-console": ["error", { allow: ["debug", "warn", "error"] }],
// SonarJS is not yet compatible with ESLint 9. Commenting these out
// until it is.
// "sonarjs/cognitive-complexity": ["off", MAX_COGNITIVE_COMPLEXITY],
// "sonarjs/no-duplicate-string": "off",
// "sonarjs/no-nested-template-literals": "off",
"@typescript-eslint/ban-ts-comment": "off",
"@typescript-eslint/no-unused-vars": [
"error",
{
argsIgnorePattern: "^_",
varsIgnorePattern: "^_",
caughtErrorsIgnorePattern: "^_",
},
],
};
export default [
// You would not believe how much this change has frustrated users: ["if an ignores key is used
// without any other keys in the configuration object, then the patterns act as global
// ignores"](https://eslint.org/docs/latest/use/configure/ignore)
{
ignores: [
"dist/",
"out/",
".wireit/",
"packages/",
// don't ever lint node_modules
"node_modules/",
".storybook/*",
// don't lint build output (make sure it's set to your correct build folder name)
// don't lint nyc coverage output
"coverage/",
"src/locale-codes.ts",
"storybook-static/",
"src/locales/",
"src/**/*.test.ts",
],
},
eslint.configs.recommended,
wcconf.configs["flat/recommended"],
litconf.configs["flat/recommended"],
...tseslint.configs.recommended,
// sonar.configs.recommended,
{
languageOptions: {
parser: tsparser,
parserOptions: {
ecmaVersion: 12,
sourceType: "module",
},
globals: {
...globals.browser,
},
},
files: ["src/**"],
rules,
},
{
languageOptions: {
parser: tsparser,
parserOptions: {
ecmaVersion: 12,
sourceType: "module",
},
globals: {
...globals.nodeBuiltin,
},
},
files: ["scripts/*.mjs", "*.ts", "*.mjs"],
rules,
},
{
languageOptions: {
parser: tsparser,
parserOptions: {
ecmaVersion: 12,
sourceType: "module",
},
globals: {
...globals.nodeBuiltin,
...globals.jest,
},
},
files: ["src/**/*.test.ts"],
rules,
},
];

View File

@ -1,88 +0,0 @@
import eslint from "@eslint/js";
import tsparser from "@typescript-eslint/parser";
import litconf from "eslint-plugin-lit";
import wcconf from "eslint-plugin-wc";
import globals from "globals";
import tseslint from "typescript-eslint";
export default [
// You would not believe how much this change has frustrated users: ["if an ignores key is used
// without any other keys in the configuration object, then the patterns act as global
// ignores"](https://eslint.org/docs/latest/use/configure/ignore)
{
ignores: [
"dist/",
".wireit/",
"packages/",
// don't ever lint node_modules
"node_modules/",
".storybook/*",
// don't lint build output (make sure it's set to your correct build folder name)
// don't lint nyc coverage output
"coverage/",
"src/locale-codes.ts",
"storybook-static/",
"scripts/esbuild",
"src/locales/",
],
},
eslint.configs.recommended,
wcconf.configs["flat/recommended"],
litconf.configs["flat/recommended"],
...tseslint.configs.recommended,
// sonar.configs.recommended,
{
languageOptions: {
parser: tsparser,
parserOptions: {
ecmaVersion: 12,
sourceType: "module",
},
},
files: ["src/**"],
rules: {
"no-unused-vars": "off",
"no-console": ["error", { allow: ["debug", "warn", "error"] }],
// SonarJS is not yet compatible with ESLint 9. Commenting these out
// until it is.
// "sonarjs/cognitive-complexity": ["off", 9],
// "sonarjs/no-duplicate-string": "off",
// "sonarjs/no-nested-template-literals": "off",
"@typescript-eslint/ban-ts-comment": "off",
"@typescript-eslint/no-unused-vars": [
"error",
{
argsIgnorePattern: "^_",
varsIgnorePattern: "^_",
caughtErrorsIgnorePattern: "^_",
},
],
},
},
{
languageOptions: {
parser: tsparser,
parserOptions: {
ecmaVersion: 12,
sourceType: "module",
},
globals: {
...globals.nodeBuiltin,
},
},
files: ["scripts/*.mjs", "*.ts", "*.mjs"],
rules: {
"no-unused-vars": "off",
"no-console": "off",
"@typescript-eslint/ban-ts-comment": "off",
"@typescript-eslint/no-unused-vars": [
"error",
{
argsIgnorePattern: "^_",
varsIgnorePattern: "^_",
caughtErrorsIgnorePattern: "^_",
},
],
},
},
];

View File

@ -39,8 +39,11 @@ export class LoggingMiddleware implements Middleware {
export class CSRFMiddleware implements Middleware { export class CSRFMiddleware implements Middleware {
pre?(context: RequestContext): Promise<FetchParams | void> { pre?(context: RequestContext): Promise<FetchParams | void> {
// @ts-ignore context.init.headers = {
context.init.headers[CSRFHeaderName] = getCookie("authentik_csrf"); ...context.init.headers,
[CSRFHeaderName]: getCookie("authentik_csrf"),
};
return Promise.resolve(context); return Promise.resolve(context);
} }
} }

View File

@ -4,14 +4,18 @@ import { FetchParams, Middleware, RequestContext } from "@goauthentik/api";
export class SentryMiddleware implements Middleware { export class SentryMiddleware implements Middleware {
pre?(context: RequestContext): Promise<FetchParams | void> { pre?(context: RequestContext): Promise<FetchParams | void> {
if (getCurrentScope().getClient === undefined) { if (!getCurrentScope().getClient) {
return Promise.resolve(context); return Promise.resolve(context);
} }
const traceData = getTraceData(); const traceData = getTraceData();
// @ts-ignore
context.init.headers["baggage"] = traceData["baggage"]; context.init.headers = {
// @ts-ignore ...context.init.headers,
context.init.headers["sentry-trace"] = traceData["sentry-trace"]; "baggage": traceData.baggage || "",
"sentry-trace": traceData["sentry-trace"] || "",
};
return Promise.resolve(context); return Promise.resolve(context);
} }
} }

View File

@ -121,8 +121,7 @@ export async function setSearchSelect(name: string, value: string | RegExp) {
const control = await $(`>>>ak-search-select[name="${name}"]`); const control = await $(`>>>ak-search-select[name="${name}"]`);
await control.waitForExist({ timeout: 500 }); await control.waitForExist({ timeout: 500 });
return control; return control;
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars } catch (_e: unknown) {
} catch (_e: any) {
const control = await $(`>>>ak-search-selects-ez[name="${name}"]`); const control = await $(`>>>ak-search-selects-ez[name="${name}"]`);
return control; return control;
} }

View File

@ -61,8 +61,7 @@ export default class Page {
const control = await $(`ak-search-select[name="${name}"]`); const control = await $(`ak-search-select[name="${name}"]`);
await control.waitForExist({ timeout: 500 }); await control.waitForExist({ timeout: 500 });
return control; return control;
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars } catch (_e: unknown) {
} catch (_e: any) {
const control = await $(`ak-search-selects-ez[name="${name}"]`); const control = await $(`ak-search-selects-ez[name="${name}"]`);
return control; return control;
} }

View File

@ -1,4 +1,3 @@
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-nocheck // @ts-nocheck
// ^^^^^^^^^^^ Because TSC cannot handle metaprogramming, and metaprogramming // ^^^^^^^^^^^ Because TSC cannot handle metaprogramming, and metaprogramming
// via `defineProperties` is how we installed the OUID finders for the various // via `defineProperties` is how we installed the OUID finders for the various

View File

@ -221,15 +221,6 @@ export const config: WebdriverIO.Config = {
*/ */
// beforeSession: function (config, capabilities, specs, cid) { // beforeSession: function (config, capabilities, specs, cid) {
// }, // },
/**
* Gets executed before test execution begins. At this point you can access to all global
* variables like `browser`. It is the perfect place to define custom commands.
* @param {Array.<Object>} capabilities list of capabilities details
* @param {Array.<String>} specs List of spec file paths that are to be run
* @param {object} browser instance of created browser/device session
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
before: function (_capabilities, _specs) {},
/** /**
* Runs before a WebdriverIO command gets executed. * Runs before a WebdriverIO command gets executed.
* @param {string} commandName hook command name * @param {string} commandName hook command name

View File

@ -52,20 +52,12 @@
}, },
"exclude": [ "exclude": [
// --- // ---
"./out/**/*", "**/out/**/*",
"./dist/**/*", "**/dist/**/*",
"src/**/*.test.ts", "src/**/*.test.ts",
"./tests", "./tests",
// TODO: Remove after monorepo cleanup. // TODO: Remove after monorepo cleanup.
"src/**/*.comp.ts" "src/**/*.comp.ts"
],
"references": [
{
"path": "./packages/core"
},
{
"path": "./packages/esbuild-plugin-live-reload"
}
] ]
} }

17
website/eslint.config.mjs Normal file
View File

@ -0,0 +1,17 @@
import { DefaultIgnorePatterns, createESLintPackageConfig } from "@goauthentik/eslint-config";
// @ts-check
/**
* ESLint configuration for authentik's monorepo.
*/
const ESLintConfig = createESLintPackageConfig({
ignorePatterns: [
// ---
...DefaultIgnorePatterns,
".docusaurus/",
"./build",
],
});
export default ESLintConfig;

3973
website/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -12,6 +12,8 @@
"build:schema": "cp -f ../schema.yml ./static/schema.yml", "build:schema": "cp -f ../schema.yml ./static/schema.yml",
"deploy": "docusaurus deploy", "deploy": "docusaurus deploy",
"docusaurus": "docusaurus", "docusaurus": "docusaurus",
"lint": "eslint --fix .",
"lint-check": "eslint --max-warnings 0 .",
"lint:lockfile": "echo 'Skipping lockfile linting'", "lint:lockfile": "echo 'Skipping lockfile linting'",
"prettier": "prettier --write .", "prettier": "prettier --write .",
"prettier-check": "prettier --check .", "prettier-check": "prettier --check .",
@ -48,27 +50,37 @@
"@docusaurus/module-type-aliases": "^3.7.0", "@docusaurus/module-type-aliases": "^3.7.0",
"@docusaurus/tsconfig": "^3.7.0", "@docusaurus/tsconfig": "^3.7.0",
"@docusaurus/types": "^3.7.0", "@docusaurus/types": "^3.7.0",
"@eslint/js": "^9.27.0",
"@goauthentik/eslint-config": "^1.0.4",
"@goauthentik/prettier-config": "^1.0.4", "@goauthentik/prettier-config": "^1.0.4",
"@types/lodash": "^4.17.16", "@goauthentik/tsconfig": "^1.0.4",
"@trivago/prettier-plugin-sort-imports": "^5.2.2",
"@types/lodash": "^4.17.17",
"@types/node": "^22.15.21",
"@types/postman-collection": "^3.5.11", "@types/postman-collection": "^3.5.11",
"@types/react": "^18.3.13", "@types/react": "^18.3.22",
"@types/semver": "^7.7.0", "@types/semver": "^7.7.0",
"@typescript-eslint/eslint-plugin": "^8.8.0",
"@typescript-eslint/parser": "^8.8.0",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"eslint": "^9.11.1",
"fast-glob": "^3.3.3", "fast-glob": "^3.3.3",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"prettier": "^3.5.3", "prettier": "^3.5.3",
"typescript": "~5.8.2" "prettier-plugin-packagejson": "^2.5.14",
"typescript": "^5.8.3",
"typescript-eslint": "^8.32.1"
}, },
"optionalDependencies": { "optionalDependencies": {
"@rspack/binding-darwin-arm64": "1.3.10", "@rspack/binding-darwin-arm64": "1.3.11",
"@rspack/binding-linux-arm64-gnu": "1.3.10", "@rspack/binding-linux-arm64-gnu": "1.3.11",
"@rspack/binding-linux-x64-gnu": "1.3.10", "@rspack/binding-linux-x64-gnu": "1.3.11",
"@swc/core-darwin-arm64": "1.11.24", "@swc/core-darwin-arm64": "1.11.29",
"@swc/core-linux-arm64-gnu": "1.11.24", "@swc/core-linux-arm64-gnu": "1.11.29",
"@swc/core-linux-x64-gnu": "1.11.24", "@swc/core-linux-x64-gnu": "1.11.29",
"@swc/html-darwin-arm64": "1.11.24", "@swc/html-darwin-arm64": "1.11.29",
"@swc/html-linux-arm64-gnu": "1.11.24", "@swc/html-linux-arm64-gnu": "1.11.29",
"@swc/html-linux-x64-gnu": "1.11.24", "@swc/html-linux-x64-gnu": "1.11.29",
"lightningcss-darwin-arm64": "1.30.1", "lightningcss-darwin-arm64": "1.30.1",
"lightningcss-linux-arm64-gnu": "1.30.1", "lightningcss-linux-arm64-gnu": "1.30.1",
"lightningcss-linux-x64-gnu": "1.30.1" "lightningcss-linux-x64-gnu": "1.30.1"

View File

@ -13,8 +13,8 @@ function remarkEnterpriseDirective() {
/** /**
* @param {Root} tree The MDAST tree to transform. * @param {Root} tree The MDAST tree to transform.
*/ */
return function (tree) { return (tree) => {
visit(tree, "textDirective", function (node) { visit(tree, "textDirective", (node) => {
if (node.name !== "ak-enterprise") return SKIP; if (node.name !== "ak-enterprise") return SKIP;
const data = node.data || (node.data = {}); const data = node.data || (node.data = {});

View File

@ -13,8 +13,8 @@ function remarkPreviewDirective() {
/** /**
* @param {Root} tree The MDAST tree to transform. * @param {Root} tree The MDAST tree to transform.
*/ */
return function (tree) { return (tree) => {
visit(tree, "textDirective", function (node) { visit(tree, "textDirective", (node) => {
if (node.name !== "ak-preview") return SKIP; if (node.name !== "ak-preview") return SKIP;
const data = node.data || (node.data = {}); const data = node.data || (node.data = {});

View File

@ -40,8 +40,8 @@ function remarkSupportDirective() {
/** /**
* @param {Root} tree The MDAST tree to transform. * @param {Root} tree The MDAST tree to transform.
*/ */
return function (tree) { return (tree) => {
visit(tree, "textDirective", function (node) { visit(tree, "textDirective", (node) => {
if (node.name !== "ak-support") return SKIP; if (node.name !== "ak-support") return SKIP;
const firstChild = node.children[0]; const firstChild = node.children[0];

View File

@ -26,8 +26,8 @@ function remarkVersionDirective() {
/** /**
* @param {Root} tree The MDAST tree to transform. * @param {Root} tree The MDAST tree to transform.
*/ */
return function (tree) { return (tree) => {
visit(tree, "textDirective", function (node) { visit(tree, "textDirective", (node) => {
if (node.name !== "ak-version") return SKIP; if (node.name !== "ak-version") return SKIP;
const firstChild = node.children[0]; const firstChild = node.children[0];

View File

@ -82,7 +82,7 @@ const DocItemContent: React.FC<Props> = ({ children }) => {
throw new MarkdownLintError( throw new MarkdownLintError(
`${metadata.id}: ${invalidBadges.length} Badge(s) defined in markdown content instead of the frontmatter.`, `${metadata.id}: ${invalidBadges.length} Badge(s) defined in markdown content instead of the frontmatter.`,
); );
}, []); }, [metadata.id]);
return ( return (
<div className={clsx(ThemeClassNames.docs.docMarkdown, "markdown")}> <div className={clsx(ThemeClassNames.docs.docMarkdown, "markdown")}>