generator-jhipster 8.0.0-beta.1 → 8.0.0-beta.2

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 (229) hide show
  1. package/README.md +0 -5
  2. package/dist/generators/angular/resources/package.json +14 -14
  3. package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.ts.ejs +1 -1
  4. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/user-management.route.ts.ejs +9 -14
  5. package/dist/generators/angular/templates/src/main/webapp/app/app-routing.module.ts.ejs +1 -1
  6. package/dist/generators/angular/templates/src/main/webapp/app/core/auth/user-route-access.service.ts.ejs +26 -33
  7. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +1 -1
  8. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.ts.ejs +1 -1
  9. package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.model.ts.ejs +1 -1
  10. package/dist/generators/app/generator.mjs +0 -1
  11. package/dist/generators/app/prompts.mjs +1 -1
  12. package/dist/generators/base/generator-base-blueprint.mjs +5 -3
  13. package/dist/generators/base/generator-base-todo.mjs +5 -12
  14. package/dist/generators/base/support/faker.mjs +6 -8
  15. package/dist/generators/base-application/support/prepare-field.mjs +9 -9
  16. package/dist/generators/base-core/generator-base.mjs +565 -0
  17. package/dist/generators/base-core/index.mjs +1 -1
  18. package/dist/generators/base-docker/generator.mjs +0 -7
  19. package/dist/generators/bootstrap/generator.mjs +10 -26
  20. package/dist/generators/ci-cd/templates/jenkins/idea.gdsl.ejs +1 -1
  21. package/dist/generators/client/needle-api/needle-client-webpack.mjs +1 -1
  22. package/dist/generators/client/resources/package.json +6 -6
  23. package/dist/generators/client/templates/src/main/webapp/index.html.ejs +7 -8
  24. package/dist/generators/client/templates/src/main/webapp/swagger-ui/index.html.ejs +2 -1
  25. package/dist/generators/common/resources/package.json +3 -3
  26. package/dist/generators/docker/generator.mjs +1 -1
  27. package/dist/generators/docker/templates/src/main/docker/app.yml.ejs +1 -2
  28. package/dist/generators/docker/templates/src/main/docker/mariadb.yml.ejs +5 -5
  29. package/dist/generators/docker-compose/generator.mjs +1 -1
  30. package/dist/generators/entities/generator.mjs +0 -1
  31. package/dist/generators/generate-blueprint/files.mjs +1 -0
  32. package/dist/generators/generate-blueprint/generator.mjs +3 -1
  33. package/dist/generators/generate-blueprint/templates/.github/workflows/generator.yml.ejs +1 -1
  34. package/dist/generators/generate-blueprint/templates/tsconfig.json.ejs +31 -0
  35. package/dist/generators/generator-constants.mjs +11 -14
  36. package/dist/generators/gradle/constants.mjs +1 -1
  37. package/dist/generators/heroku/generator.mjs +42 -2
  38. package/dist/generators/init/constants.mjs +0 -1
  39. package/dist/generators/init/generator.mjs +3 -2
  40. package/dist/generators/init/templates/package.json.ejs +1 -1
  41. package/dist/generators/jdl/generator.mjs +22 -15
  42. package/dist/generators/kubernetes/kubernetes-base.mjs +2 -2
  43. package/dist/generators/kubernetes/templates/deployment.yml.ejs +1 -3
  44. package/dist/generators/kubernetes-helm/templates/app/Chart.yml.ejs +1 -1
  45. package/dist/generators/kubernetes-helm/templates/app/requirements.yml.ejs +1 -1
  46. package/dist/generators/kubernetes-knative/templates/service.yml.ejs +1 -3
  47. package/dist/generators/languages/templates/entity/i18n/entity_ja.json.ejs +11 -11
  48. package/dist/generators/languages/templates/src/main/resources/i18n/messages_ja.properties.ejs +7 -7
  49. package/dist/generators/languages/templates/src/main/webapp/i18n/ja/error.json +5 -5
  50. package/dist/generators/languages/templates/src/main/webapp/i18n/ja/gateway.json +6 -6
  51. package/dist/generators/languages/templates/src/main/webapp/i18n/ja/global.json.ejs +37 -37
  52. package/dist/generators/languages/templates/src/main/webapp/i18n/ja/health.json.ejs +6 -6
  53. package/dist/generators/languages/templates/src/main/webapp/i18n/ja/home.json +2 -2
  54. package/dist/generators/languages/templates/src/main/webapp/i18n/ja/login.json +2 -2
  55. package/dist/generators/languages/templates/src/main/webapp/i18n/ja/metrics.json +54 -46
  56. package/dist/generators/languages/templates/src/main/webapp/i18n/ja/register.json +1 -1
  57. package/dist/generators/languages/templates/src/main/webapp/i18n/ja/reset.json.ejs +10 -10
  58. package/dist/generators/languages/templates/src/main/webapp/i18n/ja/user-management.json +21 -21
  59. package/dist/generators/liquibase/generator.mjs +6 -0
  60. package/dist/generators/liquibase/support/maven-plugin.mjs +2 -1
  61. package/dist/generators/liquibase/templates/gradle/liquibase.gradle.ejs +14 -4
  62. package/dist/generators/liquibase-changelogs/templates/src/main/resources/config/liquibase/fake-data/table_entity.csv.ejs +1 -1
  63. package/dist/generators/openshift/templates/deployment.yml.ejs +1 -3
  64. package/dist/generators/page/generator.mjs +0 -1
  65. package/dist/generators/react/resources/package.json +26 -26
  66. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder/_entityFile.tsx.ejs +1 -0
  67. package/dist/generators/react/templates/src/main/webapp/app/modules/administration/user-management/user-management.tsx.ejs +1 -1
  68. package/dist/generators/server/command.mjs +1 -1
  69. package/dist/generators/server/generator.mjs +1 -7
  70. package/dist/generators/server/resources/Dockerfile +11 -11
  71. package/dist/generators/server/resources/gradle/libs.versions.toml +5 -3
  72. package/dist/generators/server/resources/pom.xml +35 -17
  73. package/dist/generators/server/support/spring-factories.mjs +8 -13
  74. package/dist/generators/server/templates/.devcontainer/devcontainer.json.ejs +24 -19
  75. package/dist/generators/server/templates/build.gradle.ejs +10 -1
  76. package/dist/generators/server/templates/entity/src/test/java/package/web/rest/_EntityClass_ResourceIT.java.ejs +2 -2
  77. package/dist/generators/server/templates/gradle/profile_dev.gradle.ejs +16 -4
  78. package/dist/generators/server/templates/gradle/profile_prod.gradle.ejs +16 -4
  79. package/dist/generators/server/templates/gradle.properties.ejs +1 -0
  80. package/dist/generators/server/templates/pom.xml.ejs +39 -9
  81. package/dist/generators/server/templates/settings.gradle.ejs +1 -0
  82. package/dist/generators/server/templates/src/main/java/package/config/JacksonConfiguration.java.ejs +3 -3
  83. package/dist/generators/server/templates/src/main/java/package/config/SecurityConfiguration_imperative.java.ejs +11 -4
  84. package/dist/generators/server/templates/src/main/java/package/config/SecurityConfiguration_reactive.java.ejs +5 -3
  85. package/dist/generators/server/templates/src/main/java/package/config/WebConfigurer.java.ejs +3 -3
  86. package/dist/generators/server/templates/src/main/java/package/repository/UserRepository.java.ejs +1 -1
  87. package/dist/generators/server/templates/src/main/java/package/security/DomainUserDetailsService.java.ejs +2 -4
  88. package/dist/generators/server/templates/src/main/java/package/security/PersistentTokenRememberMeServices.java.ejs +1 -1
  89. package/dist/generators/server/templates/src/main/java/package/service/UserService.java.ejs +1 -1
  90. package/dist/generators/server/templates/src/main/java/package/web/rest/AccountResource.java.ejs +3 -3
  91. package/dist/generators/server/templates/src/main/java/package/web/rest/UserResource.java.ejs +2 -2
  92. package/dist/generators/server/templates/src/main/java/package/web/rest/errors/BadRequestAlertException.java.ejs +0 -9
  93. package/dist/generators/server/templates/src/main/java/package/web/rest/errors/ExceptionTranslator.java.ejs +2 -2
  94. package/dist/generators/server/templates/src/main/resources/config/application-dev.yml.ejs +1 -2
  95. package/dist/generators/server/templates/src/main/resources/config/application-prod.yml.ejs +1 -2
  96. package/dist/generators/server/templates/src/main/resources/config/application.yml.ejs +1 -1
  97. package/dist/generators/server/templates/src/main/resources/logback-spring.xml.ejs +4 -0
  98. package/dist/generators/server/templates/src/test/java/package/security/oauth2/AuthorizationHeaderUtilTest.java.ejs +70 -37
  99. package/dist/generators/server/templates/src/test/java/package/web/filter/SpaWebFilterIT_imperative.java.ejs +1 -1
  100. package/dist/generators/server/templates/src/test/java/package/web/filter/SpaWebFilterIT_reactive.java.ejs +1 -1
  101. package/dist/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT.java.ejs +7 -7
  102. package/dist/generators/server/templates/src/test/java/package/web/rest/TestUtil.java.ejs +5 -5
  103. package/dist/generators/server/templates/src/test/java/package/web/rest/UserResourceIT.java.ejs +6 -6
  104. package/dist/generators/spring-cache/internal/dependencies.mjs +3 -0
  105. package/dist/generators/spring-controller/generator.mjs +0 -1
  106. package/dist/generators/spring-data-relational/internal/dependencies.mjs +6 -6
  107. package/dist/generators/spring-data-relational/support/database-data.mjs +0 -4
  108. package/dist/generators/spring-data-relational/templates/src/test/java/package/config/SqlTestContainersSpringContextCustomizerFactory.java.ejs +1 -1
  109. package/dist/generators/spring-service/generator.mjs +0 -1
  110. package/dist/generators/upgrade/generator.mjs +25 -55
  111. package/dist/generators/vue/resources/package.json +23 -23
  112. package/dist/types/generators/angular/support/index.d.mts +23 -0
  113. package/dist/types/generators/angular/support/needles.d.mts +35 -0
  114. package/dist/types/generators/angular/support/path-utils.d.mts +1 -0
  115. package/dist/types/generators/angular/support/translate-angular.d.mts +11 -0
  116. package/dist/types/generators/angular/support/update-languages.d.mts +21 -0
  117. package/dist/types/generators/angular/types-export.d.ts +1 -0
  118. package/dist/types/generators/app/support/check-node.d.mts +10 -0
  119. package/dist/types/generators/app/support/index.d.mts +19 -0
  120. package/dist/types/generators/app/types-export.d.ts +1 -0
  121. package/dist/types/generators/aws/types-export.d.ts +1 -0
  122. package/dist/types/generators/azure-app-service/types-export.d.ts +1 -0
  123. package/dist/types/generators/azure-spring-cloud/types-export.d.ts +1 -0
  124. package/dist/types/generators/base/generator-base-blueprint.d.mts +1 -1
  125. package/dist/types/generators/base/generator-base-todo.d.mts +9 -15
  126. package/dist/types/generators/base/support/needles.d.mts +1 -1
  127. package/dist/types/generators/base/types-export.d.ts +4 -0
  128. package/dist/types/generators/base-application/generator.d.mts +1 -22
  129. package/dist/types/generators/base-application/types-export.d.ts +4 -0
  130. package/dist/types/generators/base-core/generator-base.d.mts +166 -0
  131. package/dist/types/generators/base-core/index.d.mts +1 -1
  132. package/dist/types/generators/base-core/types-export.d.ts +1 -0
  133. package/dist/types/generators/bootstrap/support/auto-crlf-transform.d.mts +7 -0
  134. package/dist/types/generators/bootstrap/support/force-write-config-files-transform.d.mts +3 -0
  135. package/dist/types/generators/bootstrap/support/index.d.mts +23 -0
  136. package/dist/types/generators/bootstrap/support/multi-step-transform/index.d.mts +24 -0
  137. package/dist/types/generators/bootstrap/support/multi-step-transform/template-data.d.mts +18 -0
  138. package/dist/types/generators/bootstrap/support/multi-step-transform/template-file-fs.d.mts +11 -0
  139. package/dist/types/generators/bootstrap/support/multi-step-transform/template-file.d.mts +18 -0
  140. package/dist/types/generators/bootstrap/support/prettier-support.d.mts +2 -0
  141. package/dist/types/generators/bootstrap/support/sort-config-files-transform.d.mts +2 -0
  142. package/dist/types/generators/bootstrap/types-export.d.ts +1 -0
  143. package/dist/types/generators/bootstrap-application/types-export.d.ts +1 -0
  144. package/dist/types/generators/bootstrap-application-base/types-export.d.ts +1 -0
  145. package/dist/types/generators/bootstrap-application-client/types-export.d.ts +1 -0
  146. package/dist/types/generators/bootstrap-application-server/types-export.d.ts +1 -0
  147. package/dist/types/generators/ci-cd/types-export.d.ts +1 -0
  148. package/dist/types/generators/client/needle-api/needle-client-webpack.d.mts +1 -1
  149. package/dist/types/generators/client/types-export.d.ts +1 -0
  150. package/dist/types/generators/cloudfoundry/types-export.d.ts +1 -0
  151. package/dist/types/generators/common/types-export.d.ts +1 -0
  152. package/dist/types/generators/cucumber/types-export.d.ts +1 -0
  153. package/dist/types/generators/cypress/types-export.d.ts +1 -0
  154. package/dist/types/generators/docker/types-export.d.ts +1 -0
  155. package/dist/types/generators/docker-compose/types-export.d.ts +1 -0
  156. package/dist/types/generators/entities/types-export.d.ts +1 -0
  157. package/dist/types/generators/entity/support/asserts.d.mts +18 -0
  158. package/dist/types/generators/entity/support/index.d.mts +19 -0
  159. package/dist/types/generators/entity/types-export.d.ts +1 -0
  160. package/dist/types/generators/export-jdl/types-export.d.ts +1 -0
  161. package/dist/types/generators/gae/types-export.d.ts +1 -0
  162. package/dist/types/generators/gatling/types-export.d.ts +1 -0
  163. package/dist/types/generators/generate-blueprint/types-export.d.ts +1 -0
  164. package/dist/types/generators/generator-constants.d.mts +6 -6
  165. package/dist/types/generators/git/types-export.d.ts +1 -0
  166. package/dist/types/generators/gradle/types-export.d.ts +1 -0
  167. package/dist/types/generators/heroku/types-export.d.ts +1 -0
  168. package/dist/types/generators/info/types-export.d.ts +1 -0
  169. package/dist/types/generators/init/types-export.d.ts +1 -0
  170. package/dist/types/generators/java/support/add-java-annotation.d.mts +22 -0
  171. package/dist/types/generators/java/support/checks/check-java.d.mts +9 -0
  172. package/dist/types/generators/java/support/checks/index.d.mts +1 -0
  173. package/dist/types/generators/java/support/generated-annotation-transform.d.mts +3 -0
  174. package/dist/types/generators/java/support/index.d.mts +23 -0
  175. package/dist/types/generators/java/support/package-info-transform.d.mts +11 -0
  176. package/dist/types/generators/java/types-export.d.ts +1 -0
  177. package/dist/types/generators/jdl/types-export.d.ts +1 -0
  178. package/dist/types/generators/kubernetes/types-export.d.ts +1 -0
  179. package/dist/types/generators/kubernetes-helm/types-export.d.ts +1 -0
  180. package/dist/types/generators/kubernetes-knative/types-export.d.ts +1 -0
  181. package/dist/types/generators/languages/types-export.d.ts +1 -0
  182. package/dist/types/generators/liquibase/support/index.d.mts +21 -0
  183. package/dist/types/generators/liquibase/support/maven-plugin.d.mts +13 -0
  184. package/dist/types/generators/liquibase/support/post-prepare-entity.d.mts +2 -0
  185. package/dist/types/generators/liquibase/support/prepare-field.d.mts +1 -0
  186. package/dist/types/generators/liquibase/support/relationship.d.mts +15 -0
  187. package/dist/types/generators/liquibase/types-export.d.ts +1 -0
  188. package/dist/types/generators/liquibase/types.d.mts +8 -0
  189. package/dist/types/generators/liquibase-changelogs/support/formatting.d.mts +9 -0
  190. package/dist/types/generators/liquibase-changelogs/support/index.d.mts +19 -0
  191. package/dist/types/generators/liquibase-changelogs/types-export.d.ts +1 -0
  192. package/dist/types/generators/maven/internal/xml-store.d.mts +40 -0
  193. package/dist/types/generators/maven/support/index.d.mts +20 -0
  194. package/dist/types/generators/maven/support/pom-store.d.mts +47 -0
  195. package/dist/types/generators/maven/types-export.d.ts +1 -0
  196. package/dist/types/generators/needle-base.d.mts +1 -1
  197. package/dist/types/generators/openapi-client/types-export.d.ts +1 -0
  198. package/dist/types/generators/openshift/types-export.d.ts +1 -0
  199. package/dist/types/generators/page/support/index.d.mts +19 -0
  200. package/dist/types/generators/page/support/needles.d.mts +22 -0
  201. package/dist/types/generators/page/types-export.d.ts +1 -0
  202. package/dist/types/generators/project-name/types-export.d.ts +1 -0
  203. package/dist/types/generators/react/support/index.d.mts +22 -0
  204. package/dist/types/generators/react/support/needles.d.mts +1 -0
  205. package/dist/types/generators/react/support/translate-react.d.mts +5 -0
  206. package/dist/types/generators/react/support/update-languages.d.mts +21 -0
  207. package/dist/types/generators/react/types-export.d.ts +1 -0
  208. package/dist/types/generators/server/types-export.d.ts +1 -0
  209. package/dist/types/generators/server/types.d.mts +2 -0
  210. package/dist/types/generators/spring-cache/types-export.d.ts +1 -0
  211. package/dist/types/generators/spring-cloud-stream/types-export.d.ts +1 -0
  212. package/dist/types/generators/spring-controller/types-export.d.ts +1 -0
  213. package/dist/types/generators/spring-data-cassandra/types-export.d.ts +1 -0
  214. package/dist/types/generators/spring-data-couchbase/types-export.d.ts +1 -0
  215. package/dist/types/generators/spring-data-elasticsearch/types-export.d.ts +1 -0
  216. package/dist/types/generators/spring-data-mongodb/types-export.d.ts +1 -0
  217. package/dist/types/generators/spring-data-neo4j/types-export.d.ts +1 -0
  218. package/dist/types/generators/spring-data-relational/types-export.d.ts +1 -0
  219. package/dist/types/generators/spring-service/types-export.d.ts +1 -0
  220. package/dist/types/generators/spring-websocket/types-export.d.ts +1 -0
  221. package/dist/types/generators/upgrade/types-export.d.ts +1 -0
  222. package/dist/types/generators/vue/support/convert-translation.d.mts +11 -0
  223. package/dist/types/generators/vue/support/index.d.mts +23 -0
  224. package/dist/types/generators/vue/support/needles.d.mts +1 -0
  225. package/dist/types/generators/vue/support/translate-vue.d.mts +22 -0
  226. package/dist/types/generators/vue/support/update-languages.d.mts +21 -0
  227. package/dist/types/generators/vue/types-export.d.ts +1 -0
  228. package/dist/types/generators/workspaces/types-export.d.ts +1 -0
  229. package/package.json +33 -26
@@ -0,0 +1,565 @@
1
+ /**
2
+ * Copyright 2013-2023 the original author or authors from the JHipster project.
3
+ *
4
+ * This file is part of the JHipster project, see https://www.jhipster.tech/
5
+ * for more information.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * https://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ */
19
+ import { basename, join as joinPath, dirname, relative, isAbsolute, join } from 'path';
20
+ import { requireNamespace } from '@yeoman/namespace';
21
+ import { createHash } from 'crypto';
22
+ import { fileURLToPath } from 'url';
23
+ import chalk from 'chalk';
24
+ import { parse as parseYaml, stringify as stringifyYaml } from 'yaml';
25
+ import _ from 'lodash';
26
+ import { simpleGit } from 'simple-git';
27
+ import { statSync, rmSync, existsSync } from 'fs';
28
+ import { lt as semverLessThan } from 'semver';
29
+ import YeomanGenerator from 'yeoman-generator';
30
+ import semver from 'semver';
31
+ import latestVersion from 'latest-version';
32
+ import assert from 'assert';
33
+ import SharedData from '../base/shared-data.mjs';
34
+ import { CUSTOM_PRIORITIES, PRIORITY_NAMES, PRIORITY_PREFIX } from '../base/priorities.mjs';
35
+ import { joinCallbacks } from '../base/support/index.mjs';
36
+ import { packageJson } from '../../lib/index.mjs';
37
+ import { GENERATOR_BOOTSTRAP } from '../generator-list.mjs';
38
+ import NeedleApi from '../needle-api.mjs';
39
+ import command from '../base/command.mjs';
40
+ import { GENERATOR_JHIPSTER } from '../generator-constants.mjs';
41
+ const { merge } = _;
42
+ const { INITIALIZING, PROMPTING, CONFIGURING, COMPOSING, LOADING, PREPARING, DEFAULT, WRITING, POST_WRITING, INSTALL, POST_INSTALL, END } = PRIORITY_NAMES;
43
+ const __filename = fileURLToPath(import.meta.url);
44
+ const __dirname = dirname(__filename);
45
+ const asPriority = (priorityName) => `${PRIORITY_PREFIX}${priorityName}`;
46
+ /**
47
+ * This is the base class for a generator for every generator.
48
+ */
49
+ export default class CoreGenerator extends YeomanGenerator {
50
+ static asPriority = asPriority;
51
+ static INITIALIZING = asPriority(INITIALIZING);
52
+ static PROMPTING = asPriority(PROMPTING);
53
+ static CONFIGURING = asPriority(CONFIGURING);
54
+ static COMPOSING = asPriority(COMPOSING);
55
+ static LOADING = asPriority(LOADING);
56
+ static PREPARING = asPriority(PREPARING);
57
+ static DEFAULT = asPriority(DEFAULT);
58
+ static WRITING = asPriority(WRITING);
59
+ static POST_WRITING = asPriority(POST_WRITING);
60
+ static INSTALL = asPriority(INSTALL);
61
+ static POST_INSTALL = asPriority(POST_INSTALL);
62
+ static END = asPriority(END);
63
+ useVersionPlaceholders;
64
+ skipChecks;
65
+ experimental;
66
+ debugEnabled;
67
+ jhipster7Migration;
68
+ sharedData;
69
+ logger;
70
+ jhipsterConfig;
71
+ /**
72
+ * @deprecated
73
+ */
74
+ configOptions;
75
+ jhipsterTemplatesFolders;
76
+ blueprintStorage;
77
+ _jhipsterGenerator;
78
+ _needleApi;
79
+ constructor(args, options, features) {
80
+ super(args, options, {
81
+ skipParseOptions: true,
82
+ tasksMatchingPriority: true,
83
+ taskPrefix: PRIORITY_PREFIX,
84
+ unique: 'namespace',
85
+ ...features,
86
+ });
87
+ this.option('skip-prompts', {
88
+ description: 'Skip prompts',
89
+ type: Boolean,
90
+ });
91
+ this.option('skip-prettier', {
92
+ description: 'Skip prettier',
93
+ type: Boolean,
94
+ hide: true,
95
+ });
96
+ this.option('ignore-needles-error', {
97
+ description: 'Ignore needles failures',
98
+ type: Boolean,
99
+ hide: true,
100
+ });
101
+ this.parseJHipsterOptions(command.options);
102
+ let jhipsterOldVersion = null;
103
+ if (!this.options.help) {
104
+ // JHipster runtime config that should not be stored to .yo-rc.json.
105
+ this.configOptions = this.options.configOptions || {};
106
+ /* Force config to use 'generator-jhipster' namespace. */
107
+ this._config = this._getStorage('generator-jhipster');
108
+ /* JHipster config using proxy mode used as a plain object instead of using get/set. */
109
+ this.jhipsterConfig = this.config.createProxy();
110
+ jhipsterOldVersion = this.jhipsterConfig.jhipsterVersion ?? null;
111
+ // Don't write jhipsterVersion to .yo-rc.json when reproducible
112
+ if (!this.options.reproducible && !this.jhipsterConfig.jhipsterVersion) {
113
+ this.jhipsterConfig.jhipsterVersion = packageJson.version;
114
+ }
115
+ }
116
+ this.sharedData = this.createSharedData({ jhipsterOldVersion, help: this.options.help });
117
+ this.logger = this.log;
118
+ if (this.options.help) {
119
+ return;
120
+ }
121
+ this.parseJHipsterOptions(command.options);
122
+ this.registerPriorities(CUSTOM_PRIORITIES);
123
+ if (this.options.namespace !== 'jhipster:bootstrap') {
124
+ // jhipster:bootstrap is always required. Run it once the enviroment starts.
125
+ this.env.queueTask('environment:run', async () => this.composeWithJHipster(GENERATOR_BOOTSTRAP).then(), {
126
+ once: 'queueJhipsterBootstrap',
127
+ startQueue: false,
128
+ });
129
+ }
130
+ // Add base template folder.
131
+ this.jhipsterTemplatesFolders = [this.templatePath()];
132
+ this.jhipster7Migration = this.features.jhipster7Migration ?? false;
133
+ }
134
+ /**
135
+ * Override yeoman generator's usage function to fine tune --help message.
136
+ */
137
+ usage() {
138
+ return super.usage().replace('yo jhipster:', 'jhipster ');
139
+ }
140
+ /**
141
+ * @deprecated
142
+ */
143
+ get needleApi() {
144
+ if (this._needleApi === undefined || this._needleApi === null) {
145
+ this._needleApi = new NeedleApi(this);
146
+ }
147
+ return this._needleApi;
148
+ }
149
+ /**
150
+ * Check if the JHipster version used to generate an existing project is less than the passed version argument
151
+ *
152
+ * @param {string} version - A valid semver version string
153
+ */
154
+ isJhipsterVersionLessThan(version) {
155
+ const jhipsterOldVersion = this.sharedData.getControl().jhipsterOldVersion;
156
+ if (!jhipsterOldVersion) {
157
+ // if old version is unknown then can't compare (the project may be null) and return false
158
+ return false;
159
+ }
160
+ return semverLessThan(jhipsterOldVersion, version);
161
+ }
162
+ /**
163
+ * Get arguments for the priority
164
+ */
165
+ getArgsForPriority(priorityName) {
166
+ const control = this.sharedData.getControl();
167
+ if (priorityName === POST_WRITING || priorityName === PREPARING) {
168
+ const source = this.sharedData.getSource();
169
+ return [{ control, source }];
170
+ }
171
+ return [{ control }];
172
+ }
173
+ /**
174
+ * Override yeoman-generator method that gets methods to be queued, filtering the result.
175
+ */
176
+ getTaskNames() {
177
+ let priorities = super.getTaskNames();
178
+ if (this.options.skipPriorities) {
179
+ priorities = priorities.filter(priorityName => !this.options.skipPriorities.includes(priorityName));
180
+ }
181
+ return priorities;
182
+ }
183
+ /**
184
+ * Load options from an object.
185
+ * When composing, we need to load options from others generators, externalising options allow to easily load them.
186
+ * @param options - Object containing options.
187
+ * @param common - skip generator scoped options.
188
+ */
189
+ parseJHipsterOptions(options, common = false) {
190
+ Object.entries(options).forEach(([optionName, optionDesc]) => {
191
+ if (!optionDesc.scope || (common && optionDesc.scope === 'generator'))
192
+ return;
193
+ let optionValue;
194
+ // Hidden options are test options, which doesn't rely on commoander for options parsing.
195
+ // We must parse environment variables manually
196
+ if (this.options[optionDesc.name ?? optionName] === undefined && optionDesc.env && process.env[optionDesc.env]) {
197
+ optionValue = process.env[optionDesc.env];
198
+ }
199
+ else {
200
+ optionValue = this.options[optionDesc.name ?? optionName];
201
+ }
202
+ if (optionValue !== undefined) {
203
+ optionValue = optionDesc.type !== Array && optionDesc.type !== Function ? optionDesc.type(optionValue) : optionValue;
204
+ if (optionDesc.scope === 'storage') {
205
+ this.config.set(optionName, optionValue);
206
+ }
207
+ else if (optionDesc.scope === 'blueprint') {
208
+ this.blueprintStorage.set(optionName, optionValue);
209
+ }
210
+ else if (optionDesc.scope === 'control') {
211
+ this.sharedData.getControl()[optionName] = optionValue;
212
+ }
213
+ else if (optionDesc.scope === 'generator') {
214
+ this[optionName] = optionValue;
215
+ }
216
+ else {
217
+ throw new Error(`Scope ${optionDesc.scope} not supported`);
218
+ }
219
+ }
220
+ });
221
+ }
222
+ parseJHipsterArguments(jhipsterArguments = {}) {
223
+ const { positionalArguments = [] } = this.options;
224
+ const argumentEntries = Object.entries(jhipsterArguments);
225
+ if (positionalArguments.length > argumentEntries.length) {
226
+ throw new Error('More arguments than allowed');
227
+ }
228
+ argumentEntries.forEach(([argumentName, argumentDef], index) => {
229
+ if (positionalArguments.length > index) {
230
+ const argument = positionalArguments[index];
231
+ const convertedValue = !argumentDef.type || argumentDef.type === Array ? argument : argumentDef.type(argument);
232
+ this[argumentName] = convertedValue;
233
+ }
234
+ else if (argumentDef.required) {
235
+ throw new Error(`Missing required argument ${argumentName}`);
236
+ }
237
+ });
238
+ }
239
+ /**
240
+ * Alternative templatePath that fetches from the blueprinted generator, instead of the blueprint.
241
+ */
242
+ jhipsterTemplatePath(...path) {
243
+ let existingGenerator;
244
+ try {
245
+ existingGenerator = this._jhipsterGenerator ?? requireNamespace(this.options.namespace).generator;
246
+ }
247
+ catch (error) {
248
+ if (this.options.namespace) {
249
+ const split = this.options.namespace.split(':', 2);
250
+ existingGenerator = split.length === 1 ? split[0] : split[1];
251
+ }
252
+ else {
253
+ throw new Error('Could not determine the generator name');
254
+ }
255
+ }
256
+ this._jhipsterGenerator = existingGenerator;
257
+ return this._jhipsterGenerator
258
+ ? this.fetchFromInstalledJHipster(this._jhipsterGenerator, 'templates', ...path)
259
+ : this.templatePath(...path);
260
+ }
261
+ /**
262
+ * Compose with a jhipster generator using default jhipster config.
263
+ * @return {object} the composed generator
264
+ */
265
+ async composeWithJHipster(generator, options) {
266
+ assert(typeof generator === 'string', 'generator should to be a string');
267
+ if (!isAbsolute(generator)) {
268
+ const namespace = generator.includes(':') ? generator : `jhipster:${generator}`;
269
+ if (await this.env.get(namespace)) {
270
+ generator = namespace;
271
+ }
272
+ else {
273
+ // Keep test compatibily were jhipster lookup does not run.
274
+ const found = ['/index.js', '/index.cjs', '/index.mjs', '/index.ts', '/index.cts', '/index.mts'].find(extension => {
275
+ const pathToLook = join(__dirname, `../${generator}${extension}`);
276
+ return existsSync(pathToLook) ? pathToLook : undefined;
277
+ });
278
+ if (!found) {
279
+ throw new Error(`Generator ${generator} was not found`);
280
+ }
281
+ generator = join(__dirname, `../${generator}${found}`);
282
+ }
283
+ }
284
+ return this.composeWith(generator, {
285
+ forwardOptions: true,
286
+ ...options,
287
+ generatorOptions: {
288
+ configOptions: this.configOptions,
289
+ ...options?.generatorOptions,
290
+ },
291
+ });
292
+ }
293
+ /**
294
+ * Compose with a jhipster generator using default jhipster config, but queue it immediately.
295
+ */
296
+ async dependsOnJHipster(generator, options) {
297
+ return this.composeWithJHipster(generator, {
298
+ ...options,
299
+ schedule: false,
300
+ });
301
+ }
302
+ /**
303
+ * Remove File
304
+ * @param file
305
+ */
306
+ removeFile(...path) {
307
+ const destinationFile = this.destinationPath(...path);
308
+ const relativePath = relative(this.env.logCwd, destinationFile);
309
+ // Delete from memory fs to keep updated.
310
+ this.fs.delete(destinationFile);
311
+ try {
312
+ if (destinationFile && statSync(destinationFile).isFile()) {
313
+ this.log.info(`Removing legacy file ${relativePath}`);
314
+ rmSync(destinationFile, { force: true });
315
+ }
316
+ }
317
+ catch {
318
+ this.log.info(`Could not remove legacy file ${relativePath}`);
319
+ }
320
+ return destinationFile;
321
+ }
322
+ /**
323
+ * Remove Folder
324
+ * @param path
325
+ */
326
+ removeFolder(...path) {
327
+ const destinationFolder = this.destinationPath(...path);
328
+ const relativePath = relative(this.env.logCwd, destinationFolder);
329
+ // Delete from memory fs to keep updated.
330
+ this.fs.delete(`${destinationFolder}/**`);
331
+ try {
332
+ if (statSync(destinationFolder).isDirectory()) {
333
+ this.log.info(`Removing legacy folder ${relativePath}`);
334
+ rmSync(destinationFolder, { recursive: true });
335
+ }
336
+ }
337
+ catch (error) {
338
+ this.log.log(`Could not remove folder ${destinationFolder}`);
339
+ }
340
+ }
341
+ /**
342
+ * Fetch files from the generator-jhipster instance installed
343
+ */
344
+ fetchFromInstalledJHipster(...path) {
345
+ if (path) {
346
+ return joinPath(__dirname, '..', ...path);
347
+ }
348
+ return path;
349
+ }
350
+ /**
351
+ * Utility function to write file.
352
+ *
353
+ * @param source
354
+ * @param destination - destination
355
+ * @param data - template data
356
+ * @param options - options passed to ejs render
357
+ * @param copyOptions
358
+ */
359
+ writeFile(source, destination, data = this, options, copyOptions = {}) {
360
+ // Convert to any because ejs types doesn't support string[] https://github.com/DefinitelyTyped/DefinitelyTyped/pull/63315
361
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
362
+ const root = this.jhipsterTemplatesFolders ?? this.templatePath();
363
+ return this.renderTemplate(source, destination, data, { root, ...options }, { noGlob: true, ...copyOptions });
364
+ }
365
+ /**
366
+ * write the given files using provided options.
367
+ */
368
+ writeFiles(options) {
369
+ return this.internalWriteFiles(options);
370
+ }
371
+ editFile(file, options, ...transformCallbacks) {
372
+ let actualOptions;
373
+ if (typeof options === 'function') {
374
+ transformCallbacks = [options, ...transformCallbacks];
375
+ actualOptions = {};
376
+ }
377
+ else if (options === undefined) {
378
+ actualOptions = {};
379
+ }
380
+ else {
381
+ actualOptions = options;
382
+ }
383
+ let filePath = this.destinationPath(file);
384
+ if (!this.env.sharedFs.existsInMemory(filePath) && this.env.sharedFs.existsInMemory(`${filePath}.jhi`)) {
385
+ filePath = `${filePath}.jhi`;
386
+ }
387
+ let originalContent;
388
+ try {
389
+ originalContent = this.readDestination(filePath);
390
+ }
391
+ catch (_error) {
392
+ // null return should be treated like an error.
393
+ }
394
+ if (!originalContent) {
395
+ const { ignoreNonExisting, create } = actualOptions;
396
+ const errorMessage = typeof ignoreNonExisting === 'string' ? ` ${ignoreNonExisting}.` : '';
397
+ if (ignoreNonExisting) {
398
+ this.log(`${chalk.yellow('\nUnable to find ')}${filePath}.${chalk.yellow(errorMessage)}\n`);
399
+ // return a noop.
400
+ const noop = () => noop;
401
+ return noop;
402
+ }
403
+ if (!create || transformCallbacks.length === 0) {
404
+ throw new Error(`Unable to find ${filePath}. ${errorMessage}`);
405
+ }
406
+ // allow to edit non existing files
407
+ originalContent = '';
408
+ }
409
+ let newContent = originalContent;
410
+ const writeCallback = (...callbacks) => {
411
+ try {
412
+ newContent = joinCallbacks(...callbacks).call(this, newContent, filePath);
413
+ if (actualOptions.assertModified && originalContent === newContent) {
414
+ throw new Error(`Fail to edit file '${file}'.`);
415
+ }
416
+ this.writeDestination(filePath, newContent);
417
+ }
418
+ catch (error) {
419
+ if (error instanceof Error) {
420
+ throw new Error(`Error editing file ${filePath}: ${error.message} at ${error.stack}`);
421
+ }
422
+ throw new Error(`Unknow Error ${error}`);
423
+ }
424
+ return writeCallback;
425
+ };
426
+ return writeCallback(...transformCallbacks);
427
+ }
428
+ /**
429
+ * Convert value to a yaml and write to destination
430
+ */
431
+ writeDestinationYaml(filepath, value) {
432
+ this.writeDestination(filepath, stringifyYaml(value));
433
+ }
434
+ /**
435
+ * Merge value to an existing yaml and write to destination
436
+ * Removes every comment (due to parsing/merging process) except the at the top of the file.
437
+ */
438
+ mergeDestinationYaml(filepath, value) {
439
+ this.editFile(filepath, content => {
440
+ const lines = content.split('\n');
441
+ const headerComments = [];
442
+ lines.find(line => {
443
+ if (line.startsWith('#')) {
444
+ headerComments.push(line);
445
+ return false;
446
+ }
447
+ return true;
448
+ });
449
+ return headerComments.join('\n').concat('\n', stringifyYaml(merge(parseYaml(content), value)));
450
+ });
451
+ }
452
+ /**
453
+ * Shallow clone or convert dependencies to placeholder if needed.
454
+ */
455
+ prepareDependencies(map, valuePlaceholder = value => `${_.snakeCase(value).toUpperCase()}_VERSION`) {
456
+ if (this.useVersionPlaceholders) {
457
+ return Object.fromEntries(Object.keys(map).map(dep => [dep, valuePlaceholder(dep)]));
458
+ }
459
+ return {
460
+ ...map,
461
+ };
462
+ }
463
+ loadNodeDependencies(destination, source) {
464
+ Object.assign(destination, this.prepareDependencies(source));
465
+ }
466
+ loadNodeDependenciesFromPackageJson(destination, packageJsonFile) {
467
+ const { devDependencies, dependencies } = this.fs.readJSON(packageJsonFile, {});
468
+ this.loadNodeDependencies(destination, { ...devDependencies, ...dependencies });
469
+ }
470
+ /**
471
+ * Print ValidationResult info/warnings or throw result Error.
472
+ */
473
+ validateResult(result, { throwOnError = true } = {}) {
474
+ // Don't print check info by default for cleaner outputs.
475
+ if (result.debug) {
476
+ if (Array.isArray(result.debug)) {
477
+ for (const debug of result.debug) {
478
+ this.log.debug(debug);
479
+ }
480
+ }
481
+ else {
482
+ this.log.debug(result.debug);
483
+ }
484
+ }
485
+ if (result.info) {
486
+ if (Array.isArray(result.info)) {
487
+ for (const info of result.info) {
488
+ this.log.info(info);
489
+ }
490
+ }
491
+ else {
492
+ this.log.info(result.info);
493
+ }
494
+ }
495
+ if (result.warning) {
496
+ if (Array.isArray(result.warning)) {
497
+ for (const warning of result.warning) {
498
+ this.log.warn(warning);
499
+ }
500
+ }
501
+ else {
502
+ this.log.warn(result.warning);
503
+ }
504
+ }
505
+ if (result.error) {
506
+ if (Array.isArray(result.error)) {
507
+ if (throwOnError && result.error.length > 0) {
508
+ throw new Error(result.error[0]);
509
+ }
510
+ for (const error of result.error) {
511
+ this.log.warn(error);
512
+ }
513
+ }
514
+ else if (throwOnError) {
515
+ throw new Error(result.error);
516
+ }
517
+ else {
518
+ this.log.warn(result.error);
519
+ }
520
+ }
521
+ }
522
+ /**
523
+ * Checks if there is a newer JHipster version available.
524
+ */
525
+ async checkForNewVersion() {
526
+ try {
527
+ const latestJhipster = await latestVersion(GENERATOR_JHIPSTER);
528
+ if (semver.lt(packageJson.version, latestJhipster)) {
529
+ this.log.warn(`${chalk.yellow(' ______________________________________________________________________________\n\n') +
530
+ chalk.yellow(' JHipster update available: ') +
531
+ chalk.green.bold(latestJhipster) +
532
+ chalk.gray(` (current: ${packageJson.version})`)}\n`);
533
+ this.log.log(chalk.yellow(` Run ${chalk.magenta(`npm install -g ${GENERATOR_JHIPSTER}`)} to update.\n`));
534
+ this.log.log(chalk.yellow(' ______________________________________________________________________________\n'));
535
+ }
536
+ }
537
+ catch {
538
+ // Ignore error
539
+ }
540
+ }
541
+ /**
542
+ * Create a simple-git instance using current destinationPath as baseDir.
543
+ */
544
+ createGit() {
545
+ return simpleGit({ baseDir: this.destinationPath() }).env({
546
+ ...process.env,
547
+ LANG: 'en',
548
+ });
549
+ }
550
+ createSharedData({ jhipsterOldVersion, help, }) {
551
+ const destinationPath = this.destinationPath();
552
+ const dirname = basename(destinationPath);
553
+ const applicationId = this.options.applicationId ??
554
+ `${createHash('shake256', { outputLength: 1 }).update(destinationPath, 'utf8').digest('hex')}-${dirname}`;
555
+ if (this.options.sharedData.applications === undefined) {
556
+ this.options.sharedData.applications = {};
557
+ }
558
+ const sharedApplications = help ? {} : this.options.sharedData.applications;
559
+ if (!sharedApplications[applicationId]) {
560
+ sharedApplications[applicationId] = {};
561
+ }
562
+ const { ignoreNeedlesError } = this.options;
563
+ return new SharedData(sharedApplications[applicationId], { jhipsterOldVersion, ignoreNeedlesError });
564
+ }
565
+ }
@@ -16,4 +16,4 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
- export { default } from '../base/generator-base.mjs';
19
+ export { default } from './generator-base.mjs';
@@ -35,17 +35,10 @@ const { JWT_SECRET_KEY } = OptionNames;
35
35
  export default class BaseDockerGenerator extends BlueprintBaseGenerator {
36
36
  constructor(args, options, features) {
37
37
  super(args, options, features);
38
- // This adds support for a `--skip-checks` flag
39
- this.option('skip-checks', {
40
- description: 'Check the status of the required tools',
41
- type: Boolean,
42
- default: false,
43
- });
44
38
  // This adds support for a `--skip-prompts` flag
45
39
  this.option('skip-prompts', {
46
40
  description: 'Generate pre-existing configuration',
47
41
  type: Boolean,
48
- default: false,
49
42
  });
50
43
  this.regenerate = this.options.skipPrompts;
51
44
  }
@@ -36,7 +36,7 @@ export default class BootstrapGenerator extends BaseGenerator {
36
36
  upgradeCommand;
37
37
  skipPrettier;
38
38
  constructor(args, options, features) {
39
- super(args, options, { uniqueGlobally: true, customCommitTask: true, ...features });
39
+ super(args, options, { uniqueGlobally: true, customCommitTask: () => this.commitSharedFs(), ...features });
40
40
  }
41
41
  beforeQueue() {
42
42
  this.loadStoredAppOptions();
@@ -80,13 +80,6 @@ export default class BootstrapGenerator extends BaseGenerator {
80
80
  const filter = file => isFilePending(file) && isPrettierConfigFile(file);
81
81
  await this.commitSharedFs(this.env.sharedFs.stream({ filter }));
82
82
  },
83
- async commitFiles() {
84
- this.env.sharedFs.once('change', () => {
85
- this.queueMultistepTransform();
86
- this.queueCommit();
87
- });
88
- await this.commitSharedFs();
89
- },
90
83
  };
91
84
  }
92
85
  get [PRE_CONFLICTS_PRIORITY]() {
@@ -109,24 +102,15 @@ export default class BootstrapGenerator extends BaseGenerator {
109
102
  queueName: MULTISTEP_TRANSFORM_QUEUE,
110
103
  once: true,
111
104
  });
112
- }
113
- /**
114
- * Queue environment's commit task.
115
- */
116
- queueCommit() {
117
- this.log.debug('Queueing conflicts task');
118
- this.queueTask({
119
- method: async () => {
120
- this.log.debug('Adding queueCommit event listener');
121
- this.env.sharedFs.once('change', () => {
122
- this.queueCommit();
123
- });
124
- await this.commitSharedFs();
125
- },
126
- }, {
127
- priorityName: 'conflicts',
128
- once: 'write memory fs to disk',
129
- });
105
+ const onChangeListener = file => {
106
+ if (createMultiStepTransform().templateFileFs.isTemplate(file)) {
107
+ this.queueMultistepTransform();
108
+ }
109
+ else {
110
+ this.env.sharedFs.once('change', onChangeListener);
111
+ }
112
+ };
113
+ this.env.sharedFs.once('change', onChangeListener);
130
114
  }
131
115
  /**
132
116
  * Commits the MemFs to the disc.
@@ -1,4 +1,4 @@
1
- // Jenkinsfile completions for Intellij IDEA
1
+ // Jenkinsfile completions for IntelliJ IDEA
2
2
 
3
3
  def ctx = context(scope: scriptScope())
4
4
  contributor(ctx) {
@@ -22,7 +22,7 @@ import { clientFrameworkTypes } from '../../../jdl/jhipster/index.mjs';
22
22
  const { ANGULAR } = clientFrameworkTypes;
23
23
  export default class extends needleClient {
24
24
  _getWebpackFile(clientFramework = this.clientFramework) {
25
- return this.clientFramework === ANGULAR ? `${CLIENT_WEBPACK_DIR}/webpack.custom.js` : `${CLIENT_WEBPACK_DIR}/webpack.common.js`;
25
+ return clientFramework === ANGULAR ? `${CLIENT_WEBPACK_DIR}/webpack.custom.js` : `${CLIENT_WEBPACK_DIR}/webpack.common.js`;
26
26
  }
27
27
  copyExternalAssets(source, target, clientFramework) {
28
28
  const errorMessage = 'Resource path not added to JHipster app.';
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "dependencies": {
3
- "dayjs": "1.11.8"
3
+ "dayjs": "1.11.9"
4
4
  },
5
5
  "devDependencies": {
6
- "@cypress/code-coverage": "3.10.7",
7
- "babel-loader": "9.1.2",
6
+ "@cypress/code-coverage": "3.11.0",
7
+ "babel-loader": "9.1.3",
8
8
  "babel-plugin-istanbul": "6.1.1",
9
- "cypress": "12.14.0",
9
+ "cypress": "12.17.1",
10
10
  "cypress-audit": "1.1.0",
11
11
  "eslint-plugin-cypress": "2.13.3",
12
- "lighthouse": "10.2.0",
12
+ "lighthouse": "10.4.0",
13
13
  "nyc": "15.1.0",
14
- "swagger-ui-dist": "4.19.0"
14
+ "swagger-ui-dist": "5.1.0"
15
15
  }
16
16
  }