* web: Add InvalidationFlow to Radius Provider dialogues
## What
- Bugfix: adds the InvalidationFlow to the Radius Provider dialogues
- Repairs: `{"invalidation_flow":["This field is required."]}` message, which was *not* propagated
to the Notification.
- Nitpick: Pretties `?foo=${true}` expressions: `s/\?([^=]+)=\$\{true\}/\1/`
## Note
Yes, I know I'm going to have to do more magic when we harmonize the forms, and no, I didn't add the
Property Mappings to the wizard, and yes, I know I'm going to have pain with the *new* version of
the wizard. But this is a serious bug; you can't make Radius servers with *either* of the current
dialogues at the moment.
* This (temporary) change is needed to prevent the unit tests from failing.
\# What
\# Why
\# How
\# Designs
\# Test Steps
\# Other Notes
* Revert "This (temporary) change is needed to prevent the unit tests from failing."
This reverts commit dddde09be5.
* ## What
Replaces `moment.js` with `date-fns` as a runtime dependency for Chart.js and other features
requiring date manipulation libraries. `date-fns` (and `chartjs-adapter-date-fns`) provides a 1:1
compatible API with Moment.js, is significantly faster and smaller. Moment.js adds
74KB to our bundle; in constrast, using DateFns adds only 18KB.
## Why
[Because ChartJS recommends it](https://github.com/chartjs/chartjs-adapter-moment#overview), and
because DateFns are easier to import and use.
It's worth noting that chartjs-adapter-date-fns was last updated three years ago, but
chartjs-adapter-moment was last updated *four* years ago. Both can be considered stable at this
point, so this cannot be considered an untested swap.
## Testing
1. In the *built* version of the product, assert that in the `./dist/admin/*` folder, no instance of
`node_modules/moment` is included. `grep "node_modules/moment" ./dist/admin/*` is sufficient for
this. On the other hand, searching for `date-fns` will get you entries in the maps:
```
// ... many lines of date-fns inclusion; this is near the end, to show the chartjs adapter is
// also included.
admin/chunk-TRZMFVHL.js:// node_modules/date-fns/startOfSecond.js
admin/chunk-TRZMFVHL.js:// node_modules/date-fns/parseISO.js
admin/chunk-TRZMFVHL.js:// node_modules/chartjs-adapter-date-fns/dist/chartjs-adapter-date-fns.esm.js
admin/chunk-TRZMFVHL.js: _id: "date-fns",
admin/chunk-TRZMFVHL.js:chartjs-adapter-date-fns/dist/chartjs-adapter-date-fns.esm.js:
```
2. Visually inspect and assert that the graphs in Dashboard➜Overview, User➜Statistics, and
Directory➜Users➜A User are functioning unchanged.
## Documentation Changes Required
None. No developer or user documentation changes are required.
---------
Co-authored-by: Jens Langhammer <jens@goauthentik.io>
368 lines
12 KiB
JSON
368 lines
12 KiB
JSON
{
|
|
"name": "@goauthentik/web",
|
|
"version": "0.0.0",
|
|
"dependencies": {
|
|
"@codemirror/lang-html": "^6.4.9",
|
|
"@codemirror/lang-javascript": "^6.2.2",
|
|
"@codemirror/lang-python": "^6.1.6",
|
|
"@codemirror/lang-xml": "^6.1.0",
|
|
"@codemirror/legacy-modes": "^6.4.1",
|
|
"@codemirror/theme-one-dark": "^6.1.2",
|
|
"@floating-ui/dom": "^1.6.11",
|
|
"@formatjs/intl-listformat": "^7.5.7",
|
|
"@fortawesome/fontawesome-free": "^6.6.0",
|
|
"@goauthentik/api": "^2025.2.1-1740858273",
|
|
"@lit-labs/ssr": "^3.2.2",
|
|
"@lit/context": "^1.1.2",
|
|
"@lit/localize": "^0.12.2",
|
|
"@lit/reactive-element": "^2.0.4",
|
|
"@lit/task": "^1.0.1",
|
|
"@open-wc/lit-helpers": "^0.7.0",
|
|
"@patternfly/elements": "^4.0.2",
|
|
"@patternfly/patternfly": "^4.224.2",
|
|
"@sentry/browser": "^8.32.0",
|
|
"@spotlightjs/spotlight": "^2.4.2",
|
|
"@webcomponents/webcomponentsjs": "^2.8.0",
|
|
"base64-js": "^1.5.1",
|
|
"chart.js": "^4.4.4",
|
|
"chartjs-adapter-date-fns": "^3.0.0",
|
|
"codemirror": "^6.0.1",
|
|
"construct-style-sheets-polyfill": "^3.1.0",
|
|
"core-js": "^3.38.1",
|
|
"country-flag-icons": "^1.5.13",
|
|
"date-fns": "^4.1.0",
|
|
"dompurify": "^3.2.4",
|
|
"fuse.js": "^7.0.0",
|
|
"guacamole-common-js": "^1.5.0",
|
|
"lit": "^3.2.0",
|
|
"md-front-matter": "^1.0.4",
|
|
"mermaid": "^11.4.1",
|
|
"rapidoc": "^9.3.7",
|
|
"showdown": "^2.1.0",
|
|
"style-mod": "^4.1.2",
|
|
"ts-pattern": "^5.4.0",
|
|
"webcomponent-qr-code": "^1.2.0",
|
|
"yaml": "^2.5.1"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^9.11.1",
|
|
"@hcaptcha/types": "^1.0.4",
|
|
"@lit/localize-tools": "^0.8.0",
|
|
"@rollup/plugin-replace": "^6.0.1",
|
|
"@storybook/addon-essentials": "^8.3.4",
|
|
"@storybook/addon-links": "^8.3.4",
|
|
"@storybook/api": "^7.6.17",
|
|
"@storybook/blocks": "^8.3.4",
|
|
"@storybook/builder-vite": "^8.3.4",
|
|
"@storybook/manager-api": "^8.3.4",
|
|
"@storybook/web-components": "^8.3.4",
|
|
"@storybook/web-components-vite": "^8.3.4",
|
|
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
|
|
"@types/chart.js": "^2.9.41",
|
|
"@types/codemirror": "^5.60.15",
|
|
"@types/dompurify": "^3.0.5",
|
|
"@types/eslint__js": "^8.42.3",
|
|
"@types/grecaptcha": "^3.0.9",
|
|
"@types/guacamole-common-js": "^1.5.2",
|
|
"@types/mocha": "^10.0.8",
|
|
"@types/node": "^22.7.4",
|
|
"@types/showdown": "^2.0.6",
|
|
"@typescript-eslint/eslint-plugin": "^8.8.0",
|
|
"@typescript-eslint/parser": "^8.8.0",
|
|
"@wdio/browser-runner": "9.4",
|
|
"@wdio/cli": "9.4",
|
|
"@wdio/spec-reporter": "^9.1.2",
|
|
"chokidar": "^4.0.1",
|
|
"chromedriver": "^131.0.1",
|
|
"esbuild": "^0.25.0",
|
|
"eslint": "^9.11.1",
|
|
"eslint-plugin-lit": "^1.15.0",
|
|
"eslint-plugin-wc": "^2.1.1",
|
|
"find-free-ports": "^3.1.1",
|
|
"github-slugger": "^2.0.0",
|
|
"glob": "^11.0.0",
|
|
"globals": "^15.10.0",
|
|
"knip": "^5.30.6",
|
|
"lit-analyzer": "^2.0.3",
|
|
"npm-run-all": "^4.1.5",
|
|
"prettier": "^3.3.3",
|
|
"pseudolocale": "^2.1.0",
|
|
"rollup-plugin-modify": "^3.0.0",
|
|
"rollup-plugin-postcss-lit": "^2.1.0",
|
|
"storybook": "^8.3.4",
|
|
"storybook-addon-mock": "^5.0.0",
|
|
"syncpack": "^13.0.0",
|
|
"turnstile-types": "^1.2.3",
|
|
"typescript": "^5.6.2",
|
|
"typescript-eslint": "^8.8.0",
|
|
"vite-plugin-lit-css": "^2.0.0",
|
|
"vite-tsconfig-paths": "^5.0.1",
|
|
"wireit": "^0.14.9"
|
|
},
|
|
"engines": {
|
|
"node": ">=20"
|
|
},
|
|
"license": "MIT",
|
|
"optionalDependencies": {
|
|
"@esbuild/darwin-arm64": "^0.24.0",
|
|
"@esbuild/linux-amd64": "^0.18.11",
|
|
"@esbuild/linux-arm64": "^0.24.0",
|
|
"@rollup/rollup-darwin-arm64": "4.23.0",
|
|
"@rollup/rollup-linux-arm64-gnu": "4.23.0",
|
|
"@rollup/rollup-linux-x64-gnu": "4.23.0"
|
|
},
|
|
"private": true,
|
|
"scripts": {
|
|
"build": "wireit",
|
|
"build-locales": "wireit",
|
|
"build-locales:build": "wireit",
|
|
"build-proxy": "wireit",
|
|
"build:sfe": "wireit",
|
|
"esbuild:watch": "node build.mjs --watch",
|
|
"extract-locales": "wireit",
|
|
"format": "wireit",
|
|
"lint": "wireit",
|
|
"lint:imports": "wireit",
|
|
"lint:lockfile": "wireit",
|
|
"lint:nightmare": "wireit",
|
|
"lint:package": "wireit",
|
|
"lint:precommit": "wireit",
|
|
"lint:types": "wireit",
|
|
"lit-analyse": "wireit",
|
|
"postinstall": "bash scripts/patch-spotlight.sh",
|
|
"precommit": "wireit",
|
|
"prettier": "wireit",
|
|
"prettier-check": "wireit",
|
|
"pseudolocalize": "wireit",
|
|
"storybook": "storybook dev -p 6006",
|
|
"storybook:build": "wireit",
|
|
"test": "wireit",
|
|
"test:e2e": "wireit",
|
|
"test:e2e:watch": "wireit",
|
|
"test:watch": "wireit",
|
|
"tsc": "wireit",
|
|
"watch": "run-s build-locales esbuild:watch"
|
|
},
|
|
"type": "module",
|
|
"wireit": {
|
|
"build": {
|
|
"#comment": [
|
|
"`npm run build` and `npm run watch` are the most common ",
|
|
"commands you should be using when working on the front-end ",
|
|
"The files and output spec here expect you to use `npm run build --watch` ",
|
|
"instead of `npm run watch`. The former is more comprehensive, but ",
|
|
"the latter is faster."
|
|
],
|
|
"command": "${NODE_RUNNER} build.mjs",
|
|
"files": [
|
|
"src/**/*.{css,jpg,png,ts,js,json}",
|
|
"!src/**/*.stories.ts",
|
|
"!src/**/*.tests.ts",
|
|
"!src/locales/*.ts",
|
|
"!src/locale-codes.ts",
|
|
"icons/**/*"
|
|
],
|
|
"output": [
|
|
"./dist/admin/**",
|
|
"./dist/user/**",
|
|
"./dist/flow/**",
|
|
"./dist/standalone/api-browser/**",
|
|
"./dist/standalone/loading/**",
|
|
"./dist/enterprise/**",
|
|
"./dist/poly-*.js",
|
|
"./dist/poly-*.js.map",
|
|
"./dist/custom.css",
|
|
"./dist/theme-dark.css",
|
|
"./dist/patternfly.min.css"
|
|
],
|
|
"dependencies": [
|
|
"build-locales",
|
|
"./packages/sfe:build"
|
|
],
|
|
"env": {
|
|
"NODE_RUNNER": {
|
|
"external": true,
|
|
"default": "node"
|
|
}
|
|
}
|
|
},
|
|
"build:sfe": {
|
|
"dependencies": [
|
|
"./packages/sfe:build"
|
|
],
|
|
"files": [
|
|
"./packages/sfe/**/*.ts"
|
|
]
|
|
},
|
|
"build-proxy": {
|
|
"command": "node build.mjs --proxy",
|
|
"dependencies": [
|
|
"build-locales"
|
|
]
|
|
},
|
|
"build-locales:build": {
|
|
"command": "lit-localize build"
|
|
},
|
|
"build-locales:repair": {
|
|
"command": "prettier --write ./src/locale-codes.ts"
|
|
},
|
|
"build-locales": {
|
|
"command": "node scripts/build-locales.mjs",
|
|
"files": [
|
|
"./xliff/*.xlf"
|
|
],
|
|
"output": [
|
|
"./src/locales/*.ts",
|
|
"./src/locale-codes.ts"
|
|
]
|
|
},
|
|
"extract-locales": {
|
|
"command": "lit-localize extract"
|
|
},
|
|
"format": {
|
|
"command": "prettier --write .",
|
|
"dependencies": [
|
|
"lint:package"
|
|
]
|
|
},
|
|
"format:packages": {
|
|
"dependencies": [
|
|
"./packages/sfe:prettier"
|
|
]
|
|
},
|
|
"lint": {
|
|
"command": "eslint --max-warnings 0 --fix",
|
|
"env": {
|
|
"NODE_OPTIONS": "--max_old_space_size=65536"
|
|
}
|
|
},
|
|
"lint:components": {
|
|
"command": "lit-analyzer src"
|
|
},
|
|
"lint:imports": {
|
|
"command": "knip --config scripts/knip.config.ts"
|
|
},
|
|
"lint:types:tests": {
|
|
"command": "tsc --noEmit -p ./tests"
|
|
},
|
|
"lint:types": {
|
|
"command": "tsc --noEmit -p .",
|
|
"dependencies": [
|
|
"build-locales",
|
|
"lint:types:tests"
|
|
]
|
|
},
|
|
"lint:lockfile": {
|
|
"__comment": "The lockfile-lint package does not have an option to ensure resolved hashes are set everywhere",
|
|
"shell": true,
|
|
"command": "sh ./scripts/lint-lockfile.sh package-lock.json"
|
|
},
|
|
"lint:lockfiles": {
|
|
"dependencies": [
|
|
"./packages/sfe:lint:lockfile"
|
|
]
|
|
},
|
|
"lint:package": {
|
|
"command": "syncpack format -i ' '"
|
|
},
|
|
"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": {
|
|
"command": "lit-analyzer src"
|
|
},
|
|
"precommit": {
|
|
"command": "prettier --write .",
|
|
"dependencies": [
|
|
"lint:types",
|
|
"lint:components",
|
|
"lint:spelling",
|
|
"lint:package",
|
|
"lint:lockfile",
|
|
"lint:lockfiles",
|
|
"lint:precommit",
|
|
"format:packages"
|
|
]
|
|
},
|
|
"prettier": {
|
|
"dependencies": [
|
|
"format"
|
|
]
|
|
},
|
|
"prettier-check": {
|
|
"command": "prettier --check ."
|
|
},
|
|
"pseudolocalize": {
|
|
"command": "node scripts/pseudolocalize.mjs"
|
|
},
|
|
"storybook:build": {
|
|
"command": "storybook build",
|
|
"env": {
|
|
"NODE_OPTIONS": "--max_old_space_size=8192"
|
|
}
|
|
},
|
|
"test": {
|
|
"command": "wdio ./wdio.conf.ts --logLevel=warn",
|
|
"env": {
|
|
"CI": "true",
|
|
"TS_NODE_PROJECT": "tsconfig.test.json"
|
|
}
|
|
},
|
|
"test:e2e": {
|
|
"command": "wdio run ./tests/wdio.conf.ts",
|
|
"dependencies": [
|
|
"build"
|
|
],
|
|
"env": {
|
|
"CI": "true",
|
|
"TS_NODE_PROJECT": "./tests/tsconfig.test.json"
|
|
}
|
|
},
|
|
"test:e2e:watch": {
|
|
"command": "wdio run ./tests/wdio.conf.ts",
|
|
"dependencies": [
|
|
"build"
|
|
],
|
|
"env": {
|
|
"TS_NODE_PROJECT": "./tests/tsconfig.test.json"
|
|
}
|
|
},
|
|
"test:watch": {
|
|
"command": "wdio run ./wdio.conf.ts",
|
|
"dependencies": [
|
|
"build"
|
|
],
|
|
"env": {
|
|
"TS_NODE_PROJECT": "tsconfig.test.json"
|
|
}
|
|
},
|
|
"tsc": {
|
|
"dependencies": [
|
|
"lint:types"
|
|
]
|
|
}
|
|
},
|
|
"workspaces": [
|
|
".",
|
|
"./packages/*"
|
|
]
|
|
}
|