generator-jhipster 8.5.0 → 8.6.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 +3 -4
- package/dist/cli/commands.mjs +2 -0
- package/dist/cli/environment-builder.mjs +5 -0
- package/dist/cli/program.mjs +10 -4
- package/dist/generators/angular/entity-files-angular.js +6 -7
- package/dist/generators/angular/resources/package.json +17 -17
- package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.component.spec.ts.ejs +4 -3
- package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.service.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.spec.ts.ejs +4 -5
- package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.service.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.spec.ts.ejs +4 -3
- package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.service.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.spec.ts.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.service.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.spec.ts.ejs +2 -3
- package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.service.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.component.spec.ts.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.spec.ts.ejs +3 -4
- package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.component.spec.ts.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.service.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.component.spec.ts.ejs +4 -4
- package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.service.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/admin/health/modal/health-modal.component.spec.ts.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.spec.ts.ejs +4 -3
- package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.service.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/jvm-threads/jvm-threads.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.spec.ts.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.component.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.service.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.spec.ts.ejs +3 -3
- 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/admin/user-management/list/user-management.component.spec.ts.ejs +3 -4
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/service/user-management.service.spec.ts.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/app-page-title-strategy.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/app.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/app.config.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/config/uib-pagination.config.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/core/auth/account.service.spec.ts.ejs +7 -5
- package/dist/generators/angular/templates/src/main/webapp/app/core/auth/auth-jwt.service.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/core/interceptor/auth-expired.interceptor.ts.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/core/interceptor/auth.interceptor.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/core/interceptor/error-handler.interceptor.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/core/util/alert.service.spec.ts.ejs +6 -6
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.spec.ts.ejs +3 -4
- 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_/list/_entityFile_.component.spec.ts.ejs +2 -3
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/route/_entityFile_-routing-resolve.service.spec.ts.ejs +2 -3
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/service/_entityFile_.service.spec.ts.ejs +5 -3
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.spec.ts.ejs +2 -3
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/error/error.component.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/active-menu.directive.ts.ejs +3 -3
- 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 +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/shared/auth/has-any-authority.directive.spec.ts.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/shared/language/find-language-from-key.pipe.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/shared/language/translation.module.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort-by.directive.spec.ts.ejs +10 -10
- package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort-by.directive.ts.ejs +6 -7
- package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort.directive.spec.ts.ejs +4 -4
- package/dist/generators/angular/templates/src/main/webapp/content/scss/global.scss.ejs +2 -0
- package/dist/generators/base/command.js +1 -0
- package/dist/generators/base/generator.js +7 -12
- package/dist/generators/base/internal/command.js +13 -0
- package/dist/generators/base/internal/index.js +1 -0
- package/dist/generators/base/shared-data.js +74 -2
- package/dist/generators/base/support/config.js +1 -1
- package/dist/generators/base/support/jhipster7-context.js +155 -52
- package/dist/generators/base-application/generator.js +1 -1
- package/dist/generators/base-core/generator.js +93 -55
- package/dist/generators/bootstrap/generator.js +1 -1
- package/dist/generators/bootstrap/support/eslint-worker.js +14 -12
- package/dist/generators/bootstrap/support/multi-step-transform/template-file.js +6 -1
- package/dist/generators/bootstrap-application/generator.js +1 -1
- package/dist/generators/bootstrap-application-client/generator.js +5 -1
- package/dist/generators/ci-cd/generator.js +1 -1
- package/dist/generators/ci-cd/templates/docker-registry.yml.ejs +0 -1
- package/dist/generators/ci-cd/templates/jenkins/jenkins.yml.ejs +0 -1
- package/dist/generators/client/generator.js +2 -3
- package/dist/generators/client/resources/package.json +3 -3
- package/dist/generators/client/support/filter-entities.js +1 -1
- package/dist/generators/client/templates/.eslintignore.ejs +9 -5
- package/dist/generators/client/templates/README.md.jhi.client.ejs +29 -20
- package/dist/generators/client/templates/src/main/webapp/index.html.ejs +1 -1
- package/dist/generators/common/resources/package.json +1 -1
- package/dist/generators/docker/templates/docker/keycloak.yml.ejs +2 -1
- package/dist/generators/docker/templates/docker/mariadb.yml.ejs +1 -1
- package/dist/generators/docker/templates/docker/mysql.yml.ejs +1 -2
- package/dist/generators/docker/templates/docker/realm-config/keycloak-health-check.sh +2 -2
- package/dist/generators/docker-compose/templates/docker-compose.yml.ejs +1 -0
- package/dist/generators/docker-compose/templates/realm-config/keycloak-health-check.sh +2 -2
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/AuthorizationHeaderUtil.java.ejs +1 -1
- package/dist/generators/gatling/generator.js +0 -1
- package/dist/generators/generate-blueprint/files.js +3 -1
- package/dist/generators/generate-blueprint/generator.js +17 -7
- package/dist/generators/generate-blueprint/resources/package.json +2 -0
- package/dist/generators/generate-blueprint/templates/.blueprint/github-build-matrix/generator.mjs.ejs +2 -6
- package/dist/generators/generate-blueprint/templates/.github/workflows/build-cache.yml.ejs +39 -0
- package/dist/generators/generate-blueprint/templates/.github/workflows/samples.yml.ejs +105 -0
- package/dist/generators/generate-blueprint/templates/.prettierignore.jhi.blueprint.ejs +1 -1
- package/dist/generators/generate-blueprint/templates/eslint.config.js.ejs +33 -0
- package/dist/generators/generator-constants.js +2 -2
- package/dist/generators/gradle/templates/gradle/wrapper/gradle-wrapper.properties +1 -1
- package/dist/generators/heroku/generator.js +1 -1
- package/dist/generators/info/support/extract-info.js +60 -0
- package/dist/generators/info/support/index.js +1 -0
- package/dist/generators/init/resources/.node-version +1 -1
- package/dist/generators/init/resources/package.json +2 -2
- package/dist/generators/java/generators/bootstrap/generator.js +9 -2
- package/dist/generators/java/generators/build-tool/command.js +2 -2
- package/dist/generators/java/generators/node/templates/npmw +1 -5
- package/dist/generators/java/support/add-java-annotation.js +1 -1
- package/dist/generators/jdl/generator.js +6 -6
- package/dist/generators/kubernetes/templates/db/mysql.yml.ejs +1 -0
- package/dist/generators/languages/generator.js +1 -0
- package/dist/generators/liquibase/templates/src/main/java/_package_/config/LiquibaseConfiguration.java.ejs +1 -1
- package/dist/generators/maven/command.js +15 -0
- package/dist/generators/maven/generator.js +6 -1
- package/dist/generators/maven/index.js +1 -0
- package/dist/generators/maven/internal/xml-store.js +7 -6
- package/dist/generators/maven/support/pom-store.js +24 -9
- package/dist/generators/maven/templates/.mvn/wrapper/maven-wrapper.properties +1 -1
- package/dist/generators/react/entity-files-react.js +7 -7
- package/dist/generators/react/resources/package.json +12 -12
- package/dist/generators/react/templates/src/main/webapp/app/app.tsx.ejs +9 -0
- package/dist/generators/react/templates/src/main/webapp/app/config/translation.ts.ejs +4 -0
- package/dist/generators/react/templates/src/main/webapp/app/modules/home/home.tsx.ejs +15 -1
- package/dist/generators/react/templates/src/main/webapp/app/modules/login/login-redirect.tsx.ejs +4 -0
- package/dist/generators/react/templates/src/main/webapp/app/modules/login/logout.tsx.ejs +5 -3
- package/dist/generators/react/templates/src/main/webapp/app/routes.tsx.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/shared/auth/private-route.spec.tsx.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/shared/auth/private-route.tsx.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/shared/layout/header/header.tsx.ejs +0 -9
- package/dist/generators/react/templates/src/main/webapp/app/shared/layout/menus/account.spec.tsx.ejs +1 -3
- package/dist/generators/react/templates/src/main/webapp/app/shared/layout/menus/account.tsx.ejs +29 -6
- package/dist/generators/react/templates/src/main/webapp/app/shared/util/url-utils.ts.ejs +1 -1
- package/dist/generators/server/generator.js +7 -5
- package/dist/generators/server/resources/Dockerfile +5 -5
- package/dist/generators/server/resources/gradle/libs.versions.toml +5 -5
- package/dist/generators/server/resources/pom.xml +11 -11
- package/dist/generators/server/templates/gradle/profile_dev.gradle.ejs +1 -1
- package/dist/generators/server/templates/gradle/profile_prod.gradle.ejs +1 -1
- package/dist/generators/server/templates/pom.xml.ejs +0 -26
- package/dist/generators/server/templates/src/main/java/_package_/config/AsyncConfiguration.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/config/SecurityJwtConfiguration.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/config/WebConfigurer.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/security/DomainUserDetailsService.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/security/PersistentTokenRememberMeServices.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/security/oauth2/AudienceValidator.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/service/MailService.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/service/dto/UserDTO.java.ejs +11 -0
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/AccountResource.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/AccountResource_oauth2.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/AccountResource_skipUserManagement.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/AuthenticateController.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/resources/config/application-dev.yml.ejs +1 -1
- package/dist/generators/server/templates/src/main/resources/config/application.yml.ejs +1 -1
- package/dist/generators/server/templates/src/main/resources/config/bootstrap.yml.ejs +1 -1
- package/dist/generators/spring-boot/generator.js +4 -2
- package/dist/generators/spring-boot/resources/spring-boot-dependencies.pom +105 -105
- package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/service/UserService.java.ejs +1 -1
- package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/service/_entityClass_QueryService.java.ejs +1 -1
- package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/service/impl/_entityClass_ServiceImpl.java.ejs +1 -1
- package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/web/rest/PublicUserResource.java.ejs +1 -1
- package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/web/rest/UserResource.java.ejs +1 -1
- package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/web/rest/_entityClass_Resource.java.ejs +1 -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 +3 -3
- package/dist/generators/spring-cloud/generators/gateway/command.js +5 -0
- package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/main/java/_package_/broker/KafkaConsumer_imperative.java.ejs +1 -1
- package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/main/java/_package_/broker/KafkaConsumer_reactive.java.ejs +1 -1
- package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/main/java/_package_/web/rest/KafkaResource_imperative.java.ejs +1 -1
- package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/main/java/_package_/web/rest/KafkaResource_reactive.java.ejs +1 -1
- package/dist/generators/spring-data-couchbase/templates/src/main/java/_package_/config/DatabaseConfiguration.java.ejs +1 -1
- package/dist/generators/spring-data-neo4j/templates/src/main/java/_package_/config/DatabaseConfiguration.java_neo4j.ejs +18 -2
- package/dist/generators/spring-data-relational/templates/src/main/java/_package_/config/DatabaseConfiguration.java.ejs +1 -1
- package/dist/generators/vue/entity-files-vue.js +7 -7
- package/dist/generators/vue/resources/package.json +11 -11
- package/dist/generators/vue/templates/.eslintrc.cjs.ejs +7 -0
- package/dist/lib/eslint/base.js +25 -0
- package/dist/lib/eslint/recommended.js +22 -0
- package/dist/testing/github.js +32 -0
- package/dist/testing/helpers.js +9 -0
- package/dist/testing/index.js +2 -0
- package/dist/testing/sample-config.js +31 -0
- package/dist/types/cli/commands.d.mts +2 -0
- package/dist/types/cli/environment-builder.d.mts +1 -0
- package/dist/types/generators/base/api.d.ts +14 -7
- package/dist/types/generators/base/internal/command.d.ts +2 -0
- package/dist/types/generators/base/internal/index.d.ts +1 -0
- package/dist/types/generators/base/shared-data.d.ts +10 -1
- package/dist/types/generators/base/types.d.ts +12 -0
- package/dist/types/generators/base-application/types.d.ts +11 -0
- package/dist/types/generators/base-core/generator.d.ts +2 -1
- package/dist/types/generators/generator-constants.d.ts +1 -1
- package/dist/types/generators/info/support/extract-info.d.ts +14 -0
- package/dist/types/generators/info/support/index.d.ts +1 -0
- package/dist/types/generators/java/types.d.ts +12 -0
- package/dist/types/generators/maven/internal/xml-store.d.ts +3 -2
- package/dist/types/generators/maven/support/pom-store.d.ts +5 -2
- package/dist/types/generators/maven/types.d.ts +1 -0
- package/dist/types/generators/server/types.d.ts +2 -1
- package/dist/types/lib/eslint/base.d.ts +20 -0
- package/dist/types/lib/eslint/recommended.d.ts +20 -0
- package/dist/types/testing/github.d.ts +11 -0
- package/dist/types/testing/helpers.d.ts +8 -0
- package/dist/types/testing/index.d.ts +2 -0
- package/dist/types/testing/sample-config.d.ts +4 -0
- package/package.json +22 -18
- package/dist/generators/generate-blueprint/templates/.eslintrc.json.ejs +0 -35
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
See the License for the specific language governing permissions and
|
|
17
17
|
limitations under the License.
|
|
18
18
|
-%>
|
|
19
|
-
import { Component, DebugElement, inject } from '@angular/core';
|
|
19
|
+
import { Component, DebugElement, Type, inject } from '@angular/core';
|
|
20
20
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
21
21
|
import { By } from '@angular/platform-browser';
|
|
22
22
|
import { FaIconComponent, FaIconLibrary } from '@fortawesome/angular-fontawesome';
|
|
@@ -72,58 +72,58 @@ describe('Directive: SortByDirective', () => {
|
|
|
72
72
|
it('should have a neutral state for predicate column and undefined order value', () => {
|
|
73
73
|
// GIVEN
|
|
74
74
|
component.sortState.set({ predicate: 'name' });
|
|
75
|
-
const sortByDirective = tableHead.injector.get(SortByDirective);
|
|
75
|
+
const sortByDirective = tableHead.injector.get(SortByDirective as Type<SortByDirective>);
|
|
76
76
|
|
|
77
77
|
// WHEN
|
|
78
78
|
fixture.detectChanges();
|
|
79
79
|
|
|
80
80
|
// THEN
|
|
81
81
|
expect(sortByDirective.<%= jhiPrefix %>SortBy).toEqual('name');
|
|
82
|
-
expect(sortByDirective.iconComponent?.icon).toEqual(faSort.iconName);
|
|
82
|
+
expect(sortByDirective.iconComponent()?.icon).toEqual(faSort.iconName);
|
|
83
83
|
});
|
|
84
84
|
|
|
85
85
|
it('should have an asc state for predicate column and true asc value', () => {
|
|
86
86
|
// GIVEN
|
|
87
87
|
component.sortState.set({ predicate: 'name', order: 'asc' });
|
|
88
|
-
const sortByDirective = tableHead.injector.get(SortByDirective);
|
|
88
|
+
const sortByDirective = tableHead.injector.get(SortByDirective as Type<SortByDirective>);
|
|
89
89
|
|
|
90
90
|
// WHEN
|
|
91
91
|
fixture.detectChanges();
|
|
92
92
|
|
|
93
93
|
// THEN
|
|
94
94
|
expect(sortByDirective.<%= jhiPrefix %>SortBy).toEqual('name');
|
|
95
|
-
expect(sortByDirective.iconComponent?.icon).toEqual(faSortUp.iconName);
|
|
95
|
+
expect(sortByDirective.iconComponent()?.icon).toEqual(faSortUp.iconName);
|
|
96
96
|
});
|
|
97
97
|
|
|
98
98
|
it('should have a desc state for predicate column and desc value', () => {
|
|
99
99
|
// GIVEN
|
|
100
100
|
component.sortState.set({ predicate: 'name', order: 'desc' });
|
|
101
|
-
const sortByDirective = tableHead.injector.get(SortByDirective);
|
|
101
|
+
const sortByDirective = tableHead.injector.get(SortByDirective as Type<SortByDirective>);
|
|
102
102
|
|
|
103
103
|
// WHEN
|
|
104
104
|
fixture.detectChanges();
|
|
105
105
|
|
|
106
106
|
// THEN
|
|
107
107
|
expect(sortByDirective.<%= jhiPrefix %>SortBy).toEqual('name');
|
|
108
|
-
expect(sortByDirective.iconComponent?.icon).toEqual(faSortDown.iconName);
|
|
108
|
+
expect(sortByDirective.iconComponent()?.icon).toEqual(faSortDown.iconName);
|
|
109
109
|
});
|
|
110
110
|
|
|
111
111
|
it('should have a neutral state for non-predicate column', () => {
|
|
112
112
|
// GIVEN
|
|
113
113
|
component.sortState.set({ predicate: 'non-existing-column', order: 'asc' });
|
|
114
|
-
const sortByDirective = tableHead.injector.get(SortByDirective);
|
|
114
|
+
const sortByDirective = tableHead.injector.get(SortByDirective as Type<SortByDirective>);
|
|
115
115
|
|
|
116
116
|
// WHEN
|
|
117
117
|
fixture.detectChanges();
|
|
118
118
|
|
|
119
119
|
// THEN
|
|
120
120
|
expect(sortByDirective.<%= jhiPrefix %>SortBy).toEqual('name');
|
|
121
|
-
expect(sortByDirective.iconComponent?.icon).toEqual(faSort.iconName);
|
|
121
|
+
expect(sortByDirective.iconComponent()?.icon).toEqual(faSort.iconName);
|
|
122
122
|
});
|
|
123
123
|
|
|
124
124
|
it('multiple clicks at same component, should call SortDirective sort', () => {
|
|
125
125
|
// GIVEN
|
|
126
|
-
const sortDirective = tableHead.injector.get(SortDirective);
|
|
126
|
+
const sortDirective = tableHead.injector.get(SortDirective as Type<SortDirective>);
|
|
127
127
|
sortDirective.sort = jest.fn();
|
|
128
128
|
|
|
129
129
|
// WHEN
|
package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort-by.directive.ts.ejs
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
See the License for the specific language governing permissions and
|
|
17
17
|
limitations under the License.
|
|
18
18
|
-%>
|
|
19
|
-
import {
|
|
19
|
+
import { Directive, Host, HostListener, Input, contentChild, effect } from '@angular/core';
|
|
20
20
|
import { FaIconComponent } from '@fortawesome/angular-fontawesome';
|
|
21
21
|
import { faSort, faSortDown, faSortUp, IconDefinition } from '@fortawesome/free-solid-svg-icons';
|
|
22
22
|
|
|
@@ -29,8 +29,7 @@ import { SortDirective } from './sort.directive';
|
|
|
29
29
|
export class SortByDirective {
|
|
30
30
|
@Input() <%= jhiPrefix %>SortBy!: string;
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
iconComponent?: FaIconComponent;
|
|
32
|
+
iconComponent = contentChild(FaIconComponent);
|
|
34
33
|
|
|
35
34
|
protected sortIcon = faSort;
|
|
36
35
|
protected sortAscIcon = faSortUp;
|
|
@@ -38,21 +37,21 @@ export class SortByDirective {
|
|
|
38
37
|
|
|
39
38
|
constructor(@Host() private sort: SortDirective) {
|
|
40
39
|
effect(() => {
|
|
41
|
-
if (this.iconComponent) {
|
|
40
|
+
if (this.iconComponent()) {
|
|
42
41
|
let icon: IconDefinition = this.sortIcon;
|
|
43
42
|
const { predicate, order } = this.sort.sortState();
|
|
44
43
|
if (predicate === this.<%= jhiPrefix %>SortBy && order !== undefined) {
|
|
45
44
|
icon = order === 'asc' ? this.sortAscIcon : this.sortDescIcon;
|
|
46
45
|
}
|
|
47
|
-
this.iconComponent
|
|
48
|
-
this.iconComponent
|
|
46
|
+
this.iconComponent()!.icon = icon.iconName;
|
|
47
|
+
this.iconComponent()!.render();
|
|
49
48
|
}
|
|
50
49
|
});
|
|
51
50
|
}
|
|
52
51
|
|
|
53
52
|
@HostListener('click')
|
|
54
53
|
onClick(): void {
|
|
55
|
-
if (this.iconComponent) {
|
|
54
|
+
if (this.iconComponent()) {
|
|
56
55
|
this.sort.sort(this.<%= jhiPrefix %>SortBy);
|
|
57
56
|
}
|
|
58
57
|
}
|
package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort.directive.spec.ts.ejs
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
See the License for the specific language governing permissions and
|
|
17
17
|
limitations under the License.
|
|
18
18
|
-%>
|
|
19
|
-
import { Component, DebugElement } from '@angular/core';
|
|
19
|
+
import { Component, DebugElement, Type } from '@angular/core';
|
|
20
20
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
21
21
|
import { By } from '@angular/platform-browser';
|
|
22
22
|
|
|
@@ -57,7 +57,7 @@ describe('Directive: SortDirective', () => {
|
|
|
57
57
|
|
|
58
58
|
it('should invoke sortChange function', () => {
|
|
59
59
|
// GIVEN
|
|
60
|
-
const sortDirective = tableRow.injector.get(SortDirective);
|
|
60
|
+
const sortDirective = tableRow.injector.get(SortDirective as Type<SortDirective>);
|
|
61
61
|
|
|
62
62
|
// WHEN
|
|
63
63
|
fixture.detectChanges();
|
|
@@ -70,7 +70,7 @@ describe('Directive: SortDirective', () => {
|
|
|
70
70
|
|
|
71
71
|
it('should change sort order to descending, neutral when same field is sorted again', () => {
|
|
72
72
|
// GIVEN
|
|
73
|
-
const sortDirective = tableRow.injector.get(SortDirective);
|
|
73
|
+
const sortDirective = tableRow.injector.get(SortDirective as Type<SortDirective>);
|
|
74
74
|
|
|
75
75
|
// WHEN
|
|
76
76
|
fixture.detectChanges();
|
|
@@ -89,7 +89,7 @@ describe('Directive: SortDirective', () => {
|
|
|
89
89
|
|
|
90
90
|
it('should change sort order to ascending when different field is sorted', () => {
|
|
91
91
|
// GIVEN
|
|
92
|
-
const sortDirective = tableRow.injector.get(SortDirective);
|
|
92
|
+
const sortDirective = tableRow.injector.get(SortDirective as Type<SortDirective>);
|
|
93
93
|
|
|
94
94
|
// WHEN
|
|
95
95
|
fixture.detectChanges();
|
|
@@ -568,23 +568,18 @@ export default class JHipsterBaseBlueprintGenerator extends CoreGenerator {
|
|
|
568
568
|
return;
|
|
569
569
|
}
|
|
570
570
|
const mainGeneratorJhipsterVersion = packageJson.version;
|
|
571
|
-
const
|
|
572
|
-
|
|
573
|
-
|
|
571
|
+
const compatibleJhipsterRange = blueprintPackageJson.engines?.['generator-jhipster'] ??
|
|
572
|
+
blueprintPackageJson.dependencies?.['generator-jhipster'] ??
|
|
573
|
+
blueprintPackageJson.peerDependencies?.['generator-jhipster'];
|
|
574
|
+
if (compatibleJhipsterRange) {
|
|
575
|
+
if (!semver.valid(compatibleJhipsterRange) && !semver.validRange(compatibleJhipsterRange)) {
|
|
574
576
|
this.log.verboseInfo(`Blueprint ${blueprintPkgName} contains generator-jhipster dependency with non comparable version`);
|
|
575
577
|
return;
|
|
576
578
|
}
|
|
577
|
-
if (semver.satisfies(mainGeneratorJhipsterVersion,
|
|
579
|
+
if (semver.satisfies(mainGeneratorJhipsterVersion, compatibleJhipsterRange, { includePrerelease: true })) {
|
|
578
580
|
return;
|
|
579
581
|
}
|
|
580
|
-
throw new Error(`The installed ${chalk.yellow(blueprintPkgName)} blueprint targets JHipster v${
|
|
581
|
-
}
|
|
582
|
-
const blueprintPeerJhipsterVersion = blueprintPackageJson.peerDependencies && blueprintPackageJson.peerDependencies['generator-jhipster'];
|
|
583
|
-
if (blueprintPeerJhipsterVersion) {
|
|
584
|
-
if (semver.satisfies(mainGeneratorJhipsterVersion, blueprintPeerJhipsterVersion, { includePrerelease: true })) {
|
|
585
|
-
return;
|
|
586
|
-
}
|
|
587
|
-
throw new Error(`The installed ${chalk.yellow(blueprintPkgName)} blueprint targets JHipster ${blueprintPeerJhipsterVersion} and is not compatible with this JHipster version. Either update the blueprint or JHipster. You can also disable this check using --skip-checks at your own risk`);
|
|
582
|
+
throw new Error(`The installed ${chalk.yellow(blueprintPkgName)} blueprint targets JHipster v${compatibleJhipsterRange} and is not compatible with this JHipster version. Either update the blueprint or JHipster. You can also disable this check using --skip-checks at your own risk`);
|
|
588
583
|
}
|
|
589
584
|
this.log.warn(`Could not retrieve version of JHipster declared by blueprint '${blueprintPkgName}'`);
|
|
590
585
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const extractArgumentsFromConfigs = (configs) => {
|
|
2
|
+
if (!configs)
|
|
3
|
+
return {};
|
|
4
|
+
return Object.fromEntries(Object.entries(configs)
|
|
5
|
+
.filter(([_name, def]) => def.argument)
|
|
6
|
+
.map(([name, def]) => [
|
|
7
|
+
name,
|
|
8
|
+
{
|
|
9
|
+
description: def.description,
|
|
10
|
+
...def.argument,
|
|
11
|
+
},
|
|
12
|
+
]));
|
|
13
|
+
};
|
|
@@ -16,13 +16,30 @@
|
|
|
16
16
|
* See the License for the specific language governing permissions and
|
|
17
17
|
* limitations under the License.
|
|
18
18
|
*/
|
|
19
|
+
import { existsSync, readFileSync, statSync } from 'fs';
|
|
20
|
+
import { rm } from 'fs/promises';
|
|
21
|
+
import { isAbsolute, join, relative } from 'path';
|
|
22
|
+
import { lt as semverLessThan } from 'semver';
|
|
19
23
|
import { defaults } from 'lodash-es';
|
|
24
|
+
import { create } from 'mem-fs-editor';
|
|
25
|
+
import { GENERATOR_JHIPSTER } from '../generator-constants.js';
|
|
20
26
|
export default class SharedData {
|
|
21
27
|
_storage;
|
|
22
|
-
|
|
28
|
+
_editor;
|
|
29
|
+
_log;
|
|
30
|
+
_logCwd;
|
|
31
|
+
constructor(storage, { memFs, destinationPath, log, logCwd }, initialControl = {}) {
|
|
23
32
|
if (!storage) {
|
|
24
33
|
throw new Error('Storage is required for SharedData');
|
|
25
34
|
}
|
|
35
|
+
this._editor = create(memFs);
|
|
36
|
+
this._log = log;
|
|
37
|
+
this._logCwd = logCwd;
|
|
38
|
+
let jhipsterOldVersion;
|
|
39
|
+
if (existsSync(join(destinationPath, '.yo-rc.json'))) {
|
|
40
|
+
jhipsterOldVersion = JSON.parse(readFileSync(join(destinationPath, '.yo-rc.json'), 'utf-8').toString())[GENERATOR_JHIPSTER]
|
|
41
|
+
?.jhipsterVersion;
|
|
42
|
+
}
|
|
26
43
|
// Backward compatibility sharedData
|
|
27
44
|
this._storage = storage;
|
|
28
45
|
defaults(this._storage, {
|
|
@@ -34,7 +51,62 @@ export default class SharedData {
|
|
|
34
51
|
control: initialControl,
|
|
35
52
|
props: {},
|
|
36
53
|
});
|
|
37
|
-
this._storage.sharedApplication
|
|
54
|
+
defaults(this._storage.sharedApplication, {
|
|
55
|
+
nodeDependencies: {},
|
|
56
|
+
customizeTemplatePaths: [],
|
|
57
|
+
});
|
|
58
|
+
let customizeRemoveFiles = [];
|
|
59
|
+
const removeFiles = async (assertions, ...files) => {
|
|
60
|
+
if (typeof assertions === 'string') {
|
|
61
|
+
files = [assertions, ...files];
|
|
62
|
+
assertions = {};
|
|
63
|
+
}
|
|
64
|
+
for (const customize of customizeRemoveFiles) {
|
|
65
|
+
files = files.map(customize).filter(file => file);
|
|
66
|
+
}
|
|
67
|
+
const { removedInVersion } = assertions;
|
|
68
|
+
if (removedInVersion && jhipsterOldVersion && !semverLessThan(jhipsterOldVersion, removedInVersion)) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const absolutePaths = files.map(file => (isAbsolute(file) ? file : join(destinationPath, file)));
|
|
72
|
+
// Delete from memory fs to keep updated.
|
|
73
|
+
this._editor.delete(absolutePaths);
|
|
74
|
+
await Promise.all(absolutePaths.map(async (file) => {
|
|
75
|
+
const relativePath = relative(logCwd, file);
|
|
76
|
+
try {
|
|
77
|
+
if (statSync(file).isFile()) {
|
|
78
|
+
this._log.info(`Removing legacy file ${relativePath}`);
|
|
79
|
+
await rm(file, { force: true });
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
this._log.info(`Could not remove legacy file ${relativePath}`);
|
|
84
|
+
}
|
|
85
|
+
}));
|
|
86
|
+
};
|
|
87
|
+
defaults(this._storage.control, {
|
|
88
|
+
jhipsterOldVersion,
|
|
89
|
+
removeFiles,
|
|
90
|
+
customizeRemoveFiles: [],
|
|
91
|
+
cleanupFiles: async (cleanup) => {
|
|
92
|
+
await Promise.all(Object.entries(cleanup).map(async ([version, files]) => {
|
|
93
|
+
const stringFiles = [];
|
|
94
|
+
for (const file of files) {
|
|
95
|
+
if (Array.isArray(file)) {
|
|
96
|
+
const [condition, ...fileParts] = file;
|
|
97
|
+
if (condition) {
|
|
98
|
+
stringFiles.push(join(...fileParts));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
stringFiles.push(file);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
await removeFiles({ removedInVersion: version }, ...stringFiles);
|
|
106
|
+
}));
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
customizeRemoveFiles = this._storage.control.customizeRemoveFiles;
|
|
38
110
|
}
|
|
39
111
|
getSource() {
|
|
40
112
|
return this._storage.sharedSource;
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
/* eslint-disable no-console */
|
|
2
2
|
import chalk from 'chalk';
|
|
3
|
+
import { camelCase } from 'lodash-es';
|
|
4
|
+
import { isReservedTableName } from '../../../jdl/jhipster/reserved-keywords.js';
|
|
5
|
+
import { upperFirstCamelCase } from './string.js';
|
|
6
|
+
import { getJavaValueGeneratorForType, getJoinTableName, getPrimaryKeyValue, getSpecificationBuildForType, hibernateSnakeCase, } from '../../server/support/index.js';
|
|
7
|
+
import { getDBCExtraOption } from '../../spring-data-relational/support/database-data.js';
|
|
8
|
+
import { getJdbcUrl, getR2dbcUrl } from '../../spring-data-relational/support/database-url.js';
|
|
9
|
+
import { fieldTypes } from '../../../jdl/index.js';
|
|
10
|
+
const { BYTES, BYTE_BUFFER } = fieldTypes.RelationalOnlyDBTypes;
|
|
3
11
|
const deprecatedProperties = {
|
|
4
12
|
GRADLE_VERSION: {
|
|
5
13
|
replacement: 'gradleVersion',
|
|
@@ -17,6 +25,18 @@ const deprecatedProperties = {
|
|
|
17
25
|
replacement: 'jhipsterDependenciesVersion',
|
|
18
26
|
get: ({ data }) => data.jhipsterDependenciesVersion,
|
|
19
27
|
},
|
|
28
|
+
JAVA_VERSION: {
|
|
29
|
+
replacement: 'javaVersion',
|
|
30
|
+
get: ({ data }) => data.javaVersion,
|
|
31
|
+
},
|
|
32
|
+
JAVA_COMPATIBLE_VERSIONS: {
|
|
33
|
+
replacement: 'javaCompatibleVersions',
|
|
34
|
+
get: ({ data }) => data.javaCompatibleVersions,
|
|
35
|
+
},
|
|
36
|
+
SPRING_BOOT_VERSION: {
|
|
37
|
+
replacement: "javaDependencies['spring-boot']",
|
|
38
|
+
get: ({ data }) => data.javaDependencies['spring-boot'],
|
|
39
|
+
},
|
|
20
40
|
DOCKER_DIR: {
|
|
21
41
|
replacement: 'dockerServicesDir',
|
|
22
42
|
get: ({ data }) => data.dockerServicesDir,
|
|
@@ -123,7 +143,7 @@ const deprecatedProperties = {
|
|
|
123
143
|
},
|
|
124
144
|
dependabotPackageJson: {
|
|
125
145
|
replacement: 'nodeDependencies',
|
|
126
|
-
get: ({ data }) => data.nodeDependencies,
|
|
146
|
+
get: ({ data }) => ({ dependencies: data.nodeDependencies, devDependencies: data.nodeDependencies }),
|
|
127
147
|
},
|
|
128
148
|
cacheManagerIsAvailable: {
|
|
129
149
|
replacement: 'cacheProviderAny',
|
|
@@ -157,31 +177,113 @@ const deprecatedProperties = {
|
|
|
157
177
|
replacement: 'prodDatabaseTypeMssql',
|
|
158
178
|
get: ({ data }) => data.prodDatabaseTypeMssql,
|
|
159
179
|
},
|
|
180
|
+
cacheProviderEhCache: {
|
|
181
|
+
replacement: 'cacheProviderEhcache',
|
|
182
|
+
get: ({ data }) => data.cacheProviderEhcache,
|
|
183
|
+
},
|
|
184
|
+
getJDBCUrl: {
|
|
185
|
+
replacement: '(prod/dev)(Jdbc/Liquibase)Url or this.getJDBCUrl',
|
|
186
|
+
get: () => getJdbcUrl,
|
|
187
|
+
},
|
|
188
|
+
getR2DBCUrl: {
|
|
189
|
+
replacement: '(prod/dev)R2dbcUrl of this.getR2DBCUrl',
|
|
190
|
+
get: () => getR2dbcUrl,
|
|
191
|
+
},
|
|
192
|
+
getDBCExtraOption: {
|
|
193
|
+
replacement: '???',
|
|
194
|
+
get: () => getDBCExtraOption,
|
|
195
|
+
},
|
|
196
|
+
getPrimaryKeyValue: {
|
|
197
|
+
replacement: 'current generator this.getPrimaryKeyValue',
|
|
198
|
+
get: () => getPrimaryKeyValue,
|
|
199
|
+
},
|
|
200
|
+
getJoinTableName: {
|
|
201
|
+
replacement: 'joinTable property',
|
|
202
|
+
get: () => (...args) => getJoinTableName(...args).value,
|
|
203
|
+
},
|
|
204
|
+
getJavaValueGeneratorForType: {
|
|
205
|
+
replacement: 'javaValueGenerator property',
|
|
206
|
+
get: () => type => getJavaValueGeneratorForType(type).replace('longCount', 'count'),
|
|
207
|
+
},
|
|
208
|
+
asEntity: {
|
|
209
|
+
replacement: 'persistClass property',
|
|
210
|
+
get: ({ data }) => name => `${name}${data.entitySuffix}`,
|
|
211
|
+
},
|
|
212
|
+
asDto: {
|
|
213
|
+
replacement: 'restClass property',
|
|
214
|
+
get: ({ data }) => name => `${name}${data.dtoSuffix}`,
|
|
215
|
+
},
|
|
216
|
+
upperFirstCamelCase: {
|
|
217
|
+
replacement: 'upperFirstCamelCase* property alternative',
|
|
218
|
+
get: () => upperFirstCamelCase,
|
|
219
|
+
},
|
|
220
|
+
hasOauthUser: {
|
|
221
|
+
replacement: 'authenticationTypeOauth2 && generateBuiltInUserEntity',
|
|
222
|
+
get: ({ data }) => data.authenticationTypeOauth2 && data.generateBuiltInUserEntity,
|
|
223
|
+
},
|
|
224
|
+
getPrettierExtensions: {
|
|
225
|
+
replacement: 'prettierExtensions',
|
|
226
|
+
get: ({ data }) => () => data.prettierExtensions,
|
|
227
|
+
},
|
|
228
|
+
_generateSqlSafeName: {
|
|
229
|
+
replacement: 'relationshipSqlSafeName',
|
|
230
|
+
get: () => name => (isReservedTableName(name, 'sql') ? `e_${name}` : name),
|
|
231
|
+
},
|
|
232
|
+
isFilterableType: {
|
|
233
|
+
replacement: 'filterableField property',
|
|
234
|
+
get: () => fieldType => ![BYTES, BYTE_BUFFER].includes(fieldType),
|
|
235
|
+
},
|
|
236
|
+
getSpecificationBuilder: {
|
|
237
|
+
replacement: 'field.fieldJavaBuildSpecification || primaryKey.javaBuildSpecification',
|
|
238
|
+
get: () => getSpecificationBuildForType,
|
|
239
|
+
},
|
|
240
|
+
getColumnName: {
|
|
241
|
+
replacement: 'entityTableName || relationship.columnName',
|
|
242
|
+
get: () => hibernateSnakeCase,
|
|
243
|
+
},
|
|
244
|
+
isUsingBuiltInUser: {
|
|
245
|
+
replacement: 'generateBuiltInUserEntity',
|
|
246
|
+
get: ({ data }) => () => data.generateBuiltInUserEntity,
|
|
247
|
+
},
|
|
248
|
+
isUsingBuiltInAuthority: {
|
|
249
|
+
replacement: 'generateBuiltInAuthorityEntity',
|
|
250
|
+
get: ({ data }) => () => data.generateBuiltInAuthorityEntity,
|
|
251
|
+
},
|
|
252
|
+
jhipsterConfig: {
|
|
253
|
+
replacement: 'none',
|
|
254
|
+
get: ({ generator }) => generator.config?.getAll?.(),
|
|
255
|
+
},
|
|
256
|
+
configOptions: {
|
|
257
|
+
replacement: 'none',
|
|
258
|
+
get: () => ({}),
|
|
259
|
+
},
|
|
160
260
|
};
|
|
161
261
|
const ejsBuiltInProperties = ['__append', '__line', 'escapeFn', 'include', 'undefined'];
|
|
162
262
|
const javascriptBuiltInProperties = ['parseInt', 'Boolean', 'JSON', 'Object', 'toString'];
|
|
163
|
-
const
|
|
263
|
+
const getPropertBuilder = ({ log = msg => console.log(msg) } = {}) => (context, prop) => {
|
|
164
264
|
if (typeof prop === 'symbol') {
|
|
165
265
|
return undefined;
|
|
166
266
|
}
|
|
267
|
+
const { generator, data } = context;
|
|
268
|
+
const value = prop in data ? data[prop] : undefined;
|
|
167
269
|
if (prop in deprecatedProperties) {
|
|
168
270
|
const { replacement, get } = deprecatedProperties[prop];
|
|
169
|
-
const
|
|
170
|
-
|
|
171
|
-
|
|
271
|
+
const fallBackValue = get(context);
|
|
272
|
+
const valueDesc = prop in data ? `Value: ${value}, ` : '';
|
|
273
|
+
log(`Template data ${chalk.yellow(String(prop))} was removed and should be replaced with ${chalk.yellow(replacement)}. ${valueDesc}FallbackValue: ${fallBackValue}`);
|
|
274
|
+
return value ?? fallBackValue;
|
|
172
275
|
}
|
|
173
276
|
if (prop?.startsWith?.('DOCKER_')) {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
277
|
+
const container = camelCase(prop.replace('DOCKER_', '').replace('_CONTAINER', ''));
|
|
278
|
+
log(`Template data ${chalk.yellow(String(prop))} was removed and should be replaced with ${chalk.yellow(`dockerContainers.${container}`)}.`);
|
|
279
|
+
return value ?? data.dockerContainers[container];
|
|
177
280
|
}
|
|
178
|
-
const { generator, data } = context;
|
|
179
281
|
if (prop in data) {
|
|
180
|
-
return
|
|
282
|
+
return value;
|
|
181
283
|
}
|
|
182
284
|
if (prop in generator) {
|
|
183
|
-
|
|
184
|
-
|
|
285
|
+
log(`Template data ${chalk.yellow(String(prop))} is a generator property.`);
|
|
286
|
+
log(`Change the template to '${chalk.yellow(`this.${String(prop)}`)}'`);
|
|
185
287
|
return generator[prop];
|
|
186
288
|
}
|
|
187
289
|
// console.log(`Template data '${chalk.yellow(String(prop))}' not found. Check your data.`);
|
|
@@ -191,47 +293,48 @@ const getProperty = (context, prop) => {
|
|
|
191
293
|
}
|
|
192
294
|
return undefined;
|
|
193
295
|
};
|
|
194
|
-
const createHandler = ({
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
if (!ignoreWarnings) {
|
|
223
|
-
console.log(`${chalk.yellow(prop)} is a javascript built in symbol, its use is discouraged inside templates`);
|
|
296
|
+
const createHandler = ({ log } = {}) => {
|
|
297
|
+
const getProperty = getPropertBuilder({ log });
|
|
298
|
+
return {
|
|
299
|
+
...Object.fromEntries([
|
|
300
|
+
'apply',
|
|
301
|
+
'construct',
|
|
302
|
+
'defineProperty',
|
|
303
|
+
'deleteProperty',
|
|
304
|
+
'getOwnPropertyDescriptor',
|
|
305
|
+
'getPrototypeOf',
|
|
306
|
+
'isExtensible',
|
|
307
|
+
'ownKeys',
|
|
308
|
+
'preventExtensions',
|
|
309
|
+
'setPrototypeOf',
|
|
310
|
+
'set',
|
|
311
|
+
].map(method => [method, (...args) => console.log(`Fixme: template data called ${method}(${args?.pop() ?? ''})`)])),
|
|
312
|
+
ownKeys: ({ data }) => {
|
|
313
|
+
return Reflect.ownKeys(data);
|
|
314
|
+
},
|
|
315
|
+
getPrototypeOf: ({ data }) => {
|
|
316
|
+
return Object.getPrototypeOf(data);
|
|
317
|
+
},
|
|
318
|
+
getOwnPropertyDescriptor: ({ data }, prop) => {
|
|
319
|
+
return Object.getOwnPropertyDescriptor(data, prop);
|
|
320
|
+
},
|
|
321
|
+
has: (context, prop) => {
|
|
322
|
+
if (ejsBuiltInProperties.includes(prop)) {
|
|
323
|
+
return false;
|
|
224
324
|
}
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
}
|
|
325
|
+
if (javascriptBuiltInProperties.includes(prop)) {
|
|
326
|
+
log(`${chalk.yellow(prop)} is a javascript built in symbol, its use is discouraged inside templates`);
|
|
327
|
+
return false;
|
|
328
|
+
}
|
|
329
|
+
const propValue = getProperty(context, prop);
|
|
330
|
+
if (propValue === undefined) {
|
|
331
|
+
return prop in context.data;
|
|
332
|
+
}
|
|
333
|
+
return propValue !== undefined;
|
|
334
|
+
},
|
|
335
|
+
get: getProperty,
|
|
336
|
+
};
|
|
337
|
+
};
|
|
235
338
|
export default function createJHipster7Context(generator, data, options) {
|
|
236
339
|
return new Proxy({ generator, data }, createHandler(options));
|
|
237
340
|
}
|
|
@@ -271,7 +271,7 @@ export default class BaseApplicationGenerator extends BaseGenerator {
|
|
|
271
271
|
if ([PREPARING, LOADING].includes(priorityName)) {
|
|
272
272
|
return {
|
|
273
273
|
application,
|
|
274
|
-
applicationDefaults: data => mutateData(application, data),
|
|
274
|
+
applicationDefaults: data => mutateData(application, { __override__: false, ...data }),
|
|
275
275
|
};
|
|
276
276
|
}
|
|
277
277
|
if (LOADING_ENTITIES === priorityName) {
|