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.
Files changed (211) hide show
  1. package/README.md +3 -4
  2. package/dist/cli/commands.mjs +2 -0
  3. package/dist/cli/environment-builder.mjs +5 -0
  4. package/dist/cli/program.mjs +10 -4
  5. package/dist/generators/angular/entity-files-angular.js +6 -7
  6. package/dist/generators/angular/resources/package.json +17 -17
  7. package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.component.spec.ts.ejs +4 -3
  8. package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.service.spec.ts.ejs +3 -2
  9. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.spec.ts.ejs +4 -5
  10. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.service.spec.ts.ejs +3 -2
  11. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.spec.ts.ejs +4 -3
  12. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.service.spec.ts.ejs +3 -2
  13. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.spec.ts.ejs +3 -3
  14. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.service.spec.ts.ejs +3 -2
  15. package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.spec.ts.ejs +2 -3
  16. package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.service.spec.ts.ejs +3 -2
  17. package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.component.spec.ts.ejs +3 -3
  18. package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.spec.ts.ejs +3 -4
  19. package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.component.spec.ts.ejs +3 -3
  20. package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.service.spec.ts.ejs +3 -2
  21. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.component.spec.ts.ejs +4 -4
  22. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.service.spec.ts.ejs +3 -2
  23. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/modal/health-modal.component.spec.ts.ejs +3 -3
  24. package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.spec.ts.ejs +4 -3
  25. package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.service.spec.ts.ejs +3 -2
  26. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/jvm-threads/jvm-threads.component.ts.ejs +1 -1
  27. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.spec.ts.ejs +3 -3
  28. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.component.spec.ts.ejs +3 -2
  29. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.service.spec.ts.ejs +3 -2
  30. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.spec.ts.ejs +3 -3
  31. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +1 -1
  32. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.spec.ts.ejs +3 -4
  33. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/service/user-management.service.spec.ts.ejs +3 -3
  34. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.spec.ts.ejs +3 -2
  35. package/dist/generators/angular/templates/src/main/webapp/app/app-page-title-strategy.ts.ejs +1 -1
  36. package/dist/generators/angular/templates/src/main/webapp/app/app.component.ts.ejs +0 -1
  37. package/dist/generators/angular/templates/src/main/webapp/app/app.config.ts.ejs +2 -2
  38. package/dist/generators/angular/templates/src/main/webapp/app/config/uib-pagination.config.ts.ejs +1 -1
  39. package/dist/generators/angular/templates/src/main/webapp/app/core/auth/account.service.spec.ts.ejs +7 -5
  40. package/dist/generators/angular/templates/src/main/webapp/app/core/auth/auth-jwt.service.spec.ts.ejs +3 -2
  41. package/dist/generators/angular/templates/src/main/webapp/app/core/interceptor/auth-expired.interceptor.ts.ejs +3 -3
  42. package/dist/generators/angular/templates/src/main/webapp/app/core/interceptor/auth.interceptor.ts.ejs +2 -2
  43. package/dist/generators/angular/templates/src/main/webapp/app/core/interceptor/error-handler.interceptor.ts.ejs +1 -1
  44. package/dist/generators/angular/templates/src/main/webapp/app/core/util/alert.service.spec.ts.ejs +6 -6
  45. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.spec.ts.ejs +3 -4
  46. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.html.ejs +1 -1
  47. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.spec.ts.ejs +2 -3
  48. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.ts.ejs +2 -2
  49. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/route/_entityFile_-routing-resolve.service.spec.ts.ejs +2 -3
  50. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/service/_entityFile_.service.spec.ts.ejs +5 -3
  51. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.spec.ts.ejs +2 -3
  52. package/dist/generators/angular/templates/src/main/webapp/app/layouts/error/error.component.ts.ejs +2 -2
  53. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/active-menu.directive.ts.ejs +3 -3
  54. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.spec.ts.ejs +3 -3
  55. package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.spec.ts.ejs +3 -2
  56. package/dist/generators/angular/templates/src/main/webapp/app/shared/auth/has-any-authority.directive.spec.ts.ejs +3 -3
  57. package/dist/generators/angular/templates/src/main/webapp/app/shared/language/find-language-from-key.pipe.ts.ejs +1 -1
  58. package/dist/generators/angular/templates/src/main/webapp/app/shared/language/translation.module.ts.ejs +2 -2
  59. package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort-by.directive.spec.ts.ejs +10 -10
  60. package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort-by.directive.ts.ejs +6 -7
  61. package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort.directive.spec.ts.ejs +4 -4
  62. package/dist/generators/angular/templates/src/main/webapp/content/scss/global.scss.ejs +2 -0
  63. package/dist/generators/base/command.js +1 -0
  64. package/dist/generators/base/generator.js +7 -12
  65. package/dist/generators/base/internal/command.js +13 -0
  66. package/dist/generators/base/internal/index.js +1 -0
  67. package/dist/generators/base/shared-data.js +74 -2
  68. package/dist/generators/base/support/config.js +1 -1
  69. package/dist/generators/base/support/jhipster7-context.js +155 -52
  70. package/dist/generators/base-application/generator.js +1 -1
  71. package/dist/generators/base-core/generator.js +93 -55
  72. package/dist/generators/bootstrap/generator.js +1 -1
  73. package/dist/generators/bootstrap/support/eslint-worker.js +14 -12
  74. package/dist/generators/bootstrap/support/multi-step-transform/template-file.js +6 -1
  75. package/dist/generators/bootstrap-application/generator.js +1 -1
  76. package/dist/generators/bootstrap-application-client/generator.js +5 -1
  77. package/dist/generators/ci-cd/generator.js +1 -1
  78. package/dist/generators/ci-cd/templates/docker-registry.yml.ejs +0 -1
  79. package/dist/generators/ci-cd/templates/jenkins/jenkins.yml.ejs +0 -1
  80. package/dist/generators/client/generator.js +2 -3
  81. package/dist/generators/client/resources/package.json +3 -3
  82. package/dist/generators/client/support/filter-entities.js +1 -1
  83. package/dist/generators/client/templates/.eslintignore.ejs +9 -5
  84. package/dist/generators/client/templates/README.md.jhi.client.ejs +29 -20
  85. package/dist/generators/client/templates/src/main/webapp/index.html.ejs +1 -1
  86. package/dist/generators/common/resources/package.json +1 -1
  87. package/dist/generators/docker/templates/docker/keycloak.yml.ejs +2 -1
  88. package/dist/generators/docker/templates/docker/mariadb.yml.ejs +1 -1
  89. package/dist/generators/docker/templates/docker/mysql.yml.ejs +1 -2
  90. package/dist/generators/docker/templates/docker/realm-config/keycloak-health-check.sh +2 -2
  91. package/dist/generators/docker-compose/templates/docker-compose.yml.ejs +1 -0
  92. package/dist/generators/docker-compose/templates/realm-config/keycloak-health-check.sh +2 -2
  93. package/dist/generators/feign-client/templates/src/main/java/_package_/client/AuthorizationHeaderUtil.java.ejs +1 -1
  94. package/dist/generators/gatling/generator.js +0 -1
  95. package/dist/generators/generate-blueprint/files.js +3 -1
  96. package/dist/generators/generate-blueprint/generator.js +17 -7
  97. package/dist/generators/generate-blueprint/resources/package.json +2 -0
  98. package/dist/generators/generate-blueprint/templates/.blueprint/github-build-matrix/generator.mjs.ejs +2 -6
  99. package/dist/generators/generate-blueprint/templates/.github/workflows/build-cache.yml.ejs +39 -0
  100. package/dist/generators/generate-blueprint/templates/.github/workflows/samples.yml.ejs +105 -0
  101. package/dist/generators/generate-blueprint/templates/.prettierignore.jhi.blueprint.ejs +1 -1
  102. package/dist/generators/generate-blueprint/templates/eslint.config.js.ejs +33 -0
  103. package/dist/generators/generator-constants.js +2 -2
  104. package/dist/generators/gradle/templates/gradle/wrapper/gradle-wrapper.properties +1 -1
  105. package/dist/generators/heroku/generator.js +1 -1
  106. package/dist/generators/info/support/extract-info.js +60 -0
  107. package/dist/generators/info/support/index.js +1 -0
  108. package/dist/generators/init/resources/.node-version +1 -1
  109. package/dist/generators/init/resources/package.json +2 -2
  110. package/dist/generators/java/generators/bootstrap/generator.js +9 -2
  111. package/dist/generators/java/generators/build-tool/command.js +2 -2
  112. package/dist/generators/java/generators/node/templates/npmw +1 -5
  113. package/dist/generators/java/support/add-java-annotation.js +1 -1
  114. package/dist/generators/jdl/generator.js +6 -6
  115. package/dist/generators/kubernetes/templates/db/mysql.yml.ejs +1 -0
  116. package/dist/generators/languages/generator.js +1 -0
  117. package/dist/generators/liquibase/templates/src/main/java/_package_/config/LiquibaseConfiguration.java.ejs +1 -1
  118. package/dist/generators/maven/command.js +15 -0
  119. package/dist/generators/maven/generator.js +6 -1
  120. package/dist/generators/maven/index.js +1 -0
  121. package/dist/generators/maven/internal/xml-store.js +7 -6
  122. package/dist/generators/maven/support/pom-store.js +24 -9
  123. package/dist/generators/maven/templates/.mvn/wrapper/maven-wrapper.properties +1 -1
  124. package/dist/generators/react/entity-files-react.js +7 -7
  125. package/dist/generators/react/resources/package.json +12 -12
  126. package/dist/generators/react/templates/src/main/webapp/app/app.tsx.ejs +9 -0
  127. package/dist/generators/react/templates/src/main/webapp/app/config/translation.ts.ejs +4 -0
  128. package/dist/generators/react/templates/src/main/webapp/app/modules/home/home.tsx.ejs +15 -1
  129. package/dist/generators/react/templates/src/main/webapp/app/modules/login/login-redirect.tsx.ejs +4 -0
  130. package/dist/generators/react/templates/src/main/webapp/app/modules/login/logout.tsx.ejs +5 -3
  131. package/dist/generators/react/templates/src/main/webapp/app/routes.tsx.ejs +1 -1
  132. package/dist/generators/react/templates/src/main/webapp/app/shared/auth/private-route.spec.tsx.ejs +1 -1
  133. package/dist/generators/react/templates/src/main/webapp/app/shared/auth/private-route.tsx.ejs +1 -1
  134. package/dist/generators/react/templates/src/main/webapp/app/shared/layout/header/header.tsx.ejs +0 -9
  135. package/dist/generators/react/templates/src/main/webapp/app/shared/layout/menus/account.spec.tsx.ejs +1 -3
  136. package/dist/generators/react/templates/src/main/webapp/app/shared/layout/menus/account.tsx.ejs +29 -6
  137. package/dist/generators/react/templates/src/main/webapp/app/shared/util/url-utils.ts.ejs +1 -1
  138. package/dist/generators/server/generator.js +7 -5
  139. package/dist/generators/server/resources/Dockerfile +5 -5
  140. package/dist/generators/server/resources/gradle/libs.versions.toml +5 -5
  141. package/dist/generators/server/resources/pom.xml +11 -11
  142. package/dist/generators/server/templates/gradle/profile_dev.gradle.ejs +1 -1
  143. package/dist/generators/server/templates/gradle/profile_prod.gradle.ejs +1 -1
  144. package/dist/generators/server/templates/pom.xml.ejs +0 -26
  145. package/dist/generators/server/templates/src/main/java/_package_/config/AsyncConfiguration.java.ejs +1 -1
  146. package/dist/generators/server/templates/src/main/java/_package_/config/SecurityJwtConfiguration.java.ejs +1 -1
  147. package/dist/generators/server/templates/src/main/java/_package_/config/WebConfigurer.java.ejs +1 -1
  148. package/dist/generators/server/templates/src/main/java/_package_/security/DomainUserDetailsService.java.ejs +1 -1
  149. package/dist/generators/server/templates/src/main/java/_package_/security/PersistentTokenRememberMeServices.java.ejs +1 -1
  150. package/dist/generators/server/templates/src/main/java/_package_/security/oauth2/AudienceValidator.java.ejs +1 -1
  151. package/dist/generators/server/templates/src/main/java/_package_/service/MailService.java.ejs +1 -1
  152. package/dist/generators/server/templates/src/main/java/_package_/service/dto/UserDTO.java.ejs +11 -0
  153. package/dist/generators/server/templates/src/main/java/_package_/web/rest/AccountResource.java.ejs +1 -1
  154. package/dist/generators/server/templates/src/main/java/_package_/web/rest/AccountResource_oauth2.java.ejs +1 -1
  155. package/dist/generators/server/templates/src/main/java/_package_/web/rest/AccountResource_skipUserManagement.java.ejs +1 -1
  156. package/dist/generators/server/templates/src/main/java/_package_/web/rest/AuthenticateController.java.ejs +1 -1
  157. package/dist/generators/server/templates/src/main/resources/config/application-dev.yml.ejs +1 -1
  158. package/dist/generators/server/templates/src/main/resources/config/application.yml.ejs +1 -1
  159. package/dist/generators/server/templates/src/main/resources/config/bootstrap.yml.ejs +1 -1
  160. package/dist/generators/spring-boot/generator.js +4 -2
  161. package/dist/generators/spring-boot/resources/spring-boot-dependencies.pom +105 -105
  162. package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/service/UserService.java.ejs +1 -1
  163. package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/service/_entityClass_QueryService.java.ejs +1 -1
  164. package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/service/impl/_entityClass_ServiceImpl.java.ejs +1 -1
  165. package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/web/rest/PublicUserResource.java.ejs +1 -1
  166. package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/web/rest/UserResource.java.ejs +1 -1
  167. package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/web/rest/_entityClass_Resource.java.ejs +1 -1
  168. package/dist/generators/spring-cache/resources/gradle/libs.versions.toml +1 -1
  169. package/dist/generators/spring-cache/templates/src/main/java/_package_/config/CacheConfiguration.java.ejs +3 -3
  170. package/dist/generators/spring-cloud/generators/gateway/command.js +5 -0
  171. package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/main/java/_package_/broker/KafkaConsumer_imperative.java.ejs +1 -1
  172. package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/main/java/_package_/broker/KafkaConsumer_reactive.java.ejs +1 -1
  173. package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/main/java/_package_/web/rest/KafkaResource_imperative.java.ejs +1 -1
  174. package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/main/java/_package_/web/rest/KafkaResource_reactive.java.ejs +1 -1
  175. package/dist/generators/spring-data-couchbase/templates/src/main/java/_package_/config/DatabaseConfiguration.java.ejs +1 -1
  176. package/dist/generators/spring-data-neo4j/templates/src/main/java/_package_/config/DatabaseConfiguration.java_neo4j.ejs +18 -2
  177. package/dist/generators/spring-data-relational/templates/src/main/java/_package_/config/DatabaseConfiguration.java.ejs +1 -1
  178. package/dist/generators/vue/entity-files-vue.js +7 -7
  179. package/dist/generators/vue/resources/package.json +11 -11
  180. package/dist/generators/vue/templates/.eslintrc.cjs.ejs +7 -0
  181. package/dist/lib/eslint/base.js +25 -0
  182. package/dist/lib/eslint/recommended.js +22 -0
  183. package/dist/testing/github.js +32 -0
  184. package/dist/testing/helpers.js +9 -0
  185. package/dist/testing/index.js +2 -0
  186. package/dist/testing/sample-config.js +31 -0
  187. package/dist/types/cli/commands.d.mts +2 -0
  188. package/dist/types/cli/environment-builder.d.mts +1 -0
  189. package/dist/types/generators/base/api.d.ts +14 -7
  190. package/dist/types/generators/base/internal/command.d.ts +2 -0
  191. package/dist/types/generators/base/internal/index.d.ts +1 -0
  192. package/dist/types/generators/base/shared-data.d.ts +10 -1
  193. package/dist/types/generators/base/types.d.ts +12 -0
  194. package/dist/types/generators/base-application/types.d.ts +11 -0
  195. package/dist/types/generators/base-core/generator.d.ts +2 -1
  196. package/dist/types/generators/generator-constants.d.ts +1 -1
  197. package/dist/types/generators/info/support/extract-info.d.ts +14 -0
  198. package/dist/types/generators/info/support/index.d.ts +1 -0
  199. package/dist/types/generators/java/types.d.ts +12 -0
  200. package/dist/types/generators/maven/internal/xml-store.d.ts +3 -2
  201. package/dist/types/generators/maven/support/pom-store.d.ts +5 -2
  202. package/dist/types/generators/maven/types.d.ts +1 -0
  203. package/dist/types/generators/server/types.d.ts +2 -1
  204. package/dist/types/lib/eslint/base.d.ts +20 -0
  205. package/dist/types/lib/eslint/recommended.d.ts +20 -0
  206. package/dist/types/testing/github.d.ts +11 -0
  207. package/dist/types/testing/helpers.d.ts +8 -0
  208. package/dist/types/testing/index.d.ts +2 -0
  209. package/dist/types/testing/sample-config.d.ts +4 -0
  210. package/package.json +22 -18
  211. 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
@@ -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 { ContentChild, Directive, Host, HostListener, Input, effect } from '@angular/core';
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
- @ContentChild(FaIconComponent, { static: false })
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.icon = icon.iconName;
48
- this.iconComponent.render();
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
  }
@@ -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();
@@ -122,9 +122,11 @@ Generic styles
122
122
  word-break: break-all;
123
123
  }
124
124
 
125
+ <%_ if (clientThemeNone || clientTheme !== 'quartz') { _%>
125
126
  .form-control {
126
127
  background-color: #fff;
127
128
  }
129
+ <%_ } _%>
128
130
 
129
131
  .readonly {
130
132
  background-color: #eee;
@@ -41,6 +41,7 @@ const command = {
41
41
  description: 'Ignore needles failures',
42
42
  type: Boolean,
43
43
  hide: true,
44
+ scope: 'generator',
44
45
  },
45
46
  },
46
47
  };
@@ -568,23 +568,18 @@ export default class JHipsterBaseBlueprintGenerator extends CoreGenerator {
568
568
  return;
569
569
  }
570
570
  const mainGeneratorJhipsterVersion = packageJson.version;
571
- const blueprintJhipsterVersion = blueprintPackageJson.dependencies && blueprintPackageJson.dependencies['generator-jhipster'];
572
- if (blueprintJhipsterVersion) {
573
- if (!semver.valid(blueprintJhipsterVersion) && !semver.validRange(blueprintJhipsterVersion)) {
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, blueprintJhipsterVersion, { includePrerelease: true })) {
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${blueprintJhipsterVersion} 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`);
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
+ };
@@ -17,3 +17,4 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  export * from './blueprint.js';
20
+ export * from './command.js';
@@ -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
- constructor(storage, initialControl = {}) {
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.nodeDependencies = this._storage.sharedApplication.nodeDependencies ?? {};
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;
@@ -80,7 +80,7 @@ export const mutateData = (context, ...mutations) => {
80
80
  context[key] = value(context);
81
81
  }
82
82
  }
83
- else if (context[key] === undefined) {
83
+ else if (context[key] === undefined || override === true) {
84
84
  context[key] = value;
85
85
  }
86
86
  }
@@ -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 getProperty = (context, prop) => {
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 value = get(context);
170
- console.log(`Template data ${chalk.yellow(String(prop))} was removed and should be replaced with ${chalk.yellow(replacement)}. Value: ${value}`);
171
- return value;
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
- console.log(`Template data ${chalk.yellow(String(prop))} was removed and should be replaced with ${chalk.yellow(
175
- // eslint-disable-next-line no-template-curly-in-string
176
- 'dockerContainers.${dockerImage}')}.`);
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 data[prop];
282
+ return value;
181
283
  }
182
284
  if (prop in generator) {
183
- console.log(`Template data ${chalk.yellow(String(prop))} is a generator property.`);
184
- console.log(`Change the template to '${chalk.yellow(`this.${String(prop)}`)}'`);
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 = ({ ignoreWarnings = false } = {}) => ({
195
- ...Object.fromEntries([
196
- 'apply',
197
- 'construct',
198
- 'defineProperty',
199
- 'deleteProperty',
200
- 'getOwnPropertyDescriptor',
201
- 'getPrototypeOf',
202
- 'isExtensible',
203
- 'ownKeys',
204
- 'preventExtensions',
205
- 'setPrototypeOf',
206
- 'set',
207
- ].map(method => [method, (...args) => console.log(`Fixme: template data called ${method}(${args?.pop() ?? ''})`)])),
208
- ownKeys: ({ data }) => {
209
- return Reflect.ownKeys(data);
210
- },
211
- getPrototypeOf: ({ data }) => {
212
- return Object.getPrototypeOf(data);
213
- },
214
- getOwnPropertyDescriptor: ({ data }, prop) => {
215
- return Object.getOwnPropertyDescriptor(data, prop);
216
- },
217
- has: (context, prop) => {
218
- if (ejsBuiltInProperties.includes(prop)) {
219
- return false;
220
- }
221
- if (javascriptBuiltInProperties.includes(prop)) {
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
- return false;
226
- }
227
- const propValue = getProperty(context, prop);
228
- if (propValue === undefined) {
229
- return prop in context.data;
230
- }
231
- return propValue !== undefined;
232
- },
233
- get: getProperty,
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) {