generator-jhipster 8.7.1 → 8.7.3

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 (300) hide show
  1. package/README.md +3 -3
  2. package/dist/cli/commands.d.mts +89 -89
  3. package/dist/cli/environment-builder.d.mts +7 -6
  4. package/dist/cli/environment-builder.mjs +5 -3
  5. package/dist/cli/jhipster-command.d.mts +2 -2
  6. package/dist/cli/jhipster-command.mjs +13 -4
  7. package/dist/cli/program.d.mts +53 -36
  8. package/dist/cli/program.mjs +41 -32
  9. package/dist/cli/utils.d.mts +2 -3
  10. package/dist/cli/utils.mjs +11 -21
  11. package/dist/generators/angular/generator.js +2 -2
  12. package/dist/generators/angular/resources/package.json +13 -13
  13. package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.component.ts.ejs +2 -2
  14. package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.service.ts.ejs +2 -2
  15. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.ts.ejs +2 -2
  16. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.ts.ejs +2 -2
  17. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.service.ts.ejs +2 -2
  18. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.ts.ejs +2 -2
  19. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.service.ts.ejs +2 -2
  20. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.ts.ejs +2 -2
  21. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.service.ts.ejs +2 -2
  22. package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.ts.ejs +2 -2
  23. package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.service.ts.ejs +2 -2
  24. package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.component.ts.ejs +2 -2
  25. package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.service.ts.ejs +2 -2
  26. package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.ts.ejs +2 -2
  27. package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.component.ts.ejs +2 -2
  28. package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.service.ts.ejs +2 -2
  29. package/dist/generators/angular/templates/src/main/webapp/app/admin/gateway/gateway-routes.service.ts.ejs +2 -2
  30. package/dist/generators/angular/templates/src/main/webapp/app/admin/gateway/gateway.component.ts.ejs +1 -1
  31. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.component.ts.ejs +2 -2
  32. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.model.ts.ejs +1 -3
  33. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.service.ts.ejs +2 -2
  34. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/modal/health-modal.component.ts.ejs +1 -1
  35. package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.ts.ejs +3 -3
  36. package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.service.ts.ejs +2 -2
  37. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.ts.ejs +1 -1
  38. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.component.ts.ejs +2 -2
  39. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.model.ts.ejs +1 -6
  40. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.service.ts.ejs +2 -2
  41. package/dist/generators/angular/templates/src/main/webapp/app/admin/tracker/tracker.component.ts.ejs +1 -1
  42. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.ts.ejs +2 -2
  43. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.ts.ejs +5 -5
  44. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/service/user-management.service.ts.ejs +3 -3
  45. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.ts.ejs +2 -2
  46. package/dist/generators/angular/templates/src/main/webapp/app/app.component.ts.ejs +4 -4
  47. package/dist/generators/angular/templates/src/main/webapp/app/core/auth/account.service.ts.ejs +7 -7
  48. package/dist/generators/angular/templates/src/main/webapp/app/core/auth/auth-jwt.service.ts.ejs +3 -3
  49. package/dist/generators/angular/templates/src/main/webapp/app/core/auth/auth-session.service.ts.ejs +2 -2
  50. package/dist/generators/angular/templates/src/main/webapp/app/core/auth/csrf.service.ts.ejs +1 -1
  51. package/dist/generators/angular/templates/src/main/webapp/app/core/auth/state-storage.service.ts.ejs +3 -3
  52. package/dist/generators/angular/templates/src/main/webapp/app/core/interceptor/notification.interceptor.ts.ejs +1 -1
  53. package/dist/generators/angular/templates/src/main/webapp/app/core/tracker/tracker.service.ts.ejs +5 -5
  54. package/dist/generators/angular/templates/src/main/webapp/app/core/util/alert.service.ts.ejs +2 -2
  55. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.ts.ejs +4 -4
  56. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/service/_entityFile_.service.ts.ejs +2 -2
  57. package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.ts.ejs +3 -3
  58. package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.ts.ejs +7 -7
  59. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.ts.ejs +7 -7
  60. package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.ts.ejs +1 -1
  61. package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/profile.service.ts.ejs +3 -3
  62. package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.ts.ejs +3 -3
  63. package/dist/generators/angular/templates/src/main/webapp/app/login/login.service.ts.ejs +4 -4
  64. package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert-error.component.ts.ejs +3 -3
  65. package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert.component.ts.ejs +1 -1
  66. package/dist/generators/angular/templates/src/main/webapp/app/shared/auth/has-any-authority.directive.ts.ejs +2 -2
  67. package/dist/generators/angular/templates/src/main/webapp/app/shared/language/translate.directive.ts.ejs +2 -2
  68. package/dist/generators/angular/templates/src/main/webapp/app/shared/language/translation.module.ts.ejs +3 -3
  69. package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort-by.directive.ts.ejs +1 -1
  70. package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort.service.ts.ejs +1 -1
  71. package/dist/generators/base/api.d.ts +10 -4
  72. package/dist/generators/base/generator.d.ts +4 -0
  73. package/dist/generators/base/generator.js +10 -1
  74. package/dist/generators/base/shared-data.js +2 -0
  75. package/dist/generators/base/support/faker.d.ts +1 -1
  76. package/dist/generators/base/support/faker.js +1 -1
  77. package/dist/generators/base/support/timestamp.js +10 -2
  78. package/dist/generators/base-application/support/prepare-entity.js +6 -1
  79. package/dist/generators/base-application/support/prepare-field.js +40 -16
  80. package/dist/generators/base-application/support/prepare-relationship.d.ts +1 -1
  81. package/dist/generators/base-application/support/task-type-inference.d.ts +18 -18
  82. package/dist/generators/base-application/types.d.ts +4 -0
  83. package/dist/generators/base-core/generator.d.ts +7 -4
  84. package/dist/generators/base-core/generator.js +31 -35
  85. package/dist/generators/base-workspaces/generator.d.ts +34 -1
  86. package/dist/generators/base-workspaces/generator.js +1 -1
  87. package/dist/generators/base-workspaces/internal/docker-base.js +1 -3
  88. package/dist/generators/bootstrap/support/eslint-transform.js +2 -2
  89. package/dist/generators/bootstrap/support/java-unused-imports-transform.js +2 -2
  90. package/dist/generators/bootstrap/support/prettier-support.js +2 -2
  91. package/dist/generators/bootstrap-application-base/generator.d.ts +2 -2
  92. package/dist/generators/bootstrap-application-base/generator.js +19 -5
  93. package/dist/generators/bootstrap-application-base/utils.d.ts +3 -3
  94. package/dist/generators/bootstrap-application-base/utils.js +9 -3
  95. package/dist/generators/bootstrap-workspaces/command.d.ts +12 -2
  96. package/dist/generators/bootstrap-workspaces/command.js +5 -3
  97. package/dist/generators/bootstrap-workspaces/generator.d.ts +8 -2
  98. package/dist/generators/bootstrap-workspaces/generator.js +0 -2
  99. package/dist/generators/bootstrap-workspaces/index.d.ts +1 -0
  100. package/dist/generators/bootstrap-workspaces/index.js +1 -0
  101. package/dist/generators/client/command.d.ts +22 -0
  102. package/dist/generators/client/command.js +22 -0
  103. package/dist/generators/client/files-common.js +1 -1
  104. package/dist/generators/client/generator.js +4 -5
  105. package/dist/generators/client/prompts.js +10 -9
  106. package/dist/generators/client/resources/package.json +3 -3
  107. package/dist/generators/client/templates/webpack/webpack.microfrontend.js.jhi.ejs +16 -5
  108. package/dist/generators/common/generator.js +2 -2
  109. package/dist/generators/common/resources/package.json +1 -1
  110. package/dist/generators/common/templates/sonar-project.properties.ejs +13 -7
  111. package/dist/generators/cypress/files.js +6 -0
  112. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/login-page.cy.ts.ejs +2 -2
  113. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/logout.cy.ts.ejs +39 -0
  114. package/dist/generators/docker/generator.d.ts +1 -1
  115. package/dist/generators/docker/templates/docker/keycloak.yml.ejs +2 -1
  116. package/dist/generators/docker-compose/command.js +9 -1
  117. package/dist/generators/docker-compose/generator.d.ts +11 -53
  118. package/dist/generators/docker-compose/generator.js +24 -23
  119. package/dist/generators/generate-blueprint/command.d.ts +97 -20
  120. package/dist/generators/generate-blueprint/command.js +28 -0
  121. package/dist/generators/generate-blueprint/constants.d.ts +2 -2
  122. package/dist/generators/generate-blueprint/files.d.ts +1 -42
  123. package/dist/generators/generate-blueprint/files.js +27 -29
  124. package/dist/generators/generate-blueprint/generator.d.ts +5 -2
  125. package/dist/generators/generate-blueprint/generator.js +78 -22
  126. package/dist/generators/generate-blueprint/resources/package.json +3 -3
  127. package/dist/generators/generate-blueprint/templates/.github/workflows/samples.yml.ejs +6 -8
  128. package/dist/generators/generate-blueprint/templates/README.md.ejs +12 -2
  129. package/dist/generators/generate-blueprint/templates/cli/cli-customizations.cjs.ejs +2 -0
  130. package/dist/generators/generate-blueprint/templates/cli/cli.cjs.ejs +2 -1
  131. package/dist/generators/generate-blueprint/templates/cli/commands.cjs.ejs +1 -1
  132. package/dist/generators/generate-blueprint/templates/eslint.config.js.jhi.blueprint.ejs +3 -2
  133. package/dist/generators/generate-blueprint/templates/generators/generator/command.mjs.ejs +8 -12
  134. package/dist/generators/generate-blueprint/templates/generators/generator/generator.mjs.jhi.ejs +8 -11
  135. package/dist/generators/generate-blueprint/templates/generators/generator/generator.spec.mjs.ejs +2 -2
  136. package/dist/generators/generate-blueprint/templates/generators/generator/index.mjs.ejs +2 -4
  137. package/dist/generators/generate-blueprint/templates/vitest.config.ts.ejs +0 -1
  138. package/dist/generators/generator-constants.d.ts +2 -2
  139. package/dist/generators/generator-constants.js +3 -3
  140. package/dist/generators/git/command.d.ts +10 -0
  141. package/dist/generators/git/command.js +10 -0
  142. package/dist/generators/git/generator.d.ts +5 -4
  143. package/dist/generators/git/generator.js +6 -4
  144. package/dist/generators/gradle/generators/node-gradle/templates/buildSrc/src/main/groovy/jhipster.node-gradle-conventions.gradle.ejs +16 -10
  145. package/dist/generators/gradle/internal/needles.d.ts +3 -1
  146. package/dist/generators/gradle/internal/needles.js +10 -5
  147. package/dist/generators/gradle/templates/gradle/wrapper/gradle-wrapper.properties +1 -1
  148. package/dist/generators/gradle/types.d.ts +3 -2
  149. package/dist/generators/init/command.d.ts +4 -20
  150. package/dist/generators/init/command.js +1 -1
  151. package/dist/generators/init/resources/.node-version +1 -1
  152. package/dist/generators/java/command.d.ts +3 -5
  153. package/dist/generators/java/command.js +1 -20
  154. package/dist/generators/java/generators/bootstrap/command.d.ts +7 -0
  155. package/dist/generators/java/generators/bootstrap/command.js +7 -0
  156. package/dist/generators/java/generators/build-tool/generator.js +37 -13
  157. package/dist/generators/java/generators/graalvm/command.d.ts +5 -0
  158. package/dist/generators/java/generators/graalvm/command.js +5 -0
  159. package/dist/generators/java/generators/graalvm/generator.d.ts +9 -0
  160. package/dist/generators/java/generators/graalvm/generator.js +222 -0
  161. package/dist/generators/java/generators/graalvm/index.d.ts +20 -0
  162. package/dist/generators/java/generators/graalvm/index.js +20 -0
  163. package/dist/generators/java/generators/graalvm/internal/maven-definition.d.ts +8 -0
  164. package/dist/generators/java/generators/graalvm/internal/maven-definition.js +130 -0
  165. package/dist/generators/java/generators/graalvm/resources/build.gradle +1 -0
  166. package/dist/generators/java/generators/graalvm/resources/gradle/libs.versions.toml +5 -0
  167. package/dist/generators/java/generators/graalvm/templates/README.md.jhi.native.ejs +53 -0
  168. package/dist/generators/java/generators/graalvm/templates/gradle/native.gradle.ejs +44 -0
  169. package/dist/generators/java/generators/graalvm/templates/src/main/java/_package_/config/NativeConfiguration.java.ejs +14 -0
  170. package/dist/generators/java/generators/node/generator.d.ts +6 -18
  171. package/dist/generators/java/generators/node/generator.js +31 -0
  172. package/dist/generators/java/generators/openapi-generator/generator.js +2 -2
  173. package/dist/generators/java/support/util.d.ts +1 -1
  174. package/dist/generators/java/types.d.ts +4 -1
  175. package/dist/generators/javascript/generators/bootstrap/command.d.ts +21 -20
  176. package/dist/generators/javascript/generators/bootstrap/generator.d.ts +1 -2
  177. package/dist/generators/javascript/generators/bootstrap/generator.js +9 -5
  178. package/dist/generators/javascript/types.d.ts +9 -2
  179. package/dist/generators/kubernetes/command.d.ts +12 -0
  180. package/dist/generators/kubernetes/command.js +12 -0
  181. package/dist/generators/kubernetes/index.d.ts +1 -0
  182. package/dist/generators/kubernetes/index.js +1 -0
  183. package/dist/generators/kubernetes-helm/index.d.ts +1 -0
  184. package/dist/generators/kubernetes-helm/index.js +1 -0
  185. package/dist/generators/kubernetes-knative/generator.d.ts +1 -1
  186. package/dist/generators/kubernetes-knative/index.d.ts +1 -0
  187. package/dist/generators/kubernetes-knative/index.js +1 -0
  188. package/dist/generators/languages/entity-files.d.ts +3 -2
  189. package/dist/generators/languages/entity-files.js +0 -1
  190. package/dist/generators/languages/generator.d.ts +1 -0
  191. package/dist/generators/languages/generator.js +1 -0
  192. package/dist/generators/liquibase/files.js +8 -0
  193. package/dist/generators/liquibase/generator.d.ts +1 -1
  194. package/dist/generators/liquibase/generator.js +15 -0
  195. package/dist/generators/liquibase/templates/src/main/resources/META-INF/native-image/liquibase/reflect-config.json +145 -0
  196. package/dist/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/add_relationship_constraints.ejs +81 -0
  197. package/dist/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/added_entity_constraints.xml.ejs +2 -62
  198. package/dist/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity_constraints.xml.ejs +3 -60
  199. package/dist/generators/maven/generators/frontend-plugin/generator.js +10 -5
  200. package/dist/generators/maven/types.d.ts +3 -6
  201. package/dist/generators/project-name/command.d.ts +25 -20
  202. package/dist/generators/project-name/command.js +20 -4
  203. package/dist/generators/project-name/generator.d.ts +3 -12
  204. package/dist/generators/project-name/generator.js +6 -38
  205. package/dist/generators/react/generator.d.ts +1 -1
  206. package/dist/generators/react/generator.js +15 -2
  207. package/dist/generators/react/resources/package.json +26 -25
  208. package/dist/generators/react/templates/package.json.ejs +0 -3
  209. package/dist/generators/server/generator.d.ts +1 -7
  210. package/dist/generators/server/generator.js +22 -50
  211. package/dist/generators/server/resources/Dockerfile +12 -12
  212. package/dist/generators/server/resources/gradle/libs.versions.toml +10 -7
  213. package/dist/generators/server/resources/pom.xml +11 -11
  214. package/dist/generators/server/types.d.ts +8 -0
  215. package/dist/generators/spring-boot/cleanup.js +2 -2
  216. package/dist/generators/spring-boot/command.d.ts +19 -0
  217. package/dist/generators/spring-boot/command.js +19 -0
  218. package/dist/generators/spring-boot/generator.d.ts +2 -2
  219. package/dist/generators/spring-boot/generator.js +5 -9
  220. package/dist/generators/spring-boot/prompts.js +12 -12
  221. package/dist/generators/spring-boot/resources/spring-boot-dependencies.pom +107 -106
  222. package/dist/generators/spring-boot/templates/README.md.jhi.spring-boot.ejs +22 -16
  223. package/dist/generators/spring-boot/templates/gradle/profile_dev.gradle.ejs +2 -46
  224. package/dist/generators/spring-boot/templates/gradle/profile_prod.gradle.ejs +1 -47
  225. package/dist/generators/spring-boot/templates/src/main/java/_package_/Application.java.ejs +4 -1
  226. package/dist/generators/spring-boot/templates/src/main/java/_package_/config/SecurityConfiguration_imperative.java.ejs +29 -6
  227. package/dist/generators/spring-boot/templates/src/main/java/_package_/config/SecurityConfiguration_reactive.java.ejs +32 -6
  228. package/dist/generators/spring-boot/templates/src/main/java/_package_/config/WebConfigurer.java.ejs +13 -8
  229. package/dist/generators/spring-boot/templates/src/main/java/_package_/domain/User.java.ejs +2 -3
  230. package/dist/generators/spring-boot/templates/src/main/resources/config/application-dev.yml.ejs +8 -3
  231. package/dist/generators/spring-boot/templates/src/main/resources/config/application.yml.ejs +4 -2
  232. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs +8 -7
  233. package/dist/generators/spring-cache/generator.d.ts +2 -1
  234. package/dist/generators/spring-cache/generator.js +22 -0
  235. package/dist/generators/spring-cache/resources/gradle/libs.versions.toml +1 -1
  236. package/dist/generators/spring-cloud/generators/gateway/generator.js +2 -2
  237. package/dist/generators/spring-data-couchbase/generator.js +2 -2
  238. package/dist/generators/spring-data-mongodb/generator.d.ts +1 -1
  239. package/dist/generators/spring-data-relational/files.d.ts +1 -0
  240. package/dist/generators/spring-data-relational/files.js +6 -0
  241. package/dist/generators/spring-data-relational/generator.d.ts +2 -1
  242. package/dist/generators/spring-data-relational/generator.js +63 -2
  243. package/dist/generators/spring-data-relational/internal/dependencies.d.ts +87 -7
  244. package/dist/generators/spring-data-relational/internal/dependencies.js +30 -18
  245. package/dist/generators/spring-data-relational/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.spring_data_persistable.ejs +6 -0
  246. package/dist/generators/spring-data-relational/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.spring_data_reactive.ejs +1 -2
  247. package/dist/generators/spring-data-relational/templates/src/main/java/_package_/config/DatabaseConfiguration.java.ejs +8 -3
  248. package/dist/generators/spring-data-relational/templates/src/main/java/_package_/config/JacksonNativeConfiguration.java.ejs +98 -0
  249. package/dist/generators/vue/files-vue.js +4 -1
  250. package/dist/generators/vue/generator.d.ts +1 -1
  251. package/dist/generators/vue/generator.js +84 -3
  252. package/dist/generators/vue/resources/package.json +21 -20
  253. package/dist/generators/vue/support/update-languages.js +1 -1
  254. package/dist/generators/vue/templates/module-federation.config.cjs.ejs +55 -0
  255. package/dist/generators/vue/templates/package.json.ejs +11 -62
  256. package/dist/generators/vue/templates/src/main/webapp/app/main.ts.ejs +1 -1
  257. package/dist/generators/vue/templates/vite.config.mts.ejs +15 -21
  258. package/dist/generators/workspaces/generator.d.ts +20 -9
  259. package/dist/generators/workspaces/generator.js +3 -3
  260. package/dist/lib/application/field-types.d.ts +2 -1
  261. package/dist/lib/command/converter.d.ts +6 -2
  262. package/dist/lib/command/converter.js +4 -1
  263. package/dist/lib/command/load.js +1 -0
  264. package/dist/lib/command/lookup-commands-configs.js +9 -12
  265. package/dist/lib/command/support/merge-union.d.ts +17 -6
  266. package/dist/lib/command/types.d.ts +38 -11
  267. package/dist/lib/eslint/index.d.ts +6 -14
  268. package/dist/lib/eslint/index.js +1 -2
  269. package/dist/lib/index.d.ts +1 -0
  270. package/dist/lib/index.js +7 -3
  271. package/dist/lib/jdl/core/linters/rules.d.ts +1 -3
  272. package/dist/lib/jdl/core/parsing/validator.js +2 -2
  273. package/dist/lib/jhipster/default-application-options.d.ts +83 -15
  274. package/dist/lib/jhipster/default-application-options.js +28 -28
  275. package/dist/lib/testing/get-generator.d.ts +1 -0
  276. package/dist/lib/testing/get-generator.js +6 -2
  277. package/dist/lib/testing/github-group.d.ts +6 -0
  278. package/dist/lib/testing/github-group.js +56 -0
  279. package/dist/lib/testing/github-matrix.d.ts +38 -0
  280. package/dist/lib/testing/github-matrix.js +72 -0
  281. package/dist/lib/testing/github.d.ts +1 -0
  282. package/dist/lib/testing/github.js +6 -2
  283. package/dist/lib/testing/helpers.d.ts +41 -3
  284. package/dist/lib/testing/helpers.js +74 -12
  285. package/dist/lib/testing/index.d.ts +2 -0
  286. package/dist/lib/testing/index.js +2 -0
  287. package/dist/lib/testing/support/matcher.d.ts +2 -2
  288. package/dist/lib/testing/support/matcher.js +3 -3
  289. package/dist/lib/types/application/application.d.ts +6 -1
  290. package/dist/lib/types/application/entity.d.ts +3 -1
  291. package/dist/lib/types/application/field.d.ts +16 -4
  292. package/dist/lib/types/application/options.d.ts +4 -0
  293. package/dist/lib/types/application/relationship.d.ts +1 -0
  294. package/dist/lib/types/application/yo-rc.d.ts +4 -0
  295. package/dist/lib/types/base/entity.d.ts +1 -0
  296. package/dist/lib/utils/logger.d.ts +1 -1
  297. package/dist/lib/utils/yo-rc.d.ts +27 -3
  298. package/package.json +33 -31
  299. package/dist/generators/generate-blueprint/templates/vitest.test-setup.ts.ejs +0 -6
  300. package/dist/generators/vue/templates/webpack/webpack.microfrontend.js.jhi.vue.ejs +0 -45
@@ -1,8 +1,19 @@
1
- type Compute<T> = { [K in keyof T]: T[K] } | never;
2
- type AllKeys<T> = T extends any ? keyof T : never;
3
1
  /**
4
- * Based on https://github.com/sindresorhus/type-fest/issues/610
2
+ * Based on https://github.com/sindresorhus/type-fest/issues/610#issuecomment-2398118998
5
3
  */
6
- export type MergeUnion<T, Keys extends keyof T = keyof T> = Compute<
7
- { [K in Keys]: T[Keys] } & { [K in AllKeys<T>]?: T extends any ? (K extends keyof T ? T[K] : never) : never }
8
- >;
4
+ import type { EmptyObject, IsNever, KeysOfUnion, Simplify, UnionToIntersection } from 'type-fest';
5
+
6
+ type _MergeUnionKnownKeys<BaseType, Keys extends keyof BaseType = keyof BaseType> = {
7
+ [K in Keys]: Keys extends K ? BaseType[Keys] : never;
8
+ };
9
+
10
+ type IsUnion<T> = [T] extends [UnionToIntersection<T>] ? false : true;
11
+
12
+ export type MergeUnion<BaseType> =
13
+ IsNever<BaseType> extends false
14
+ ? Simplify<
15
+ _MergeUnionKnownKeys<BaseType> & {
16
+ [K in KeysOfUnion<BaseType>]?: BaseType extends object ? (K extends keyof BaseType ? BaseType[K] : never) : never;
17
+ }
18
+ >
19
+ : EmptyObject;
@@ -31,19 +31,24 @@ export type PromptSpec = {
31
31
 
32
32
  type JHipsterArgumentConfig = SetOptional<ArgumentSpec, 'name'> & { scope?: CommandConfigScope };
33
33
 
34
+ type CliSpec = Omit<SetOptional<CliOptionSpec, 'name'>, 'storage'> & {
35
+ env?: string;
36
+ /**
37
+ * Imply other options.
38
+ */
39
+ implies?: Record<string, any>;
40
+ };
41
+
34
42
  export type ConfigSpec<ConfigContext> = {
35
43
  readonly description?: string;
36
44
  readonly choices?: JHispterChoices;
37
-
38
- readonly cli?: SetOptional<CliOptionSpec, 'name'> & { env?: string };
45
+ readonly cli?: CliSpec;
39
46
  readonly argument?: JHipsterArgumentConfig;
47
+ readonly internal?: true;
40
48
  readonly prompt?:
41
49
  | PromptSpec
42
50
  | ((gen: ConfigContext & { jhipsterConfigWithDefaults: Record<string, any> }, config: ConfigSpec<ConfigContext>) => PromptSpec);
43
51
  readonly jdl?: Omit<JHipsterOptionDefinition, 'name' | 'knownChoices'>;
44
- readonly storage?: {
45
- readonly type?: typeof Boolean | typeof String | typeof Number | typeof Array;
46
- };
47
52
  readonly scope?: CommandConfigScope;
48
53
  /**
49
54
  * The callback receives the generator as input for 'generator' scope.
@@ -69,7 +74,10 @@ export type JHipsterArguments = Record<string, JHipsterArgumentConfig>;
69
74
 
70
75
  export type JHipsterOptions = Record<string, JHipsterOption>;
71
76
 
72
- export type JHipsterConfig<ConfigContext = any> = RequireAtLeastOne<ConfigSpec<ConfigContext>, 'argument' | 'cli' | 'prompt' | 'storage'>;
77
+ export type JHipsterConfig<ConfigContext = any> = RequireAtLeastOne<
78
+ ConfigSpec<ConfigContext>,
79
+ 'argument' | 'cli' | 'prompt' | 'jdl' | 'internal'
80
+ >;
73
81
 
74
82
  export type JHipsterConfigs<ConfigContext = any> = Record<string, JHipsterConfig<ConfigContext>>;
75
83
 
@@ -194,6 +202,12 @@ type DerivedPropertiesWithInferenceUnionFromParseableConfigs<U extends Parseable
194
202
  : never;
195
203
  };
196
204
 
205
+ /**
206
+ * @example
207
+ * ```ts
208
+ * type ExplodedCommandChoices = ExplodeCommandChoicesNoInference<{ clientFramework: { choices: ['angular', 'no'], scope: 'storage' }, clientTestFramework: { choices: ['cypress', 'no'], scope: 'storage' } }>
209
+ * ```
210
+ */
197
211
  type ExplodeCommandChoicesNoInference<U extends ParseableConfigs> = {
198
212
  [K in keyof U]: U[K] extends infer RequiredChoices
199
213
  ? RequiredChoices extends { choices: any }
@@ -222,19 +236,32 @@ type PrepareConfigsWithType<U extends ParseableConfigs> = Simplify<{
222
236
  /** Keep Options/Config filtered by choices */
223
237
  type OnlyChoices<D, C extends boolean> = D extends { choices: JHispterChoices } ? (C extends true ? D : never) : C extends true ? never : D;
224
238
 
225
- /** Keep Options/Config filtered by choices */
226
- type OnlyCofigsWithChoice<D extends ParseableConfigs, C extends boolean> = {
239
+ /**
240
+ * Keep Options/Config filtered by choices
241
+ *
242
+ * @example
243
+ * ```ts
244
+ * type ConfigsWithChoice = OnlyConfigsWithChoice<{ clientFramework: { choices: ['angular', 'no'], scope: 'storage' }, clientTestFramework: { choices: ['cypress', 'no'], scope: 'storage' } }>
245
+ * ```
246
+ */
247
+ type OnlyConfigsWithChoice<D extends ParseableConfigs, C extends boolean> = {
227
248
  [K in keyof D as OnlyChoices<D[K], C> extends never ? never : K]: D[K];
228
249
  };
229
250
 
251
+ /**
252
+ * @example
253
+ * ```
254
+ * type Prop = ExportApplicationPropertiesFromCommand<{ configs: { clientFramework: { choices: ['angular', 'no'], scope: 'storage' }, bar: { scope: 'storage' } } }>;
255
+ * ```
256
+ */
230
257
  export type ExportApplicationPropertiesFromCommand<C extends ParseableCommand> =
231
258
  MergeConfigsOptions<C, 'storage'> extends infer Merged
232
259
  ? Merged extends ParseableConfigs
233
260
  ? // Add value inference to properties with choices
234
- // ? PrepareConfigsWithType<OnlyCofigsWithChoice<F, false>> & ValueOf<ExplodeCommandChoicesWithInference<OnlyCofigsWithChoice<F, true>>>
261
+ // ? PrepareConfigsWithType<OnlyConfigsWithChoice<F, false>> & ValueOf<ExplodeCommandChoicesWithInference<OnlyConfigsWithChoice<F, true>>>
235
262
  Simplify<
236
- PrepareConfigsWithType<OnlyCofigsWithChoice<Merged, false>> &
237
- MergeUnion<ValueOf<ExplodeCommandChoicesNoInference<OnlyCofigsWithChoice<Merged, true>>>>
263
+ PrepareConfigsWithType<OnlyConfigsWithChoice<Merged, false>> &
264
+ MergeUnion<ValueOf<ExplodeCommandChoicesNoInference<OnlyConfigsWithChoice<Merged, true>>>>
238
265
  >
239
266
  : never
240
267
  : never;
@@ -1,15 +1,7 @@
1
- declare const _default: {
2
- recommended: import("typescript-eslint").ConfigWithExtends;
3
- base: import("typescript-eslint").ConfigWithExtends;
4
- extends?: import("@typescript-eslint/utils/ts-eslint").FlatConfig.ConfigArray;
5
- files?: (string[] | string)[];
6
- ignores?: string[];
7
- languageOptions?: import("@typescript-eslint/utils/ts-eslint").FlatConfig.LanguageOptions;
8
- linterOptions?: import("@typescript-eslint/utils/ts-eslint").FlatConfig.LinterOptions;
9
- name?: string;
10
- plugins?: import("@typescript-eslint/utils/ts-eslint").FlatConfig.Plugins;
11
- processor?: import("@typescript-eslint/utils/ts-eslint").FlatConfig.Processor | string;
12
- rules?: import("@typescript-eslint/utils/ts-eslint").FlatConfig.Rules;
13
- settings?: import("@typescript-eslint/utils/ts-eslint").FlatConfig.Settings;
14
- };
1
+ declare namespace _default {
2
+ export { recommended };
3
+ export { base };
4
+ }
15
5
  export default _default;
6
+ import recommended from './recommended.js';
7
+ import base from './base.js';
@@ -1,4 +1,3 @@
1
1
  import recommended from './recommended.js';
2
2
  import base from './base.js';
3
- recommended.recommended = recommended;
4
- export default { ...recommended, recommended, base };
3
+ export default { recommended, base };
@@ -1,3 +1,4 @@
1
1
  export declare const isDistFolder: () => boolean;
2
2
  export declare const getPackageRoot: (relativePath?: string) => string;
3
+ export declare const getSourceRoot: (relativePath?: string) => string;
3
4
  export declare const packageJson: any;
package/dist/lib/index.js CHANGED
@@ -4,11 +4,15 @@ import { fileURLToPath } from 'url';
4
4
  const __filename = fileURLToPath(import.meta.url);
5
5
  const __dirname = dirname(__filename);
6
6
  export const isDistFolder = () => {
7
- return basename(join(__dirname, '..')) === 'dist';
7
+ return basename(dirname(__dirname)) === 'dist';
8
8
  };
9
9
  export const getPackageRoot = (relativePath) => {
10
- const sourceRoot = join(__dirname, '..');
11
- const packageDirectory = isDistFolder() ? join(sourceRoot, '..') : sourceRoot;
10
+ const sourceRoot = dirname(__dirname);
11
+ const packageDirectory = isDistFolder() ? dirname(sourceRoot) : sourceRoot;
12
12
  return relativePath ? join(packageDirectory, relativePath) : packageDirectory;
13
13
  };
14
+ export const getSourceRoot = (relativePath) => {
15
+ const sourceRoot = dirname(__dirname);
16
+ return relativePath ? join(sourceRoot, relativePath) : sourceRoot;
17
+ };
14
18
  export const packageJson = JSON.parse(readFileSync(getPackageRoot('package.json')).toString());
@@ -28,9 +28,7 @@ export declare const rulesNames: {
28
28
  ENUM_UNUSED: string;
29
29
  };
30
30
  type RuleNames = keyof typeof rulesNames;
31
- export declare const rules: {
32
- [key in RuleNames]: Rule;
33
- };
31
+ export declare const rules: Record<RuleNames, Rule>;
34
32
  /**
35
33
  * Gets and returns the rule having the passed name.
36
34
  * @param ruleName - the name of the rule to fetch
@@ -17,7 +17,7 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  /* eslint-disable no-useless-escape */
20
- import { first, flatten, includes, values } from 'lodash-es';
20
+ import { first, flatten, includes } from 'lodash-es';
21
21
  import { tokenMatcher as matchesToken } from 'chevrotain';
22
22
  import { ALPHABETIC, ALPHABETIC_DASH_LOWER, ALPHABETIC_LOWER, ALPHANUMERIC, ALPHANUMERIC_DASH, ALPHANUMERIC_SPACE, ALPHANUMERIC_UNDERSCORE, } from '../built-in-options/validation-patterns.js';
23
23
  const CONSTANT_PATTERN = /^[A-Z_]+$/;
@@ -352,7 +352,7 @@ export default function performAdditionalSyntaxChecks(cst, runtime) {
352
352
  this.visit(context.deploymentConfigValue, context.DEPLOYMENT_KEY[0]);
353
353
  }
354
354
  deploymentConfigValue(context, configKey) {
355
- const configValue = first(first(values(context)));
355
+ const configValue = first(first(Object.values(context)));
356
356
  this.checkDeploymentConfigPropSyntax(configKey, configValue);
357
357
  }
358
358
  }
@@ -16,18 +16,86 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
- export declare function getConfigWithDefaults(customOptions?: string | Record<string, any>): any;
20
- export declare function getConfigForClientApplication(options?: any): any;
21
- export declare function getConfigForAuthenticationType(options?: any): any;
22
- export declare function getConfigForPackageName(options?: any): any;
23
- export declare function getConfigForCacheProvider(options?: any): any;
24
- export declare function getConfigForReactive(options?: any): any;
25
- export declare function getConfigForTranslation(options?: any): any;
26
- export declare function getConfigForDatabaseType(options?: any): any;
27
- export declare function getServerConfigForMonolithApplication(customOptions?: any): any;
28
- export declare function getConfigForMonolithApplication(customOptions?: any): any;
29
- export declare function getServerConfigForGatewayApplication(customOptions?: any): any;
30
- export declare function getConfigForGatewayApplication(customOptions?: any): any;
31
- export declare function getServerConfigForMicroserviceApplication(customOptions?: any): any;
32
- export declare function getConfigForMicroserviceApplication(customOptions?: any): any;
33
- export declare function getDefaultConfigForNewApplication(customOptions?: any): any;
19
+ import type { ApplicationConfiguration } from '../types/application/yo-rc.js';
20
+ type ApplicationDefaults = Partial<ApplicationConfiguration>;
21
+ export declare function getConfigWithDefaults(customOptions?: ApplicationDefaults): Partial<{
22
+ jhipsterVersion?: string | undefined;
23
+ baseName: string;
24
+ creationTimestamp?: number | undefined;
25
+ lastLiquibaseTimestamp?: number | undefined;
26
+ blueprints?: {
27
+ name: string;
28
+ }[] | undefined;
29
+ testFrameworks?: string[] | undefined;
30
+ microfrontends?: {
31
+ baseName: string;
32
+ }[] | undefined;
33
+ skipClient?: boolean | undefined;
34
+ skipServer?: boolean | undefined;
35
+ jhiPrefix?: string | undefined;
36
+ entitySuffix?: string | undefined;
37
+ dtoSuffix?: string | undefined;
38
+ pkType?: string | undefined;
39
+ clientPackageManager?: string | undefined;
40
+ jdlStore?: string | undefined;
41
+ skipJhipsterDependencies?: boolean | undefined;
42
+ clientFramework?: "no" | "angular" | "react" | "vue" | undefined;
43
+ clientTheme?: string | undefined;
44
+ clientThemeVariant?: string | undefined;
45
+ clientBundler?: "webpack" | "vite" | undefined;
46
+ microfrontend?: boolean | undefined;
47
+ clientTestFrameworks?: "cypress" | undefined;
48
+ withAdminUi?: boolean | undefined;
49
+ clientRootDir?: string | undefined;
50
+ monorepository?: boolean | undefined;
51
+ packageName?: string | undefined;
52
+ packageFolder?: string | undefined;
53
+ withGeneratedFlag?: boolean | undefined;
54
+ buildTool?: string | undefined;
55
+ packageJsonNodeEngine?: unknown;
56
+ packageJsonType?: "commonjs" | "module" | undefined;
57
+ prettierTabWidth?: number | undefined;
58
+ languages?: unknown[] | undefined;
59
+ enableTranslation?: boolean | undefined;
60
+ nativeLanguage?: string | undefined;
61
+ incrementalChangelog?: boolean | undefined;
62
+ skipFakeData?: boolean | undefined;
63
+ applicationType?: "monolith" | "microservice" | "gateway" | undefined;
64
+ skipUserManagement?: boolean | undefined;
65
+ cacheProvider?: string | undefined;
66
+ enableSwaggerCodegen?: boolean | undefined;
67
+ enableHibernateCache?: boolean | undefined;
68
+ searchEngine?: string | undefined;
69
+ skipCheckLengthOfIdentifier?: boolean | undefined;
70
+ websocket?: string | undefined;
71
+ reactive?: boolean | undefined;
72
+ serverPort?: unknown;
73
+ serviceDiscoveryType?: "no" | "eureka" | "consul" | undefined;
74
+ jwtSecretKey?: string | undefined;
75
+ authenticationType?: "session" | "jwt" | "oauth2" | undefined;
76
+ feignClient?: boolean | undefined;
77
+ syncUserWithIdp?: boolean | undefined;
78
+ defaultPackaging?: "jar" | "war" | undefined;
79
+ databaseType?: "sql" | "mongodb" | "cassandra" | "couchbase" | "neo4j" | "no" | undefined;
80
+ messageBroker?: "no" | "kafka" | "pulsar" | undefined;
81
+ databaseMigration?: "liquibase" | undefined;
82
+ graalvmSupport?: boolean | undefined;
83
+ routes?: unknown[] | undefined;
84
+ prodDatabaseType?: "mysql" | "mariadb" | "postgresql" | "mssql" | "oracle" | undefined;
85
+ devDatabaseType?: string | undefined;
86
+ }>;
87
+ export declare function getConfigForClientApplication(options?: ApplicationDefaults): ApplicationDefaults;
88
+ export declare function getConfigForAuthenticationType(options?: ApplicationDefaults): ApplicationDefaults;
89
+ export declare function getConfigForPackageName(options?: ApplicationDefaults): ApplicationDefaults;
90
+ export declare function getConfigForCacheProvider(options?: ApplicationDefaults): ApplicationDefaults;
91
+ export declare function getConfigForReactive(options?: ApplicationDefaults): ApplicationDefaults;
92
+ export declare function getConfigForTranslation(options?: ApplicationDefaults): ApplicationDefaults;
93
+ export declare function getConfigForDatabaseType(options?: ApplicationDefaults): ApplicationDefaults;
94
+ export declare function getServerConfigForMonolithApplication(customOptions?: ApplicationDefaults): ApplicationDefaults;
95
+ export declare function getConfigForMonolithApplication(customOptions?: ApplicationDefaults): ApplicationDefaults;
96
+ export declare function getServerConfigForGatewayApplication(customOptions?: ApplicationDefaults): ApplicationDefaults;
97
+ export declare function getConfigForGatewayApplication(customOptions?: ApplicationDefaults): ApplicationDefaults;
98
+ export declare function getServerConfigForMicroserviceApplication(customOptions?: ApplicationDefaults): ApplicationDefaults;
99
+ export declare function getConfigForMicroserviceApplication(customOptions?: ApplicationDefaults): ApplicationDefaults;
100
+ export declare function getDefaultConfigForNewApplication(customOptions?: ApplicationDefaults): ApplicationDefaults;
101
+ export {};
@@ -26,13 +26,12 @@ import clientFrameworkTypes from './client-framework-types.js';
26
26
  import buildToolTypes from './build-tool-types.js';
27
27
  const { MONOLITH, MICROSERVICE, GATEWAY } = applicationTypes;
28
28
  const { CONSUL } = serviceDiscoveryTypes;
29
- const { COUCHBASE, CASSANDRA, MONGODB, NEO4J, SQL, POSTGRESQL } = databaseTypes;
30
- const NO_DATABASE_TYPE = databaseTypes.NO;
29
+ const { SQL, POSTGRESQL } = databaseTypes;
31
30
  const { OptionNames, OptionValues } = applicationOptions;
32
31
  const { JWT, OAUTH2 } = authenticationTypes;
33
32
  const { ANGULAR, NO: NO_CLIENT_FRAMEWORK } = clientFrameworkTypes;
34
33
  const { EHCACHE, HAZELCAST } = cacheTypes;
35
- const NO_CACHE_PROVIDER = cacheTypes.NO;
34
+ const { NO: NO_CACHE_PROVIDER, MEMCACHED } = cacheTypes;
36
35
  const NO_SERVICE_DISCOVERY = serviceDiscoveryTypes.NO;
37
36
  const { MAVEN } = buildToolTypes;
38
37
  const { APPLICATION_TYPE, AUTHENTICATION_TYPE, BASE_NAME, BUILD_TOOL, CACHE_PROVIDER, CLIENT_FRAMEWORK, CLIENT_THEME, CLIENT_THEME_VARIANT, WITH_ADMIN_UI, DATABASE_TYPE, DEV_DATABASE_TYPE, DTO_SUFFIX, ENABLE_HIBERNATE_CACHE, ENABLE_SWAGGER_CODEGEN, ENABLE_TRANSLATION, ENTITY_SUFFIX, JHI_PREFIX, LANGUAGES, NATIVE_LANGUAGE, PACKAGE_FOLDER, PACKAGE_NAME, PROD_DATABASE_TYPE, REACTIVE, SEARCH_ENGINE, SERVER_PORT, SERVICE_DISCOVERY_TYPE, SKIP_CLIENT, SKIP_USER_MANAGEMENT, TEST_FRAMEWORKS, WEBSOCKET, ENABLE_GRADLE_ENTERPRISE, GRADLE_ENTERPRISE_HOST, } = OptionNames;
@@ -49,7 +48,7 @@ const commonDefaultOptions = {
49
48
  [WEBSOCKET]: OptionValues[WEBSOCKET].no,
50
49
  };
51
50
  export function getConfigWithDefaults(customOptions = {}) {
52
- const applicationType = typeof customOptions === 'string' ? customOptions : customOptions.applicationType;
51
+ const applicationType = customOptions.applicationType;
53
52
  if (applicationType === GATEWAY) {
54
53
  return getConfigForGatewayApplication(customOptions);
55
54
  }
@@ -62,18 +61,28 @@ export function getConfigForClientApplication(options = {}) {
62
61
  if (options[SKIP_CLIENT]) {
63
62
  options[CLIENT_FRAMEWORK] = NO_CLIENT_FRAMEWORK;
64
63
  }
64
+ const clientFramework = options[CLIENT_FRAMEWORK];
65
+ if (clientFramework === NO_CLIENT_FRAMEWORK) {
66
+ return options;
67
+ }
65
68
  if (options[OptionNames.MICROFRONTEND] === undefined) {
66
69
  options[OptionNames.MICROFRONTEND] = Boolean(options[OptionNames.MICROFRONTENDS]?.length);
67
70
  }
68
- const clientFramework = options[CLIENT_FRAMEWORK];
69
- if (clientFramework !== NO_CLIENT_FRAMEWORK) {
70
- if (!options[CLIENT_THEME]) {
71
- options[CLIENT_THEME] = OptionValues[CLIENT_THEME];
72
- options[CLIENT_THEME_VARIANT] = '';
73
- }
74
- else if (options[CLIENT_THEME] !== OptionValues[CLIENT_THEME] && !options[CLIENT_THEME_VARIANT]) {
75
- options[CLIENT_THEME_VARIANT] = 'primary';
76
- }
71
+ if (!options[CLIENT_THEME]) {
72
+ options[CLIENT_THEME] = OptionValues[CLIENT_THEME];
73
+ options[CLIENT_THEME_VARIANT] = '';
74
+ }
75
+ else if (options[CLIENT_THEME] !== OptionValues[CLIENT_THEME] && !options[CLIENT_THEME_VARIANT]) {
76
+ options[CLIENT_THEME_VARIANT] = 'primary';
77
+ }
78
+ if (clientFramework === 'vue') {
79
+ options.clientBundler = options.microfrontend || options.applicationType === 'microservice' ? 'webpack' : 'vite';
80
+ }
81
+ else if (clientFramework === 'react') {
82
+ options.clientBundler = 'webpack';
83
+ }
84
+ else if (clientFramework === 'angular') {
85
+ options.clientBundler = 'webpack';
77
86
  }
78
87
  return options;
79
88
  }
@@ -101,9 +110,11 @@ export function getConfigForPackageName(options = {}) {
101
110
  return options;
102
111
  }
103
112
  export function getConfigForCacheProvider(options = {}) {
104
- if (options[REACTIVE]) {
113
+ if (options[REACTIVE] || options[CACHE_PROVIDER] === undefined) {
105
114
  options[CACHE_PROVIDER] = NO_CACHE_PROVIDER;
106
115
  }
116
+ options[ENABLE_HIBERNATE_CACHE] ??=
117
+ options[DATABASE_TYPE] === SQL && !options[REACTIVE] && ![NO_CACHE_PROVIDER, MEMCACHED].includes(options[CACHE_PROVIDER]);
107
118
  return options;
108
119
  }
109
120
  export function getConfigForReactive(options = {}) {
@@ -136,17 +147,6 @@ export function getConfigForDatabaseType(options = {}) {
136
147
  options[DEV_DATABASE_TYPE] = options[PROD_DATABASE_TYPE];
137
148
  }
138
149
  }
139
- else if ([MONGODB, COUCHBASE, CASSANDRA, NEO4J, NO_DATABASE_TYPE].includes(options[DATABASE_TYPE])) {
140
- if (NO_DATABASE_TYPE !== options[DATABASE_TYPE]) {
141
- options[ENABLE_HIBERNATE_CACHE] = false;
142
- }
143
- }
144
- if (options[REACTIVE]) {
145
- options[ENABLE_HIBERNATE_CACHE] = false;
146
- }
147
- if (options[ENABLE_HIBERNATE_CACHE] === undefined) {
148
- options[ENABLE_HIBERNATE_CACHE] = true;
149
- }
150
150
  return options;
151
151
  }
152
152
  export function getServerConfigForMonolithApplication(customOptions = {}) {
@@ -168,8 +168,8 @@ export function getConfigForMonolithApplication(customOptions = {}) {
168
168
  let options = getServerConfigForMonolithApplication(customOptions);
169
169
  options = getConfigForClientApplication(options);
170
170
  options = getConfigForPackageName(options);
171
- options = getConfigForCacheProvider(options);
172
171
  options = getConfigForDatabaseType(options);
172
+ options = getConfigForCacheProvider(options);
173
173
  options = getConfigForReactive(options);
174
174
  options = getConfigForTranslation(options);
175
175
  return getConfigForAuthenticationType(options);
@@ -195,8 +195,8 @@ export function getConfigForGatewayApplication(customOptions = {}) {
195
195
  let options = getServerConfigForGatewayApplication(customOptions);
196
196
  options = getConfigForClientApplication(options);
197
197
  options = getConfigForPackageName(options);
198
- options = getConfigForCacheProvider(options);
199
198
  options = getConfigForDatabaseType(options);
199
+ options = getConfigForCacheProvider(options);
200
200
  options = getConfigForReactive(options);
201
201
  options = getConfigForTranslation(options);
202
202
  return getConfigForAuthenticationType(options);
@@ -222,8 +222,8 @@ export function getConfigForMicroserviceApplication(customOptions = {}) {
222
222
  let options = getServerConfigForMicroserviceApplication(customOptions);
223
223
  options = getConfigForClientApplication(options);
224
224
  options = getConfigForPackageName(options);
225
- options = getConfigForCacheProvider(options);
226
225
  options = getConfigForDatabaseType(options);
226
+ options = getConfigForCacheProvider(options);
227
227
  options = getConfigForReactive(options);
228
228
  options = getConfigForTranslation(options);
229
229
  return getConfigForAuthenticationType(options);
@@ -1,3 +1,4 @@
1
+ export declare const getGeneratorRelativeFolder: (generatorName: string) => string;
1
2
  export declare const getGeneratorFolder: (generatorName: string) => string;
2
3
  declare const getGenerator: (generatorName: string) => string;
3
4
  export default getGenerator;
@@ -1,10 +1,14 @@
1
- import { dirname, resolve } from 'path';
1
+ import { dirname, join, resolve } from 'path';
2
2
  import { existsSync } from 'fs';
3
3
  import { fileURLToPath } from 'url';
4
4
  const __filename = fileURLToPath(import.meta.url);
5
5
  const __dirname = dirname(__filename);
6
+ export const getGeneratorRelativeFolder = (generatorName) => {
7
+ generatorName = generatorName.replace('jhipster:', '');
8
+ return join('generators', generatorName.split(':').join('/generators/'));
9
+ };
6
10
  export const getGeneratorFolder = (generatorName) => {
7
- return resolve(__dirname, '../../generators', generatorName.split(':').join('/generators/'));
11
+ return resolve(__dirname, '../..', getGeneratorRelativeFolder(generatorName));
8
12
  };
9
13
  const getGenerator = (generatorName) => {
10
14
  const generatorFolder = getGeneratorFolder(generatorName);
@@ -0,0 +1,6 @@
1
+ import type { GitHubMatrixGroup } from './github-matrix.js';
2
+ export declare const getGithubSamplesGroups: (samplesGroupFolder: string) => Promise<string[]>;
3
+ export declare const getGithubSamplesGroup: (samplesGroupFolder: string, group: string) => Promise<{
4
+ samples: GitHubMatrixGroup;
5
+ warnings: string[];
6
+ }>;
@@ -0,0 +1,56 @@
1
+ import { readFile, readdir } from 'node:fs/promises';
2
+ import { extname, join } from 'node:path';
3
+ import { getUnknownGitHubMatrixGroupProperties } from './github-matrix.js';
4
+ export const getGithubSamplesGroups = async (samplesGroupFolder) => {
5
+ const samplesFolderContent = await readdir(samplesGroupFolder);
6
+ return samplesFolderContent.filter(sample => ['.json', '.js', '.ts', ''].includes(extname(sample)));
7
+ };
8
+ export const getGithubSamplesGroup = async (samplesGroupFolder, group) => {
9
+ const warnings = [];
10
+ let samples = {};
11
+ const samplesFolderContent = await getGithubSamplesGroups(samplesGroupFolder);
12
+ if (samplesFolderContent.includes(`${group}.js`) || samplesFolderContent.includes(`${group}.ts`)) {
13
+ const jsGroup = await import(join(samplesGroupFolder, `${group}.js`));
14
+ samples = Object.fromEntries(Object.entries(jsGroup.default).map(([sample, value]) => [sample, { ...value, 'samples-group': group }]));
15
+ }
16
+ else if (samplesFolderContent.includes(`${group}.json`)) {
17
+ const jsonFile = await readFile(join(samplesGroupFolder, `${group}.json`));
18
+ samples = Object.fromEntries(Object.entries(JSON.parse(jsonFile.toString())).map(([sample, value]) => [
19
+ sample,
20
+ { ...value, 'samples-group': group },
21
+ ]));
22
+ }
23
+ else if (samplesFolderContent.includes(group)) {
24
+ const samplesFolderContent = await readdir(join(samplesGroupFolder, group));
25
+ if (samplesFolderContent.length > 0) {
26
+ // Support jdl files and folder (with .yo-rc.json files)
27
+ samples = Object.fromEntries(samplesFolderContent
28
+ .filter(sample => ['', '.jdl'].includes(extname(sample)))
29
+ .map(sample => [
30
+ sample.replace('.jdl', ''),
31
+ {
32
+ 'samples-group': group,
33
+ 'sample-type': extname(sample) === '.jdl' ? 'jdl' : 'yo-rc',
34
+ },
35
+ ]));
36
+ if (samplesFolderContent.includes('samples.json')) {
37
+ const jsonFile = await readFile(join(samplesGroupFolder, group, 'samples.json'));
38
+ const jsonSamples = JSON.parse(jsonFile.toString());
39
+ for (const [sample, value] of Object.entries(jsonSamples)) {
40
+ if (!samples[sample]) {
41
+ throw new Error(`Sample ${sample} not found in ${group}`);
42
+ }
43
+ samples[sample] = { ...samples[sample], ...value };
44
+ }
45
+ }
46
+ }
47
+ }
48
+ if (!samples) {
49
+ throw new Error();
50
+ }
51
+ const unknownProperties = getUnknownGitHubMatrixGroupProperties(samples);
52
+ if (unknownProperties.length) {
53
+ warnings.push(`Unknown properties in ${group}: ${unknownProperties.join(', ')}`);
54
+ }
55
+ return { samples, warnings };
56
+ };
@@ -0,0 +1,38 @@
1
+ export type GitHubMatrix = {
2
+ os: string;
3
+ 'node-version': string;
4
+ 'java-version': string;
5
+ 'default-environment': string;
6
+ 'job-name': string;
7
+ sample: string;
8
+ 'samples-group'?: string;
9
+ 'sample-type'?: string;
10
+ args?: string;
11
+ 'jwt-secret-key'?: string;
12
+ jdl?: string;
13
+ };
14
+ export type GitHubMatrixGroup = Record<string, Partial<Omit<GitHubMatrix, 'job-name'>> & {
15
+ disabled?: boolean;
16
+ }>;
17
+ export type GitHubMatrixOutput = {
18
+ include: GitHubMatrix[];
19
+ };
20
+ export declare const getUnknownGitHubMatrixProperties: (matrix: Partial<GitHubMatrix>) => string[];
21
+ export declare const getUnknownGitHubMatrixGroupProperties: (matrixRecord: GitHubMatrixGroup) => string[];
22
+ export declare const defaultGithubEnvironment: {
23
+ os: string;
24
+ 'node-version': string;
25
+ 'java-version': string;
26
+ 'npm-version': any;
27
+ 'default-environment': string;
28
+ 'jwt-secret-key': string;
29
+ };
30
+ type RandomEnvironmentOptions = {
31
+ useVersionPlaceholders?: boolean;
32
+ javaVersions?: string[];
33
+ nodeVersions?: string[];
34
+ };
35
+ export declare const convertToGitHubMatrix: (matrix: GitHubMatrixGroup, options?: {
36
+ randomEnvironment?: boolean;
37
+ } & RandomEnvironmentOptions) => GitHubMatrixOutput;
38
+ export {};
@@ -0,0 +1,72 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { readFileSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ import { RECOMMENDED_JAVA_VERSION, RECOMMENDED_NODE_VERSION } from '../../generators/index.js';
5
+ import { getSourceRoot } from '../index.js';
6
+ import { JAVA_COMPATIBLE_VERSIONS, JAVA_VERSION, NODE_VERSION } from '../../generators/generator-constants.js';
7
+ const knwonGitHubMatrixProperties = [
8
+ 'os',
9
+ 'node-version',
10
+ 'java-version',
11
+ 'default-environment',
12
+ 'job-name',
13
+ 'sample',
14
+ 'samples-group',
15
+ 'sample-type',
16
+ 'args',
17
+ 'jwt-secret',
18
+ 'jdl',
19
+ ];
20
+ export const getUnknownGitHubMatrixProperties = (matrix) => {
21
+ return Object.keys(matrix).filter(key => !knwonGitHubMatrixProperties.includes(key));
22
+ };
23
+ export const getUnknownGitHubMatrixGroupProperties = (matrixRecord) => {
24
+ let unknownProperties = [];
25
+ for (const matrix of Object.values(matrixRecord)) {
26
+ unknownProperties = [...new Set([...unknownProperties, ...getUnknownGitHubMatrixProperties(matrix)])];
27
+ }
28
+ return unknownProperties;
29
+ };
30
+ const NPM_VERSION = JSON.parse(readFileSync(join(getSourceRoot(), 'generators/common/resources/package.json'), 'utf-8')).devDependencies
31
+ .npm;
32
+ export const defaultGithubEnvironment = {
33
+ os: 'ubuntu-latest',
34
+ 'node-version': RECOMMENDED_NODE_VERSION,
35
+ 'java-version': RECOMMENDED_JAVA_VERSION,
36
+ 'npm-version': NPM_VERSION,
37
+ 'default-environment': 'prod',
38
+ 'jwt-secret-key': 'ZjY4MTM4YjI5YzMwZjhjYjI2OTNkNTRjMWQ5Y2Q0Y2YwOWNmZTE2NzRmYzU3NTMwM2NjOTE3MTllOTM3MWRkMzcyYTljMjVmNmQ0Y2MxOTUzODc0MDhhMTlkMDIxMzI2YzQzZDM2ZDE3MmQ3NjVkODk3OTVmYzljYTQyZDNmMTQ=',
39
+ };
40
+ const randomReproducibleValue = (seed, choices, options) => {
41
+ const { useVersionPlaceholders } = options ?? {};
42
+ const index = createHash('shake256', { outputLength: 1 }).update(seed, 'utf8').digest('binary').charCodeAt(0) % choices.length;
43
+ if (useVersionPlaceholders) {
44
+ return `[${index}]`;
45
+ }
46
+ return choices[index];
47
+ };
48
+ const randomEnvironmentMatrix = (key, options) => {
49
+ const { useVersionPlaceholders, javaVersions = [JAVA_VERSION, ...JAVA_COMPATIBLE_VERSIONS], nodeVersions = [NODE_VERSION, '18', '20'], } = options;
50
+ const javaVersion = randomReproducibleValue(`java-${key}`, javaVersions, { useVersionPlaceholders });
51
+ const nodeVersion = randomReproducibleValue(`node-${key}`, nodeVersions, { useVersionPlaceholders });
52
+ return {
53
+ 'job-name': `${key} (n${nodeVersion}/j${javaVersion})`,
54
+ 'java-version': javaVersion,
55
+ 'node-version': nodeVersion,
56
+ };
57
+ };
58
+ export const convertToGitHubMatrix = (matrix, options) => {
59
+ const { randomEnvironment, useVersionPlaceholders, ...randomEnvironmentOptions } = options ?? {};
60
+ return {
61
+ include: Object.entries(matrix)
62
+ .filter(([_key, value]) => !value.disabled)
63
+ .map(([key, value]) => ({
64
+ 'job-name': key,
65
+ sample: key,
66
+ ...defaultGithubEnvironment,
67
+ ...(useVersionPlaceholders ? { 'java-version': 'JAVA-VERSION', 'node-version': 'NODE-VERSION', 'npm-version': 'NPM-VERSION' } : {}),
68
+ ...value,
69
+ ...(randomEnvironment ? randomEnvironmentMatrix(key, { useVersionPlaceholders, ...randomEnvironmentOptions }) : {}),
70
+ })),
71
+ };
72
+ };
@@ -3,6 +3,7 @@ export declare const parseIssue: (issue: string) => undefined | {
3
3
  repository: string;
4
4
  issue: string;
5
5
  };
6
+ export declare const getGithubOutputFile: () => string | undefined;
6
7
  export declare const setGithubTaskOutput: (name: string, value: string | boolean | number) => void;
7
8
  export declare const getGithubIssue: ({ owner, repository, issue }: {
8
9
  owner: string;