generator-jhipster 7.2.0 → 7.3.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/cli/environment-builder.js +1 -0
- package/cli/import-jdl.js +2 -2
- package/cli/jdl.js +1 -0
- package/generators/bootstrap/index.js +2 -1
- package/generators/client/__workflow/devserver-angular.json +1 -1
- package/generators/client/__workflow/devserver-react.json +1 -1
- package/generators/client/__workflow/devserver-vue.json +1 -1
- package/generators/client/files-vue.js +2 -0
- package/generators/client/index.js +69 -0
- package/generators/client/templates/angular/package.json +12 -12
- package/generators/client/templates/angular/package.json.ejs +2 -1
- package/generators/client/templates/angular/src/main/webapp/app/admin/configuration/configuration.service.spec.ts.ejs +50 -52
- package/generators/client/templates/angular/src/main/webapp/app/admin/logs/logs.service.spec.ts.ejs +19 -21
- package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/metrics.service.spec.ts.ejs +62 -64
- package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/service/user-management.service.spec.ts.ejs +41 -43
- package/generators/client/templates/angular/src/main/webapp/app/app.module.ts.ejs +3 -0
- package/generators/client/templates/angular/src/main/webapp/app/core/auth/account.service.spec.ts.ejs +178 -180
- package/generators/client/templates/angular/src/main/webapp/app/core/config/application-config.service.ts.ejs +9 -0
- package/generators/client/templates/angular/src/main/webapp/app/entities/user/user.service.spec.ts.ejs +87 -89
- package/generators/client/templates/angular/webpack/webpack.custom.js.ejs +2 -3
- package/generators/client/templates/common/README.md.jhi.client.ejs +34 -0
- package/generators/client/templates/common/package.json +3 -3
- package/generators/client/templates/react/package.json +29 -29
- package/generators/client/templates/react/package.json.ejs +1 -1
- package/generators/client/templates/vue/package.json +22 -22
- package/generators/client/templates/vue/package.json.ejs +1 -1
- package/generators/client/templates/vue/src/main/webapp/app/account/account.service.ts.ejs +2 -2
- package/generators/client/templates/vue/src/main/webapp/app/admin/configuration/configuration.service.ts.ejs +1 -1
- package/generators/client/templates/vue/src/main/webapp/app/admin/tracker/tracker.service.ts.ejs +5 -4
- package/generators/client/templates/vue/src/main/webapp/app/admin/user-management/user-management-edit.component.ts.ejs +9 -0
- package/generators/client/templates/vue/src/main/webapp/app/admin/user-management/user-management-view.component.ts.ejs +5 -0
- package/generators/client/templates/vue/src/main/webapp/app/admin/user-management/user-management.component.ts.ejs +5 -0
- package/generators/client/templates/vue/src/main/webapp/app/main.ts.ejs +4 -2
- package/generators/client/templates/vue/src/main/webapp/app/router/admin.ts.ejs +4 -4
- package/generators/client/templates/vue/src/main/webapp/app/shared/alert/alert.service.ts.ejs +61 -0
- package/generators/client/templates/vue/src/test/javascript/spec/app/account/account.service.spec.ts.ejs +2 -2
- package/generators/client/templates/vue/src/test/javascript/spec/app/account/login-form/login-form.component.spec.ts.ejs +1 -1
- package/generators/client/templates/vue/src/test/javascript/spec/app/admin/tracker/tracker.component.spec.ts.ejs +12 -12
- package/generators/client/templates/vue/src/test/javascript/spec/app/admin/tracker/tracker.service.spec.ts.ejs +2 -1
- package/generators/client/templates/vue/src/test/javascript/spec/app/admin/user-management/user-management-edit.component.spec.ts.ejs +3 -1
- package/generators/client/templates/vue/src/test/javascript/spec/app/admin/user-management/user-management-view.component.spec.ts.ejs +2 -1
- package/generators/client/templates/vue/src/test/javascript/spec/app/admin/user-management/user-management.component.spec.ts.ejs +3 -1
- package/generators/client/templates/vue/src/test/javascript/spec/app/shared/alert/alert.service.spec.ts.ejs +124 -0
- package/generators/common/templates/.husky/pre-commit +1 -1
- package/generators/common/templates/package.json +3 -3
- package/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +13 -12
- package/generators/entity/index.js +13 -0
- package/generators/entity-client/index.js +53 -0
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/entity-management.module.ts.ejs +1 -1
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/route/entity-management-routing-resolve.service.spec.ts.ejs +52 -54
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/service/entity.service.spec.ts.ejs +173 -175
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.html.ejs +2 -4
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.ts.ejs +7 -0
- package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-delete-dialog.tsx.ejs +5 -2
- package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity-details.component.ts.ejs +5 -0
- package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity-update.component.ts.ejs +14 -2
- package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.component.ts.ejs +7 -0
- package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity-details.component.spec.ts.ejs +2 -1
- package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity-update.component.spec.ts.ejs +2 -0
- package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity.component.spec.ts.ejs +3 -1
- package/generators/entity-server/files-couchbase.js +2 -2
- package/generators/entity-server/files.js +31 -30
- package/generators/entity-server/templates/couchbase/src/main/java/package/repository/EntityRepository.java.ejs +2 -2
- package/generators/entity-server/templates/couchbase/src/main/resources/config/couchmove/changelog/entity.fts.ejs +1 -1
- package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.ejs +2 -2
- package/generators/entity-server/templates/src/main/java/package/domain/enumeration/Enum.java.ejs +1 -1
- package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository.java.ejs +2 -2
- package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryInternalImpl_reactive.java.ejs +7 -7
- package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository_reactive.java.ejs +2 -2
- package/generators/entity-server/templates/src/main/java/package/repository/rowmapper/EntityRowMapper.java.ejs +4 -4
- package/generators/entity-server/templates/src/main/java/package/repository/search/EntitySearchRepository.java.ejs +2 -2
- package/generators/entity-server/templates/src/main/java/package/service/EntityQueryService.java.ejs +8 -8
- package/generators/entity-server/templates/src/main/java/package/service/EntityService.java.ejs +4 -4
- package/generators/entity-server/templates/src/main/java/package/service/criteria/EntityCriteria.java.ejs +4 -4
- package/generators/entity-server/templates/src/main/java/package/service/dto/EntityDTO.java.ejs +3 -3
- package/generators/entity-server/templates/src/main/java/package/service/impl/EntityServiceImpl.java.ejs +8 -8
- package/generators/entity-server/templates/src/main/java/package/service/mapper/BaseEntityMapper.java.ejs +1 -1
- package/generators/entity-server/templates/src/main/java/package/service/mapper/EntityMapper.java.ejs +3 -3
- package/generators/entity-server/templates/src/main/java/package/web/rest/EntityResource.java.ejs +12 -12
- package/generators/entity-server/templates/src/test/java/package/domain/EntityTest.java.ejs +1 -1
- package/generators/entity-server/templates/src/test/java/package/repository/search/EntitySearchRepositoryMockConfiguration.java.ejs +1 -1
- package/generators/entity-server/templates/src/test/java/package/service/dto/EntityDTOTest.java.ejs +1 -1
- package/generators/entity-server/templates/src/test/java/package/service/mapper/EntityMapperTest.java.ejs +1 -1
- package/generators/entity-server/templates/src/test/java/package/web/rest/EntityResourceIT.java.ejs +18 -15
- package/generators/generator-base.js +10 -3
- package/generators/generator-constants.js +6 -5
- package/generators/heroku/index.js +13 -15
- package/generators/init/templates/.husky/pre-commit +1 -1
- package/generators/kubernetes-helm/templates/app/Chart.yml.ejs +22 -0
- package/generators/kubernetes-helm/templates/app/requirements.yml.ejs +2 -2
- package/generators/kubernetes-helm/templates/csvc/Chart.yml.ejs +17 -0
- package/generators/kubernetes-helm/templates/csvc/requirements.yml.ejs +3 -3
- package/generators/languages/templates/src/main/webapp/i18n/hr/reset.json.ejs +1 -2
- package/generators/maven/templates/.mvn/wrapper/maven-wrapper.properties +1 -1
- package/generators/server/index.js +38 -13
- package/generators/server/needle-api/needle-server-cache.js +4 -6
- package/generators/server/templates/.mvn/wrapper/maven-wrapper.properties +1 -1
- package/generators/server/templates/build.gradle.ejs +1 -1
- package/generators/server/templates/gradle.properties.ejs +1 -1
- package/generators/server/templates/pom.xml.ejs +4 -3
- package/generators/server/templates/settings.gradle.ejs +9 -0
- package/generators/server/templates/src/main/docker/app.yml.ejs +1 -0
- package/generators/server/templates/src/main/docker/config/realm-config/jhipster-realm.json.ejs +13 -12
- package/generators/server/templates/src/main/java/package/aop/logging/LoggingAspect.java.ejs +1 -1
- package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_cassandra.java.ejs +0 -6
- package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_sql.java.ejs +2 -2
- package/generators/server/templates/src/main/java/package/config/JacksonConfiguration.java.ejs +1 -1
- package/generators/server/templates/src/main/java/package/config/LocaleConfiguration.java.ejs +0 -2
- package/generators/server/templates/src/main/java/package/config/SecurityConfiguration.java.ejs +2 -5
- package/generators/server/templates/src/main/java/package/config/SecurityConfiguration_reactive.java.ejs +9 -1
- package/generators/server/templates/src/main/java/package/security/PersistentTokenRememberMeServices.java.ejs +0 -2
- package/generators/server/templates/src/main/resources/config/application-dev.yml.ejs +1 -1
- package/generators/server/templates/src/main/resources/config/application-prod.yml.ejs +1 -1
- package/generators/server/templates/src/main/resources/config/application.yml.ejs +2 -2
- package/package.json +12 -12
- package/utils/field.js +1 -1
|
@@ -29,105 +29,103 @@ import { User, IUser } from './user.model';
|
|
|
29
29
|
|
|
30
30
|
import { UserService } from './user.service';
|
|
31
31
|
|
|
32
|
-
describe('Service
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
32
|
+
describe('User Service', () => {
|
|
33
|
+
let service: UserService;
|
|
34
|
+
let httpMock: HttpTestingController;
|
|
35
|
+
let expectedResult: IUser | IUser[] | boolean | number | null;
|
|
36
|
+
|
|
37
|
+
beforeEach(() => {
|
|
38
|
+
TestBed.configureTestingModule({
|
|
39
|
+
imports: [HttpClientTestingModule],
|
|
40
|
+
});
|
|
41
|
+
expectedResult = null;
|
|
42
|
+
service = TestBed.inject(UserService);
|
|
43
|
+
httpMock = TestBed.inject(HttpTestingController);
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
afterEach(() => {
|
|
47
|
+
httpMock.verify();
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
describe('Service methods', () => {
|
|
51
|
+
it('should return Users', () => {
|
|
52
|
+
service.query().subscribe(received => {
|
|
53
|
+
expectedResult = received.body;
|
|
41
54
|
});
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
55
|
+
|
|
56
|
+
const req = httpMock.expectOne({ method: 'GET' });
|
|
57
|
+
req.flush([new User(<%- tsKeyId %>, 'user')]);
|
|
58
|
+
expect(expectedResult).toEqual([{ id: <%- tsKeyId %>, login: 'user' }]);
|
|
45
59
|
});
|
|
46
60
|
|
|
47
|
-
|
|
48
|
-
|
|
61
|
+
it('should propagate not found response', () => {
|
|
62
|
+
service.query().subscribe({
|
|
63
|
+
error: (error: HttpErrorResponse) => expectedResult = error.status
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
const req = httpMock.expectOne({ method: 'GET' });
|
|
67
|
+
req.flush('Internal Server Error', {
|
|
68
|
+
status: 500,
|
|
69
|
+
statusText: 'Inernal Server Error',
|
|
70
|
+
});
|
|
71
|
+
expect(expectedResult).toEqual(500);
|
|
49
72
|
});
|
|
50
73
|
|
|
51
|
-
describe('
|
|
52
|
-
it('should
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
74
|
+
describe('addUserToCollectionIfMissing', () => {
|
|
75
|
+
it('should add a User to an empty array', () => {
|
|
76
|
+
const user: IUser = <%- testEntityPrimaryKey0 %>;
|
|
77
|
+
expectedResult = service.addUserToCollectionIfMissing([], user);
|
|
78
|
+
expect(expectedResult).toHaveLength(1);
|
|
79
|
+
expect(expectedResult).toContain(user);
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it('should not add a User to an array that contains it', () => {
|
|
83
|
+
const user: IUser = <%- testEntityPrimaryKey0 %>;
|
|
84
|
+
const userCollection: IUser[] = [
|
|
85
|
+
{
|
|
86
|
+
...user,
|
|
87
|
+
},
|
|
88
|
+
<%- testEntityPrimaryKey1 %>,
|
|
89
|
+
];
|
|
90
|
+
expectedResult = service.addUserToCollectionIfMissing(userCollection, user);
|
|
91
|
+
expect(expectedResult).toHaveLength(2);
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
it("should add a User to an array that doesn't contain it", () => {
|
|
95
|
+
const user: IUser = <%- testEntityPrimaryKey0 %>;
|
|
96
|
+
const userCollection: IUser[] = [<%- testEntityPrimaryKey1 %>];
|
|
97
|
+
expectedResult = service.addUserToCollectionIfMissing(userCollection, user);
|
|
98
|
+
expect(expectedResult).toHaveLength(2);
|
|
99
|
+
expect(expectedResult).toContain(user);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
it('should add only unique User to an array', () => {
|
|
103
|
+
const userArray: IUser[] = [<%- testEntityPrimaryKey0 %>, <%- testEntityPrimaryKey1 %>, <%- generateTestEntityPrimaryKey(user.primaryKey) %>];
|
|
104
|
+
const userCollection: IUser[] = [<%- testEntityPrimaryKey1 %>];
|
|
105
|
+
expectedResult = service.addUserToCollectionIfMissing(userCollection, ...userArray);
|
|
106
|
+
expect(expectedResult).toHaveLength(3);
|
|
107
|
+
});
|
|
56
108
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
109
|
+
it("should accept varargs", () => {
|
|
110
|
+
const user: IUser = <%- testEntityPrimaryKey0 %>;
|
|
111
|
+
const user2: IUser = <%- testEntityPrimaryKey1 %>;
|
|
112
|
+
expectedResult = service.addUserToCollectionIfMissing([], user, user2);
|
|
113
|
+
expect(expectedResult).toHaveLength(2);
|
|
114
|
+
expect(expectedResult).toContain(user);
|
|
115
|
+
expect(expectedResult).toContain(user2);
|
|
60
116
|
});
|
|
61
117
|
|
|
62
|
-
it(
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
const req = httpMock.expectOne({ method: 'GET' });
|
|
68
|
-
req.flush('Internal Server Error', {
|
|
69
|
-
status: 500,
|
|
70
|
-
statusText: 'Inernal Server Error',
|
|
71
|
-
});
|
|
72
|
-
expect(expectedResult).toEqual(500);
|
|
118
|
+
it("should accept null and undefined values", () => {
|
|
119
|
+
const user: IUser = <%- testEntityPrimaryKey0 %>;
|
|
120
|
+
expectedResult = service.addUserToCollectionIfMissing([], null, user, undefined);
|
|
121
|
+
expect(expectedResult).toHaveLength(1);
|
|
122
|
+
expect(expectedResult).toContain(user);
|
|
73
123
|
});
|
|
74
124
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
expect(expectedResult).toHaveLength(1);
|
|
80
|
-
expect(expectedResult).toContain(user);
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
it('should not add a User to an array that contains it', () => {
|
|
84
|
-
const user: IUser = <%- testEntityPrimaryKey0 %>;
|
|
85
|
-
const userCollection: IUser[] = [
|
|
86
|
-
{
|
|
87
|
-
...user,
|
|
88
|
-
},
|
|
89
|
-
<%- testEntityPrimaryKey1 %>,
|
|
90
|
-
];
|
|
91
|
-
expectedResult = service.addUserToCollectionIfMissing(userCollection, user);
|
|
92
|
-
expect(expectedResult).toHaveLength(2);
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
it("should add a User to an array that doesn't contain it", () => {
|
|
96
|
-
const user: IUser = <%- testEntityPrimaryKey0 %>;
|
|
97
|
-
const userCollection: IUser[] = [<%- testEntityPrimaryKey1 %>];
|
|
98
|
-
expectedResult = service.addUserToCollectionIfMissing(userCollection, user);
|
|
99
|
-
expect(expectedResult).toHaveLength(2);
|
|
100
|
-
expect(expectedResult).toContain(user);
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
it('should add only unique User to an array', () => {
|
|
104
|
-
const userArray: IUser[] = [<%- testEntityPrimaryKey0 %>, <%- testEntityPrimaryKey1 %>, <%- generateTestEntityPrimaryKey(user.primaryKey) %>];
|
|
105
|
-
const userCollection: IUser[] = [<%- testEntityPrimaryKey1 %>];
|
|
106
|
-
expectedResult = service.addUserToCollectionIfMissing(userCollection, ...userArray);
|
|
107
|
-
expect(expectedResult).toHaveLength(3);
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
it("should accept varargs", () => {
|
|
111
|
-
const user: IUser = <%- testEntityPrimaryKey0 %>;
|
|
112
|
-
const user2: IUser = <%- testEntityPrimaryKey1 %>;
|
|
113
|
-
expectedResult = service.addUserToCollectionIfMissing([], user, user2);
|
|
114
|
-
expect(expectedResult).toHaveLength(2);
|
|
115
|
-
expect(expectedResult).toContain(user);
|
|
116
|
-
expect(expectedResult).toContain(user2);
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
it("should accept null and undefined values", () => {
|
|
120
|
-
const user: IUser = <%- testEntityPrimaryKey0 %>;
|
|
121
|
-
expectedResult = service.addUserToCollectionIfMissing([], null, user, undefined);
|
|
122
|
-
expect(expectedResult).toHaveLength(1);
|
|
123
|
-
expect(expectedResult).toContain(user);
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
it('should return initial array if no users is added', () => {
|
|
127
|
-
const userCollection: IUser[] = [<%- testEntityPrimaryKey1 %>];
|
|
128
|
-
expectedResult = service.addUserToCollectionIfMissing(userCollection, null, undefined);
|
|
129
|
-
expect(expectedResult).toEqual(userCollection);
|
|
130
|
-
});
|
|
125
|
+
it('should return initial array if no users is added', () => {
|
|
126
|
+
const userCollection: IUser[] = [<%- testEntityPrimaryKey1 %>];
|
|
127
|
+
expectedResult = service.addUserToCollectionIfMissing(userCollection, null, undefined);
|
|
128
|
+
expect(expectedResult).toEqual(userCollection);
|
|
131
129
|
});
|
|
132
130
|
});
|
|
133
131
|
});
|
|
@@ -76,7 +76,7 @@ module.exports = async (config, options, targetOptions) => {
|
|
|
76
76
|
if (config.devServer) {
|
|
77
77
|
config.devServer.proxy = proxyConfig({ tls });
|
|
78
78
|
}
|
|
79
|
-
|
|
79
|
+
|
|
80
80
|
if (targetOptions.target === 'serve' || config.watch) {
|
|
81
81
|
config.plugins.push(
|
|
82
82
|
new BrowserSyncPlugin(
|
|
@@ -85,7 +85,7 @@ module.exports = async (config, options, targetOptions) => {
|
|
|
85
85
|
port: 9000,
|
|
86
86
|
https: tls,
|
|
87
87
|
proxy: {
|
|
88
|
-
target: `http${tls ? 's' : ''}://localhost:${targetOptions.target === 'serve' ? '<%= devServerPort %>' : '<%= serverPort %>'}`,
|
|
88
|
+
target: `http${tls ? 's' : ''}://localhost:${targetOptions.target === 'serve' ? '<%= devServerPort %>' : '<%= this.applicationTypeMicroservice ? gatewayServerPort : serverPort %>'}`,
|
|
89
89
|
<%_ if (websocket === 'spring-websocket') { _%>
|
|
90
90
|
ws: true,
|
|
91
91
|
<%_ } _%>
|
|
@@ -113,7 +113,6 @@ module.exports = async (config, options, targetOptions) => {
|
|
|
113
113
|
)
|
|
114
114
|
);
|
|
115
115
|
}
|
|
116
|
-
<%_ } _%>
|
|
117
116
|
|
|
118
117
|
if (config.mode === 'production') {
|
|
119
118
|
config.plugins.push(
|
|
@@ -149,6 +149,40 @@ Note: There are still a few other things remaining to do for Leaflet that we won
|
|
|
149
149
|
|
|
150
150
|
For further instructions on how to develop with JHipster, have a look at [Using JHipster in development][].
|
|
151
151
|
|
|
152
|
+
<%_ if (microfrontend) { -%>
|
|
153
|
+
### Developing Microfrontend
|
|
154
|
+
|
|
155
|
+
Microservices doesn't contain every required backend feature to allow microfrontends to run alone.
|
|
156
|
+
You must start a pre-built gateway version or from source.
|
|
157
|
+
|
|
158
|
+
Start gateway from source:
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
cd gateway
|
|
162
|
+
npm run docker:db:up # start database if necessary
|
|
163
|
+
npm run docker:others:up # start service discovery and authentication service if necessary
|
|
164
|
+
npm run app:start # alias for ./(mvnw|gradlew)
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Microfrontend's `build-watch` script is configured to watch and compile microfrontend's sources and synchronizes with gateway's frontend.
|
|
168
|
+
Start it using:
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
cd microfrontend
|
|
172
|
+
npm run docker:db:up # start database if necessary
|
|
173
|
+
npm run build-watch
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
It's possible to run microfrontend's frontend standalone using:
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
cd microfrontend
|
|
180
|
+
npm run docker:db:up # start database if necessary
|
|
181
|
+
npm watch # alias for `npm start` and `npm run backend:start` in parallel
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
<%_ } -%>
|
|
185
|
+
|
|
152
186
|
<&_ } -&>
|
|
153
187
|
<&_ if (fragment.testingSection) { -&>
|
|
154
188
|
### Client tests
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
"@cypress/code-coverage": "3.9.11",
|
|
4
4
|
"babel-loader": "8.2.2",
|
|
5
5
|
"babel-plugin-istanbul": "6.0.0",
|
|
6
|
-
"cypress": "8.
|
|
7
|
-
"eslint-plugin-cypress": "2.
|
|
6
|
+
"cypress": "8.5.0",
|
|
7
|
+
"eslint-plugin-cypress": "2.12.1",
|
|
8
8
|
"cypress-audit": "1.0.0",
|
|
9
|
-
"lighthouse": "8.
|
|
9
|
+
"lighthouse": "8.5.1",
|
|
10
10
|
"nyc": "15.1.0"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
@@ -3,21 +3,21 @@
|
|
|
3
3
|
"@fortawesome/fontawesome-svg-core": "1.2.36",
|
|
4
4
|
"@fortawesome/free-solid-svg-icons": "5.15.4",
|
|
5
5
|
"@fortawesome/react-fontawesome": "0.1.15",
|
|
6
|
-
"@reduxjs/toolkit": "1.6.
|
|
6
|
+
"@reduxjs/toolkit": "1.6.2",
|
|
7
7
|
"axios": "0.21.4",
|
|
8
8
|
"bootstrap": "4.6.0",
|
|
9
|
-
"bootswatch": "5.1.
|
|
9
|
+
"bootswatch": "5.1.2",
|
|
10
10
|
"lodash": "4.17.21",
|
|
11
11
|
"path-browserify": "1.0.1",
|
|
12
12
|
"react": "17.0.1",
|
|
13
13
|
"react-dom": "17.0.1",
|
|
14
|
-
"react-hook-form": "7.
|
|
15
|
-
"react-jhipster": "0.
|
|
14
|
+
"react-hook-form": "7.17.1",
|
|
15
|
+
"react-jhipster": "0.17.0",
|
|
16
16
|
"react-loadable": "5.5.0",
|
|
17
17
|
"react-redux": "7.2.5",
|
|
18
18
|
"react-redux-loading-bar": "5.0.2",
|
|
19
19
|
"react-router-dom": "5.3.0",
|
|
20
|
-
"react-toastify": "8.0.
|
|
20
|
+
"react-toastify": "8.0.3",
|
|
21
21
|
"react-transition-group": "4.4.2",
|
|
22
22
|
"reactstrap": "8.10.0",
|
|
23
23
|
"redux": "4.1.1",
|
|
@@ -27,62 +27,62 @@
|
|
|
27
27
|
"uuid": "8.3.2"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@testing-library/react": "12.1.
|
|
31
|
-
"@types/jest": "27.0.
|
|
32
|
-
"@types/lodash": "4.14.
|
|
33
|
-
"@types/node": "16.
|
|
34
|
-
"@types/react": "17.0.
|
|
30
|
+
"@testing-library/react": "12.1.2",
|
|
31
|
+
"@types/jest": "27.0.2",
|
|
32
|
+
"@types/lodash": "4.14.175",
|
|
33
|
+
"@types/node": "16.10.3",
|
|
34
|
+
"@types/react": "17.0.27",
|
|
35
35
|
"@types/react-dom": "17.0.9",
|
|
36
36
|
"@types/react-redux": "7.1.18",
|
|
37
|
-
"@types/react-router-dom": "5.
|
|
37
|
+
"@types/react-router-dom": "5.3.0",
|
|
38
38
|
"@types/redux": "3.6.31",
|
|
39
39
|
"@types/webpack-env": "1.16.2",
|
|
40
|
-
"@typescript-eslint/eslint-plugin": "4.
|
|
41
|
-
"@typescript-eslint/parser": "4.
|
|
42
|
-
"autoprefixer": "10.3.
|
|
40
|
+
"@typescript-eslint/eslint-plugin": "4.33.0",
|
|
41
|
+
"@typescript-eslint/parser": "4.33.0",
|
|
42
|
+
"autoprefixer": "10.3.7",
|
|
43
43
|
"browser-sync": "2.27.5",
|
|
44
44
|
"browser-sync-webpack-plugin": "2.3.0",
|
|
45
45
|
"copy-webpack-plugin": "9.0.1",
|
|
46
|
-
"core-js": "3.
|
|
46
|
+
"core-js": "3.18.2",
|
|
47
47
|
"cross-env": "7.0.3",
|
|
48
|
-
"css-loader": "6.
|
|
49
|
-
"css-minimizer-webpack-plugin": "3.
|
|
48
|
+
"css-loader": "6.3.0",
|
|
49
|
+
"css-minimizer-webpack-plugin": "3.1.1",
|
|
50
50
|
"eslint": "7.32.0",
|
|
51
51
|
"eslint-config-prettier": "8.3.0",
|
|
52
|
-
"eslint-plugin-react": "7.
|
|
52
|
+
"eslint-plugin-react": "7.26.1",
|
|
53
53
|
"eslint-webpack-plugin": "3.0.1",
|
|
54
54
|
"folder-hash": "4.0.1",
|
|
55
55
|
"fork-ts-checker-webpack-plugin": "6.3.3",
|
|
56
56
|
"html-webpack-plugin": "5.3.2",
|
|
57
57
|
"identity-obj-proxy": "3.0.0",
|
|
58
|
-
"jest": "27.2.
|
|
59
|
-
"jest-junit": "
|
|
58
|
+
"jest": "27.2.4",
|
|
59
|
+
"jest-junit": "13.0.0",
|
|
60
60
|
"jest-sonar-reporter": "2.0.0",
|
|
61
61
|
"json-loader": "0.5.7",
|
|
62
62
|
"merge-jsons-webpack-plugin": "1.0.21",
|
|
63
|
-
"mini-css-extract-plugin": "2.
|
|
63
|
+
"mini-css-extract-plugin": "2.4.1",
|
|
64
64
|
"postcss-loader": "6.1.1",
|
|
65
65
|
"react-infinite-scroller": "1.2.4",
|
|
66
66
|
"redux-mock-store": "1.5.4",
|
|
67
67
|
"rimraf": "3.0.2",
|
|
68
|
-
"sass": "1.
|
|
68
|
+
"sass": "1.42.1",
|
|
69
69
|
"sass-loader": "12.1.0",
|
|
70
70
|
"simple-progress-webpack-plugin": "2.0.0",
|
|
71
71
|
"sinon": "11.1.2",
|
|
72
72
|
"source-map-loader": "3.0.0",
|
|
73
73
|
"sourcemap-istanbul-instrumenter-loader": "0.2.0",
|
|
74
|
-
"style-loader": "3.
|
|
75
|
-
"swagger-ui-dist": "3.52.
|
|
74
|
+
"style-loader": "3.3.0",
|
|
75
|
+
"swagger-ui-dist": "3.52.3",
|
|
76
76
|
"terser-webpack-plugin": "5.2.4",
|
|
77
77
|
"thread-loader": "3.0.4",
|
|
78
78
|
"ts-jest": "27.0.5",
|
|
79
|
-
"ts-loader": "9.2.
|
|
79
|
+
"ts-loader": "9.2.6",
|
|
80
80
|
"typescript": "4.4.3",
|
|
81
|
-
"webpack": "5.
|
|
82
|
-
"webpack-cli": "4.
|
|
83
|
-
"webpack-dev-server": "4.
|
|
81
|
+
"webpack": "5.57.1",
|
|
82
|
+
"webpack-cli": "4.9.0",
|
|
83
|
+
"webpack-dev-server": "4.3.1",
|
|
84
84
|
"webpack-merge": "5.8.0",
|
|
85
|
-
"webpack-notifier": "1.
|
|
85
|
+
"webpack-notifier": "1.14.0",
|
|
86
86
|
"workbox-webpack-plugin": "6.3.0"
|
|
87
87
|
}
|
|
88
88
|
}
|
|
@@ -3,29 +3,29 @@
|
|
|
3
3
|
"@fortawesome/fontawesome-svg-core": "1.2.36",
|
|
4
4
|
"@fortawesome/free-solid-svg-icons": "5.15.4",
|
|
5
5
|
"@fortawesome/vue-fontawesome": "2.0.2",
|
|
6
|
-
"axios": "0.
|
|
6
|
+
"axios": "0.22.0",
|
|
7
7
|
"bootstrap": "4.6.0",
|
|
8
8
|
"bootstrap-vue": "2.21.2",
|
|
9
|
-
"bootswatch": "5.1.
|
|
10
|
-
"swagger-ui-dist": "3.52.
|
|
9
|
+
"bootswatch": "5.1.2",
|
|
10
|
+
"swagger-ui-dist": "3.52.3",
|
|
11
11
|
"vue": "2.6.14",
|
|
12
12
|
"vue-class-component": "7.2.6",
|
|
13
13
|
"vue-cookie": "1.1.4",
|
|
14
14
|
"vue-infinite-loading": "2.4.5",
|
|
15
15
|
"vue-router": "3.5.2",
|
|
16
|
-
"vue-i18n": "8.
|
|
16
|
+
"vue-i18n": "8.26.5",
|
|
17
17
|
"vue-property-decorator": "9.1.2",
|
|
18
18
|
"vuelidate": "0.7.6",
|
|
19
19
|
"vuex": "3.6.2",
|
|
20
20
|
"vue2-filters": "0.13.0"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@types/jest": "27.0.
|
|
24
|
-
"@types/node": "16.
|
|
25
|
-
"@types/sinon": "10.0.
|
|
23
|
+
"@types/jest": "27.0.2",
|
|
24
|
+
"@types/node": "16.10.3",
|
|
25
|
+
"@types/sinon": "10.0.4",
|
|
26
26
|
"@types/vuelidate": "0.7.15",
|
|
27
|
-
"@typescript-eslint/eslint-plugin": "4.
|
|
28
|
-
"@typescript-eslint/parser": "4.
|
|
27
|
+
"@typescript-eslint/eslint-plugin": "4.33.0",
|
|
28
|
+
"@typescript-eslint/parser": "4.33.0",
|
|
29
29
|
"@vue/eslint-config-prettier": "6.0.0",
|
|
30
30
|
"@vue/eslint-config-typescript": "7.0.0",
|
|
31
31
|
"@vue/cli-plugin-eslint": "4.5.13",
|
|
@@ -33,47 +33,47 @@
|
|
|
33
33
|
"@vue/cli-service": "4.5.13",
|
|
34
34
|
"@vue/test-utils": "1.2.2",
|
|
35
35
|
"axios-mock-adapter": "1.20.0",
|
|
36
|
-
"autoprefixer": "10.3.
|
|
36
|
+
"autoprefixer": "10.3.7",
|
|
37
37
|
"babel-core": "7.0.0-bridge.0",
|
|
38
38
|
"browser-sync": "2.27.5",
|
|
39
39
|
"browser-sync-webpack-plugin": "2.3.0",
|
|
40
40
|
"copy-webpack-plugin": "9.0.1",
|
|
41
|
-
"css-loader": "6.
|
|
42
|
-
"css-minimizer-webpack-plugin": "3.
|
|
41
|
+
"css-loader": "6.3.0",
|
|
42
|
+
"css-minimizer-webpack-plugin": "3.1.1",
|
|
43
43
|
"file-loader": "6.2.0",
|
|
44
44
|
"folder-hash": "4.0.1",
|
|
45
45
|
"fork-ts-checker-webpack-plugin": "6.3.3",
|
|
46
46
|
"html-webpack-plugin": "5.3.2",
|
|
47
|
-
"jest": "27.2.
|
|
48
|
-
"jest-junit": "
|
|
47
|
+
"jest": "27.2.4",
|
|
48
|
+
"jest-junit": "13.0.0",
|
|
49
49
|
"jest-serializer-vue": "2.0.2",
|
|
50
50
|
"jest-sonar-reporter": "2.0.0",
|
|
51
51
|
"jest-vue-preprocessor": "1.7.1",
|
|
52
52
|
"merge-jsons-webpack-plugin": "1.0.21",
|
|
53
|
-
"mini-css-extract-plugin": "2.
|
|
53
|
+
"mini-css-extract-plugin": "2.4.1",
|
|
54
54
|
"node-notifier": "9.0.1",
|
|
55
55
|
"numeral": "2.0.6",
|
|
56
56
|
"portfinder": "1.0.28",
|
|
57
|
-
"postcss": "8.3.
|
|
57
|
+
"postcss": "8.3.9",
|
|
58
58
|
"postcss-import": "14.0.2",
|
|
59
59
|
"postcss-loader": "6.1.1",
|
|
60
60
|
"postcss-url": "10.1.3",
|
|
61
61
|
"rimraf": "3.0.2",
|
|
62
|
-
"sass": "1.
|
|
62
|
+
"sass": "1.42.1",
|
|
63
63
|
"sass-loader": "12.1.0",
|
|
64
64
|
"sinon": "11.1.2",
|
|
65
65
|
"terser-webpack-plugin": "5.2.4",
|
|
66
66
|
"ts-jest": "27.0.5",
|
|
67
|
-
"ts-loader": "9.2.
|
|
67
|
+
"ts-loader": "9.2.6",
|
|
68
68
|
"eslint": "6.8.0",
|
|
69
69
|
"eslint-plugin-prettier": "3.4.1",
|
|
70
|
-
"eslint-plugin-vue": "7.
|
|
70
|
+
"eslint-plugin-vue": "7.19.0",
|
|
71
71
|
"typescript": "4.4.3",
|
|
72
72
|
"url-loader": "4.1.1",
|
|
73
|
-
"webpack": "5.
|
|
73
|
+
"webpack": "5.57.1",
|
|
74
74
|
"webpack-bundle-analyzer": "4.4.2",
|
|
75
|
-
"webpack-cli": "4.
|
|
76
|
-
"webpack-dev-server": "4.
|
|
75
|
+
"webpack-cli": "4.9.0",
|
|
76
|
+
"webpack-dev-server": "4.3.1",
|
|
77
77
|
"webpack-merge": "5.8.0",
|
|
78
78
|
"workbox-webpack-plugin": "6.3.0",
|
|
79
79
|
"vue-jest": "3.0.7",
|
|
@@ -33,7 +33,7 @@ export default class AccountService {
|
|
|
33
33
|
|
|
34
34
|
public retrieveProfiles(): Promise<boolean> {
|
|
35
35
|
return new Promise(resolve => {
|
|
36
|
-
axios.get('management/info').then(res => {
|
|
36
|
+
axios.get<any>('management/info').then(res => {
|
|
37
37
|
if (res.data && res.data.activeProfiles) {
|
|
38
38
|
this.store.commit('setRibbonOnProfiles', res.data['display-ribbon-on-profiles']);
|
|
39
39
|
this.store.commit('setActiveProfiles', res.data['activeProfiles']);
|
|
@@ -46,7 +46,7 @@ export default class AccountService {
|
|
|
46
46
|
public retrieveAccount(): Promise<boolean> {
|
|
47
47
|
return new Promise(resolve => {
|
|
48
48
|
axios
|
|
49
|
-
.get('api/account').then((response) => {
|
|
49
|
+
.get<any>('api/account').then((response) => {
|
|
50
50
|
this.store.commit('authenticate');
|
|
51
51
|
const account = response.data;
|
|
52
52
|
if (account) {
|
|
@@ -23,7 +23,7 @@ export default class ConfigurationService {
|
|
|
23
23
|
|
|
24
24
|
public loadEnvConfiguration(): Promise<any> {
|
|
25
25
|
return new Promise(resolve => {
|
|
26
|
-
axios.get('management/env').then(res => {
|
|
26
|
+
axios.get<any>('management/env').then(res => {
|
|
27
27
|
const properties = {};
|
|
28
28
|
const propertySources = res.data['propertySources'];
|
|
29
29
|
|
package/generators/client/templates/vue/src/main/webapp/app/admin/tracker/tracker.service.ts.ejs
CHANGED
|
@@ -15,7 +15,7 @@ export default class TrackerService {
|
|
|
15
15
|
|
|
16
16
|
private router: VueRouter;
|
|
17
17
|
|
|
18
|
-
constructor(router: VueRouter) {
|
|
18
|
+
constructor(router: VueRouter<%_ if (authenticationTypeSession) { _%>, private cookie: any<%_ } _%>) {
|
|
19
19
|
this.router = router;
|
|
20
20
|
this.connection = this.createConnection();
|
|
21
21
|
this.listener = this.createListener();
|
|
@@ -28,19 +28,20 @@ export default class TrackerService {
|
|
|
28
28
|
// building absolute path so that websocket doesn't fail when deploying with a context path
|
|
29
29
|
const loc = window.location;
|
|
30
30
|
const baseHref = document.querySelector('base').getAttribute('href');
|
|
31
|
-
let url;
|
|
32
|
-
url = '//' + loc.host + baseHref + 'websocket/tracker';
|
|
33
31
|
<%_ if (authenticationTypeJwt) { _%>
|
|
32
|
+
let url = '//' + loc.host + baseHref + 'websocket/tracker';
|
|
34
33
|
const authToken = localStorage.getItem('<%=jhiPrefixDashed %>-authenticationToken') || sessionStorage.getItem('<%=jhiPrefixDashed %>-authenticationToken');
|
|
35
34
|
if (authToken) {
|
|
36
35
|
url += '?access_token=' + authToken;
|
|
37
36
|
}
|
|
37
|
+
<%_ } else { _%>
|
|
38
|
+
const url = '//' + loc.host + baseHref + 'websocket/tracker';
|
|
38
39
|
<%_ } _%>
|
|
39
40
|
const socket = new SockJS(url);
|
|
40
41
|
this.stompClient = Stomp.over(socket, { protocols: ['v12.stomp'] });
|
|
41
42
|
const headers = {};
|
|
42
43
|
<%_ if (authenticationTypeSession) { _%>
|
|
43
|
-
headers['X-XSRF-TOKEN'] =
|
|
44
|
+
headers['X-XSRF-TOKEN'] = this.cookie.get('JSESSIONID') || this.cookie.get('XSRF-TOKEN');
|
|
44
45
|
<%_ } _%>
|
|
45
46
|
this.stompClient.connect(headers, () => this.afterConnect());
|
|
46
47
|
}
|
|
@@ -2,6 +2,7 @@ import { email, maxLength, minLength, required } from 'vuelidate/lib/validators'
|
|
|
2
2
|
import { Component, Inject, Vue } from 'vue-property-decorator';
|
|
3
3
|
import UserManagementService from './user-management.service';
|
|
4
4
|
import { IUser, User } from '@/shared/model/user.model';
|
|
5
|
+
import AlertService from '@/shared/alert/alert.service';
|
|
5
6
|
|
|
6
7
|
const loginValidator = (value: string) => {
|
|
7
8
|
if (!value) {
|
|
@@ -37,6 +38,8 @@ const validations: any = {
|
|
|
37
38
|
})
|
|
38
39
|
export default class <%=jhiPrefixCapitalized%>UserManagementEdit extends Vue {
|
|
39
40
|
@Inject('userService') private userManagementService: () => UserManagementService;
|
|
41
|
+
@Inject('alertService') private alertService: () => AlertService;
|
|
42
|
+
|
|
40
43
|
public userAccount: IUser;
|
|
41
44
|
public isSaving = false;
|
|
42
45
|
public authorities: any[] = [];
|
|
@@ -87,6 +90,9 @@ export default class <%=jhiPrefixCapitalized%>UserManagementEdit extends Vue {
|
|
|
87
90
|
solid: true,
|
|
88
91
|
autoHideDelay: 5000,
|
|
89
92
|
});
|
|
93
|
+
}).catch(error => {
|
|
94
|
+
this.isSaving = true;
|
|
95
|
+
this.alertService().showHttpError(this,error.response);
|
|
90
96
|
});
|
|
91
97
|
} else {
|
|
92
98
|
<%_ if (!enableTranslation) { _%>
|
|
@@ -101,6 +107,9 @@ export default class <%=jhiPrefixCapitalized%>UserManagementEdit extends Vue {
|
|
|
101
107
|
solid: true,
|
|
102
108
|
autoHideDelay: 5000,
|
|
103
109
|
});
|
|
110
|
+
}).catch(error => {
|
|
111
|
+
this.isSaving = true;
|
|
112
|
+
this.alertService().showHttpError(this,error.response);
|
|
104
113
|
});
|
|
105
114
|
}
|
|
106
115
|
}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import Vue from 'vue';
|
|
2
2
|
import { Component, Inject } from 'vue-property-decorator';
|
|
3
3
|
import UserManagementService from './user-management.service';
|
|
4
|
+
import AlertService from '@/shared/alert/alert.service';
|
|
4
5
|
|
|
5
6
|
@Component
|
|
6
7
|
export default class <%=jhiPrefixCapitalized%>UserManagementView extends Vue {
|
|
7
8
|
@Inject('userService') private userManagementService: () => UserManagementService;
|
|
9
|
+
@Inject('alertService') private alertService: () => AlertService;
|
|
10
|
+
|
|
8
11
|
public user: any = null;
|
|
9
12
|
|
|
10
13
|
beforeRouteEnter(to, from, next) {
|
|
@@ -17,6 +20,8 @@ export default class <%=jhiPrefixCapitalized%>UserManagementView extends Vue {
|
|
|
17
20
|
public init(userId: <% if (userPrimaryKeyTypeString || userPrimaryKeyTypeUUID) { %>string<% } else { %>number<% } %>): void {
|
|
18
21
|
this.userManagementService().get(userId).then(res => {
|
|
19
22
|
this.user = res.data;
|
|
23
|
+
}).catch(error => {
|
|
24
|
+
this.alertService().showHttpError(this,error.response);
|
|
20
25
|
});
|
|
21
26
|
}
|
|
22
27
|
}
|