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.
Files changed (211) hide show
  1. package/README.md +2 -2
  2. package/dist/cli/download.mjs +2 -3
  3. package/dist/cli/environment-builder.mjs +2 -2
  4. package/dist/generators/angular/generator.d.ts +10 -1
  5. package/dist/generators/angular/resources/package.json +20 -20
  6. package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.component.spec.ts.ejs +1 -1
  7. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.html.ejs +3 -3
  8. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.spec.ts.ejs +1 -1
  9. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.ts.ejs +6 -4
  10. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.html.ejs +1 -1
  11. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.spec.ts.ejs +1 -1
  12. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.html.ejs +1 -1
  13. package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.html.ejs +1 -1
  14. package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.component.spec.ts.ejs +1 -1
  15. package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.html.ejs +1 -1
  16. package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.spec.ts.ejs +1 -1
  17. package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.component.spec.ts.ejs +1 -1
  18. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/modal/health-modal.component.ts.ejs +1 -1
  19. package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.spec.ts.ejs +1 -1
  20. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.component.html.ejs +8 -13
  21. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +1 -1
  22. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.spec.ts.ejs +1 -1
  23. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.spec.ts.ejs +1 -1
  24. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +3 -3
  25. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.spec.ts.ejs +2 -2
  26. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.html.ejs +1 -1
  27. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.spec.ts.ejs +3 -3
  28. package/dist/generators/angular/templates/src/main/webapp/app/app-page-title-strategy.ts.ejs +1 -3
  29. package/dist/generators/angular/templates/src/main/webapp/app/app.component.ts.ejs +1 -1
  30. package/dist/generators/angular/templates/src/main/webapp/app/core/util/alert.service.ts.ejs +1 -2
  31. package/dist/generators/angular/templates/src/main/webapp/app/core/util/data-util.service.spec.ts.ejs +0 -1
  32. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.html.ejs +1 -1
  33. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.spec.ts.ejs +2 -2
  34. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.html.ejs +2 -2
  35. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.spec.ts.ejs +4 -5
  36. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.html.ejs +4 -4
  37. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.spec.ts.ejs +2 -2
  38. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/service/_entityFile_.service.spec.ts.ejs +4 -4
  39. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.html.ejs +1 -1
  40. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.spec.ts.ejs +7 -7
  41. package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.spec.ts.ejs +4 -4
  42. package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.html.ejs +4 -4
  43. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.spec.ts.ejs +3 -3
  44. package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.spec.ts.ejs +1 -1
  45. package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.ts.ejs +8 -6
  46. package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.spec.ts.ejs +3 -3
  47. package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert-error.component.spec.ts.ejs +8 -8
  48. package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert.component.spec.ts.ejs +2 -2
  49. package/dist/generators/angular/templates/src/main/webapp/app/shared/pagination/item-count.component.ts.ejs +1 -1
  50. package/dist/generators/app/generator.d.ts +4 -1
  51. package/dist/generators/base/support/contents.d.ts +1 -1
  52. package/dist/generators/base/support/needles.d.ts +14 -5
  53. package/dist/generators/base/support/needles.js +25 -17
  54. package/dist/generators/base-application/support/prepare-entity.js +14 -26
  55. package/dist/generators/base-application/support/update-application-entities-transform.js +3 -2
  56. package/dist/generators/base-application/types.d.ts +5 -0
  57. package/dist/generators/bootstrap/generator.d.ts +6 -1
  58. package/dist/generators/bootstrap/support/eslint-worker.js +5 -2
  59. package/dist/generators/bootstrap-application/generator.d.ts +4 -1
  60. package/dist/generators/bootstrap-application-base/generator.d.ts +12 -2
  61. package/dist/generators/bootstrap-application-base/generator.js +3 -0
  62. package/dist/generators/bootstrap-application-client/generator.d.ts +3 -1
  63. package/dist/generators/bootstrap-application-server/generator.d.ts +8 -1
  64. package/dist/generators/bootstrap-workspaces/generator.d.ts +9 -1
  65. package/dist/generators/ci-cd/generator.d.ts +6 -1
  66. package/dist/generators/client/generator.d.ts +13 -1
  67. package/dist/generators/client/generators/common/generator.d.ts +1 -1
  68. package/dist/generators/client/resources/package.json +5 -5
  69. package/dist/generators/client/templates/src/main/webapp/swagger-ui/index.html.ejs +8 -6
  70. package/dist/generators/common/generator.d.ts +8 -1
  71. package/dist/generators/common/resources/package.json +2 -2
  72. package/dist/generators/cucumber/generator.d.ts +2 -1
  73. package/dist/generators/cypress/generator.d.ts +7 -1
  74. package/dist/generators/docker/generator.d.ts +4 -1
  75. package/dist/generators/docker-compose/generator.d.ts +23 -1
  76. package/dist/generators/entities/generator.d.ts +4 -1
  77. package/dist/generators/entity/generator.d.ts +5 -1
  78. package/dist/generators/export-jdl/generator.d.ts +3 -1
  79. package/dist/generators/feign-client/generator.d.ts +2 -1
  80. package/dist/generators/feign-client/templates/src/test/java/_package_/client/AuthorizationHeaderUtilTest.java.ejs +1 -1
  81. package/dist/generators/gatling/generator.d.ts +3 -1
  82. package/dist/generators/generate-blueprint/constants.d.ts +1 -1
  83. package/dist/generators/generate-blueprint/constants.js +1 -1
  84. package/dist/generators/generate-blueprint/files.js +2 -2
  85. package/dist/generators/generate-blueprint/generator.d.ts +10 -1
  86. package/dist/generators/generate-blueprint/generator.js +16 -16
  87. package/dist/generators/generate-blueprint/resources/package.json +3 -3
  88. package/dist/generators/generate-blueprint/templates/.blueprint/generate-sample/command.mjs.ejs +1 -1
  89. package/dist/generators/generate-blueprint/templates/generators/generator/generator.mjs.jhi.ejs +1 -0
  90. package/dist/generators/generator-constants.d.ts +1 -1
  91. package/dist/generators/generator-constants.js +2 -2
  92. package/dist/generators/git/generator.d.ts +5 -1
  93. package/dist/generators/gradle/generator.d.ts +5 -1
  94. package/dist/generators/gradle/generators/code-quality/generator.d.ts +2 -1
  95. package/dist/generators/gradle/generators/jib/generator.d.ts +2 -1
  96. package/dist/generators/gradle/generators/node-gradle/generator.d.ts +2 -1
  97. package/dist/generators/gradle/templates/gradle/wrapper/gradle-wrapper.properties +1 -1
  98. package/dist/generators/heroku/generator.d.ts +6 -1
  99. package/dist/generators/info/generator.d.ts +1 -1
  100. package/dist/generators/init/generator.d.ts +2 -1
  101. package/dist/generators/init/resources/.node-version +1 -1
  102. package/dist/generators/java/generators/bootstrap/generator.d.ts +8 -2
  103. package/dist/generators/java/generators/bootstrap/generator.js +17 -3
  104. package/dist/generators/java/generators/build-tool/generator.d.ts +2 -1
  105. package/dist/generators/java/generators/code-quality/generator.d.ts +2 -1
  106. package/dist/generators/java/generators/domain/generator.d.ts +6 -1
  107. package/dist/generators/java/generators/graalvm/generator.d.ts +6 -1
  108. package/dist/generators/java/generators/graalvm/internal/constants.d.ts +1 -1
  109. package/dist/generators/java/generators/graalvm/internal/constants.js +2 -2
  110. package/dist/generators/java/generators/graalvm/resources/gradle/libs.versions.toml +1 -1
  111. package/dist/generators/java/generators/jib/generator.d.ts +2 -1
  112. package/dist/generators/java/generators/node/generator.d.ts +4 -1
  113. package/dist/generators/java/generators/openapi-generator/generator.d.ts +2 -1
  114. package/dist/generators/java/generators/server/generator.d.ts +1 -1
  115. package/dist/generators/java/support/index.d.ts +2 -0
  116. package/dist/generators/java/support/index.js +2 -0
  117. package/dist/generators/java/support/java-enum.d.ts +8 -0
  118. package/dist/generators/java/support/java-enum.js +20 -0
  119. package/dist/generators/java/support/java-file-edit.d.ts +18 -0
  120. package/dist/generators/java/support/java-file-edit.js +94 -0
  121. package/dist/generators/java/types.d.ts +37 -1
  122. package/dist/generators/javascript/generators/bootstrap/generator.d.ts +4 -1
  123. package/dist/generators/javascript/generators/eslint/generator.d.ts +4 -1
  124. package/dist/generators/javascript/generators/husky/generator.d.ts +3 -1
  125. package/dist/generators/javascript/generators/prettier/generator.d.ts +4 -1
  126. package/dist/generators/javascript/resources/package.json +3 -3
  127. package/dist/generators/jdl/generator.d.ts +3 -1
  128. package/dist/generators/kubernetes/generator.d.ts +25 -19
  129. package/dist/generators/kubernetes-helm/generator.d.ts +18 -12
  130. package/dist/generators/kubernetes-knative/generator.d.ts +14 -8
  131. package/dist/generators/languages/generator.d.ts +9 -1
  132. package/dist/generators/liquibase/generator.d.ts +9 -1
  133. package/dist/generators/liquibase/generator.js +3 -19
  134. package/dist/generators/maven/generator.d.ts +6 -1
  135. package/dist/generators/maven/generators/code-quality/generator.d.ts +1 -1
  136. package/dist/generators/maven/generators/frontend-plugin/generator.d.ts +1 -1
  137. package/dist/generators/maven/generators/jib/generator.d.ts +1 -1
  138. package/dist/generators/project-name/generator.d.ts +3 -1
  139. package/dist/generators/react/generator.d.ts +15 -1
  140. package/dist/generators/react/resources/package.json +26 -26
  141. package/dist/generators/react/templates/src/main/webapp/app/entities/menu.tsx.ejs +2 -2
  142. package/dist/generators/react/templates/src/main/webapp/app/entities/routes.tsx.ejs +1 -1
  143. package/dist/generators/server/generator.d.ts +7 -1
  144. package/dist/generators/server/resources/Dockerfile +15 -15
  145. package/dist/generators/server/resources/gradle/libs.versions.toml +13 -13
  146. package/dist/generators/server/resources/pom.xml +13 -13
  147. package/dist/generators/server/types.d.ts +22 -0
  148. package/dist/generators/spring-boot/generator.d.ts +14 -2
  149. package/dist/generators/spring-boot/generator.js +33 -1
  150. package/dist/generators/spring-boot/resources/spring-boot-dependencies.pom +143 -143
  151. package/dist/generators/spring-boot/templates/src/main/java/_package_/Application.java.ejs +11 -0
  152. package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/service/_entityClass_QueryService.java.ejs +12 -23
  153. package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/AccountResource.java.ejs +7 -6
  154. package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/AccountResource_oauth2.java.ejs +8 -6
  155. package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/AccountResource_skipUserManagement.java.ejs +8 -6
  156. package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/AuthenticateController.java.ejs +6 -6
  157. package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/errors/ExceptionTranslator.java.ejs +8 -3
  158. package/dist/generators/spring-boot/templates/src/main/resources/config/application.yml.ejs +3 -0
  159. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/service/UserServiceIT.java.ejs +3 -3
  160. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/PublicUserResourceIT.java.ejs +4 -4
  161. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/UserResourceIT.java.ejs +4 -4
  162. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs +3 -3
  163. package/dist/generators/spring-boot/templates/src/test/java/_package_/config/JHipsterBlockHoundIntegration.java.ejs +0 -2
  164. package/dist/generators/spring-boot/templates/src/test/java/_package_/config/WebConfigurerTest.java.ejs +1 -1
  165. package/dist/generators/spring-boot/templates/src/test/java/_package_/management/SecurityMetersServiceTests.java.ejs +1 -1
  166. package/dist/generators/spring-boot/templates/src/test/java/_package_/security/DomainUserDetailsServiceIT.java.ejs +2 -2
  167. package/dist/generators/spring-boot/templates/src/test/java/_package_/security/jwt/TestAuthenticationResource.java.ejs +5 -5
  168. package/dist/generators/spring-boot/templates/src/test/java/_package_/security/jwt/TokenAuthenticationIT.java.ejs +2 -2
  169. package/dist/generators/spring-boot/templates/src/test/java/_package_/security/jwt/TokenAuthenticationSecurityMetersIT.java.ejs +1 -4
  170. package/dist/generators/spring-boot/templates/src/test/java/_package_/security/oauth2/CustomClaimConverterIT.java.ejs +1 -1
  171. package/dist/generators/spring-boot/templates/src/test/java/_package_/service/MailServiceIT.java.ejs +1 -1
  172. package/dist/generators/spring-boot/templates/src/test/java/_package_/service/mapper/UserMapperTest.java.ejs +1 -1
  173. package/dist/generators/spring-boot/templates/src/test/java/_package_/web/filter/SpaWebFilterIT_imperative.java.ejs +1 -1
  174. package/dist/generators/spring-boot/templates/src/test/java/_package_/web/filter/SpaWebFilterIT_reactive.java.ejs +1 -2
  175. package/dist/generators/spring-boot/templates/src/test/java/_package_/web/rest/AccountResourceIT.java.ejs +9 -15
  176. package/dist/generators/spring-boot/templates/src/test/java/_package_/web/rest/AccountResourceIT_oauth2.java.ejs +8 -17
  177. package/dist/generators/spring-boot/templates/src/test/java/_package_/web/rest/AccountResourceIT_skipUserManagement.java.ejs +6 -15
  178. package/dist/generators/spring-boot/templates/src/test/java/_package_/web/rest/LogoutResourceIT.java.ejs +1 -1
  179. package/dist/generators/spring-boot/templates/src/test/java/_package_/web/rest/errors/ExceptionTranslatorIT_reactive.java.ejs +1 -1
  180. package/dist/generators/spring-cache/cleanup.d.ts +2 -20
  181. package/dist/generators/spring-cache/cleanup.js +24 -2
  182. package/dist/generators/spring-cache/files.js +0 -6
  183. package/dist/generators/spring-cache/generator.d.ts +5 -1
  184. package/dist/generators/spring-cache/resources/gradle/libs.versions.toml +1 -1
  185. package/dist/generators/spring-cache/templates/src/main/java/_package_/config/CacheConfiguration.java.ejs +0 -14
  186. package/dist/generators/spring-cloud/generators/gateway/generator.d.ts +5 -1
  187. package/dist/generators/spring-cloud-stream/generator.d.ts +2 -1
  188. package/dist/generators/spring-cloud-stream/generators/kafka/generator.d.ts +2 -1
  189. package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/test/java/_package_/web/rest/KafkaResourceIT_reactive.java.ejs +1 -1
  190. package/dist/generators/spring-cloud-stream/generators/pulsar/generator.d.ts +2 -1
  191. package/dist/generators/spring-data-cassandra/generator.d.ts +4 -1
  192. package/dist/generators/spring-data-couchbase/generator.d.ts +9 -1
  193. package/dist/generators/spring-data-elasticsearch/generator.d.ts +10 -1
  194. package/dist/generators/spring-data-mongodb/generator.d.ts +9 -1
  195. package/dist/generators/spring-data-neo4j/generator.d.ts +11 -1
  196. package/dist/generators/spring-data-relational/generator.d.ts +11 -1
  197. package/dist/generators/spring-data-relational/templates/src/test/java/_package_/config/timezone/HibernateTimeZoneIT.java.ejs +2 -2
  198. package/dist/generators/spring-websocket/generator.d.ts +2 -1
  199. package/dist/generators/upgrade/generator.d.ts +3 -1
  200. package/dist/generators/vue/generator.d.ts +9 -1
  201. package/dist/generators/vue/resources/package.json +29 -29
  202. package/dist/generators/workspaces/generator.d.ts +7 -1
  203. package/dist/generators/workspaces/support/applications-lookup.js +2 -2
  204. package/dist/lib/jdl/converters/parsed-jdl-to-jdl-object/parsed-jdl-to-jdl-object-converter.js +1 -1
  205. package/dist/lib/jdl/core/built-in-options/binary-options.d.ts +12 -1
  206. package/dist/lib/testing/github.js +6 -3
  207. package/dist/lib/testing/helpers.d.ts +1 -0
  208. package/dist/lib/testing/helpers.js +15 -0
  209. package/dist/lib/utils/yo-rc.d.ts +3 -219
  210. package/package.json +27 -28
  211. 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></<%= jhiPrefixDashed %>-alert-error>
38
+ <<%= jhiPrefixDashed %>-alert-error />
39
39
 
40
- <<%= jhiPrefixDashed %>-alert></<%= 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"></<%= jhiPrefixDashed %>-filter>
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 }"></<%= jhiPrefixDashed %>-item-count>
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('Should call load all on init', () => {
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('Should forward to <%= entityInstance %>Service', () => {
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('Should return true if both entities are null', () => {
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('Should return false if one entity is null', () => {
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('Should return false if primaryKey differs', () => {
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('Should return false if primaryKey matches', () => {
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></<%= 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('Should call <%= otherEntity.entityAngularName %> query and add missing value', () => {
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('Should call <%= reference.name %> query and add missing value', () => {
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('Should update editForm', () => {
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('Should call update service on save for existing entity', () => {
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('Should call create service on save for new entity', () => {
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('Should set isSaving to false on error', () => {
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('Should forward to <%= otherEntity.entityInstance %>Service', () => {
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 %>');
@@ -90,7 +90,7 @@ describe('Home Component', () => {
90
90
  });
91
91
 
92
92
  describe('ngOnInit', () => {
93
- it('Should synchronize account variable with current account', () => {
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('Should navigate to /login on login', () => {
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('Should call loginService.login on login', () => {
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('Should destroy authentication state subscription on component destroy', () => {
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());
@@ -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></<%= jhiPrefixDashed %>-page-ribbon>
19
+ <<%= jhiPrefixDashed %>-page-ribbon />
20
20
 
21
21
  <div>
22
- <router-outlet name="navbar"></router-outlet>
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></router-outlet>
27
+ <router-outlet />
28
28
  </div>
29
29
 
30
- <<%= jhiPrefixDashed %>-footer></<%= 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('Should call profileService.getProfileInfo on init', () => {
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('Should hold current authenticated user in variable account', () => {
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('Should hold current authenticated user in variable account if user is authenticated before page load', () => {
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('Should call profileService.getProfileInfo on init', () => {
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, inject, OnInit } from '@angular/core';
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 (ribbonEnv$ | async; as ribbonEnv) {
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
- ribbonEnv$?: Observable<string | undefined>;
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
- this.ribbonEnv$ = this.profileService.getProfileInfo().pipe(map(profileInfo => profileInfo.ribbonEnv));
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
  }
@@ -65,7 +65,7 @@ describe('LoginComponent', () => {
65
65
  });
66
66
 
67
67
  describe('ngOnInit', () => {
68
- it('Should call accountService.identity on Init', () => {
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('Should call accountService.isAuthenticated on Init', () => {
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('Should display an alert on status 0', () => {
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('Should display an alert on status 404', () => {
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('Should display an alert on generic error', () => {
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('Should display an alert on status 400 for generic error', () => {
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('Should display an alert on status 400 for generic error without message', () => {
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('Should display an alert on status 400 for invalid parameters', () => {
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('Should display an alert on status 400 for error headers', () => {
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('Should display an alert on status 500 with detail', () => {
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('Should call alertService.get on init', () => {
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('Should call alertService.clear on destroy', () => {
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
- [x: string]: any;
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: string): string;
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 '>' to allow any number of spaces or new line prefix
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 '>' to allow any number of spaces or new line prefix
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.replace(/\s+/g, '([\\s\n]*)').replace(/>+/g, '(\n?[\\s]*)>');
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
- let regexp = new RegExp(`(?://|<!--|/*|#) ${needle}(?:$|\n| )`, 'g');
63
- let firstMatch = regexp.exec(content);
69
+ const regexp = new RegExp(`(?://|<!--|/\\*|#) ${needle}(?:$|\n| )`, 'g');
70
+ const firstMatch = regexp.exec(content);
64
71
  if (!firstMatch) {
65
- regexp = new RegExp(`"${needle}": `, 'g');
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 + 1);
78
- const afterContent = content.substring(needleLineIndex + 1);
79
- // Find needle ident
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
- return contentToAdd(content, { needleIndent, indentPrefix: ' '.repeat(needleIndent) });
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
- return `${beforeContent}${contentToAdd.join('\n')}\n${afterContent}`;
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
- const dto = entityWithConfig.dto && entityWithConfig.dto !== NO_DTO;
153
- if (dto) {
154
- const { dtoSuffix = '' } = application;
155
- mutateData(entityWithConfig, {
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(entityWithConfig.entityNameCapitalized),
177
- entityClassPluralHumanized: startCase(entityWithConfig.entityClassPlural),
164
+ entityClassHumanized: ({ entityNameCapitalized }) => startCase(entityNameCapitalized),
165
+ entityClassPluralHumanized: ({ entityNamePlural }) => startCase(entityNamePlural),
178
166
  });
179
167
  mutateData(entityWithConfig, {
180
168
  __override__: false,