web: move the content of the application to a sub-folder and build it via lage

**This commit**

- Moves the content of the authentik web-ui to a subfolder, `packages/authentik`
- Mirrors all of the commands from package.json in the root package, and
  mirrors them *again* in Lage, so that lage will run them all as-is.
- Changes paths for things like sonarJS, Codespell, and such to find the
  correct sources of their content.
- Update `glob` and `pseudolocale` versions; they were throwing exceptions.
- Update Storybook-Vite's CSS import map function to be a little more readable.
This commit is contained in:
Ken Sternberg 2024-01-05 15:56:44 -08:00
parent a945d588a9
commit a8f0e0dd12
6 changed files with 196 additions and 174 deletions

108
web/package-lock.json generated
View File

@ -15,6 +15,10 @@
"@manypkg/cli": "^0.21.1", "@manypkg/cli": "^0.21.1",
"lage": "^2.7.9" "lage": "^2.7.9"
}, },
"devDependencies": {
"@types/glob": "^8.1.0",
"glob": "^10.3.10"
},
"engines": { "engines": {
"node": ">=20" "node": ">=20"
}, },
@ -4453,6 +4457,37 @@
} }
} }
}, },
"node_modules/@rollup/plugin-commonjs/node_modules/glob": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
"integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
"dev": true,
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^5.0.1",
"once": "^1.3.0"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@rollup/plugin-commonjs/node_modules/minimatch": {
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dev": true,
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=10"
}
},
"node_modules/@rollup/plugin-node-resolve": { "node_modules/@rollup/plugin-node-resolve": {
"version": "15.2.3", "version": "15.2.3",
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz",
@ -5966,28 +6001,6 @@
"node": ">=14.14" "node": ">=14.14"
} }
}, },
"node_modules/@storybook/core-common/node_modules/glob": {
"version": "10.3.10",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
"integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
"dev": true,
"dependencies": {
"foreground-child": "^3.1.0",
"jackspeak": "^2.3.5",
"minimatch": "^9.0.1",
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
"path-scurry": "^1.10.1"
},
"bin": {
"glob": "dist/esm/bin.mjs"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@storybook/core-common/node_modules/has-flag": { "node_modules/@storybook/core-common/node_modules/has-flag": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@ -7765,12 +7778,12 @@
} }
}, },
"node_modules/@types/glob": { "node_modules/@types/glob": {
"version": "7.2.0", "version": "8.1.0",
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz",
"integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@types/minimatch": "*", "@types/minimatch": "^5.1.2",
"@types/node": "*" "@types/node": "*"
} }
}, },
@ -12505,19 +12518,22 @@
"dev": true "dev": true
}, },
"node_modules/glob": { "node_modules/glob": {
"version": "8.1.0", "version": "10.3.10",
"resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
"integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"fs.realpath": "^1.0.0", "foreground-child": "^3.1.0",
"inflight": "^1.0.4", "jackspeak": "^2.3.5",
"inherits": "2", "minimatch": "^9.0.1",
"minimatch": "^5.0.1", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
"once": "^1.3.0" "path-scurry": "^1.10.1"
},
"bin": {
"glob": "dist/esm/bin.mjs"
}, },
"engines": { "engines": {
"node": ">=12" "node": ">=16 || 14 >=14.17"
}, },
"funding": { "funding": {
"url": "https://github.com/sponsors/isaacs" "url": "https://github.com/sponsors/isaacs"
@ -12630,18 +12646,6 @@
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
"dev": true "dev": true
}, },
"node_modules/glob/node_modules/minimatch": {
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dev": true,
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=10"
}
},
"node_modules/globals": { "node_modules/globals": {
"version": "11.12.0", "version": "11.12.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
@ -17731,6 +17735,16 @@
"node": ">=8.3" "node": ">=8.3"
} }
}, },
"node_modules/rollup-plugin-copy/node_modules/@types/glob": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
"integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
"dev": true,
"dependencies": {
"@types/minimatch": "*",
"@types/node": "*"
}
},
"node_modules/rollup-plugin-copy/node_modules/brace-expansion": { "node_modules/rollup-plugin-copy/node_modules/brace-expansion": {
"version": "1.1.11", "version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",

View File

@ -13,7 +13,7 @@
"rollup:watch": "lage rollup:watch", "rollup:watch": "lage rollup:watch",
"build": "lage build", "build": "lage build",
"build-proxy": "lage build-proxy", "build-proxy": "lage build-proxy",
"watch": "lage watch", "watch": "lage watch --verbose",
"lint": "lage lint", "lint": "lage lint",
"lint:precommit": "lage lint:precommit", "lint:precommit": "lage lint:precommit",
"lint:spelling": "lage lint:spelling", "lint:spelling": "lage lint:spelling",
@ -27,7 +27,7 @@
"pseudolocalize": "lage pseudolocalize", "pseudolocalize": "lage pseudolocalize",
"tsc:execute": "lage tsc:execute", "tsc:execute": "lage tsc:execute",
"tsc": "lage tsc", "tsc": "lage tsc",
"storybook": "lage storybook", "storybook": "lage storybook --verbose",
"storybook:build": "lage storybook:build", "storybook:build": "lage storybook:build",
"storybook:build-import-map": "lage storybook:build-import-map", "storybook:build-import-map": "lage storybook:build-import-map",
"storybook:build-import-map-script": "lage storybook:build-import-map-script", "storybook:build-import-map-script": "lage storybook:build-import-map-script",

View File

@ -7,123 +7,74 @@
// Sometime around 2030 or so, the Javascript community may finally get its collective act together // Sometime around 2030 or so, the Javascript community may finally get its collective act together
// and we'll have one unified way of doing this. I can only hope. // and we'll have one unified way of doing this. I can only hope.
export const cssImportMaps = { const cssImportMapsBase = [
'import AKGlobal from "@goauthentik/common/styles/authentik.css";': 'import AKGlobal from "@goauthentik/common/styles/authentik.css";',
'import AKGlobal from "@goauthentik/common/styles/authentik.css?inline";', 'import PFAlert from "@patternfly/patternfly/components/Alert/alert.css";',
'import PFAlert from "@patternfly/patternfly/components/Alert/alert.css";': 'import PFAlertGroup from "@patternfly/patternfly/components/AlertGroup/alert-group.css";',
'import PFAlert from "@patternfly/patternfly/components/Alert/alert.css?inline";', 'import PFAvatar from "@patternfly/patternfly/components/Avatar/avatar.css";',
'import PFAlertGroup from "@patternfly/patternfly/components/AlertGroup/alert-group.css";': 'import PFBackdrop from "@patternfly/patternfly/components/Backdrop/backdrop.css";',
'import PFAlertGroup from "@patternfly/patternfly/components/AlertGroup/alert-group.css?inline";', 'import PFBackgroundImage from "@patternfly/patternfly/components/BackgroundImage/background-image.css";',
'import PFAvatar from "@patternfly/patternfly/components/Avatar/avatar.css";': 'import PFBanner from "@patternfly/patternfly/components/Banner/banner.css";',
'import PFAvatar from "@patternfly/patternfly/components/Avatar/avatar.css?inline";', 'import PFBase from "@patternfly/patternfly/patternfly-base.css";',
'import PFBackdrop from "@patternfly/patternfly/components/Backdrop/backdrop.css";': 'import PFBrand from "@patternfly/patternfly/components/Brand/brand.css";',
'import PFBackdrop from "@patternfly/patternfly/components/Backdrop/backdrop.css?inline";', 'import PFBullseye from "@patternfly/patternfly/layouts/Bullseye/bullseye.css";',
'import PFBackgroundImage from "@patternfly/patternfly/components/BackgroundImage/background-image.css";': 'import PFButton from "@patternfly/patternfly/components/Button/button.css";',
'import PFBackgroundImage from "@patternfly/patternfly/components/BackgroundImage/background-image.css?inline";', 'import PFCard from "@patternfly/patternfly/components/Card/card.css";',
'import PFBanner from "@patternfly/patternfly/components/Banner/banner.css";': 'import PFCheck from "@patternfly/patternfly/components/Check/check.css";',
'import PFBanner from "@patternfly/patternfly/components/Banner/banner.css?inline";', 'import PFChip from "@patternfly/patternfly/components/Chip/chip.css";',
'import PFBase from "@patternfly/patternfly/patternfly-base.css";': 'import PFChipGroup from "@patternfly/patternfly/components/ChipGroup/chip-group.css";',
'import PFBase from "@patternfly/patternfly/patternfly-base.css?inline";', 'import PFContent from "@patternfly/patternfly/components/Content/content.css";',
'import PFBrand from "@patternfly/patternfly/components/Brand/brand.css";': 'import PFDataList from "@patternfly/patternfly/components/DataList/data-list.css";',
'import PFBrand from "@patternfly/patternfly/components/Brand/brand.css?inline";', 'import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css";',
'import PFBullseye from "@patternfly/patternfly/layouts/Bullseye/bullseye.css";': 'import PFDisplay from "@patternfly/patternfly/utilities/Display/display.css";',
'import PFBullseye from "@patternfly/patternfly/layouts/Bullseye/bullseye.css?inline";', 'import PFDrawer from "@patternfly/patternfly/components/Drawer/drawer.css";',
'import PFButton from "@patternfly/patternfly/components/Button/button.css";': 'import PFDropdown from "@patternfly/patternfly/components/Dropdown/dropdown.css";',
'import PFButton from "@patternfly/patternfly/components/Button/button.css?inline";', 'import PFEmptyState from "@patternfly/patternfly/components/EmptyState/empty-state.css";',
'import PFCard from "@patternfly/patternfly/components/Card/card.css";': 'import PFExpandableSection from "@patternfly/patternfly/components/ExpandableSection/expandable-section.css";',
'import PFCard from "@patternfly/patternfly/components/Card/card.css?inline";', 'import PFFAIcons from "@patternfly/patternfly/base/patternfly-fa-icons.css";',
'import PFCheck from "@patternfly/patternfly/components/Check/check.css";': 'import PFFlex from "@patternfly/patternfly/layouts/Flex/flex.css";',
'import PFCheck from "@patternfly/patternfly/components/Check/check.css?inline";', 'import PFForm from "@patternfly/patternfly/components/Form/form.css";',
'import PFChip from "@patternfly/patternfly/components/Chip/chip.css";': 'import PFFormControl from "@patternfly/patternfly/components/FormControl/form-control.css";',
'import PFChip from "@patternfly/patternfly/components/Chip/chip.css?inline";', 'import PFGallery from "@patternfly/patternfly/layouts/Gallery/gallery.css";',
'import PFChipGroup from "@patternfly/patternfly/components/ChipGroup/chip-group.css";': 'import PFGlobal from "@patternfly/patternfly/patternfly-base.css";',
'import PFChipGroup from "@patternfly/patternfly/components/ChipGroup/chip-group.css?inline";', 'import PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css";',
'import PFContent from "@patternfly/patternfly/components/Content/content.css";': 'import PFHint from "@patternfly/patternfly/components/Hint/hint.css";',
'import PFContent from "@patternfly/patternfly/components/Content/content.css?inline";', 'import PFInputGroup from "@patternfly/patternfly/components/InputGroup/input-group.css";',
'import PFDataList from "@patternfly/patternfly/components/DataList/data-list.css";': 'import PFLabel from "@patternfly/patternfly/components/Label/label.css";',
'import PFDataList from "@patternfly/patternfly/components/DataList/data-list.css?inline";', 'import PFList from "@patternfly/patternfly/components/List/list.css";',
'import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css";': 'import PFLogin from "@patternfly/patternfly/components/Login/login.css";',
'import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css?inline";', 'import PFModalBox from "@patternfly/patternfly/components/ModalBox/modal-box.css";',
'import PFDisplay from "@patternfly/patternfly/utilities/Display/display.css";': 'import PFNav from "@patternfly/patternfly/components/Nav/nav.css";',
'import PFDisplay from "@patternfly/patternfly/utilities/Display/display.css?inline";', 'import PFNotificationBadge from "@patternfly/patternfly/components/NotificationBadge/notification-badge.css";',
'import PFDrawer from "@patternfly/patternfly/components/Drawer/drawer.css";': 'import PFNotificationDrawer from "@patternfly/patternfly/components/NotificationDrawer/notification-drawer.css";',
'import PFDrawer from "@patternfly/patternfly/components/Drawer/drawer.css?inline";', 'import PFPage from "@patternfly/patternfly/components/Page/page.css";',
'import PFDropdown from "@patternfly/patternfly/components/Dropdown/dropdown.css";': 'import PFPagination from "@patternfly/patternfly/components/Pagination/pagination.css";',
'import PFDropdown from "@patternfly/patternfly/components/Dropdown/dropdown.css?inline";', 'import PFProgressStepper from "@patternfly/patternfly/components/ProgressStepper/progress-stepper.css";',
'import PFEmptyState from "@patternfly/patternfly/components/EmptyState/empty-state.css";': 'import PFRadio from "@patternfly/patternfly/components/Radio/radio.css";',
'import PFEmptyState from "@patternfly/patternfly/components/EmptyState/empty-state.css?inline";', 'import PFSelect from "@patternfly/patternfly/components/Select/select.css";',
'import PFExpandableSection from "@patternfly/patternfly/components/ExpandableSection/expandable-section.css";': 'import PFSidebar from "@patternfly/patternfly/components/Sidebar/sidebar.css";',
'import PFExpandableSection from "@patternfly/patternfly/components/ExpandableSection/expandable-section.css?inline";', 'import PFSizing from "@patternfly/patternfly/utilities/Sizing/sizing.css";',
'import PFFAIcons from "@patternfly/patternfly/base/patternfly-fa-icons.css";': 'import PFSpacing from "@patternfly/patternfly/utilities/Spacing/spacing.css";',
'import PFFAIcons from "@patternfly/patternfly/base/patternfly-fa-icons.css?inline";', 'import PFSpinner from "@patternfly/patternfly/components/Spinner/spinner.css";',
'import PFFlex from "@patternfly/patternfly/layouts/Flex/flex.css";': 'import PFStack from "@patternfly/patternfly/layouts/Stack/stack.css";',
'import PFFlex from "@patternfly/patternfly/layouts/Flex/flex.css?inline";', 'import PFSwitch from "@patternfly/patternfly/components/Switch/switch.css";',
'import PFForm from "@patternfly/patternfly/components/Form/form.css";': 'import PFTable from "@patternfly/patternfly/components/Table/table.css";',
'import PFForm from "@patternfly/patternfly/components/Form/form.css?inline";', 'import PFTabs from "@patternfly/patternfly/components/Tabs/tabs.css";',
'import PFFormControl from "@patternfly/patternfly/components/FormControl/form-control.css";': 'import PFTitle from "@patternfly/patternfly/components/Title/title.css";',
'import PFFormControl from "@patternfly/patternfly/components/FormControl/form-control.css?inline";', 'import PFToggleGroup from "@patternfly/patternfly/components/ToggleGroup/toggle-group.css";',
'import PFGallery from "@patternfly/patternfly/layouts/Gallery/gallery.css";': 'import PFToolbar from "@patternfly/patternfly/components/Toolbar/toolbar.css";',
'import PFGallery from "@patternfly/patternfly/layouts/Gallery/gallery.css?inline";', 'import PFTreeView from "@patternfly/patternfly/components/TreeView/tree-view.css";',
'import PFGlobal from "@patternfly/patternfly/patternfly-base.css";': 'import PFWizard from "@patternfly/patternfly/components/Wizard/wizard.css";',
'import PFGlobal from "@patternfly/patternfly/patternfly-base.css?inline";', 'import ThemeDark from "@goauthentik/common/styles/theme-dark.css";',
'import PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css";': 'import styles from "./LibraryPageImpl.css";',
'import PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css?inline";', ];
'import PFHint from "@patternfly/patternfly/components/Hint/hint.css";':
'import PFHint from "@patternfly/patternfly/components/Hint/hint.css?inline";', type ImportMapType = Record<string, string>;
'import PFInputGroup from "@patternfly/patternfly/components/InputGroup/input-group.css";':
'import PFInputGroup from "@patternfly/patternfly/components/InputGroup/input-group.css?inline";', export const cssImportMaps = cssImportMapsBase.reduce(
'import PFLabel from "@patternfly/patternfly/components/Label/label.css";': (acc: ImportMapType, importLine: string) => ({
'import PFLabel from "@patternfly/patternfly/components/Label/label.css?inline";', ...acc,
'import PFList from "@patternfly/patternfly/components/List/list.css";': [importLine]: importLine.replace(/.css/, ".css?inline"),
'import PFList from "@patternfly/patternfly/components/List/list.css?inline";', }),
'import PFLogin from "@patternfly/patternfly/components/Login/login.css";': {},
'import PFLogin from "@patternfly/patternfly/components/Login/login.css?inline";', );
'import PFModalBox from "@patternfly/patternfly/components/ModalBox/modal-box.css";':
'import PFModalBox from "@patternfly/patternfly/components/ModalBox/modal-box.css?inline";',
'import PFNav from "@patternfly/patternfly/components/Nav/nav.css";':
'import PFNav from "@patternfly/patternfly/components/Nav/nav.css?inline";',
'import PFNotificationBadge from "@patternfly/patternfly/components/NotificationBadge/notification-badge.css";':
'import PFNotificationBadge from "@patternfly/patternfly/components/NotificationBadge/notification-badge.css?inline";',
'import PFNotificationDrawer from "@patternfly/patternfly/components/NotificationDrawer/notification-drawer.css";':
'import PFNotificationDrawer from "@patternfly/patternfly/components/NotificationDrawer/notification-drawer.css?inline";',
'import PFPage from "@patternfly/patternfly/components/Page/page.css";':
'import PFPage from "@patternfly/patternfly/components/Page/page.css?inline";',
'import PFPagination from "@patternfly/patternfly/components/Pagination/pagination.css";':
'import PFPagination from "@patternfly/patternfly/components/Pagination/pagination.css?inline";',
'import PFProgressStepper from "@patternfly/patternfly/components/ProgressStepper/progress-stepper.css";':
'import PFProgressStepper from "@patternfly/patternfly/components/ProgressStepper/progress-stepper.css?inline";',
'import PFRadio from "@patternfly/patternfly/components/Radio/radio.css";':
'import PFRadio from "@patternfly/patternfly/components/Radio/radio.css?inline";',
'import PFSelect from "@patternfly/patternfly/components/Select/select.css";':
'import PFSelect from "@patternfly/patternfly/components/Select/select.css?inline";',
'import PFSidebar from "@patternfly/patternfly/components/Sidebar/sidebar.css";':
'import PFSidebar from "@patternfly/patternfly/components/Sidebar/sidebar.css?inline";',
'import PFSizing from "@patternfly/patternfly/utilities/Sizing/sizing.css";':
'import PFSizing from "@patternfly/patternfly/utilities/Sizing/sizing.css?inline";',
'import PFSpacing from "@patternfly/patternfly/utilities/Spacing/spacing.css";':
'import PFSpacing from "@patternfly/patternfly/utilities/Spacing/spacing.css?inline";',
'import PFSpinner from "@patternfly/patternfly/components/Spinner/spinner.css";':
'import PFSpinner from "@patternfly/patternfly/components/Spinner/spinner.css?inline";',
'import PFStack from "@patternfly/patternfly/layouts/Stack/stack.css";':
'import PFStack from "@patternfly/patternfly/layouts/Stack/stack.css?inline";',
'import PFSwitch from "@patternfly/patternfly/components/Switch/switch.css";':
'import PFSwitch from "@patternfly/patternfly/components/Switch/switch.css?inline";',
'import PFTable from "@patternfly/patternfly/components/Table/table.css";':
'import PFTable from "@patternfly/patternfly/components/Table/table.css?inline";',
'import PFTabs from "@patternfly/patternfly/components/Tabs/tabs.css";':
'import PFTabs from "@patternfly/patternfly/components/Tabs/tabs.css?inline";',
'import PFTitle from "@patternfly/patternfly/components/Title/title.css";':
'import PFTitle from "@patternfly/patternfly/components/Title/title.css?inline";',
'import PFToggleGroup from "@patternfly/patternfly/components/ToggleGroup/toggle-group.css";':
'import PFToggleGroup from "@patternfly/patternfly/components/ToggleGroup/toggle-group.css?inline";',
'import PFToolbar from "@patternfly/patternfly/components/Toolbar/toolbar.css";':
'import PFToolbar from "@patternfly/patternfly/components/Toolbar/toolbar.css?inline";',
'import PFTreeView from "@patternfly/patternfly/components/TreeView/tree-view.css";':
'import PFTreeView from "@patternfly/patternfly/components/TreeView/tree-view.css?inline";',
'import PFWizard from "@patternfly/patternfly/components/Wizard/wizard.css";':
'import PFWizard from "@patternfly/patternfly/components/Wizard/wizard.css?inline";',
'import ThemeDark from "@goauthentik/common/styles/theme-dark.css";':
'import ThemeDark from "@goauthentik/common/styles/theme-dark.css?inline";',
'import styles from "./LibraryPageImpl.css";':
'import styles from "./LibraryPageImpl.css?inline";',
};

View File

@ -110,6 +110,7 @@
"eslint-plugin-lit": "^1.11.0", "eslint-plugin-lit": "^1.11.0",
"eslint-plugin-sonarjs": "^0.23.0", "eslint-plugin-sonarjs": "^0.23.0",
"eslint-plugin-storybook": "^0.6.15", "eslint-plugin-storybook": "^0.6.15",
"glob": "^10.3.10",
"lit-analyzer": "^2.0.2", "lit-analyzer": "^2.0.2",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"prettier": "^3.1.1", "prettier": "^3.1.1",

View File

@ -30,7 +30,7 @@ function extractImportLinesFromFile(path: string) {
return lines.filter((l) => import_re.test(l)); return lines.filter((l) => import_re.test(l));
} }
function createOneImportLine(line: string) { function extractOneImportLine(line: string) {
const importMatch = import_re.exec(line); const importMatch = import_re.exec(line);
if (!importMatch) { if (!importMatch) {
throw new Error("How did an unmatchable line get here?"); throw new Error("How did an unmatchable line get here?");
@ -39,7 +39,7 @@ function createOneImportLine(line: string) {
if (!importContent) { if (!importContent) {
throw new Error("How did an unmatchable line get here!?"); throw new Error("How did an unmatchable line get here!?");
} }
return `'${importContent}";': '${importContent}?inline";',`; return ` '${importContent}";',`;
} }
const isSourceFile = /\.ts$/; const isSourceFile = /\.ts$/;
@ -73,9 +73,19 @@ const outputFile = `
// Sometime around 2030 or so, the Javascript community may finally get its collective act together // Sometime around 2030 or so, the Javascript community may finally get its collective act together
// and we'll have one unified way of doing this. I can only hope. // and we'll have one unified way of doing this. I can only hope.
export const cssImportMaps = { const cssImportMapsBase = [
${importLines.map(createOneImportLine).join("\n")} ${importLines.map(extractOneImportLine).join("\n")}
}; ];
type ImportMapType = Record<string, string>;
export const cssImportMaps = cssImportMapsBase.reduce(
(acc: ImportMapType, importLine: string) => ({
...acc,
[importLine]: importLine.replace(/.css/, ".css?inline"),
}),
{}
);
`; `;
fs.writeFileSync(path.join(__dirname, "..", ".storybook", "css-import-maps.ts"), outputFile, { fs.writeFileSync(path.join(__dirname, "..", ".storybook", "css-import-maps.ts"), outputFile, {

View File

@ -7975,140 +7975,186 @@ Bindings to groups/users are checked against the user of the event.</source>
</trans-unit> </trans-unit>
<trans-unit id="s7513372fe60f6387"> <trans-unit id="s7513372fe60f6387">
<source>Event volume</source> <source>Event volume</source>
<target>Ēvēńţ vōĺũmē</target>
</trans-unit> </trans-unit>
<trans-unit id="s047a5f0211fedc72"> <trans-unit id="s047a5f0211fedc72">
<source>Require Outpost (flow can only be executed from an outpost).</source> <source>Require Outpost (flow can only be executed from an outpost).</source>
<target>Ŕēǫũĩŕē Ōũţƥōśţ (ƒĺōŵ ćàń ōńĺŷ ƀē ēxēćũţēď ƒŕōm àń ōũţƥōśţ).</target>
</trans-unit> </trans-unit>
<trans-unit id="s3271da6c18c25b18"> <trans-unit id="s3271da6c18c25b18">
<source>Connection settings.</source> <source>Connection settings.</source>
<target>Ćōńńēćţĩōń śēţţĩńĝś.</target>
</trans-unit> </trans-unit>
<trans-unit id="s2f4ca2148183d692"> <trans-unit id="s2f4ca2148183d692">
<source>Successfully updated endpoint.</source> <source>Successfully updated endpoint.</source>
<target>Śũććēśśƒũĺĺŷ ũƥďàţēď ēńďƥōĩńţ.</target>
</trans-unit> </trans-unit>
<trans-unit id="s5adee855dbe191d9"> <trans-unit id="s5adee855dbe191d9">
<source>Successfully created endpoint.</source> <source>Successfully created endpoint.</source>
<target>Śũććēśśƒũĺĺŷ ćŕēàţēď ēńďƥōĩńţ.</target>
</trans-unit> </trans-unit>
<trans-unit id="s61e136c0658e27d5"> <trans-unit id="s61e136c0658e27d5">
<source>Protocol</source> <source>Protocol</source>
<target>Ƥŕōţōćōĺ</target>
</trans-unit> </trans-unit>
<trans-unit id="sa062b019ff0c8809"> <trans-unit id="sa062b019ff0c8809">
<source>RDP</source> <source>RDP</source>
<target>ŔĎƤ</target>
</trans-unit> </trans-unit>
<trans-unit id="s97f9bf19fa5b57d1"> <trans-unit id="s97f9bf19fa5b57d1">
<source>SSH</source> <source>SSH</source>
<target>ŚŚĤ</target>
</trans-unit> </trans-unit>
<trans-unit id="s7c100119e9ffcc32"> <trans-unit id="s7c100119e9ffcc32">
<source>VNC</source> <source>VNC</source>
<target>VŃĆ</target>
</trans-unit> </trans-unit>
<trans-unit id="s6b05f9d8801fc14f"> <trans-unit id="s6b05f9d8801fc14f">
<source>Host</source> <source>Host</source>
<target>Ĥōśţ</target>
</trans-unit> </trans-unit>
<trans-unit id="sb474f652a2c2fc76"> <trans-unit id="sb474f652a2c2fc76">
<source>Hostname/IP to connect to.</source> <source>Hostname/IP to connect to.</source>
<target>Ĥōśţńàmē/ĨƤ ţō ćōńńēćţ ţō.</target>
</trans-unit> </trans-unit>
<trans-unit id="s8276649077e8715c"> <trans-unit id="s8276649077e8715c">
<source>Endpoint(s)</source> <source>Endpoint(s)</source>
<target>Ēńďƥōĩńţ(ś)</target>
</trans-unit> </trans-unit>
<trans-unit id="sf1dabfe0fe8a75ad"> <trans-unit id="sf1dabfe0fe8a75ad">
<source>Update Endpoint</source> <source>Update Endpoint</source>
<target>Ũƥďàţē Ēńďƥōĩńţ</target>
</trans-unit> </trans-unit>
<trans-unit id="s008496c7716b9812"> <trans-unit id="s008496c7716b9812">
<source>These bindings control which users will have access to this endpoint. Users must also have access to the application.</source> <source>These bindings control which users will have access to this endpoint. Users must also have access to the application.</source>
<target>Ţĥēśē ƀĩńďĩńĝś ćōńţŕōĺ ŵĥĩćĥ ũśēŕś ŵĩĺĺ ĥàvē àććēśś ţō ţĥĩś ēńďƥōĩńţ. Ũśēŕś mũśţ àĺśō ĥàvē àććēśś ţō ţĥē àƥƥĺĩćàţĩōń.</target>
</trans-unit> </trans-unit>
<trans-unit id="s38e7cd1a24e70faa"> <trans-unit id="s38e7cd1a24e70faa">
<source>Create Endpoint</source> <source>Create Endpoint</source>
<target>Ćŕēàţē Ēńďƥōĩńţ</target>
</trans-unit> </trans-unit>
<trans-unit id="s4770c10e5b1c028c"> <trans-unit id="s4770c10e5b1c028c">
<source>RAC is in preview.</source> <source>RAC is in preview.</source>
<target>ŔÀĆ ĩś ĩń ƥŕēvĩēŵ.</target>
</trans-unit> </trans-unit>
<trans-unit id="s168565f5ac74a89f"> <trans-unit id="s168565f5ac74a89f">
<source>Update RAC Provider</source> <source>Update RAC Provider</source>
<target>Ũƥďàţē ŔÀĆ Ƥŕōvĩďēŕ</target>
</trans-unit> </trans-unit>
<trans-unit id="s8465a2caa2d9ea5d"> <trans-unit id="s8465a2caa2d9ea5d">
<source>Endpoints</source> <source>Endpoints</source>
<target>Ēńďƥōĩńţś</target>
</trans-unit> </trans-unit>
<trans-unit id="s9857d883d8eb98fc"> <trans-unit id="s9857d883d8eb98fc">
<source>General settings</source> <source>General settings</source>
<target>Ĝēńēŕàĺ śēţţĩńĝś</target>
</trans-unit> </trans-unit>
<trans-unit id="sd2066881798a1b96"> <trans-unit id="sd2066881798a1b96">
<source>RDP settings</source> <source>RDP settings</source>
<target>ŔĎƤ śēţţĩńĝś</target>
</trans-unit> </trans-unit>
<trans-unit id="sb864dc36a463a155"> <trans-unit id="sb864dc36a463a155">
<source>Ignore server certificate</source> <source>Ignore server certificate</source>
<target>Ĩĝńōŕē śēŕvēŕ ćēŕţĩƒĩćàţē</target>
</trans-unit> </trans-unit>
<trans-unit id="s20366a8d1eaaca54"> <trans-unit id="s20366a8d1eaaca54">
<source>Enable wallpaper</source> <source>Enable wallpaper</source>
<target>Ēńàƀĺē ŵàĺĺƥàƥēŕ</target>
</trans-unit> </trans-unit>
<trans-unit id="s1e44c5350ef7598c"> <trans-unit id="s1e44c5350ef7598c">
<source>Enable font-smoothing</source> <source>Enable font-smoothing</source>
<target>Ēńàƀĺē ƒōńţ-śmōōţĥĩńĝ</target>
</trans-unit> </trans-unit>
<trans-unit id="s04ff5d6ae711e6d6"> <trans-unit id="s04ff5d6ae711e6d6">
<source>Enable full window dragging</source> <source>Enable full window dragging</source>
<target>Ēńàƀĺē ƒũĺĺ ŵĩńďōŵ ďŕàĝĝĩńĝ</target>
</trans-unit> </trans-unit>
<trans-unit id="s663ccbfdf27e8dd0"> <trans-unit id="s663ccbfdf27e8dd0">
<source>Network binding</source> <source>Network binding</source>
<target>Ńēţŵōŕķ ƀĩńďĩńĝ</target>
</trans-unit> </trans-unit>
<trans-unit id="sb108a06693c67753"> <trans-unit id="sb108a06693c67753">
<source>No binding</source> <source>No binding</source>
<target>Ńō ƀĩńďĩńĝ</target>
</trans-unit> </trans-unit>
<trans-unit id="s5aab90c74f1233b8"> <trans-unit id="s5aab90c74f1233b8">
<source>Bind ASN</source> <source>Bind ASN</source>
<target>ßĩńď ÀŚŃ</target>
</trans-unit> </trans-unit>
<trans-unit id="s488303b048afe83b"> <trans-unit id="s488303b048afe83b">
<source>Bind ASN and Network</source> <source>Bind ASN and Network</source>
<target>ßĩńď ÀŚŃ àńď Ńēţŵōŕķ</target>
</trans-unit> </trans-unit>
<trans-unit id="s3268dcfe0c8234dc"> <trans-unit id="s3268dcfe0c8234dc">
<source>Bind ASN, Network and IP</source> <source>Bind ASN, Network and IP</source>
<target>ßĩńď ÀŚŃ, Ńēţŵōŕķ àńď ĨƤ</target>
</trans-unit> </trans-unit>
<trans-unit id="s226381aca231644f"> <trans-unit id="s226381aca231644f">
<source>Configure if sessions created by this stage should be bound to the Networks they were created in.</source> <source>Configure if sessions created by this stage should be bound to the Networks they were created in.</source>
<target>Ćōńƒĩĝũŕē ĩƒ śēśśĩōńś ćŕēàţēď ƀŷ ţĥĩś śţàĝē śĥōũĺď ƀē ƀōũńď ţō ţĥē Ńēţŵōŕķś ţĥēŷ ŵēŕē ćŕēàţēď ĩń.</target>
</trans-unit> </trans-unit>
<trans-unit id="s2555a1f20f3fd93e"> <trans-unit id="s2555a1f20f3fd93e">
<source>GeoIP binding</source> <source>GeoIP binding</source>
<target>ĜēōĨƤ ƀĩńďĩńĝ</target>
</trans-unit> </trans-unit>
<trans-unit id="s3d63c78f93c9a92e"> <trans-unit id="s3d63c78f93c9a92e">
<source>Bind Continent</source> <source>Bind Continent</source>
<target>ßĩńď Ćōńţĩńēńţ</target>
</trans-unit> </trans-unit>
<trans-unit id="s395d5863b3a259b5"> <trans-unit id="s395d5863b3a259b5">
<source>Bind Continent and Country</source> <source>Bind Continent and Country</source>
<target>ßĩńď Ćōńţĩńēńţ àńď Ćōũńţŕŷ</target>
</trans-unit> </trans-unit>
<trans-unit id="s625ea0c32b4b136c"> <trans-unit id="s625ea0c32b4b136c">
<source>Bind Continent, Country and City</source> <source>Bind Continent, Country and City</source>
<target>ßĩńď Ćōńţĩńēńţ, Ćōũńţŕŷ àńď Ćĩţŷ</target>
</trans-unit> </trans-unit>
<trans-unit id="s4bc7a1a88961be90"> <trans-unit id="s4bc7a1a88961be90">
<source>Configure if sessions created by this stage should be bound to their GeoIP-based location</source> <source>Configure if sessions created by this stage should be bound to their GeoIP-based location</source>
<target>Ćōńƒĩĝũŕē ĩƒ śēśśĩōńś ćŕēàţēď ƀŷ ţĥĩś śţàĝē śĥōũĺď ƀē ƀōũńď ţō ţĥēĩŕ ĜēōĨƤ-ƀàśēď ĺōćàţĩōń</target>
</trans-unit> </trans-unit>
<trans-unit id="sa06cd519ff151b6d"> <trans-unit id="sa06cd519ff151b6d">
<source>RAC</source> <source>RAC</source>
<target>ŔÀĆ</target>
</trans-unit> </trans-unit>
<trans-unit id="s28b99b59541f54ca"> <trans-unit id="s28b99b59541f54ca">
<source>Connection failed after <x id="0" equiv-text="${this.connectionAttempt}"/> attempts.</source> <source>Connection failed after <x id="0" equiv-text="${this.connectionAttempt}"/> attempts.</source>
<target>Ćōńńēćţĩōń ƒàĩĺēď àƒţēŕ <x id="0" equiv-text="${this.connectionAttempt}"/> àţţēmƥţś.</target>
</trans-unit> </trans-unit>
<trans-unit id="s7c7d956418e1c8c8"> <trans-unit id="s7c7d956418e1c8c8">
<source>Re-connecting in <x id="0" equiv-text="${Math.max(1, delay / 1000)}"/> second(s).</source> <source>Re-connecting in <x id="0" equiv-text="${Math.max(1, delay / 1000)}"/> second(s).</source>
<target>Ŕē-ćōńńēćţĩńĝ ĩń <x id="0" equiv-text="${Math.max(1, delay / 1000)}"/> śēćōńď(ś).</target>
</trans-unit> </trans-unit>
<trans-unit id="sfc003381f593d943"> <trans-unit id="sfc003381f593d943">
<source>Connecting...</source> <source>Connecting...</source>
<target>Ćōńńēćţĩńĝ...</target>
</trans-unit> </trans-unit>
<trans-unit id="s31aa94a0b3c7edb2"> <trans-unit id="s31aa94a0b3c7edb2">
<source>Select endpoint to connect to</source> <source>Select endpoint to connect to</source>
<target>Śēĺēćţ ēńďƥōĩńţ ţō ćōńńēćţ ţō</target>
</trans-unit> </trans-unit>
<trans-unit id="sa2ea0fcd3ffa80e0"> <trans-unit id="sa2ea0fcd3ffa80e0">
<source>Connection expiry</source> <source>Connection expiry</source>
<target>Ćōńńēćţĩōń ēxƥĩŕŷ</target>
</trans-unit> </trans-unit>
<trans-unit id="s6dd297c217729828"> <trans-unit id="s6dd297c217729828">
<source>Determines how long a session lasts before being disconnected and requiring re-authorization.</source> <source>Determines how long a session lasts before being disconnected and requiring re-authorization.</source>
<target>Ďēţēŕmĩńēś ĥōŵ ĺōńĝ à śēśśĩōń ĺàśţś ƀēƒōŕē ƀēĩńĝ ďĩśćōńńēćţēď àńď ŕēǫũĩŕĩńĝ ŕē-àũţĥōŕĩźàţĩōń.</target>
</trans-unit> </trans-unit>
<trans-unit id="scc7f34824150bfb8"> <trans-unit id="scc7f34824150bfb8">
<source>Provider require enterprise.</source> <source>Provider require enterprise.</source>
<target>Ƥŕōvĩďēŕ ŕēǫũĩŕē ēńţēŕƥŕĩśē.</target>
</trans-unit> </trans-unit>
<trans-unit id="s31f1afc1bfe1cb3a"> <trans-unit id="s31f1afc1bfe1cb3a">
<source>Learn more</source> <source>Learn more</source>
<target>Ĺēàŕń mōŕē</target>
</trans-unit> </trans-unit>
<trans-unit id="sc39f6abf0daedb0f"> <trans-unit id="sc39f6abf0daedb0f">
<source>Maximum concurrent connections</source> <source>Maximum concurrent connections</source>
<target>Màxĩmũm ćōńćũŕŕēńţ ćōńńēćţĩōńś</target>
</trans-unit> </trans-unit>
<trans-unit id="s62418cbcd2a25498"> <trans-unit id="s62418cbcd2a25498">
<source>Maximum concurrent allowed connections to this endpoint. Can be set to -1 to disable the limit.</source> <source>Maximum concurrent allowed connections to this endpoint. Can be set to -1 to disable the limit.</source>
<target>Màxĩmũm ćōńćũŕŕēńţ àĺĺōŵēď ćōńńēćţĩōńś ţō ţĥĩś ēńďƥōĩńţ. Ćàń ƀē śēţ ţō -1 ţō ďĩśàƀĺē ţĥē ĺĩmĩţ.</target>
</trans-unit> </trans-unit>
</body></file></xliff> </body></file></xliff>