diff --git a/generators/app/__snapshots__/generator.spec.mjs.snap b/generators/app/__snapshots__/generator.spec.mjs.snap index b302f377..d171aa64 100644 --- a/generators/app/__snapshots__/generator.spec.mjs.snap +++ b/generators/app/__snapshots__/generator.spec.mjs.snap @@ -68,6 +68,12 @@ Object { "ngsw-config.json": Object { "stateCleared": "modified", }, + "npmw": Object { + "stateCleared": "modified", + }, + "npmw.cmd": Object { + "stateCleared": "modified", + }, "openapi.properties": Object { "stateCleared": "modified", }, @@ -746,6 +752,9 @@ Object { "src/main/webapp/app/config/language.constants.ts": Object { "stateCleared": "modified", }, + "src/main/webapp/app/config/navigation.constants.ts": Object { + "stateCleared": "modified", + }, "src/main/webapp/app/config/pagination.constants.ts": Object { "stateCleared": "modified", }, @@ -986,6 +995,18 @@ Object { "src/main/webapp/app/shared/date/format-medium-datetime.pipe.ts": Object { "stateCleared": "modified", }, + "src/main/webapp/app/shared/filter/filter.component.html": Object { + "stateCleared": "modified", + }, + "src/main/webapp/app/shared/filter/filter.component.ts": Object { + "stateCleared": "modified", + }, + "src/main/webapp/app/shared/filter/filter.model.spec.ts": Object { + "stateCleared": "modified", + }, + "src/main/webapp/app/shared/filter/filter.model.ts": Object { + "stateCleared": "modified", + }, "src/main/webapp/app/shared/language/find-language-from-key.pipe.ts": Object { "stateCleared": "modified", }, @@ -1022,6 +1043,9 @@ Object { "src/main/webapp/app/shared/sort/sort.directive.ts": Object { "stateCleared": "modified", }, + "src/main/webapp/app/shared/sort/sort.service.ts": Object { + "stateCleared": "modified", + }, "src/main/webapp/bootstrap.ts": Object { "stateCleared": "modified", }, diff --git a/generators/client/__snapshots__/generator.spec.mjs.snap b/generators/client/__snapshots__/generator.spec.mjs.snap index 2a715847..918e6ba6 100644 --- a/generators/client/__snapshots__/generator.spec.mjs.snap +++ b/generators/client/__snapshots__/generator.spec.mjs.snap @@ -449,6 +449,9 @@ Object { "src/main/webapp/app/config/language.constants.ts": Object { "stateCleared": "modified", }, + "src/main/webapp/app/config/navigation.constants.ts": Object { + "stateCleared": "modified", + }, "src/main/webapp/app/config/pagination.constants.ts": Object { "stateCleared": "modified", }, @@ -689,6 +692,18 @@ Object { "src/main/webapp/app/shared/date/format-medium-datetime.pipe.ts": Object { "stateCleared": "modified", }, + "src/main/webapp/app/shared/filter/filter.component.html": Object { + "stateCleared": "modified", + }, + "src/main/webapp/app/shared/filter/filter.component.ts": Object { + "stateCleared": "modified", + }, + "src/main/webapp/app/shared/filter/filter.model.spec.ts": Object { + "stateCleared": "modified", + }, + "src/main/webapp/app/shared/filter/filter.model.ts": Object { + "stateCleared": "modified", + }, "src/main/webapp/app/shared/language/find-language-from-key.pipe.ts": Object { "stateCleared": "modified", }, @@ -725,6 +740,9 @@ Object { "src/main/webapp/app/shared/sort/sort.directive.ts": Object { "stateCleared": "modified", }, + "src/main/webapp/app/shared/sort/sort.service.ts": Object { + "stateCleared": "modified", + }, "src/main/webapp/bootstrap.ts": Object { "stateCleared": "modified", }, diff --git a/generators/client/templates_back/angular/home/home.component.html.ejs b/generators/client/templates_back/angular/home/home.component.html.ejs deleted file mode 100644 index 9507b233..00000000 --- a/generators/client/templates_back/angular/home/home.component.html.ejs +++ /dev/null @@ -1,54 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> -
-
- -
-
-

Translate="home.title">Welcome, Micronaut Hipster Official Blueprint!

-

Translate="home.subtitle">This is your homepage

- -
-
- Translate="home.logged.message" - [translateValues]="{username: account.login}"> You are logged in as user "{{account.login}}". -
- -
- Translate="global.messages.info.authenticated.prefix">If you want to - Translate="global.messages.info.authenticated.link">sign inTranslate="global.messages.info.authenticated.suffix">, you can try the default accounts:
- Administrator (login="admin" and password="admin")
- User (login="user" and password="user").
-
- <%_ if (!skipUserManagement) { _%> -
- Translate="global.messages.info.register.noaccount">You don't have an account yet?  - Translate="global.messages.info.register.link">Register a new account -
- <%_ } _%> -
- Translate="home.question"> - If you have any question on JHipster or MHipster: -

- -

- Translate="home.like">If you like MHipster, don't forget to give us a star on Translate="home.github">GitHub! -

-
-
diff --git a/generators/client/templates_back/angular/home/home.scss.ejs b/generators/client/templates_back/angular/home/home.scss.ejs deleted file mode 100644 index a054f947..00000000 --- a/generators/client/templates_back/angular/home/home.scss.ejs +++ /dev/null @@ -1,10 +0,0 @@ -/* ========================================================================== -Main page styles -========================================================================== */ -.hipster { - display: inline-block; - width: 100%; - height: 497px; - background: url("../../content/images/jhipster_family_member_4.svg") no-repeat center top; - background-size: contain; -} diff --git a/generators/client/templates_back/angular/src/main/webapp/app/admin/health/health-modal.component.html.ejs b/generators/client/templates_back/angular/src/main/webapp/app/admin/health/health-modal.component.html.ejs deleted file mode 100644 index 4a08859e..00000000 --- a/generators/client/templates_back/angular/src/main/webapp/app/admin/health/health-modal.component.html.ejs +++ /dev/null @@ -1,58 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> - - - - - diff --git a/generators/client/templates_back/angular/src/main/webapp/app/admin/health/health-modal.component.ts.ejs b/generators/client/templates_back/angular/src/main/webapp/app/admin/health/health-modal.component.ts.ejs deleted file mode 100644 index 276a25de..00000000 --- a/generators/client/templates_back/angular/src/main/webapp/app/admin/health/health-modal.component.ts.ejs +++ /dev/null @@ -1,54 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> -import { Component } from '@angular/core'; -import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; - -import { HealthKey, HealthDetails } from './health.service'; - -@Component({ - selector: '<%= jhiPrefixDashed %>-health-modal', - templateUrl: './health-modal.component.html' -}) -export class HealthModalComponent { - health?: { key: HealthKey; value: HealthDetails }; - - constructor(public activeModal: NgbActiveModal) {} - - readableValue(value: any): string { - if (this.health && this.health.key === 'diskSpace') { - // Should display storage space in an human readable unit - const val = value / 1073741824; - if (val > 1) { // Value - return val.toFixed(2) + ' GB'; - } else { - return (value / 1048576).toFixed(2) + ' MB'; - } - } - - if (typeof value === 'object') { - return JSON.stringify(value); - } else { - return value.toString(); - } - } - - dismiss(): void { - this.activeModal.dismiss(); - } -} diff --git a/generators/client/templates_back/angular/src/main/webapp/app/admin/health/health.component.html.ejs b/generators/client/templates_back/angular/src/main/webapp/app/admin/health/health.component.html.ejs deleted file mode 100644 index 54af841a..00000000 --- a/generators/client/templates_back/angular/src/main/webapp/app/admin/health/health.component.html.ejs +++ /dev/null @@ -1,60 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> -
-

- Translate="health.title">Health Checks - - -

- -
- - - - - - - - - - - - - - - -
Translate="health.table.service">Service NameTranslate="health.table.status">StatusTranslate="health.details.details">Details
- <%_ if (enableTranslation) { _%> - {{ 'health.indicator.' + componentHealth.key | translate }} - <%_ } else { _%> - {{ componentHealth.key }} - <%_ } _%> - - Translate="{{ 'health.status.' + componentHealth.value.status }}"> - {{ componentHealth.value.status }} - - - - - -
-
-
diff --git a/generators/client/templates_back/angular/src/main/webapp/app/admin/health/health.component.ts.ejs b/generators/client/templates_back/angular/src/main/webapp/app/admin/health/health.component.ts.ejs deleted file mode 100644 index a71be08b..00000000 --- a/generators/client/templates_back/angular/src/main/webapp/app/admin/health/health.component.ts.ejs +++ /dev/null @@ -1,65 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> -import { Component, OnInit } from '@angular/core'; -import { HttpErrorResponse } from '@angular/common/http'; -import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; - -import { HealthService, HealthStatus, Health, HealthKey, HealthDetails } from './health.service'; -import { HealthModalComponent } from './health-modal.component'; - -@Component({ - selector: '<%= jhiPrefixDashed %>-health', - templateUrl: './health.component.html' -}) -export class HealthComponent implements OnInit { - health?: Health; - - constructor( - private modalService: NgbModal, - private healthService: HealthService - ) {} - - ngOnInit(): void { - this.refresh(); - } - - getBadgeClass(statusState: HealthStatus): string { - if (statusState === 'UP') { - return 'badge-success'; - } else { - return 'badge-danger'; - } - } - - refresh(): void { - this.healthService.checkHealth().subscribe( - health => (this.health = health), - (error: HttpErrorResponse) => { - if (error.status === 503) { - this.health = error.error; - } - } - ); - } - - showHealth(health: { key: HealthKey; value: HealthDetails }): void { - const modalRef = this.modalService.open(HealthModalComponent); - modalRef.componentInstance.health = health; - } -} diff --git a/generators/client/templates_back/angular/src/main/webapp/app/admin/health/health.service.ts.ejs b/generators/client/templates_back/angular/src/main/webapp/app/admin/health/health.service.ts.ejs deleted file mode 100644 index 036097ac..00000000 --- a/generators/client/templates_back/angular/src/main/webapp/app/admin/health/health.service.ts.ejs +++ /dev/null @@ -1,105 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> -import { Injectable } from '@angular/core'; -import { HttpClient } from '@angular/common/http'; -import { Observable } from 'rxjs'; -<%_ if (databaseType === 'sql') { _%> -import { map } from 'rxjs/operators'; -<%_ } _%> - -import { SERVER_API_URL } from 'app/app.constants'; - -export type HealthStatus = 'UP' | 'DOWN' | 'UNKNOWN' | 'OUT_OF_SERVICE'; - -export type HealthKey = - <%_ if (messageBroker === 'kafka') { _%> - | 'binders' - <%_ } _%> - <%_ if (applicationType === 'gateway' || serviceDiscoveryType) { _%> - | 'compositeDiscoveryClient()' - | 'discoveryComposite' - | 'refreshScope' - | 'clientConfigServer' - | 'hystrix' - <%_ } _%> - <%_ if (serviceDiscoveryType === 'consul') { _%> - | 'consul' - <%_ } _%> - | 'diskSpace' - | 'mail' - | 'ping' - <%_ if (searchEngine === 'elasticsearch') { _%> - | 'elasticsearch' - <%_ } _%> - <%_ if (databaseType === 'sql') { _%> - | 'jdbc' - | 'db' - <%_ } else if (databaseType === 'mongodb') { _%> - | 'mongo' - <%_ } else if (databaseType === 'cassandra') { _%> - | 'cassandra' - <%_ } else if (databaseType === 'couchbase') { _%> - | 'couchbase' - <%_ } _%> - ; - -export interface Health { - name?: string; - status: HealthStatus; - details: { - [key in HealthKey]?: HealthDetails; - }; -} - -export interface HealthDetails { - status: HealthStatus; - details: any; -} - -@Injectable({ providedIn: 'root' }) -export class HealthService { - constructor(private http: HttpClient) {} - -<%_ if (databaseType === 'sql') { _%> - checkHealth(): Observable { - const nameTranslationMap = { - jdbc: 'db' - }; - - return this.http.get(SERVER_API_URL + 'management/health').pipe( - map((response: Health) => { - const mappedDetails = {}; - - Object.keys(response.details).forEach(key => { - const mappedKey = nameTranslationMap[key] ? nameTranslationMap[key] : key; - mappedDetails[mappedKey] = response.details[key]; - }); - - response.details = mappedDetails; - - return response; - }) - ); - } -<%_ } else { _%> - checkHealth(): Observable { - return this.http.get(SERVER_API_URL + 'management/health'); - } -<%_ } _%> -} diff --git a/generators/client/templates_back/angular/src/main/webapp/app/admin/metrics/metrics.component.html.ejs b/generators/client/templates_back/angular/src/main/webapp/app/admin/metrics/metrics.component.html.ejs deleted file mode 100644 index 7c1ee317..00000000 --- a/generators/client/templates_back/angular/src/main/webapp/app/admin/metrics/metrics.component.html.ejs +++ /dev/null @@ -1,83 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> -
-

- Translate="metrics.title">Application Metrics - - -

- - Translate="metrics.jvm.title">JVM Metrics - -
- - - - - - - - -
- -
- Translate="metrics.jvm.gc.title">Garbage collector statistics - - - -
- -
Translate="metrics.updating">Updating...
- - - - - - - - - - - - -
diff --git a/generators/client/templates_back/angular/src/main/webapp/app/admin/metrics/metrics.component.ts.ejs b/generators/client/templates_back/angular/src/main/webapp/app/admin/metrics/metrics.component.ts.ejs deleted file mode 100644 index 002c00dc..00000000 --- a/generators/client/templates_back/angular/src/main/webapp/app/admin/metrics/metrics.component.ts.ejs +++ /dev/null @@ -1,65 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> -import { Component, OnInit, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; -import { flatMap } from 'rxjs/operators'; - -import { MetricsService, Metrics, MetricsKey, Thread } from './metrics.service'; - -@Component({ - selector: '<%= jhiPrefixDashed %>-metrics', - templateUrl: './metrics.component.html', - changeDetection: ChangeDetectionStrategy.OnPush -}) -export class MetricsComponent implements OnInit { - metrics?: Metrics; - threads?: Thread[]; - updatingMetrics = true; - - constructor(private metricsService: MetricsService, private changeDetector: ChangeDetectorRef) {} - - ngOnInit(): void { - this.refresh(); - } - - refresh(): void { - this.updatingMetrics = true; - this.metricsService - .getMetrics() - .pipe( - flatMap( - () => this.metricsService.threadDump(), - (metrics: Metrics, threadDump: Thread[]) => { - this.metrics = metrics; - this.threads = threadDump; - this.updatingMetrics = false; - this.changeDetector.detectChanges(); - } - ) - ) - .subscribe(); - } - - metricsKeyExists(key: MetricsKey): boolean { - return this.metrics && this.metrics[key]; - } - - metricsKeyExistsAndObjectNotEmpty(key: MetricsKey): boolean { - return this.metrics && this.metrics[key] && JSON.stringify(this.metrics[key]) !== '{}'; - } -} diff --git a/generators/client/templates_back/angular/src/main/webapp/app/admin/metrics/metrics.service.ts.ejs b/generators/client/templates_back/angular/src/main/webapp/app/admin/metrics/metrics.service.ts.ejs deleted file mode 100644 index 5761c643..00000000 --- a/generators/client/templates_back/angular/src/main/webapp/app/admin/metrics/metrics.service.ts.ejs +++ /dev/null @@ -1,53 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> -import { Injectable } from '@angular/core'; -import { HttpClient } from '@angular/common/http'; -import { Observable } from 'rxjs'; - -import { SERVER_API_URL } from 'app/app.constants'; - -export type MetricsKey = 'jvm' | 'http.server.requests' | 'cache' | 'services' | 'databases' | 'garbageCollector' | 'processMetrics'; -export type Metrics = { [key in MetricsKey]: any }; -export type Thread = { - threadName?: string; - threadId?: number; - threadState?: string; - suspended?: boolean; - stackTrace?: StackElement[] - // ... just trying to give an idea of what should be expected w/o making testing onerous -}; -export type StackElement = { - methodName?: string; - fileName?: string; - lineNumber?: number; - // ... just trying to give an idea of what should be expected w/o making testing onerous -} - -@Injectable({ providedIn: 'root' }) -export class MetricsService { - constructor(private http: HttpClient) {} - - getMetrics(): Observable { - return this.http.get(SERVER_API_URL + 'management/jhimetrics'); - } - - threadDump(): Observable { - return this.http.get(SERVER_API_URL + 'management/threaddump'); - } -} diff --git a/generators/client/templates_back/angular/src/main/webapp/app/core/auth/auth-jwt.service.ts.ejs b/generators/client/templates_back/angular/src/main/webapp/app/core/auth/auth-jwt.service.ts.ejs deleted file mode 100644 index 4f24384d..00000000 --- a/generators/client/templates_back/angular/src/main/webapp/app/core/auth/auth-jwt.service.ts.ejs +++ /dev/null @@ -1,59 +0,0 @@ -import { Injectable } from '@angular/core'; -import { HttpClient, HttpResponse } from '@angular/common/http'; -import { Observable } from 'rxjs'; -import { map } from 'rxjs/operators'; -import { LocalStorageService, SessionStorageService } from 'ngx-webstorage'; - -import { SERVER_API_URL } from 'app/app.constants'; - -@Injectable({ providedIn: 'root' }) -export class AuthServerProvider { - constructor(private http: HttpClient, private $localStorage: LocalStorageService, private $sessionStorage: SessionStorageService) {} - - getToken(): any { - return this.$localStorage.retrieve('authenticationToken') || this.$sessionStorage.retrieve('authenticationToken'); - } - - login(credentials: any): Observable { - const data = { - username: credentials.username, - password: credentials.password, - rememberMe: credentials.rememberMe - }; - - function authenticateSuccess(this: any, resp: HttpResponse): any { - const jwt = resp.body.access_token; - if (jwt) { - this.storeAuthenticationToken(jwt, credentials.rememberMe); - return jwt; - } - } - - return this.http.post(SERVER_API_URL + 'api/authenticate', data, { observe: 'response' }).pipe(map(authenticateSuccess.bind(this))); - } - - loginWithToken(jwt: any, rememberMe: any): Promise { - if (jwt) { - this.storeAuthenticationToken(jwt, rememberMe); - return Promise.resolve(jwt); - } else { - return Promise.reject('auth-jwt-service Promise reject'); // Put appropriate error message here - } - } - - storeAuthenticationToken(jwt: any, rememberMe: any): void { - if (rememberMe) { - this.$localStorage.store('authenticationToken', jwt); - } else { - this.$sessionStorage.store('authenticationToken', jwt); - } - } - - logout(): Observable { - return new Observable(observer => { - this.$localStorage.clear('authenticationToken'); - this.$sessionStorage.clear('authenticationToken'); - observer.complete(); - }); - } -} diff --git a/generators/client/templates_back/angular/src/main/webapp/app/core/login/login.service.ts.ejs b/generators/client/templates_back/angular/src/main/webapp/app/core/login/login.service.ts.ejs deleted file mode 100644 index 6cefc43b..00000000 --- a/generators/client/templates_back/angular/src/main/webapp/app/core/login/login.service.ts.ejs +++ /dev/null @@ -1,81 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> -import { Injectable } from '@angular/core'; -<%_ if (authenticationType === 'oauth2') { _%> -import { Location } from '@angular/common'; - -<%_ } else { _%> -import { Observable } from 'rxjs'; -import { flatMap } from 'rxjs/operators'; - -import { Account } from 'app/core/user/account.model'; -import { AccountService } from 'app/core/auth/account.service'; -<%_ } _%> -<%_ if (authenticationType === 'jwt' || authenticationType === 'uaa') { _%> -import { AuthServerProvider<% if (authenticationType === 'uaa') { %>, LOGOUT_URL<% } %> } from 'app/core/auth/auth-jwt.service'; -<%_ } else if (authenticationType === 'session' || authenticationType === 'oauth2') { _%> -import { AuthServerProvider<% if (authenticationType === 'session') { %>, LOGOUT_URL<% } %> } from 'app/core/auth/auth-session.service'; -<%_ } _%> -<%_ if (authenticationType === 'oauth2') { _%> -import { Logout } from './logout.model'; -<%_ } else { _%> -import { Login } from './login.model'; -<%_ } _%> - -@Injectable({ providedIn: 'root' }) -export class LoginService { - constructor( - <%_ if (authenticationType === 'oauth2') { _%> - private location: Location, - <%_ } else { _%> - private accountService: AccountService, - <%_ } _%> - private authServerProvider: AuthServerProvider - ) {} - - <%_ if (authenticationType === 'oauth2') { _%> - login(): void { - location.href = `${location.origin}${this.location.prepareExternalUrl('oauth2/authorization/oidc')}`; - } - <%_ } else { _%> - login(credentials: Login): Observable { - return this.authServerProvider.login(credentials).pipe(flatMap(() => this.accountService.identity(true))); - } - <%_ } _%> - - <%_ if (authenticationType === 'uaa' || authenticationType === 'session') { _%> - logoutUrl(): string { - return LOGOUT_URL; - } - - logoutInClient(): void { - this.accountService.authenticate(null); - } - <%_ } _%> - - logout(): void { - <%_ if (authenticationType === 'oauth2') { _%> - this.authServerProvider.logout().subscribe((logout: Logout) => { - window.location.href = logout.logoutUrl; - }); - <%_ } else { _%> - this.authServerProvider.logout().subscribe(null, null, () => this.accountService.authenticate(null)); - <%_ } _%> - } -} diff --git a/generators/client/templates_back/angular/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs b/generators/client/templates_back/angular/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs deleted file mode 100644 index 6faa73ee..00000000 --- a/generators/client/templates_back/angular/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +++ /dev/null @@ -1,206 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> - diff --git a/generators/client/templates_back/angular/src/main/webapp/app/layouts/navbar/navbar.component.ts.ejs b/generators/client/templates_back/angular/src/main/webapp/app/layouts/navbar/navbar.component.ts.ejs deleted file mode 100644 index 463bc6c7..00000000 --- a/generators/client/templates_back/angular/src/main/webapp/app/layouts/navbar/navbar.component.ts.ejs +++ /dev/null @@ -1,112 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> -import { Component, OnInit } from '@angular/core'; -import { Router } from '@angular/router'; -<%_ if (enableTranslation) { _%> -import { JhiLanguageService } from 'ng-jhipster'; -import { SessionStorageService } from 'ngx-webstorage'; -<%_ } _%> - -import { VERSION } from 'app/app.constants'; -<%_ if (enableTranslation) { _%> -import { LANGUAGES } from 'app/core/language/language.constants'; -<%_ } _%> -import { AccountService } from 'app/core/auth/account.service'; -<%_ if (authenticationType !== 'oauth2') { _%> -import { LoginModalService } from 'app/core/login/login-modal.service'; -<%_ } _%> -import { LoginService } from 'app/core/login/login.service'; -import { ProfileService } from 'app/layouts/profiles/profile.service'; - -@Component({ - selector: '<%= jhiPrefixDashed %>-navbar', - templateUrl: './navbar.component.html', - styleUrls: [ - 'navbar.scss' - ] -}) -export class NavbarComponent implements OnInit { - inProduction?: boolean; - isNavbarCollapsed = true; - <%_ if (enableTranslation) { _%> - languages = LANGUAGES; - <%_ } _%> - swaggerEnabled?: boolean; - version: string; - - constructor( - private loginService: LoginService, - <%_ if (enableTranslation) { _%> - private languageService: JhiLanguageService, - private sessionStorage: SessionStorageService, - <%_ } _%> - private accountService: AccountService, - <%_ if (authenticationType !== 'oauth2') { _%> - private loginModalService: LoginModalService, - <%_ } _%> - private profileService: ProfileService, - private router: Router - ) { - this.version = VERSION ? (VERSION.toLowerCase().startsWith('v') ? VERSION : 'v' + VERSION) : ''; - } - - ngOnInit(): void { - this.profileService.getProfileInfo().subscribe((profileInfo) => { - this.inProduction = profileInfo.inProduction; - this.swaggerEnabled = profileInfo.swaggerEnabled; - }); - } - - <%_ if (enableTranslation) { _%> - changeLanguage(languageKey: string): void { - this.sessionStorage.store('locale', languageKey); - this.languageService.changeLanguage(languageKey); - } - <%_ } _%> - - collapseNavbar(): void { - this.isNavbarCollapsed = true; - } - - isAuthenticated(): boolean { - return this.accountService.isAuthenticated(); - } - - login(): void { - <%_ if (authenticationType !== 'oauth2') { _%> - this.loginModalService.open(); - <%_ } else { _%> - this.loginService.login(); - <%_ } _%> - } - - logout(): void { - this.collapseNavbar(); - this.loginService.logout(); - this.router.navigate(['']); - } - - toggleNavbar(): void { - this.isNavbarCollapsed = !this.isNavbarCollapsed; - } - - getImageUrl(): string { - return this.isAuthenticated() ? this.accountService.getImageUrl() : ''; - } -} diff --git a/generators/client/templates_back/angular/src/main/webapp/content/images/jhipster_family_member_4.svg b/generators/client/templates_back/angular/src/main/webapp/content/images/jhipster_family_member_4.svg deleted file mode 100644 index 17885981..00000000 --- a/generators/client/templates_back/angular/src/main/webapp/content/images/jhipster_family_member_4.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/generators/client/templates_back/angular/src/main/webapp/content/images/jhipster_family_member_4_head-192.png b/generators/client/templates_back/angular/src/main/webapp/content/images/jhipster_family_member_4_head-192.png deleted file mode 100644 index da9c3054..00000000 Binary files a/generators/client/templates_back/angular/src/main/webapp/content/images/jhipster_family_member_4_head-192.png and /dev/null differ diff --git a/generators/client/templates_back/angular/src/main/webapp/content/images/jhipster_family_member_4_head-256.png b/generators/client/templates_back/angular/src/main/webapp/content/images/jhipster_family_member_4_head-256.png deleted file mode 100644 index b8a4cce4..00000000 Binary files a/generators/client/templates_back/angular/src/main/webapp/content/images/jhipster_family_member_4_head-256.png and /dev/null differ diff --git a/generators/client/templates_back/angular/src/main/webapp/content/images/jhipster_family_member_4_head-384.png b/generators/client/templates_back/angular/src/main/webapp/content/images/jhipster_family_member_4_head-384.png deleted file mode 100644 index e0be7f6c..00000000 Binary files a/generators/client/templates_back/angular/src/main/webapp/content/images/jhipster_family_member_4_head-384.png and /dev/null differ diff --git a/generators/client/templates_back/angular/src/main/webapp/content/images/jhipster_family_member_4_head-512.png b/generators/client/templates_back/angular/src/main/webapp/content/images/jhipster_family_member_4_head-512.png deleted file mode 100644 index e6506793..00000000 Binary files a/generators/client/templates_back/angular/src/main/webapp/content/images/jhipster_family_member_4_head-512.png and /dev/null differ diff --git a/generators/client/templates_back/angular/src/main/webapp/manifest.webapp.ejs b/generators/client/templates_back/angular/src/main/webapp/manifest.webapp.ejs deleted file mode 100644 index 699ddaf0..00000000 --- a/generators/client/templates_back/angular/src/main/webapp/manifest.webapp.ejs +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "<%= frontendAppName %>", - "short_name": "<%= frontendAppName %>", - "icons": [ - { - "src": "./content/images/jhipster_family_member_4_head-192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "./content/images/jhipster_family_member_4_head-256.png", - "sizes": "256x256", - "type": "image/png" - }, - { - "src": "./content/images/jhipster_family_member_4_head-384.png", - "sizes": "384x384", - "type": "image/png" - }, - { - "src": "./content/images/jhipster_family_member_4_head-512.png", - "sizes": "512x512", - "type": "image/png" - } - ], - "theme_color": "#000000", - "background_color": "#e0e0e0", - "start_url": ".", - "display": "standalone", - "orientation": "portrait" -} diff --git a/generators/client/templates_back/angular/src/test/javascript/e2e/admin/administration.spec.ts.ejs b/generators/client/templates_back/angular/src/test/javascript/e2e/admin/administration.spec.ts.ejs deleted file mode 100644 index 77d93d71..00000000 --- a/generators/client/templates_back/angular/src/test/javascript/e2e/admin/administration.spec.ts.ejs +++ /dev/null @@ -1,103 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> -import { browser, element, by, ExpectedConditions as ec } from 'protractor'; - -import { NavBarPage, SignInPage } from '../page-objects/jhi-page-objects'; -<%_ -let elementGetter = `getText()`; -if (enableTranslation) { - elementGetter = `getAttribute('jhiTranslate')`; -} -_%> - -const expect = chai.expect; - -describe('administration', () => { - let navBarPage: NavBarPage; - let signInPage: SignInPage; - const username = process.env.E2E_USERNAME || 'admin'; - const password = process.env.E2E_PASSWORD || 'admin'; - - before(async () => { - await browser.get('/'); - navBarPage = new NavBarPage(true); - signInPage = await navBarPage.getSignInPage(); - <%_ if (authenticationType !== 'oauth2') { _%> - await signInPage.autoSignInUsing(username, password); - <%_ } else { _%> - await signInPage.loginWithOAuth(username, password); - <%_ } _%> - await browser.wait(ec.visibilityOf(navBarPage.adminMenu), 5000); - }); - - beforeEach(async () => { - await navBarPage.clickOnAdminMenu(); - }); - - <%_ if (!skipUserManagement) { _%> - it('should load user management', async () => { - await navBarPage.clickOnAdmin('user-management'); - <%_ if (enableTranslation) { _%> - const expect1 = 'userManagement.home.title'; - <%_ } else { _%> - const expect1 = 'Users'; - <%_ } _%> - const value1 = await element(by.id('user-management-page-heading')).<%- elementGetter %>; - expect(value1).to.eq(expect1); - }); - <%_ } _%> - - it('should load metrics', async () => { - await navBarPage.clickOnAdmin('metrics'); - <%_ if (enableTranslation) { _%> - const expect1 = 'metrics.title'; - <%_ } else { _%> - const expect1 = 'Application Metrics'; - <%_ } _%> - const value1 = await element(by.id('metrics-page-heading')).<%- elementGetter %>; - expect(value1).to.eq(expect1); - }); - - it('should load health', async () => { - await navBarPage.clickOnAdmin('health'); - <%_ if (enableTranslation) { _%> - const expect1 = 'health.title'; - <%_ } else { _%> - const expect1 = 'Health Checks'; - <%_ } _%> - const value1 = await element(by.id('health-page-heading')).<%- elementGetter %>; - expect(value1).to.eq(expect1); - }); - - it('should load configuration', async () => { - await navBarPage.clickOnAdmin('configuration'); - await browser.sleep(500); - <%_ if (enableTranslation) { _%> - const expect1 = 'configuration.title'; - <%_ } else { _%> - const expect1 = 'Configuration'; - <%_ } _%> - const value1 = await element(by.id('configuration-page-heading')).<%- elementGetter %>; - expect(value1).to.eq(expect1); - }); - - after(async () => { - await navBarPage.autoSignOut(); - }); -}); diff --git a/generators/client/templates_back/angular/src/test/javascript/spec/app/admin/health/health.component.spec.ts.ejs b/generators/client/templates_back/angular/src/test/javascript/spec/app/admin/health/health.component.spec.ts.ejs deleted file mode 100644 index 93a892eb..00000000 --- a/generators/client/templates_back/angular/src/test/javascript/spec/app/admin/health/health.component.spec.ts.ejs +++ /dev/null @@ -1,85 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> -import { ComponentFixture, TestBed, async } from '@angular/core/testing'; -import { HttpErrorResponse } from '@angular/common/http'; -import { of, throwError } from 'rxjs'; - -import { <%= frontendAppName %>TestModule } from '../../../test.module'; -import { HealthComponent } from 'app/admin/health/health.component'; -import { HealthService, Health } from 'app/admin/health/health.service'; - -describe('Component Tests', () => { - describe('HealthComponent', () => { - let comp: HealthComponent; - let fixture: ComponentFixture; - let service: HealthService; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - imports: [<%= frontendAppName %>TestModule], - declarations: [HealthComponent] - }) - .overrideTemplate(HealthComponent, '') - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(HealthComponent); - comp = fixture.componentInstance; - service = fixture.debugElement.injector.get(HealthService); - }); - - describe('getBadgeClass', () => { - it('should get badge class', () => { - const upBadgeClass = comp.getBadgeClass('UP') - const downBadgeClass = comp.getBadgeClass('DOWN') - expect(upBadgeClass).toEqual('badge-success'); - expect(downBadgeClass).toEqual('badge-danger'); - }); - }); - - describe('refresh', () => { - it('should call refresh on init', () => { - // GIVEN - const health: Health = { status: 'UP', details: { mail: { status: 'UP', details: 'mailDetails' } } }; - spyOn(service, 'checkHealth').and.returnValue(of(health)); - - // WHEN - comp.ngOnInit() - - // THEN - expect(service.checkHealth).toHaveBeenCalled(); - expect(comp.health).toEqual(health); - }); - - it('should handle a 503 on refreshing health data', () => { - // GIVEN - const health: Health = { status: 'DOWN', details: { mail: { status: 'DOWN', details: 'mailDetails' } } }; - spyOn(service, 'checkHealth').and.returnValue(throwError(new HttpErrorResponse({ status: 503, error: health }))); - - // WHEN - comp.refresh(); - - // THEN - expect(service.checkHealth).toHaveBeenCalled(); - expect(comp.health).toEqual(health); - }); - }); - }); -}); diff --git a/generators/client/templates_back/angular/src/test/javascript/spec/app/admin/metrics/metrics.service.spec.ts.ejs b/generators/client/templates_back/angular/src/test/javascript/spec/app/admin/metrics/metrics.service.spec.ts.ejs deleted file mode 100644 index 779b132f..00000000 --- a/generators/client/templates_back/angular/src/test/javascript/spec/app/admin/metrics/metrics.service.spec.ts.ejs +++ /dev/null @@ -1,86 +0,0 @@ -<%# -Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. - You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and -limitations under the License. --%> -import { TestBed } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; - -import { MetricsService, Metrics, Thread } from 'app/admin/metrics/metrics.service'; -import { SERVER_API_URL } from 'app/app.constants'; - -describe('Service Tests', () => { - describe('Logs Service', () => { - let service: MetricsService; - let httpMock: HttpTestingController; - - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [HttpClientTestingModule] - }); - service = TestBed.get(MetricsService); - httpMock = TestBed.get(HttpTestingController); - }); - - afterEach(() => { - httpMock.verify(); - }); - - describe('Service methods', () => { - it('should call correct URL', () => { - service.getMetrics().subscribe(); - - const req = httpMock.expectOne({ method: 'GET' }); - const resourceUrl = SERVER_API_URL + 'management/jhimetrics'; - expect(req.request.url).toEqual(resourceUrl); - }); - - it('should return Metrics', () => { - let expectedResult: Metrics | null = null; - const metrics: Metrics = { - jvm: {}, - 'http.server.requests': {}, - cache: {}, - services: {}, - databases: {}, - garbageCollector: {}, - processMetrics: {} - }; - - service.getMetrics().subscribe(received => { - expectedResult = received; - }); - - const req = httpMock.expectOne({ method: 'GET' }); - req.flush(metrics); - expect(expectedResult).toEqual(metrics); - }); - - it('should return Thread Dump', () => { - let expectedResult: Thread[] | null = null; - const dump: Thread[] = [{ threadName: 'test1', threadState: 'RUNNABLE' }]; - - service.threadDump().subscribe(received => { - expectedResult = received; - }); - - const req = httpMock.expectOne({ method: 'GET' }); - req.flush(dump); - expect(expectedResult).toEqual(dump); - }); - }); - }); -}); diff --git a/generators/client/templates_back/angular/webpack/webpack.dev.js.ejs b/generators/client/templates_back/angular/webpack/webpack.dev.js.ejs deleted file mode 100644 index 382e4626..00000000 --- a/generators/client/templates_back/angular/webpack/webpack.dev.js.ejs +++ /dev/null @@ -1,152 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> -const webpack = require('webpack'); -const writeFilePlugin = require('write-file-webpack-plugin'); -const webpackMerge = require('webpack-merge'); -const BrowserSyncPlugin = require('browser-sync-webpack-plugin'); -const FriendlyErrorsWebpackPlugin = require('friendly-errors-webpack-plugin'); -const SimpleProgressWebpackPlugin = require('simple-progress-webpack-plugin'); -const WebpackNotifierPlugin = require('webpack-notifier'); -const path = require('path'); -const sass = require('sass'); - -const utils = require('./utils.js'); -const commonConfig = require('./webpack.common.js'); - -const ENV = 'development'; - -module.exports = (options) => webpackMerge(commonConfig({ env: ENV }), { - devtool: 'eval-source-map', - devServer: { - contentBase: './<%= DIST_DIR %>', - proxy: [{ - context: [ - '/api', - '/services', - '/management', - '/swagger-resources', - '/v2/api-docs', - '/h2-console', - <%_ if (authenticationType === 'oauth2') { _%> - '/oauth2', - '/login', - '/logout', - <%_ } _%> - '/auth' - ], - target: `http${options.tls ? 's' : ''}://localhost:<%= serverPort %>`, - secure: false, - changeOrigin: options.tls - }<% if (websocket === 'spring-websocket') { %>,{ - context: [ - '/websocket' - ], - target: 'ws://127.0.0.1:<%= serverPort %>', - ws: true - }<% } %>], - stats: options.stats, - watchOptions: { - ignored: /node_modules/ - }, - https: options.tls, - historyApiFallback: true - }, - entry: { - global: './<%= MAIN_SRC_DIR %>content/scss/global.scss', - main: './<%= MAIN_SRC_DIR %>app/app.main' - }, - output: { - path: utils.root('<%= DIST_DIR %>'), - filename: 'app/[name].bundle.js', - chunkFilename: 'app/[id].chunk.js' - }, - module: { - rules: [{ - test: /\.(j|t)s$/, - enforce: 'pre', - loader: 'eslint-loader', - exclude: /node_modules/ - }, - { - test: /\.scss$/, - use: ['to-string-loader', 'css-loader', 'postcss-loader', { - loader: 'sass-loader', - options: { implementation: sass } - }], - exclude: /(vendor\.scss|global\.scss)/ - }, - { - test: /(vendor\.scss|global\.scss)/, - use: ['style-loader', 'css-loader', 'postcss-loader', { - loader: 'sass-loader', - options: { implementation: sass } - }] - }] - }, - stats: process.env.JHI_DISABLE_WEBPACK_LOGS ? 'none' : options.stats, - plugins: [ - process.env.JHI_DISABLE_WEBPACK_LOGS - ? null - : new SimpleProgressWebpackPlugin({ - format: options.stats === 'minimal' ? 'compact' : 'expanded' - }), - new FriendlyErrorsWebpackPlugin(), - new BrowserSyncPlugin({ - https: options.tls, - host: 'localhost', - port: 9000, - proxy: { - target: `http${options.tls ? 's' : ''}://localhost:9060`, - <%_ if (websocket === 'spring-websocket') { _%> - ws: true, - <%_ } _%> - proxyOptions: { - changeOrigin: false //pass the Host header to the backend unchanged https://github.com/Browsersync/browser-sync/issues/430 - } - }, - socket: { - clients: { - heartbeatTimeout: 60000 - } - } - /* - ,ghostMode: { // uncomment this part to disable BrowserSync ghostMode; https://github.com/jhipster/generator-jhipster/issues/11116 - clicks: false, - location: false, - forms: false, - scroll: false - } */ - }, { - reload: false - }), - new webpack.ContextReplacementPlugin( - /angular(\\|\/)core(\\|\/)/, - path.resolve(__dirname, './<%= CLIENT_MAIN_SRC_DIR %>') - ), - new writeFilePlugin(), - new webpack.WatchIgnorePlugin([ - utils.root('src/test'), - ]), - new WebpackNotifierPlugin({ - title: 'JHipster', - contentImage: path.join(__dirname, 'logo-jhipster.png') - }) - ].filter(Boolean), - mode: 'development' -}); diff --git a/generators/client/templates_back/react/home/home.scss.ejs b/generators/client/templates_back/react/home/home.scss.ejs deleted file mode 100644 index 106869dc..00000000 --- a/generators/client/templates_back/react/home/home.scss.ejs +++ /dev/null @@ -1,10 +0,0 @@ -/* ========================================================================== -Main page styles -========================================================================== */ -.hipster { - display: inline-block; - width: 100%; - height: 497px; - background: url("../../../content/images/jhipster_family_member_4.svg") no-repeat center top; - background-size: contain; -} diff --git a/generators/client/templates_back/react/home/home.tsx.ejs b/generators/client/templates_back/react/home/home.tsx.ejs deleted file mode 100644 index 96c42d8f..00000000 --- a/generators/client/templates_back/react/home/home.tsx.ejs +++ /dev/null @@ -1,128 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> -import './home.<%= styleSheetExt %>'; - -import React from 'react'; -import { Link } from 'react-router-dom'; -import { Translate } from 'react-jhipster'; -import { connect } from 'react-redux'; -import { Row, Col, Alert } from 'reactstrap'; - -import { IRootState } from 'app/shared/reducers'; -<%_ if (authenticationType === 'oauth2') { _%> -import { getLoginUrl } from 'app/shared/util/url-utils'; -<%_ } _%> - -export type IHomeProp = StateProps; - -export const Home = (props: IHomeProp) => { - - const { account } = props; - - return ( - - -

Welcome, Micronaut Hipster Official Blueprint!

-

This is your homepage

- { - (account && account.login) ? ( -
- - You are logged in as user {account.login}. - -
- ) : ( -
- - If you want to - <%_ if (authenticationType === 'oauth2') { _%> - - sign in - - <%_ } else { _%> - sign in - <%_ } _%> - , you can try the default accounts: -
- Administrator (login="admin" and password="admin") -
- User (login="user" and password="user"). -
-
- - <%_ if (!skipUserManagement) { _%> - - You do not have an account yet?  - Register a new account - - <%_ } _%> -
- ) - } -

- If you have any question on JHipster or MHipster: -

- - - -

- If you like MHipster, do not forget to give us a star on - {' '} - Github! -

- - - - -
- ); -}; - -const mapStateToProps = storeState => ({ - account: storeState.authentication.account, - isAuthenticated: storeState.authentication.isAuthenticated -}); - -type StateProps = ReturnType; - -export default connect(mapStateToProps)(Home); diff --git a/generators/client/templates_back/react/src/main/webapp/app/modules/login/logout.tsx.ejs b/generators/client/templates_back/react/src/main/webapp/app/modules/login/logout.tsx.ejs deleted file mode 100644 index 69e5137b..00000000 --- a/generators/client/templates_back/react/src/main/webapp/app/modules/login/logout.tsx.ejs +++ /dev/null @@ -1,59 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> -import React, { useLayoutEffect } from 'react'; -import { connect } from 'react-redux'; - -import { IRootState } from 'app/shared/reducers'; -import { logout } from 'app/shared/reducers/authentication'; - -export interface ILogoutProps extends StateProps, DispatchProps { - idToken: string; - logoutUrl: string; -} - -export const Logout = (props: ILogoutProps) => { - useLayoutEffect(() => { - props.logout(); - const logoutUrl = props.logoutUrl; - if (logoutUrl) { - window.location.href = logoutUrl; - } - }); - - return ( -
-

Logged out successfully!

-
- ); -}; - -const mapStateToProps = (storeState: IRootState) => ({ - logoutUrl: storeState.authentication.logoutUrl, - idToken: storeState.authentication.idToken -}); - -const mapDispatchToProps = { logout }; - -type StateProps = ReturnType; -type DispatchProps = typeof mapDispatchToProps; - -export default connect( - mapStateToProps, - mapDispatchToProps -)(Logout); diff --git a/generators/client/templates_back/react/src/main/webapp/app/shared/layout/header/header.tsx.ejs b/generators/client/templates_back/react/src/main/webapp/app/shared/layout/header/header.tsx.ejs deleted file mode 100644 index e3617a80..00000000 --- a/generators/client/templates_back/react/src/main/webapp/app/shared/layout/header/header.tsx.ejs +++ /dev/null @@ -1,112 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> -import './header.<%= styleSheetExt %>'; - -import React, { useState<% if (enableI18nRTL) { %>, useEffect<% } %> } from 'react'; -import { Translate<% if (enableTranslation) { %>, Storage<% } %> } from 'react-jhipster'; -import { - Navbar, - Nav, - NavbarToggler, - NavbarBrand, - Collapse -} from 'reactstrap'; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; - -import { NavLink as Link } from 'react-router-dom'; -import LoadingBar from 'react-redux-loading-bar'; - -<%_ if (enableTranslation && enableI18nRTL) { _%> -import { isRTL } from 'app/config/translation'; -<%_ } _%> - -import { Home, Brand } from './header-components'; -import { AdminMenu, EntitiesMenu, AccountMenu<%_ if (enableTranslation) { _%>, LocaleMenu<%_ } _%>} from '../menus'; - -export interface IHeaderProps { - isAuthenticated: boolean; - isAdmin: boolean; - ribbonEnv: string; - isInProduction: boolean; - isSwaggerEnabled: boolean; -<%_ if (enableTranslation) { _%> - currentLocale: string; - onLocaleChange: Function; -<%_ } _%> -} - - -const Header = (props: IHeaderProps) => { - const [menuOpen, setMenuOpen] = useState(false); - <%_ if (enableI18nRTL) { _%> - useEffect(() => document.querySelector('html').setAttribute('dir', isRTL(Storage.session.get('locale')) ? 'rtl' : 'ltr')); - <%_ } _%> - - <%_ if (enableTranslation) { _%> - const handleLocaleChange = event => { - const langKey = event.target.value; - Storage.session.set('locale', langKey); - props.onLocaleChange(langKey); - <%_ if (enableI18nRTL) { _%> - document.querySelector('html').setAttribute('dir', isRTL(langKey) ? 'rtl' : 'ltr'); - <%_ } _%> - } - <%_ } _%> - - const renderDevRibbon = () => props.isInProduction === false ? ( - - ) : null; - - const toggleMenu = () => setMenuOpen(!menuOpen); - - /* jhipster-needle-add-element-to-menu - JHipster will add new menu items here */ - - return ( -
- {renderDevRibbon()} - - dark<% } else { %>light<% } %> expand="sm" fixed="top" className="<%_ if (clientTheme === 'none') { _%>jh-navbar<%_ } else { _%>bg-<%= clientThemeVariant %><%_ } _%>"> - - - - - - -
- ); -}; - -export default Header; diff --git a/generators/client/templates_back/react/src/main/webapp/app/shared/layout/menus/admin.tsx.ejs b/generators/client/templates_back/react/src/main/webapp/app/shared/layout/menus/admin.tsx.ejs deleted file mode 100644 index 84c6f834..00000000 --- a/generators/client/templates_back/react/src/main/webapp/app/shared/layout/menus/admin.tsx.ejs +++ /dev/null @@ -1,59 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> -import React from 'react'; -import MenuItem from 'app/shared/layout/menus/menu-item'; -import { - DropdownItem -} from 'reactstrap'; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { NavLink as Link } from 'react-router-dom'; -import { NavDropdown } from './menu-components'; -import { Translate, translate } from 'react-jhipster'; - -const adminMenuItems = ( - <> - <%_ if (applicationType === 'gateway' && serviceDiscoveryType) { _%> - Gateway - <%_ } _%> - <%_ if (!skipUserManagement) { _%> - User management - <%_ } _%> - <%_ if (websocket === 'spring-websocket') { _%> - User tracker - <%_ } _%> - Metrics - Health - Configuration - {/* jhipster-needle-add-element-to-admin-menu - JHipster will add entities to the admin menu here */} - Logs - -); - -const swaggerItem = ( - API -); - -export const AdminMenu = ({ showSwagger <% if (devDatabaseType === 'h2Disk' || devDatabaseType === 'h2Memory') { %>, showDatabase <%_ } _%>}) => ( - - {adminMenuItems} - {showSwagger && swaggerItem} - -); - -export default AdminMenu; diff --git a/generators/client/templates_back/react/src/main/webapp/app/shared/reducers/application-profile.ts.ejs b/generators/client/templates_back/react/src/main/webapp/app/shared/reducers/application-profile.ts.ejs deleted file mode 100644 index 2e2d7e2a..00000000 --- a/generators/client/templates_back/react/src/main/webapp/app/shared/reducers/application-profile.ts.ejs +++ /dev/null @@ -1,54 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> -import axios from 'axios'; - -import { SUCCESS } from 'app/shared/reducers/action-type.util'; - -export const ACTION_TYPES = { - GET_PROFILE: 'applicationProfile/GET_PROFILE' -}; - -const initialState = { - ribbonEnv: '', - inProduction: true, - isSwaggerEnabled: false -}; - -export type ApplicationProfileState = Readonly; - -export default (state: ApplicationProfileState = initialState, action): ApplicationProfileState => { - switch (action.type) { - case SUCCESS(ACTION_TYPES.GET_PROFILE): { - const { data } = action.payload; - return { - ...state, - ribbonEnv: data['display-ribbon-on-profiles'], - inProduction: data['active-profiles'].includes('prod'), - isSwaggerEnabled: data['active-profiles'].includes('swagger') - }; - } - default: - return state; - } -}; - -export const getProfile = () => ({ - type: ACTION_TYPES.GET_PROFILE, - payload: axios.get('management/info') -}); diff --git a/generators/client/templates_back/react/src/main/webapp/app/shared/reducers/authentication.ts.ejs b/generators/client/templates_back/react/src/main/webapp/app/shared/reducers/authentication.ts.ejs deleted file mode 100644 index 7f0f6670..00000000 --- a/generators/client/templates_back/react/src/main/webapp/app/shared/reducers/authentication.ts.ejs +++ /dev/null @@ -1,241 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> -import axios from 'axios'; -<%_ if (authenticationType === 'jwt' || enableTranslation) { _%> -import { Storage } from 'react-jhipster'; -<%_ } _%> - -import { REQUEST, SUCCESS, FAILURE } from 'app/shared/reducers/action-type.util'; -<% if (enableTranslation) { %>import { setLocale } from 'app/shared/reducers/locale';<% } %> - -export const ACTION_TYPES = { - <%_ if (authenticationType !== 'oauth2') { _%> - LOGIN: 'authentication/LOGIN', - <%_ } _%> - GET_SESSION: 'authentication/GET_SESSION', - LOGOUT: 'authentication/LOGOUT', - CLEAR_AUTH: 'authentication/CLEAR_AUTH', - ERROR_MESSAGE: 'authentication/ERROR_MESSAGE' -}; - -<%_ if (authenticationType === 'jwt') { _%> -const AUTH_TOKEN_KEY = '<%= jhiPrefixDashed %>-authenticationToken'; -<%_ } _%> - -const initialState = { - loading: false, - isAuthenticated: false, - <%_ if (authenticationType !== 'oauth2') { _%> - loginSuccess: false, - loginError: false, // Errors returned from server side - showModalLogin: false, - <%_ } _%> - account: {} as any, - errorMessage: null as string, // Errors returned from server side - redirectMessage: null as string, - sessionHasBeenFetched: false, - idToken: null as string, - logoutUrl: null as string -}; - -export type AuthenticationState = Readonly; - -// Reducer - -export default (state: AuthenticationState = initialState, action): AuthenticationState => { - switch (action.type) { - <%_ if (authenticationType !== 'oauth2') { _%> - case REQUEST(ACTION_TYPES.LOGIN): - <%_ } _%> - case REQUEST(ACTION_TYPES.GET_SESSION): - return { - ...state, - loading: true - }; - <%_ if (authenticationType !== 'oauth2') { _%> - case FAILURE(ACTION_TYPES.LOGIN): - return { - ...initialState, - errorMessage: action.payload, - showModalLogin: true, - loginError: true - }; - <%_ } _%> - case FAILURE(ACTION_TYPES.GET_SESSION): - return { - ...state, - loading: false, - isAuthenticated: false, - sessionHasBeenFetched: true, - <%_ if (authenticationType !== 'oauth2') { _%> - showModalLogin: true, - <%_ } _%> - errorMessage: action.payload - }; - <%_ if (authenticationType !== 'oauth2') { _%> - case SUCCESS(ACTION_TYPES.LOGIN): - return { - ...state, - loading: false, - loginError: false, - showModalLogin: false, - loginSuccess: true - }; - <%_ } _%> - <%_ if (authenticationType === 'jwt') { _%> - case ACTION_TYPES.LOGOUT: - <%_ } else { _%> - case SUCCESS(ACTION_TYPES.LOGOUT): - <%_ } _%> - return { - ...initialState, - <%_ if (authenticationType !== 'oauth2') { _%> - showModalLogin: true - <%_ } else { _%> - idToken: action.payload.data.idToken, - logoutUrl: action.payload.data.logoutUrl - <%_ } _%> - }; - case SUCCESS(ACTION_TYPES.GET_SESSION): - { - const isAuthenticated = action.payload && action.payload.data && action.payload.data.activated; - return { - ...state, - isAuthenticated, - loading: false, - sessionHasBeenFetched: true, - account: action.payload.data - }; - } - case ACTION_TYPES.ERROR_MESSAGE: - return { - ...initialState, - <%_ if (authenticationType !== 'oauth2') { _%> - showModalLogin: true, - <%_ } _%> - redirectMessage: action.message - }; - case ACTION_TYPES.CLEAR_AUTH: - return { - ...state, - loading: false, - <%_ if (authenticationType !== 'oauth2') { _%> - showModalLogin: true, - <%_ } _%> - isAuthenticated: false - }; - default: - return state; - } -}; - -export const displayAuthError = message => ({ type: ACTION_TYPES.ERROR_MESSAGE, message }); - -export const getSession: () => void = () => <%_ if (enableTranslation) { _%>async<%_ } _%> (dispatch, getState) => { - <%_ if (enableTranslation) { _%> - await dispatch({ - type: ACTION_TYPES.GET_SESSION, - payload: axios.get('<%= apiUaaPath %>api/account') - }); - - const { account } = getState().authentication; - if (account && account.langKey) { - const langKey = Storage.session.get('locale', account.langKey); - await dispatch(setLocale(langKey)); - } - <%_ } else { _%> - dispatch({ - type: ACTION_TYPES.GET_SESSION, - payload: axios.get('<%= apiUaaPath %>api/account') - }); - <%_ } _%> -} - -<%_ if (authenticationType === 'session') { _%> -export const login: (username: string, password: string, rememberMe?: boolean) => void = (username, password, rememberMe = false) => async (dispatch, getState) => { - const data = `username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}&remember-me=${rememberMe}&submit=Login`; - await dispatch({ - type: ACTION_TYPES.LOGIN, - payload: axios.post('api/authentication', data, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }) - }); - await dispatch(getSession()); -}; -<%_ } else if (authenticationType === 'jwt') { _%> - export const login: (username: string, password: string, rememberMe?: boolean) => void = (username, password, rememberMe = false) => async (dispatch, getState) => { - const result = await dispatch({ - type: ACTION_TYPES.LOGIN, - payload: axios.post('api/authenticate', { username, password, rememberMe }) - }); - const jwt = result.value.data.access_token; - if (jwt) { - if (rememberMe) { - Storage.local.set(AUTH_TOKEN_KEY, jwt); - } else { - Storage.session.set(AUTH_TOKEN_KEY, jwt); - } - } - await dispatch(getSession()); -}; -<%_ } else if (authenticationType === 'uaa') { _%> -export const login = (username, password, rememberMe = false) => async (dispatch, getState) => { - const result = await dispatch({ - type: ACTION_TYPES.LOGIN, - payload: axios.post('auth/login', { username, password }) - }); - await dispatch(getSession()); -}; -<%_ } _%> - -<%_ if (authenticationType === 'jwt') { _%> -export const clearAuthToken = () => { - if (Storage.local.get(AUTH_TOKEN_KEY)) { - Storage.local.remove(AUTH_TOKEN_KEY); - } - if (Storage.session.get(AUTH_TOKEN_KEY)) { - Storage.session.remove(AUTH_TOKEN_KEY); - } -}; - -export const logout: () => void = () => dispatch => { - clearAuthToken(); - dispatch({ - type: ACTION_TYPES.LOGOUT - }); -}; -<%_ } else { _%> -export const logout: () => void = () => async dispatch => { - await dispatch({ - type: ACTION_TYPES.LOGOUT, - payload: axios.post(<%_ if (authenticationType === 'uaa') { _%>'auth/logout'<%_ } else { _%>'api/logout'<%_ } _%>, {}) - }); - - // fetch new csrf token - dispatch(getSession()); -}; -<%_ } _%> - -export const clearAuthentication = messageKey => (dispatch, getState) => { - <%_ if (authenticationType == 'jwt') { _%> - clearAuthToken(); - <%_ } _%> - dispatch(displayAuthError(messageKey)); - dispatch({ - type: ACTION_TYPES.CLEAR_AUTH - }); -}; diff --git a/generators/client/templates_back/react/src/main/webapp/manifest.webapp.ejs b/generators/client/templates_back/react/src/main/webapp/manifest.webapp.ejs deleted file mode 100644 index ed25a049..00000000 --- a/generators/client/templates_back/react/src/main/webapp/manifest.webapp.ejs +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "<%= baseName %>", - "short_name": "<%= baseName %>", - "icons": [ - { - "src": "./content/images/jhipster_family_member_4_head-192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "./content/images/jhipster_family_member_4_head-256.png", - "sizes": "256x256", - "type": "image/png" - }, - { - "src": "./content/images/jhipster_family_member_4_head-384.png", - "sizes": "384x384", - "type": "image/png" - }, - { - "src": "./content/images/jhipster_family_member_4>_head-512.png", - "sizes": "512x512", - "type": "image/png" - } - ], - "theme_color": "#000000", - "background_color": "#e0e0e0", - "start_url": ".", - "display": "standalone", - "orientation": "portrait" -} diff --git a/generators/client/templates_back/react/src/test/javascript/e2e/modules/administration/administration.spec.ts.ejs b/generators/client/templates_back/react/src/test/javascript/e2e/modules/administration/administration.spec.ts.ejs deleted file mode 100644 index 503f159c..00000000 --- a/generators/client/templates_back/react/src/test/javascript/e2e/modules/administration/administration.spec.ts.ejs +++ /dev/null @@ -1,80 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> -import { element, by, browser } from 'protractor'; - -import NavBarPage from '../../page-objects/navbar-page'; -import SignInPage from '../../page-objects/signin-page'; -import { waitUntilDisplayed } from '../../util/utils'; - -const expect = chai.expect; - -describe('Administration', () => { - let navBarPage: NavBarPage; - let signInPage: SignInPage; - const username = process.env.E2E_USERNAME || 'admin'; - const password = process.env.E2E_PASSWORD || 'admin'; - - before(async () => { - await browser.get('/'); - navBarPage = new NavBarPage(); - signInPage = await navBarPage.getSignInPage(); - <%_ if (authenticationType !== 'oauth2') { _%> - await signInPage.waitUntilDisplayed(); - - await signInPage.username.sendKeys(username); - await signInPage.password.sendKeys(password); - await signInPage.loginButton.click(); - await signInPage.waitUntilHidden(); - - <%_ } else { _%> - await signInPage.loginWithOAuth(username, password); - <%_ } _%> - await waitUntilDisplayed(navBarPage.adminMenu); - }); - - <%_ if (!skipUserManagement) { _%> - it('should load user management', async () => { - await navBarPage.clickOnAdminMenuItem('user-management'); - const heading = element(by.id('user-management-page-heading')); - await waitUntilDisplayed(heading); - // Title should be equal to 'Users' - expect(await heading.isPresent()).to.be.true; - }); - <%_ } _%> - - it('should load metrics', async () => { - await navBarPage.clickOnAdminMenuItem('metrics'); - await waitUntilDisplayed(element(by.id('metrics-page-heading'))); - expect(await element(by.id('metrics-page-heading')).getText()).to.eq('Application Metrics'); - }); - - it('should load health', async () => { - await navBarPage.clickOnAdminMenuItem('health'); - expect(await element(by.id('health-page-heading')).getText()).to.eq('Health Checks'); - }); - - it('should load configuration', async () => { - await navBarPage.clickOnAdminMenuItem('configuration'); - expect(await element(by.id('configuration-page-heading')).getText()).to.eq('Configuration'); - }); - - after(async () => { - await navBarPage.autoSignOut() - }); -}); diff --git a/generators/client/templates_back/react/src/test/javascript/spec/app/modules/administration/administration.reducer.spec.ts.ejs b/generators/client/templates_back/react/src/test/javascript/spec/app/modules/administration/administration.reducer.spec.ts.ejs deleted file mode 100644 index 5f52c0f3..00000000 --- a/generators/client/templates_back/react/src/test/javascript/spec/app/modules/administration/administration.reducer.spec.ts.ejs +++ /dev/null @@ -1,411 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> - -import configureStore from 'redux-mock-store'; -import promiseMiddleware from 'redux-promise-middleware'; -import axios from 'axios'; -import thunk from 'redux-thunk'; -import sinon from 'sinon'; - -import { REQUEST, FAILURE, SUCCESS } from 'app/shared/reducers/action-type.util'; -import administration, { - ACTION_TYPES, - <%_ if (applicationType === 'gateway' && serviceDiscoveryType) { _%> - gatewayRoutes, - <%_ } _%> - systemHealth, - systemMetrics, - systemThreadDump, - getLoggers, - changeLogLevel, - getConfigurations, - getEnv<% if (!['no', 'cassandra'].includes(databaseType)) { %>, - getAudits<% } %> -} from 'app/modules/administration/administration.reducer'; - -describe('Administration reducer tests', () => { - const username = process.env.E2E_USERNAME || 'admin'; - - function isEmpty(element): boolean { - if (element instanceof Array) { - return element.length === 0; - } else { - return Object.keys(element).length === 0; - } - } - - function testInitialState(state) { - expect(state).toMatchObject({ - loading: false, - errorMessage: null, - totalItems: 0 - }); - <%_ if (applicationType === 'gateway' && serviceDiscoveryType) { _%> - expect(isEmpty(state.gateway.routes)); - <%_ } _%> - expect(isEmpty(state.logs.loggers)); - expect(isEmpty(state.threadDump)); - <%_ if (!['no', 'cassandra'].includes(databaseType)) { _%> - expect(isEmpty(state.audits)); - <%_ } _%> - <%_ if (websocket === 'spring-websocket') { _%> - expect(isEmpty(state.tracker.activities)); - <%_ } _%> - } - - function testMultipleTypes(types, payload, testFunction) { - types.forEach(e => { - testFunction(administration(undefined, { type: e, payload })); - }); - } - - describe('Common', () => { - it('should return the initial state', () => { - testInitialState(administration(undefined, {})); - }); - }); - - describe('Requests', () => { - it('should set state to loading', () => { - testMultipleTypes( - [ - <%_ if (applicationType === 'gateway' && serviceDiscoveryType) { _%> - REQUEST(ACTION_TYPES.FETCH_GATEWAY_ROUTE), - <%_ } _%> - REQUEST(ACTION_TYPES.FETCH_LOGS), - REQUEST(ACTION_TYPES.FETCH_HEALTH), - REQUEST(ACTION_TYPES.FETCH_METRICS), - REQUEST(ACTION_TYPES.FETCH_THREAD_DUMP), - REQUEST(ACTION_TYPES.FETCH_CONFIGURATIONS), - REQUEST(ACTION_TYPES.FETCH_ENV)<% if (!['no', 'cassandra'].includes(databaseType)) { %>, - REQUEST(ACTION_TYPES.FETCH_AUDITS)<% } %> - ], - {}, - state => { - expect(state).toMatchObject({ - errorMessage: null, - loading: true - }); - } - ); - }); - }); - - describe('Failures', () => { - it('should set state to failed and put an error message in errorMessage', () => { - testMultipleTypes( - [ - <%_ if (applicationType === 'gateway' && serviceDiscoveryType) { _%> - FAILURE(ACTION_TYPES.FETCH_GATEWAY_ROUTE), - <%_ } _%> - FAILURE(ACTION_TYPES.FETCH_LOGS), - FAILURE(ACTION_TYPES.FETCH_HEALTH), - FAILURE(ACTION_TYPES.FETCH_METRICS), - FAILURE(ACTION_TYPES.FETCH_THREAD_DUMP), - FAILURE(ACTION_TYPES.FETCH_CONFIGURATIONS), - FAILURE(ACTION_TYPES.FETCH_ENV)<% if (!['no', 'cassandra'].includes(databaseType)) { %>, - FAILURE(ACTION_TYPES.FETCH_AUDITS)<% } %> - ], - 'something happened', - state => { - expect(state).toMatchObject({ - loading: false, - errorMessage: 'something happened' - }); - } - ); - }); - }); - - describe('Success', () => { - <%_ if (applicationType === 'gateway' && serviceDiscoveryType) { _%> - it('should update state according to a successful fetch gateway routes request', () => { - const payload = { data: [] }; - const toTest = administration(undefined, { type: SUCCESS(ACTION_TYPES.FETCH_GATEWAY_ROUTE), payload }); - - expect(toTest).toMatchObject({ - loading: false, - gateway: { routes: payload.data } - }); - }); - <%_ } _%> - it('should update state according to a successful fetch logs request', () => { - const payload = { data: { - loggers: { - main: { - effectiveLevel: 'WARN' - } - } - } - }; - const toTest = administration(undefined, { type: SUCCESS(ACTION_TYPES.FETCH_LOGS), payload }); - - expect(toTest).toMatchObject({ - loading: false, - logs: payload.data - }); - }); - - it('should update state according to a successful fetch health request', () => { - const payload = { data: { status: 'UP' } }; - const toTest = administration(undefined, { type: SUCCESS(ACTION_TYPES.FETCH_HEALTH), payload }); - - expect(toTest).toMatchObject({ - loading: false, - health: payload.data - }); - }); - - it('should update state according to a successful fetch metrics request', () => { - const payload = { data: { version: '3.1.3', gauges: {} } }; - const toTest = administration(undefined, { type: SUCCESS(ACTION_TYPES.FETCH_METRICS), payload }); - - expect(toTest).toMatchObject({ - loading: false, - metrics: payload.data - }); - }); - - it('should update state according to a successful fetch thread dump request', () => { - const payload = { data: [{ threadName: 'hz.gateway.cached.thread-6', threadId: 9266 }] }; - const toTest = administration(undefined, { type: SUCCESS(ACTION_TYPES.FETCH_THREAD_DUMP), payload }); - - expect(toTest).toMatchObject({ - loading: false, - threadDump: payload.data - }); - }); - - it('should update state according to a successful fetch configurations request', () => { - const payload = { data: { contexts: { jhipster: { beans: {} } } } }; - const toTest = administration(undefined, { type: SUCCESS(ACTION_TYPES.FETCH_CONFIGURATIONS), payload }); - - expect(toTest).toMatchObject({ - loading: false, - configuration: { - configProps: payload.data, - env: {} - } - }); - }); - - it('should update state according to a successful fetch env request', () => { - const payload = { data: { 'active-profiles': ['swagger', 'dev'] } }; - const toTest = administration(undefined, { type: SUCCESS(ACTION_TYPES.FETCH_ENV), payload }); - - expect(toTest).toMatchObject({ - loading: false, - configuration: { - configProps: {}, - env: payload.data - } - }); - }); - -<%_ if (!['no', 'cassandra'].includes(databaseType)) { _%> - it('should update state according to a successful fetch audits request', () => { - const headers = { ['x-total-count']: 1 }; - const payload = { data: [{ id: 1, userLogin: username }], headers }; - const toTest = administration(undefined, { type: SUCCESS(ACTION_TYPES.FETCH_AUDITS), payload }); - - expect(toTest).toMatchObject({ - loading: false, - audits: payload.data, - totalItems: headers['x-total-count'] - }); - }); -<%_ } _%> - }); -<%_ if (websocket === 'spring-websocket') { _%> - describe('Websocket Message Handling', () => { - it('should update state according to a successful websocket message receipt', () => { - const payload = { id: 1, userLogin: username, page: 'home', sessionId: 'abc123' }; - const toTest = administration(undefined, { type: ACTION_TYPES.WEBSOCKET_ACTIVITY_MESSAGE, payload }); - - expect(toTest).toMatchObject({ - tracker: { activities: [payload] } - }); - }); - - it('should update state according to a successful websocket message receipt - only one activity per session', () => { - const firstPayload = { id: 1, userLogin: username, page: 'home', sessionId: 'abc123' }; - const secondPayload = { id: 1, userLogin: username, page: 'user-management', sessionId: 'abc123' }; - const firstState = administration(undefined, { type: ACTION_TYPES.WEBSOCKET_ACTIVITY_MESSAGE, payload: firstPayload }); - const secondState = administration(firstState, { type: ACTION_TYPES.WEBSOCKET_ACTIVITY_MESSAGE, payload: secondPayload }); - - expect(secondState).toMatchObject({ - tracker: { activities: [secondPayload] } - }); - }); - - it('should update state according to a successful websocket message receipt - remove logged out sessions', () => { - const firstPayload = { id: 1, userLogin: username, page: 'home', sessionId: 'abc123' }; - const secondPayload = { id: 1, userLogin: username, page: 'logout', sessionId: 'abc123' }; - const firstState = administration(undefined, { type: ACTION_TYPES.WEBSOCKET_ACTIVITY_MESSAGE, payload: firstPayload }); - const secondState = administration(firstState, { type: ACTION_TYPES.WEBSOCKET_ACTIVITY_MESSAGE, payload: secondPayload }); - - expect(secondState).toMatchObject({ - tracker: { activities: [] } - }); - }); - }); -<%_ } _%> - describe('Actions', () => { - let store; - - const resolvedObject = { value: 'whatever' }; - beforeEach(() => { - const mockStore = configureStore([thunk, promiseMiddleware]); - store = mockStore({}); - axios.get = sinon.stub().returns(Promise.resolve(resolvedObject)); - axios.post = sinon.stub().returns(Promise.resolve(resolvedObject)); - }); - <%_ if (applicationType === 'gateway' && serviceDiscoveryType) { _%> - it('dispatches FETCH_GATEWAY_ROUTE_PENDING and FETCH_GATEWAY_ROUTE_FULFILLED actions', async () => { - const expectedActions = [ - { - type: REQUEST(ACTION_TYPES.FETCH_GATEWAY_ROUTE) - }, - { - type: SUCCESS(ACTION_TYPES.FETCH_GATEWAY_ROUTE), - payload: resolvedObject - } - ]; - await store.dispatch(gatewayRoutes()).then(() => expect(store.getActions()).toEqual(expectedActions)); - }); - <%_ } _%> - it('dispatches FETCH_HEALTH_PENDING and FETCH_HEALTH_FULFILLED actions', async () => { - const expectedActions = [ - { - type: REQUEST(ACTION_TYPES.FETCH_HEALTH) - }, - { - type: SUCCESS(ACTION_TYPES.FETCH_HEALTH), - payload: resolvedObject - } - ]; - await store.dispatch(systemHealth()).then(() => expect(store.getActions()).toEqual(expectedActions)); - }); - it('dispatches FETCH_METRICS_PENDING and FETCH_METRICS_FULFILLED actions', async () => { - const expectedActions = [ - { - type: REQUEST(ACTION_TYPES.FETCH_METRICS) - }, - { - type: SUCCESS(ACTION_TYPES.FETCH_METRICS), - payload: resolvedObject - } - ]; - await store.dispatch(systemMetrics()).then(() => expect(store.getActions()).toEqual(expectedActions)); - }); - it('dispatches FETCH_THREAD_DUMP_PENDING and FETCH_THREAD_DUMP_FULFILLED actions', async () => { - const expectedActions = [ - { - type: REQUEST(ACTION_TYPES.FETCH_THREAD_DUMP) - }, - { - type: SUCCESS(ACTION_TYPES.FETCH_THREAD_DUMP), - payload: resolvedObject - } - ]; - await store.dispatch(systemThreadDump()).then(() => expect(store.getActions()).toEqual(expectedActions)); - }); - it('dispatches FETCH_LOGS_PENDING and FETCH_LOGS_FULFILLED actions', async () => { - const expectedActions = [ - { - type: REQUEST(ACTION_TYPES.FETCH_LOGS) - }, - { - type: SUCCESS(ACTION_TYPES.FETCH_LOGS), - payload: resolvedObject - } - ]; - await store.dispatch(getLoggers()).then(() => expect(store.getActions()).toEqual(expectedActions)); - }); - it('dispatches FETCH_LOGS_CHANGE_LEVEL_PENDING and FETCH_LOGS_CHANGE_LEVEL_FULFILLED actions', async () => { - const expectedActions = [ - { - type: REQUEST(ACTION_TYPES.FETCH_LOGS_CHANGE_LEVEL) - }, - { - type: SUCCESS(ACTION_TYPES.FETCH_LOGS_CHANGE_LEVEL), - payload: resolvedObject - }, - { - type: REQUEST(ACTION_TYPES.FETCH_LOGS) - }, - { - type: SUCCESS(ACTION_TYPES.FETCH_LOGS), - payload: resolvedObject - } - ]; - await store.dispatch(changeLogLevel('ROOT', 'DEBUG')).then(() => expect(store.getActions()).toEqual(expectedActions)); - }); - it('dispatches FETCH_CONFIGURATIONS_PENDING and FETCH_CONFIGURATIONS_FULFILLED actions', async () => { - const expectedActions = [ - { - type: REQUEST(ACTION_TYPES.FETCH_CONFIGURATIONS) - }, - { - type: SUCCESS(ACTION_TYPES.FETCH_CONFIGURATIONS), - payload: resolvedObject - } - ]; - await store.dispatch(getConfigurations()).then(() => expect(store.getActions()).toEqual(expectedActions)); - }); - it('dispatches FETCH_ENV_PENDING and FETCH_ENV_FULFILLED actions', async () => { - const expectedActions = [ - { - type: REQUEST(ACTION_TYPES.FETCH_ENV) - }, - { - type: SUCCESS(ACTION_TYPES.FETCH_ENV), - payload: resolvedObject - } - ]; - await store.dispatch(getEnv()).then(() => expect(store.getActions()).toEqual(expectedActions)); - }); - <%_ if (!['no', 'cassandra'].includes(databaseType)) { _%> - it('dispatches FETCH_AUDITS_PENDING and FETCH_AUDITS_FULFILLED actions with pagination variables - no sort', async () => { - const expectedActions = [ - { - type: REQUEST(ACTION_TYPES.FETCH_AUDITS) - }, - { - type: SUCCESS(ACTION_TYPES.FETCH_AUDITS), - payload: resolvedObject - } - ]; - await store.dispatch(getAudits(1, 10, null, Date.now(), Date.now())).then(() => expect(store.getActions()).toEqual(expectedActions)); - }); - it('dispatches FETCH_AUDITS_PENDING and FETCH_AUDITS_FULFILLED actions with pagination variables - no dates', async () => { - const expectedActions = [ - { - type: REQUEST(ACTION_TYPES.FETCH_AUDITS) - }, - { - type: SUCCESS(ACTION_TYPES.FETCH_AUDITS), - payload: resolvedObject - } - ]; - await store.dispatch(getAudits(1, 10, 'id,desc', null, null)).then(() => expect(store.getActions()).toEqual(expectedActions)); - }); - <%_ } _%> - }); -}); diff --git a/generators/client/templates_back/react/src/test/javascript/spec/app/shared/reducers/application-profile.spec.ts.ejs b/generators/client/templates_back/react/src/test/javascript/spec/app/shared/reducers/application-profile.spec.ts.ejs deleted file mode 100644 index dbb1b8a6..00000000 --- a/generators/client/templates_back/react/src/test/javascript/spec/app/shared/reducers/application-profile.spec.ts.ejs +++ /dev/null @@ -1,95 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> - -import { REQUEST, SUCCESS } from 'app/shared/reducers/action-type.util'; -import thunk from 'redux-thunk'; -import axios from 'axios'; -import sinon from 'sinon'; -import configureStore from 'redux-mock-store'; -import promiseMiddleware from 'redux-promise-middleware'; - -import profile, { ACTION_TYPES, getProfile } from 'app/shared/reducers/application-profile'; - -describe('Profile reducer tests', () => { - const initialState = { - ribbonEnv: '', - inProduction: true, - isSwaggerEnabled: false - }; - describe('Common tests', () => { - it('should return the initial state', () => { - const toTest = profile(undefined, {}); - expect(toTest).toEqual(initialState); - }); - - it('should return the right payload in prod', () => { - const payload = { - data: { - 'display-ribbon-on-profiles' : 'awesome ribbon stuff', - 'active-profiles' : [ 'prod' ] - } - }; - - expect(profile(undefined, { type: SUCCESS(ACTION_TYPES.GET_PROFILE), payload })).toEqual({ - ribbonEnv: 'awesome ribbon stuff', - inProduction: true, - isSwaggerEnabled: false - }); - }); - - it('should return the right payload in dev with swagger enabled', () => { - const payload = { - data: { - 'display-ribbon-on-profiles' : 'awesome ribbon stuff', - 'active-profiles' : [ 'swagger', 'dev' ] - } - }; - - expect(profile(undefined, { type: SUCCESS(ACTION_TYPES.GET_PROFILE), payload })).toEqual({ - ribbonEnv: 'awesome ribbon stuff', - inProduction: false, - isSwaggerEnabled: true - }); - }); - }); - - describe('Actions', () => { - let store; - - const resolvedObject = { value: 'whatever' }; - beforeEach(() => { - const mockStore = configureStore([thunk, promiseMiddleware]); - store = mockStore({}); - axios.get = sinon.stub().returns(Promise.resolve(resolvedObject)); - }); - - it('dispatches GET_SESSION_PENDING and GET_SESSION_FULFILLED actions', async () => { - const expectedActions = [ - { - type: REQUEST(ACTION_TYPES.GET_PROFILE) - }, - { - type: SUCCESS(ACTION_TYPES.GET_PROFILE), - payload: resolvedObject - } - ]; - await store.dispatch(getProfile()).then(() => expect(store.getActions()).toEqual(expectedActions)); - }); - }); -}); diff --git a/generators/client/templates_back/react/src/test/javascript/spec/app/shared/reducers/authentication.spec.ts.ejs b/generators/client/templates_back/react/src/test/javascript/spec/app/shared/reducers/authentication.spec.ts.ejs deleted file mode 100644 index 23a0241d..00000000 --- a/generators/client/templates_back/react/src/test/javascript/spec/app/shared/reducers/authentication.spec.ts.ejs +++ /dev/null @@ -1,323 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> - -import { REQUEST, SUCCESS, FAILURE } from 'app/shared/reducers/action-type.util'; -import thunk from 'redux-thunk'; -import axios from 'axios'; -import sinon from 'sinon'; -<%_ if (authenticationType === 'jwt') { _%> -import { Storage } from 'react-jhipster'; -<%_ } _%> -import configureStore from 'redux-mock-store'; -import promiseMiddleware from 'redux-promise-middleware'; - -import authentication, { ACTION_TYPES, getSession<% if (authenticationType !== 'oauth2') { %>, login<% } %>, clearAuthentication, logout<% if (authenticationType === 'jwt') { %>, clearAuthToken<% } %> } from 'app/shared/reducers/authentication'; -<% if (enableTranslation) { %>import { ACTION_TYPES as localeActionTypes } from 'app/shared/reducers/locale';<% } %> - -describe('Authentication reducer tests', () => { - function isAccountEmpty(state): boolean { - return Object.keys(state.account).length === 0; - } - - describe('Common tests', () => { - it('should return the initial state', () => { - const toTest = authentication(undefined, {}); - expect(toTest).toMatchObject({ - loading: false, - isAuthenticated: false, - errorMessage: null, // Errors returned from server side - <%_ if (authenticationType !== 'oauth2') { _%> - loginSuccess: false, - loginError: false, // Errors returned from server side - showModalLogin: false, - <%_ } _%> - redirectMessage: null - }); - expect(isAccountEmpty(toTest)); - }); - }); - - <%_ if (authenticationType !== 'oauth2') { _%> - describe('Requests', () => { - it('should detect a request', () => { - expect(authentication(undefined, { type: REQUEST(ACTION_TYPES.LOGIN) })).toMatchObject({ - loading: true - }); - expect(authentication(undefined, { type: REQUEST(ACTION_TYPES.GET_SESSION) })).toMatchObject({ - loading: true - }); - }); - }); - <%_ } _%> - - describe('Success', () => { - <%_ if (authenticationType !== 'oauth2') { _%> - it('should detect a success on login', () => { - const toTest = authentication(undefined, { type: SUCCESS(ACTION_TYPES.LOGIN) }); - expect(toTest).toMatchObject({ - loading: false, - <%_ if (authenticationType !== 'oauth2') { _%> - loginError: false, - loginSuccess: true, - showModalLogin: false - <%_ } _%> - }); - }); - <%_ } _%> - - it('should detect a success on get session and be authenticated', () => { - const payload = { data: { activated: true } }; - const toTest = authentication(undefined, { type: SUCCESS(ACTION_TYPES.GET_SESSION), payload }); - expect(toTest).toMatchObject({ - isAuthenticated: true, - loading: false, - account: payload.data - }); - }); - - it('should detect a success on get session and not be authenticated', () => { - const payload = { data: { activated: false } }; - const toTest = authentication(undefined, { type: SUCCESS(ACTION_TYPES.GET_SESSION), payload }); - expect(toTest).toMatchObject({ - isAuthenticated: false, - loading: false, - account: payload.data - }); - }); - }); - - describe('Failure', () => { - <%_ if (authenticationType !== 'oauth2') { _%> - it('should detect a failure on login', () => { - const payload = 'Something happened.'; - const toTest = authentication(undefined, { type: FAILURE(ACTION_TYPES.LOGIN), payload }); - - expect(toTest).toMatchObject({ - errorMessage: payload, - showModalLogin: true, - loginError: true - }); - expect(isAccountEmpty(toTest)); - }); - <%_ } _%> - - it('should detect a failure', () => { - const payload = 'Something happened.'; - const toTest = authentication(undefined, { type: FAILURE(ACTION_TYPES.GET_SESSION), payload }); - - expect(toTest).toMatchObject({ - loading: false, - isAuthenticated: false, - <%_ if (authenticationType !== 'oauth2') { _%> - showModalLogin: true, - <%_ } _%> - errorMessage: payload - }); - expect(isAccountEmpty(toTest)); - }); - }); - - describe('Other cases', () => { - it('should properly reset the current state when a logout is requested', () => { - <%_ if (authenticationType === 'oauth2') { _%>const payload = { data: { idToken: 'xyz', logoutUrl: 'http://localhost:8080/logout' } };<%_ } _%> - const toTest = authentication(undefined, { type: <%_ if (authenticationType === 'jwt') { _%> ACTION_TYPES.LOGOUT <%_ } else if (authenticationType === 'oauth2') { _%>SUCCESS(ACTION_TYPES.LOGOUT), payload<%_ } else { _%>SUCCESS(ACTION_TYPES.LOGOUT)<%_ } _%> }); - expect(toTest).toMatchObject({ - loading: false, - isAuthenticated: false, - <%_ if (authenticationType !== 'oauth2') { _%> - loginSuccess: false, - loginError: false, - showModalLogin: true, - <%_ } _%> - errorMessage: null, - redirectMessage: null - }); - expect(isAccountEmpty(toTest)); - }); - - it('should properly define an error message and change the current state to display the login modal', () => { - const message = 'redirect me please'; - const toTest = authentication(undefined, { type: ACTION_TYPES.ERROR_MESSAGE, message }); - expect(toTest).toMatchObject({ - loading: false, - isAuthenticated: false, - <%_ if (authenticationType !== 'oauth2') { _%> - loginSuccess: false, - loginError: false, - showModalLogin: true, - <%_ } _%> - errorMessage: null, - redirectMessage: message - }); - expect(isAccountEmpty(toTest)); - }); - - it('should clear authentication', () => { - const message = 'redirect me please'; - const toTest = authentication(undefined, { type: ACTION_TYPES.CLEAR_AUTH, message }); - expect(toTest).toMatchObject({ - loading: false, - <%_ if (authenticationType !== 'oauth2') { _%> - showModalLogin: true, - <%_ } _%> - isAuthenticated: false - }); - }); - }); - - describe('Actions', () => { - let store; - - const resolvedObject = { value: 'whatever' }; - beforeEach(() => { - const mockStore = configureStore([thunk, promiseMiddleware]); - store = mockStore({ authentication: { account: { <%_ if (enableTranslation) { _%> langKey: '<%= nativeLanguage %>' <% } %> } } }); - axios.get = sinon.stub().returns(Promise.resolve(resolvedObject)); - }); - - it('dispatches GET_SESSION_PENDING and GET_SESSION_FULFILLED actions', async () => { - const expectedActions = [ - { - type: REQUEST(ACTION_TYPES.GET_SESSION) - }, - { - type: SUCCESS(ACTION_TYPES.GET_SESSION), - payload: resolvedObject - }<% if (enableTranslation) { %>, - { - type: localeActionTypes.SET_LOCALE, - locale: '<%= nativeLanguage %>' - }<% } %> - ]; - await store.dispatch(getSession()); - expect(store.getActions()).toEqual(expectedActions); - }); - - it('dispatches LOGOUT actions', async () => { - <%_ if (authenticationType !== 'jwt') { _%> - axios.post = sinon.stub().returns(Promise.resolve({})); - <%_ } _%> - const expectedActions = [ - <%_ if (authenticationType === 'jwt') { _%> - { - type: ACTION_TYPES.LOGOUT - } - <%_ } else { _%> - { - type: REQUEST(ACTION_TYPES.LOGOUT) - }, - { - "payload": {}, - type: SUCCESS(ACTION_TYPES.LOGOUT), - }<%_ if (authenticationType !== 'oauth2') { _%>, - { - type: REQUEST(ACTION_TYPES.GET_SESSION), - }, - { - "payload": resolvedObject, - type: SUCCESS(ACTION_TYPES.GET_SESSION), - } - <%_ } _%> - <%_ } _%> - ]; - await store.dispatch(logout()); - expect(store.getActions()).toEqual(expectedActions); - }); - - it('dispatches CLEAR_AUTH actions', async () => { - const expectedActions = [ - { - message: 'message', - type: ACTION_TYPES.ERROR_MESSAGE - }, - { - type: ACTION_TYPES.CLEAR_AUTH - } - ]; - await store.dispatch(clearAuthentication('message')); - expect(store.getActions()).toEqual(expectedActions); - }); - - <%_ if (authenticationType !== 'oauth2') { _%> - it('dispatches LOGIN, GET_SESSION and SET_LOCALE success and request actions', async () => { - <%_ if (authenticationType === 'jwt') { _%> - const loginResponse = { data: { 'access_token': 'auth' } }; // eslint-disable-line @typescript-eslint/camelcase - <%_ } else { _%> - const loginResponse = { value: 'any' }; - <%_ } _%> - axios.post = sinon.stub().returns(Promise.resolve(loginResponse)); - const expectedActions = [ - { - type: REQUEST(ACTION_TYPES.LOGIN) - }, - { - type: SUCCESS(ACTION_TYPES.LOGIN), - payload: loginResponse - }, - { - type: REQUEST(ACTION_TYPES.GET_SESSION) - }, - { - type: SUCCESS(ACTION_TYPES.GET_SESSION), - payload: resolvedObject - }<% if (enableTranslation) { %>, - { - type: localeActionTypes.SET_LOCALE, - locale: '<%= nativeLanguage %>' - }<% } %> - ]; - await store.dispatch(login('test', 'test')); - expect(store.getActions()).toEqual(expectedActions); - }); - <%_ } _%> - }); - <%_ if (authenticationType === 'jwt') { _%> - describe('clearAuthToken', () => { - let store; - beforeEach(() => { - const mockStore = configureStore([thunk, promiseMiddleware]); - store = mockStore({ authentication: { account: { langKey: 'en' } } }); - }); - it('clears the session token on clearAuthToken', async () => { - const AUTH_TOKEN_KEY = '<%= jhiPrefixDashed %>-authenticationToken'; - const loginResponse = { data: { 'access_token': 'TestToken' } }; // eslint-disable-line @typescript-eslint/camelcase - axios.post = sinon.stub().returns(Promise.resolve(loginResponse)); - - await store.dispatch(login('test', 'test')); - expect(Storage.session.get(AUTH_TOKEN_KEY)).toBe('TestToken'); - expect(Storage.local.get(AUTH_TOKEN_KEY)).toBe(undefined); - clearAuthToken() - expect(Storage.session.get(AUTH_TOKEN_KEY)).toBe(undefined); - expect(Storage.local.get(AUTH_TOKEN_KEY)).toBe(undefined); - }); - it('clears the local storage token on clearAuthToken', async () => { - const AUTH_TOKEN_KEY = '<%= jhiPrefixDashed %>-authenticationToken'; - const loginResponse = { data: { 'access_token': 'TestToken' } }; // eslint-disable-line @typescript-eslint/camelcase - axios.post = sinon.stub().returns(Promise.resolve(loginResponse)); - - await store.dispatch(login('user', 'user', true)); - expect(Storage.session.get(AUTH_TOKEN_KEY)).toBe(undefined); - expect(Storage.local.get(AUTH_TOKEN_KEY)).toBe('TestToken'); - clearAuthToken() - expect(Storage.session.get(AUTH_TOKEN_KEY)).toBe(undefined); - expect(Storage.local.get(AUTH_TOKEN_KEY)).toBe(undefined); - }); - }); - <%_ } _%> -}); diff --git a/generators/client/templates_back/react/webpack/webpack.dev.js.ejs b/generators/client/templates_back/react/webpack/webpack.dev.js.ejs deleted file mode 100644 index fde519b5..00000000 --- a/generators/client/templates_back/react/webpack/webpack.dev.js.ejs +++ /dev/null @@ -1,135 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> -const webpack = require('webpack'); -const writeFilePlugin = require('write-file-webpack-plugin'); -const webpackMerge = require('webpack-merge'); -const BrowserSyncPlugin = require('browser-sync-webpack-plugin'); -const FriendlyErrorsWebpackPlugin = require('friendly-errors-webpack-plugin'); -const SimpleProgressWebpackPlugin = require('simple-progress-webpack-plugin'); -const WebpackNotifierPlugin = require('webpack-notifier'); -const path = require('path'); -const sass = require('sass'); - -const utils = require('./utils.js'); -const commonConfig = require('./webpack.common.js'); - -const ENV = 'development'; - -module.exports = (options) => webpackMerge(commonConfig({ env: ENV }), { - devtool: 'cheap-module-source-map', // https://reactjs.org/docs/cross-origin-errors.html - mode: ENV, - entry: [ - './<%= CLIENT_MAIN_SRC_DIR %>app/index' - ], - output: { - path: utils.root('<%= DIST_DIR %>'), - filename: 'app/[name].bundle.js', - chunkFilename: 'app/[id].chunk.js' - }, - module: { - rules: [ - { - test: /\.(sa|sc|c)ss$/, - use: ['style-loader', 'css-loader', 'postcss-loader', { - loader: 'sass-loader', - options: { implementation: sass } - } - ] - } - ] - }, - devServer: { - stats: options.stats, - hot: true, - contentBase: './<%= DIST_DIR %>', - proxy: [{ - context: [ - '/api', - '/services', - '/management', - '/swagger-resources', - '/v2/api-docs', - '/h2-console',<% if (authenticationType === 'oauth2') { %> - '/oauth2', - '/login', - '/logout',<% } %> - '/auth' - ], - target: `http${options.tls ? 's' : ''}://localhost:<%= serverPort %>`, - secure: false, - changeOrigin: options.tls - }<% if (websocket === 'spring-websocket') { %>,{ - context: [ - '/websocket' - ], - target: 'ws://127.0.0.1:<%= serverPort %>', - ws: true - }<% } %>], - watchOptions: { - ignored: /node_modules/ - }, - https: options.tls, - historyApiFallback: true - }, - stats: process.env.JHI_DISABLE_WEBPACK_LOGS ? 'none' : options.stats, - plugins: [ - process.env.JHI_DISABLE_WEBPACK_LOGS - ? null - : new SimpleProgressWebpackPlugin({ - format: options.stats === 'minimal' ? 'compact' : 'expanded' - }), - new FriendlyErrorsWebpackPlugin(), - new BrowserSyncPlugin({ - https: options.tls, - host: 'localhost', - port: 9000, - proxy: { - target: `http${options.tls ? 's' : ''}://localhost:9060`<% if (websocket === 'spring-websocket') { %>, - ws: true<% } %>, - proxyOptions: { - changeOrigin: false //pass the Host header to the backend unchanged https://github.com/Browsersync/browser-sync/issues/430 - } - }, - socket: { - clients: { - heartbeatTimeout: 60000 - } - } - /* - ,ghostMode: { // uncomment this part to disable BrowserSync ghostMode; https://github.com/jhipster/generator-jhipster/issues/11116 - clicks: false, - location: false, - forms: false, - scroll: false - } */ - }, { - reload: false - }), - new webpack.NamedModulesPlugin(), - new webpack.HotModuleReplacementPlugin(), - new writeFilePlugin(), - new webpack.WatchIgnorePlugin([ - utils.root('src/test'), - ]), - new WebpackNotifierPlugin({ - title: 'JHipster', - contentImage: path.join(__dirname, 'logo-jhipster.png') - }) - ].filter(Boolean) -}); diff --git a/generators/common/templates/README.md.ejs b/generators/common/templates/README.md.ejs index fa381533..2705337a 100644 --- a/generators/common/templates/README.md.ejs +++ b/generators/common/templates/README.md.ejs @@ -102,7 +102,7 @@ micronaut: client-secret: web_app client-id: web_app openid: - issuer: http://localhost:9080/auth/realms/jhipster + issuer: http://localhost:9080/realms/jhipster login-uri: /oauth2/authorization{/provider} callback-uri: /oauth2/callback{/provider} ``` diff --git a/generators/cypress/__snapshots__/generator.spec.mjs.snap b/generators/cypress/__snapshots__/generator.spec.mjs.snap index 572a42b4..2c19211d 100644 --- a/generators/cypress/__snapshots__/generator.spec.mjs.snap +++ b/generators/cypress/__snapshots__/generator.spec.mjs.snap @@ -5,10 +5,10 @@ Object { ".yo-rc.json": Object { "stateCleared": "modified", }, - "cypress-audits.json": Object { + "cypress-audits.config.ts": Object { "stateCleared": "modified", }, - "cypress.json": Object { + "cypress.config.ts": Object { "stateCleared": "modified", }, "package.json": Object { @@ -17,28 +17,28 @@ Object { "src/test/javascript/cypress/.eslintrc.json": Object { "stateCleared": "modified", }, - "src/test/javascript/cypress/fixtures/integration-test.png": Object { + "src/test/javascript/cypress/e2e/account/login-page.cy.ts": Object { "stateCleared": "modified", }, - "src/test/javascript/cypress/integration/account/login-page.spec.ts": Object { + "src/test/javascript/cypress/e2e/account/password-page.cy.ts": Object { "stateCleared": "modified", }, - "src/test/javascript/cypress/integration/account/password-page.spec.ts": Object { + "src/test/javascript/cypress/e2e/account/register-page.cy.ts": Object { "stateCleared": "modified", }, - "src/test/javascript/cypress/integration/account/register-page.spec.ts": Object { + "src/test/javascript/cypress/e2e/account/reset-password-page.cy.ts": Object { "stateCleared": "modified", }, - "src/test/javascript/cypress/integration/account/reset-password-page.spec.ts": Object { + "src/test/javascript/cypress/e2e/account/settings-page.cy.ts": Object { "stateCleared": "modified", }, - "src/test/javascript/cypress/integration/account/settings-page.spec.ts": Object { + "src/test/javascript/cypress/e2e/administration/administration.cy.ts": Object { "stateCleared": "modified", }, - "src/test/javascript/cypress/integration/administration/administration.spec.ts": Object { + "src/test/javascript/cypress/e2e/lighthouse.audits.ts": Object { "stateCleared": "modified", }, - "src/test/javascript/cypress/integration/lighthouse.audits.ts": Object { + "src/test/javascript/cypress/fixtures/integration-test.png": Object { "stateCleared": "modified", }, "src/test/javascript/cypress/plugins/index.ts": Object { diff --git a/generators/cypress/generator.mjs b/generators/cypress/generator.mjs index 0f56363b..584760ad 100644 --- a/generators/cypress/generator.mjs +++ b/generators/cypress/generator.mjs @@ -23,7 +23,7 @@ export default class extends extendGenerator(CypressGenerator) { get [POST_WRITING_PRIORITY]() { return { customizeCypressForMicronaut({ application: { authenticationTypeJwt } }) { - this.editFile('src/test/javascript/cypress/integration/administration/administration.spec.ts', content => + this.editFile('src/test/javascript/cypress/e2e/administration/administration.cy.ts', content => content.replaceAll('info.activeProfiles', "info['active-profiles']") ); if (authenticationTypeJwt) { diff --git a/generators/cypress/templates/src/test/javascript/cypress/integration/account/reset-password-page.spec.ts.ejs b/generators/cypress/templates/src/test/javascript/cypress/e2e/account/reset-password-page.spec.ts.ejs similarity index 100% rename from generators/cypress/templates/src/test/javascript/cypress/integration/account/reset-password-page.spec.ts.ejs rename to generators/cypress/templates/src/test/javascript/cypress/e2e/account/reset-password-page.spec.ts.ejs diff --git a/generators/entity-server/templates/src/main/java/package/repository/EntityRepository.java.ejs b/generators/entity-server/templates/src/main/java/package/repository/EntityRepository.java.ejs index 70de639d..00634fae 100644 --- a/generators/entity-server/templates/src/main/java/package/repository/EntityRepository.java.ejs +++ b/generators/entity-server/templates/src/main/java/package/repository/EntityRepository.java.ejs @@ -91,9 +91,9 @@ public interface <%= entityClass %>Repository extends <% if (databaseType === 's <%_ if (fieldsContainOwnerManyToMany === true) { if (databaseType === 'sql') { _%> - @Query(value = "select distinct <%= entityInstance %> from <%= asEntity(entityClass) %> <%= entityInstance %><% for (idx in relationships) { - if (relationships[idx].relationshipType === 'many-to-many' && relationships[idx].ownerSide === true) { %> left join fetch <%= entityInstance %>.<%= relationships[idx].relationshipFieldNamePlural %><% } } %>", - countQuery = "select count(distinct <%= entityInstance %>) from <%= asEntity(entityClass) %> <%= entityInstance %>") + @Query(value = "select distinct <%= entityInstance %>_ from <%= asEntity(entityClass) %> <%= entityInstance %>_<% for (idx in relationships) { + if (relationships[idx].relationshipType === 'many-to-many' && relationships[idx].ownerSide === true) { %> left join fetch <%= entityInstance %>_.<%= relationships[idx].relationshipFieldNamePlural %><% } } %>", + countQuery = "select count(distinct <%= entityInstance %>_) from <%= asEntity(entityClass) %> <%= entityInstance %>_") public Page<<%= asEntity(entityClass) %>> findAllWithEagerRelationships(Pageable pageable); @Query("select distinct <%= entityInstance %> from <%= asEntity(entityClass) %> <%= entityInstance %><% for (idx in relationships) { diff --git a/generators/server/__snapshots__/generator.spec.mjs.snap b/generators/server/__snapshots__/generator.spec.mjs.snap index 62dc5cd8..0ed271e3 100644 --- a/generators/server/__snapshots__/generator.spec.mjs.snap +++ b/generators/server/__snapshots__/generator.spec.mjs.snap @@ -50,6 +50,12 @@ Object { "mvnw.cmd": Object { "stateCleared": "modified", }, + "npmw": Object { + "stateCleared": "modified", + }, + "npmw.cmd": Object { + "stateCleared": "modified", + }, "openapi.properties": Object { "stateCleared": "modified", }, diff --git a/generators/server/files.cjs b/generators/server/files.cjs index 6b9550e8..439361bb 100644 --- a/generators/server/files.cjs +++ b/generators/server/files.cjs @@ -145,11 +145,7 @@ const serverFiles = { { condition: generator => generator.authenticationType === 'oauth2' && generator.applicationType !== 'microservice', path: DOCKER_DIR, - templates: [ - 'keycloak.yml', - { file: 'config/realm-config/jhipster-realm.json', renameTo: () => 'realm-config/jhipster-realm.json' }, - { file: 'config/realm-config/jhipster-users-0.json', renameTo: () => 'realm-config/jhipster-users-0.json' }, - ], + templates: ['keycloak.yml', { file: 'config/realm-config/jhipster-realm.json', renameTo: () => 'realm-config/jhipster-realm.json' }], }, ], serverResources: [ @@ -163,6 +159,11 @@ const serverFiles = { path: SERVER_MAIN_RES_DIR, templates: ['swagger/api.yml'], }, + { + condition: generator => !generator.skipClient, + transform: false, + templates: ['npmw', 'npmw.cmd'], + }, { path: SERVER_MAIN_RES_DIR, templates: [ diff --git a/generators/server/generator.mjs b/generators/server/generator.mjs index 79ee6ccd..b0f7a34f 100644 --- a/generators/server/generator.mjs +++ b/generators/server/generator.mjs @@ -121,7 +121,27 @@ export default class extends extendGenerator(ServerGenerator) { }, }); }, - + customizeLiquibase({ + application: { devDatabaseTypeH2Any, prodDatabaseTypeMysql, prodDatabaseTypeMariadb, prodDatabaseTypePostgres }, + }) { + // Micronaut uses h2 for tests, add liquibase h2 configuration. + if (!devDatabaseTypeH2Any) { + try { + this.editFile('src/main/resources/config/liquibase/master.xml', content => + content.replace( + 'xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd">', + `xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd"> + + + + + + ` + ) + ); + } catch {} + } + }, customizeMaven({ application: { buildToolMaven } }) { if (!buildToolMaven) return; this.packageJson.merge({ diff --git a/generators/server/templates/src/main/docker/config/realm-config/jhipster-realm.json.ejs b/generators/server/templates/src/main/docker/config/realm-config/jhipster-realm.json.ejs index ccfec08d..7ebbe70f 100644 --- a/generators/server/templates/src/main/docker/config/realm-config/jhipster-realm.json.ejs +++ b/generators/server/templates/src/main/docker/config/realm-config/jhipster-realm.json.ejs @@ -1,7 +1,9 @@ { "id": "jhipster", "realm": "jhipster", + "displayName": "JHipster", "notBefore": 0, + "defaultSignatureAlgorithm": "RS256", "revokeRefreshToken": false, "refreshTokenMaxReuse": 0, "accessTokenLifespan": 300, @@ -13,11 +15,17 @@ "offlineSessionIdleTimeout": 2592000, "offlineSessionMaxLifespanEnabled": false, "offlineSessionMaxLifespan": 5184000, + "clientSessionIdleTimeout": 0, + "clientSessionMaxLifespan": 0, + "clientOfflineSessionIdleTimeout": 0, + "clientOfflineSessionMaxLifespan": 0, "accessCodeLifespan": 60, "accessCodeLifespanUserAction": 300, "accessCodeLifespanLogin": 1800, "actionTokenGeneratedByAdminLifespan": 43200, "actionTokenGeneratedByUserLifespan": 300, + "oauth2DeviceCodeLifespan": 600, + "oauth2DevicePollingInterval": 5, "enabled": true, "sslRequired": "external", "registrationAllowed": false, @@ -39,7 +47,7 @@ "roles": { "realm": [ { - "id": "a2350d85-938e-440c-847c-35086fe0f1d8", + "id": "8e986fb5-dafb-43bf-a7c2-7e57572d3d80", "name": "ROLE_ADMIN", "description": "Jhipster administrator role", "composite": false, @@ -48,7 +56,7 @@ "attributes": {} }, { - "id": "932ca70d-a311-42f9-9042-431cef835b9e", + "id": "e1b19afd-f612-4a79-bdf8-26a99b89b10b", "name": "offline_access", "description": "${role_offline-access}", "composite": false, @@ -57,7 +65,7 @@ "attributes": {} }, { - "id": "8b1a0e78-24be-49ed-bc74-6471bd8d0f8f", + "id": "ec5705e1-fc1d-4d21-8364-abd3bd4efcd0", "name": "ROLE_USER", "description": "Jhipster user role", "composite": false, @@ -66,7 +74,28 @@ "attributes": {} }, { - "id": "96c0124c-0f00-4769-8cd3-f7dfd74a0af3", + "id": "d2b73e7b-a2d7-40e9-8ebc-2af00454e8aa", + "name": "default-roles-jhipster", + "description": "${role_default-roles}", + "composite": true, + "composites": { + "realm": [ + "offline_access", + "uma_authorization" + ], + "client": { + "account": [ + "view-profile", + "manage-account" + ] + } + }, + "clientRole": false, + "containerId": "jhipster", + "attributes": {} + }, + { + "id": "2eec61d0-9581-4dbf-8c7b-f32dc5fac3ce", "name": "uma_authorization", "description": "${role_uma_authorization}", "composite": false, @@ -76,46 +105,28 @@ } ], "client": { - "internal": [ - { - "id": "6ceaaca5-30a4-444b-9078-723b7cc13591", - "name": "uma_protection", - "composite": false, - "clientRole": true, - "containerId": "98ae8603-4547-4218-8fb9-ebc550a0e10b", - "attributes": {} - } - ], + "internal": [], "realm-management": [ { - "id": "2f58d746-0582-47fe-9b67-30809d5ad461", - "name": "query-users", - "description": "${role_query-users}", - "composite": false, - "clientRole": true, - "containerId": "48fb7988-d909-445a-81db-fe825dca0db2", - "attributes": {} - }, - { - "id": "4873b8a8-8035-4b5e-bdd9-99ac74a4a43b", - "name": "query-clients", - "description": "${role_query-clients}", + "id": "a6249a12-d76c-4514-b137-e3018b243e25", + "name": "manage-authorization", + "description": "${role_manage-authorization}", "composite": false, "clientRole": true, - "containerId": "48fb7988-d909-445a-81db-fe825dca0db2", + "containerId": "898488c8-e260-41c5-a463-7ceea14d587a", "attributes": {} }, { - "id": "5aa18f9b-2fb1-4edb-bdde-fb79273eee38", - "name": "view-events", - "description": "${role_view-events}", + "id": "a28bc401-c5ad-4fab-aef4-42629988c10b", + "name": "view-realm", + "description": "${role_view-realm}", "composite": false, "clientRole": true, - "containerId": "48fb7988-d909-445a-81db-fe825dca0db2", + "containerId": "898488c8-e260-41c5-a463-7ceea14d587a", "attributes": {} }, { - "id": "84752518-6f2f-451f-ab59-de3ce6674ba1", + "id": "464bca1f-136f-45de-a7fc-b976a185ce7e", "name": "view-users", "description": "${role_view-users}", "composite": true, @@ -128,143 +139,134 @@ } }, "clientRole": true, - "containerId": "48fb7988-d909-445a-81db-fe825dca0db2", - "attributes": {} - }, - { - "id": "c9fb6965-e734-46b4-a174-fa9d1fb7e1cc", - "name": "manage-events", - "description": "${role_manage-events}", - "composite": false, - "clientRole": true, - "containerId": "48fb7988-d909-445a-81db-fe825dca0db2", + "containerId": "898488c8-e260-41c5-a463-7ceea14d587a", "attributes": {} }, { - "id": "42abef51-b33b-4eb3-8515-3c6b16ca3849", - "name": "manage-identity-providers", - "description": "${role_manage-identity-providers}", + "id": "98c2fa77-d3c8-4f68-b9f4-b79f87efd4a9", + "name": "query-users", + "description": "${role_query-users}", "composite": false, "clientRole": true, - "containerId": "48fb7988-d909-445a-81db-fe825dca0db2", + "containerId": "898488c8-e260-41c5-a463-7ceea14d587a", "attributes": {} }, { - "id": "a3f9ba91-6ed5-47ff-a1cc-384c00cc203d", - "name": "impersonation", - "description": "${role_impersonation}", + "id": "6b82bfdb-c8de-4274-95b4-a683eb4ead50", + "name": "view-identity-providers", + "description": "${role_view-identity-providers}", "composite": false, "clientRole": true, - "containerId": "48fb7988-d909-445a-81db-fe825dca0db2", + "containerId": "898488c8-e260-41c5-a463-7ceea14d587a", "attributes": {} }, { - "id": "24493c26-5ea3-4e53-b949-ca27a06ff098", - "name": "manage-users", - "description": "${role_manage-users}", + "id": "3c6b9cfe-80c4-41d5-a5ac-0cadebacfc8d", + "name": "manage-identity-providers", + "description": "${role_manage-identity-providers}", "composite": false, "clientRole": true, - "containerId": "48fb7988-d909-445a-81db-fe825dca0db2", + "containerId": "898488c8-e260-41c5-a463-7ceea14d587a", "attributes": {} }, { - "id": "24ba1589-1141-4836-91bb-ad1b10db4944", - "name": "create-client", - "description": "${role_create-client}", + "id": "23676fb8-235a-4e54-a0d0-9bed1ccbe2f8", + "name": "query-groups", + "description": "${role_query-groups}", "composite": false, "clientRole": true, - "containerId": "48fb7988-d909-445a-81db-fe825dca0db2", + "containerId": "898488c8-e260-41c5-a463-7ceea14d587a", "attributes": {} }, { - "id": "38cbec3e-9ca1-4292-a513-09e86fdcf6b1", - "name": "view-identity-providers", - "description": "${role_view-identity-providers}", + "id": "b71fe952-bb06-4e4a-91ef-2d2714f770e1", + "name": "impersonation", + "description": "${role_impersonation}", "composite": false, "clientRole": true, - "containerId": "48fb7988-d909-445a-81db-fe825dca0db2", + "containerId": "898488c8-e260-41c5-a463-7ceea14d587a", "attributes": {} }, { - "id": "2d8a0ec8-111b-41a2-bf49-7f1ae086c5b1", - "name": "manage-realm", - "description": "${role_manage-realm}", + "id": "0813cbd0-c73d-469d-a54d-84a865c302af", + "name": "manage-events", + "description": "${role_manage-events}", "composite": false, "clientRole": true, - "containerId": "48fb7988-d909-445a-81db-fe825dca0db2", + "containerId": "898488c8-e260-41c5-a463-7ceea14d587a", "attributes": {} }, { - "id": "4ee94804-bc06-4d02-8541-410768b88a49", - "name": "manage-authorization", - "description": "${role_manage-authorization}", + "id": "c7a4f4c1-9089-458c-a765-f6d22ea94690", + "name": "view-authorization", + "description": "${role_view-authorization}", "composite": false, "clientRole": true, - "containerId": "48fb7988-d909-445a-81db-fe825dca0db2", + "containerId": "898488c8-e260-41c5-a463-7ceea14d587a", "attributes": {} }, { - "id": "3774414f-db0d-4928-b080-f22599622e97", - "name": "manage-clients", - "description": "${role_manage-clients}", + "id": "2e1bc884-e9d3-45d2-909c-2777a78ca8ae", + "name": "manage-realm", + "description": "${role_manage-realm}", "composite": false, "clientRole": true, - "containerId": "48fb7988-d909-445a-81db-fe825dca0db2", + "containerId": "898488c8-e260-41c5-a463-7ceea14d587a", "attributes": {} }, { - "id": "2a54d26e-7a55-4fc9-92cb-45e613084562", - "name": "view-realm", - "description": "${role_view-realm}", + "id": "0a05451e-7d64-4e87-b585-f1143ce5752e", + "name": "query-clients", + "description": "${role_query-clients}", "composite": false, "clientRole": true, - "containerId": "48fb7988-d909-445a-81db-fe825dca0db2", + "containerId": "898488c8-e260-41c5-a463-7ceea14d587a", "attributes": {} }, { - "id": "8fdff21b-f46c-407c-b566-ce4fcc4c51d4", - "name": "view-authorization", - "description": "${role_view-authorization}", + "id": "dfad4d08-6d75-42b6-8699-4886e47bc464", + "name": "view-events", + "description": "${role_view-events}", "composite": false, "clientRole": true, - "containerId": "48fb7988-d909-445a-81db-fe825dca0db2", + "containerId": "898488c8-e260-41c5-a463-7ceea14d587a", "attributes": {} }, { - "id": "083a848a-49cb-457f-9615-120be8c74d9e", + "id": "392ed0a3-f6ad-48a1-b201-648037d2b4bd", "name": "realm-admin", "description": "${role_realm-admin}", "composite": true, "composites": { "client": { "realm-management": [ - "query-users", - "query-clients", - "view-events", + "manage-authorization", + "view-realm", "view-users", - "manage-events", + "query-users", "manage-identity-providers", + "view-identity-providers", + "query-groups", "impersonation", - "manage-users", - "create-client", + "manage-events", + "query-clients", "manage-realm", - "view-identity-providers", - "manage-authorization", - "manage-clients", - "view-realm", "view-authorization", + "view-events", "view-clients", - "query-realms", - "query-groups" + "create-client", + "manage-clients", + "manage-users", + "query-realms" ] } }, "clientRole": true, - "containerId": "48fb7988-d909-445a-81db-fe825dca0db2", + "containerId": "898488c8-e260-41c5-a463-7ceea14d587a", "attributes": {} }, { - "id": "11bc32e5-55a6-431d-b6c7-32bd9504d070", + "id": "d7efdf61-affb-42a1-bcb0-b2c30d87a39e", "name": "view-clients", "description": "${role_view-clients}", "composite": true, @@ -276,111 +278,139 @@ } }, "clientRole": true, - "containerId": "48fb7988-d909-445a-81db-fe825dca0db2", + "containerId": "898488c8-e260-41c5-a463-7ceea14d587a", "attributes": {} }, { - "id": "5ea73aac-d0cf-4303-87a4-c9d7f5852734", - "name": "query-realms", - "description": "${role_query-realms}", + "id": "14da8e56-5c8b-4764-96da-250449a32fd4", + "name": "create-client", + "description": "${role_create-client}", "composite": false, "clientRole": true, - "containerId": "48fb7988-d909-445a-81db-fe825dca0db2", + "containerId": "898488c8-e260-41c5-a463-7ceea14d587a", "attributes": {} }, { - "id": "8018bd1e-0b43-4b0c-8e5a-fbf31f8ee6db", - "name": "query-groups", - "description": "${role_query-groups}", + "id": "88e6a9f5-259c-487d-af35-2a98da066816", + "name": "manage-clients", + "description": "${role_manage-clients}", + "composite": false, + "clientRole": true, + "containerId": "898488c8-e260-41c5-a463-7ceea14d587a", + "attributes": {} + }, + { + "id": "932273a7-c02b-43db-81c5-96a0dc45e454", + "name": "manage-users", + "description": "${role_manage-users}", + "composite": false, + "clientRole": true, + "containerId": "898488c8-e260-41c5-a463-7ceea14d587a", + "attributes": {} + }, + { + "id": "e3edf335-cec5-4012-a00d-fcac045052e1", + "name": "query-realms", + "description": "${role_query-realms}", "composite": false, "clientRole": true, - "containerId": "48fb7988-d909-445a-81db-fe825dca0db2", + "containerId": "898488c8-e260-41c5-a463-7ceea14d587a", "attributes": {} } ], + "jhipster-control-center": [], "security-admin-console": [], "web_app": [], "admin-cli": [], - "account-console": [],<% if (serviceDiscoveryType === 'eureka') { %> + "account-console": [],<% if (serviceDiscoveryEureka) { %> "jhipster-registry": [],<% } %> "broker": [ { - "id": "225066d4-4a07-4550-a851-3d9359cbbac2", + "id": "5b08a930-9f1d-4030-ae75-92c1e4c9352c", "name": "read-token", "description": "${role_read-token}", "composite": false, "clientRole": true, - "containerId": "274afcdb-7742-4a3a-acc5-17db61a4d200", + "containerId": "88e1225b-f0b9-46ba-8efd-f2c10ce23058", "attributes": {} } ], "account": [ { - "id": "42dcf4f5-8f73-4907-bd90-669cccd66c23", - "name": "manage-consent", - "description": "${role_manage-consent}", + "id": "a88c56b8-6bc9-418a-92bc-7a17e7707f60", + "name": "view-profile", + "description": "${role_view-profile}", + "composite": false, + "clientRole": true, + "containerId": "6cc5a716-0880-47dc-b714-9a4967246b2f", + "attributes": {} + }, + { + "id": "0cb954ab-987f-482a-b2d7-0d481ba1d532", + "name": "view-applications", + "description": "${role_view-applications}", + "composite": false, + "clientRole": true, + "containerId": "6cc5a716-0880-47dc-b714-9a4967246b2f", + "attributes": {} + }, + { + "id": "6450156d-7526-48f2-8ea0-bb1e51f9eefa", + "name": "manage-account", + "description": "${role_manage-account}", "composite": true, "composites": { "client": { "account": [ - "view-consent" + "manage-account-links" ] } }, "clientRole": true, - "containerId": "e07da50b-cddc-4524-b630-436a5a6ba8ab", - "attributes": {} - }, - { - "id": "354b3a09-47a6-4051-957c-c6a3ee28a190", - "name": "view-profile", - "description": "${role_view-profile}", - "composite": false, - "clientRole": true, - "containerId": "e07da50b-cddc-4524-b630-436a5a6ba8ab", + "containerId": "6cc5a716-0880-47dc-b714-9a4967246b2f", "attributes": {} }, { - "id": "8d650dc2-d0e7-4ad7-8193-3ce1b7361b02", - "name": "manage-account-links", - "description": "${role_manage-account-links}", + "id": "e5b2ba76-4c36-4ba1-b210-89a1ac3c6bbe", + "name": "view-consent", + "description": "${role_view-consent}", "composite": false, "clientRole": true, - "containerId": "e07da50b-cddc-4524-b630-436a5a6ba8ab", + "containerId": "6cc5a716-0880-47dc-b714-9a4967246b2f", "attributes": {} }, { - "id": "21b65e52-b4e3-453e-b0f0-10a44a4a887d", - "name": "manage-account", - "description": "${role_manage-account}", + "id": "35537940-67a6-4217-881b-1ff98109b374", + "name": "manage-consent", + "description": "${role_manage-consent}", "composite": true, "composites": { "client": { "account": [ - "manage-account-links" + "view-consent" ] } }, "clientRole": true, - "containerId": "e07da50b-cddc-4524-b630-436a5a6ba8ab", + "containerId": "6cc5a716-0880-47dc-b714-9a4967246b2f", "attributes": {} }, { - "id": "5328d093-e39c-4a2d-b664-01ed54505337", - "name": "view-applications", - "description": "${role_view-applications}", + "id": "5ebf404b-7805-4da2-abb4-9db7d3b36120", + "name": "delete-account", + "description": "${role_delete-account}", "composite": false, "clientRole": true, - "containerId": "e07da50b-cddc-4524-b630-436a5a6ba8ab", + "containerId": "6cc5a716-0880-47dc-b714-9a4967246b2f", "attributes": {} }, { - "id": "91f398b2-23a0-4cd3-8bc0-c3097df0e1e5", - "name": "view-consent", - "description": "${role_view-consent}", + "id": "a7f45fab-19c3-4c48-aca3-85f828ca0fed", + "name": "manage-account-links", + "description": "${role_manage-account-links}", "composite": false, "clientRole": true, - "containerId": "e07da50b-cddc-4524-b630-436a5a6ba8ab", + "containerId": "6cc5a716-0880-47dc-b714-9a4967246b2f", "attributes": {} } ] @@ -388,7 +418,7 @@ }, "groups": [ { - "id": "c4255caa-6cf7-40fb-8d5a-1b8799a438b8", + "id": "afb0c768-ab0f-454c-a8ea-bc9e70b50248", "name": "Admins", "path": "/Admins", "attributes": {}, @@ -399,7 +429,7 @@ "subGroups": [] }, { - "id": "ab0947d8-3b91-42a0-81e7-953a3c207316", + "id": "672767bb-4ab0-4d37-93a1-9b6c2416b6b2", "name": "Users", "path": "/Users", "attributes": {}, @@ -410,10 +440,14 @@ "subGroups": [] } ], - "defaultRoles": [ - "offline_access", - "uma_authorization" - ], + "defaultRole": { + "id": "d2b73e7b-a2d7-40e9-8ebc-2af00454e8aa", + "name": "default-roles-jhipster", + "description": "${role_default-roles}", + "composite": true, + "clientRole": false, + "containerId": "jhipster" + }, "requiredCredentials": [ "password" ], @@ -451,6 +485,24 @@ "webAuthnPolicyPasswordlessCreateTimeout": 0, "webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister": false, "webAuthnPolicyPasswordlessAcceptableAaguids": [], + "users": [ + { + "id": "f742ba6f-1d8a-4dec-bf15-e02dab508283", + "createdTimestamp": 1598681172054, + "username": "service-account-internal", + "enabled": true, + "totp": false, + "emailVerified": false, + "serviceAccountClientId": "internal", + "disableableCredentialTypes": [], + "requiredActions": [], + "realmRoles": [ + "default-roles-jhipster" + ], + "notBefore": 0, + "groups": [] + } + ], "scopeMappings": [ { "clientScope": "offline_access", @@ -471,7 +523,7 @@ }, "clients": [ { - "id": "e07da50b-cddc-4524-b630-436a5a6ba8ab", + "id": "6cc5a716-0880-47dc-b714-9a4967246b2f", "clientId": "account", "name": "${client_account}", "rootUrl": "${authBaseUrl}", @@ -481,10 +533,6 @@ "alwaysDisplayInConsole": false, "clientAuthenticatorType": "client-secret", "secret": "**********", - "defaultRoles": [ - "manage-account", - "view-profile" - ], "redirectUris": [ "/realms/jhipster/account/*" ], @@ -499,13 +547,14 @@ "publicClient": false, "frontchannelLogout": false, "protocol": "openid-connect", - "attributes": {}, + "attributes": { + "post.logout.redirect.uris": "+" + }, "authenticationFlowBindingOverrides": {}, "fullScopeAllowed": false, "nodeReRegistrationTimeout": 0, "defaultClientScopes": [ "web-origins", - "role_list", "roles", "profile", "email" @@ -518,7 +567,7 @@ ] }, { - "id": "7b6ab455-242e-42aa-96d8-9c9e2b74da9d", + "id": "fb0a4870-06db-4f9d-9d44-baf51a00cc34", "clientId": "account-console", "name": "${client_account-console}", "rootUrl": "${authBaseUrl}", @@ -543,6 +592,7 @@ "frontchannelLogout": false, "protocol": "openid-connect", "attributes": { + "post.logout.redirect.uris": "+", "pkce.code.challenge.method": "S256" }, "authenticationFlowBindingOverrides": {}, @@ -550,7 +600,7 @@ "nodeReRegistrationTimeout": 0, "protocolMappers": [ { - "id": "013df1b5-9a5b-44f2-a0b6-5bf6d448556b", + "id": "c5c4ebe5-d009-4f96-b143-1b36d770eafb", "name": "audience resolve", "protocol": "openid-connect", "protocolMapper": "oidc-audience-resolve-mapper", @@ -560,7 +610,6 @@ ], "defaultClientScopes": [ "web-origins", - "role_list", "roles", "profile", "email" @@ -573,7 +622,7 @@ ] }, { - "id": "5a9610bf-6a47-46a1-9442-9e43eacd98e8", + "id": "bb166356-838d-445e-94e3-9330ad7ab51b", "clientId": "admin-cli", "name": "${client_admin-cli}", "surrogateAuthRequired": false, @@ -593,13 +642,14 @@ "publicClient": true, "frontchannelLogout": false, "protocol": "openid-connect", - "attributes": {}, + "attributes": { + "post.logout.redirect.uris": "+" + }, "authenticationFlowBindingOverrides": {}, "fullScopeAllowed": false, "nodeReRegistrationTimeout": 0, "defaultClientScopes": [ "web-origins", - "role_list", "roles", "profile", "email" @@ -612,7 +662,7 @@ ] }, { - "id": "274afcdb-7742-4a3a-acc5-17db61a4d200", + "id": "88e1225b-f0b9-46ba-8efd-f2c10ce23058", "clientId": "broker", "name": "${client_broker}", "surrogateAuthRequired": false, @@ -632,13 +682,14 @@ "publicClient": false, "frontchannelLogout": false, "protocol": "openid-connect", - "attributes": {}, + "attributes": { + "post.logout.redirect.uris": "+" + }, "authenticationFlowBindingOverrides": {}, "fullScopeAllowed": false, "nodeReRegistrationTimeout": 0, "defaultClientScopes": [ "web-origins", - "role_list", "roles", "profile", "email" @@ -651,7 +702,7 @@ ] }, { - "id": "98ae8603-4547-4218-8fb9-ebc550a0e10b", + "id": "10e6ea34-9f1e-49ef-8e28-7eb851459694", "clientId": "internal", "surrogateAuthRequired": false, "enabled": true, @@ -667,7 +718,6 @@ "implicitFlowEnabled": false, "directAccessGrantsEnabled": false, "serviceAccountsEnabled": true, - "authorizationServicesEnabled": true, "publicClient": false, "frontchannelLogout": false, "protocol": "openid-connect", @@ -676,6 +726,7 @@ "saml.force.post.binding": "false", "saml.multivalued.roles": "false", "saml.encrypt": "false", + "post.logout.redirect.uris": "+", "saml.server.signature": "false", "saml.server.signature.keyinfo.ext": "false", "exclude.session.state.from.auth.response": "false", @@ -691,7 +742,7 @@ "nodeReRegistrationTimeout": -1, "protocolMappers": [ { - "id": "46513189-074c-4ba5-bfa7-29bae63faaaf", + "id": "ff2f50b4-5409-4789-bdda-fe731f14fbff", "name": "Client IP Address", "protocol": "openid-connect", "protocolMapper": "oidc-usersessionmodel-note-mapper", @@ -706,7 +757,7 @@ } }, { - "id": "974887a2-e14a-4afd-84fc-a848009079ae", + "id": "72f9ae74-9e95-4b7b-a709-5086137410bb", "name": "Client ID", "protocol": "openid-connect", "protocolMapper": "oidc-usersessionmodel-note-mapper", @@ -721,7 +772,7 @@ } }, { - "id": "1b1a1f44-66df-4670-badb-46a3d361ec7c", + "id": "029bf6c8-5a19-4798-984c-bdb205d752d5", "name": "Client Host", "protocol": "openid-connect", "protocolMapper": "oidc-usersessionmodel-note-mapper", @@ -738,7 +789,6 @@ ], "defaultClientScopes": [ "web-origins", - "role_list", "roles", "profile", "email" @@ -748,53 +798,73 @@ "phone", "offline_access", "microprofile-jwt" + ] + }, + { + "id": "1acf7ad0-68cb-46a6-a3e4-8b2f2abecb85", + "clientId": "jhipster-control-center", + "rootUrl": "http://localhost:7419", + "adminUrl": "http://localhost:7419", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "secret": "jhipster-control-center", + "redirectUris": [ + "dev.localhost.ionic:*", + "http://127.0.0.1:*", + "http://localhost:*", + "https://127.0.0.1:*", + "https://localhost:*" ], - "authorizationSettings": { - "allowRemoteResourceManagement": false, - "policyEnforcementMode": "ENFORCING", - "resources": [ - { - "name": "Default Resource", - "type": "urn:internal:resources:default", - "ownerManagedAccess": false, - "attributes": {}, - "_id": "9e347a4d-ab6b-4075-9d24-23d20dfd30bc", - "uris": [ - "/*" - ] - } - ], - "policies": [ - { - "id": "ff09b194-0615-4cfd-9851-74adf540dabd", - "name": "Default Policy", - "description": "A policy that grants access only for users within this realm", - "type": "js", - "logic": "POSITIVE", - "decisionStrategy": "AFFIRMATIVE", - "config": { - "code": "// by default, grants any permission associated with this policy\n$evaluation.grant();\n" - } - }, - { - "id": "4b5c72cc-b8b8-4bfc-95ac-61815669f985", - "name": "Default Permission", - "description": "A permission that applies to the default resource type", - "type": "resource", - "logic": "POSITIVE", - "decisionStrategy": "UNANIMOUS", - "config": { - "defaultResourceType": "urn:internal:resources:default", - "applyPolicies": "[\"Default Policy\"]" - } - } - ], - "scopes": [], - "decisionStrategy": "UNANIMOUS" - } - },<% if (serviceDiscoveryType === 'eureka') { %> + "webOrigins": [ + "*" + ], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": true, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "saml.encrypt": "false", + "post.logout.redirect.uris": "+", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "exclude.session.state.from.auth.response": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "tls.client.certificate.bound.access.tokens": "false", + "saml.authnstatement": "false", + "display.on.consent.screen": "false", + "saml.onetimeuse.condition": "false" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "defaultClientScopes": [ + "web-origins", + "jhipster", + "roles", + "profile", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "offline_access", + "microprofile-jwt" + ] + },<% if (serviceDiscoveryEureka) { %> { - "id": "dfaed4f5-716b-4f9c-a81e-e87f5f0db795", + "id": "9057870f-8775-448d-a194-1d4e122f44d5", "clientId": "jhipster-registry", "rootUrl": "http://localhost:8761", "adminUrl": "http://localhost:8761", @@ -826,6 +896,7 @@ "saml.force.post.binding": "false", "saml.multivalued.roles": "false", "saml.encrypt": "false", + "post.logout.redirect.uris": "+", "saml.server.signature": "false", "saml.server.signature.keyinfo.ext": "false", "exclude.session.state.from.auth.response": "false", @@ -842,7 +913,6 @@ "defaultClientScopes": [ "web-origins", "jhipster", - "role_list", "roles", "profile", "email" @@ -855,7 +925,7 @@ ] },<% } %> { - "id": "48fb7988-d909-445a-81db-fe825dca0db2", + "id": "898488c8-e260-41c5-a463-7ceea14d587a", "clientId": "realm-management", "name": "${client_realm-management}", "surrogateAuthRequired": false, @@ -875,12 +945,15 @@ "publicClient": false, "frontchannelLogout": false, "protocol": "openid-connect", - "attributes": {}, + "attributes": { + "post.logout.redirect.uris": "+" + }, "authenticationFlowBindingOverrides": {}, "fullScopeAllowed": false, "nodeReRegistrationTimeout": 0, "defaultClientScopes": [ - "role_list", + "web-origins", + "roles", "profile", "email" ], @@ -892,7 +965,7 @@ ] }, { - "id": "0aa176c1-8d28-4a8b-8e97-7e4b49a289ff", + "id": "989d2b96-b820-4f9b-aa17-55e6488b08c8", "clientId": "security-admin-console", "name": "${client_security-admin-console}", "rootUrl": "${authAdminUrl}", @@ -919,6 +992,7 @@ "frontchannelLogout": false, "protocol": "openid-connect", "attributes": { + "post.logout.redirect.uris": "+", "pkce.code.challenge.method": "S256" }, "authenticationFlowBindingOverrides": {}, @@ -926,7 +1000,7 @@ "nodeReRegistrationTimeout": 0, "protocolMappers": [ { - "id": "abfaa4cd-4bc1-4223-be5d-c56c641369f2", + "id": "5fd34289-c644-411a-874c-849475d9d102", "name": "locale", "protocol": "openid-connect", "protocolMapper": "oidc-usermodel-attribute-mapper", @@ -943,7 +1017,6 @@ ], "defaultClientScopes": [ "web-origins", - "role_list", "roles", "profile", "email" @@ -956,7 +1029,7 @@ ] }, { - "id": "1eabef67-6473-4ba8-b07c-14bdbae4aaed", + "id": "6e8deddb-b4d6-4e2e-b389-b397d3f74fcd", "clientId": "web_app", "rootUrl": "http://localhost:<%= serverPort %>", "adminUrl": "http://localhost:<%= serverPort %>", @@ -966,11 +1039,12 @@ "clientAuthenticatorType": "client-secret", "secret": "web_app", "redirectUris": [ - "http://localhost:*", - "https://localhost:*", + "dev.localhost.ionic:*", "http://127.0.0.1:*", + "http://localhost:*", "https://127.0.0.1:*", - "dev.localhost.ionic:*" + "https://localhost:*", + "https://oauth.pstmn.io/v1/callback" ], "webOrigins": [ "*" @@ -990,6 +1064,7 @@ "saml.force.post.binding": "false", "saml.multivalued.roles": "false", "saml.encrypt": "false", + "post.logout.redirect.uris": "+", "saml.server.signature": "false", "saml.server.signature.keyinfo.ext": "false", "exclude.session.state.from.auth.response": "false", @@ -1006,7 +1081,6 @@ "defaultClientScopes": [ "web-origins", "jhipster", - "role_list", "roles", "profile", "email" @@ -1021,17 +1095,18 @@ ], "clientScopes": [ { - "id": "1dc1e050-891a-4f5b-ac9d-5ea0c2e3c05e", + "id": "52d73c82-423c-44a8-b2ec-1e13f4cd6065", "name": "address", "description": "OpenID Connect built-in scope: address", "protocol": "openid-connect", "attributes": { - "consent.screen.text": "${addressScopeConsentText}", - "display.on.consent.screen": "true" - }, + "include.in.token.scope": "true", + "display.on.consent.screen": "true", + "consent.screen.text": "${addressScopeConsentText}" + }, "protocolMappers": [ { - "id": "b9a92105-8ca5-45d1-8a99-626255ac174f", + "id": "98230752-36b9-4755-8661-a7de1926d0d4", "name": "address", "protocol": "openid-connect", "protocolMapper": "oidc-address-mapper", @@ -1051,100 +1126,107 @@ ] }, { - "id": "39e1693b-a924-4fbb-b98c-520869771f83", + "id": "44d24405-87bf-4b37-a627-e3fdabb93f50", "name": "email", "description": "OpenID Connect built-in scope: email", "protocol": "openid-connect", "attributes": { - "consent.screen.text": "${emailScopeConsentText}", - "display.on.consent.screen": "true" + "include.in.token.scope": "true", + "display.on.consent.screen": "true", + "consent.screen.text": "${emailScopeConsentText}" }, "protocolMappers": [ { - "id": "76f898bc-70e4-4e0a-a259-ae4cb58260f9", - "name": "email verified", + "id": "36800088-6d17-4c18-93e8-2bc93901d8b7", + "name": "email", "protocol": "openid-connect", "protocolMapper": "oidc-usermodel-property-mapper", "consentRequired": false, "config": { "userinfo.token.claim": "true", - "user.attribute": "emailVerified", + "user.attribute": "email", "id.token.claim": "true", "access.token.claim": "true", - "claim.name": "email_verified", - "jsonType.label": "boolean" + "claim.name": "email", + "jsonType.label": "String" } }, { - "id": "e348c7f8-e835-4539-a80b-b588510a82a9", - "name": "email", + "id": "3ea34afd-30b5-4e5d-a836-dbda439dce6f", + "name": "email verified", "protocol": "openid-connect", "protocolMapper": "oidc-usermodel-property-mapper", "consentRequired": false, "config": { "userinfo.token.claim": "true", - "user.attribute": "email", + "user.attribute": "emailVerified", "id.token.claim": "true", "access.token.claim": "true", - "claim.name": "email", - "jsonType.label": "String" + "claim.name": "email_verified", + "jsonType.label": "boolean" } } ] }, { - "id": "3880d5d9-fced-4446-97fe-0434f2bb76ea", + "id": "9816de82-24b7-42fe-a85a-1264868ec293", "name": "jhipster", "description": "Jhipster specific claims", "protocol": "openid-connect", "attributes": { + "include.in.token.scope": "false", "display.on.consent.screen": "false" }, "protocolMappers": [ { - "id": "e7c536ca-1711-4ed5-9f21-20a25435f475", - "name": "login", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-attribute-mapper", - "consentRequired": false, - "config": { - "user.attribute": "preferred_username", - "claim.name": "login", - "jsonType.label": "String", - "userinfo.token.claim": "true" - } - }, - { - "id": "646e3a98-5f0c-4192-91f0-9719c295b278", + "id": "0f9c9347-aad6-4bff-94f4-e11937f2ad33", "name": "langKey", "protocol": "openid-connect", "protocolMapper": "oidc-usermodel-attribute-mapper", "consentRequired": false, "config": { + "userinfo.token.claim": "true", "user.attribute": "langKey", + "id.token.claim": "false", + "access.token.claim": "false", "claim.name": "langKey", - "jsonType.label": "String", - "userinfo.token.claim": "true" + "jsonType.label": "String" } }, { - "id": "70b3e85f-e7b4-4c30-9d10-e0b589776951", + "id": "69729907-8d1c-4961-81c0-91766f548cc9", "name": "roles", "protocol": "openid-connect", "protocolMapper": "oidc-usermodel-realm-role-mapper", "consentRequired": false, "config": { + "multivalued": "true", + "userinfo.token.claim": "true", + "id.token.claim": "false", "access.token.claim": "true", "claim.name": "roles", - "jsonType.label": "String", - "multivalued": "true", - "userinfo.token.claim": "true" + "jsonType.label": "String" + } + }, + { + "id": "336acfe2-a717-492a-9055-5b70e808f42f", + "name": "login", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "preferred_username", + "id.token.claim": "false", + "access.token.claim": "false", + "claim.name": "login", + "jsonType.label": "String" } } ] }, { - "id": "a72d436e-111b-445b-804a-967d249f6455", + "id": "87d299f2-434f-4abd-8cb0-a16231acd713", "name": "microprofile-jwt", "description": "Microprofile - JWT built-in scope", "protocol": "openid-connect", @@ -1154,40 +1236,40 @@ }, "protocolMappers": [ { - "id": "dec0c468-3c11-429b-844e-dfd632b20ba7", - "name": "upn", + "id": "fce09d51-cb85-4ccd-b83d-865a4d4bf650", + "name": "groups", "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", + "protocolMapper": "oidc-usermodel-realm-role-mapper", "consentRequired": false, "config": { + "multivalued": "true", "userinfo.token.claim": "true", - "user.attribute": "username", + "user.attribute": "foo", "id.token.claim": "true", "access.token.claim": "true", - "claim.name": "upn", + "claim.name": "groups", "jsonType.label": "String" } }, { - "id": "1ac09ef6-ab67-4379-b15a-5e54e50783be", - "name": "groups", + "id": "3d1ee7e2-b7e1-4504-bd52-b47a2cb10eec", + "name": "upn", "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-realm-role-mapper", + "protocolMapper": "oidc-usermodel-property-mapper", "consentRequired": false, "config": { - "multivalued": "true", "userinfo.token.claim": "true", - "user.attribute": "foo", + "user.attribute": "username", "id.token.claim": "true", "access.token.claim": "true", - "claim.name": "groups", + "claim.name": "upn", "jsonType.label": "String" } } ] }, { - "id": "5253d2be-3116-4510-ac05-99619ce2494c", + "id": "0399b625-22d7-4d68-b4db-fd1dc2effacc", "name": "offline_access", "description": "OpenID Connect built-in scope: offline_access", "protocol": "openid-connect", @@ -1197,17 +1279,18 @@ } }, { - "id": "0d3b55db-e68b-4c83-91d4-7370a6810a24", + "id": "2b867b2d-3373-43ff-b50f-ea37a5e1c390", "name": "phone", "description": "OpenID Connect built-in scope: phone", "protocol": "openid-connect", "attributes": { - "consent.screen.text": "${phoneScopeConsentText}", - "display.on.consent.screen": "true" + "include.in.token.scope": "true", + "display.on.consent.screen": "true", + "consent.screen.text": "${phoneScopeConsentText}" }, "protocolMappers": [ { - "id": "bbc582f4-4749-42b8-9c65-71f4edfd3979", + "id": "daa0191b-20d1-4f71-b191-6c48a37e3677", "name": "phone number", "protocol": "openid-connect", "protocolMapper": "oidc-usermodel-attribute-mapper", @@ -1222,7 +1305,7 @@ } }, { - "id": "74840763-9b35-4c9a-8789-4008fedc26c2", + "id": "32213de7-12f7-4864-b696-c8e6c5e0c26e", "name": "phone number verified", "protocol": "openid-connect", "protocolMapper": "oidc-usermodel-attribute-mapper", @@ -1239,47 +1322,48 @@ ] }, { - "id": "d5de6a8a-8894-4e72-b6ef-f9bf3a7a6541", + "id": "60a44832-9776-449f-94cd-fa8c24a75f35", "name": "profile", "description": "OpenID Connect built-in scope: profile", "protocol": "openid-connect", "attributes": { - "consent.screen.text": "${profileScopeConsentText}", - "display.on.consent.screen": "true" + "include.in.token.scope": "true", + "display.on.consent.screen": "true", + "consent.screen.text": "${profileScopeConsentText}" }, "protocolMappers": [ { - "id": "ecb34ff7-d27d-4696-b536-0512044b21a9", - "name": "website", + "id": "a59584ab-7a7c-4b23-95b5-be8dbbfadc6f", + "name": "family name", "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-attribute-mapper", + "protocolMapper": "oidc-usermodel-property-mapper", "consentRequired": false, "config": { "userinfo.token.claim": "true", - "user.attribute": "website", + "user.attribute": "lastName", "id.token.claim": "true", "access.token.claim": "true", - "claim.name": "website", + "claim.name": "family_name", "jsonType.label": "String" } }, { - "id": "f3cf3c8b-891a-48a1-97b3-1d10d55ddecd", - "name": "locale", + "id": "d382c1dc-d5d8-479e-8809-f0a618113a07", + "name": "website", "protocol": "openid-connect", "protocolMapper": "oidc-usermodel-attribute-mapper", "consentRequired": false, "config": { "userinfo.token.claim": "true", - "user.attribute": "locale", + "user.attribute": "website", "id.token.claim": "true", "access.token.claim": "true", - "claim.name": "locale", + "claim.name": "website", "jsonType.label": "String" } }, { - "id": "fa3b86c8-abaf-4261-b48d-41cd3cf2dc6a", + "id": "559f86c1-1187-498d-8354-723f4ea5721c", "name": "full name", "protocol": "openid-connect", "protocolMapper": "oidc-full-name-mapper", @@ -1291,82 +1375,82 @@ } }, { - "id": "219532f1-3c5c-4b30-a018-ae99adb6fc87", - "name": "birthdate", + "id": "0925e106-a8e2-4ad1-b75e-4147d185894a", + "name": "updated at", "protocol": "openid-connect", "protocolMapper": "oidc-usermodel-attribute-mapper", "consentRequired": false, "config": { "userinfo.token.claim": "true", - "user.attribute": "birthdate", + "user.attribute": "updatedAt", "id.token.claim": "true", "access.token.claim": "true", - "claim.name": "birthdate", + "claim.name": "updated_at", "jsonType.label": "String" } }, { - "id": "c443f4cd-1174-49a7-a2b3-65d5ccde5efa", - "name": "nickname", + "id": "eb8e2c73-5c65-4b53-8d55-46edef61315b", + "name": "locale", "protocol": "openid-connect", "protocolMapper": "oidc-usermodel-attribute-mapper", "consentRequired": false, "config": { "userinfo.token.claim": "true", - "user.attribute": "nickname", + "user.attribute": "locale", "id.token.claim": "true", "access.token.claim": "true", - "claim.name": "nickname", + "claim.name": "locale", "jsonType.label": "String" } }, { - "id": "14631b9c-83eb-48ab-a224-29f047015e52", - "name": "username", + "id": "4c109376-01bc-4b69-a3c0-4b830ecad674", + "name": "middle name", "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", + "protocolMapper": "oidc-usermodel-attribute-mapper", "consentRequired": false, "config": { "userinfo.token.claim": "true", - "user.attribute": "username", + "user.attribute": "middleName", "id.token.claim": "true", "access.token.claim": "true", - "claim.name": "preferred_username", + "claim.name": "middle_name", "jsonType.label": "String" } }, { - "id": "cedd1f1b-951a-4332-9fa1-2edf1a266283", - "name": "middle name", + "id": "b3813956-e556-4b57-a06b-f71b0d6f3d47", + "name": "nickname", "protocol": "openid-connect", "protocolMapper": "oidc-usermodel-attribute-mapper", "consentRequired": false, "config": { "userinfo.token.claim": "true", - "user.attribute": "middleName", + "user.attribute": "nickname", "id.token.claim": "true", "access.token.claim": "true", - "claim.name": "middle_name", + "claim.name": "nickname", "jsonType.label": "String" } }, { - "id": "5a33d5e4-e124-412e-be4d-b6b28b41382a", - "name": "family name", + "id": "28beb4c0-029b-4aa5-ad5f-6d824ca67e15", + "name": "username", "protocol": "openid-connect", "protocolMapper": "oidc-usermodel-property-mapper", "consentRequired": false, "config": { "userinfo.token.claim": "true", - "user.attribute": "lastName", + "user.attribute": "username", "id.token.claim": "true", "access.token.claim": "true", - "claim.name": "family_name", + "claim.name": "preferred_username", "jsonType.label": "String" } }, { - "id": "c4122959-6738-4883-b50a-acd0033a477a", + "id": "53d681bc-ec29-4f57-924b-ff5bd22d4093", "name": "profile", "protocol": "openid-connect", "protocolMapper": "oidc-usermodel-attribute-mapper", @@ -1381,84 +1465,84 @@ } }, { - "id": "d7db1b88-2c3c-419a-91cf-19ad13355a56", - "name": "zoneinfo", + "id": "12ba8e12-157d-4729-918b-0d74fa444fba", + "name": "picture", "protocol": "openid-connect", "protocolMapper": "oidc-usermodel-attribute-mapper", "consentRequired": false, "config": { "userinfo.token.claim": "true", - "user.attribute": "zoneinfo", + "user.attribute": "picture", "id.token.claim": "true", "access.token.claim": "true", - "claim.name": "zoneinfo", + "claim.name": "picture", "jsonType.label": "String" } }, { - "id": "dfd19868-5c87-4a51-80e0-2a82dfabb16c", - "name": "updated at", + "id": "ddb818fe-8e4a-4b26-9c5d-2467a26af6dc", + "name": "gender", "protocol": "openid-connect", "protocolMapper": "oidc-usermodel-attribute-mapper", "consentRequired": false, "config": { "userinfo.token.claim": "true", - "user.attribute": "updatedAt", + "user.attribute": "gender", "id.token.claim": "true", "access.token.claim": "true", - "claim.name": "updated_at", + "claim.name": "gender", "jsonType.label": "String" } }, { - "id": "19551b04-fc0c-44c4-b2bf-966da87ba3c3", - "name": "given name", + "id": "f78b1746-2be1-45f4-9c1e-1f6141ccdb65", + "name": "birthdate", "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", + "protocolMapper": "oidc-usermodel-attribute-mapper", "consentRequired": false, "config": { "userinfo.token.claim": "true", - "user.attribute": "firstName", + "user.attribute": "birthdate", "id.token.claim": "true", "access.token.claim": "true", - "claim.name": "given_name", + "claim.name": "birthdate", "jsonType.label": "String" } }, { - "id": "c422b63f-e809-41c2-854c-e801e8e25485", - "name": "gender", + "id": "7723245c-4952-4822-86ae-084048b1f2f2", + "name": "given name", "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-attribute-mapper", + "protocolMapper": "oidc-usermodel-property-mapper", "consentRequired": false, "config": { "userinfo.token.claim": "true", - "user.attribute": "gender", + "user.attribute": "firstName", "id.token.claim": "true", "access.token.claim": "true", - "claim.name": "gender", + "claim.name": "given_name", "jsonType.label": "String" } }, { - "id": "2ccf435c-c255-4715-8dcd-15091f97c5a5", - "name": "picture", + "id": "b192fe9f-aa82-4d7d-b8c7-eb7d1ba888d4", + "name": "zoneinfo", "protocol": "openid-connect", "protocolMapper": "oidc-usermodel-attribute-mapper", "consentRequired": false, "config": { "userinfo.token.claim": "true", - "user.attribute": "picture", + "user.attribute": "zoneinfo", "id.token.claim": "true", "access.token.claim": "true", - "claim.name": "picture", + "claim.name": "zoneinfo", "jsonType.label": "String" } } ] }, { - "id": "391f1641-cb22-41a3-a0ed-752d9264aaf5", + "id": "d181691e-b4a6-4063-9eba-6b984402a9a7", "name": "role_list", "description": "SAML role list", "protocol": "saml", @@ -1468,7 +1552,7 @@ }, "protocolMappers": [ { - "id": "7cbb4477-af0c-4394-a754-b72a1b4638e0", + "id": "724b16d4-8a9b-42d8-850f-99ca1ab3c958", "name": "role list", "protocol": "saml", "protocolMapper": "saml-role-list-mapper", @@ -1482,7 +1566,7 @@ ] }, { - "id": "021d9ac1-9650-401c-b2a2-efa2f3e6b70c", + "id": "915fcb95-81da-4e4c-86ee-73f3b52c83e9", "name": "roles", "description": "OpenID Connect scope for add user roles to the access token", "protocol": "openid-connect", @@ -1493,21 +1577,15 @@ }, "protocolMappers": [ { - "id": "bbbd7dc1-63d0-468f-9463-4772833ef2fa", - "name": "client roles", + "id": "12f0b32d-8911-4028-809b-fc1c0e5e9207", + "name": "audience resolve", "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-client-role-mapper", + "protocolMapper": "oidc-audience-resolve-mapper", "consentRequired": false, - "config": { - "user.attribute": "foo", - "access.token.claim": "true", - "claim.name": "resource_access.${client_id}.roles", - "jsonType.label": "String", - "multivalued": "true" - } + "config": {} }, { - "id": "9271d821-b803-406d-8574-2f5a2693f065", + "id": "5b997b66-937f-46d3-9e8b-70dca949f682", "name": "realm roles", "protocol": "openid-connect", "protocolMapper": "oidc-usermodel-realm-role-mapper", @@ -1521,17 +1599,23 @@ } }, { - "id": "90b1a715-e12e-4af8-89f6-82a370d57d1a", - "name": "audience resolve", + "id": "cdcd6969-a9aa-4de5-adbe-dc83da4184c5", + "name": "client roles", "protocol": "openid-connect", - "protocolMapper": "oidc-audience-resolve-mapper", + "protocolMapper": "oidc-usermodel-client-role-mapper", "consentRequired": false, - "config": {} + "config": { + "user.attribute": "foo", + "access.token.claim": "true", + "claim.name": "resource_access.${client_id}.roles", + "jsonType.label": "String", + "multivalued": "true" + } } ] }, { - "id": "84fdcb72-668b-408e-aaea-110d594afe5e", + "id": "2daaac74-636f-4074-87a9-d1aba9dffb96", "name": "web-origins", "description": "OpenID Connect scope for add allowed web origins to the access token", "protocol": "openid-connect", @@ -1542,7 +1626,7 @@ }, "protocolMappers": [ { - "id": "134b3451-cf2d-4ead-8fce-bf24b32f014c", + "id": "752e035f-038d-46ac-b65d-91f863fdd986", "name": "allowed web origins", "protocol": "openid-connect", "protocolMapper": "oidc-allowed-origins-mapper", @@ -1553,16 +1637,16 @@ } ], "defaultDefaultClientScopes": [ - "roles", - "role_list", - "email", "web-origins", - "profile" + "email", + "profile", + "roles", + "role_list" ], "defaultOptionalClientScopes": [ + "offline_access", "phone", "address", - "offline_access", "microprofile-jwt" ], "browserSecurityHeaders": { @@ -1582,76 +1666,43 @@ "enabledEventTypes": [], "adminEventsEnabled": false, "adminEventsDetailsEnabled": false, + "identityProviders": [], + "identityProviderMappers": [], "components": { "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy": [ { - "id": "96bb5289-e057-4a3d-a273-89372bbc8cc0", - "name": "Allowed Client Scopes", - "providerId": "allowed-client-templates", - "subType": "authenticated", - "subComponents": {}, - "config": { - "allow-default-scopes": [ - "true" - ] - } - }, - { - "id": "5782d02c-2ba5-47d1-9732-dfaaf0e5cfdf", + "id": "827fde01-dc1b-4c1f-a529-9ef833ca3432", "name": "Allowed Protocol Mapper Types", "providerId": "allowed-protocol-mappers", "subType": "authenticated", "subComponents": {}, "config": { "allowed-protocol-mapper-types": [ - "oidc-full-name-mapper", - "saml-user-property-mapper", - "oidc-usermodel-attribute-mapper", + "oidc-usermodel-property-mapper", + "oidc-sha256-pairwise-sub-mapper", "saml-user-attribute-mapper", + "saml-user-property-mapper", "oidc-address-mapper", + "oidc-full-name-mapper", "saml-role-list-mapper", - "oidc-usermodel-property-mapper", - "oidc-sha256-pairwise-sub-mapper" + "oidc-usermodel-attribute-mapper" ] } }, { - "id": "c8d395e2-dd81-4118-b838-7095be5cc1c8", - "name": "Allowed Protocol Mapper Types", - "providerId": "allowed-protocol-mappers", - "subType": "anonymous", + "id": "0a429e7e-be7a-46b4-b42a-d1f8b265ff16", + "name": "Allowed Client Scopes", + "providerId": "allowed-client-templates", + "subType": "authenticated", "subComponents": {}, "config": { - "allowed-protocol-mapper-types": [ - "oidc-address-mapper", - "oidc-full-name-mapper", - "oidc-usermodel-attribute-mapper", - "oidc-usermodel-property-mapper", - "saml-user-attribute-mapper", - "saml-user-property-mapper", - "oidc-sha256-pairwise-sub-mapper", - "saml-role-list-mapper" + "allow-default-scopes": [ + "true" ] } }, { - "id": "1175c6f8-2d58-437f-bb21-4660c8c1a62c", - "name": "Full Scope Disabled", - "providerId": "scope", - "subType": "anonymous", - "subComponents": {}, - "config": {} - }, - { - "id": "4bd2778a-908f-4ac3-873f-61e674eecc2f", - "name": "Consent Required", - "providerId": "consent-required", - "subType": "anonymous", - "subComponents": {}, - "config": {} - }, - { - "id": "65809493-b60f-4b44-b1dc-28a22772c321", + "id": "5a1ff0b4-250f-48ee-8169-abff30cf7534", "name": "Allowed Client Scopes", "providerId": "allowed-client-templates", "subType": "anonymous", @@ -1663,7 +1714,15 @@ } }, { - "id": "950acf43-614d-47a3-a7c9-d5072433c4b8", + "id": "c79f6629-84a9-467c-81d0-63e20b19f916", + "name": "Full Scope Disabled", + "providerId": "scope", + "subType": "anonymous", + "subComponents": {}, + "config": {} + }, + { + "id": "b6b23ef8-96e8-4e2e-8efe-8003057a8d42", "name": "Max Clients Limit", "providerId": "max-clients", "subType": "anonymous", @@ -1675,7 +1734,7 @@ } }, { - "id": "e2a65f9f-5ad8-4634-ab3a-810409a3e067", + "id": "36dfaa02-0252-4448-9cdf-a17abf239f78", "name": "Trusted Hosts", "providerId": "trusted-hosts", "subType": "anonymous", @@ -1688,22 +1747,46 @@ "true" ] } - } - ], - "org.keycloak.keys.KeyProvider": [ + }, { - "id": "8ab3be1d-3e01-4eb6-8ff2-d116b02ffc48", - "name": "aes-generated", - "providerId": "aes-generated", - "subComponents": {}, - "config": { - "priority": [ - "100" + "id": "8216421d-34fb-4726-8331-137217657bdb", + "name": "Allowed Protocol Mapper Types", + "providerId": "allowed-protocol-mappers", + "subType": "anonymous", + "subComponents": {}, + "config": { + "allowed-protocol-mapper-types": [ + "oidc-address-mapper", + "oidc-usermodel-attribute-mapper", + "saml-user-property-mapper", + "saml-user-attribute-mapper", + "saml-role-list-mapper", + "oidc-full-name-mapper", + "oidc-usermodel-property-mapper", + "oidc-sha256-pairwise-sub-mapper" ] } }, { - "id": "2a3661d8-3594-4872-881a-9f2d394b675d", + "id": "d045f3f9-15e6-4e69-a419-0e7ff8a635ef", + "name": "Consent Required", + "providerId": "consent-required", + "subType": "anonymous", + "subComponents": {}, + "config": {} + } + ], + "org.keycloak.userprofile.UserProfileProvider": [ + { + "id": "b05ccf0d-d8ac-4695-bd60-37018f8f94b4", + "providerId": "declarative-user-profile", + "subComponents": {}, + "config": {} + } + ], + "org.keycloak.keys.KeyProvider": [ + { + "id": "62707fae-58f9-4fc2-89fb-0c5d212dc3dc", "name": "rsa-generated", "providerId": "rsa-generated", "subComponents": {}, @@ -1714,10 +1797,24 @@ } }, { - "id": "1d291cea-3d41-41cb-9ab6-ef1513fe3fe8", + "id": "4a8480bc-96fd-4906-a907-f948a73bab38", "name": "hmac-generated", "providerId": "hmac-generated", "subComponents": {}, + "config": { + "priority": [ + "100" + ], + "algorithm": [ + "HS256" + ] + } + }, + { + "id": "40c01a32-0c0b-4dbb-9595-e5a5c8d26bc4", + "name": "aes-generated", + "providerId": "aes-generated", + "subComponents": {}, "config": { "priority": [ "100" @@ -1730,94 +1827,188 @@ "supportedLocales": [], "authenticationFlows": [ { - "id": "20a3af86-1f13-489d-bb67-db3b7df52875", - "alias": "Handle Existing Account", - "description": "Handle what to do if there is existing account with same email/username like authenticated identity provider", + "id": "491fbbc9-b70b-45bd-8243-2039ae3f115d", + "alias": "Account verification options", + "description": "Method with which to verity the existing account", "providerId": "basic-flow", "topLevel": false, "builtIn": true, "authenticationExecutions": [ { - "authenticator": "idp-confirm-link", + "authenticator": "idp-email-verification", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticatorFlow": true, + "requirement": "ALTERNATIVE", + "priority": 20, + "flowAlias": "Verify Existing Account by Re-authentication", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "id": "2c63ad60-76ab-4350-9def-74328bab70d0", + "alias": "Authentication Options", + "description": "Authentication options.", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "basic-auth", + "authenticatorFlow": false, "requirement": "REQUIRED", "priority": 10, "userSetupAllowed": false, "autheticatorFlow": false }, { + "authenticator": "basic-auth-otp", + "authenticatorFlow": false, + "requirement": "DISABLED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "auth-spnego", + "authenticatorFlow": false, + "requirement": "DISABLED", + "priority": 30, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "82b9b584-2243-4893-b58c-4567f34434a6", + "alias": "Browser - Conditional OTP", + "description": "Flow to determine if the OTP is required for the authentication", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "conditional-user-configured", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "auth-otp-form", + "authenticatorFlow": false, "requirement": "REQUIRED", "priority": 20, - "flowAlias": "Handle Existing Account - Alternatives - 0", "userSetupAllowed": false, - "autheticatorFlow": true + "autheticatorFlow": false } ] }, { - "id": "bd5b10aa-4005-4ea6-8995-9d1caac7b53e", - "alias": "Handle Existing Account - Alternatives - 0", - "description": "Subflow of Handle Existing Account with alternative executions", + "id": "e70e7c74-8ab5-411c-b06c-d478a452bee3", + "alias": "Direct Grant - Conditional OTP", + "description": "Flow to determine if the OTP is required for the authentication", "providerId": "basic-flow", "topLevel": false, "builtIn": true, "authenticationExecutions": [ { - "authenticator": "idp-email-verification", - "requirement": "ALTERNATIVE", + "authenticator": "conditional-user-configured", + "authenticatorFlow": false, + "requirement": "REQUIRED", "priority": 10, "userSetupAllowed": false, "autheticatorFlow": false }, { - "requirement": "ALTERNATIVE", + "authenticator": "direct-grant-validate-otp", + "authenticatorFlow": false, + "requirement": "REQUIRED", "priority": 20, - "flowAlias": "Verify Existing Account by Re-authentication", "userSetupAllowed": false, - "autheticatorFlow": true + "autheticatorFlow": false } ] }, { - "id": "1a5ca248-a893-40ad-b184-63f59c06e988", - "alias": "Verify Existing Account by Re-authentication", - "description": "Reauthentication of existing account", + "id": "4f3e6fdd-9b4d-4dc0-946a-1e1ccae7af71", + "alias": "First broker login - Conditional OTP", + "description": "Flow to determine if the OTP is required for the authentication", "providerId": "basic-flow", "topLevel": false, "builtIn": true, "authenticationExecutions": [ { - "authenticator": "idp-username-password-form", + "authenticator": "conditional-user-configured", + "authenticatorFlow": false, "requirement": "REQUIRED", "priority": 10, "userSetupAllowed": false, "autheticatorFlow": false }, { - "requirement": "CONDITIONAL", + "authenticator": "auth-otp-form", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "aa66c794-f21b-4663-9de1-9e27a7e425ab", + "alias": "Handle Existing Account", + "description": "Handle what to do if there is existing account with same email/username like authenticated identity provider", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-confirm-link", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticatorFlow": true, + "requirement": "REQUIRED", "priority": 20, - "flowAlias": "Verify Existing Account by Re-authentication - auth-otp-form - Conditional", + "flowAlias": "Account verification options", "userSetupAllowed": false, "autheticatorFlow": true } ] }, { - "id": "e13aa76b-dfe1-4158-82f2-c4bad23cf32a", - "alias": "Verify Existing Account by Re-authentication - auth-otp-form - Conditional", - "description": "Flow to determine if the auth-otp-form authenticator should be used or not.", + "id": "2d4499a0-399c-4b6c-970c-7b441498f7b9", + "alias": "Reset - Conditional OTP", + "description": "Flow to determine if the OTP should be reset or not. Set to REQUIRED to force.", "providerId": "basic-flow", "topLevel": false, "builtIn": true, "authenticationExecutions": [ { "authenticator": "conditional-user-configured", + "authenticatorFlow": false, "requirement": "REQUIRED", "priority": 10, "userSetupAllowed": false, "autheticatorFlow": false }, { - "authenticator": "auth-otp-form", + "authenticator": "reset-otp", + "authenticatorFlow": false, "requirement": "REQUIRED", "priority": 20, "userSetupAllowed": false, @@ -1826,7 +2017,60 @@ ] }, { - "id": "173ece89-908a-4c0e-9a6e-ccf6c871a2fc", + "id": "710f4172-56a5-466e-bc75-ad7405ff62b5", + "alias": "User creation or linking", + "description": "Flow for the existing/non-existing user alternatives", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticatorConfig": "create unique user config", + "authenticator": "idp-create-user-if-unique", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticatorFlow": true, + "requirement": "ALTERNATIVE", + "priority": 20, + "flowAlias": "Handle Existing Account", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "id": "da7d3a39-7077-4354-9ffc-5b9f79fbaf0d", + "alias": "Verify Existing Account by Re-authentication", + "description": "Reauthentication of existing account", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-username-password-form", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticatorFlow": true, + "requirement": "CONDITIONAL", + "priority": 20, + "flowAlias": "First broker login - Conditional OTP", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "id": "6285968e-6200-463a-a329-8c60bc8fe9fc", "alias": "browser", "description": "browser based authentication", "providerId": "basic-flow", @@ -1835,6 +2079,7 @@ "authenticationExecutions": [ { "authenticator": "auth-cookie", + "authenticatorFlow": false, "requirement": "ALTERNATIVE", "priority": 10, "userSetupAllowed": false, @@ -1842,6 +2087,7 @@ }, { "authenticator": "auth-spnego", + "authenticatorFlow": false, "requirement": "DISABLED", "priority": 20, "userSetupAllowed": false, @@ -1849,12 +2095,14 @@ }, { "authenticator": "identity-provider-redirector", + "authenticatorFlow": false, "requirement": "ALTERNATIVE", "priority": 25, "userSetupAllowed": false, "autheticatorFlow": false }, { + "authenticatorFlow": true, "requirement": "ALTERNATIVE", "priority": 30, "flowAlias": "forms", @@ -1864,7 +2112,7 @@ ] }, { - "id": "4f469fff-9c0f-40d5-94d2-87ce8ecd34b7", + "id": "10393f04-3922-40db-a622-2655dfcae45d", "alias": "clients", "description": "Base authentication for clients", "providerId": "client-flow", @@ -1873,6 +2121,7 @@ "authenticationExecutions": [ { "authenticator": "client-secret", + "authenticatorFlow": false, "requirement": "ALTERNATIVE", "priority": 10, "userSetupAllowed": false, @@ -1880,6 +2129,7 @@ }, { "authenticator": "client-jwt", + "authenticatorFlow": false, "requirement": "ALTERNATIVE", "priority": 20, "userSetupAllowed": false, @@ -1887,6 +2137,7 @@ }, { "authenticator": "client-secret-jwt", + "authenticatorFlow": false, "requirement": "ALTERNATIVE", "priority": 30, "userSetupAllowed": false, @@ -1894,6 +2145,7 @@ }, { "authenticator": "client-x509", + "authenticatorFlow": false, "requirement": "ALTERNATIVE", "priority": 40, "userSetupAllowed": false, @@ -1902,7 +2154,7 @@ ] }, { - "id": "d17ed54c-9c98-4155-b8eb-c697101a325d", + "id": "4e5e164e-3c7e-4ca5-a10c-d7b817a7d468", "alias": "direct grant", "description": "OpenID Connect Resource Owner Grant", "providerId": "basic-flow", @@ -1911,6 +2163,7 @@ "authenticationExecutions": [ { "authenticator": "direct-grant-validate-username", + "authenticatorFlow": false, "requirement": "REQUIRED", "priority": 10, "userSetupAllowed": false, @@ -1918,46 +2171,24 @@ }, { "authenticator": "direct-grant-validate-password", + "authenticatorFlow": false, "requirement": "REQUIRED", "priority": 20, "userSetupAllowed": false, "autheticatorFlow": false }, { + "authenticatorFlow": true, "requirement": "CONDITIONAL", "priority": 30, - "flowAlias": "direct grant - direct-grant-validate-otp - Conditional", + "flowAlias": "Direct Grant - Conditional OTP", "userSetupAllowed": false, "autheticatorFlow": true } ] }, { - "id": "b4d3e6be-fd6d-4588-a4cc-cfe4420c1fba", - "alias": "direct grant - direct-grant-validate-otp - Conditional", - "description": "Flow to determine if the direct-grant-validate-otp authenticator should be used or not.", - "providerId": "basic-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "conditional-user-configured", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "direct-grant-validate-otp", - "requirement": "REQUIRED", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "7c5067b6-513d-4676-9afa-47b199c7194e", + "id": "80f88b0b-70de-4e4c-ae56-0293558301c5", "alias": "docker auth", "description": "Used by Docker clients to authenticate against the IDP", "providerId": "basic-flow", @@ -1966,6 +2197,7 @@ "authenticationExecutions": [ { "authenticator": "docker-http-basic-authenticator", + "authenticatorFlow": false, "requirement": "REQUIRED", "priority": 10, "userSetupAllowed": false, @@ -1974,7 +2206,7 @@ ] }, { - "id": "76be1624-c049-4e13-8ecd-8d01ac9433ac", + "id": "821af41a-6e77-4e8c-85a6-0280d5268909", "alias": "first broker login", "description": "Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account", "providerId": "basic-flow", @@ -1984,47 +2216,24 @@ { "authenticatorConfig": "review profile config", "authenticator": "idp-review-profile", + "authenticatorFlow": false, "requirement": "REQUIRED", "priority": 10, "userSetupAllowed": false, "autheticatorFlow": false }, { + "authenticatorFlow": true, "requirement": "REQUIRED", "priority": 20, - "flowAlias": "first broker login - Alternatives - 0", - "userSetupAllowed": false, - "autheticatorFlow": true - } - ] - }, - { - "id": "91ee6c4e-dedd-4024-b6a8-c332ef2444a5", - "alias": "first broker login - Alternatives - 0", - "description": "Subflow of first broker login with alternative executions", - "providerId": "basic-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticatorConfig": "create unique user config", - "authenticator": "idp-create-user-if-unique", - "requirement": "ALTERNATIVE", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "requirement": "ALTERNATIVE", - "priority": 20, - "flowAlias": "Handle Existing Account", + "flowAlias": "User creation or linking", "userSetupAllowed": false, "autheticatorFlow": true } ] }, { - "id": "2dc1cb10-ea2c-48a2-8131-3c950784a60e", + "id": "c4058fb0-ad93-4595-96ef-7d4bc5cbef4d", "alias": "forms", "description": "Username, password, otp and other auth forms.", "providerId": "basic-flow", @@ -2033,46 +2242,24 @@ "authenticationExecutions": [ { "authenticator": "auth-username-password-form", + "authenticatorFlow": false, "requirement": "REQUIRED", "priority": 10, "userSetupAllowed": false, "autheticatorFlow": false }, { + "authenticatorFlow": true, "requirement": "CONDITIONAL", "priority": 20, - "flowAlias": "forms - auth-otp-form - Conditional", + "flowAlias": "Browser - Conditional OTP", "userSetupAllowed": false, "autheticatorFlow": true } ] }, { - "id": "7cdad543-5bdf-4f4a-a527-34e1b30889de", - "alias": "forms - auth-otp-form - Conditional", - "description": "Flow to determine if the auth-otp-form authenticator should be used or not.", - "providerId": "basic-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "conditional-user-configured", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "auth-otp-form", - "requirement": "REQUIRED", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "98562c33-8964-42c4-8a69-204226d0c4c7", + "id": "a2a1d056-2521-498f-b345-b7db56f9342c", "alias": "http challenge", "description": "An authentication flow based on challenge-response HTTP Authentication Schemes", "providerId": "basic-flow", @@ -2081,36 +2268,24 @@ "authenticationExecutions": [ { "authenticator": "no-cookie-redirect", + "authenticatorFlow": false, "requirement": "REQUIRED", "priority": 10, "userSetupAllowed": false, "autheticatorFlow": false }, { - "authenticator": "basic-auth", + "authenticatorFlow": true, "requirement": "REQUIRED", "priority": 20, + "flowAlias": "Authentication Options", "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "basic-auth-otp", - "requirement": "DISABLED", - "priority": 30, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "auth-spnego", - "requirement": "DISABLED", - "priority": 40, - "userSetupAllowed": false, - "autheticatorFlow": false + "autheticatorFlow": true } ] }, { - "id": "6f1cb686-0852-4600-8eec-7c00cb465b35", + "id": "13e68e1b-4b44-4f21-a253-5b2dea24404b", "alias": "registration", "description": "registration flow", "providerId": "basic-flow", @@ -2119,6 +2294,7 @@ "authenticationExecutions": [ { "authenticator": "registration-page-form", + "authenticatorFlow": true, "requirement": "REQUIRED", "priority": 10, "flowAlias": "registration form", @@ -2128,7 +2304,7 @@ ] }, { - "id": "f335a41a-4044-43bf-ab0a-c39ea0a9246e", + "id": "e7588789-22d4-459b-96d6-1b480520f487", "alias": "registration form", "description": "registration form", "providerId": "form-flow", @@ -2137,6 +2313,7 @@ "authenticationExecutions": [ { "authenticator": "registration-user-creation", + "authenticatorFlow": false, "requirement": "REQUIRED", "priority": 20, "userSetupAllowed": false, @@ -2144,6 +2321,7 @@ }, { "authenticator": "registration-profile-action", + "authenticatorFlow": false, "requirement": "REQUIRED", "priority": 40, "userSetupAllowed": false, @@ -2151,6 +2329,7 @@ }, { "authenticator": "registration-password-action", + "authenticatorFlow": false, "requirement": "REQUIRED", "priority": 50, "userSetupAllowed": false, @@ -2158,6 +2337,7 @@ }, { "authenticator": "registration-recaptcha-action", + "authenticatorFlow": false, "requirement": "DISABLED", "priority": 60, "userSetupAllowed": false, @@ -2166,7 +2346,7 @@ ] }, { - "id": "d1364557-be6a-4e58-9db0-d1fda2305e6e", + "id": "8dc399ef-cf7d-46d5-9688-678c146ea8c4", "alias": "reset credentials", "description": "Reset credentials for a user if they forgot their password or something", "providerId": "basic-flow", @@ -2175,6 +2355,7 @@ "authenticationExecutions": [ { "authenticator": "reset-credentials-choose-user", + "authenticatorFlow": false, "requirement": "REQUIRED", "priority": 10, "userSetupAllowed": false, @@ -2182,6 +2363,7 @@ }, { "authenticator": "reset-credential-email", + "authenticatorFlow": false, "requirement": "REQUIRED", "priority": 20, "userSetupAllowed": false, @@ -2189,46 +2371,24 @@ }, { "authenticator": "reset-password", + "authenticatorFlow": false, "requirement": "REQUIRED", "priority": 30, "userSetupAllowed": false, "autheticatorFlow": false }, { + "authenticatorFlow": true, "requirement": "CONDITIONAL", "priority": 40, - "flowAlias": "reset credentials - reset-otp - Conditional", + "flowAlias": "Reset - Conditional OTP", "userSetupAllowed": false, "autheticatorFlow": true } ] }, { - "id": "558b807f-fed5-4c79-a80e-136a4468fbc5", - "alias": "reset credentials - reset-otp - Conditional", - "description": "Flow to determine if the reset-otp authenticator should be used or not.", - "providerId": "basic-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "conditional-user-configured", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "reset-otp", - "requirement": "REQUIRED", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "e86247fb-5e43-41fb-88f4-355a32d2b89d", + "id": "47ab5a7a-f67a-4a66-bdac-932ee230000d", "alias": "saml ecp", "description": "SAML ECP Profile Authentication Flow", "providerId": "basic-flow", @@ -2237,6 +2397,7 @@ "authenticationExecutions": [ { "authenticator": "http-basic-authenticator", + "authenticatorFlow": false, "requirement": "REQUIRED", "priority": 10, "userSetupAllowed": false, @@ -2247,14 +2408,14 @@ ], "authenticatorConfig": [ { - "id": "d2ce2a29-3a8f-4797-9529-b5e498d835b7", + "id": "b12be521-4e2b-42f0-a1a2-f1ba47ab4854", "alias": "create unique user config", "config": { "require.password.update.after.registration": "false" } }, { - "id": "949fe63b-47a4-41b6-9872-0aabe1806b57", + "id": "58bf2d56-1c45-4acc-9005-23b978d961d7", "alias": "review profile config", "config": { "update.profile.on.first.login": "missing" @@ -2307,6 +2468,15 @@ "priority": 50, "config": {} }, + { + "alias": "delete_account", + "name": "Delete Account", + "providerId": "delete_account", + "enabled": false, + "defaultAction": false, + "priority": 60, + "config": {} + }, { "alias": "update_user_locale", "name": "Update User Locale", @@ -2324,44 +2494,84 @@ "clientAuthenticationFlow": "clients", "dockerAuthenticationFlow": "docker auth", "attributes": { - "webAuthnPolicyAuthenticatorAttachment": "not specified", - "_browser_header.xRobotsTag": "none", - "webAuthnPolicyAttestationConveyancePreferencePasswordless": "not specified", - "webAuthnPolicyRequireResidentKeyPasswordless": "not specified", - "webAuthnPolicySignatureAlgorithmsPasswordless": "ES256", - "webAuthnPolicyRpEntityName": "keycloak", - "webAuthnPolicyAvoidSameAuthenticatorRegisterPasswordless": "false", - "failureFactor": "30", - "webAuthnPolicyAuthenticatorAttachmentPasswordless": "not specified", - "actionTokenGeneratedByUserLifespan": "300", - "maxDeltaTimeSeconds": "43200", - "webAuthnPolicySignatureAlgorithms": "ES256", - "webAuthnPolicyRpEntityNamePasswordless": "keycloak", - "offlineSessionMaxLifespan": "5184000", - "_browser_header.contentSecurityPolicyReportOnly": "", - "bruteForceProtected": "false", - "webAuthnPolicyRpIdPasswordless": "", - "_browser_header.contentSecurityPolicy": "frame-src 'self'; frame-ancestors 'self'; object-src 'none';", - "_browser_header.xXSSProtection": "1; mode=block", - "_browser_header.xFrameOptions": "SAMEORIGIN", - "_browser_header.strictTransportSecurity": "max-age=31536000; includeSubDomains", - "webAuthnPolicyUserVerificationRequirement": "not specified", - "permanentLockout": "false", - "quickLoginCheckMilliSeconds": "1000", - "webAuthnPolicyCreateTimeout": "0", - "webAuthnPolicyRequireResidentKey": "not specified", - "webAuthnPolicyRpId": "", - "webAuthnPolicyAttestationConveyancePreference": "not specified", - "maxFailureWaitSeconds": "900", - "minimumQuickLoginWaitSeconds": "60", - "webAuthnPolicyCreateTimeoutPasswordless": "0", - "webAuthnPolicyAvoidSameAuthenticatorRegister": "false", - "webAuthnPolicyUserVerificationRequirementPasswordless": "not specified", - "_browser_header.xContentTypeOptions": "nosniff", - "actionTokenGeneratedByAdminLifespan": "43200", - "waitIncrementSeconds": "60", - "offlineSessionMaxLifespanEnabled": "false" + "cibaBackchannelTokenDeliveryMode": "poll", + "cibaExpiresIn": "120", + "cibaAuthRequestedUserHint": "login_hint", + "oauth2DeviceCodeLifespan": "600", + "clientOfflineSessionMaxLifespan": "0", + "oauth2DevicePollingInterval": "5", + "clientSessionIdleTimeout": "0", + "clientSessionMaxLifespan": "0", + "parRequestUriLifespan": "60", + "clientOfflineSessionIdleTimeout": "0", + "cibaInterval": "5", + "frontendUrl": "", + "acr.loa.map": "[]" + }, + "keycloakVersion": "19.0.1", + "userManagedAccessAllowed": false, + "clientProfiles": { + "profiles": [] + }, + "clientPolicies": { + "policies": [] }, - "keycloakVersion": "9.0.0", - "userManagedAccessAllowed": false + "users": [ + { + "id": "4c973896-5761-41fc-8217-07c5d13a004b", + "createdTimestamp": 1505479415590, + "username": "admin", + "enabled": true, + "totp": false, + "emailVerified": true, + "firstName": "Admin", + "lastName": "Administrator", + "email": "admin@localhost", + "credentials": [ + { + "id": "b860462b-9b02-48ba-9523-d3a8926a917b", + "type": "password", + "createdDate": 1505479429154, + "secretData": "{\"value\":\"4pf9K2jWSCcHC+CwsZP/qidN5pSmDUe6AX6wBerSGdBVKkExay8MWKx+EKmaaObZW6FVsD8vdW/ZsyUFD9gJ1Q==\",\"salt\":\"1/qNkZ5kr77jOMOBPBogGw==\"}", + "credentialData": "{\"hashIterations\":27500,\"algorithm\":\"pbkdf2-sha256\"}" + } + ], + "disableableCredentialTypes": [], + "requiredActions": [], + "realmRoles": ["offline_access", "uma_authorization"], + "clientRoles": { + "account": ["view-profile", "manage-account"] + }, + "notBefore": 0, + "groups": ["/Admins", "/Users"] + }, + { + "id": "c4af4e2f-b432-4c3b-8405-cca86cd5b97b", + "createdTimestamp": 1505479373742, + "username": "user", + "enabled": true, + "totp": false, + "emailVerified": true, + "firstName": "", + "lastName": "User", + "email": "user@localhost", + "credentials": [ + { + "id": "7821832b-1e82-45a2-b8d3-f1a6ad909e64", + "type": "password", + "createdDate": 1505479392766, + "secretData": "{\"value\":\"MbKsMgWPnZyImih8s4SaoCSCq+XIY/c6S9F93sXEidHF1TjPWxCqMkec0+o3860CMLXHt3az61cIJOWI0FW9aw==\",\"salt\":\"fmpBI1r8R1u75hDLMUlwBw==\"}", + "credentialData": "{\"hashIterations\":27500,\"algorithm\":\"pbkdf2-sha256\"}" + } + ], + "disableableCredentialTypes": [], + "requiredActions": [], + "realmRoles": ["offline_access", "uma_authorization"], + "clientRoles": { + "account": ["view-profile", "manage-account"] + }, + "notBefore": 0, + "groups": ["/Users"] + } + ] } diff --git a/generators/server/templates/src/main/docker/config/realm-config/jhipster-users-0.json.ejs b/generators/server/templates/src/main/docker/config/realm-config/jhipster-users-0.json.ejs deleted file mode 100644 index 4576a505..00000000 --- a/generators/server/templates/src/main/docker/config/realm-config/jhipster-users-0.json.ejs +++ /dev/null @@ -1,72 +0,0 @@ -{ - "realm" : "jhipster", - "users" : [ { - "id" : "4c973896-5761-41fc-8217-07c5d13a004b", - "createdTimestamp" : 1505479415590, - "username" : "admin", - "enabled" : true, - "totp" : false, - "emailVerified" : true, - "firstName" : "Admin", - "lastName" : "Administrator", - "email" : "admin@localhost", - "credentials" : [ { - "id" : "b860462b-9b02-48ba-9523-d3a8926a917b", - "type" : "password", - "createdDate" : 1505479429154, - "secretData" : "{\"value\":\"4pf9K2jWSCcHC+CwsZP/qidN5pSmDUe6AX6wBerSGdBVKkExay8MWKx+EKmaaObZW6FVsD8vdW/ZsyUFD9gJ1Q==\",\"salt\":\"1/qNkZ5kr77jOMOBPBogGw==\"}", - "credentialData" : "{\"hashIterations\":27500,\"algorithm\":\"pbkdf2-sha256\"}" - } ], - "disableableCredentialTypes" : [ ], - "requiredActions" : [ ], - "realmRoles" : [ "offline_access", "uma_authorization" ], - "clientRoles" : { - "account" : [ "view-profile", "manage-account" ] - }, - "notBefore" : 0, - "groups" : [ "/Admins", "/Users" ] - }, { - "id" : "e3ab6777-e2d7-474e-b831-64e785d8be1f", - "createdTimestamp" : 1576348683889, - "username" : "service-account-internal", - "enabled" : true, - "totp" : false, - "emailVerified" : false, - "serviceAccountClientId" : "internal", - "credentials" : [ ], - "disableableCredentialTypes" : [ ], - "requiredActions" : [ ], - "realmRoles" : [ "offline_access", "uma_authorization" ], - "clientRoles" : { - "internal" : [ "uma_protection" ], - "account" : [ "view-profile", "manage-account" ] - }, - "notBefore" : 0, - "groups" : [ ] - }, { - "id" : "c4af4e2f-b432-4c3b-8405-cca86cd5b97b", - "createdTimestamp" : 1505479373742, - "username" : "user", - "enabled" : true, - "totp" : false, - "emailVerified" : true, - "firstName" : "", - "lastName" : "User", - "email" : "user@localhost", - "credentials" : [ { - "id" : "7821832b-1e82-45a2-b8d3-f1a6ad909e64", - "type" : "password", - "createdDate" : 1505479392766, - "secretData" : "{\"value\":\"MbKsMgWPnZyImih8s4SaoCSCq+XIY/c6S9F93sXEidHF1TjPWxCqMkec0+o3860CMLXHt3az61cIJOWI0FW9aw==\",\"salt\":\"fmpBI1r8R1u75hDLMUlwBw==\"}", - "credentialData" : "{\"hashIterations\":27500,\"algorithm\":\"pbkdf2-sha256\"}" - } ], - "disableableCredentialTypes" : [ ], - "requiredActions" : [ ], - "realmRoles" : [ "offline_access", "uma_authorization" ], - "clientRoles" : { - "account" : [ "view-profile", "manage-account" ] - }, - "notBefore" : 0, - "groups" : [ "/Users" ] - } ] -} diff --git a/generators/server/templates/src/main/docker/keycloak.yml.ejs b/generators/server/templates/src/main/docker/keycloak.yml.ejs deleted file mode 100644 index 5da65a35..00000000 --- a/generators/server/templates/src/main/docker/keycloak.yml.ejs +++ /dev/null @@ -1,33 +0,0 @@ -<%# - Copyright 2019-2023 the original author or authors from the JHipster project. - - This file is part of the JHipster project, see https://www.jhipster.tech/ - for more information. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> -version: '<%= DOCKER_COMPOSE_FORMAT_VERSION %>' -services: - keycloak: - image: <%= DOCKER_KEYCLOAK %> - command: ["-b", "0.0.0.0", "-Dkeycloak.migration.action=import", "-Dkeycloak.migration.provider=dir", "-Dkeycloak.migration.dir=/opt/jboss/keycloak/realm-config", "-Dkeycloak.migration.strategy=OVERWRITE_EXISTING", "-Djboss.socket.binding.port-offset=1000", "-Dkeycloak.profile.feature.upload_scripts=enabled"] - volumes: - - ./realm-config:/opt/jboss/keycloak/realm-config - environment: - - KEYCLOAK_USER=admin - - KEYCLOAK_PASSWORD=admin - - DB_VENDOR=h2 - ports: - - 9080:9080 - - 9443:9443 - - 10990:10990 diff --git a/generators/server/templates/src/main/java/package/web/rest/AccountResource.java.ejs b/generators/server/templates/src/main/java/package/web/rest/AccountResource.java.ejs index 2586de06..61174f8b 100644 --- a/generators/server/templates/src/main/java/package/web/rest/AccountResource.java.ejs +++ b/generators/server/templates/src/main/java/package/web/rest/AccountResource.java.ejs @@ -229,10 +229,14 @@ public class AccountResource { @Post(value = "/account/reset-password/init", consumes = "text/plain") @ExecuteOn(TaskExecutors.IO) public void requestPasswordReset(@Body String mail) { - mailService.sendPasswordResetMail( - userService.requestPasswordReset(mail) - .orElseThrow(EmailNotFoundException::new) - ); + Optional user = userService.requestPasswordReset(mail); + if (user.isPresent()) { + mailService.sendPasswordResetMail(user.orElseThrow()); + } else { + // Pretend the request has been successful to prevent checking which emails really exist + // but log that an invalid attempt has been made + log.warn("Password reset requested for non existing mail"); + } } /** diff --git a/generators/server/templates/src/main/resources/application.yml.ejs b/generators/server/templates/src/main/resources/application.yml.ejs index 609d1b56..4e5fdf09 100644 --- a/generators/server/templates/src/main/resources/application.yml.ejs +++ b/generators/server/templates/src/main/resources/application.yml.ejs @@ -70,7 +70,7 @@ micronaut: client-id: web_app <%_ } _%> openid: - issuer: http://localhost:9080/auth/realms/jhipster + issuer: http://localhost:9080/realms/jhipster login-uri: /oauth2/authorization{/provider} callback-uri: /oauth2/callback{/provider} <%_ } _%> diff --git a/package-lock.json b/package-lock.json index 04a469c8..7e66ccb9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "license": "Apache-2.0", "dependencies": { "chalk": "4.1.2", - "generator-jhipster": "7.8.1", + "generator-jhipster": "7.9.3", "os": "^0.1.2" }, "bin": { @@ -571,33 +571,33 @@ } }, "node_modules/@chevrotain/cst-dts-gen": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-10.1.2.tgz", - "integrity": "sha512-E/XrL0QlzExycPzwhOEZGVOheJ/Clr5uNv3oCds88MiNqEmg3UU1iauZk7DhjsUo3jgEW4lf0I5HRl7/HC5ZkQ==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-10.3.0.tgz", + "integrity": "sha512-7DJPfCtfK1SU1/F3ZmmVv5IsTTcP/iiKFqU1m0H4VzJNvG3/GNxJFQjy4t/veWTAFSPWSj1WCNyq+sc5XKq9yA==", "dependencies": { - "@chevrotain/gast": "^10.1.2", - "@chevrotain/types": "^10.1.2", + "@chevrotain/gast": "10.3.0", + "@chevrotain/types": "10.3.0", "lodash": "4.17.21" } }, "node_modules/@chevrotain/gast": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-10.1.2.tgz", - "integrity": "sha512-er+TcxUOMuGOPoiOq8CJsRm92zGE4YPIYtyxJfxoVwVgtj4AMrPNCmrHvYaK/bsbt2DaDuFdcbbAfM9bcBXW6Q==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-10.3.0.tgz", + "integrity": "sha512-kLbGubyLprlyFZ1/c5pkpciCi6WTcRcnKhkfflSdKsZuoy0OmVTEXzrmFCQWzJ+QtmQNtPZTKwIBXJ6Zixp6nA==", "dependencies": { - "@chevrotain/types": "^10.1.2", + "@chevrotain/types": "10.3.0", "lodash": "4.17.21" } }, "node_modules/@chevrotain/types": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-10.1.2.tgz", - "integrity": "sha512-4qF9SmmWKv8AIG/3d+71VFuqLumNCQTP5GoL0CW6x7Ay2OdXm6FUgWFLTMneGUjYUk2C+MSCf7etQfdq3LEr1A==" + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-10.3.0.tgz", + "integrity": "sha512-LGesL4c5+FyweDsmFukcxmsowpagj1iC4iqkQSIDG3Y7krV2rIOmCDDq4kZff51Asr6yQHEJsWTyvGVHeWQLkw==" }, "node_modules/@chevrotain/utils": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-10.1.2.tgz", - "integrity": "sha512-bbZIpW6fdyf7FMaeDmw3cBbkTqsecxEkwlVKgVfqqXWBPLH6azxhPA2V9F7OhoZSVrsnMYw7QuyK6qutXPjEew==" + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-10.3.0.tgz", + "integrity": "sha512-KCpFcX+kNyKlVZQW60ZUGRW5Nsg5u0F2CIgHiDQyg282ouHS9xap2ZEKqhwGE/0nYP46nAPnGPdb/IYh7ZHOsA==" }, "node_modules/@colors/colors": { "version": "1.5.0", @@ -1428,6 +1428,11 @@ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, + "node_modules/@types/triple-beam": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.2.tgz", + "integrity": "sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==" + }, "node_modules/@types/vinyl": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz", @@ -1793,10 +1798,21 @@ "node": ">=10.12.0" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/aws-sdk": { - "version": "2.1106.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1106.0.tgz", - "integrity": "sha512-3dr0TTR2LI70ST8fa4IgXHpWdH4yv7FLnt9YEndwFQ8ar2EMCMpMU67wwCGBA72GUi0aOg4+lsLjGmCvIq3jug==", + "version": "2.1204.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1204.0.tgz", + "integrity": "sha512-H3dRQBdgzAfZ/e/dfiW44fhQrgAuCfIzWhI5y5J9122caI4uZY6TEUd003UXP4nXq2eMfuPWg0bA/mPwbj8RkA==", "dependencies": { "buffer": "4.9.2", "events": "1.1.1", @@ -1805,7 +1821,8 @@ "querystring": "0.2.0", "sax": "1.2.1", "url": "0.10.3", - "uuid": "3.3.2", + "util": "^0.12.4", + "uuid": "8.0.0", "xml2js": "0.4.19" }, "engines": { @@ -1813,12 +1830,11 @@ } }, "node_modules/aws-sdk/node_modules/uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", + "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", "bin": { - "uuid": "bin/uuid" + "uuid": "dist/bin/uuid" } }, "node_modules/aws-sign2": { @@ -1835,11 +1851,25 @@ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, "node_modules/axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", "dependencies": { - "follow-redirects": "^1.14.8" + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" } }, "node_modules/babel-plugin-istanbul": { @@ -2128,7 +2158,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -2197,14 +2226,14 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, "node_modules/chevrotain": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-10.1.2.tgz", - "integrity": "sha512-hvRiQuhhTZxkPMGD/dke+s1EGo8AkKDBU05CcufBO278qgAQSwIC4QyLdHz0CFHVtqVYWjlAS5D1KwvBbaHT+w==", - "dependencies": { - "@chevrotain/cst-dts-gen": "^10.1.2", - "@chevrotain/gast": "^10.1.2", - "@chevrotain/types": "^10.1.2", - "@chevrotain/utils": "^10.1.2", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-10.3.0.tgz", + "integrity": "sha512-sy3yTBfvNJmxzYOGWaDStZFuA7va5/MXwzBU+XBIol0bR0aYlfGqTjzgedeu32Ki/j7IVyvYAZO2PInBjmmMjg==", + "dependencies": { + "@chevrotain/cst-dts-gen": "10.3.0", + "@chevrotain/gast": "10.3.0", + "@chevrotain/types": "10.3.0", + "@chevrotain/utils": "10.3.0", "lodash": "4.17.21", "regexp-to-ast": "0.5.0" } @@ -2468,9 +2497,9 @@ } }, "node_modules/commander": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.1.0.tgz", - "integrity": "sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz", + "integrity": "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==", "engines": { "node": "^12.20.0 || >=14" } @@ -2505,9 +2534,9 @@ } }, "node_modules/conf": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/conf/-/conf-10.1.2.tgz", - "integrity": "sha512-o9Fv1Mv+6A0JpoayQ8JleNp3hhkbOJP/Re/Q+QqxMPHPkABVsRjQGWZn9A5GcqLiTNC6d89p2PB5ZhHVDSMwyg==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", + "integrity": "sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==", "dependencies": { "ajv": "^8.6.3", "ajv-formats": "^2.1.1", @@ -2849,6 +2878,7 @@ "version": "3.1.6", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "dev": true, "dependencies": { "jake": "^10.6.1" }, @@ -3550,11 +3580,30 @@ } }, "node_modules/filelist": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", - "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dependencies": { - "minimatch": "^3.0.4" + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" } }, "node_modules/fill-range": { @@ -3634,9 +3683,9 @@ "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" }, "node_modules/follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "funding": [ { "type": "individual", @@ -3652,6 +3701,14 @@ } } }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -3755,45 +3812,47 @@ } }, "node_modules/generator-jhipster": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/generator-jhipster/-/generator-jhipster-7.8.1.tgz", - "integrity": "sha512-oiXczv5DTgwLKqU1ni6uH+vXsuWCEyMKEvzpKAX5KxXntofwfGRklcL+qoHKEyWxiMu8+ZugY0exw4x8jFV3qA==", + "version": "7.9.3", + "resolved": "https://registry.npmjs.org/generator-jhipster/-/generator-jhipster-7.9.3.tgz", + "integrity": "sha512-iuhXUA0jHygv9wg3cCK+1xdNchi8x3z56TtTPqIeiDP0VNHL2ddesicL4QwNnHzMafk+J1po7hDEGQqURDUpvA==", "dependencies": { "@faker-js/faker": "5.5.3", - "aws-sdk": "2.1106.0", - "axios": "0.26.1", + "aws-sdk": "2.1204.0", + "axios": "0.27.2", "chalk": "4.1.2", - "chevrotain": "10.1.2", - "commander": "9.1.0", - "conf": "10.1.2", + "chevrotain": "10.3.0", + "commander": "9.4.0", + "conf": "10.2.0", "debug": "4.3.4", "didyoumean": "1.2.2", - "ejs": "3.1.6", - "glob": "7.2.0", + "ejs": "3.1.8", + "escape-string-regexp": "4.0.0", + "glob": "8.0.3", "insight": "0.11.1", + "isbinaryfile": "4.0.10", "js-yaml": "4.1.0", "lodash": "4.17.21", - "mem-fs-editor": "9.4.0", - "minimatch": "5.0.1", + "mem-fs-editor": "9.5.0", + "minimatch": "5.1.0", "normalize-path": "3.0.0", "os-locale": "5.0.0", "p-queue": "6.6.2", "p-transform": "1.3.0", - "parse-gitignore": "1.0.1", + "parse-gitignore": "2.0.0", "pluralize": "8.0.0", - "prettier": "2.6.2", - "prettier-plugin-java": "1.6.1", - "prettier-plugin-packagejson": "2.2.17", + "prettier": "2.7.1", + "prettier-plugin-java": "1.6.2", + "prettier-plugin-packagejson": "2.2.18", "progress": "2.0.3", "randexp": "0.5.3", - "semver": "7.3.5", + "semver": "7.3.7", "shelljs": "0.8.5", - "simple-git": "3.5.0", + "simple-git": "3.13.0", "then-request": "6.0.2", "uuid": "8.3.2", - "winston": "3.6.0", - "yeoman-environment": "3.9.1", - "yeoman-generator": "5.6.1" + "winston": "3.8.1", + "yeoman-environment": "3.10.0", + "yeoman-generator": "5.7.0" }, "bin": { "jhipster": "cli/jhipster.js" @@ -3815,10 +3874,116 @@ "balanced-match": "^1.0.0" } }, + "node_modules/generator-jhipster/node_modules/ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/generator-jhipster/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "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/generator-jhipster/node_modules/globby": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.0.tgz", + "integrity": "sha512-3LifW9M4joGZasyYPz2A1U74zbC/45fvpXUvO/9KbSa+VV0aGZarWkfdgKyR9sExNP0t0x0ss/UMJpNpcaTspw==", + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/generator-jhipster/node_modules/globby/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/generator-jhipster/node_modules/globby/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/generator-jhipster/node_modules/globby/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/generator-jhipster/node_modules/java-parser": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/java-parser/-/java-parser-2.0.2.tgz", + "integrity": "sha512-fwv1eDYE4OIAN+XS7cD8aB7UdQyAh3Uz36ydWqemvnDKXEdLbxq7qIbvsjpSvS1NHFR+r81N7AjGcpnamjVxJw==", + "dependencies": { + "chevrotain": "6.5.0", + "lodash": "4.17.21" + } + }, + "node_modules/generator-jhipster/node_modules/java-parser/node_modules/chevrotain": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-6.5.0.tgz", + "integrity": "sha512-BwqQ/AgmKJ8jcMEjaSnfMybnKMgGTrtDKowfTP3pX4jwVy0kNjRsT/AP6h+wC3+3NC+X8X15VWBnTCQlX+wQFg==", + "dependencies": { + "regexp-to-ast": "0.4.0" + } + }, "node_modules/generator-jhipster/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -3826,10 +3991,61 @@ "node": ">=10" } }, + "node_modules/generator-jhipster/node_modules/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/generator-jhipster/node_modules/prettier-plugin-java": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/prettier-plugin-java/-/prettier-plugin-java-1.6.2.tgz", + "integrity": "sha512-oVIUOkx50eb9skdRtEIU7MJUsizQ1ZocgXR1w1o8AnieNGpuPI/2pWnpjtbBm9wUG1dHtBGU8cVIr8h+xgzQIg==", + "dependencies": { + "java-parser": "2.0.2", + "lodash": "4.17.21", + "prettier": "2.3.1" + } + }, + "node_modules/generator-jhipster/node_modules/prettier-plugin-java/node_modules/prettier": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.1.tgz", + "integrity": "sha512-p+vNbgpLjif/+D+DwAZAbndtRrR0md0MwfmOVN9N+2RgyACMT+7tfaRnT+WDPkqnuVwleyuBIG2XBxKDme3hPA==", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/generator-jhipster/node_modules/prettier-plugin-packagejson": { + "version": "2.2.18", + "resolved": "https://registry.npmjs.org/prettier-plugin-packagejson/-/prettier-plugin-packagejson-2.2.18.tgz", + "integrity": "sha512-iBjQ3IY6IayFrQHhXvg+YvKprPUUiIJ04Vr9+EbeQPfwGajznArIqrN33c5bi4JcIvmLHGROIMOm9aYakJj/CA==", + "dependencies": { + "sort-package-json": "1.57.0" + }, + "peerDependencies": { + "prettier": ">= 1.16.0" + } + }, + "node_modules/generator-jhipster/node_modules/regexp-to-ast": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.4.0.tgz", + "integrity": "sha512-4qf/7IsIKfSNHQXSwial1IFmfM1Cc/whNBQqRwe0V2stPe7KmN1U0tWQiIx6JiirgSrisjE0eECdNf7Tav1Ntw==" + }, "node_modules/generator-jhipster/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -3840,6 +4056,22 @@ "node": ">=10" } }, + "node_modules/generator-jhipster/node_modules/sort-package-json": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-1.57.0.tgz", + "integrity": "sha512-FYsjYn2dHTRb41wqnv+uEqCUvBpK3jZcTp9rbz2qDTmel7Pmdtf+i2rLaaPMRZeSVM60V3Se31GyWFpmKs4Q5Q==", + "dependencies": { + "detect-indent": "^6.0.0", + "detect-newline": "3.1.0", + "git-hooks-list": "1.0.3", + "globby": "10.0.0", + "is-plain-obj": "2.1.0", + "sort-object-keys": "^1.1.3" + }, + "bin": { + "sort-package-json": "cli.js" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -3859,14 +4091,14 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4006,6 +4238,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", @@ -4077,11 +4320,21 @@ "node": ">=8" } }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -4093,7 +4346,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -4465,6 +4717,21 @@ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", @@ -4514,7 +4781,6 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -4564,6 +4830,20 @@ "node": ">=4" } }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -4727,6 +5007,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -4812,14 +5106,14 @@ } }, "node_modules/jake": { - "version": "10.8.4", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.4.tgz", - "integrity": "sha512-MtWeTkl1qGsWUtbl/Jsca/8xSoK3x0UmS82sNbjqxxG/de/M/3b1DntdjHgPMC50enlTNwXOCRqPXLLt5cCfZA==", + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", "dependencies": { - "async": "0.9.x", + "async": "^3.2.3", "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" + "filelist": "^1.0.4", + "minimatch": "^3.1.2" }, "bin": { "jake": "bin/cli.js" @@ -4829,14 +5123,15 @@ } }, "node_modules/jake/node_modules/async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, "node_modules/java-parser": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/java-parser/-/java-parser-2.0.1.tgz", "integrity": "sha512-IPzs8LN8drvAZKbgW1MLLsrEeW4TwSy714I6ZHlEGNV6/42S2xRU5zDn3lP6uZQakwi7nyC00T6lZvwEnBujzw==", + "dev": true, "dependencies": { "chevrotain": "6.5.0", "lodash": "4.17.21" @@ -4846,6 +5141,7 @@ "version": "6.5.0", "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-6.5.0.tgz", "integrity": "sha512-BwqQ/AgmKJ8jcMEjaSnfMybnKMgGTrtDKowfTP3pX4jwVy0kNjRsT/AP6h+wC3+3NC+X8X15VWBnTCQlX+wQFg==", + "dev": true, "dependencies": { "regexp-to-ast": "0.4.0" } @@ -4853,7 +5149,8 @@ "node_modules/java-parser/node_modules/regexp-to-ast": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.4.0.tgz", - "integrity": "sha512-4qf/7IsIKfSNHQXSwial1IFmfM1Cc/whNBQqRwe0V2stPe7KmN1U0tWQiIx6JiirgSrisjE0eECdNf7Tav1Ntw==" + "integrity": "sha512-4qf/7IsIKfSNHQXSwial1IFmfM1Cc/whNBQqRwe0V2stPe7KmN1U0tWQiIx6JiirgSrisjE0eECdNf7Tav1Ntw==", + "dev": true }, "node_modules/jest-diff": { "version": "27.5.1", @@ -5313,11 +5610,12 @@ } }, "node_modules/logform": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.2.tgz", - "integrity": "sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.5.1.tgz", + "integrity": "sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==", "dependencies": { "@colors/colors": "1.5.0", + "@types/triple-beam": "^1.3.2", "fecha": "^4.2.0", "ms": "^2.1.1", "safe-stable-stringify": "^2.3.1", @@ -5420,17 +5718,17 @@ } }, "node_modules/mem-fs-editor": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-9.4.0.tgz", - "integrity": "sha512-HSSOLSVRrsDdui9I6i96dDtG+oAez/4EB2g4cjSrNhgNQ3M+L57/+22NuPdORSoxvOHjIg/xeOE+C0wwF91D2g==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-9.5.0.tgz", + "integrity": "sha512-7p+bBDqsSisO20YIZf2ntYvST27fFJINn7CKE21XdPUQDcLV62b/yB5sTOooQeEoiZ3rldZQ+4RfONgL/gbRoA==", "dependencies": { "binaryextensions": "^4.16.0", "commondir": "^1.0.1", "deep-extend": "^0.6.0", - "ejs": "^3.1.6", - "globby": "^11.0.3", + "ejs": "^3.1.8", + "globby": "^11.1.0", "isbinaryfile": "^4.0.8", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "multimatch": "^5.0.0", "normalize-path": "^3.0.0", "textextensions": "^5.13.0" @@ -5447,6 +5745,20 @@ } } }, + "node_modules/mem-fs-editor/node_modules/ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/mem-fs/node_modules/@types/node": { "version": "15.14.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz", @@ -6789,11 +7101,11 @@ } }, "node_modules/parse-gitignore": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-gitignore/-/parse-gitignore-1.0.1.tgz", - "integrity": "sha512-UGyowyjtx26n65kdAMWhm6/3uy5uSrpcuH7tt+QEVudiBoVS+eqHxD5kbi9oWVRwj7sCzXqwuM+rUGw7earl6A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-gitignore/-/parse-gitignore-2.0.0.tgz", + "integrity": "sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==", "engines": { - "node": ">=6" + "node": ">=14" } }, "node_modules/parse-json": { @@ -7146,6 +7458,7 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "dev": true, "bin": { "prettier": "bin-prettier.js" }, @@ -7172,6 +7485,7 @@ "version": "1.6.1", "resolved": "https://registry.npmjs.org/prettier-plugin-java/-/prettier-plugin-java-1.6.1.tgz", "integrity": "sha512-kSY17V/P88nILlILb5iMp16TVJy6Ls9Jy4zAzI4+GsEuRDZH5VqRuLd8aJS1ImWxVgRjNBmoFOjxYyxkRM0SRA==", + "dev": true, "dependencies": { "java-parser": "2.0.1", "lodash": "4.17.21", @@ -7182,6 +7496,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.1.tgz", "integrity": "sha512-p+vNbgpLjif/+D+DwAZAbndtRrR0md0MwfmOVN9N+2RgyACMT+7tfaRnT+WDPkqnuVwleyuBIG2XBxKDme3hPA==", + "dev": true, "bin": { "prettier": "bin-prettier.js" }, @@ -7193,6 +7508,7 @@ "version": "2.2.17", "resolved": "https://registry.npmjs.org/prettier-plugin-packagejson/-/prettier-plugin-packagejson-2.2.17.tgz", "integrity": "sha512-Z1l3stIdkEzuv5w2ZyLl7mvl1Q/7vr2wjLAaKCQtafPHB7h09dir0tgXK/W5iEc/jP+C4XtvJl/HhiZBvPh4rQ==", + "dev": true, "dependencies": { "sort-package-json": "1.55.0" }, @@ -7822,9 +8138,9 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/safe-stable-stringify": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", - "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", "engines": { "node": ">=10" } @@ -7925,17 +8241,17 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "node_modules/simple-git": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.5.0.tgz", - "integrity": "sha512-fZsaq5nzdxQRhMNs6ESGLpMUHoL5GRP+boWPhq9pMYMKwOGZV2jHOxi8AbFFA2Y/6u4kR99HoULizSbpzaODkA==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.13.0.tgz", + "integrity": "sha512-VYrs3joeHvWGcN3K135RpGpPjm4AHYeOrclwew6LlfHgq6ozQYIW2yMnmjf4PCgVOuSYCbXkdUjyiFawuJz8MA==", "dependencies": { "@kwsites/file-exists": "^1.1.1", "@kwsites/promise-deferred": "^1.1.1", - "debug": "^4.3.3" + "debug": "^4.3.4" }, "funding": { "type": "github", - "url": "https://github.com/sponsors/steveukx/" + "url": "https://github.com/steveukx/git-js?sponsor=1" } }, "node_modules/simple-swizzle": { @@ -8039,6 +8355,7 @@ "version": "1.55.0", "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-1.55.0.tgz", "integrity": "sha512-xhKvRD8WGbALjXQkVuk4/93Z/2NIO+5IzKamdMjN5kn3L+N+M9YWQssmM6GXlQr9v1F7PGWsOJEo1gvXOhM7Mg==", + "dev": true, "dependencies": { "detect-indent": "^6.0.0", "detect-newline": "3.1.0", @@ -8055,6 +8372,7 @@ "version": "10.0.0", "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.0.tgz", "integrity": "sha512-3LifW9M4joGZasyYPz2A1U74zbC/45fvpXUvO/9KbSa+VV0aGZarWkfdgKyR9sExNP0t0x0ss/UMJpNpcaTspw==", + "dev": true, "dependencies": { "@types/glob": "^7.1.1", "array-union": "^2.1.0", @@ -8497,9 +8815,12 @@ "integrity": "sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g==" }, "node_modules/triple-beam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", - "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", + "engines": { + "node": ">= 14.0.0" + } }, "node_modules/tsconfig-paths": { "version": "3.14.1", @@ -8676,6 +8997,18 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -8847,6 +9180,24 @@ "node": ">=8" } }, + "node_modules/which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -8870,9 +9221,9 @@ } }, "node_modules/winston": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.6.0.tgz", - "integrity": "sha512-9j8T75p+bcN6D00sF/zjFVmPp+t8KMPB1MzbbzYjeN9VWxdsYnTB40TkbNUEXAmILEfChMvAMgidlX64OG3p6w==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.8.1.tgz", + "integrity": "sha512-r+6YAiCR4uI3N8eQNOg8k3P3PqwAm20cLKlzVD9E66Ch39+LZC+VH1UKf9JemQj2B3QoUHfKD7Poewn0Pr3Y1w==", "dependencies": { "@dabh/diagnostics": "^2.0.2", "async": "^3.2.3", @@ -8903,9 +9254,9 @@ } }, "node_modules/winston-transport/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -8921,9 +9272,9 @@ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, "node_modules/winston/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -9123,9 +9474,9 @@ } }, "node_modules/yeoman-environment": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-3.9.1.tgz", - "integrity": "sha512-IdRnbQt/DSOSnao0oD9c+or1X2UrL+fx9eC0O7Lq/MGZV68nhv9k77MqG+hEAySPSlyCpocVlhfQwV62hczk5Q==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-3.10.0.tgz", + "integrity": "sha512-sYtSxBK9daq21QjoskJTHKLQ1xEsRPURkmFV/aM8HS8ZlQVzwx57Rz1zCs8EGPhK4vqsmTE8H92Gp1jg1fT3EA==", "dependencies": { "@npmcli/arborist": "^4.0.4", "are-we-there-yet": "^2.0.0", @@ -9145,6 +9496,7 @@ "grouped-queue": "^2.0.0", "inquirer": "^8.0.0", "is-scoped": "^2.1.0", + "isbinaryfile": "^4.0.10", "lodash": "^4.17.10", "log-symbols": "^4.0.0", "mem-fs": "^1.2.0 || ^2.0.0", @@ -9444,14 +9796,14 @@ } }, "node_modules/yeoman-generator": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/yeoman-generator/-/yeoman-generator-5.6.1.tgz", - "integrity": "sha512-XllgFvmDEwoPMq2rKtL4/N52WlINJW6a3I3XtlCrMb3/dqO5dW0nPNgR0L3IIUIdf9y1EHb1ZFMs2Qp3ZEEFxg==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/yeoman-generator/-/yeoman-generator-5.7.0.tgz", + "integrity": "sha512-z9ZwgKoDOd+llPDCwn8Ax2l4In5FMhlslxdeByW4AMxhT+HbTExXKEAahsClHSbwZz1i5OzRwLwRIUdOJBr5Bw==", "dependencies": { "chalk": "^4.1.0", "dargs": "^7.0.0", "debug": "^4.1.1", - "execa": "^4.1.0", + "execa": "^5.1.1", "github-username": "^6.0.0", "lodash": "^4.17.11", "minimist": "^1.2.5", @@ -9474,6 +9826,47 @@ } } }, + "node_modules/yeoman-generator/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/yeoman-generator/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yeoman-generator/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, "node_modules/yeoman-generator/node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -10076,33 +10469,33 @@ } }, "@chevrotain/cst-dts-gen": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-10.1.2.tgz", - "integrity": "sha512-E/XrL0QlzExycPzwhOEZGVOheJ/Clr5uNv3oCds88MiNqEmg3UU1iauZk7DhjsUo3jgEW4lf0I5HRl7/HC5ZkQ==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-10.3.0.tgz", + "integrity": "sha512-7DJPfCtfK1SU1/F3ZmmVv5IsTTcP/iiKFqU1m0H4VzJNvG3/GNxJFQjy4t/veWTAFSPWSj1WCNyq+sc5XKq9yA==", "requires": { - "@chevrotain/gast": "^10.1.2", - "@chevrotain/types": "^10.1.2", + "@chevrotain/gast": "10.3.0", + "@chevrotain/types": "10.3.0", "lodash": "4.17.21" } }, "@chevrotain/gast": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-10.1.2.tgz", - "integrity": "sha512-er+TcxUOMuGOPoiOq8CJsRm92zGE4YPIYtyxJfxoVwVgtj4AMrPNCmrHvYaK/bsbt2DaDuFdcbbAfM9bcBXW6Q==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-10.3.0.tgz", + "integrity": "sha512-kLbGubyLprlyFZ1/c5pkpciCi6WTcRcnKhkfflSdKsZuoy0OmVTEXzrmFCQWzJ+QtmQNtPZTKwIBXJ6Zixp6nA==", "requires": { - "@chevrotain/types": "^10.1.2", + "@chevrotain/types": "10.3.0", "lodash": "4.17.21" } }, "@chevrotain/types": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-10.1.2.tgz", - "integrity": "sha512-4qF9SmmWKv8AIG/3d+71VFuqLumNCQTP5GoL0CW6x7Ay2OdXm6FUgWFLTMneGUjYUk2C+MSCf7etQfdq3LEr1A==" + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-10.3.0.tgz", + "integrity": "sha512-LGesL4c5+FyweDsmFukcxmsowpagj1iC4iqkQSIDG3Y7krV2rIOmCDDq4kZff51Asr6yQHEJsWTyvGVHeWQLkw==" }, "@chevrotain/utils": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-10.1.2.tgz", - "integrity": "sha512-bbZIpW6fdyf7FMaeDmw3cBbkTqsecxEkwlVKgVfqqXWBPLH6azxhPA2V9F7OhoZSVrsnMYw7QuyK6qutXPjEew==" + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-10.3.0.tgz", + "integrity": "sha512-KCpFcX+kNyKlVZQW60ZUGRW5Nsg5u0F2CIgHiDQyg282ouHS9xap2ZEKqhwGE/0nYP46nAPnGPdb/IYh7ZHOsA==" }, "@colors/colors": { "version": "1.5.0", @@ -10825,6 +11218,11 @@ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, + "@types/triple-beam": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.2.tgz", + "integrity": "sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==" + }, "@types/vinyl": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz", @@ -11103,10 +11501,15 @@ "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==" }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + }, "aws-sdk": { - "version": "2.1106.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1106.0.tgz", - "integrity": "sha512-3dr0TTR2LI70ST8fa4IgXHpWdH4yv7FLnt9YEndwFQ8ar2EMCMpMU67wwCGBA72GUi0aOg4+lsLjGmCvIq3jug==", + "version": "2.1204.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1204.0.tgz", + "integrity": "sha512-H3dRQBdgzAfZ/e/dfiW44fhQrgAuCfIzWhI5y5J9122caI4uZY6TEUd003UXP4nXq2eMfuPWg0bA/mPwbj8RkA==", "requires": { "buffer": "4.9.2", "events": "1.1.1", @@ -11115,14 +11518,15 @@ "querystring": "0.2.0", "sax": "1.2.1", "url": "0.10.3", - "uuid": "3.3.2", + "util": "^0.12.4", + "uuid": "8.0.0", "xml2js": "0.4.19" }, "dependencies": { "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", + "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==" } } }, @@ -11137,11 +11541,24 @@ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, "axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", "requires": { - "follow-redirects": "^1.14.8" + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + }, + "dependencies": { + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } } }, "babel-plugin-istanbul": { @@ -11360,7 +11777,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -11404,14 +11820,14 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, "chevrotain": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-10.1.2.tgz", - "integrity": "sha512-hvRiQuhhTZxkPMGD/dke+s1EGo8AkKDBU05CcufBO278qgAQSwIC4QyLdHz0CFHVtqVYWjlAS5D1KwvBbaHT+w==", - "requires": { - "@chevrotain/cst-dts-gen": "^10.1.2", - "@chevrotain/gast": "^10.1.2", - "@chevrotain/types": "^10.1.2", - "@chevrotain/utils": "^10.1.2", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-10.3.0.tgz", + "integrity": "sha512-sy3yTBfvNJmxzYOGWaDStZFuA7va5/MXwzBU+XBIol0bR0aYlfGqTjzgedeu32Ki/j7IVyvYAZO2PInBjmmMjg==", + "requires": { + "@chevrotain/cst-dts-gen": "10.3.0", + "@chevrotain/gast": "10.3.0", + "@chevrotain/types": "10.3.0", + "@chevrotain/utils": "10.3.0", "lodash": "4.17.21", "regexp-to-ast": "0.5.0" } @@ -11622,9 +12038,9 @@ } }, "commander": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.1.0.tgz", - "integrity": "sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w==" + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz", + "integrity": "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==" }, "common-ancestor-path": { "version": "1.0.1", @@ -11653,9 +12069,9 @@ } }, "conf": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/conf/-/conf-10.1.2.tgz", - "integrity": "sha512-o9Fv1Mv+6A0JpoayQ8JleNp3hhkbOJP/Re/Q+QqxMPHPkABVsRjQGWZn9A5GcqLiTNC6d89p2PB5ZhHVDSMwyg==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", + "integrity": "sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==", "requires": { "ajv": "^8.6.3", "ajv-formats": "^2.1.1", @@ -11908,6 +12324,7 @@ "version": "3.1.6", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "dev": true, "requires": { "jake": "^10.6.1" } @@ -12465,11 +12882,29 @@ } }, "filelist": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", - "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "requires": { - "minimatch": "^3.0.4" + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "fill-range": { @@ -12534,9 +12969,17 @@ "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" }, "follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } }, "forever-agent": { "version": "0.6.1", @@ -12618,45 +13061,47 @@ } }, "generator-jhipster": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/generator-jhipster/-/generator-jhipster-7.8.1.tgz", - "integrity": "sha512-oiXczv5DTgwLKqU1ni6uH+vXsuWCEyMKEvzpKAX5KxXntofwfGRklcL+qoHKEyWxiMu8+ZugY0exw4x8jFV3qA==", + "version": "7.9.3", + "resolved": "https://registry.npmjs.org/generator-jhipster/-/generator-jhipster-7.9.3.tgz", + "integrity": "sha512-iuhXUA0jHygv9wg3cCK+1xdNchi8x3z56TtTPqIeiDP0VNHL2ddesicL4QwNnHzMafk+J1po7hDEGQqURDUpvA==", "requires": { "@faker-js/faker": "5.5.3", - "aws-sdk": "2.1106.0", - "axios": "0.26.1", + "aws-sdk": "2.1204.0", + "axios": "0.27.2", "chalk": "4.1.2", - "chevrotain": "10.1.2", - "commander": "9.1.0", - "conf": "10.1.2", + "chevrotain": "10.3.0", + "commander": "9.4.0", + "conf": "10.2.0", "debug": "4.3.4", "didyoumean": "1.2.2", - "ejs": "3.1.6", - "glob": "7.2.0", + "ejs": "3.1.8", + "escape-string-regexp": "4.0.0", + "glob": "8.0.3", "insight": "0.11.1", + "isbinaryfile": "4.0.10", "js-yaml": "4.1.0", "lodash": "4.17.21", - "mem-fs-editor": "9.4.0", - "minimatch": "5.0.1", + "mem-fs-editor": "9.5.0", + "minimatch": "5.1.0", "normalize-path": "3.0.0", "os-locale": "5.0.0", "p-queue": "6.6.2", "p-transform": "1.3.0", - "parse-gitignore": "1.0.1", + "parse-gitignore": "2.0.0", "pluralize": "8.0.0", - "prettier": "2.6.2", - "prettier-plugin-java": "1.6.1", - "prettier-plugin-packagejson": "2.2.17", + "prettier": "2.7.1", + "prettier-plugin-java": "1.6.2", + "prettier-plugin-packagejson": "2.2.18", "progress": "2.0.3", "randexp": "0.5.3", - "semver": "7.3.5", + "semver": "7.3.7", "shelljs": "0.8.5", - "simple-git": "3.5.0", + "simple-git": "3.13.0", "then-request": "6.0.2", "uuid": "8.3.2", - "winston": "3.6.0", - "yeoman-environment": "3.9.1", - "yeoman-generator": "5.6.1" + "winston": "3.8.1", + "yeoman-environment": "3.10.0", + "yeoman-generator": "5.7.0" }, "dependencies": { "brace-expansion": { @@ -12667,21 +13112,155 @@ "balanced-match": "^1.0.0" } }, + "ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "requires": { + "jake": "^10.8.5" + } + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "globby": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.0.tgz", + "integrity": "sha512-3LifW9M4joGZasyYPz2A1U74zbC/45fvpXUvO/9KbSa+VV0aGZarWkfdgKyR9sExNP0t0x0ss/UMJpNpcaTspw==", + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "java-parser": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/java-parser/-/java-parser-2.0.2.tgz", + "integrity": "sha512-fwv1eDYE4OIAN+XS7cD8aB7UdQyAh3Uz36ydWqemvnDKXEdLbxq7qIbvsjpSvS1NHFR+r81N7AjGcpnamjVxJw==", + "requires": { + "chevrotain": "6.5.0", + "lodash": "4.17.21" + }, + "dependencies": { + "chevrotain": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-6.5.0.tgz", + "integrity": "sha512-BwqQ/AgmKJ8jcMEjaSnfMybnKMgGTrtDKowfTP3pX4jwVy0kNjRsT/AP6h+wC3+3NC+X8X15VWBnTCQlX+wQFg==", + "requires": { + "regexp-to-ast": "0.4.0" + } + } + } + }, "minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", "requires": { "brace-expansion": "^2.0.1" } }, + "prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==" + }, + "prettier-plugin-java": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/prettier-plugin-java/-/prettier-plugin-java-1.6.2.tgz", + "integrity": "sha512-oVIUOkx50eb9skdRtEIU7MJUsizQ1ZocgXR1w1o8AnieNGpuPI/2pWnpjtbBm9wUG1dHtBGU8cVIr8h+xgzQIg==", + "requires": { + "java-parser": "2.0.2", + "lodash": "4.17.21", + "prettier": "2.3.1" + }, + "dependencies": { + "prettier": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.1.tgz", + "integrity": "sha512-p+vNbgpLjif/+D+DwAZAbndtRrR0md0MwfmOVN9N+2RgyACMT+7tfaRnT+WDPkqnuVwleyuBIG2XBxKDme3hPA==" + } + } + }, + "prettier-plugin-packagejson": { + "version": "2.2.18", + "resolved": "https://registry.npmjs.org/prettier-plugin-packagejson/-/prettier-plugin-packagejson-2.2.18.tgz", + "integrity": "sha512-iBjQ3IY6IayFrQHhXvg+YvKprPUUiIJ04Vr9+EbeQPfwGajznArIqrN33c5bi4JcIvmLHGROIMOm9aYakJj/CA==", + "requires": { + "sort-package-json": "1.57.0" + } + }, + "regexp-to-ast": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.4.0.tgz", + "integrity": "sha512-4qf/7IsIKfSNHQXSwial1IFmfM1Cc/whNBQqRwe0V2stPe7KmN1U0tWQiIx6JiirgSrisjE0eECdNf7Tav1Ntw==" + }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "requires": { "lru-cache": "^6.0.0" } + }, + "sort-package-json": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-1.57.0.tgz", + "integrity": "sha512-FYsjYn2dHTRb41wqnv+uEqCUvBpK3jZcTp9rbz2qDTmel7Pmdtf+i2rLaaPMRZeSVM60V3Se31GyWFpmKs4Q5Q==", + "requires": { + "detect-indent": "^6.0.0", + "detect-newline": "3.1.0", + "git-hooks-list": "1.0.3", + "globby": "10.0.0", + "is-plain-obj": "2.1.0", + "sort-object-keys": "^1.1.3" + } } } }, @@ -12698,14 +13277,14 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" } }, "get-package-type": { @@ -12797,6 +13376,14 @@ "slash": "^3.0.0" } }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", @@ -12846,17 +13433,20 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, "has-tostringtag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, "requires": { "has-symbols": "^1.0.2" } @@ -13144,6 +13734,15 @@ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, "is-arrayish": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", @@ -13180,8 +13779,7 @@ "is-callable": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" }, "is-core-module": { "version": "2.8.1", @@ -13210,6 +13808,14 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -13313,6 +13919,14 @@ "has-symbols": "^1.0.2" } }, + "is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "requires": { + "which-typed-array": "^1.1.11" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -13377,20 +13991,20 @@ } }, "jake": { - "version": "10.8.4", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.4.tgz", - "integrity": "sha512-MtWeTkl1qGsWUtbl/Jsca/8xSoK3x0UmS82sNbjqxxG/de/M/3b1DntdjHgPMC50enlTNwXOCRqPXLLt5cCfZA==", + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", "requires": { - "async": "0.9.x", + "async": "^3.2.3", "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" + "filelist": "^1.0.4", + "minimatch": "^3.1.2" }, "dependencies": { "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" } } }, @@ -13398,6 +14012,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/java-parser/-/java-parser-2.0.1.tgz", "integrity": "sha512-IPzs8LN8drvAZKbgW1MLLsrEeW4TwSy714I6ZHlEGNV6/42S2xRU5zDn3lP6uZQakwi7nyC00T6lZvwEnBujzw==", + "dev": true, "requires": { "chevrotain": "6.5.0", "lodash": "4.17.21" @@ -13407,6 +14022,7 @@ "version": "6.5.0", "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-6.5.0.tgz", "integrity": "sha512-BwqQ/AgmKJ8jcMEjaSnfMybnKMgGTrtDKowfTP3pX4jwVy0kNjRsT/AP6h+wC3+3NC+X8X15VWBnTCQlX+wQFg==", + "dev": true, "requires": { "regexp-to-ast": "0.4.0" } @@ -13414,7 +14030,8 @@ "regexp-to-ast": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.4.0.tgz", - "integrity": "sha512-4qf/7IsIKfSNHQXSwial1IFmfM1Cc/whNBQqRwe0V2stPe7KmN1U0tWQiIx6JiirgSrisjE0eECdNf7Tav1Ntw==" + "integrity": "sha512-4qf/7IsIKfSNHQXSwial1IFmfM1Cc/whNBQqRwe0V2stPe7KmN1U0tWQiIx6JiirgSrisjE0eECdNf7Tav1Ntw==", + "dev": true } } }, @@ -13787,11 +14404,12 @@ } }, "logform": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.2.tgz", - "integrity": "sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.5.1.tgz", + "integrity": "sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==", "requires": { "@colors/colors": "1.5.0", + "@types/triple-beam": "^1.3.2", "fecha": "^4.2.0", "ms": "^2.1.1", "safe-stable-stringify": "^2.3.1", @@ -13887,20 +14505,30 @@ } }, "mem-fs-editor": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-9.4.0.tgz", - "integrity": "sha512-HSSOLSVRrsDdui9I6i96dDtG+oAez/4EB2g4cjSrNhgNQ3M+L57/+22NuPdORSoxvOHjIg/xeOE+C0wwF91D2g==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-9.5.0.tgz", + "integrity": "sha512-7p+bBDqsSisO20YIZf2ntYvST27fFJINn7CKE21XdPUQDcLV62b/yB5sTOooQeEoiZ3rldZQ+4RfONgL/gbRoA==", "requires": { "binaryextensions": "^4.16.0", "commondir": "^1.0.1", "deep-extend": "^0.6.0", - "ejs": "^3.1.6", - "globby": "^11.0.3", + "ejs": "^3.1.8", + "globby": "^11.1.0", "isbinaryfile": "^4.0.8", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "multimatch": "^5.0.0", "normalize-path": "^3.0.0", "textextensions": "^5.13.0" + }, + "dependencies": { + "ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "requires": { + "jake": "^10.8.5" + } + } } }, "merge-stream": { @@ -14891,9 +15519,9 @@ } }, "parse-gitignore": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-gitignore/-/parse-gitignore-1.0.1.tgz", - "integrity": "sha512-UGyowyjtx26n65kdAMWhm6/3uy5uSrpcuH7tt+QEVudiBoVS+eqHxD5kbi9oWVRwj7sCzXqwuM+rUGw7earl6A==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-gitignore/-/parse-gitignore-2.0.0.tgz", + "integrity": "sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==" }, "parse-json": { "version": "5.2.0", @@ -15141,7 +15769,8 @@ "prettier": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", - "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==" + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "dev": true }, "prettier-linter-helpers": { "version": "1.0.0", @@ -15156,6 +15785,7 @@ "version": "1.6.1", "resolved": "https://registry.npmjs.org/prettier-plugin-java/-/prettier-plugin-java-1.6.1.tgz", "integrity": "sha512-kSY17V/P88nILlILb5iMp16TVJy6Ls9Jy4zAzI4+GsEuRDZH5VqRuLd8aJS1ImWxVgRjNBmoFOjxYyxkRM0SRA==", + "dev": true, "requires": { "java-parser": "2.0.1", "lodash": "4.17.21", @@ -15165,7 +15795,8 @@ "prettier": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.1.tgz", - "integrity": "sha512-p+vNbgpLjif/+D+DwAZAbndtRrR0md0MwfmOVN9N+2RgyACMT+7tfaRnT+WDPkqnuVwleyuBIG2XBxKDme3hPA==" + "integrity": "sha512-p+vNbgpLjif/+D+DwAZAbndtRrR0md0MwfmOVN9N+2RgyACMT+7tfaRnT+WDPkqnuVwleyuBIG2XBxKDme3hPA==", + "dev": true } } }, @@ -15173,6 +15804,7 @@ "version": "2.2.17", "resolved": "https://registry.npmjs.org/prettier-plugin-packagejson/-/prettier-plugin-packagejson-2.2.17.tgz", "integrity": "sha512-Z1l3stIdkEzuv5w2ZyLl7mvl1Q/7vr2wjLAaKCQtafPHB7h09dir0tgXK/W5iEc/jP+C4XtvJl/HhiZBvPh4rQ==", + "dev": true, "requires": { "sort-package-json": "1.55.0" } @@ -15627,9 +16259,9 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safe-stable-stringify": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", - "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==" + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==" }, "safer-buffer": { "version": "2.1.2", @@ -15706,13 +16338,13 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "simple-git": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.5.0.tgz", - "integrity": "sha512-fZsaq5nzdxQRhMNs6ESGLpMUHoL5GRP+boWPhq9pMYMKwOGZV2jHOxi8AbFFA2Y/6u4kR99HoULizSbpzaODkA==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.13.0.tgz", + "integrity": "sha512-VYrs3joeHvWGcN3K135RpGpPjm4AHYeOrclwew6LlfHgq6ozQYIW2yMnmjf4PCgVOuSYCbXkdUjyiFawuJz8MA==", "requires": { "@kwsites/file-exists": "^1.1.1", "@kwsites/promise-deferred": "^1.1.1", - "debug": "^4.3.3" + "debug": "^4.3.4" } }, "simple-swizzle": { @@ -15791,6 +16423,7 @@ "version": "1.55.0", "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-1.55.0.tgz", "integrity": "sha512-xhKvRD8WGbALjXQkVuk4/93Z/2NIO+5IzKamdMjN5kn3L+N+M9YWQssmM6GXlQr9v1F7PGWsOJEo1gvXOhM7Mg==", + "dev": true, "requires": { "detect-indent": "^6.0.0", "detect-newline": "3.1.0", @@ -15804,6 +16437,7 @@ "version": "10.0.0", "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.0.tgz", "integrity": "sha512-3LifW9M4joGZasyYPz2A1U74zbC/45fvpXUvO/9KbSa+VV0aGZarWkfdgKyR9sExNP0t0x0ss/UMJpNpcaTspw==", + "dev": true, "requires": { "@types/glob": "^7.1.1", "array-union": "^2.1.0", @@ -16152,9 +16786,9 @@ "integrity": "sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g==" }, "triple-beam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", - "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==" }, "tsconfig-paths": { "version": "3.14.1", @@ -16308,6 +16942,18 @@ "requires-port": "^1.0.0" } }, + "util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -16456,6 +17102,18 @@ } } }, + "which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, "wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -16473,9 +17131,9 @@ } }, "winston": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.6.0.tgz", - "integrity": "sha512-9j8T75p+bcN6D00sF/zjFVmPp+t8KMPB1MzbbzYjeN9VWxdsYnTB40TkbNUEXAmILEfChMvAMgidlX64OG3p6w==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.8.1.tgz", + "integrity": "sha512-r+6YAiCR4uI3N8eQNOg8k3P3PqwAm20cLKlzVD9E66Ch39+LZC+VH1UKf9JemQj2B3QoUHfKD7Poewn0Pr3Y1w==", "requires": { "@dabh/diagnostics": "^2.0.2", "async": "^3.2.3", @@ -16495,9 +17153,9 @@ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -16517,9 +17175,9 @@ }, "dependencies": { "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -16679,9 +17337,9 @@ } }, "yeoman-environment": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-3.9.1.tgz", - "integrity": "sha512-IdRnbQt/DSOSnao0oD9c+or1X2UrL+fx9eC0O7Lq/MGZV68nhv9k77MqG+hEAySPSlyCpocVlhfQwV62hczk5Q==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-3.10.0.tgz", + "integrity": "sha512-sYtSxBK9daq21QjoskJTHKLQ1xEsRPURkmFV/aM8HS8ZlQVzwx57Rz1zCs8EGPhK4vqsmTE8H92Gp1jg1fT3EA==", "requires": { "@npmcli/arborist": "^4.0.4", "are-we-there-yet": "^2.0.0", @@ -16701,6 +17359,7 @@ "grouped-queue": "^2.0.0", "inquirer": "^8.0.0", "is-scoped": "^2.1.0", + "isbinaryfile": "^4.0.10", "lodash": "^4.17.10", "log-symbols": "^4.0.0", "mem-fs": "^1.2.0 || ^2.0.0", @@ -16904,14 +17563,14 @@ } }, "yeoman-generator": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/yeoman-generator/-/yeoman-generator-5.6.1.tgz", - "integrity": "sha512-XllgFvmDEwoPMq2rKtL4/N52WlINJW6a3I3XtlCrMb3/dqO5dW0nPNgR0L3IIUIdf9y1EHb1ZFMs2Qp3ZEEFxg==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/yeoman-generator/-/yeoman-generator-5.7.0.tgz", + "integrity": "sha512-z9ZwgKoDOd+llPDCwn8Ax2l4In5FMhlslxdeByW4AMxhT+HbTExXKEAahsClHSbwZz1i5OzRwLwRIUdOJBr5Bw==", "requires": { "chalk": "^4.1.0", "dargs": "^7.0.0", "debug": "^4.1.1", - "execa": "^4.1.0", + "execa": "^5.1.1", "github-username": "^6.0.0", "lodash": "^4.17.11", "minimist": "^1.2.5", @@ -16923,6 +17582,32 @@ "text-table": "^0.2.0" }, "dependencies": { + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + }, "semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", diff --git a/package.json b/package.json index d95d9292..3422c284 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ }, "dependencies": { "chalk": "4.1.2", - "generator-jhipster": "7.8.1", + "generator-jhipster": "7.9.3", "os": "^0.1.2" }, "devDependencies": {