make admin-ui build as a library (#30268)
* make admin-ui build as a library Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * fix merge errors Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * fix input Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * added null check Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * renamed workspace Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> * PR review Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com> --------- Signed-off-by: Erik Jan de Wit <erikjan.dewit@gmail.com>
This commit is contained in:
parent
4edbd1549e
commit
0caca2d6f5
9 changed files with 591 additions and 218 deletions
4
.github/workflows/js-ci.yml
vendored
4
.github/workflows/js-ci.yml
vendored
|
@ -130,7 +130,7 @@ jobs:
|
|||
if: needs.conditional.outputs.js-ci == 'true'
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
WORKSPACE: admin-ui
|
||||
WORKSPACE: keycloak-admin-ui
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
|
@ -223,7 +223,7 @@ jobs:
|
|||
if: needs.conditional.outputs.js-ci == 'true'
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
WORKSPACE: admin-ui
|
||||
WORKSPACE: keycloak-admin-ui
|
||||
strategy:
|
||||
matrix:
|
||||
container: [1, 2, 3, 4, 5]
|
||||
|
|
|
@ -17,7 +17,7 @@ npm i @keycloak/keycloak-account-ui
|
|||
To use these pages you'll need to add `KeycloakProvider` in your component hierarchy to setup what client, realm and url to use.
|
||||
|
||||
```jsx
|
||||
import { KeycloakProvider } from "@keycloak/keycloak-account-ui";
|
||||
import { KeycloakProvider } from "@keycloak/keycloak-ui-shared";
|
||||
|
||||
//...
|
||||
|
||||
|
|
|
@ -70,6 +70,7 @@ export const PersonalInfo = () => {
|
|||
);
|
||||
await savePersonalInfo(context, { ...user, attributes });
|
||||
const locale = attributes["locale"]?.toString();
|
||||
if (locale)
|
||||
i18n.changeLanguage(locale, (error) => {
|
||||
if (error) {
|
||||
console.warn("Error(s) loading locale", locale, error);
|
||||
|
|
76
js/apps/admin-ui/CONTRIBUTING.md
Normal file
76
js/apps/admin-ui/CONTRIBUTING.md
Normal file
|
@ -0,0 +1,76 @@
|
|||
# Keycloak Admin UI
|
||||
|
||||
This project is the next generation of the Keycloak Administration UI. It is written with React and [PatternFly 4](https://www.patternfly.org/v4/) and uses [Vite](https://vitejs.dev/guide/) and [Cypress](https://docs.cypress.io/guides/overview/why-cypress).
|
||||
|
||||
## Development
|
||||
|
||||
### Prerequisites
|
||||
|
||||
Make sure that you have Node.js version 18 (or later) installed on your system. If you do not have Node.js installed we recommend using [Node Version Manager](https://github.com/nvm-sh/nvm) to install it.
|
||||
|
||||
You can find out which version of Node.js you are using by running the following command:
|
||||
|
||||
```bash
|
||||
node --version
|
||||
```
|
||||
|
||||
In order to run the Keycloak server you will also have to install the Java Development Kit (JDK). We recommend that you use the same version of the JDK as [required by the Keycloak server](https://github.com/keycloak/keycloak/blob/main/docs/building.md#building-from-source).
|
||||
|
||||
### Running the Keycloak server
|
||||
|
||||
See the instructions in the [Keycloak server app](../keycloak-server/README.md).
|
||||
|
||||
### Running the development server
|
||||
|
||||
Now that the Keycloak sever is running it's time to run the development server for the Admin UI. This server is used to build the Admin UI in a manner that it can be iterated on quickly in a browser, using features such as [Hot Module Replacement (HMR)](https://vitejs.dev/guide/features.html#hot-module-replacement) and [Fast Refresh](https://www.npmjs.com/package/react-refresh).
|
||||
|
||||
To start the development server run the following command:
|
||||
|
||||
```bash
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
Once the process of optimization is done your browser will automatically open your local host on port `8080`. From here you will be redirected to the Keycloak server to authenticate, which you can do with the default credentials (`admin`/`admin`).
|
||||
|
||||
You can now start making changes to the source code, and they will be reflected in your browser.
|
||||
|
||||
## Building as a Keycloak theme
|
||||
|
||||
If you want to build the application using Maven and produce a JAR that can be installed directly into Keycloak, check out the [Keycloak theme documentation](../../keycloak-theme/README.md).
|
||||
|
||||
## Linting
|
||||
|
||||
Every time you create a commit it should be automatically linted and formatted for you. It is also possible to trigger the linting manually:
|
||||
|
||||
```bash
|
||||
pnpm lint
|
||||
```
|
||||
|
||||
## Integration testing with Cypress
|
||||
|
||||
This repository contains integration tests developed with the [Cypress framework](https://www.cypress.io/).
|
||||
|
||||
### Prerequisites
|
||||
|
||||
Ensure the Keycloak and development server are running as [outlined previously](#running-the-keycloak-server) in this document.
|
||||
|
||||
### Running the tests
|
||||
|
||||
You can run the tests using the interactive graphical user interface using the following command:
|
||||
|
||||
```bash
|
||||
pnpm cy:open
|
||||
```
|
||||
|
||||
Alternatively the tests can also run headless as follows:
|
||||
|
||||
```
|
||||
pnpm cy:run
|
||||
```
|
||||
|
||||
For more information about the Cypress command-line interface consult [the documentation](https://docs.cypress.io/guides/guides/command-line).
|
||||
|
||||
### Project Structure
|
||||
|
||||
You can find information about the project structure in the [official Cypress documentation](https://docs.cypress.io/guides/core-concepts/writing-and-organizing-tests#Folder-structure).
|
||||
Read more about [how to write tests](./cypress/WRITING_TESTS.md)
|
|
@ -1,76 +1,59 @@
|
|||
# Keycloak Admin UI
|
||||
|
||||
This project is the next generation of the Keycloak Administration UI. It is written with React and [PatternFly 4](https://www.patternfly.org/v4/) and uses [Vite](https://vitejs.dev/guide/) and [Cypress](https://docs.cypress.io/guides/overview/why-cypress).
|
||||
This project is the next generation of the Keycloak Admin UI. It is written with React and [PatternFly 4](https://www.patternfly.org/v4/) and uses [Vite](https://vitejs.dev/guide/).
|
||||
|
||||
## Development
|
||||
## Features
|
||||
|
||||
### Prerequisites
|
||||
Contains all the "pages" from the admin-ui as re-usable components, all the functions to save and the side menu to use in your own build of the admin-ui
|
||||
|
||||
Make sure that you have Node.js version 18 (or later) installed on your system. If you do not have Node.js installed we recommend using [Node Version Manager](https://github.com/nvm-sh/nvm) to install it.
|
||||
|
||||
You can find out which version of Node.js you are using by running the following command:
|
||||
## Install
|
||||
|
||||
```bash
|
||||
node --version
|
||||
npm i @keycloak/keycloak-admin-ui
|
||||
```
|
||||
|
||||
In order to run the Keycloak server you will also have to install the Java Development Kit (JDK). We recommend that you use the same version of the JDK as [required by the Keycloak server](https://github.com/keycloak/keycloak/blob/main/docs/building.md#building-from-source).
|
||||
## Usage
|
||||
|
||||
### Running the Keycloak server
|
||||
To use these pages you'll need to add `KeycloakProvider` in your component hierarchy to setup what client, realm and url to use.
|
||||
|
||||
See the instructions in the [Keycloak server app](../keycloak-server/README.md).
|
||||
```jsx
|
||||
import { KeycloakProvider } from "@keycloak/keycloak-ui-shared";
|
||||
|
||||
### Running the development server
|
||||
//...
|
||||
|
||||
Now that the Keycloak sever is running it's time to run the development server for the Admin UI. This server is used to build the Admin UI in a manner that it can be iterated on quickly in a browser, using features such as [Hot Module Replacement (HMR)](https://vitejs.dev/guide/features.html#hot-module-replacement) and [Fast Refresh](https://www.npmjs.com/package/react-refresh).
|
||||
<KeycloakProvider environment={{
|
||||
authServerUrl: "http://localhost:8080",
|
||||
realm: "master",
|
||||
clientId: "security-admin-console"
|
||||
}}>
|
||||
{/* rest of you application */}
|
||||
</KeycloakProvider>
|
||||
```
|
||||
|
||||
To start the development server run the following command:
|
||||
### Translation
|
||||
|
||||
For the translation we use `react-i18next` you can [set it up](https://react.i18next.com/) as described on their website.
|
||||
If you want to use the translations that are provided then you need to add `i18next-http-backend` to your project and add:
|
||||
|
||||
```ts
|
||||
|
||||
backend: {
|
||||
loadPath: `http://localhost:8180/resources/master/admin/{{lng}}`,
|
||||
parse: (data: string) => {
|
||||
const messages = JSON.parse(data);
|
||||
|
||||
const result: Record<string, string> = {};
|
||||
messages.forEach((v) => (result[v.key] = v.value));
|
||||
return result;
|
||||
},
|
||||
},
|
||||
```
|
||||
to the `i18next` config object.
|
||||
|
||||
## Building
|
||||
|
||||
To build a library instead of an app you need to add the `LIB=true` environment variable.
|
||||
|
||||
```bash
|
||||
pnpm dev
|
||||
LIB=true pnpm run build
|
||||
```
|
||||
|
||||
Once the process of optimization is done your browser will automatically open your local host on port `8080`. From here you will be redirected to the Keycloak server to authenticate, which you can do with the default credentials (`admin`/`admin`).
|
||||
|
||||
You can now start making changes to the source code, and they will be reflected in your browser.
|
||||
|
||||
## Building as a Keycloak theme
|
||||
|
||||
If you want to build the application using Maven and produce a JAR that can be installed directly into Keycloak, check out the [Keycloak theme documentation](../../keycloak-theme/README.md).
|
||||
|
||||
## Linting
|
||||
|
||||
Every time you create a commit it should be automatically linted and formatted for you. It is also possible to trigger the linting manually:
|
||||
|
||||
```bash
|
||||
pnpm lint
|
||||
```
|
||||
|
||||
## Integration testing with Cypress
|
||||
|
||||
This repository contains integration tests developed with the [Cypress framework](https://www.cypress.io/).
|
||||
|
||||
### Prerequisites
|
||||
|
||||
Ensure the Keycloak and development server are running as [outlined previously](#running-the-keycloak-server) in this document.
|
||||
|
||||
### Running the tests
|
||||
|
||||
You can run the tests using the interactive graphical user interface using the following command:
|
||||
|
||||
```bash
|
||||
pnpm cy:open
|
||||
```
|
||||
|
||||
Alternatively the tests can also run headless as follows:
|
||||
|
||||
```
|
||||
pnpm cy:run
|
||||
```
|
||||
|
||||
For more information about the Cypress command-line interface consult [the documentation](https://docs.cypress.io/guides/guides/command-line).
|
||||
|
||||
### Project Structure
|
||||
|
||||
You can find information about the project structure in the [official Cypress documentation](https://docs.cypress.io/guides/core-concepts/writing-and-organizing-tests#Folder-structure).
|
||||
Read more about [how to write tests](./cypress/WRITING_TESTS.md)
|
||||
|
|
|
@ -1,7 +1,21 @@
|
|||
{
|
||||
"name": "admin-ui",
|
||||
"private": true,
|
||||
"name": "@keycloak/keycloak-admin-ui",
|
||||
"version": "999.0.0-SNAPSHOT",
|
||||
"type": "module",
|
||||
"main": "lib/keycloak-admin-ui.js",
|
||||
"types": "./lib/keycloak-admin-ui.d.ts",
|
||||
"exports": {
|
||||
".": {
|
||||
"import": "./lib/keycloak-admin-ui.js",
|
||||
"types": "./lib/keycloak-admin-ui.d.ts"
|
||||
}
|
||||
},
|
||||
"files": [
|
||||
"lib"
|
||||
],
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"scripts": {
|
||||
"dev": "wireit",
|
||||
"build": "wireit",
|
||||
|
@ -113,6 +127,7 @@
|
|||
"uuid": "^10.0.0",
|
||||
"vite": "^5.3.3",
|
||||
"vite-plugin-checker": "^0.7.0",
|
||||
"vite-plugin-dts": "^3.9.1",
|
||||
"vitest": "^1.6.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,2 +1,320 @@
|
|||
export * as ClientsSection from "./clients/ClientsSection";
|
||||
export * as AuthenticationSection from "./authentication/AuthenticationSection";
|
||||
export { AddMapperDialog } from "./client-scopes/add/MapperDialog";
|
||||
export { MapperList } from "./client-scopes/details/MapperList";
|
||||
export * as MappingDetails from "./client-scopes/details/MappingDetails";
|
||||
export { ScopeForm } from "./client-scopes/details/ScopeForm";
|
||||
export { SearchDropdown } from "./client-scopes/details/SearchFilter";
|
||||
export { ChangeTypeDropdown } from "./client-scopes/ChangeTypeDropdown";
|
||||
export * as ClientScopeSection from "./client-scopes/ClientScopesSection";
|
||||
export * as CreateClientScope from "./client-scopes/CreateClientScope";
|
||||
export * as EditClientScope from "./client-scopes/EditClientScope";
|
||||
export { AuthorizationSettings } from "./clients/authorization/Settings";
|
||||
export { AccessSettings } from "./clients/add/AccessSettings";
|
||||
export { CapabilityConfig } from "./clients/add/CapabilityConfig";
|
||||
export { GeneralSettings } from "./clients/add/GeneralSettings";
|
||||
export { LoginSettings } from "./clients/add/LoginSettings";
|
||||
export { LoginSettingsPanel } from "./clients/add/LoginSettingsPanel";
|
||||
export { LogoutPanel } from "./clients/add/LogoutPanel";
|
||||
export * as NewClientForm from "./clients/add/NewClientForm";
|
||||
export { SamlConfig } from "./clients/add/SamlConfig";
|
||||
export { SamlSignature } from "./clients/add/SamlSignature";
|
||||
export { AddHostDialog } from "./clients/advanced/AddHostDialog";
|
||||
export { AdvancedSettings } from "./clients/advanced/AdvancedSettings";
|
||||
export { ApplicationUrls } from "./clients/advanced/ApplicationUrls";
|
||||
export { AuthenticationOverrides } from "./clients/advanced/AuthenticationOverrides";
|
||||
export { ClusteringPanel } from "./clients/advanced/ClusteringPanel";
|
||||
export { FineGrainOpenIdConnect } from "./clients/advanced/FineGrainOpenIdConnect";
|
||||
export { OpenIdConnectCompatibilityModes } from "./clients/advanced/OpenIdConnectCompatibilityModes";
|
||||
export { TokenLifespan } from "./clients/advanced/TokenLifespan";
|
||||
export { AuthorizationResources } from "./clients/authorization/Resources";
|
||||
export { AuthorizationScopes } from "./clients/authorization/Scopes";
|
||||
export { AuthorizationPolicies } from "./clients/authorization/Policies";
|
||||
export { AuthorizationPermissions } from "./clients/authorization/Permissions";
|
||||
export { AuthorizationEvaluate } from "./clients/authorization/AuthorizationEvaluate";
|
||||
export { AuthorizationExport } from "./clients/authorization/AuthorizationExport";
|
||||
export { ClientSecret } from "./clients/credentials/ClientSecret";
|
||||
export { Credentials } from "./clients/credentials/Credentials";
|
||||
export { SignedJWT } from "./clients/credentials/SignedJWT";
|
||||
export { X509 } from "./clients/credentials/X509";
|
||||
export * as ImportForm from "./clients/import/ImportForm";
|
||||
export { AccessTokenDialog } from "./clients/initial-access/AccessTokenDialog";
|
||||
export * as CreateInitialAccessToken from "./clients/initial-access/CreateInitialAccessToken";
|
||||
export * as InitialAccessTokenList from "./clients/initial-access/InitialAccessTokenList";
|
||||
export { Certificate } from "./clients/keys/Certificate";
|
||||
export { ExportSamlKeyDialog } from "./clients/keys/ExportSamlKeyDialog";
|
||||
export { GenerateKeyDialog } from "./clients/keys/GenerateKeyDialog";
|
||||
export { ImportKeyDialog } from "./clients/keys/ImportKeyDialog";
|
||||
export { Keys } from "./clients/keys/Keys";
|
||||
export { SamlImportKeyDialog } from "./clients/keys/SamlImportKeyDialog";
|
||||
export { SamlKeys } from "./clients/keys/SamlKeys";
|
||||
export { SamlKeysDialog } from "./clients/keys/SamlKeysDialog";
|
||||
export { StoreSettings } from "./clients/keys/StoreSettings";
|
||||
export { AddProviderDialog } from "./clients/registration/AddProviderDialog";
|
||||
export { ClientRegistration } from "./clients/registration/ClientRegistration";
|
||||
export { ClientRegistrationList } from "./clients/registration/ClientRegistrationList";
|
||||
export * as DetailProvider from "./clients/registration/DetailProvider";
|
||||
export * as CreateClientRole from "./clients/roles/CreateClientRole";
|
||||
export { AddScopeDialog } from "./clients/scopes/AddScopeDialog";
|
||||
export { ClientScopes } from "./clients/scopes/ClientScopes";
|
||||
export { CopyToClipboardButton } from "./clients/scopes/CopyToClipboardButton";
|
||||
export { DedicatedScope } from "./clients/scopes/DedicatedScope";
|
||||
export * as DedicatedScopes from "./clients/scopes/DedicatedScopes";
|
||||
export { EvaluateScopes } from "./clients/scopes/EvaluateScopes";
|
||||
export { GeneratedCodeTab } from "./clients/scopes/GeneratedCodeTab";
|
||||
export { ServiceAccount } from "./clients/service-account/ServiceAccount";
|
||||
export { AdvancedTab } from "./clients/AdvancedTab";
|
||||
export { ClientDescription } from "./clients/ClientDescription";
|
||||
export * as ClientDetails from "./clients/ClientDetails";
|
||||
export { ClientSessions } from "./clients/ClientSessions";
|
||||
export { ClientSettings } from "./clients/ClientSettings";
|
||||
export * as ClientsSection from "./clients/ClientsSection";
|
||||
export { AlertPanel } from "./components/alert/AlertPanel";
|
||||
export { useAlerts, AlertProvider } from "./components/alert/Alerts";
|
||||
export { GroupBreadCrumbs } from "./components/bread-crumb/GroupBreadCrumbs";
|
||||
export { PageBreadCrumbs } from "./components/bread-crumb/PageBreadCrumbs";
|
||||
export { ClientSelect } from "./components/client/ClientSelect";
|
||||
export { CellDropdown as ClientScopeCellDropdown } from "./components/client-scope/ClientScopeTypes";
|
||||
export {
|
||||
useConfirmDialog,
|
||||
ConfirmDialogModal,
|
||||
} from "./components/confirm-dialog/ConfirmDialog";
|
||||
export { DownloadDialog } from "./components/download-dialog/DownloadDialog";
|
||||
export * as DropdownPanel from "./components/dropdown-panel/DropdownPanel";
|
||||
export { BooleanComponent } from "./components/dynamic/BooleanComponent";
|
||||
export { ClientSelectComponent } from "./components/dynamic/ClientSelectComponent";
|
||||
export { DynamicComponents } from "./components/dynamic/DynamicComponents";
|
||||
export { FileComponent } from "./components/dynamic/FileComponent";
|
||||
export { GroupComponent } from "./components/dynamic/GroupComponent";
|
||||
export { ListComponent } from "./components/dynamic/ListComponent";
|
||||
export { MapComponent } from "./components/dynamic/MapComponent";
|
||||
export { MultiValuedListComponent } from "./components/dynamic/MultivaluedListComponent";
|
||||
export { MultiValuedStringComponent } from "./components/dynamic/MultivaluedStringComponent";
|
||||
export { PasswordComponent } from "./components/dynamic/PasswordComponent";
|
||||
export { RoleComponent } from "./components/dynamic/RoleComponent";
|
||||
export { ScriptComponent } from "./components/dynamic/ScriptComponent";
|
||||
export { StringComponent } from "./components/dynamic/StringComponent";
|
||||
export { TextComponent } from "./components/dynamic/TextComponent";
|
||||
export { UrlComponent } from "./components/dynamic/UrlComponent";
|
||||
export { UserProfileAttributeListComponent } from "./components/dynamic/UserProfileAttributeListComponent";
|
||||
export { ErrorRenderer } from "./components/error/ErrorRenderer";
|
||||
export { FormattedLink } from "./components/external-link/FormattedLink";
|
||||
export { FixedButtonsGroup } from "./components/form/FixedButtonGroup";
|
||||
export { FormAccess } from "./components/form/FormAccess";
|
||||
export { GroupPath } from "./components/group/GroupPath";
|
||||
export { GroupPickerDialog } from "./components/group/GroupPickerDialog";
|
||||
export { HelpHeader } from "./components/help-enabler/HelpHeader";
|
||||
export { FileUploadForm } from "./components/json-file-upload/FileUploadForm";
|
||||
export { JsonFileUpload } from "./components/json-file-upload/JsonFileUpload";
|
||||
export { AttributesForm } from "./components/key-value-form/AttributeForm";
|
||||
export { KeySelect } from "./components/key-value-form/KeySelect";
|
||||
export { KeyValueInput } from "./components/key-value-form/KeyValueInput";
|
||||
export { ValueSelect } from "./components/key-value-form/ValueSelect";
|
||||
export { ClickableCard } from "./components/keycloak-card/ClickableCard";
|
||||
export { KeycloakCard } from "./components/keycloak-card/KeycloakCard";
|
||||
export { KeycloakSpinner } from "./components/keycloak-spinner/KeycloakSpinner";
|
||||
export { ListEmptyState } from "./components/list-empty-state/ListEmptyState";
|
||||
export { MultiLineInput } from "./components/multi-line-input/MultiLineInput";
|
||||
export { PermissionsTab } from "./components/permission-tab/PermissionTab";
|
||||
export { RealmSelector } from "./components/realm-selector/RealmSelector";
|
||||
export { RoleForm } from "./components/role-form/RoleForm";
|
||||
export { AddRoleMappingModal } from "./components/role-mapping/AddRoleMappingModal";
|
||||
export { RoleMapping } from "./components/role-mapping/RoleMapping";
|
||||
export { RolesList } from "./components/roles-list/RolesList";
|
||||
export { RoutableTabs } from "./components/routable-tabs/RoutableTabs";
|
||||
export { KeycloakDataTable } from "./components/table-toolbar/KeycloakDataTable";
|
||||
export { PaginatingTableToolbar } from "./components/table-toolbar/PaginatingTableToolbar";
|
||||
export { TableToolbar } from "./components/table-toolbar/TableToolbar";
|
||||
export { TimeSelector } from "./components/time-selector/TimeSelector";
|
||||
export { TimeSelectorControl } from "./components/time-selector/TimeSelectorControl";
|
||||
export { TimeSelectorForm } from "./components/time-selector/TimeSelectorForm";
|
||||
export { UserDataTable } from "./components/users/UserDataTable";
|
||||
export { UserDataTableAttributeSearchForm } from "./components/users/UserDataTableAttributeSearchForm";
|
||||
export { UserDataTableToolbarItems } from "./components/users/UserDataTableToolbarItems";
|
||||
export { ViewHeader } from "./components/view-header/ViewHeader";
|
||||
export { WizardSectionHeader } from "./components/wizard-section-header/WizardSectionHeader";
|
||||
export { DefaultSwitchControl } from "./components/SwitchControl";
|
||||
export { useAccess, AccessContext } from "./context/access/Access";
|
||||
export { fetchAdminUI } from "./context/auth/admin-ui-endpoint";
|
||||
export {
|
||||
useRealm,
|
||||
RealmContextProvider,
|
||||
} from "./context/realm-context/RealmContext";
|
||||
export {
|
||||
useServerInfo,
|
||||
ServerInfoProvider,
|
||||
} from "./context/server-info/ServerInfoProvider";
|
||||
export { useWhoAmI, WhoAmIContextProvider } from "./context/whoami/WhoAmI";
|
||||
export {
|
||||
useErrorBoundary,
|
||||
ErrorBoundaryProvider,
|
||||
} from "./context/ErrorBoundary";
|
||||
export { useRecentRealms, RecentRealmsProvider } from "./context/RecentRealms";
|
||||
export * as DashboardSection from "./dashboard/Dashboard";
|
||||
export { ProviderInfo } from "./dashboard/ProviderInfo";
|
||||
export { AdminEvents } from "./events/AdminEvents";
|
||||
export * as EventsSection from "./events/EventsSection";
|
||||
export { ResourceLink } from "./events/ResourceLinks";
|
||||
export { CheckableTreeView } from "./groups/components/CheckableTreeView";
|
||||
export { DeleteGroup } from "./groups/components/DeleteGroup";
|
||||
export { GroupToolbar } from "./groups/components/GroupToolbar";
|
||||
export { GroupTree } from "./groups/components/GroupTree";
|
||||
export { MoveDialog } from "./groups/components/MoveDialog";
|
||||
export { GroupAttributes } from "./groups/GroupAttributes";
|
||||
export { GroupRoleMapping } from "./groups/GroupRoleMapping";
|
||||
export { GroupsModal } from "./groups/GroupsModal";
|
||||
export * as GroupsSection from "./groups/GroupsSection";
|
||||
export { GroupTable } from "./groups/GroupTable";
|
||||
export { Members } from "./groups/Members";
|
||||
export { MemberModal } from "./groups/MembersModal";
|
||||
export { useSubGroups, SubGroups } from "./groups/SubGroupsContext";
|
||||
export * as AddIdentyProvider from "./identity-providers/add/AddIdentityProvider";
|
||||
export * as AddMapper from "./identity-providers/add/AddMapper";
|
||||
export { AddMapperForm } from "./identity-providers/add/AddMapperForm";
|
||||
export * as AddOpenIdConnect from "./identity-providers/add/AddOpenIdConnect";
|
||||
export * as AddSamlConnect from "./identity-providers/add/AddSamlConnect";
|
||||
export { AdvancedSettings as IdpAdvancedSettings } from "./identity-providers/add/AdvancedSettings";
|
||||
export { DescriptorSettings } from "./identity-providers/add/DescriptorSettings";
|
||||
export * as DetailSettings from "./identity-providers/add/DetailSettings";
|
||||
export { DiscoverySettings } from "./identity-providers/add/DiscoverySettings";
|
||||
export { ExtendedNonDiscoverySettings } from "./identity-providers/add/ExtendedNonDiscoverySettings";
|
||||
export { GeneralSettings as IdpGeneralSettings } from "./identity-providers/add/GeneralSettings";
|
||||
export { OIDCAuthentication } from "./identity-providers/add/OIDCAuthentication";
|
||||
export { OIDCGeneralSettings } from "./identity-providers/add/OIDCGeneralSettings";
|
||||
export { OpenIdConnectSettings } from "./identity-providers/add/OpenIdConnectSettings";
|
||||
export { ReqAuthnConstraints } from "./identity-providers/add/ReqAuthnConstraintsSettings";
|
||||
export { SamlConnectSettings } from "./identity-providers/add/SamlConnectSettings";
|
||||
export { SamlGeneralSettings } from "./identity-providers/add/SamlGeneralSettings";
|
||||
export { ClientIdSecret } from "./identity-providers/component/ClientIdSecret";
|
||||
export { DiscoveryEndpointField } from "./identity-providers/component/DiscoveryEndpointField";
|
||||
export { DisplayOrder } from "./identity-providers/component/DisplayOrder";
|
||||
export { FormGroupField } from "./identity-providers/component/FormGroupField";
|
||||
export { RedirectUrl } from "./identity-providers/component/RedirectUrl";
|
||||
export { SwitchField } from "./identity-providers/component/SwitchField";
|
||||
export { TextField } from "./identity-providers/component/TextField";
|
||||
export * as IdentityProvidersSection from "./identity-providers/IdentityProvidersSection";
|
||||
export { ManageOrderDialog } from "./identity-providers/ManageOrderDialog";
|
||||
export { DetailOrganizationHeader } from "./organizations/DetailOraganzationHeader";
|
||||
export { IdentityProviders as OrganizationIdentityProviders } from "./organizations/IdentityProviders";
|
||||
export { InviteMemberModal } from "./organizations/InviteMemberModal";
|
||||
export { LinkIdentityProviderModal } from "./organizations/LinkIdentityProviderModal";
|
||||
export { Members as OrganizationMembers } from "./organizations/Members";
|
||||
export { OrganizationForm } from "./organizations/OrganizationForm";
|
||||
export * as OrganizationSection from "./organizations/OrganizationsSection";
|
||||
export * as Page from "./page/Page";
|
||||
export { PageHandler } from "./page/PageHandler";
|
||||
export * as PageList from "./page/PageList";
|
||||
export * as NewRealmForm from "./realm/add/NewRealmForm";
|
||||
export * as CreateRealmRole from "./realm-roles/CreateRealmRole";
|
||||
export * as RealmRolesSection from "./realm-roles/RealmRolesSection";
|
||||
export * as RealmRoleTabs from "./realm-roles/RealmRoleTabs";
|
||||
export { UsersInRoleTab } from "./realm-roles/UsersInRoleTab";
|
||||
export { AddEventTypesDialog } from "./realm-settings/event-config/AddEventTypesDialog";
|
||||
export { EventConfigForm } from "./realm-settings/event-config/EventConfigForm";
|
||||
export { EventListenersForm } from "./realm-settings/event-config/EventListenersForm";
|
||||
export { EventsTab } from "./realm-settings/event-config/EventsTab";
|
||||
export { EventsTypeTable } from "./realm-settings/event-config/EventsTypeTable";
|
||||
export { KeyProviderForm } from "./realm-settings/keys/key-providers/KeyProviderForm";
|
||||
export { KeyProviderModal } from "./realm-settings/keys/key-providers/KeyProviderModal";
|
||||
export { KeyProvidersPicker } from "./realm-settings/keys/key-providers/KeyProvidersPicker";
|
||||
export { KeysListTab } from "./realm-settings/keys/KeysListTab";
|
||||
export { KeysProvidersTab } from "./realm-settings/keys/KeysProvidersTab";
|
||||
export { KeysTab } from "./realm-settings/keys/KeysTab";
|
||||
export { EffectiveMessageBundles } from "./realm-settings/localization/EffectiveMessageBundles";
|
||||
export { LocalizationTab } from "./realm-settings/localization/LocalizationTab";
|
||||
export { RealmOverrides } from "./realm-settings/localization/RealmOverrides";
|
||||
export { BruteForceDetection } from "./realm-settings/security-defences/BruteForceDetection";
|
||||
export { HeadersForm } from "./realm-settings/security-defences/HeadersForm";
|
||||
export { HelpLinkTextInput } from "./realm-settings/security-defences/HelpLinkTextInput";
|
||||
export { SecurityDefenses } from "./realm-settings/security-defences/SecurityDefenses";
|
||||
export { Time } from "./realm-settings/security-defences/Time";
|
||||
export { AddTranslationsDialog } from "./realm-settings/user-profile/attribute/AddTranslationsDialog";
|
||||
export { AddValidatorDialog } from "./realm-settings/user-profile/attribute/AddValidatorDialog";
|
||||
export { AttributeAnnotations } from "./realm-settings/user-profile/attribute/AttributeAnnotations";
|
||||
export { AttributeGeneralSettings } from "./realm-settings/user-profile/attribute/AttributeGeneralSettings";
|
||||
export { AttributePermission } from "./realm-settings/user-profile/attribute/AttributePermission";
|
||||
export { AttributeValidations } from "./realm-settings/user-profile/attribute/AttributeValidations";
|
||||
export { ValidatorSelect } from "./realm-settings/user-profile/attribute/ValidatorSelect";
|
||||
export * as AttributesGroupDetails from "./realm-settings/user-profile/AttributesGroupDetails";
|
||||
export * as AttributesGroupForm from "./realm-settings/user-profile/AttributesGroupForm";
|
||||
export { AttributesGroupTab } from "./realm-settings/user-profile/AttributesGroupTab";
|
||||
export { AttributesTab } from "./realm-settings/user-profile/AttributesTab";
|
||||
export { JsonEditorTab } from "./realm-settings/user-profile/JsonEditorTab";
|
||||
export {
|
||||
UserProfileContext,
|
||||
useUserProfile,
|
||||
} from "./realm-settings/user-profile/UserProfileContext";
|
||||
export { UserProfileTab } from "./realm-settings/user-profile/UserProfileTab";
|
||||
export { AddClientProfileModal } from "./realm-settings/AddClientProfileModal";
|
||||
export { AddTranslationModal } from "./realm-settings/AddTranslationModal";
|
||||
export * as ClientProfileForm from "./realm-settings/ClientProfileForm";
|
||||
export * as DefaultGroupsTab from "./realm-settings/DefaultGroupsTab";
|
||||
export { RealmSettingsEmailTab } from "./realm-settings/EmailTab";
|
||||
export { RealmSettingsGeneralTab } from "./realm-settings/GeneralTab";
|
||||
export { RealmSettingsLoginTab } from "./realm-settings/LoginTab";
|
||||
export * as NewAttributeSettings from "./realm-settings/NewAttributeSettings";
|
||||
export * as NewClientPolicy from "./realm-settings/NewClientPolicy";
|
||||
export * as NewClientPolicyCondition from "./realm-settings/NewClientPolicyCondition";
|
||||
export { PartialExportDialog } from "./realm-settings/PartialExport";
|
||||
export { PartialImportDialog } from "./realm-settings/PartialImport";
|
||||
export { PoliciesTab } from "./realm-settings/PoliciesTab";
|
||||
export * as RealmSettingsSection from "./realm-settings/RealmSettingsSection";
|
||||
export { RealmSettingsTabs } from "./realm-settings/RealmSettingsTabs";
|
||||
export { RealmSettingsSessionsTab } from "./realm-settings/SessionsTab";
|
||||
export { RealmSettingsThemesTab } from "./realm-settings/ThemesTab";
|
||||
export { RealmSettingsTokensTab } from "./realm-settings/TokensTab";
|
||||
export { UserRegistration } from "./realm-settings/UserRegistration";
|
||||
export { RevocationModal } from "./sessions/RevocationModal";
|
||||
export * as SessionsSection from "./sessions/SessionsSection";
|
||||
export * as SessionsTable from "./sessions/SessionsTable";
|
||||
export {
|
||||
SearchDropdown as UserSearchDropdown,
|
||||
SearchToolbar,
|
||||
} from "./user/details/SearchFilter";
|
||||
export { CredentialDataDialog } from "./user/user-credentials/CredentialDataDialog";
|
||||
export { CredentialRow } from "./user/user-credentials/CredentialRow";
|
||||
export { InlineLabelEdit } from "./user/user-credentials/InlineLabelEdit";
|
||||
export { LifespanField } from "./user/user-credentials/LifespanField";
|
||||
export { RequiredActionMultiSelect } from "./user/user-credentials/RequiredActionMultiSelect";
|
||||
export { ResetCredentialDialog } from "./user/user-credentials/ResetCredentialDialog";
|
||||
export { ResetPasswordDialog } from "./user/user-credentials/ResetPasswordDialog";
|
||||
export * as CreateUser from "./user/CreateUser";
|
||||
export * as EditUser from "./user/EditUser";
|
||||
export { FederatedUserLink } from "./user/FederatedUserLink";
|
||||
export { UserAttributes } from "./user/UserAttributes";
|
||||
export { UserConsents } from "./user/UserConsents";
|
||||
export { UserCredentials } from "./user/UserCredentials";
|
||||
export { UserForm } from "./user/UserForm";
|
||||
export { UserGroups } from "./user/UserGroups";
|
||||
export { UserIdentityProviderLinks } from "./user/UserIdentityProviderLinks";
|
||||
export { UserIdpModal } from "./user/UserIdPModal";
|
||||
export { UserRoleMapping } from "./user/UserRoleMapping";
|
||||
export { UserSessions } from "./user/UserSessions";
|
||||
export * as UserSection from "./user/UsersSection";
|
||||
export * as CustomProviderSettings from "./user-federation/custom/CustomProviderSettings";
|
||||
export { KerberosSettingsRequired } from "./user-federation/kerberos/KerberosSettingsRequired";
|
||||
export * as LdapMapperDetails from "./user-federation/ldap/mappers/LdapMapperDetails";
|
||||
export { LdapMapperList } from "./user-federation/ldap/mappers/LdapMapperList";
|
||||
export { LdapSettingsAdvanced } from "./user-federation/ldap/LdapSettingsAdvanced";
|
||||
export { LdapSettingsConnection } from "./user-federation/ldap/LdapSettingsConnection";
|
||||
export { LdapSettingsGeneral } from "./user-federation/ldap/LdapSettingsGeneral";
|
||||
export { LdapSettingsKerberosIntegration } from "./user-federation/ldap/LdapSettingsKerberosIntegration";
|
||||
export { LdapSettingsSearching } from "./user-federation/ldap/LdapSettingsSearching";
|
||||
export { LdapSettingsSynchronization } from "./user-federation/ldap/LdapSettingsSynchronization";
|
||||
export { ExtendedHeader } from "./user-federation/shared/ExtendedHeader";
|
||||
export { Header as UserFederationHeader } from "./user-federation/shared/Header";
|
||||
export { SettingsCache } from "./user-federation/shared/SettingsCache";
|
||||
export * as CreateUserFederationLdapSettings from "./user-federation/CreateUserFederationLdapSettings";
|
||||
export { ManagePriorityDialog } from "./user-federation/ManagePriorityDialog";
|
||||
export * as UserFederationKerberosSettings from "./user-federation/UserFederationKerberosSettings";
|
||||
export { UserFederationKerberosWizard } from "./user-federation/UserFederationKerberosWizard";
|
||||
export { UserFederationLdapForm } from "./user-federation/UserFederationLdapForm";
|
||||
export * as UserFederationLdapSettings from "./user-federation/UserFederationLdapSettings";
|
||||
export { UserFederationLdapWizard } from "./user-federation/UserFederationLdapWizard";
|
||||
export * as UserFederationSection from "./user-federation/UserFederationSection";
|
||||
export { ForbiddenSection } from "./ForbiddenSection";
|
||||
export { Header } from "./PageHeader";
|
||||
export { PageNav } from "./PageNav";
|
||||
export { PageNotFoundSection } from "./PageNotFoundSection";
|
||||
export { App as AdminUi } from "./App";
|
||||
export type { Environment as AccountEnvironment } from "./environment";
|
||||
export { KeycloakProvider, useEnvironment } from "@keycloak/keycloak-ui-shared";
|
||||
|
|
|
@ -1,27 +1,50 @@
|
|||
import { defineConfig } from "vitest/config";
|
||||
import react from "@vitejs/plugin-react-swc";
|
||||
import path from "path";
|
||||
import { defineConfig, loadEnv } from "vite";
|
||||
import { checker } from "vite-plugin-checker";
|
||||
import dts from "vite-plugin-dts";
|
||||
|
||||
// https://vitejs.dev/config/
|
||||
export default defineConfig({
|
||||
export default defineConfig(({ mode }) => {
|
||||
const env = loadEnv(mode, process.cwd(), "");
|
||||
const external = ["react", "react/jsx-runtime", "react-dom"];
|
||||
const plugins = [react(), checker({ typescript: true })];
|
||||
const input = env.LIB ? undefined : "src/main.tsx";
|
||||
if (env.LIB) {
|
||||
external.push("react-router-dom");
|
||||
external.push("react-i18next");
|
||||
plugins.push(dts({ insertTypesEntry: true }));
|
||||
}
|
||||
const lib = env.LIB
|
||||
? {
|
||||
outDir: "lib",
|
||||
lib: {
|
||||
entry: path.resolve(__dirname, "src/index.ts"),
|
||||
formats: ["es"],
|
||||
},
|
||||
}
|
||||
: {
|
||||
outDir: "target/classes/theme/keycloak.v2/admin/resources",
|
||||
};
|
||||
return {
|
||||
base: "",
|
||||
server: {
|
||||
origin: "http://localhost:5174",
|
||||
port: 5174,
|
||||
},
|
||||
build: {
|
||||
outDir: "target/classes/theme/keycloak.v2/admin/resources",
|
||||
...lib,
|
||||
sourcemap: true,
|
||||
target: "esnext",
|
||||
modulePreload: false,
|
||||
cssMinify: "lightningcss",
|
||||
manifest: true,
|
||||
rollupOptions: {
|
||||
input: "src/main.tsx",
|
||||
external: ["react", "react/jsx-runtime", "react-dom"],
|
||||
input,
|
||||
external,
|
||||
},
|
||||
},
|
||||
plugins: [react(), checker({ typescript: true })],
|
||||
plugins,
|
||||
test: {
|
||||
watch: false,
|
||||
environment: "jsdom",
|
||||
|
@ -31,4 +54,5 @@ export default defineConfig({
|
|||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
});
|
||||
|
|
198
pnpm-lock.yaml
198
pnpm-lock.yaml
|
@ -170,7 +170,7 @@ importers:
|
|||
version: 5.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
admin-ui:
|
||||
specifier: 'file:'
|
||||
version: file:js/apps/admin-ui(@types/react@18.3.3)
|
||||
version: '@keycloak/keycloak-admin-ui@file:js/apps/admin-ui(@types/react@18.3.3)'
|
||||
dagre:
|
||||
specifier: ^0.8.5
|
||||
version: 0.8.5
|
||||
|
@ -282,7 +282,7 @@ importers:
|
|||
version: 1.25.1
|
||||
ts-node:
|
||||
specifier: ^10.9.2
|
||||
version: 10.9.2(@swc/core@1.5.7)(@types/node@20.14.9)(typescript@5.5.2)
|
||||
version: 10.9.2(@swc/core@1.5.7)(@types/node@20.14.9)(typescript@5.5.3)
|
||||
uuid:
|
||||
specifier: ^10.0.0
|
||||
version: 10.0.0
|
||||
|
@ -291,7 +291,10 @@ importers:
|
|||
version: 5.3.3(@types/node@20.14.9)(lightningcss@1.25.1)(terser@5.31.0)
|
||||
vite-plugin-checker:
|
||||
specifier: ^0.7.0
|
||||
version: 0.7.0(eslint@8.57.0)(optionator@0.9.4)(typescript@5.5.2)(vite@5.3.3(@types/node@20.14.9)(lightningcss@1.25.1)(terser@5.31.0))
|
||||
version: 0.7.0(eslint@8.57.0)(optionator@0.9.4)(typescript@5.5.3)(vite@5.3.3(@types/node@20.14.9)(lightningcss@1.25.1)(terser@5.31.0))
|
||||
vite-plugin-dts:
|
||||
specifier: ^3.9.1
|
||||
version: 3.9.1(@types/node@20.14.9)(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.3(@types/node@20.14.9)(lightningcss@1.25.1)(terser@5.31.0))
|
||||
vitest:
|
||||
specifier: ^1.6.0
|
||||
version: 1.6.0(@types/node@20.14.9)(jsdom@24.1.0)(lightningcss@1.25.1)(terser@5.31.0)
|
||||
|
@ -1048,6 +1051,9 @@ packages:
|
|||
'@jridgewell/trace-mapping@0.3.9':
|
||||
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
|
||||
|
||||
'@keycloak/keycloak-admin-ui@file:js/apps/admin-ui':
|
||||
resolution: {directory: js/apps/admin-ui, type: directory}
|
||||
|
||||
'@microsoft/api-extractor-model@7.28.13':
|
||||
resolution: {integrity: sha512-39v/JyldX4MS9uzHcdfmjjfS6cYGAoXV+io8B5a338pkHiSt+gy2eXQ0Q7cGFJ7quSa1VqqlMdlPrB6sLR/cAw==}
|
||||
|
||||
|
@ -1661,9 +1667,6 @@ packages:
|
|||
'@types/mocha@10.0.7':
|
||||
resolution: {integrity: sha512-GN8yJ1mNTcFcah/wKEFIJckJx9iJLoMSzWcfRRuxz/Jk+U6KQNnml+etbtxFK8lPjzOw3zp4Ha/kjSst9fsHYw==}
|
||||
|
||||
'@types/node@20.14.8':
|
||||
resolution: {integrity: sha512-DO+2/jZinXfROG7j7WKFn/3C6nFwxy2lLpgLjEXJz+0XKphZlTLJ14mo8Vfg8X5BWN6XjyESXq+LcYdT7tR3bA==}
|
||||
|
||||
'@types/node@20.14.9':
|
||||
resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==}
|
||||
|
||||
|
@ -1853,9 +1856,6 @@ packages:
|
|||
engines: {node: '>=0.4.0'}
|
||||
hasBin: true
|
||||
|
||||
admin-ui@file:js/apps/admin-ui:
|
||||
resolution: {directory: js/apps/admin-ui, type: directory}
|
||||
|
||||
agent-base@7.1.1:
|
||||
resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==}
|
||||
engines: {node: '>= 14'}
|
||||
|
@ -3936,6 +3936,10 @@ packages:
|
|||
peerDependencies:
|
||||
postcss: ^8.2.9
|
||||
|
||||
postcss@8.4.38:
|
||||
resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
|
||||
engines: {node: ^10 || ^12 || >=14}
|
||||
|
||||
postcss@8.4.39:
|
||||
resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==}
|
||||
engines: {node: ^10 || ^12 || >=14}
|
||||
|
@ -4633,11 +4637,6 @@ packages:
|
|||
engines: {node: '>=14.17'}
|
||||
hasBin: true
|
||||
|
||||
typescript@5.5.2:
|
||||
resolution: {integrity: sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==}
|
||||
engines: {node: '>=14.17'}
|
||||
hasBin: true
|
||||
|
||||
typescript@5.5.3:
|
||||
resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==}
|
||||
engines: {node: '>=14.17'}
|
||||
|
@ -5454,7 +5453,7 @@ snapshots:
|
|||
'@eslint/eslintrc@2.1.4':
|
||||
dependencies:
|
||||
ajv: 6.12.6
|
||||
debug: 4.3.5(supports-color@8.1.1)
|
||||
debug: 4.3.4(supports-color@8.1.1)
|
||||
espree: 9.6.1
|
||||
globals: 13.24.0
|
||||
ignore: 5.3.1
|
||||
|
@ -5490,7 +5489,7 @@ snapshots:
|
|||
'@humanwhocodes/config-array@0.11.14':
|
||||
dependencies:
|
||||
'@humanwhocodes/object-schema': 2.0.3
|
||||
debug: 4.3.5(supports-color@8.1.1)
|
||||
debug: 4.3.4(supports-color@8.1.1)
|
||||
minimatch: 3.1.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
@ -5539,6 +5538,40 @@ snapshots:
|
|||
'@jridgewell/resolve-uri': 3.1.2
|
||||
'@jridgewell/sourcemap-codec': 1.4.15
|
||||
|
||||
'@keycloak/keycloak-admin-ui@file:js/apps/admin-ui(@types/react@18.3.3)':
|
||||
dependencies:
|
||||
'@keycloak/keycloak-admin-client': link:js/libs/keycloak-admin-client
|
||||
'@keycloak/keycloak-ui-shared': link:js/libs/ui-shared
|
||||
'@patternfly/patternfly': 5.3.1
|
||||
'@patternfly/react-code-editor': 5.3.3(monaco-editor@0.50.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@patternfly/react-core': 5.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@patternfly/react-icons': 5.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@patternfly/react-styles': 5.3.1
|
||||
'@patternfly/react-table': 5.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
dagre: 0.8.5
|
||||
file-saver: 2.0.5
|
||||
file-selector: 0.6.0
|
||||
flat: 6.0.1
|
||||
i18next: 23.11.5
|
||||
i18next-http-backend: 2.5.2
|
||||
keycloak-js: link:js/libs/keycloak-js
|
||||
lodash-es: 4.17.21
|
||||
monaco-editor: 0.50.0
|
||||
p-debounce: 4.0.0
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
react-dropzone: 14.2.3(react@18.3.1)
|
||||
react-hook-form: 7.52.1(react@18.3.1)
|
||||
react-i18next: 14.1.2(i18next@23.11.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
react-router-dom: 6.24.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
reactflow: 11.11.4(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
use-react-router-breadcrumbs: 4.0.1(react-router-dom@6.24.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
transitivePeerDependencies:
|
||||
- '@types/react'
|
||||
- encoding
|
||||
- immer
|
||||
- react-native
|
||||
|
||||
'@microsoft/api-extractor-model@7.28.13(@types/node@20.14.9)':
|
||||
dependencies:
|
||||
'@microsoft/tsdoc': 0.14.2
|
||||
|
@ -6175,7 +6208,7 @@ snapshots:
|
|||
|
||||
'@types/gunzip-maybe@1.4.2':
|
||||
dependencies:
|
||||
'@types/node': 20.14.8
|
||||
'@types/node': 20.14.9
|
||||
|
||||
'@types/lodash-es@4.17.12':
|
||||
dependencies:
|
||||
|
@ -6185,10 +6218,6 @@ snapshots:
|
|||
|
||||
'@types/mocha@10.0.7': {}
|
||||
|
||||
'@types/node@20.14.8':
|
||||
dependencies:
|
||||
undici-types: 5.26.5
|
||||
|
||||
'@types/node@20.14.9':
|
||||
dependencies:
|
||||
undici-types: 5.26.5
|
||||
|
@ -6212,7 +6241,7 @@ snapshots:
|
|||
|
||||
'@types/tar-fs@2.0.4':
|
||||
dependencies:
|
||||
'@types/node': 20.14.8
|
||||
'@types/node': 20.14.9
|
||||
'@types/tar-stream': 3.1.3
|
||||
|
||||
'@types/tar-stream@3.1.3':
|
||||
|
@ -6250,7 +6279,7 @@ snapshots:
|
|||
'@typescript-eslint/types': 7.14.1
|
||||
'@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.3)
|
||||
'@typescript-eslint/visitor-keys': 7.14.1
|
||||
debug: 4.3.5(supports-color@8.1.1)
|
||||
debug: 4.3.4(supports-color@8.1.1)
|
||||
eslint: 8.57.0
|
||||
optionalDependencies:
|
||||
typescript: 5.5.3
|
||||
|
@ -6266,7 +6295,7 @@ snapshots:
|
|||
dependencies:
|
||||
'@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.3)
|
||||
'@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.5.3)
|
||||
debug: 4.3.5(supports-color@8.1.1)
|
||||
debug: 4.3.4(supports-color@8.1.1)
|
||||
eslint: 8.57.0
|
||||
ts-api-utils: 1.3.0(typescript@5.5.3)
|
||||
optionalDependencies:
|
||||
|
@ -6278,17 +6307,17 @@ snapshots:
|
|||
|
||||
'@typescript-eslint/types@7.14.1': {}
|
||||
|
||||
'@typescript-eslint/typescript-estree@5.62.0(typescript@5.5.2)':
|
||||
'@typescript-eslint/typescript-estree@5.62.0(typescript@5.5.3)':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 5.62.0
|
||||
'@typescript-eslint/visitor-keys': 5.62.0
|
||||
debug: 4.3.5(supports-color@8.1.1)
|
||||
debug: 4.3.4(supports-color@8.1.1)
|
||||
globby: 11.1.0
|
||||
is-glob: 4.0.3
|
||||
semver: 7.6.1
|
||||
tsutils: 3.21.0(typescript@5.5.2)
|
||||
tsutils: 3.21.0(typescript@5.5.3)
|
||||
optionalDependencies:
|
||||
typescript: 5.5.2
|
||||
typescript: 5.5.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
|
@ -6296,7 +6325,7 @@ snapshots:
|
|||
dependencies:
|
||||
'@typescript-eslint/types': 7.14.1
|
||||
'@typescript-eslint/visitor-keys': 7.14.1
|
||||
debug: 4.3.5(supports-color@8.1.1)
|
||||
debug: 4.3.4(supports-color@8.1.1)
|
||||
globby: 11.1.0
|
||||
is-glob: 4.0.3
|
||||
minimatch: 9.0.4
|
||||
|
@ -6436,43 +6465,9 @@ snapshots:
|
|||
|
||||
acorn@8.11.3: {}
|
||||
|
||||
admin-ui@file:js/apps/admin-ui(@types/react@18.3.3):
|
||||
dependencies:
|
||||
'@keycloak/keycloak-admin-client': link:js/libs/keycloak-admin-client
|
||||
'@keycloak/keycloak-ui-shared': link:js/libs/ui-shared
|
||||
'@patternfly/patternfly': 5.3.1
|
||||
'@patternfly/react-code-editor': 5.3.3(monaco-editor@0.50.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@patternfly/react-core': 5.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@patternfly/react-icons': 5.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@patternfly/react-styles': 5.3.1
|
||||
'@patternfly/react-table': 5.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
dagre: 0.8.5
|
||||
file-saver: 2.0.5
|
||||
file-selector: 0.6.0
|
||||
flat: 6.0.1
|
||||
i18next: 23.11.5
|
||||
i18next-http-backend: 2.5.2
|
||||
keycloak-js: link:js/libs/keycloak-js
|
||||
lodash-es: 4.17.21
|
||||
monaco-editor: 0.50.0
|
||||
p-debounce: 4.0.0
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
react-dropzone: 14.2.3(react@18.3.1)
|
||||
react-hook-form: 7.52.1(react@18.3.1)
|
||||
react-i18next: 14.1.2(i18next@23.11.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
react-router-dom: 6.24.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
reactflow: 11.11.4(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
use-react-router-breadcrumbs: 4.0.1(react-router-dom@6.24.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
transitivePeerDependencies:
|
||||
- '@types/react'
|
||||
- encoding
|
||||
- immer
|
||||
- react-native
|
||||
|
||||
agent-base@7.1.1:
|
||||
dependencies:
|
||||
debug: 4.3.5(supports-color@8.1.1)
|
||||
debug: 4.3.4(supports-color@8.1.1)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
|
@ -7127,7 +7122,7 @@ snapshots:
|
|||
commander: 10.0.1
|
||||
filing-cabinet: 4.2.0
|
||||
precinct: 11.0.5
|
||||
typescript: 5.5.2
|
||||
typescript: 5.5.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
|
@ -7154,8 +7149,8 @@ snapshots:
|
|||
detective-postcss@6.1.3:
|
||||
dependencies:
|
||||
is-url: 1.2.4
|
||||
postcss: 8.4.39
|
||||
postcss-values-parser: 6.0.2(postcss@8.4.39)
|
||||
postcss: 8.4.38
|
||||
postcss-values-parser: 6.0.2(postcss@8.4.38)
|
||||
|
||||
detective-sass@5.0.3:
|
||||
dependencies:
|
||||
|
@ -7171,10 +7166,10 @@ snapshots:
|
|||
|
||||
detective-typescript@11.2.0:
|
||||
dependencies:
|
||||
'@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.2)
|
||||
'@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.3)
|
||||
ast-module-types: 5.0.0
|
||||
node-source-walk: 6.0.2
|
||||
typescript: 5.5.2
|
||||
typescript: 5.5.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
|
@ -7671,7 +7666,7 @@ snapshots:
|
|||
sass-lookup: 5.0.1
|
||||
stylus-lookup: 5.0.1
|
||||
tsconfig-paths: 4.2.0
|
||||
typescript: 5.5.2
|
||||
typescript: 5.5.3
|
||||
|
||||
fill-range@7.0.1:
|
||||
dependencies:
|
||||
|
@ -7704,7 +7699,7 @@ snapshots:
|
|||
'@babel/parser': 7.24.5
|
||||
'@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5)
|
||||
acorn-walk: 8.3.2
|
||||
debug: 4.3.5(supports-color@8.1.1)
|
||||
debug: 4.3.4(supports-color@8.1.1)
|
||||
globby: 11.1.0
|
||||
simple-bin-help: 1.8.0
|
||||
transitivePeerDependencies:
|
||||
|
@ -8767,13 +8762,19 @@ snapshots:
|
|||
|
||||
possible-typed-array-names@1.0.0: {}
|
||||
|
||||
postcss-values-parser@6.0.2(postcss@8.4.39):
|
||||
postcss-values-parser@6.0.2(postcss@8.4.38):
|
||||
dependencies:
|
||||
color-name: 1.1.4
|
||||
is-url-superb: 4.0.0
|
||||
postcss: 8.4.39
|
||||
postcss: 8.4.38
|
||||
quote-unquote: 1.0.0
|
||||
|
||||
postcss@8.4.38:
|
||||
dependencies:
|
||||
nanoid: 3.3.7
|
||||
picocolors: 1.0.1
|
||||
source-map-js: 1.2.0
|
||||
|
||||
postcss@8.4.39:
|
||||
dependencies:
|
||||
nanoid: 3.3.7
|
||||
|
@ -9216,7 +9217,7 @@ snapshots:
|
|||
spec-change@1.11.1:
|
||||
dependencies:
|
||||
arg: 5.0.2
|
||||
debug: 4.3.5(supports-color@8.1.1)
|
||||
debug: 4.3.4(supports-color@8.1.1)
|
||||
deep-equal: 2.2.3
|
||||
dependency-tree: 10.0.9
|
||||
globby: 11.1.0
|
||||
|
@ -9439,26 +9440,6 @@ snapshots:
|
|||
dependencies:
|
||||
typescript: 5.5.3
|
||||
|
||||
ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.9)(typescript@5.5.2):
|
||||
dependencies:
|
||||
'@cspotcode/source-map-support': 0.8.1
|
||||
'@tsconfig/node10': 1.0.11
|
||||
'@tsconfig/node12': 1.0.11
|
||||
'@tsconfig/node14': 1.0.3
|
||||
'@tsconfig/node16': 1.0.4
|
||||
'@types/node': 20.14.9
|
||||
acorn: 8.11.3
|
||||
acorn-walk: 8.3.2
|
||||
arg: 4.1.3
|
||||
create-require: 1.1.1
|
||||
diff: 4.0.2
|
||||
make-error: 1.3.6
|
||||
typescript: 5.5.2
|
||||
v8-compile-cache-lib: 3.0.1
|
||||
yn: 3.1.1
|
||||
optionalDependencies:
|
||||
'@swc/core': 1.5.7
|
||||
|
||||
ts-node@10.9.2(@swc/core@1.5.7)(@types/node@20.14.9)(typescript@5.5.3):
|
||||
dependencies:
|
||||
'@cspotcode/source-map-support': 0.8.1
|
||||
|
@ -9491,10 +9472,10 @@ snapshots:
|
|||
|
||||
tslib@2.6.3: {}
|
||||
|
||||
tsutils@3.21.0(typescript@5.5.2):
|
||||
tsutils@3.21.0(typescript@5.5.3):
|
||||
dependencies:
|
||||
tslib: 1.14.1
|
||||
typescript: 5.5.2
|
||||
typescript: 5.5.3
|
||||
|
||||
tsx@4.9.3:
|
||||
dependencies:
|
||||
|
@ -9566,8 +9547,6 @@ snapshots:
|
|||
|
||||
typescript@5.4.2: {}
|
||||
|
||||
typescript@5.5.2: {}
|
||||
|
||||
typescript@5.5.3: {}
|
||||
|
||||
ufo@1.5.3: {}
|
||||
|
@ -9666,29 +9645,6 @@ snapshots:
|
|||
- supports-color
|
||||
- terser
|
||||
|
||||
vite-plugin-checker@0.7.0(eslint@8.57.0)(optionator@0.9.4)(typescript@5.5.2)(vite@5.3.3(@types/node@20.14.9)(lightningcss@1.25.1)(terser@5.31.0)):
|
||||
dependencies:
|
||||
'@babel/code-frame': 7.24.2
|
||||
'@volar/typescript': 2.3.4
|
||||
ansi-escapes: 4.3.2
|
||||
chalk: 4.1.2
|
||||
chokidar: 3.6.0
|
||||
commander: 8.3.0
|
||||
fast-glob: 3.3.2
|
||||
fs-extra: 11.2.0
|
||||
npm-run-path: 4.0.1
|
||||
strip-ansi: 6.0.1
|
||||
tiny-invariant: 1.3.3
|
||||
vite: 5.3.3(@types/node@20.14.9)(lightningcss@1.25.1)(terser@5.31.0)
|
||||
vscode-languageclient: 7.0.0
|
||||
vscode-languageserver: 7.0.0
|
||||
vscode-languageserver-textdocument: 1.0.11
|
||||
vscode-uri: 3.0.8
|
||||
optionalDependencies:
|
||||
eslint: 8.57.0
|
||||
optionator: 0.9.4
|
||||
typescript: 5.5.2
|
||||
|
||||
vite-plugin-checker@0.7.0(eslint@8.57.0)(optionator@0.9.4)(typescript@5.5.3)(vite@5.3.3(@types/node@20.14.9)(lightningcss@1.25.1)(terser@5.31.0)):
|
||||
dependencies:
|
||||
'@babel/code-frame': 7.24.2
|
||||
|
|
Loading…
Reference in a new issue