generator-jhipster 8.10.0 → 8.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cli/cli.mjs +0 -13
- package/dist/cli/environment-builder.mjs +3 -1
- package/dist/generators/angular/resources/package.json +18 -18
- package/dist/generators/angular/templates/README.md.jhi.client.angular.ejs +1 -1
- package/dist/generators/angular/templates/eslint.config.js.jhi.angular.ejs +4 -6
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/core/tracker/tracker.service.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.html.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.html.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort.service.ts.ejs +3 -3
- package/dist/generators/base/api.d.ts +3 -1
- package/dist/generators/base/shared-data.js +1 -0
- package/dist/generators/base/support/contents.d.ts +10 -1
- package/dist/generators/base/support/contents.js +9 -0
- package/dist/generators/base/support/index.d.ts +1 -0
- package/dist/generators/base/support/index.js +1 -0
- package/dist/generators/base/support/needles.js +2 -6
- package/dist/generators/base/support/os.d.ts +1 -0
- package/dist/generators/base/support/os.js +20 -0
- package/dist/generators/base/support/write-files.d.ts +18 -0
- package/dist/generators/base/support/write-files.js +0 -26
- package/dist/generators/base-core/generator.js +7 -4
- package/dist/generators/bootstrap/generator.js +31 -2
- package/dist/generators/bootstrap/support/auto-crlf-transform.js +2 -2
- package/dist/generators/bootstrap-application-base/generator.js +1 -3
- package/dist/generators/client/resources/package.json +4 -4
- package/dist/generators/common/resources/package.json +1 -1
- package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/logout.cy.ts.ejs +11 -3
- package/dist/generators/cypress/templates/src/test/javascript/cypress/support/oauth2.ts.ejs +4 -4
- package/dist/generators/generate-blueprint/resources/package.json +2 -2
- package/dist/generators/generator-constants.d.ts +1 -1
- package/dist/generators/generator-constants.js +1 -1
- package/dist/generators/gradle/templates/gradle/wrapper/gradle-wrapper.properties +1 -1
- package/dist/generators/init/resources/.node-version +1 -1
- package/dist/generators/java/generators/graalvm/internal/constants.d.ts +1 -1
- package/dist/generators/java/generators/graalvm/internal/constants.js +1 -1
- package/dist/generators/java/generators/node/generator.js +2 -1
- package/dist/generators/javascript/generators/eslint/templates/eslint.config.js.jhi.ejs +8 -0
- package/dist/generators/javascript/resources/package.json +3 -3
- package/dist/generators/languages/support/languages.js +1 -0
- package/dist/generators/languages/templates/entity/i18n/entity_he.json.ejs +78 -0
- package/dist/generators/languages/templates/src/main/resources/i18n/messages_he.properties.ejs +41 -0
- package/dist/generators/languages/templates/src/main/webapp/i18n/he/activate.json.ejs +27 -0
- package/dist/generators/languages/templates/src/main/webapp/i18n/he/configuration.json +11 -0
- package/dist/generators/languages/templates/src/main/webapp/i18n/he/error.json +15 -0
- package/dist/generators/languages/templates/src/main/webapp/i18n/he/gateway.json +16 -0
- package/dist/generators/languages/templates/src/main/webapp/i18n/he/global.json.ejs +172 -0
- package/dist/generators/languages/templates/src/main/webapp/i18n/he/health.json.ejs +75 -0
- package/dist/generators/languages/templates/src/main/webapp/i18n/he/home.json.ejs +20 -0
- package/dist/generators/languages/templates/src/main/webapp/i18n/he/login.json +20 -0
- package/dist/generators/languages/templates/src/main/webapp/i18n/he/logs.json +12 -0
- package/dist/generators/languages/templates/src/main/webapp/i18n/he/metrics.json +103 -0
- package/dist/generators/languages/templates/src/main/webapp/i18n/he/password.json +13 -0
- package/dist/generators/languages/templates/src/main/webapp/i18n/he/register.json +25 -0
- package/dist/generators/languages/templates/src/main/webapp/i18n/he/reset.json.ejs +45 -0
- package/dist/generators/languages/templates/src/main/webapp/i18n/he/sessions.json +16 -0
- package/dist/generators/languages/templates/src/main/webapp/i18n/he/settings.json +33 -0
- package/dist/generators/languages/templates/src/main/webapp/i18n/he/tracker.json +13 -0
- package/dist/generators/languages/templates/src/main/webapp/i18n/he/user-management.json +32 -0
- package/dist/generators/languages/templates/src/test/resources/i18n/messages_he.properties.ejs +4 -0
- package/dist/generators/react/resources/package.json +23 -23
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-delete-dialog.tsx.ejs +2 -1
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.reducer.ts.ejs +4 -4
- package/dist/generators/react/templates/src/main/webapp/app/modules/administration/administration.reducer.spec.ts.ejs +0 -6
- package/dist/generators/react/templates/src/main/webapp/app/shared/reducers/application-profile.spec.ts.ejs +0 -6
- package/dist/generators/react/templates/src/main/webapp/app/shared/reducers/locale.spec.ts.ejs +0 -47
- package/dist/generators/react/templates/src/main/webapp/app/shared/reducers/reducer.utils.ts.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/shared/util/entity-utils.ts.ejs +1 -1
- package/dist/generators/server/resources/Dockerfile +11 -11
- package/dist/generators/server/resources/gradle/libs.versions.toml +6 -6
- package/dist/generators/server/resources/pom.xml +7 -7
- package/dist/generators/spring-boot/generator.js +2 -3
- package/dist/generators/spring-boot/resources/spring-boot-dependencies.pom +115 -105
- package/dist/generators/spring-boot/templates/src/main/java/_package_/config/SecurityJwtConfiguration.java.ejs +0 -1
- package/dist/generators/spring-boot/templates/src/main/java/_package_/security/DomainUserDetailsService.java.ejs +61 -5
- package/dist/generators/spring-boot/templates/src/main/java/_package_/security/SecurityUtils.java.ejs +29 -1
- package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/AuthenticateController.java.ejs +11 -5
- package/dist/generators/spring-boot/templates/src/test/java/_package_/security/SecurityUtilsUnitTest_imperative.java.ejs +35 -11
- package/dist/generators/spring-boot/templates/src/test/java/_package_/security/SecurityUtilsUnitTest_reactive.java.ejs +35 -6
- package/dist/generators/spring-boot/templates/src/test/java/_package_/security/jwt/JwtAuthenticationTestUtils.java.ejs +3 -2
- package/dist/generators/spring-cache/resources/gradle/libs.versions.toml +1 -1
- package/dist/generators/vue/cleanup.js +7 -1
- package/dist/generators/vue/files-vue.js +3 -8
- package/dist/generators/vue/resources/package.json +20 -20
- package/dist/generators/vue/templates/src/main/webapp/app/account/account.service.ts.ejs +9 -9
- package/dist/generators/vue/templates/src/main/webapp/app/account/activate/activate.component.spec.ts.ejs +21 -7
- package/dist/generators/vue/templates/src/main/webapp/app/account/activate/activate.component.ts.ejs +23 -9
- package/dist/generators/vue/templates/src/main/webapp/app/account/activate/activate.service.ts.ejs +1 -1
- package/dist/generators/vue/templates/src/main/webapp/app/account/activate/activate.vue.ejs +1 -1
- package/dist/generators/vue/templates/src/main/webapp/app/account/change-password/change-password.vue.ejs +1 -1
- package/dist/generators/vue/templates/src/main/webapp/app/account/login-form/login-form.component.spec.ts.ejs +22 -10
- package/dist/generators/vue/templates/src/main/webapp/app/account/login-form/login-form.component.ts.ejs +24 -5
- package/dist/generators/vue/templates/src/main/webapp/app/account/login-modal.ts.ejs +38 -0
- package/dist/generators/vue/templates/src/main/webapp/app/account/login.service.spec.ts.ejs +0 -4
- package/dist/generators/vue/templates/src/main/webapp/app/account/login.service.ts.ejs +3 -25
- package/dist/generators/vue/templates/src/main/webapp/app/account/register/register.component.spec.ts.ejs +24 -8
- package/dist/generators/vue/templates/src/main/webapp/app/account/register/register.component.ts.ejs +23 -9
- package/dist/generators/vue/templates/src/main/webapp/app/account/register/register.service.ts.ejs +1 -1
- package/dist/generators/vue/templates/src/main/webapp/app/account/register/register.vue.ejs +1 -1
- package/dist/generators/vue/templates/src/main/webapp/app/account/reset-password/finish/reset-password-finish.component.spec.ts.ejs +20 -4
- package/dist/generators/vue/templates/src/main/webapp/app/account/reset-password/finish/reset-password-finish.component.ts.ejs +23 -13
- package/dist/generators/vue/templates/src/main/webapp/app/account/reset-password/finish/reset-password-finish.vue.ejs +1 -1
- package/dist/generators/vue/templates/src/main/webapp/app/account/settings/settings.vue.ejs +1 -1
- package/dist/generators/vue/templates/src/main/webapp/app/admin/configuration/configuration.service.ts.ejs +2 -2
- package/dist/generators/vue/templates/src/main/webapp/app/admin/gateway/gateway.service.ts.ejs +1 -1
- package/dist/generators/vue/templates/src/main/webapp/app/admin/health/health.service.ts.ejs +10 -10
- package/dist/generators/vue/templates/src/main/webapp/app/admin/logs/logs.service.ts.ejs +2 -2
- package/dist/generators/vue/templates/src/main/webapp/app/admin/metrics/metrics-modal.vue.ejs +2 -2
- package/dist/generators/vue/templates/src/main/webapp/app/admin/metrics/metrics.service.ts.ejs +2 -2
- package/dist/generators/vue/templates/src/main/webapp/app/admin/tracker/tracker.service.ts.ejs +5 -5
- package/dist/generators/vue/templates/src/main/webapp/app/admin/user-management/user-management.service.ts.ejs +6 -6
- package/dist/generators/vue/templates/src/main/webapp/app/app.component.ts.ejs +29 -7
- package/dist/generators/vue/templates/src/main/webapp/app/app.vue.ejs +19 -1
- package/dist/generators/vue/templates/src/main/webapp/app/core/error/error.component.spec.ts.ejs +66 -51
- package/dist/generators/vue/templates/src/main/webapp/app/core/error/error.component.ts.ejs +30 -8
- package/dist/generators/vue/templates/src/main/webapp/app/core/home/home.component.spec.ts.ejs +41 -11
- package/dist/generators/vue/templates/src/main/webapp/app/core/home/home.component.ts.ejs +10 -11
- package/dist/generators/vue/templates/src/main/webapp/app/core/home/home.vue.ejs +2 -2
- package/dist/generators/vue/templates/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.spec.ts.ejs +43 -16
- package/dist/generators/vue/templates/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +14 -9
- package/dist/generators/vue/templates/src/main/webapp/app/core/jhi-navbar/jhi-navbar.vue.ejs +1 -1
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.service.ts.ejs +7 -7
- package/dist/generators/vue/templates/src/main/webapp/app/entities/user/user.service.ts.ejs +1 -1
- package/dist/generators/vue/templates/src/main/webapp/app/locale/translation.service.ts.ejs +5 -5
- package/dist/generators/vue/templates/src/main/webapp/app/main.ts.ejs +18 -14
- package/dist/generators/vue/templates/src/main/webapp/app/shared/alert/alert.service.ts.ejs +4 -4
- package/dist/lib/testing/apply-patch-to-template.d.ts +13 -0
- package/dist/lib/testing/apply-patch-to-template.js +90 -0
- package/package.json +26 -26
|
@@ -9,12 +9,12 @@
|
|
|
9
9
|
|
|
10
10
|
<div>
|
|
11
11
|
<div class="alert alert-success" v-if="authenticated">
|
|
12
|
-
<span v-if="username" v-text="t$('home.logged.message', { username
|
|
12
|
+
<span v-if="username" v-text="t$('home.logged.message', { username })">You are logged in as user "{{ username }}"</span>
|
|
13
13
|
</div>
|
|
14
14
|
|
|
15
15
|
<div class="alert alert-warning" v-if="!authenticated">
|
|
16
16
|
<span v-text="t$('global.messages.info.authenticated.prefix')">If you want to </span>
|
|
17
|
-
<a class="alert-link" @click="
|
|
17
|
+
<a class="alert-link" @click="<% if (authenticationTypeOauth2) { %>login<% } else { %>showLogin<% } %>()" v-text="t$('global.messages.info.authenticated.link')">sign in</a
|
|
18
18
|
><span v-html="t$('global.messages.info.authenticated.suffix')"
|
|
19
19
|
>, you can try the default accounts:<br />- Administrator (login="admin" and password="admin") <br />- User (login="user" and
|
|
20
20
|
password="user").</span
|
|
@@ -1,14 +1,36 @@
|
|
|
1
|
+
<%#
|
|
2
|
+
Copyright 2013-2025 the original author or authors from the JHipster project.
|
|
3
|
+
|
|
4
|
+
This file is part of the JHipster project, see https://www.jhipster.tech/
|
|
5
|
+
for more information.
|
|
6
|
+
|
|
7
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
you may not use this file except in compliance with the License.
|
|
9
|
+
You may obtain a copy of the License at
|
|
10
|
+
|
|
11
|
+
https://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
|
|
13
|
+
Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
See the License for the specific language governing permissions and
|
|
17
|
+
limitations under the License.
|
|
18
|
+
-%>
|
|
1
19
|
import { vitest } from 'vitest';
|
|
2
20
|
import { computed } from 'vue';
|
|
3
21
|
import { shallowMount } from '@vue/test-utils';
|
|
4
|
-
import JhiNavbar from './jhi-navbar.vue';
|
|
5
22
|
import { type Router } from 'vue-router';
|
|
6
23
|
import { createTestingPinia } from '@pinia/testing';
|
|
7
24
|
|
|
8
25
|
import { useStore } from '@/store';
|
|
9
26
|
import { createRouter } from '@/router';
|
|
10
|
-
|
|
11
|
-
|
|
27
|
+
<%_ if (authenticationUsesCsrf) { _%>
|
|
28
|
+
import type LoginService from '@/account/login.service';
|
|
29
|
+
<%_ } _%>
|
|
30
|
+
<%_ if (generateUserManagement) { _%>
|
|
31
|
+
import { useLoginModal } from '@/account/login-modal';
|
|
32
|
+
<%_ } _%>
|
|
33
|
+
import JhiNavbar from './jhi-navbar.vue';
|
|
12
34
|
<%_ if (applicationTypeGateway && microfrontend) { _%>
|
|
13
35
|
|
|
14
36
|
vitest.mock('@module-federation/enhanced/runtime', () => ({
|
|
@@ -23,7 +45,12 @@ const store = useStore();
|
|
|
23
45
|
|
|
24
46
|
describe('JhiNavbar', () => {
|
|
25
47
|
let jhiNavbar: JhiNavbarComponentType;
|
|
48
|
+
<%_ if (authenticationUsesCsrf) { _%>
|
|
26
49
|
let loginService: LoginService;
|
|
50
|
+
<%_ } _%>
|
|
51
|
+
<%_ if (generateUserManagement) { _%>
|
|
52
|
+
let login: ReturnType<typeof useLoginModal>;
|
|
53
|
+
<%_ } _%>
|
|
27
54
|
const accountService = { hasAnyAuthorityAndCheckAuth: vitest.fn().mockImplementation(() => Promise.resolve(true)) };
|
|
28
55
|
<%_ if (enableTranslation) { _%>
|
|
29
56
|
const changeLanguage = vitest.fn();
|
|
@@ -32,14 +59,7 @@ describe('JhiNavbar', () => {
|
|
|
32
59
|
|
|
33
60
|
beforeEach(() => {
|
|
34
61
|
router = createRouter();
|
|
35
|
-
<%_ if (
|
|
36
|
-
loginService = new LoginService({ emit: vitest.fn() });
|
|
37
|
-
vitest.spyOn(loginService, 'openLogin');
|
|
38
|
-
<%_ } else if (authenticationTypeSession) { _%>
|
|
39
|
-
loginService = new LoginService({ emit: vitest.fn() });
|
|
40
|
-
vitest.spyOn(loginService, 'openLogin');
|
|
41
|
-
vitest.spyOn(loginService, 'logout');
|
|
42
|
-
<%_ } else if (authenticationTypeOauth2) { _%>
|
|
62
|
+
<%_ if (authenticationUsesCsrf) { _%>
|
|
43
63
|
loginService = { login: vitest.fn(), logout: vitest.fn() };
|
|
44
64
|
<%_ } _%>
|
|
45
65
|
const wrapper = shallowMount(JhiNavbar, {
|
|
@@ -57,7 +77,9 @@ describe('JhiNavbar', () => {
|
|
|
57
77
|
'b-navbar-brand': true,
|
|
58
78
|
},
|
|
59
79
|
provide: {
|
|
80
|
+
<%_ if (authenticationUsesCsrf) { _%>
|
|
60
81
|
loginService,
|
|
82
|
+
<%_ } _%>
|
|
61
83
|
currentLanguage: computed(() => 'foo'),
|
|
62
84
|
<%_ if (enableTranslation) { _%>
|
|
63
85
|
changeLanguage,
|
|
@@ -67,6 +89,9 @@ describe('JhiNavbar', () => {
|
|
|
67
89
|
},
|
|
68
90
|
});
|
|
69
91
|
jhiNavbar = wrapper.vm;
|
|
92
|
+
<%_ if (generateUserManagement) { _%>
|
|
93
|
+
login = useLoginModal();
|
|
94
|
+
<%_ } _%>
|
|
70
95
|
});
|
|
71
96
|
|
|
72
97
|
it('should not have user data set', () => {
|
|
@@ -89,11 +114,12 @@ describe('JhiNavbar', () => {
|
|
|
89
114
|
});
|
|
90
115
|
|
|
91
116
|
it('should use login service', () => {
|
|
92
|
-
jhiNavbar
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
<%_ } else { _%>
|
|
117
|
+
jhiNavbar.<% if (authenticationTypeOauth2) { %>login<% } else { %>showLogin<% } %>();
|
|
118
|
+
|
|
119
|
+
<%_ if (authenticationTypeOauth2) { _%>
|
|
96
120
|
expect(loginService.login).toHaveBeenCalled();
|
|
121
|
+
<%_ } else { _%>
|
|
122
|
+
expect(login.showLogin).toHaveBeenCalled();
|
|
97
123
|
<%_ } _%>
|
|
98
124
|
});
|
|
99
125
|
|
|
@@ -108,9 +134,10 @@ describe('JhiNavbar', () => {
|
|
|
108
134
|
<%_ if (authenticationTypeOauth2) { _%>
|
|
109
135
|
const logoutUrl = '/to-match';
|
|
110
136
|
(loginService.logout as any).mockReturnValue(Promise.resolve({ data: { logoutUrl } }));
|
|
111
|
-
<%_ } else if (
|
|
137
|
+
<%_ } else if (authenticationUsesCsrf) { _%>
|
|
112
138
|
(loginService.logout as any).mockReturnValue(Promise.resolve({}));
|
|
113
139
|
<%_ } _%>
|
|
140
|
+
|
|
114
141
|
await jhiNavbar.logout();
|
|
115
142
|
|
|
116
143
|
<%_ if (!authenticationTypeJwt) { _%>
|
|
@@ -2,7 +2,12 @@ import { computed, <% if (applicationTypeGateway && microfrontend) { %>defineAsy
|
|
|
2
2
|
<%_ if (enableTranslation) { _%>
|
|
3
3
|
import { useI18n } from 'vue-i18n';
|
|
4
4
|
<%_ } _%>
|
|
5
|
+
<%_ if (authenticationUsesCsrf) { _%>
|
|
5
6
|
import type LoginService from '@/account/login.service';
|
|
7
|
+
<%_ } %>
|
|
8
|
+
<%_ if (generateUserManagement) { %>
|
|
9
|
+
import { useLoginModal } from '@/account/login-modal';
|
|
10
|
+
<%_ } _%>
|
|
6
11
|
import type AccountService from '@/account/account.service';
|
|
7
12
|
<%_ if (enableTranslation) { _%>
|
|
8
13
|
import languages from '@/shared/config/languages';
|
|
@@ -30,7 +35,15 @@ export default defineComponent({
|
|
|
30
35
|
<%_ } _%>
|
|
31
36
|
},
|
|
32
37
|
setup() {
|
|
38
|
+
<%_ if (authenticationUsesCsrf) { _%>
|
|
33
39
|
const loginService = inject<LoginService>('loginService');
|
|
40
|
+
<%_ if (authenticationTypeOauth2) { _%>
|
|
41
|
+
const { login } = loginService;
|
|
42
|
+
<%_ } %>
|
|
43
|
+
<%_ } %>
|
|
44
|
+
<%_ if (generateUserManagement) { %>
|
|
45
|
+
const { showLogin } = useLoginModal();
|
|
46
|
+
<%_ } _%>
|
|
34
47
|
const accountService = inject<AccountService>('accountService');
|
|
35
48
|
const currentLanguage = inject('currentLanguage', () => computed(() => navigator.language ?? '<%- nativeLanguage %>'), true);
|
|
36
49
|
<%_ if (enableTranslation) { _%>
|
|
@@ -51,14 +64,6 @@ export default defineComponent({
|
|
|
51
64
|
const inProduction = computed(() => store.activeProfiles.indexOf('prod') > -1);
|
|
52
65
|
const authenticated = computed(() => store.authenticated);
|
|
53
66
|
|
|
54
|
-
const openLogin = () => {
|
|
55
|
-
<%_ if (!authenticationTypeOauth2) { _%>
|
|
56
|
-
loginService.openLogin();
|
|
57
|
-
<%_ } else { %>
|
|
58
|
-
loginService.login();
|
|
59
|
-
<%_ } _%>
|
|
60
|
-
};
|
|
61
|
-
|
|
62
67
|
const subIsActive = (input: string | string[]) => {
|
|
63
68
|
const paths = Array.isArray(input) ? input : [input];
|
|
64
69
|
return paths.some(path => {
|
|
@@ -95,7 +100,7 @@ export default defineComponent({
|
|
|
95
100
|
logout,
|
|
96
101
|
subIsActive,
|
|
97
102
|
accountService,
|
|
98
|
-
|
|
103
|
+
<% if (authenticationTypeOauth2) { %>login<% } else { %>showLogin<% } %>,
|
|
99
104
|
<%_ if (enableTranslation) { _%>
|
|
100
105
|
changeLanguage,
|
|
101
106
|
languages: languages(),
|
package/dist/generators/vue/templates/src/main/webapp/app/core/jhi-navbar/jhi-navbar.vue.ejs
CHANGED
|
@@ -152,7 +152,7 @@
|
|
|
152
152
|
<font-awesome-icon icon="sign-out-alt" />
|
|
153
153
|
<span v-text="t$('global.menu.account.logout')">Sign out</span>
|
|
154
154
|
</b-dropdown-item>
|
|
155
|
-
<b-dropdown-item data-cy="login" v-if="!authenticated" @click="
|
|
155
|
+
<b-dropdown-item data-cy="login" v-if="!authenticated" @click="showLogin()" id="login" active-class="active">
|
|
156
156
|
<font-awesome-icon icon="sign-in-alt" />
|
|
157
157
|
<span v-text="t$('global.menu.account.login')">Sign in</span>
|
|
158
158
|
</b-dropdown-item>
|
|
@@ -11,7 +11,7 @@ const baseSearchApiUrl = '<%= entityApi %>api/<%= entityApiUrl %>/_search?query=
|
|
|
11
11
|
|
|
12
12
|
export default class <%= entityAngularName %>Service {
|
|
13
13
|
<%_ if (searchEngineAny) { _%>
|
|
14
|
-
|
|
14
|
+
search(query<% if (!paginationNo) { %>, paginationQuery<% } %>) : Promise<any> {
|
|
15
15
|
return new Promise<any>((resolve, reject) => {
|
|
16
16
|
axios.get(`${baseSearchApiUrl}${query}<% if (!paginationNo) { %>&${buildPaginationQueryOpts(paginationQuery)}<% } %>`).then(res => {
|
|
17
17
|
resolve(<% if (!paginationNo) { %>res<% } else { %>res.data<% } %>);
|
|
@@ -20,7 +20,7 @@ export default class <%= entityAngularName %>Service {
|
|
|
20
20
|
}
|
|
21
21
|
<%_ } _%>
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
find(<%= primaryKey.name %>: <%- primaryKey.tsType %>) : Promise<I<%= entityAngularName %>> {
|
|
24
24
|
return new Promise<I<%= entityAngularName %>>((resolve, reject) => {
|
|
25
25
|
axios.get(`${baseApiUrl}/${<%= primaryKey.name %>}`).then(res => {
|
|
26
26
|
resolve(res.data);
|
|
@@ -28,7 +28,7 @@ export default class <%= entityAngularName %>Service {
|
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
retrieve(<% if (!paginationNo) { %>paginationQuery?: any<% } %>) : Promise<any> {
|
|
32
32
|
return new Promise<any>((resolve, reject) => {
|
|
33
33
|
axios.get(baseApiUrl<% if (!paginationNo) { %> + `?${buildPaginationQueryOpts(paginationQuery)}` <% } %>).then(res => {
|
|
34
34
|
resolve(res);
|
|
@@ -37,7 +37,7 @@ export default class <%= entityAngularName %>Service {
|
|
|
37
37
|
}
|
|
38
38
|
<%_ if (!readOnly) { _%>
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
delete(<%= primaryKey.name %>: <%- primaryKey.tsType %>) : Promise<any> {
|
|
41
41
|
return new Promise<any>((resolve, reject) => {
|
|
42
42
|
axios.delete(`${baseApiUrl}/${<%= primaryKey.name %>}`).then(res => {
|
|
43
43
|
resolve(res);
|
|
@@ -45,7 +45,7 @@ export default class <%= entityAngularName %>Service {
|
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
create(entity: I<%= entityAngularName %>) : Promise<I<%= entityAngularName %>> {
|
|
49
49
|
return new Promise<I<%= entityAngularName %>>((resolve, reject) => {
|
|
50
50
|
axios.post(`${baseApiUrl}`, entity).then(res => {
|
|
51
51
|
resolve(res.data);
|
|
@@ -53,7 +53,7 @@ export default class <%= entityAngularName %>Service {
|
|
|
53
53
|
});
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
update(entity: I<%= entityAngularName %>) : Promise<I<%= entityAngularName %>> {
|
|
57
57
|
return new Promise<I<%= entityAngularName %>>((resolve, reject) => {
|
|
58
58
|
axios.put(`${baseApiUrl}/${entity.<%= primaryKey.name %>}`, entity).then(res => {
|
|
59
59
|
resolve(res.data);
|
|
@@ -61,7 +61,7 @@ export default class <%= entityAngularName %>Service {
|
|
|
61
61
|
});
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
partialUpdate(entity: I<%= entityAngularName %>) : Promise<I<%= entityAngularName %>> {
|
|
65
65
|
return new Promise<I<%= entityAngularName %>>((resolve, reject) => {
|
|
66
66
|
axios.patch(`${baseApiUrl}/${entity.<%= primaryKey.name %>}`, entity).then(res => {
|
|
67
67
|
resolve(res.data);
|
|
@@ -12,7 +12,7 @@ export default class TranslationService {
|
|
|
12
12
|
}
|
|
13
13
|
<%_ if (microfrontend) { _%>
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
loadTranslations({ currentLanguage, urlPrefix, hash }: { currentLanguage: string; urlPrefix: string; hash: string }) {
|
|
16
16
|
if (!this.i18n) return;
|
|
17
17
|
axios.get(`${urlPrefix}i18n/${currentLanguage}.json?_=${hash}`).then((res: any) => {
|
|
18
18
|
if (res.data) {
|
|
@@ -22,7 +22,7 @@ export default class TranslationService {
|
|
|
22
22
|
}
|
|
23
23
|
<%_ } _%>
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
async refreshTranslation(newLanguage: string) {
|
|
26
26
|
if (this.i18n && !this.i18n.messages[newLanguage]) {
|
|
27
27
|
<%_ if (microfrontend) { _%>
|
|
28
28
|
const res = await axios.get(`i18n/${newLanguage}.json?_=${I18N_HASH}`);
|
|
@@ -34,7 +34,7 @@ export default class TranslationService {
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
setLocale(lang: string) {
|
|
38
38
|
dayjs.locale(lang);
|
|
39
39
|
this.i18n.locale.value = lang;
|
|
40
40
|
axios.defaults.headers.common['Accept-Language'] = lang;
|
|
@@ -54,11 +54,11 @@ export default class TranslationService {
|
|
|
54
54
|
}
|
|
55
55
|
<%_ } _%>
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
isLanguageSupported(lang: string) {
|
|
58
58
|
return Boolean(this.languages[lang]);
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
|
|
61
|
+
getLocalStoreLanguage(): string | null {
|
|
62
62
|
return localStorage.getItem('currentLanguage');
|
|
63
63
|
}
|
|
64
64
|
}
|
|
@@ -11,12 +11,17 @@ import { setupAxiosInterceptors } from '@/shared/config/axios-interceptor';
|
|
|
11
11
|
|
|
12
12
|
import App from './app.vue';
|
|
13
13
|
import router<% if (applicationTypeGateway && microfrontend) { %>, { lazyRoutes }<% } %> from './router';
|
|
14
|
-
import { initFortAwesome<% if (enableTranslation) { %>, initI18N<% } %> } from '
|
|
15
|
-
import { initBootstrapVue } from '
|
|
16
|
-
import JhiItemCountComponent from '
|
|
17
|
-
import JhiSortIndicatorComponent from '
|
|
18
|
-
|
|
19
|
-
import
|
|
14
|
+
import { initFortAwesome<% if (enableTranslation) { %>, initI18N<% } %> } from '@/shared/config/config';
|
|
15
|
+
import { initBootstrapVue } from '@/shared/config/config-bootstrap-vue';
|
|
16
|
+
import JhiItemCountComponent from '@/shared/jhi-item-count.vue';
|
|
17
|
+
import JhiSortIndicatorComponent from '@/shared/sort/jhi-sort-indicator.vue';
|
|
18
|
+
<%_ if (authenticationUsesCsrf) { _%>
|
|
19
|
+
import LoginService from '@/account/login.service';
|
|
20
|
+
<%_ } _%>
|
|
21
|
+
<%_ if (generateUserManagement) { _%>
|
|
22
|
+
import { useLoginModal } from '@/account/login-modal';
|
|
23
|
+
<%_ } _%>
|
|
24
|
+
import AccountService from '@/account/account.service';
|
|
20
25
|
|
|
21
26
|
import '../content/scss/global.scss';
|
|
22
27
|
import '../content/scss/vendor.scss';
|
|
@@ -85,14 +90,12 @@ const i18n = initI18N();
|
|
|
85
90
|
const app = createApp({
|
|
86
91
|
compatConfig: { MODE: 3 },
|
|
87
92
|
components: { App },
|
|
88
|
-
template: '<App/>',
|
|
89
|
-
<%_ if (!authenticationTypeOauth2) { _%>
|
|
90
|
-
setup(_props, { emit }) {
|
|
91
|
-
const loginService = new LoginService({ emit });
|
|
92
|
-
provide('loginService', loginService);
|
|
93
|
-
<%_ } else { _%>
|
|
94
93
|
setup() {
|
|
94
|
+
<%_ if (authenticationUsesCsrf) { _%>
|
|
95
95
|
provide('loginService', new LoginService());
|
|
96
|
+
<%_ } _%>
|
|
97
|
+
<%_ if (generateUserManagement) { _%>
|
|
98
|
+
const { hideLogin, showLogin } = useLoginModal();
|
|
96
99
|
<%_ } _%>
|
|
97
100
|
const store = useStore();
|
|
98
101
|
const accountService = new AccountService(store);
|
|
@@ -143,7 +146,7 @@ const app = createApp({
|
|
|
143
146
|
router.beforeResolve(async (to, from, next) => {
|
|
144
147
|
<%_ if (!authenticationTypeOauth2) { _%>
|
|
145
148
|
// Make sure login modal is closed
|
|
146
|
-
|
|
149
|
+
hideLogin();
|
|
147
150
|
|
|
148
151
|
<%_ } _%>
|
|
149
152
|
if (!store.authenticated) {
|
|
@@ -173,7 +176,7 @@ const app = createApp({
|
|
|
173
176
|
<%_ if (authenticationTypeOauth2) { _%>
|
|
174
177
|
window.location.reload();
|
|
175
178
|
<%_ } else { _%>
|
|
176
|
-
|
|
179
|
+
showLogin();
|
|
177
180
|
<%_ } _%>
|
|
178
181
|
return;
|
|
179
182
|
}
|
|
@@ -205,6 +208,7 @@ const app = createApp({
|
|
|
205
208
|
provide('microfrontendI18n', false);
|
|
206
209
|
<%_ } _%>
|
|
207
210
|
},
|
|
211
|
+
template: '<App/>',
|
|
208
212
|
});
|
|
209
213
|
|
|
210
214
|
initFortAwesome(app);
|
|
@@ -43,7 +43,7 @@ export default class AlertService {
|
|
|
43
43
|
<%_ } _%>
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
showInfo(toastMessage: string, toastOptions?: any) {
|
|
47
47
|
this.bvToast.toast(toastMessage, {
|
|
48
48
|
toaster: 'b-toaster-top-center',
|
|
49
49
|
title: 'Info',
|
|
@@ -54,7 +54,7 @@ export default class AlertService {
|
|
|
54
54
|
});
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
showSuccess(toastMessage: string) {
|
|
58
58
|
this.bvToast.toast(toastMessage, {
|
|
59
59
|
toaster: 'b-toaster-top-center',
|
|
60
60
|
title: 'Success',
|
|
@@ -64,7 +64,7 @@ export default class AlertService {
|
|
|
64
64
|
});
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
showError(toastMessage: string) {
|
|
68
68
|
this.bvToast.toast(toastMessage, {
|
|
69
69
|
toaster: 'b-toaster-top-center',
|
|
70
70
|
title: 'Error',
|
|
@@ -74,7 +74,7 @@ export default class AlertService {
|
|
|
74
74
|
});
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
|
|
77
|
+
showHttpError(httpErrorResponse: any) {
|
|
78
78
|
let errorMessage: string | null = null;
|
|
79
79
|
switch (httpErrorResponse.status) {
|
|
80
80
|
case 0:
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
type ApplyOptions = {
|
|
2
|
+
templateFile: string;
|
|
3
|
+
oldFileContents: string;
|
|
4
|
+
newFileContents: string;
|
|
5
|
+
contextSize?: number;
|
|
6
|
+
fuzzFactor?: number;
|
|
7
|
+
};
|
|
8
|
+
export declare const applyChangesToFile: ({ templateFile, oldFileContents, newFileContents, contextSize, fuzzFactor }: ApplyOptions) => {
|
|
9
|
+
success: number;
|
|
10
|
+
failures: number;
|
|
11
|
+
};
|
|
12
|
+
export declare const applyChangesToFileOrCopy: ({ templateFile, oldFileContents, ...opts }: ApplyOptions) => void;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync } from 'fs';
|
|
2
|
+
import { applyPatch, structuredPatch } from 'diff';
|
|
3
|
+
const splitHunk = ({ lines, ...hunk }, contextSize) => {
|
|
4
|
+
let contextLines = [];
|
|
5
|
+
// let nextHunkContextLines = [];
|
|
6
|
+
let hunkLines = [];
|
|
7
|
+
const hunks = [];
|
|
8
|
+
for (const line of lines) {
|
|
9
|
+
if (line.startsWith(' ')) {
|
|
10
|
+
contextLines.push(line);
|
|
11
|
+
if (contextLines.length >= contextSize && hunkLines.length > 0) {
|
|
12
|
+
hunks.push({ lines: [...hunkLines, ...contextLines], ...hunk });
|
|
13
|
+
hunkLines = [];
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
hunkLines.push(...contextLines);
|
|
18
|
+
hunkLines.push(line);
|
|
19
|
+
contextLines = [];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
if (hunkLines.length > 0) {
|
|
23
|
+
hunks.push({ lines: [...contextLines, ...hunkLines], ...hunk });
|
|
24
|
+
}
|
|
25
|
+
return hunks;
|
|
26
|
+
};
|
|
27
|
+
export const applyChangesToFile = ({ templateFile, oldFileContents, newFileContents, contextSize = 2, fuzzFactor = 0 }) => {
|
|
28
|
+
const patch = structuredPatch(templateFile, templateFile, oldFileContents, newFileContents, undefined, undefined, {
|
|
29
|
+
context: contextSize,
|
|
30
|
+
newlineIsToken: false,
|
|
31
|
+
// ignoreWhitespace: true,
|
|
32
|
+
// oneChangePerToken: true,
|
|
33
|
+
// maxEditLength: 3,
|
|
34
|
+
});
|
|
35
|
+
patch.hunks = patch.hunks
|
|
36
|
+
.map(({ lines, ...remainning }) => ({
|
|
37
|
+
...remainning,
|
|
38
|
+
lines: lines
|
|
39
|
+
.map(line => (line === '-' ? ' ' : line.replace('-import', ' import').replace('+import', ' import')))
|
|
40
|
+
.filter(line => line !== '+'),
|
|
41
|
+
}))
|
|
42
|
+
.filter(({ lines }) => lines.some(line => line.startsWith('+') || line.startsWith('-')));
|
|
43
|
+
// apply hunk by hunk, since if a hunk fails, the rest of the file will be skipped
|
|
44
|
+
const content = readFileSync(templateFile, 'utf8').toString();
|
|
45
|
+
let applied = content;
|
|
46
|
+
let failures = 0;
|
|
47
|
+
let success = 0;
|
|
48
|
+
for (const hunk of patch.hunks.map(hunk => splitHunk(hunk, contextSize)).flat()) {
|
|
49
|
+
const result = applyPatch(applied, { ...patch, hunks: [hunk] }, { fuzzFactor });
|
|
50
|
+
if (result) {
|
|
51
|
+
applied = result;
|
|
52
|
+
success++;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
failures++;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (content !== applied) {
|
|
59
|
+
writeFileSync(templateFile, applied);
|
|
60
|
+
}
|
|
61
|
+
return { success, failures };
|
|
62
|
+
};
|
|
63
|
+
export const applyChangesToFileOrCopy = ({ templateFile, oldFileContents, ...opts }) => {
|
|
64
|
+
const result = applyChangesToFile({ templateFile, oldFileContents, ...opts });
|
|
65
|
+
if (result.success === 0 && result.failures > 0) {
|
|
66
|
+
let diskContents;
|
|
67
|
+
if (templateFile.endsWith('.ejs')) {
|
|
68
|
+
diskContents = `<%#
|
|
69
|
+
Copyright 2013-2025 the original author or authors from the JHipster project.
|
|
70
|
+
|
|
71
|
+
This file is part of the JHipster project, see https://www.jhipster.tech/
|
|
72
|
+
for more information.
|
|
73
|
+
|
|
74
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
75
|
+
you may not use this file except in compliance with the License.
|
|
76
|
+
You may obtain a copy of the License at
|
|
77
|
+
|
|
78
|
+
https://www.apache.org/licenses/LICENSE-2.0
|
|
79
|
+
|
|
80
|
+
Unless required by applicable law or agreed to in writing, software
|
|
81
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
82
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
83
|
+
See the License for the specific language governing permissions and
|
|
84
|
+
limitations under the License.
|
|
85
|
+
-%>
|
|
86
|
+
${oldFileContents}`;
|
|
87
|
+
}
|
|
88
|
+
writeFileSync(templateFile, diskContents ?? oldFileContents, { encoding: 'utf-8' });
|
|
89
|
+
}
|
|
90
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "generator-jhipster",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.11.0",
|
|
4
4
|
"description": "Spring Boot + Angular/React/Vue in one handy generator",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"yeoman-generator",
|
|
@@ -119,17 +119,22 @@
|
|
|
119
119
|
"update-snapshot": "esmocha --no-insight --no-parallel --update-snapshot --",
|
|
120
120
|
"update-snapshots": "esmocha lib/jdl generators cli .blueprint --update-snapshot --no-insight --forbid-only"
|
|
121
121
|
},
|
|
122
|
+
"overrides": {
|
|
123
|
+
"ejs-lint": {
|
|
124
|
+
"ejs": "$ejs"
|
|
125
|
+
}
|
|
126
|
+
},
|
|
122
127
|
"dependencies": {
|
|
123
|
-
"@eslint/js": "9.
|
|
124
|
-
"@faker-js/faker": "9.
|
|
128
|
+
"@eslint/js": "9.26.0",
|
|
129
|
+
"@faker-js/faker": "9.7.0",
|
|
125
130
|
"@iarna/toml": "3.0.0",
|
|
126
131
|
"@types/ejs": "3.1.5",
|
|
127
132
|
"@types/lodash-es": "4.17.12",
|
|
128
|
-
"@yeoman/adapter": "2.
|
|
129
|
-
"@yeoman/conflicter": "2.
|
|
133
|
+
"@yeoman/adapter": "2.1.1",
|
|
134
|
+
"@yeoman/conflicter": "2.4.0",
|
|
130
135
|
"@yeoman/namespace": "1.0.1",
|
|
131
136
|
"@yeoman/transform": "2.1.0",
|
|
132
|
-
"@yeoman/types": "1.
|
|
137
|
+
"@yeoman/types": "1.6.0",
|
|
133
138
|
"chalk": "5.4.1",
|
|
134
139
|
"chevrotain": "11.0.3",
|
|
135
140
|
"commander": "13.1.0",
|
|
@@ -138,12 +143,12 @@
|
|
|
138
143
|
"dockerfile-ast": "0.7.0",
|
|
139
144
|
"dot-properties": "1.1.0",
|
|
140
145
|
"ejs": "3.1.10",
|
|
141
|
-
"eslint": "9.
|
|
142
|
-
"eslint-plugin-import-x": "4.
|
|
146
|
+
"eslint": "9.26.0",
|
|
147
|
+
"eslint-plugin-import-x": "4.11.0",
|
|
143
148
|
"eslint-plugin-unused-imports": "4.1.4",
|
|
144
149
|
"execa": "9.5.2",
|
|
145
|
-
"fast-xml-parser": "5.
|
|
146
|
-
"glob": "11.0.
|
|
150
|
+
"fast-xml-parser": "5.2.2",
|
|
151
|
+
"glob": "11.0.2",
|
|
147
152
|
"globals": "16.0.0",
|
|
148
153
|
"isbinaryfile": "5.0.4",
|
|
149
154
|
"java-lint": "0.3.0",
|
|
@@ -160,37 +165,37 @@
|
|
|
160
165
|
"pluralize": "8.0.0",
|
|
161
166
|
"prettier": "3.5.3",
|
|
162
167
|
"prettier-plugin-java": "2.6.7",
|
|
163
|
-
"prettier-plugin-packagejson": "2.5.
|
|
168
|
+
"prettier-plugin-packagejson": "2.5.11",
|
|
164
169
|
"prettier-plugin-properties": "0.3.0",
|
|
165
170
|
"randexp": "0.5.3",
|
|
166
171
|
"semver": "7.7.1",
|
|
167
172
|
"simple-git": "3.27.0",
|
|
168
173
|
"sort-keys": "5.1.0",
|
|
169
|
-
"tinyglobby": "0.2.
|
|
170
|
-
"type-fest": "4.
|
|
171
|
-
"typescript": "5.8.
|
|
172
|
-
"typescript-eslint": "8.
|
|
174
|
+
"tinyglobby": "0.2.13",
|
|
175
|
+
"type-fest": "4.41.0",
|
|
176
|
+
"typescript": "5.8.3",
|
|
177
|
+
"typescript-eslint": "8.32.0",
|
|
173
178
|
"yaml": "2.7.1",
|
|
174
179
|
"yeoman-environment": "4.4.3",
|
|
175
180
|
"yeoman-generator": "7.5.1"
|
|
176
181
|
},
|
|
177
182
|
"devDependencies": {
|
|
178
|
-
"@eslint/core": "0.
|
|
183
|
+
"@eslint/core": "0.14.0",
|
|
179
184
|
"@node-loaders/esbuild": "2.0.0",
|
|
180
|
-
"@types/chai": "5.2.
|
|
185
|
+
"@types/chai": "5.2.2",
|
|
181
186
|
"@types/estree": "1.0.7",
|
|
182
187
|
"@types/node": "20.11.25",
|
|
183
188
|
"@types/sinon-chai": "4.0.0",
|
|
184
189
|
"chai": "5.2.0",
|
|
185
190
|
"cpy-cli": "5.0.0",
|
|
186
191
|
"ejs-lint": "2.0.1",
|
|
187
|
-
"eslint-config-prettier": "10.1.
|
|
188
|
-
"eslint-import-resolver-typescript": "4.3.
|
|
192
|
+
"eslint-config-prettier": "10.1.2",
|
|
193
|
+
"eslint-import-resolver-typescript": "4.3.4",
|
|
189
194
|
"eslint-plugin-chai-friendly": "1.0.1",
|
|
190
|
-
"eslint-plugin-prettier": "5.
|
|
195
|
+
"eslint-plugin-prettier": "5.4.0",
|
|
191
196
|
"esmocha": "3.0.0",
|
|
192
197
|
"jsdoc": "4.0.4",
|
|
193
|
-
"mocha": "11.
|
|
198
|
+
"mocha": "11.2.2",
|
|
194
199
|
"open-cli": "8.0.0",
|
|
195
200
|
"prettier2": "npm:prettier@2.8.8",
|
|
196
201
|
"rimraf": "6.0.1",
|
|
@@ -214,10 +219,5 @@
|
|
|
214
219
|
"type": "opencollective",
|
|
215
220
|
"url": "https://opencollective.com/generator-jhipster",
|
|
216
221
|
"logo": "https://opencollective.com/opencollective/logo.txt"
|
|
217
|
-
},
|
|
218
|
-
"overrides": {
|
|
219
|
-
"ejs-lint": {
|
|
220
|
-
"ejs": "$ejs"
|
|
221
|
-
}
|
|
222
222
|
}
|
|
223
223
|
}
|