generator-jhipster 7.3.1 → 7.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/cli/jhipster-command.js +2 -2
  2. package/cli/program.js +31 -29
  3. package/generators/app/index.js +30 -25
  4. package/generators/aws/index.js +8 -8
  5. package/generators/aws/lib/eb.js +1 -1
  6. package/generators/azure-app-service/index.js +13 -9
  7. package/generators/azure-spring-cloud/index.js +13 -9
  8. package/generators/bootstrap/index.js +49 -59
  9. package/generators/ci-cd/index.js +10 -8
  10. package/generators/client/files-common.js +6 -2
  11. package/generators/client/files-react.js +10 -1
  12. package/generators/client/files-vue.js +40 -1
  13. package/generators/client/index.js +42 -31
  14. package/generators/client/needle-api/needle-client-vue.js +1 -1
  15. package/generators/client/templates/angular/.eslintrc.json.ejs +1 -0
  16. package/generators/client/templates/angular/package.json +14 -14
  17. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.html.ejs +2 -2
  18. package/generators/client/templates/common/package.json +3 -3
  19. package/generators/client/templates/common/webpack/webpack.microfrontend.js.jhi.ejs +56 -0
  20. package/generators/client/templates/react/.eslintrc.json.ejs +1 -0
  21. package/generators/client/templates/react/package.json +44 -43
  22. package/generators/client/templates/react/package.json.ejs +3 -0
  23. package/generators/client/templates/react/src/main/webapp/app/app.scss.ejs +0 -3
  24. package/generators/client/templates/react/src/main/webapp/app/modules/administration/configuration/configuration.tsx.ejs +2 -2
  25. package/generators/client/templates/react/src/main/webapp/app/modules/administration/gateway/gateway.tsx.ejs +2 -2
  26. package/generators/client/templates/react/src/main/webapp/app/modules/administration/metrics/metrics.tsx.ejs +6 -6
  27. package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/user-management.tsx.ejs +8 -8
  28. package/generators/client/templates/react/src/main/webapp/app/modules/home/home.tsx.ejs +1 -1
  29. package/generators/client/templates/react/src/main/webapp/app/shared/layout/header/header.tsx.ejs +1 -1
  30. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/account.tsx.ejs +3 -3
  31. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/admin.tsx.ejs +7 -7
  32. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/menu-components.tsx.ejs +1 -1
  33. package/generators/client/templates/react/webpack/webpack.dev.js.ejs +17 -1
  34. package/generators/client/templates/react/webpack/webpack.prod.js.ejs +13 -1
  35. package/generators/client/templates/vue/.eslintrc.js.ejs +8 -5
  36. package/generators/client/templates/vue/package.json +31 -38
  37. package/generators/client/templates/vue/package.json.ejs +8 -10
  38. package/generators/client/templates/vue/src/main/webapp/app/account/account.service.ts.ejs +1 -2
  39. package/generators/client/templates/vue/src/main/webapp/app/account/settings/settings.vue.ejs +7 -1
  40. package/generators/client/templates/vue/src/main/webapp/app/admin/configuration/configuration.vue.ejs +1 -1
  41. package/generators/client/templates/vue/src/main/webapp/app/admin/metrics/metrics.component.ts.ejs +1 -1
  42. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +12 -1
  43. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.vue.ejs +6 -0
  44. package/generators/client/templates/vue/src/main/webapp/app/declarations.d.ts.ejs +41 -0
  45. package/generators/client/templates/vue/src/main/webapp/app/entities/entities-menu.component.ts.ejs +34 -0
  46. package/generators/client/templates/vue/src/main/webapp/app/entities/entities-menu.vue.ejs +13 -0
  47. package/generators/client/templates/vue/src/main/webapp/app/entities/entities.component.ts.ejs +12 -0
  48. package/generators/client/templates/vue/src/main/webapp/app/entities/entities.vue.ejs +5 -0
  49. package/generators/client/templates/vue/src/main/webapp/app/index.ts.ejs +19 -0
  50. package/generators/client/templates/vue/src/main/webapp/app/locale/translation.service.ts.ejs +25 -8
  51. package/generators/client/templates/vue/src/main/webapp/app/main.ts.ejs +9 -4
  52. package/generators/client/templates/vue/src/main/webapp/app/router/entities.ts.ejs +44 -1
  53. package/generators/client/templates/vue/src/main/webapp/app/router/index.ts.ejs +11 -0
  54. package/generators/client/templates/vue/src/main/webapp/app/shims-vue.d.ts.ejs +0 -10
  55. package/generators/client/templates/vue/src/test/javascript/jest.conf.js.ejs +19 -8
  56. package/generators/client/templates/vue/src/test/javascript/spec/app/entities/entities-menu.spec.ts.ejs +52 -0
  57. package/generators/client/templates/vue/src/test/javascript/spec/app/microfrontends/entities-menu.component.ts.ejs +4 -0
  58. package/generators/client/templates/vue/src/test/javascript/spec/app/microfrontends/entities-menu.vue.ejs +7 -0
  59. package/generators/client/templates/vue/src/test/javascript/spec/app/microfrontends/entities-router.ts.ejs +1 -0
  60. package/generators/client/templates/vue/tsconfig.json.ejs +5 -9
  61. package/generators/client/templates/vue/tsconfig.spec.json.ejs +37 -0
  62. package/generators/client/templates/vue/webpack/config.js.ejs +2 -0
  63. package/generators/client/templates/vue/webpack/vue.utils.js.ejs +13 -12
  64. package/generators/client/templates/vue/webpack/webpack.common.js.ejs +64 -50
  65. package/generators/client/templates/vue/webpack/webpack.dev.js.ejs +17 -68
  66. package/generators/client/templates/vue/webpack/webpack.microfrontend.js.jhi.vue.ejs +77 -0
  67. package/generators/client/templates/vue/webpack/webpack.prod.js.ejs +1 -30
  68. package/generators/cloudfoundry/index.js +9 -9
  69. package/generators/common/index.js +12 -10
  70. package/generators/common/templates/package.json +4 -4
  71. package/generators/cypress/index.js +12 -9
  72. package/generators/cypress/templates/cypress.json.ejs +3 -0
  73. package/generators/cypress/templates/src/test/javascript/cypress/plugins/index.ts.ejs +3 -3
  74. package/generators/cypress/templates/src/test/javascript/cypress/support/entity.ts.ejs +2 -2
  75. package/generators/database-changelog/index.js +33 -22
  76. package/generators/database-changelog-liquibase/index.js +12 -8
  77. package/generators/docker-compose/index.js +11 -12
  78. package/generators/entities/index.js +35 -26
  79. package/generators/entities-client/index.js +10 -7
  80. package/generators/entity/index.js +25 -28
  81. package/generators/entity-client/files.js +6 -11
  82. package/generators/entity-client/index.js +9 -7
  83. package/generators/entity-client/templates/common/src/test/javascript/cypress/integration/entity/entity.spec.ts.ejs +4 -4
  84. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-update.tsx.ejs +1 -1
  85. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity.tsx.ejs +7 -7
  86. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.component.ts.ejs +2 -1
  87. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.service.ts.ejs +2 -6
  88. package/generators/entity-i18n/index.js +7 -4
  89. package/generators/entity-server/index.js +11 -8
  90. package/generators/entity-server/templates/src/main/java/package/web/rest/EntityResource.java.ejs +39 -41
  91. package/generators/gae/index.js +10 -10
  92. package/generators/generator-base-blueprint.js +7 -44
  93. package/generators/generator-base.js +7 -0
  94. package/generators/generator-constants.js +20 -18
  95. package/generators/generator-transforms.js +27 -23
  96. package/generators/heroku/index.js +12 -10
  97. package/generators/init/constants.cjs +1 -1
  98. package/generators/kubernetes/files.js +3 -0
  99. package/generators/kubernetes/index.js +10 -10
  100. package/generators/kubernetes/templates/db/couchbase.yml.ejs +1 -1
  101. package/generators/kubernetes/templates/deployment.yml.ejs +8 -3
  102. package/generators/kubernetes/templates/istio/destination-rule.yml.ejs +1 -1
  103. package/generators/kubernetes/templates/istio/gateway/grafana-gateway.yml.ejs +5 -2
  104. package/generators/kubernetes/templates/istio/gateway/jhipster-grafana-gateway.yml.ejs +5 -2
  105. package/generators/kubernetes/templates/istio/gateway/kiali-gateway.yml.ejs +10 -8
  106. package/generators/kubernetes/templates/istio/gateway/zipkin-gateway.yml.ejs +5 -2
  107. package/generators/kubernetes/templates/istio/gateway.yml.ejs +7 -5
  108. package/generators/kubernetes/templates/secret/couchbase-secret.yml.ejs +9 -0
  109. package/generators/kubernetes-base.js +1 -0
  110. package/generators/kubernetes-helm/files.js +3 -8
  111. package/generators/kubernetes-helm/index.js +10 -10
  112. package/generators/kubernetes-helm/templates/README-KUBERNETES-HELM.md.ejs +0 -1
  113. package/generators/kubernetes-helm/templates/app/Chart.yml.ejs +5 -0
  114. package/generators/kubernetes-helm/templates/app/helpers.tpl.ejs +0 -11
  115. package/generators/kubernetes-helm/templates/app/requirements.yml.ejs +5 -0
  116. package/generators/kubernetes-helm/templates/app/values.yml.ejs +68 -5
  117. package/generators/kubernetes-helm/templates/csvc/Chart.yml.ejs +1 -1
  118. package/generators/kubernetes-helm/templates/csvc/requirements.yml.ejs +1 -1
  119. package/generators/kubernetes-knative/index.js +10 -10
  120. package/generators/kubernetes-knative/templates/istio/gateway.yml.ejs +6 -4
  121. package/generators/kubernetes-knative/templates/service.yml.ejs +1 -1
  122. package/generators/languages/index.js +13 -13
  123. package/generators/openapi-client/index.js +13 -10
  124. package/generators/openshift/index.js +10 -11
  125. package/generators/openshift/templates/deployment.yml.ejs +1 -1
  126. package/generators/page/index.js +12 -10
  127. package/generators/server/__snapshots__/generator.spec.mjs.snap +12 -0
  128. package/generators/server/files.js +12 -0
  129. package/generators/server/index.js +32 -18
  130. package/generators/server/templates/gradle.properties.ejs +10 -10
  131. package/generators/server/templates/pom.xml.ejs +6 -6
  132. package/generators/server/templates/src/main/docker/app.yml.ejs +1 -1
  133. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration_reactive.java.ejs +2 -2
  134. package/generators/server/templates/src/main/java/package/config/WebConfigurer.java.ejs +0 -1
  135. package/generators/server/templates/src/main/java/package/management/SecurityMetersService.java.ejs +68 -0
  136. package/generators/server/templates/src/main/java/package/security/jwt/TokenProvider.java.ejs +29 -4
  137. package/generators/server/templates/src/main/java/package/security/oauth2/CustomClaimConverter.java.ejs +21 -9
  138. package/generators/server/templates/src/main/java/package/service/UserService.java.ejs +13 -5
  139. package/generators/server/templates/src/main/resources/static/microservices_index.html.ejs +1 -1
  140. package/generators/server/templates/src/test/java/package/management/SecurityMetersServiceTests.java.ejs +113 -0
  141. package/generators/server/templates/src/test/java/package/security/jwt/JWTFilterTest.java.ejs +6 -1
  142. package/generators/server/templates/src/test/java/package/security/jwt/TokenProviderSecurityMetersTests.java.ejs +198 -0
  143. package/generators/server/templates/src/test/java/package/security/jwt/TokenProviderTest.java.ejs +13 -3
  144. package/generators/server/templates/src/test/java/package/security/oauth2/AuthorizationHeaderUtilTest.java.ejs +16 -2
  145. package/generators/server/templates/src/test/java/package/security/oauth2/CustomClaimConverterIT.java.ejs +63 -0
  146. package/generators/spring-controller/index.js +9 -7
  147. package/generators/spring-service/index.js +10 -7
  148. package/generators/upgrade/index.js +3 -4
  149. package/generators/utils.js +2 -2
  150. package/generators/workspaces/index.js +16 -7
  151. package/jdl/jhipster/default-application-options.js +9 -7
  152. package/package.json +15 -15
  153. package/utils/entity.js +14 -0
  154. package/utils/multi-step-transform/index.js +8 -8
@@ -35,11 +35,11 @@ const { MAVEN, GRADLE } = require('../../jdl/jhipster/build-tool-types');
35
35
 
36
36
  const NO_CACHE_PROVIDER = cacheProviders.NO;
37
37
 
38
- let useBlueprints;
39
38
  module.exports = class extends BaseBlueprintGenerator {
40
- constructor(args, options, features) {
41
- super(args, options, features);
42
- useBlueprints = !this.fromBlueprint && this.instantiateBlueprints(GENERATOR_GAE);
39
+ async _postConstruct() {
40
+ if (!this.fromBlueprint) {
41
+ await this.composeWithBlueprints(GENERATOR_GAE);
42
+ }
43
43
  }
44
44
 
45
45
  _initializing() {
@@ -121,7 +121,7 @@ module.exports = class extends BaseBlueprintGenerator {
121
121
  }
122
122
 
123
123
  get initializing() {
124
- if (useBlueprints) return;
124
+ if (this.delegateToBlueprint) return {};
125
125
  return this._initializing();
126
126
  }
127
127
 
@@ -607,7 +607,7 @@ module.exports = class extends BaseBlueprintGenerator {
607
607
  }
608
608
 
609
609
  get prompting() {
610
- if (useBlueprints) return;
610
+ if (this.delegateToBlueprint) return {};
611
611
  return this._prompting();
612
612
  }
613
613
 
@@ -748,7 +748,7 @@ module.exports = class extends BaseBlueprintGenerator {
748
748
  }
749
749
 
750
750
  get configuring() {
751
- if (useBlueprints) return;
751
+ if (this.delegateToBlueprint) return {};
752
752
  return this._configuring();
753
753
  }
754
754
 
@@ -761,7 +761,7 @@ module.exports = class extends BaseBlueprintGenerator {
761
761
  }
762
762
 
763
763
  get loading() {
764
- if (useBlueprints) return;
764
+ if (this.delegateToBlueprint) return {};
765
765
  return this._loading();
766
766
  }
767
767
 
@@ -831,7 +831,7 @@ module.exports = class extends BaseBlueprintGenerator {
831
831
  }
832
832
 
833
833
  get writing() {
834
- if (useBlueprints) return;
834
+ if (this.delegateToBlueprint) return {};
835
835
  return this._writing();
836
836
  }
837
837
 
@@ -877,7 +877,7 @@ module.exports = class extends BaseBlueprintGenerator {
877
877
  }
878
878
 
879
879
  get end() {
880
- if (useBlueprints) return;
880
+ if (this.delegateToBlueprint) return {};
881
881
  return this._end();
882
882
  }
883
883
 
@@ -224,44 +224,6 @@ module.exports = class JHipsterBaseBlueprintGenerator extends BaseGenerator {
224
224
  return false;
225
225
  }
226
226
 
227
- /**
228
- * @private
229
- * @deprecated
230
- * Instantiates the blueprint generators, if any.
231
- * @param {string} subGen - sub generator
232
- * @param {any} extraOptions - extra options to pass to blueprint generator
233
- * @return {true} useBlueprints - true if one or more blueprints generators have been constructed; false otherwise
234
- */
235
- instantiateBlueprints(subGen, extraOptions) {
236
- if (this.options.help) {
237
- // Ignore blueprint registered options.
238
- return false;
239
- }
240
- let useBlueprints = false;
241
-
242
- if (!this.configOptions.blueprintConfigured) {
243
- this.configOptions.blueprintConfigured = true;
244
- this._configureBlueprints();
245
- }
246
-
247
- const blueprints = this.jhipsterConfig.blueprints;
248
- if (blueprints && blueprints.length > 0) {
249
- blueprints.forEach(blueprint => {
250
- const blueprintGenerator = this._composeBlueprint(blueprint.name, subGen, extraOptions);
251
- if (blueprintGenerator) {
252
- if (blueprintGenerator.sbsBlueprint) {
253
- // If sbsBlueprint, add templatePath to the original generator templatesFolder.
254
- this.jhipsterTemplatesFolders.unshift(blueprintGenerator.templatePath());
255
- } else {
256
- // If the blueprints does not sets sbsBlueprint property, ignore normal workflow.
257
- useBlueprints = true;
258
- }
259
- }
260
- });
261
- }
262
- return useBlueprints;
263
- }
264
-
265
227
  /**
266
228
  * @private
267
229
  * Composes with blueprint generators, if any.
@@ -353,7 +315,7 @@ module.exports = class JHipsterBaseBlueprintGenerator extends BaseGenerator {
353
315
  * @param {any} options - options to pass to blueprint generator
354
316
  * @return {Generator|undefined}
355
317
  */
356
- _composeBlueprint(blueprint, subGen, extraOptions = {}) {
318
+ async _composeBlueprint(blueprint, subGen, extraOptions = {}) {
357
319
  blueprint = normalizeBlueprintName(blueprint);
358
320
  if (!this.configOptions.skipChecks && !this.options.skipChecks) {
359
321
  this._checkBlueprint(blueprint);
@@ -362,16 +324,17 @@ module.exports = class JHipsterBaseBlueprintGenerator extends BaseGenerator {
362
324
  const generatorName = packageNameToNamespace(blueprint);
363
325
  const generatorNamespace = `${generatorName}:${subGen}`;
364
326
  if (!this.env.isPackageRegistered(generatorName)) {
365
- this.env.lookup({ filterPaths: true, packagePatterns: blueprint });
327
+ await this.env.lookup({ filterPaths: true, packagePatterns: blueprint });
366
328
  }
367
- if (!this.env.get(generatorNamespace)) {
329
+ if (!(await this.env.get(generatorNamespace))) {
368
330
  this.debug(
369
- `No blueprint found for blueprint ${chalk.yellow(blueprint)} and ${chalk.yellow(
370
- subGen
331
+ `No blueprint found for blueprint ${chalk.yellow(blueprint)} and ${chalk.yellow(subGen)} with namespace ${chalk.yellow(
332
+ generatorNamespace
371
333
  )} subgenerator: falling back to default generator`
372
334
  );
373
335
  return undefined;
374
336
  }
337
+ this.debug(`Found blueprint ${chalk.yellow(blueprint)} and ${chalk.yellow(subGen)} with namespace ${chalk.yellow(generatorNamespace)}`);
375
338
 
376
339
  const finalOptions = {
377
340
  ...this.options,
@@ -380,7 +343,7 @@ module.exports = class JHipsterBaseBlueprintGenerator extends BaseGenerator {
380
343
  jhipsterContext: this,
381
344
  };
382
345
 
383
- const blueprintGenerator = this.composeWith(generatorNamespace, finalOptions, true);
346
+ const blueprintGenerator = await this.composeWith(generatorNamespace, finalOptions, true);
384
347
  if (blueprintGenerator instanceof Error) {
385
348
  throw blueprintGenerator;
386
349
  }
@@ -2752,6 +2752,8 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2752
2752
  dest.testFrameworks = config.testFrameworks || [];
2753
2753
  dest.cypressCoverage = config.cypressCoverage;
2754
2754
 
2755
+ dest.remotes = Object.entries(config.applications || {}).map(([baseName, config]) => ({ baseName, ...config })) || [];
2756
+
2755
2757
  dest.gatlingTests = dest.testFrameworks.includes(GATLING);
2756
2758
  dest.cucumberTests = dest.testFrameworks.includes(CUCUMBER);
2757
2759
  dest.protractorTests = dest.testFrameworks.includes(PROTRACTOR);
@@ -2779,6 +2781,11 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
2779
2781
  dest.humanizedBaseName =
2780
2782
  dest.humanizedBaseName || (dest.baseName.toLowerCase() === 'jhipster' ? 'JHipster' : _.startCase(dest.baseName));
2781
2783
  dest.projectDescription = dest.projectDescription || `Description for ${this.baseName}`;
2784
+ dest.endpointPrefix = !dest.applicationType || dest.applicationTypeMicroservice ? `services/${dest.lowercaseBaseName}` : '';
2785
+ }
2786
+
2787
+ if (dest.remotes) {
2788
+ dest.remotes.forEach(app => this.loadDerivedAppConfig(app));
2782
2789
  }
2783
2790
  }
2784
2791
 
@@ -26,7 +26,7 @@ const JAVA_VERSION = '11';
26
26
  const JAVA_COMPATIBLE_VERSIONS = ['11', '12', '13', '14', '15', '16', '17'];
27
27
 
28
28
  // Version of Node, NPM
29
- const NODE_VERSION = '14.17.6';
29
+ const NODE_VERSION = '14.18.1';
30
30
  const NPM_VERSION = commonPackageJson.devDependencies.npm;
31
31
  const OPENAPI_GENERATOR_CLI_VERSION = '1.0.13-4.3.1';
32
32
 
@@ -34,10 +34,10 @@ const GRADLE_VERSION = '7.0.2';
34
34
  const JIB_VERSION = '3.1.4';
35
35
 
36
36
  // Libraries version
37
- const JHIPSTER_DEPENDENCIES_VERSION = '7.3.1';
37
+ const JHIPSTER_DEPENDENCIES_VERSION = '7.4.0';
38
38
  // The spring-boot version should match the one managed by https://mvnrepository.com/artifact/tech.jhipster/jhipster-dependencies/JHIPSTER_DEPENDENCIES_VERSION
39
- const SPRING_BOOT_VERSION = '2.5.5';
40
- const LIQUIBASE_VERSION = '4.5.0';
39
+ const SPRING_BOOT_VERSION = '2.5.7';
40
+ const LIQUIBASE_VERSION = '4.6.1';
41
41
  const LIQUIBASE_DTD_VERSION = LIQUIBASE_VERSION.split('.', 3).slice(0, 2).join('.');
42
42
  const HIBERNATE_VERSION = '5.4.32.Final';
43
43
 
@@ -51,27 +51,27 @@ const DOCKER_COMPOSE_FORMAT_VERSION = '3.8';
51
51
  const DOCKER_JHIPSTER_REGISTRY = 'jhipster/jhipster-registry:v7.1.0';
52
52
  const DOCKER_JHIPSTER_CONTROL_CENTER = 'jhipster/jhipster-control-center:v0.5.0';
53
53
  const DOCKER_JAVA_JRE = 'eclipse-temurin:11-jre-focal';
54
- const DOCKER_MYSQL = 'mysql:8.0.26';
55
- const DOCKER_MARIADB = 'mariadb:10.6.4';
56
- const DOCKER_POSTGRESQL = 'postgres:13.4';
57
- const DOCKER_MONGODB = 'mongo:4.4.8';
54
+ const DOCKER_MYSQL = 'mysql:8.0.27';
55
+ const DOCKER_MARIADB = 'mariadb:10.7.1';
56
+ const DOCKER_POSTGRESQL = 'postgres:13.5';
57
+ const DOCKER_MONGODB = 'mongo:4.4.10';
58
58
  const DOCKER_COUCHBASE = 'couchbase/server:7.0.0';
59
59
  const DOCKER_CASSANDRA = 'cassandra:3.11.11';
60
- const DOCKER_MSSQL = 'mcr.microsoft.com/mssql/server:2019-CU12-ubuntu-20.04';
61
- const DOCKER_NEO4J = 'neo4j:4.2.11';
60
+ const DOCKER_MSSQL = 'mcr.microsoft.com/mssql/server:2019-CU13-ubuntu-20.04';
61
+ const DOCKER_NEO4J = 'neo4j:4.3.7';
62
62
  const DOCKER_HAZELCAST_MANAGEMENT_CENTER = 'hazelcast/management-center:4.2021.06';
63
- const DOCKER_MEMCACHED = 'memcached:1.6.10-alpine';
64
- const DOCKER_REDIS = 'redis:6.2.5';
63
+ const DOCKER_MEMCACHED = 'memcached:1.6.12-alpine';
64
+ const DOCKER_REDIS = 'redis:6.2.6';
65
65
  const DOCKER_KEYCLOAK = 'jboss/keycloak:15.0.2'; // The version should match the attribute 'keycloakVersion' from /docker-compose/templates/realm-config/jhipster-realm.json.ejs and /server/templates/src/main/docker/config/realm-config/jhipster-realm.json.ejs
66
66
  const DOCKER_ELASTICSEARCH = 'docker.elastic.co/elasticsearch/elasticsearch:7.13.3'; // The version should be coherent with the one from spring-data-elasticsearch project
67
67
  const DOCKER_KAFKA = `confluentinc/cp-kafka:${KAFKA_VERSION}`;
68
68
  const DOCKER_ZOOKEEPER = `confluentinc/cp-zookeeper:${KAFKA_VERSION}`;
69
- const DOCKER_SONAR = 'sonarqube:8.9.2-community';
70
- const DOCKER_CONSUL = 'consul:1.9.9';
69
+ const DOCKER_SONAR = 'sonarqube:9.1.0-community';
70
+ const DOCKER_CONSUL = 'consul:1.10.4';
71
71
  const DOCKER_CONSUL_CONFIG_LOADER = 'jhipster/consul-config-loader:v0.4.1';
72
- const DOCKER_PROMETHEUS = 'prom/prometheus:v2.29.2';
72
+ const DOCKER_PROMETHEUS = 'prom/prometheus:v2.31.1';
73
73
  const DOCKER_PROMETHEUS_ALERTMANAGER = 'prom/alertmanager:v0.23.0';
74
- const DOCKER_GRAFANA = 'grafana/grafana:8.1.3';
74
+ const DOCKER_GRAFANA = 'grafana/grafana:8.2.4';
75
75
  const DOCKER_JENKINS = 'jenkins/jenkins:lts-jdk11';
76
76
  const DOCKER_SWAGGER_EDITOR = 'swaggerapi/swagger-editor:latest';
77
77
  const DOCKER_PROMETHEUS_OPERATOR = 'quay.io/coreos/prometheus-operator:v0.42.1';
@@ -83,7 +83,7 @@ const KUBERNETES_BATCH_API_VERSION = 'batch/v1';
83
83
  const KUBERNETES_DEPLOYMENT_API_VERSION = 'apps/v1';
84
84
  const KUBERNETES_STATEFULSET_API_VERSION = 'apps/v1';
85
85
  const KUBERNETES_INGRESS_API_VERSION = 'networking.k8s.io/v1beta1';
86
- const KUBERNETES_ISTIO_NETWORKING_API_VERSION = 'networking.istio.io/v1alpha3';
86
+ const KUBERNETES_ISTIO_NETWORKING_API_VERSION = 'networking.istio.io/v1beta1';
87
87
  const KUBERNETES_RBAC_API_VERSION = 'rbac.authorization.k8s.io/v1';
88
88
 
89
89
  // Helm versions
@@ -95,6 +95,7 @@ const HELM_MYSQL = '^1.4.0';
95
95
  const HELM_MARIADB = '^6.12.2';
96
96
  const HELM_POSTGRESQL = '^6.5.3';
97
97
  const HELM_MOGODB_REPLICASET = '^3.10.1';
98
+ const HELM_COUCHBASE_OPERATOR = '^2.2.1';
98
99
 
99
100
  // all constants used throughout all generators
100
101
 
@@ -254,7 +255,7 @@ const LANGUAGES = [
254
255
  And https://github.com/jhipster/generator-jhipster/issues/9494
255
256
  Java 17 supports 'id' locale, for compatibility with java 11, we will keep legacy 'in' value while we support java 11.
256
257
  When running with java 17 users must set 'java.locale.useOldISOCodes=true' environment variable.
257
- See https://bugs.openjdk.java.net/browse/JDK-8267069.
258
+ See https://bugs.openjdk.java.net/browse/JDK-8267069.
258
259
  */
259
260
  value: 'in',
260
261
  localeId: 'id',
@@ -425,6 +426,7 @@ const constants = {
425
426
  HELM_MARIADB,
426
427
  HELM_POSTGRESQL,
427
428
  HELM_MOGODB_REPLICASET,
429
+ HELM_COUCHBASE_OPERATOR,
428
430
  };
429
431
 
430
432
  module.exports = constants;
@@ -18,24 +18,28 @@
18
18
  */
19
19
  const { State } = require('mem-fs-editor');
20
20
  const path = require('path');
21
- const { createFileTransform } = require('yeoman-environment/lib/util/transform');
21
+ const { passthrough } = require('p-transform');
22
22
  const prettier = require('prettier');
23
23
  const prettierPluginJava = require('prettier-plugin-java');
24
24
  const prettierPluginPackagejson = require('prettier-plugin-packagejson');
25
+ const { patternSpy } = require('yeoman-environment/transform');
25
26
 
26
27
  const { isFileStateDeleted } = State;
27
28
 
28
- const prettierTransform = function (options, generator, ignoreErrors = false) {
29
- return createFileTransform((file, encoding, callback) => {
30
- if (isFileStateDeleted(file)) {
31
- callback(null, file);
32
- return Promise.resolve();
33
- }
34
- /* resolve from the projects config */
35
- let fileContent;
36
- return prettier
37
- .resolveConfig(file.relative)
38
- .then(function (resolvedDestinationFileOptions) {
29
+ const prettierTransform = function (options, generator, transformOptions = {}) {
30
+ if (typeof transformOptions === 'boolean') {
31
+ transformOptions = { ignoreErrors: transformOptions };
32
+ }
33
+ const { ignoreErrors = false, extensions = generator.getPrettierExtensions() } = transformOptions;
34
+ return patternSpy(
35
+ async file => {
36
+ if (isFileStateDeleted(file)) {
37
+ return file;
38
+ }
39
+ /* resolve from the projects config */
40
+ let fileContent;
41
+ try {
42
+ const resolvedDestinationFileOptions = await prettier.resolveConfig(file.relative);
39
43
  const prettierOptions = {
40
44
  plugins: [],
41
45
  // Config from disk
@@ -52,9 +56,8 @@ const prettierTransform = function (options, generator, ignoreErrors = false) {
52
56
  fileContent = file.contents.toString('utf8');
53
57
  const data = prettier.format(fileContent, prettierOptions);
54
58
  file.contents = Buffer.from(data);
55
- callback(null, file);
56
- })
57
- .catch(error => {
59
+ return file;
60
+ } catch (error) {
58
61
  const errorMessage = `Error parsing file ${file.relative}: ${error}
59
62
 
60
63
  At: ${fileContent
@@ -63,16 +66,18 @@ At: ${fileContent
63
66
  .join('\n')}`;
64
67
  if (ignoreErrors) {
65
68
  generator.warning(errorMessage);
66
- callback(null, file);
67
- } else {
68
- callback(new Error(errorMessage));
69
+ return file;
69
70
  }
70
- });
71
- });
71
+ throw new Error(errorMessage);
72
+ }
73
+ },
74
+ `**/*.{${extensions}}`,
75
+ { dot: true }
76
+ ).name('jhipster:prettier');
72
77
  };
73
78
 
74
79
  const generatedAnnotationTransform = generator => {
75
- return createFileTransform(function (file, encoding, callback) {
80
+ return passthrough(file => {
76
81
  if (
77
82
  !file.path.endsWith('package-info.java') &&
78
83
  !file.path.endsWith('MavenWrapperDownloader.java') &&
@@ -92,8 +97,7 @@ const generatedAnnotationTransform = generator => {
92
97
  file.contents = Buffer.from(newContent);
93
98
  }
94
99
  }
95
- callback(null, file);
96
- });
100
+ }, 'jhipster:generated-by-annotation');
97
101
  };
98
102
 
99
103
  module.exports = {
@@ -39,8 +39,6 @@ const { EUREKA } = require('../../jdl/jhipster/service-discovery-types');
39
39
  const NO_CACHE_PROVIDER = cacheProviderOptions.NO;
40
40
  const execCmd = util.promisify(ChildProcess.exec);
41
41
 
42
- let useBlueprints;
43
-
44
42
  module.exports = class extends BaseBlueprintGenerator {
45
43
  constructor(args, options, features) {
46
44
  super(args, options, features);
@@ -64,8 +62,12 @@ module.exports = class extends BaseBlueprintGenerator {
64
62
  this.randomPassword = crypto.randomBytes(20).toString('hex');
65
63
  this.herokuSkipBuild = this.options.skipBuild;
66
64
  this.herokuSkipDeploy = this.options.skipDeploy || this.options.skipBuild;
65
+ }
67
66
 
68
- useBlueprints = !this.fromBlueprint && this.instantiateBlueprints(GENERATOR_HEROKU);
67
+ async _postConstruct() {
68
+ if (!this.fromBlueprint) {
69
+ await this.composeWithBlueprints(GENERATOR_HEROKU);
70
+ }
69
71
  }
70
72
 
71
73
  _initializing() {
@@ -99,7 +101,7 @@ module.exports = class extends BaseBlueprintGenerator {
99
101
  }
100
102
 
101
103
  get initializing() {
102
- if (useBlueprints) return;
104
+ if (this.delegateToBlueprint) return {};
103
105
  return this._initializing();
104
106
  }
105
107
 
@@ -248,7 +250,7 @@ module.exports = class extends BaseBlueprintGenerator {
248
250
  }
249
251
 
250
252
  get prompting() {
251
- if (useBlueprints) return;
253
+ if (this.delegateToBlueprint) return {};
252
254
  return this._prompting();
253
255
  }
254
256
 
@@ -280,7 +282,7 @@ module.exports = class extends BaseBlueprintGenerator {
280
282
  }
281
283
 
282
284
  get configuring() {
283
- if (useBlueprints) return;
285
+ if (this.delegateToBlueprint) return {};
284
286
  return this._configuring();
285
287
  }
286
288
 
@@ -300,7 +302,7 @@ module.exports = class extends BaseBlueprintGenerator {
300
302
  }
301
303
 
302
304
  get loading() {
303
- if (useBlueprints) return;
305
+ if (this.delegateToBlueprint) return {};
304
306
  return this._loading();
305
307
  }
306
308
 
@@ -575,7 +577,7 @@ module.exports = class extends BaseBlueprintGenerator {
575
577
  }
576
578
 
577
579
  get default() {
578
- if (useBlueprints) return;
580
+ if (this.delegateToBlueprint) return {};
579
581
  return this._default();
580
582
  }
581
583
 
@@ -622,7 +624,7 @@ module.exports = class extends BaseBlueprintGenerator {
622
624
  }
623
625
 
624
626
  get writing() {
625
- if (useBlueprints) return;
627
+ if (this.delegateToBlueprint) return {};
626
628
  return this._writing();
627
629
  }
628
630
 
@@ -850,7 +852,7 @@ module.exports = class extends BaseBlueprintGenerator {
850
852
  }
851
853
 
852
854
  get end() {
853
- if (useBlueprints) return;
855
+ if (this.delegateToBlueprint) return {};
854
856
  return this._end();
855
857
  }
856
858
  };
@@ -16,7 +16,7 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
- const NODE_VERSION = '14.17.1';
19
+ const NODE_VERSION = '14.18.1';
20
20
 
21
21
  const PRETTIER_DEFAULT_INDENT = 'prettierDefaultIndent';
22
22
  const PRETTIER_DEFAULT_INDENT_DEFAULT_VALUE = 2;
@@ -57,6 +57,9 @@ function writeFiles() {
57
57
  if (!this.app.serviceDiscoveryType && this.app.authenticationType === JWT) {
58
58
  this.template('secret/jwt-secret.yml.ejs', `${appOut}/jwt-secret.yml`);
59
59
  }
60
+ if (this.app.prodDatabaseTypeCouchbase) {
61
+ this.template('secret/couchbase-secret.yml.ejs', `${appOut}/templates/couchbase-secret.yml`);
62
+ }
60
63
  if (this.monitoring === PROMETHEUS) {
61
64
  this.template('monitoring/jhipster-prometheus-sm.yml.ejs', `${appOut}/${appName}-prometheus-sm.yml`);
62
65
  }
@@ -35,11 +35,11 @@ const {
35
35
  } = require('../kubernetes-base');
36
36
  const statistics = require('../statistics');
37
37
 
38
- let useBlueprints;
39
38
  module.exports = class extends BaseDockerGenerator {
40
- constructor(args, options, features) {
41
- super(args, options, features);
42
- useBlueprints = !this.fromBlueprint && this.instantiateBlueprints(GENERATOR_KUBERNETES);
39
+ async _postConstruct() {
40
+ if (!this.fromBlueprint) {
41
+ await this.composeWithBlueprints(GENERATOR_KUBERNETES);
42
+ }
43
43
  }
44
44
 
45
45
  _initializing() {
@@ -56,7 +56,7 @@ module.exports = class extends BaseDockerGenerator {
56
56
  }
57
57
 
58
58
  get initializing() {
59
- if (useBlueprints) return;
59
+ if (this.delegateToBlueprint) return {};
60
60
  return this._initializing();
61
61
  }
62
62
 
@@ -82,7 +82,7 @@ module.exports = class extends BaseDockerGenerator {
82
82
  }
83
83
 
84
84
  get prompting() {
85
- if (useBlueprints) return;
85
+ if (this.delegateToBlueprint) return {};
86
86
  return this._prompting();
87
87
  }
88
88
 
@@ -110,7 +110,7 @@ module.exports = class extends BaseDockerGenerator {
110
110
  }
111
111
 
112
112
  get configuring() {
113
- if (useBlueprints) return;
113
+ if (this.delegateToBlueprint) return {};
114
114
  return this._configuring();
115
115
  }
116
116
 
@@ -128,7 +128,7 @@ module.exports = class extends BaseDockerGenerator {
128
128
  }
129
129
 
130
130
  get loading() {
131
- if (useBlueprints) return;
131
+ if (this.delegateToBlueprint) return {};
132
132
  return this._loading();
133
133
  }
134
134
 
@@ -137,7 +137,7 @@ module.exports = class extends BaseDockerGenerator {
137
137
  }
138
138
 
139
139
  get writing() {
140
- if (useBlueprints) return;
140
+ if (this.delegateToBlueprint) return {};
141
141
  return this._writing();
142
142
  }
143
143
 
@@ -207,7 +207,7 @@ module.exports = class extends BaseDockerGenerator {
207
207
  }
208
208
 
209
209
  get end() {
210
- if (useBlueprints) return;
210
+ if (this.delegateToBlueprint) return {};
211
211
  return this._end();
212
212
  }
213
213
  };
@@ -204,7 +204,7 @@ spec:
204
204
  apiVersion: <%= KUBERNETES_CORE_API_VERSION %>
205
205
  kind: Service
206
206
  metadata:
207
- name: <%= app.baseName.toLowerCase() %>-couchbase
207
+ name: <%= app.baseName.toLowerCase() %>-couchbase-cluster-srv
208
208
  namespace: <%= kubernetesNamespace %>
209
209
  labels:
210
210
  app: <%= app.baseName.toLowerCase() %>-couchbase
@@ -67,7 +67,7 @@ spec:
67
67
  rt=$(nc -z -w 1 <%= app.baseName.toLowerCase() %>-mongodb 27017)
68
68
  <%_ } _%>
69
69
  <%_ if (app.prodDatabaseTypeCouchbase) { _%>
70
- rt=$(nc -z -w 1 <%= app.baseName.toLowerCase() %>-couchbase 8091)
70
+ rt=$(nc -z -w 1 <%= app.baseName.toLowerCase() %>-couchbase-cluster-srv 8091)
71
71
  <%_ } _%>
72
72
  <%_ if (app.prodDatabaseTypeNeo4j) { _%>
73
73
  rt=$(nc -z -w 1 <%= app.baseName.toLowerCase() %>-neo4j 7474)
@@ -177,9 +177,14 @@ spec:
177
177
  <%_ } _%>
178
178
  <%_ if (app.prodDatabaseTypeCouchbase) { _%>
179
179
  - name: SPRING_COUCHBASE_CONNECTION_STRING
180
- value: "<% for (let i = 0; i < app.dbPeerCount; i++) { %><%= app.baseName.toLowerCase() %>-couchbase-<%= i %>.<%= app.baseName.toLowerCase() %>-couchbase<% if (i < (app.dbPeerCount-1)) { %>,<% }} %>"
181
- - name: JHIPSTER_COUCHBASE_BUCKET_NAME
180
+ value: "<%= app.baseName.toLowerCase() %>-couchbase-cluster-srv"
181
+ - name: JHIPSTER_DATABASE_COUCHBASE_BUCKET_NAME
182
182
  value: <%= app.baseName.toLowerCase() %>
183
+ - name: SPRING_COUCHBASE_BUCKET_PASSWORD
184
+ valueFrom:
185
+ secretKeyRef:
186
+ name: couchbase-secret
187
+ key: password
183
188
  <%_ } _%>
184
189
  <%_ if (app.searchEngineElasticsearch) { _%>
185
190
  - name: SPRING_ELASTICSEARCH_REST_URIS
@@ -18,7 +18,7 @@ spec:
18
18
  maxRequestsPerConnection: 10
19
19
  maxRetries: 5
20
20
  outlierDetection:
21
- consecutiveErrors: 5
21
+ consecutive5xxErrors: 5
22
22
  interval: 30s
23
23
  baseEjectionTime: 60s
24
24
  subsets:
@@ -16,7 +16,10 @@
16
16
  See the License for the specific language governing permissions and
17
17
  limitations under the License.
18
18
  -%>
19
- apiVersion: networking.istio.io/v1alpha3
19
+ # This configuration uses 'http' and is not recommended for production use.
20
+ # Refer https://istio.io/latest/docs/tasks/observability/gateways/ for a more secure 'https' config
21
+ # using a self signed certificate and prefer that for production use
22
+ apiVersion: <%= KUBERNETES_ISTIO_NETWORKING_API_VERSION %>
20
23
  kind: Gateway
21
24
  metadata:
22
25
  name: grafana-observability-gateway
@@ -38,7 +41,7 @@ spec:
38
41
  hosts:
39
42
  - grafana.istio-system.<%= ingressDomain %>
40
43
  ---
41
- apiVersion: networking.istio.io/v1alpha3
44
+ apiVersion: <%= KUBERNETES_ISTIO_NETWORKING_API_VERSION %>
42
45
  kind: VirtualService
43
46
  metadata:
44
47
  name: grafana-gw-virtualservice
@@ -16,7 +16,10 @@
16
16
  See the License for the specific language governing permissions and
17
17
  limitations under the License.
18
18
  -%>
19
- apiVersion: networking.istio.io/v1alpha3
19
+ # This configuration uses 'http' and is not recommended for production use.
20
+ # Refer https://istio.io/latest/docs/tasks/observability/gateways/ for a more secure 'https' config
21
+ # using a self signed certificate and prefer that for production use
22
+ apiVersion: <%= KUBERNETES_ISTIO_NETWORKING_API_VERSION %>
20
23
  kind: Gateway
21
24
  metadata:
22
25
  name: jhipster-grafana-gateway
@@ -38,7 +41,7 @@ spec:
38
41
  hosts:
39
42
  - jhipster-grafana.<%= kubernetesNamespace %>.<%= ingressDomain %>
40
43
  ---
41
- apiVersion: networking.istio.io/v1alpha3
44
+ apiVersion: <%= KUBERNETES_ISTIO_NETWORKING_API_VERSION %>
42
45
  kind: VirtualService
43
46
  metadata:
44
47
  name: jhipster-grafana-gw-virtualservice
@@ -16,7 +16,10 @@
16
16
  See the License for the specific language governing permissions and
17
17
  limitations under the License.
18
18
  -%>
19
- apiVersion: networking.istio.io/v1alpha3
19
+ # This configuration uses 'http' and is not recommended for production use.
20
+ # Refer https://istio.io/latest/docs/tasks/observability/gateways/ for a more secure 'https' config
21
+ # using a self signed certificate and prefer that for production use
22
+ apiVersion: <%= KUBERNETES_ISTIO_NETWORKING_API_VERSION %>
20
23
  kind: Gateway
21
24
  metadata:
22
25
  name: kiali-observability-gateway
@@ -38,7 +41,7 @@ spec:
38
41
  hosts:
39
42
  - kiali.istio-system.<%= ingressDomain %>
40
43
  ---
41
- apiVersion: networking.istio.io/v1alpha3
44
+ apiVersion: <%= KUBERNETES_ISTIO_NETWORKING_API_VERSION %>
42
45
  kind: VirtualService
43
46
  metadata:
44
47
  name: kiali-gw-virtualservice
@@ -49,9 +52,8 @@ spec:
49
52
  gateways:
50
53
  - kiali-observability-gateway
51
54
  http:
52
- - match:
53
- - uri:
54
- prefix: /
55
- route:
56
- - destination:
57
- host: kiali
55
+ - route:
56
+ - destination:
57
+ host: kiali
58
+ port:
59
+ number: 20001