generator-jhipster 8.9.0 → 8.10.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 +2 -2
- package/dist/cli/download.mjs +2 -3
- package/dist/cli/environment-builder.mjs +2 -2
- package/dist/generators/angular/generator.d.ts +10 -1
- package/dist/generators/angular/resources/package.json +20 -20
- package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.component.spec.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.html.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.spec.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.ts.ejs +6 -4
- package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.html.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.spec.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.html.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.html.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.component.spec.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.html.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.spec.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.component.spec.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/health/modal/health-modal.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.spec.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.component.html.ejs +8 -13
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.spec.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.spec.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.spec.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.html.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.spec.ts.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/app-page-title-strategy.ts.ejs +1 -3
- package/dist/generators/angular/templates/src/main/webapp/app/app.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/core/util/alert.service.ts.ejs +1 -2
- package/dist/generators/angular/templates/src/main/webapp/app/core/util/data-util.service.spec.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.html.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.spec.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.html.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.spec.ts.ejs +4 -5
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.html.ejs +4 -4
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.spec.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/service/_entityFile_.service.spec.ts.ejs +4 -4
- 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/entities/_entityFolder_/update/_entityFile_-update.component.spec.ts.ejs +7 -7
- package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.spec.ts.ejs +4 -4
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.html.ejs +4 -4
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.spec.ts.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.spec.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.ts.ejs +8 -6
- package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.spec.ts.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert-error.component.spec.ts.ejs +8 -8
- package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert.component.spec.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/shared/pagination/item-count.component.ts.ejs +1 -1
- package/dist/generators/app/generator.d.ts +4 -1
- package/dist/generators/base/support/contents.d.ts +1 -1
- package/dist/generators/base/support/needles.d.ts +14 -5
- package/dist/generators/base/support/needles.js +25 -17
- package/dist/generators/base-application/support/prepare-entity.js +14 -26
- package/dist/generators/base-application/support/update-application-entities-transform.js +3 -2
- package/dist/generators/base-application/types.d.ts +5 -0
- package/dist/generators/bootstrap/generator.d.ts +6 -1
- package/dist/generators/bootstrap/support/eslint-worker.js +5 -2
- package/dist/generators/bootstrap-application/generator.d.ts +4 -1
- package/dist/generators/bootstrap-application-base/generator.d.ts +12 -2
- package/dist/generators/bootstrap-application-base/generator.js +3 -0
- package/dist/generators/bootstrap-application-client/generator.d.ts +3 -1
- package/dist/generators/bootstrap-application-server/generator.d.ts +8 -1
- package/dist/generators/bootstrap-workspaces/generator.d.ts +9 -1
- package/dist/generators/ci-cd/generator.d.ts +6 -1
- package/dist/generators/client/generator.d.ts +13 -1
- package/dist/generators/client/generators/common/generator.d.ts +1 -1
- package/dist/generators/client/resources/package.json +5 -5
- package/dist/generators/client/templates/src/main/webapp/swagger-ui/index.html.ejs +8 -6
- package/dist/generators/common/generator.d.ts +8 -1
- package/dist/generators/common/resources/package.json +2 -2
- package/dist/generators/cucumber/generator.d.ts +2 -1
- package/dist/generators/cypress/generator.d.ts +7 -1
- package/dist/generators/docker/generator.d.ts +4 -1
- package/dist/generators/docker-compose/generator.d.ts +23 -1
- package/dist/generators/entities/generator.d.ts +4 -1
- package/dist/generators/entity/generator.d.ts +5 -1
- package/dist/generators/export-jdl/generator.d.ts +3 -1
- package/dist/generators/feign-client/generator.d.ts +2 -1
- package/dist/generators/feign-client/templates/src/test/java/_package_/client/AuthorizationHeaderUtilTest.java.ejs +1 -1
- package/dist/generators/gatling/generator.d.ts +3 -1
- package/dist/generators/generate-blueprint/constants.d.ts +1 -1
- package/dist/generators/generate-blueprint/constants.js +1 -1
- package/dist/generators/generate-blueprint/files.js +2 -2
- package/dist/generators/generate-blueprint/generator.d.ts +10 -1
- package/dist/generators/generate-blueprint/generator.js +16 -16
- package/dist/generators/generate-blueprint/resources/package.json +3 -3
- package/dist/generators/generate-blueprint/templates/.blueprint/generate-sample/command.mjs.ejs +1 -1
- package/dist/generators/generate-blueprint/templates/generators/generator/generator.mjs.jhi.ejs +1 -0
- package/dist/generators/generator-constants.d.ts +1 -1
- package/dist/generators/generator-constants.js +2 -2
- package/dist/generators/git/generator.d.ts +5 -1
- package/dist/generators/gradle/generator.d.ts +5 -1
- package/dist/generators/gradle/generators/code-quality/generator.d.ts +2 -1
- package/dist/generators/gradle/generators/jib/generator.d.ts +2 -1
- package/dist/generators/gradle/generators/node-gradle/generator.d.ts +2 -1
- package/dist/generators/gradle/templates/gradle/wrapper/gradle-wrapper.properties +1 -1
- package/dist/generators/heroku/generator.d.ts +6 -1
- package/dist/generators/info/generator.d.ts +1 -1
- package/dist/generators/init/generator.d.ts +2 -1
- package/dist/generators/init/resources/.node-version +1 -1
- package/dist/generators/java/generators/bootstrap/generator.d.ts +8 -2
- package/dist/generators/java/generators/bootstrap/generator.js +17 -3
- package/dist/generators/java/generators/build-tool/generator.d.ts +2 -1
- package/dist/generators/java/generators/code-quality/generator.d.ts +2 -1
- package/dist/generators/java/generators/domain/generator.d.ts +6 -1
- package/dist/generators/java/generators/graalvm/generator.d.ts +6 -1
- package/dist/generators/java/generators/graalvm/internal/constants.d.ts +1 -1
- package/dist/generators/java/generators/graalvm/internal/constants.js +2 -2
- package/dist/generators/java/generators/graalvm/resources/gradle/libs.versions.toml +1 -1
- package/dist/generators/java/generators/jib/generator.d.ts +2 -1
- package/dist/generators/java/generators/node/generator.d.ts +4 -1
- package/dist/generators/java/generators/openapi-generator/generator.d.ts +2 -1
- package/dist/generators/java/generators/server/generator.d.ts +1 -1
- package/dist/generators/java/support/index.d.ts +2 -0
- package/dist/generators/java/support/index.js +2 -0
- package/dist/generators/java/support/java-enum.d.ts +8 -0
- package/dist/generators/java/support/java-enum.js +20 -0
- package/dist/generators/java/support/java-file-edit.d.ts +18 -0
- package/dist/generators/java/support/java-file-edit.js +94 -0
- package/dist/generators/java/types.d.ts +37 -1
- package/dist/generators/javascript/generators/bootstrap/generator.d.ts +4 -1
- package/dist/generators/javascript/generators/eslint/generator.d.ts +4 -1
- package/dist/generators/javascript/generators/husky/generator.d.ts +3 -1
- package/dist/generators/javascript/generators/prettier/generator.d.ts +4 -1
- package/dist/generators/javascript/resources/package.json +3 -3
- package/dist/generators/jdl/generator.d.ts +3 -1
- package/dist/generators/kubernetes/generator.d.ts +25 -19
- package/dist/generators/kubernetes-helm/generator.d.ts +18 -12
- package/dist/generators/kubernetes-knative/generator.d.ts +14 -8
- package/dist/generators/languages/generator.d.ts +9 -1
- package/dist/generators/liquibase/generator.d.ts +9 -1
- package/dist/generators/liquibase/generator.js +3 -19
- package/dist/generators/maven/generator.d.ts +6 -1
- package/dist/generators/maven/generators/code-quality/generator.d.ts +1 -1
- package/dist/generators/maven/generators/frontend-plugin/generator.d.ts +1 -1
- package/dist/generators/maven/generators/jib/generator.d.ts +1 -1
- package/dist/generators/project-name/generator.d.ts +3 -1
- package/dist/generators/react/generator.d.ts +15 -1
- package/dist/generators/react/resources/package.json +26 -26
- package/dist/generators/react/templates/src/main/webapp/app/entities/menu.tsx.ejs +2 -2
- package/dist/generators/react/templates/src/main/webapp/app/entities/routes.tsx.ejs +1 -1
- package/dist/generators/server/generator.d.ts +7 -1
- package/dist/generators/server/resources/Dockerfile +15 -15
- package/dist/generators/server/resources/gradle/libs.versions.toml +13 -13
- package/dist/generators/server/resources/pom.xml +13 -13
- package/dist/generators/server/types.d.ts +22 -0
- package/dist/generators/spring-boot/generator.d.ts +14 -2
- package/dist/generators/spring-boot/generator.js +33 -1
- package/dist/generators/spring-boot/resources/spring-boot-dependencies.pom +143 -143
- package/dist/generators/spring-boot/templates/src/main/java/_package_/Application.java.ejs +11 -0
- package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/service/_entityClass_QueryService.java.ejs +12 -23
- package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/AccountResource.java.ejs +7 -6
- package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/AccountResource_oauth2.java.ejs +8 -6
- package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/AccountResource_skipUserManagement.java.ejs +8 -6
- package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/AuthenticateController.java.ejs +6 -6
- package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/errors/ExceptionTranslator.java.ejs +8 -3
- package/dist/generators/spring-boot/templates/src/main/resources/config/application.yml.ejs +3 -0
- package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/service/UserServiceIT.java.ejs +3 -3
- package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/PublicUserResourceIT.java.ejs +4 -4
- package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/UserResourceIT.java.ejs +4 -4
- package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs +3 -3
- package/dist/generators/spring-boot/templates/src/test/java/_package_/config/JHipsterBlockHoundIntegration.java.ejs +0 -2
- package/dist/generators/spring-boot/templates/src/test/java/_package_/config/WebConfigurerTest.java.ejs +1 -1
- package/dist/generators/spring-boot/templates/src/test/java/_package_/management/SecurityMetersServiceTests.java.ejs +1 -1
- package/dist/generators/spring-boot/templates/src/test/java/_package_/security/DomainUserDetailsServiceIT.java.ejs +2 -2
- package/dist/generators/spring-boot/templates/src/test/java/_package_/security/jwt/TestAuthenticationResource.java.ejs +5 -5
- package/dist/generators/spring-boot/templates/src/test/java/_package_/security/jwt/TokenAuthenticationIT.java.ejs +2 -2
- package/dist/generators/spring-boot/templates/src/test/java/_package_/security/jwt/TokenAuthenticationSecurityMetersIT.java.ejs +1 -4
- package/dist/generators/spring-boot/templates/src/test/java/_package_/security/oauth2/CustomClaimConverterIT.java.ejs +1 -1
- package/dist/generators/spring-boot/templates/src/test/java/_package_/service/MailServiceIT.java.ejs +1 -1
- package/dist/generators/spring-boot/templates/src/test/java/_package_/service/mapper/UserMapperTest.java.ejs +1 -1
- package/dist/generators/spring-boot/templates/src/test/java/_package_/web/filter/SpaWebFilterIT_imperative.java.ejs +1 -1
- package/dist/generators/spring-boot/templates/src/test/java/_package_/web/filter/SpaWebFilterIT_reactive.java.ejs +1 -2
- package/dist/generators/spring-boot/templates/src/test/java/_package_/web/rest/AccountResourceIT.java.ejs +9 -15
- package/dist/generators/spring-boot/templates/src/test/java/_package_/web/rest/AccountResourceIT_oauth2.java.ejs +8 -17
- package/dist/generators/spring-boot/templates/src/test/java/_package_/web/rest/AccountResourceIT_skipUserManagement.java.ejs +6 -15
- package/dist/generators/spring-boot/templates/src/test/java/_package_/web/rest/LogoutResourceIT.java.ejs +1 -1
- package/dist/generators/spring-boot/templates/src/test/java/_package_/web/rest/errors/ExceptionTranslatorIT_reactive.java.ejs +1 -1
- package/dist/generators/spring-cache/cleanup.d.ts +2 -20
- package/dist/generators/spring-cache/cleanup.js +24 -2
- package/dist/generators/spring-cache/files.js +0 -6
- package/dist/generators/spring-cache/generator.d.ts +5 -1
- package/dist/generators/spring-cache/resources/gradle/libs.versions.toml +1 -1
- package/dist/generators/spring-cache/templates/src/main/java/_package_/config/CacheConfiguration.java.ejs +0 -14
- package/dist/generators/spring-cloud/generators/gateway/generator.d.ts +5 -1
- package/dist/generators/spring-cloud-stream/generator.d.ts +2 -1
- package/dist/generators/spring-cloud-stream/generators/kafka/generator.d.ts +2 -1
- package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/test/java/_package_/web/rest/KafkaResourceIT_reactive.java.ejs +1 -1
- package/dist/generators/spring-cloud-stream/generators/pulsar/generator.d.ts +2 -1
- package/dist/generators/spring-data-cassandra/generator.d.ts +4 -1
- package/dist/generators/spring-data-couchbase/generator.d.ts +9 -1
- package/dist/generators/spring-data-elasticsearch/generator.d.ts +10 -1
- package/dist/generators/spring-data-mongodb/generator.d.ts +9 -1
- package/dist/generators/spring-data-neo4j/generator.d.ts +11 -1
- package/dist/generators/spring-data-relational/generator.d.ts +11 -1
- package/dist/generators/spring-data-relational/templates/src/test/java/_package_/config/timezone/HibernateTimeZoneIT.java.ejs +2 -2
- package/dist/generators/spring-websocket/generator.d.ts +2 -1
- package/dist/generators/upgrade/generator.d.ts +3 -1
- package/dist/generators/vue/generator.d.ts +9 -1
- package/dist/generators/vue/resources/package.json +29 -29
- package/dist/generators/workspaces/generator.d.ts +7 -1
- package/dist/generators/workspaces/support/applications-lookup.js +2 -2
- package/dist/lib/jdl/converters/parsed-jdl-to-jdl-object/parsed-jdl-to-jdl-object-converter.js +1 -1
- package/dist/lib/jdl/core/built-in-options/binary-options.d.ts +12 -1
- package/dist/lib/testing/github.js +6 -3
- package/dist/lib/testing/helpers.d.ts +1 -0
- package/dist/lib/testing/helpers.js +15 -0
- package/dist/lib/utils/yo-rc.d.ts +3 -219
- package/package.json +27 -28
- package/dist/generators/spring-cache/templates/src/main/java/_package_/config/CacheFactoryConfiguration.java.ejs +0 -49
|
@@ -35,9 +35,9 @@
|
|
|
35
35
|
</div>
|
|
36
36
|
</h2>
|
|
37
37
|
|
|
38
|
-
<<%= jhiPrefixDashed %>-alert-error
|
|
38
|
+
<<%= jhiPrefixDashed %>-alert-error />
|
|
39
39
|
|
|
40
|
-
<<%= jhiPrefixDashed %>-alert
|
|
40
|
+
<<%= jhiPrefixDashed %>-alert />
|
|
41
41
|
<%_ if (searchEngineAny) { _%>
|
|
42
42
|
|
|
43
43
|
<form name="searchForm" class="row row-cols-sm-auto align-items-center">
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
<%_ } _%>
|
|
62
62
|
|
|
63
63
|
<%_ if (jpaMetamodelFiltering && paginationPagination) { _%>
|
|
64
|
-
<<%= jhiPrefixDashed %>-filter [filters]="filters"
|
|
64
|
+
<<%= jhiPrefixDashed %>-filter [filters]="filters" />
|
|
65
65
|
<%_ } _%>
|
|
66
66
|
|
|
67
67
|
@if (<%= entityInstancePlural %>().length === 0) {
|
|
@@ -221,7 +221,7 @@ _%>
|
|
|
221
221
|
@if (<%= entityInstancePlural %>().length > 0) {
|
|
222
222
|
<div>
|
|
223
223
|
<div class="d-flex justify-content-center">
|
|
224
|
-
<<%= jhiPrefixDashed %>-item-count [params]="{ page: page, totalItems: totalItems, itemsPerPage: itemsPerPage }"
|
|
224
|
+
<<%= jhiPrefixDashed %>-item-count [params]="{ page: page, totalItems: totalItems, itemsPerPage: itemsPerPage }" />
|
|
225
225
|
</div>
|
|
226
226
|
|
|
227
227
|
<div class="d-flex justify-content-center">
|
|
@@ -124,7 +124,7 @@ describe('<%= entityAngularName %> Management Component', () => {
|
|
|
124
124
|
);
|
|
125
125
|
});
|
|
126
126
|
|
|
127
|
-
it('
|
|
127
|
+
it('should call load all on init', () => {
|
|
128
128
|
// WHEN
|
|
129
129
|
comp.ngOnInit();
|
|
130
130
|
|
|
@@ -134,7 +134,7 @@ describe('<%= entityAngularName %> Management Component', () => {
|
|
|
134
134
|
});
|
|
135
135
|
|
|
136
136
|
describe('track<%= primaryKey.nameCapitalized %>', () => {
|
|
137
|
-
it('
|
|
137
|
+
it('should forward to <%= entityInstance %>Service', () => {
|
|
138
138
|
const entity = <%- tsPrimaryKeySamples[0] %>;
|
|
139
139
|
jest.spyOn(service, 'get<%= entityAngularName %>Identifier');
|
|
140
140
|
const <%= primaryKey.name %> = comp.track<%= primaryKey.nameCapitalized %>(entity);
|
|
@@ -208,7 +208,7 @@ describe('<%= entityAngularName %> Service', () => {
|
|
|
208
208
|
});
|
|
209
209
|
|
|
210
210
|
describe('compare<%= entityAngularName %>', () => {
|
|
211
|
-
it('
|
|
211
|
+
it('should return true if both entities are null', () => {
|
|
212
212
|
const entity1 = null;
|
|
213
213
|
const entity2 = null;
|
|
214
214
|
|
|
@@ -217,7 +217,7 @@ describe('<%= entityAngularName %> Service', () => {
|
|
|
217
217
|
expect(compareResult).toEqual(true);
|
|
218
218
|
});
|
|
219
219
|
|
|
220
|
-
it('
|
|
220
|
+
it('should return false if one entity is null', () => {
|
|
221
221
|
const entity1 = <%- tsPrimaryKeySamples[0] %>;
|
|
222
222
|
const entity2 = null;
|
|
223
223
|
|
|
@@ -228,7 +228,7 @@ describe('<%= entityAngularName %> Service', () => {
|
|
|
228
228
|
expect(compareResult2).toEqual(false);
|
|
229
229
|
});
|
|
230
230
|
|
|
231
|
-
it('
|
|
231
|
+
it('should return false if primaryKey differs', () => {
|
|
232
232
|
const entity1 = <%- tsPrimaryKeySamples[0] %>;
|
|
233
233
|
const entity2 = <%- tsPrimaryKeySamples[1] %>;
|
|
234
234
|
|
|
@@ -239,7 +239,7 @@ describe('<%= entityAngularName %> Service', () => {
|
|
|
239
239
|
expect(compareResult2).toEqual(false);
|
|
240
240
|
});
|
|
241
241
|
|
|
242
|
-
it('
|
|
242
|
+
it('should return false if primaryKey matches', () => {
|
|
243
243
|
const entity1 = <%- tsPrimaryKeySamples[0] %>;
|
|
244
244
|
const entity2 = <%- tsPrimaryKeySamples[0] %>;
|
|
245
245
|
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
<h2 id="<%= jhiPrefixDashed %>-<%= entityFileName %>-heading" data-cy="<%= entityClass %>CreateUpdateHeading">__jhiTranslateTag__('<%- i18nKeyPrefix %>.home.createOrEditLabel')</h2>
|
|
23
23
|
|
|
24
24
|
<div>
|
|
25
|
-
<<%= jhiPrefixDashed %>-alert-error
|
|
25
|
+
<<%= jhiPrefixDashed %>-alert-error />
|
|
26
26
|
<%_ for (const field of fields.filter(field => !field.hidden)) {
|
|
27
27
|
const fieldName = field.fieldName;
|
|
28
28
|
const fieldNameHumanized = field.fieldNameHumanized;
|
|
@@ -90,7 +90,7 @@ describe('<%= entityAngularName %> Management Update Component', () => {
|
|
|
90
90
|
<%_ const relationshipsWithCustomSharedOptions = relationshipsByEntityNeedingOptions.filter(rel => !relationshipsWithCustomUniqueOptions.includes(rel)); _%>
|
|
91
91
|
<%_ if (relationshipsWithCustomSharedOptions.length > 0) { _%>
|
|
92
92
|
<%_ const otherEntity = relationshipsByEntityNeedingOptions[0].otherEntity; _%>
|
|
93
|
-
it('
|
|
93
|
+
it('should call <%= otherEntity.entityAngularName %> query and add missing value', () => {
|
|
94
94
|
const <%= entityInstance %> : I<%= entityAngularName %> = <%- testEntityPrimaryKey1 %>;
|
|
95
95
|
<%_ for (const relationship of relationshipsWithCustomSharedOptions) { _%>
|
|
96
96
|
<%_ const reference = relationship.reference _%>
|
|
@@ -128,7 +128,7 @@ describe('<%= entityAngularName %> Management Update Component', () => {
|
|
|
128
128
|
<%_ for (const relationship of relationshipsWithCustomUniqueOptions) { %>
|
|
129
129
|
<%_ const otherEntity = relationship.otherEntity _%>
|
|
130
130
|
<%_ const reference = relationship.reference _%>
|
|
131
|
-
it('
|
|
131
|
+
it('should call <%= reference.name %> query and add missing value', () => {
|
|
132
132
|
const <%= entityInstance %> : I<%= entityAngularName %> = <%- testEntityPrimaryKey1 %>;
|
|
133
133
|
const <%= reference.name %> : I<%= otherEntity.entityAngularName %> = <%- otherEntity.tsPrimaryKeySamples[0] %>;
|
|
134
134
|
<%= entityInstance %>.<%= reference.name %> = <%= reference.name %>;
|
|
@@ -148,7 +148,7 @@ describe('<%= entityAngularName %> Management Update Component', () => {
|
|
|
148
148
|
|
|
149
149
|
<%_ } _%>
|
|
150
150
|
<%_ } _%>
|
|
151
|
-
it('
|
|
151
|
+
it('should update editForm', () => {
|
|
152
152
|
const <%= entityInstance %>: I<%= entityAngularName %> = <%- testEntityPrimaryKey1 %>;
|
|
153
153
|
<%_ for (const relationshipsByEntityNeedingOptions of allRelationshipsByEntityNeedingOptions) { _%>
|
|
154
154
|
<%_ for (const relationship of relationshipsByEntityNeedingOptions) { _%>
|
|
@@ -174,7 +174,7 @@ describe('<%= entityAngularName %> Management Update Component', () => {
|
|
|
174
174
|
|
|
175
175
|
describe('save', () => {
|
|
176
176
|
<%_ if (updatableEntity) { _%>
|
|
177
|
-
it('
|
|
177
|
+
it('should call update service on save for existing entity', () => {
|
|
178
178
|
// GIVEN
|
|
179
179
|
const saveSubject = new Subject<HttpResponse<I<%= entityAngularName %>>>();
|
|
180
180
|
const <%= entityInstance %> = <%- testEntityPrimaryKey0 %>;
|
|
@@ -198,7 +198,7 @@ describe('<%= entityAngularName %> Management Update Component', () => {
|
|
|
198
198
|
});
|
|
199
199
|
|
|
200
200
|
<%_ } _%>
|
|
201
|
-
it('
|
|
201
|
+
it('should call create service on save for new entity', () => {
|
|
202
202
|
// GIVEN
|
|
203
203
|
const saveSubject = new Subject<HttpResponse<I<%= entityAngularName %>>>();
|
|
204
204
|
const <%= entityInstance %> = <%- testEntityPrimaryKey0 %>;
|
|
@@ -222,7 +222,7 @@ describe('<%= entityAngularName %> Management Update Component', () => {
|
|
|
222
222
|
});
|
|
223
223
|
<%_ if (updatableEntity) { _%>
|
|
224
224
|
|
|
225
|
-
it('
|
|
225
|
+
it('should set isSaving to false on error', () => {
|
|
226
226
|
// GIVEN
|
|
227
227
|
const saveSubject = new Subject<HttpResponse<I<%= entityAngularName %>>>();
|
|
228
228
|
const <%= entityInstance %> = <%- testEntityPrimaryKey0 %>;
|
|
@@ -253,7 +253,7 @@ _%>
|
|
|
253
253
|
const { otherEntity } = relationship[0];
|
|
254
254
|
_%>
|
|
255
255
|
describe('compare<%= otherEntity.entityAngularName %>', () => {
|
|
256
|
-
it('
|
|
256
|
+
it('should forward to <%= otherEntity.entityInstance %>Service', () => {
|
|
257
257
|
const entity = <%- otherEntity.tsPrimaryKeySamples[0] %>;
|
|
258
258
|
const entity2 = <%- otherEntity.tsPrimaryKeySamples[1] %>;
|
|
259
259
|
jest.spyOn(<%= otherEntity.entityInstance %>Service, 'compare<%= otherEntity.entityAngularName %>');
|
package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.spec.ts.ejs
CHANGED
|
@@ -90,7 +90,7 @@ describe('Home Component', () => {
|
|
|
90
90
|
});
|
|
91
91
|
|
|
92
92
|
describe('ngOnInit', () => {
|
|
93
|
-
it('
|
|
93
|
+
it('should synchronize account variable with current account', () => {
|
|
94
94
|
<%_ if (!authenticationTypeOauth2) { _%>
|
|
95
95
|
// GIVEN
|
|
96
96
|
const authenticationState = new Subject<Account | null>();
|
|
@@ -128,7 +128,7 @@ describe('Home Component', () => {
|
|
|
128
128
|
|
|
129
129
|
describe('login', () => {
|
|
130
130
|
<%_ if (!authenticationTypeOauth2) { _%>
|
|
131
|
-
it('
|
|
131
|
+
it('should navigate to /login on login', () => {
|
|
132
132
|
// WHEN
|
|
133
133
|
comp.login();
|
|
134
134
|
|
|
@@ -136,7 +136,7 @@ describe('Home Component', () => {
|
|
|
136
136
|
expect(mockRouter.navigate).toHaveBeenCalledWith(['/login']);
|
|
137
137
|
});
|
|
138
138
|
<%_ } else { _%>
|
|
139
|
-
it('
|
|
139
|
+
it('should call loginService.login on login', () => {
|
|
140
140
|
// WHEN
|
|
141
141
|
comp.login();
|
|
142
142
|
|
|
@@ -148,7 +148,7 @@ describe('Home Component', () => {
|
|
|
148
148
|
|
|
149
149
|
<%_ if (!authenticationTypeOauth2) { _%>
|
|
150
150
|
describe('ngOnDestroy', () => {
|
|
151
|
-
it('
|
|
151
|
+
it('should destroy authentication state subscription on component destroy', () => {
|
|
152
152
|
// GIVEN
|
|
153
153
|
const authenticationState = new Subject<Account | null>();
|
|
154
154
|
mockAccountService.getAuthenticationState = jest.fn(() => authenticationState.asObservable());
|
package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.html.ejs
CHANGED
|
@@ -16,16 +16,16 @@
|
|
|
16
16
|
See the License for the specific language governing permissions and
|
|
17
17
|
limitations under the License.
|
|
18
18
|
-%>
|
|
19
|
-
<<%= jhiPrefixDashed %>-page-ribbon
|
|
19
|
+
<<%= jhiPrefixDashed %>-page-ribbon />
|
|
20
20
|
|
|
21
21
|
<div>
|
|
22
|
-
<router-outlet name="navbar"
|
|
22
|
+
<router-outlet name="navbar" />
|
|
23
23
|
</div>
|
|
24
24
|
|
|
25
25
|
<div class="container-fluid">
|
|
26
26
|
<div class="card jh-card">
|
|
27
|
-
<router-outlet
|
|
27
|
+
<router-outlet />
|
|
28
28
|
</div>
|
|
29
29
|
|
|
30
|
-
<<%= jhiPrefixDashed %>-footer
|
|
30
|
+
<<%= jhiPrefixDashed %>-footer />
|
|
31
31
|
</div>
|
|
@@ -76,7 +76,7 @@ describe('Navbar Component', () => {
|
|
|
76
76
|
profileService = TestBed.inject(ProfileService);
|
|
77
77
|
});
|
|
78
78
|
|
|
79
|
-
it('
|
|
79
|
+
it('should call profileService.getProfileInfo on init', () => {
|
|
80
80
|
// GIVEN
|
|
81
81
|
jest.spyOn(profileService, 'getProfileInfo').mockReturnValue(of(new ProfileInfo()));
|
|
82
82
|
|
|
@@ -87,7 +87,7 @@ describe('Navbar Component', () => {
|
|
|
87
87
|
expect(profileService.getProfileInfo).toHaveBeenCalled();
|
|
88
88
|
});
|
|
89
89
|
|
|
90
|
-
it('
|
|
90
|
+
it('should hold current authenticated user in variable account', () => {
|
|
91
91
|
// WHEN
|
|
92
92
|
comp.ngOnInit();
|
|
93
93
|
|
|
@@ -107,7 +107,7 @@ describe('Navbar Component', () => {
|
|
|
107
107
|
expect(comp.account()).toBeNull();
|
|
108
108
|
});
|
|
109
109
|
|
|
110
|
-
it('
|
|
110
|
+
it('should hold current authenticated user in variable account if user is authenticated before page load', () => {
|
|
111
111
|
// GIVEN
|
|
112
112
|
accountService.authenticate(account);
|
|
113
113
|
|
|
@@ -27,7 +27,7 @@ describe('Page Ribbon Component', () => {
|
|
|
27
27
|
profileService = TestBed.inject(ProfileService);
|
|
28
28
|
});
|
|
29
29
|
|
|
30
|
-
it('
|
|
30
|
+
it('should call profileService.getProfileInfo on init', () => {
|
|
31
31
|
// GIVEN
|
|
32
32
|
jest.spyOn(profileService, 'getProfileInfo').mockReturnValue(of(new ProfileInfo()));
|
|
33
33
|
|
|
@@ -16,9 +16,10 @@
|
|
|
16
16
|
See the License for the specific language governing permissions and
|
|
17
17
|
limitations under the License.
|
|
18
18
|
-%>
|
|
19
|
-
import { Component,
|
|
19
|
+
import { Component, Injector, OnInit, Signal, inject } from '@angular/core';
|
|
20
20
|
import { Observable } from 'rxjs';
|
|
21
21
|
import { map } from 'rxjs/operators';
|
|
22
|
+
import { toSignal } from '@angular/core/rxjs-interop';
|
|
22
23
|
|
|
23
24
|
import SharedModule from 'app/shared/shared.module';
|
|
24
25
|
import { ProfileService } from './profile.service';
|
|
@@ -26,9 +27,9 @@ import { ProfileService } from './profile.service';
|
|
|
26
27
|
@Component({
|
|
27
28
|
selector: '<%= jhiPrefixDashed %>-page-ribbon',
|
|
28
29
|
template: `
|
|
29
|
-
@if (
|
|
30
|
+
@if (ribbonEnvSignal; as ribbonEnv) {
|
|
30
31
|
<div class="ribbon">
|
|
31
|
-
<a href="">__jhiTranslateTagEnum__('global.ribbon', { "value": "ribbonEnv ?? ''" })</a>
|
|
32
|
+
<a href="">__jhiTranslateTagEnum__('global.ribbon', { "value": "ribbonEnv() ?? ''" })</a>
|
|
32
33
|
</div>
|
|
33
34
|
}
|
|
34
35
|
`,
|
|
@@ -36,11 +37,12 @@ import { ProfileService } from './profile.service';
|
|
|
36
37
|
imports: [SharedModule],
|
|
37
38
|
})
|
|
38
39
|
export default class PageRibbonComponent implements OnInit {
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
ribbonEnvSignal?: Signal<string | undefined>;
|
|
41
|
+
private readonly injector = inject(Injector);
|
|
41
42
|
private readonly profileService = inject(ProfileService);
|
|
42
43
|
|
|
43
44
|
ngOnInit(): void {
|
|
44
|
-
|
|
45
|
+
const ribbonEnv$: Observable<string | undefined> = this.profileService.getProfileInfo().pipe(map(profileInfo => profileInfo.ribbonEnv));
|
|
46
|
+
this.ribbonEnvSignal = toSignal(ribbonEnv$, { injector: this.injector });
|
|
45
47
|
}
|
|
46
48
|
}
|
package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.spec.ts.ejs
CHANGED
|
@@ -65,7 +65,7 @@ describe('LoginComponent', () => {
|
|
|
65
65
|
});
|
|
66
66
|
|
|
67
67
|
describe('ngOnInit', () => {
|
|
68
|
-
it('
|
|
68
|
+
it('should call accountService.identity on Init', () => {
|
|
69
69
|
// GIVEN
|
|
70
70
|
mockAccountService.identity = jest.fn(() => of(null));
|
|
71
71
|
mockAccountService.getAuthenticationState = jest.fn(() => of(null));
|
|
@@ -77,7 +77,7 @@ describe('LoginComponent', () => {
|
|
|
77
77
|
expect(mockAccountService.identity).toHaveBeenCalled();
|
|
78
78
|
});
|
|
79
79
|
|
|
80
|
-
it('
|
|
80
|
+
it('should call accountService.isAuthenticated on Init', () => {
|
|
81
81
|
// GIVEN
|
|
82
82
|
mockAccountService.identity = jest.fn(() => of(null));
|
|
83
83
|
|
|
@@ -156,7 +156,7 @@ describe('LoginComponent', () => {
|
|
|
156
156
|
|
|
157
157
|
it('should stay on login form and show error message on login error', () => {
|
|
158
158
|
// GIVEN
|
|
159
|
-
mockLoginService.login = jest.fn(() => throwError(
|
|
159
|
+
mockLoginService.login = jest.fn(() => throwError(Error));
|
|
160
160
|
|
|
161
161
|
// WHEN
|
|
162
162
|
comp.login();
|
|
@@ -66,7 +66,7 @@ describe('Alert Error Component', () => {
|
|
|
66
66
|
});
|
|
67
67
|
|
|
68
68
|
describe('Error Handling', () => {
|
|
69
|
-
it('
|
|
69
|
+
it('should display an alert on status 0', () => {
|
|
70
70
|
// GIVEN
|
|
71
71
|
eventManager.broadcast({ name: '<%= frontendAppName %>.httpError', content: { status: 0 } });
|
|
72
72
|
// THEN
|
|
@@ -74,7 +74,7 @@ describe('Alert Error Component', () => {
|
|
|
74
74
|
expect(comp.alerts()[0].<%= mainAlertField %>).toBe(<% if (enableTranslation) { %>'error.server.not.reachable'<% } else { %>'Server not reachable'<% } %>);
|
|
75
75
|
});
|
|
76
76
|
|
|
77
|
-
it('
|
|
77
|
+
it('should display an alert on status 404', () => {
|
|
78
78
|
// GIVEN
|
|
79
79
|
eventManager.broadcast({ name: '<%= frontendAppName %>.httpError', content: { status: 404 } });
|
|
80
80
|
// THEN
|
|
@@ -82,7 +82,7 @@ describe('Alert Error Component', () => {
|
|
|
82
82
|
expect(comp.alerts()[0].<%= mainAlertField %>).toBe(<% if (enableTranslation) { %>'error.url.not.found'<% } else { %>'Not found'<% } %>);
|
|
83
83
|
});
|
|
84
84
|
|
|
85
|
-
it('
|
|
85
|
+
it('should display an alert on generic error', () => {
|
|
86
86
|
// GIVEN
|
|
87
87
|
eventManager.broadcast({ name: '<%= frontendAppName %>.httpError', content: { error: { message: 'Error Message' } } });
|
|
88
88
|
eventManager.broadcast({ name: '<%= frontendAppName %>.httpError', content: { error: 'Second Error Message' } });
|
|
@@ -92,7 +92,7 @@ describe('Alert Error Component', () => {
|
|
|
92
92
|
expect(comp.alerts()[1].<%= mainAlertField %>).toBe('Second Error Message');
|
|
93
93
|
});
|
|
94
94
|
|
|
95
|
-
it('
|
|
95
|
+
it('should display an alert on status 400 for generic error', () => {
|
|
96
96
|
// GIVEN
|
|
97
97
|
const response = new HttpErrorResponse({
|
|
98
98
|
url: 'http://localhost:8080/api/foos',
|
|
@@ -113,7 +113,7 @@ describe('Alert Error Component', () => {
|
|
|
113
113
|
expect(comp.alerts()[0].<%= mainAlertField %>).toBe('error.validation');
|
|
114
114
|
});
|
|
115
115
|
|
|
116
|
-
it('
|
|
116
|
+
it('should display an alert on status 400 for generic error without message', () => {
|
|
117
117
|
// GIVEN
|
|
118
118
|
const response = new HttpErrorResponse({
|
|
119
119
|
url: 'http://localhost:8080/api/foos',
|
|
@@ -127,7 +127,7 @@ describe('Alert Error Component', () => {
|
|
|
127
127
|
expect(comp.alerts()[0].<%= mainAlertField %>).toBe('Bad Request');
|
|
128
128
|
});
|
|
129
129
|
|
|
130
|
-
it('
|
|
130
|
+
it('should display an alert on status 400 for invalid parameters', () => {
|
|
131
131
|
// GIVEN
|
|
132
132
|
const response = new HttpErrorResponse({
|
|
133
133
|
url: 'http://localhost:8080/api/foos',
|
|
@@ -149,7 +149,7 @@ describe('Alert Error Component', () => {
|
|
|
149
149
|
expect(comp.alerts()[0].<%= mainAlertField %>).toBe(<% if (enableTranslation) { %>'error.Size'<% } else { %>'Error on field "MinField"'<% } %>);
|
|
150
150
|
});
|
|
151
151
|
|
|
152
|
-
it('
|
|
152
|
+
it('should display an alert on status 400 for error headers', () => {
|
|
153
153
|
// GIVEN
|
|
154
154
|
const response = new HttpErrorResponse({
|
|
155
155
|
url: 'http://localhost:8080/api/foos',
|
|
@@ -167,7 +167,7 @@ describe('Alert Error Component', () => {
|
|
|
167
167
|
expect(comp.alerts()[0].<%= mainAlertField %>).toBe('Error Message');
|
|
168
168
|
});
|
|
169
169
|
|
|
170
|
-
it('
|
|
170
|
+
it('should display an alert on status 500 with detail', () => {
|
|
171
171
|
// GIVEN
|
|
172
172
|
const response = new HttpErrorResponse({
|
|
173
173
|
url: 'http://localhost:8080/api/foos',
|
|
@@ -44,7 +44,7 @@ describe('Alert Component', () => {
|
|
|
44
44
|
mockAlertService = TestBed.inject(AlertService);
|
|
45
45
|
});
|
|
46
46
|
|
|
47
|
-
it('
|
|
47
|
+
it('should call alertService.get on init', () => {
|
|
48
48
|
// WHEN
|
|
49
49
|
comp.ngOnInit();
|
|
50
50
|
|
|
@@ -52,7 +52,7 @@ describe('Alert Component', () => {
|
|
|
52
52
|
expect(mockAlertService.get).toHaveBeenCalled();
|
|
53
53
|
});
|
|
54
54
|
|
|
55
|
-
it('
|
|
55
|
+
it('should call alertService.clear on destroy', () => {
|
|
56
56
|
// WHEN
|
|
57
57
|
comp.ngOnDestroy();
|
|
58
58
|
|
|
@@ -30,7 +30,7 @@ import TranslateDirective from '../language/translate.directive';
|
|
|
30
30
|
<%_ if (enableTranslation) { _%>
|
|
31
31
|
<div <%= jhiPrefix %>Translate="global.item-count" [translateValues]="{ first: first(), second: second(), total: total() }"></div>
|
|
32
32
|
<%_ } else { _%>
|
|
33
|
-
<div>__jhiTransformTranslate__('global.item-count')</div>
|
|
33
|
+
<div>__jhiTransformTranslate__('global.item-count', { "first": "{{ first() }}", "second": "{{ second() }}", "total": "{{ total() }}" })</div>
|
|
34
34
|
<%_ } _%>
|
|
35
35
|
`,
|
|
36
36
|
<%_ if (enableTranslation) { _%>
|
|
@@ -18,7 +18,10 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import BaseApplicationGenerator from '../base-application/index.js';
|
|
20
20
|
export default class JHipsterAppGenerator extends BaseApplicationGenerator {
|
|
21
|
-
[
|
|
21
|
+
[BaseApplicationGenerator.INITIALIZING]: any;
|
|
22
|
+
[BaseApplicationGenerator.CONFIGURING]: any;
|
|
23
|
+
[BaseApplicationGenerator.COMPOSING_COMPONENT]: any;
|
|
24
|
+
[BaseApplicationGenerator.WRITING]: import("../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../lib/types/application/tasks.js").WritingTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>, "cleanupOldFilesTask">;
|
|
22
25
|
beforeQueue(): Promise<void>;
|
|
23
26
|
get initializing(): import("../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../lib/types/base/tasks.js").TaskParamWithControl, "validate" | "validateNode" | "checkForNewJHVersion">;
|
|
24
27
|
get configuring(): import("../../lib/types/base/tasks.js").GenericTaskGroup<any, import("../../lib/types/base/tasks.js").TaskParamWithControl, "setup" | "defaults" | "fixConfig" | "loadGlobalConfig">;
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
* @param lineEnding
|
|
24
24
|
* @returns normalized line ending string
|
|
25
25
|
*/
|
|
26
|
-
export declare function normalizeLineEndings(str: string, lineEnding:
|
|
26
|
+
export declare function normalizeLineEndings(str: string, lineEnding: '\n' | '\r\n'): string;
|
|
27
27
|
/**
|
|
28
28
|
* @private
|
|
29
29
|
* @deprecated
|
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
import type CoreGenerator from '../../base-core/index.js';
|
|
2
2
|
import type { CascatedEditFileCallback, EditFileCallback, NeedleCallback } from '../api.js';
|
|
3
|
+
type NeedleContentToAddCallback = {
|
|
4
|
+
/**
|
|
5
|
+
* Position of the needle start.
|
|
6
|
+
*/
|
|
7
|
+
needleIndex: number;
|
|
8
|
+
/**
|
|
9
|
+
* Position of the needle line's new line char.
|
|
10
|
+
*/
|
|
11
|
+
needleLineIndex: number;
|
|
12
|
+
needleIndent: number;
|
|
13
|
+
indentPrefix: string;
|
|
14
|
+
};
|
|
3
15
|
export type NeedleInsertion = {
|
|
4
16
|
needle: string;
|
|
5
17
|
/**
|
|
6
18
|
* Content to add.
|
|
7
19
|
*/
|
|
8
|
-
contentToAdd: string | string[] | ((content: string, options:
|
|
9
|
-
needleIndent: number;
|
|
10
|
-
indentPrefix: string;
|
|
11
|
-
}) => string);
|
|
20
|
+
contentToAdd: string | string[] | ((content: string, options: NeedleContentToAddCallback) => string);
|
|
12
21
|
contentToCheck?: string | RegExp;
|
|
13
22
|
/**
|
|
14
23
|
* check existing content ignoring white spaces and new lines.
|
|
@@ -38,7 +47,7 @@ type NeedleContentInsertion = NeedleInsertion & {
|
|
|
38
47
|
content: string;
|
|
39
48
|
};
|
|
40
49
|
/**
|
|
41
|
-
* Change spaces sequences and
|
|
50
|
+
* Change spaces sequences and characters that prettier breaks line (<>()) to allow any number of spaces or new line prefix
|
|
42
51
|
*/
|
|
43
52
|
export declare const convertToPrettierExpressions: (str: string) => string;
|
|
44
53
|
/**
|
|
@@ -19,10 +19,14 @@
|
|
|
19
19
|
import assert from 'assert';
|
|
20
20
|
import { escapeRegExp, kebabCase } from 'lodash-es';
|
|
21
21
|
import { joinCallbacks } from './write-files.js';
|
|
22
|
+
import { normalizeLineEndings } from './contents.js';
|
|
22
23
|
/**
|
|
23
|
-
* Change spaces sequences and
|
|
24
|
+
* Change spaces sequences and characters that prettier breaks line (<>()) to allow any number of spaces or new line prefix
|
|
24
25
|
*/
|
|
25
|
-
export const convertToPrettierExpressions = (str) => str
|
|
26
|
+
export const convertToPrettierExpressions = (str) => str
|
|
27
|
+
.replace(/(<|\\\()(?! )/g, '$1\\n?[\\s]*')
|
|
28
|
+
.replace(/(?! )(>|\\\))/g, ',?\\n?[\\s]*$1')
|
|
29
|
+
.replace(/\s+/g, '[\\s\\n]*');
|
|
26
30
|
/**
|
|
27
31
|
* Check if contentToCheck existing in content
|
|
28
32
|
*
|
|
@@ -58,29 +62,32 @@ export const insertContentBeforeNeedle = ({ content, contentToAdd, needle, autoI
|
|
|
58
62
|
assert(needle, 'needle is required');
|
|
59
63
|
assert(content, 'content is required');
|
|
60
64
|
assert(contentToAdd, 'contentToAdd is required');
|
|
65
|
+
const isCrLr = content.includes('\r\n');
|
|
66
|
+
content = isCrLr ? normalizeLineEndings(content, '\n') : content;
|
|
67
|
+
const lineEnding = isCrLr ? '\r\n' : '\n';
|
|
61
68
|
needle = needle.includes('jhipster-needle-') ? needle : `jhipster-needle-${needle}`;
|
|
62
|
-
|
|
63
|
-
|
|
69
|
+
const regexp = new RegExp(`(?://|<!--|/\\*|#) ${needle}(?:$|\n| )`, 'g');
|
|
70
|
+
const firstMatch = regexp.exec(content);
|
|
64
71
|
if (!firstMatch) {
|
|
65
|
-
|
|
66
|
-
firstMatch = regexp.exec(content);
|
|
67
|
-
if (!firstMatch) {
|
|
68
|
-
return null;
|
|
69
|
-
}
|
|
72
|
+
return null;
|
|
70
73
|
}
|
|
71
74
|
// Replacements using functions allows to replace multiples needles
|
|
72
75
|
if (typeof contentToAdd !== 'function' && regexp.exec(content)) {
|
|
73
76
|
throw new Error(`Multiple needles found for ${needle}`);
|
|
74
77
|
}
|
|
75
78
|
const needleIndex = firstMatch.index;
|
|
76
|
-
const needleLineIndex = content.lastIndexOf('\n', needleIndex);
|
|
77
|
-
const beforeContent = content.substring(0, needleLineIndex
|
|
78
|
-
const afterContent = content.substring(needleLineIndex
|
|
79
|
-
|
|
80
|
-
const needleLine = afterContent.split('\n', 2)[0];
|
|
81
|
-
const needleIndent = needleLine.length - needleLine.trimStart().length;
|
|
79
|
+
const needleLineIndex = content.lastIndexOf('\n', needleIndex) + 1;
|
|
80
|
+
const beforeContent = content.substring(0, needleLineIndex);
|
|
81
|
+
const afterContent = content.substring(needleLineIndex);
|
|
82
|
+
const needleIndent = needleIndex - needleLineIndex;
|
|
82
83
|
if (typeof contentToAdd === 'function') {
|
|
83
|
-
|
|
84
|
+
const newContent = contentToAdd(content, {
|
|
85
|
+
needleIndex,
|
|
86
|
+
needleLineIndex,
|
|
87
|
+
needleIndent,
|
|
88
|
+
indentPrefix: ' '.repeat(needleIndent),
|
|
89
|
+
});
|
|
90
|
+
return isCrLr ? normalizeLineEndings(newContent, lineEnding) : newContent;
|
|
84
91
|
}
|
|
85
92
|
contentToAdd = Array.isArray(contentToAdd) ? contentToAdd : [contentToAdd];
|
|
86
93
|
if (autoIndent) {
|
|
@@ -110,7 +117,8 @@ export const insertContentBeforeNeedle = ({ content, contentToAdd, needle, autoI
|
|
|
110
117
|
});
|
|
111
118
|
contentToAdd = contentToAdd.map(line => (line.length > identToRemove ? line.substring(identToRemove) : ''));
|
|
112
119
|
}
|
|
113
|
-
|
|
120
|
+
const newContent = `${beforeContent}${contentToAdd.join('\n')}\n${afterContent}`;
|
|
121
|
+
return isCrLr ? normalizeLineEndings(newContent, lineEnding) : newContent;
|
|
114
122
|
};
|
|
115
123
|
/**
|
|
116
124
|
* Create an callback to insert the new content into existing content.
|
|
@@ -112,9 +112,8 @@ export const entityDefaultConfig = {
|
|
|
112
112
|
},
|
|
113
113
|
};
|
|
114
114
|
export default function prepareEntity(entityWithConfig, generator, application) {
|
|
115
|
-
const { applicationTypeMicroservice, microfrontend } = application;
|
|
115
|
+
const { applicationTypeMicroservice, microfrontend, dtoSuffix = '' } = application;
|
|
116
116
|
const entityName = upperFirst(entityWithConfig.name);
|
|
117
|
-
const entitySuffix = entityWithConfig.entitySuffix ?? application.entitySuffix;
|
|
118
117
|
mutateData(entityWithConfig, entityDefaultConfig, BASE_TEMPLATE_DATA);
|
|
119
118
|
if (entityWithConfig.changelogDate) {
|
|
120
119
|
try {
|
|
@@ -139,42 +138,31 @@ export default function prepareEntity(entityWithConfig, generator, application)
|
|
|
139
138
|
}
|
|
140
139
|
mutateData(entityWithConfig, {
|
|
141
140
|
entityNameCapitalized: entityName,
|
|
141
|
+
entityNamePlural: pluralize(entityName),
|
|
142
|
+
entityNamePluralizedAndSpinalCased: ({ entityNamePlural }) => kebabCase(entityNamePlural),
|
|
142
143
|
entityClass: upperFirst(entityName),
|
|
144
|
+
entityClassPlural: ({ entityNamePlural }) => upperFirst(entityNamePlural),
|
|
143
145
|
entityInstance: lowerFirst(entityName),
|
|
146
|
+
entityInstancePlural: ({ entityNamePlural }) => lowerFirst(entityNamePlural),
|
|
144
147
|
entityTableName: hibernateSnakeCase(entityName),
|
|
145
|
-
entityNamePlural: pluralize(entityName),
|
|
146
148
|
entityAuthority: entityWithConfig.adminEntity ? 'ROLE_ADMIN' : undefined,
|
|
147
149
|
});
|
|
150
|
+
const entitySuffix = entityWithConfig.entitySuffix ?? application.entitySuffix;
|
|
151
|
+
const dto = entityWithConfig.dto && entityWithConfig.dto !== NO_DTO;
|
|
148
152
|
mutateData(entityWithConfig, {
|
|
149
153
|
persistClass: `${entityWithConfig.entityClass}${entitySuffix ?? ''}`,
|
|
150
154
|
persistInstance: `${entityWithConfig.entityInstance}${entitySuffix ?? ''}`,
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
dtoClass: `${entityWithConfig.entityClass}${dtoSuffix}`,
|
|
157
|
-
dtoInstance: `${entityWithConfig.entityInstance}${dtoSuffix}`,
|
|
158
|
-
restClass: ({ dtoClass }) => dtoClass,
|
|
159
|
-
restInstance: ({ dtoInstance }) => dtoInstance,
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
mutateData(entityWithConfig, {
|
|
164
|
-
restClass: ({ persistClass }) => persistClass,
|
|
165
|
-
restInstance: ({ persistInstance }) => persistInstance,
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
mutateData(entityWithConfig, {
|
|
169
|
-
entityNamePluralizedAndSpinalCased: kebabCase(entityWithConfig.entityNamePlural),
|
|
170
|
-
entityClassPlural: upperFirst(entityWithConfig.entityNamePlural),
|
|
171
|
-
entityInstancePlural: lowerFirst(entityWithConfig.entityNamePlural),
|
|
155
|
+
// Even if dto is not used, we need to generate the dtoClass and dtoInstance is added to avoid errors in rendered relationships templates. The resulting class will not exist then.
|
|
156
|
+
dtoClass: `${entityWithConfig.entityClass}${dtoSuffix}`,
|
|
157
|
+
dtoInstance: `${entityWithConfig.entityInstance}${dtoSuffix}`,
|
|
158
|
+
restClass: dto ? ({ dtoClass }) => dtoClass : ({ persistClass }) => persistClass,
|
|
159
|
+
restInstance: dto ? ({ dtoInstance }) => dtoInstance : ({ persistInstance }) => persistInstance,
|
|
172
160
|
});
|
|
173
161
|
mutateData(entityWithConfig, {
|
|
174
162
|
// Implement i18n variant ex: 'male', 'female' when applied
|
|
175
163
|
entityI18nVariant: 'default',
|
|
176
|
-
entityClassHumanized: startCase(
|
|
177
|
-
entityClassPluralHumanized: startCase(
|
|
164
|
+
entityClassHumanized: ({ entityNameCapitalized }) => startCase(entityNameCapitalized),
|
|
165
|
+
entityClassPluralHumanized: ({ entityNamePlural }) => startCase(entityNamePlural),
|
|
178
166
|
});
|
|
179
167
|
mutateData(entityWithConfig, {
|
|
180
168
|
__override__: false,
|