generator-jhipster 8.4.0 → 8.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -4
- package/dist/cli/commands.mjs +2 -0
- package/dist/cli/environment-builder.mjs +5 -0
- package/dist/cli/program.mjs +10 -4
- package/dist/generators/angular/entity-files-angular.js +6 -7
- package/dist/generators/angular/resources/package.json +20 -20
- package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.component.spec.ts.ejs +4 -3
- package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.service.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.spec.ts.ejs +4 -5
- package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.service.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.spec.ts.ejs +6 -5
- package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.ts.ejs +3 -6
- package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.service.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.spec.ts.ejs +5 -5
- package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.ts.ejs +3 -6
- package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.service.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.spec.ts.ejs +2 -3
- package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.ts.ejs +3 -6
- package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.service.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.component.spec.ts.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.spec.ts.ejs +3 -4
- package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.component.spec.ts.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.service.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.component.spec.ts.ejs +4 -4
- package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.service.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/admin/health/modal/health-modal.component.spec.ts.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.spec.ts.ejs +4 -3
- package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.service.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/jvm-threads/jvm-threads.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.html.ejs +11 -11
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.spec.ts.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.component.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.service.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +0 -2
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.spec.ts.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.spec.ts.ejs +3 -4
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/service/user-management.service.spec.ts.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/app-page-title-strategy.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/app.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/app.config.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/config/uib-pagination.config.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/core/auth/account.service.spec.ts.ejs +7 -5
- package/dist/generators/angular/templates/src/main/webapp/app/core/auth/auth-jwt.service.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/core/auth/user-route-access.service.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/core/interceptor/auth-expired.interceptor.ts.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/core/interceptor/auth.interceptor.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/core/interceptor/error-handler.interceptor.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/core/util/alert.service.spec.ts.ejs +6 -6
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.html.ejs +0 -3
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.spec.ts.ejs +3 -4
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.spec.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.html.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.spec.ts.ejs +2 -3
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/route/_entityFile_-routing-resolve.service.spec.ts.ejs +4 -5
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/service/_entityFile_.service.spec.ts.ejs +5 -3
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.spec.ts.ejs +5 -6
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.ts.ejs +11 -17
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/error/error.component.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/active-menu.directive.ts.ejs +6 -6
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.spec.ts.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.spec.ts.ejs +3 -2
- package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.spec.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.ts.ejs +3 -4
- package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert-error.component.spec.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/shared/auth/has-any-authority.directive.spec.ts.ejs +11 -9
- package/dist/generators/angular/templates/src/main/webapp/app/shared/auth/has-any-authority.directive.ts.ejs +3 -8
- package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.component.html.ejs +6 -2
- package/dist/generators/angular/templates/src/main/webapp/app/shared/language/find-language-from-key.pipe.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/shared/language/translation.module.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort-by.directive.spec.ts.ejs +10 -10
- package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort-by.directive.ts.ejs +6 -7
- package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort.directive.spec.ts.ejs +4 -4
- package/dist/generators/angular/templates/src/main/webapp/content/scss/global.scss.ejs +2 -0
- package/dist/generators/app/generator.js +4 -13
- package/dist/generators/base/command.js +1 -0
- package/dist/generators/base/generator.js +22 -28
- package/dist/generators/base/internal/command.js +13 -0
- package/dist/generators/base/internal/index.js +1 -0
- package/dist/generators/base/priorities.js +12 -1
- package/dist/generators/base/shared-data.js +74 -2
- package/dist/generators/base/support/config.js +1 -1
- package/dist/generators/base/support/jhipster7-context.js +155 -52
- package/dist/generators/base-application/generator.js +15 -3
- package/dist/generators/base-application/priorities.js +1 -0
- package/dist/generators/base-application/support/prepare-entity.js +7 -8
- package/dist/generators/base-application/support/prepare-relationship.js +3 -2
- package/dist/generators/base-core/generator.js +132 -63
- package/dist/generators/bootstrap/generator.js +1 -1
- package/dist/generators/bootstrap/support/eslint-worker.js +14 -12
- package/dist/generators/bootstrap/support/multi-step-transform/template-file.js +6 -1
- package/dist/generators/bootstrap-application/generator.js +1 -1
- package/dist/generators/bootstrap-application-base/generator.js +7 -3
- package/dist/generators/bootstrap-application-client/generator.js +5 -1
- package/dist/generators/bootstrap-application-server/generator.js +1 -0
- package/dist/generators/ci-cd/generator.js +1 -1
- package/dist/generators/ci-cd/templates/docker-registry.yml.ejs +0 -1
- package/dist/generators/ci-cd/templates/jenkins/jenkins.yml.ejs +0 -1
- package/dist/generators/client/command.js +2 -2
- package/dist/generators/client/generator.js +2 -3
- package/dist/generators/client/generators/common/command.js +5 -0
- package/dist/generators/client/generators/common/generator.js +79 -0
- package/dist/generators/client/generators/common/index.js +20 -0
- package/dist/generators/client/generators/common/templates/src/main/webapp/app/shared/jhipster/headers.ts.ejs +57 -0
- package/dist/generators/client/generators/common/templates/src/main/webapp/app/shared/jhipster/problem-details.ts.ejs +51 -0
- package/dist/generators/client/resources/package.json +6 -6
- package/dist/generators/client/support/filter-entities.js +1 -1
- package/dist/generators/client/templates/.eslintignore.ejs +9 -5
- package/dist/generators/client/templates/README.md.jhi.client.ejs +29 -20
- package/dist/generators/client/templates/src/main/webapp/index.html.ejs +1 -1
- package/dist/generators/common/generator.js +5 -0
- package/dist/generators/common/resources/package.json +2 -2
- package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/login-page.cy.ts.ejs +4 -4
- package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/password-page.cy.ts.ejs +2 -2
- package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/register-page.cy.ts.ejs +1 -1
- package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/reset-password-page.cy.ts.ejs +1 -1
- package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/entity/_entity_.cy.ts.ejs +10 -10
- package/dist/generators/docker/templates/docker/keycloak.yml.ejs +2 -1
- package/dist/generators/docker/templates/docker/mariadb.yml.ejs +1 -1
- package/dist/generators/docker/templates/docker/mysql.yml.ejs +1 -2
- package/dist/generators/docker/templates/docker/realm-config/jhipster-realm.json.ejs +14 -3
- package/dist/generators/docker/templates/docker/realm-config/keycloak-health-check.sh +2 -2
- package/dist/generators/docker-compose/templates/docker-compose.yml.ejs +1 -0
- package/dist/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +14 -3
- package/dist/generators/docker-compose/templates/realm-config/keycloak-health-check.sh +2 -2
- package/dist/generators/entity/generator.js +2 -10
- package/dist/generators/entity/prompts.js +6 -11
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/AuthorizationHeaderUtil.java.ejs +1 -1
- package/dist/generators/gatling/README.md +15 -0
- package/dist/generators/gatling/generator.js +0 -1
- package/dist/generators/gatling/templates/src/test/java/gatling/simulations/_entityClass_GatlingTest.java.ejs +2 -10
- package/dist/generators/generate-blueprint/command.js +16 -0
- package/dist/generators/generate-blueprint/files.js +11 -1
- package/dist/generators/generate-blueprint/generator.js +34 -17
- package/dist/generators/generate-blueprint/resources/package.json +3 -1
- package/dist/generators/generate-blueprint/templates/.blueprint/cli/commands.mjs.ejs +6 -0
- package/dist/generators/generate-blueprint/templates/.blueprint/generate-sample/command.mjs.ejs +20 -0
- package/dist/generators/generate-blueprint/templates/.blueprint/generate-sample/generator.mjs.ejs +9 -13
- package/dist/generators/generate-blueprint/templates/.blueprint/github-build-matrix/build-matrix.mjs.ejs +22 -0
- package/dist/generators/generate-blueprint/templates/.blueprint/github-build-matrix/generator.mjs.ejs +20 -0
- package/dist/generators/generate-blueprint/templates/.blueprint/github-build-matrix/index.mjs.ejs +1 -0
- package/dist/generators/generate-blueprint/templates/.github/workflows/build-cache.yml.ejs +39 -0
- package/dist/generators/generate-blueprint/templates/.github/workflows/samples.yml.ejs +105 -0
- package/dist/generators/generate-blueprint/templates/.prettierignore.jhi.blueprint.ejs +1 -1
- package/dist/generators/generate-blueprint/templates/README.md.ejs +16 -8
- package/dist/generators/generate-blueprint/templates/eslint.config.js.ejs +33 -0
- package/dist/generators/generate-blueprint/templates/vitest.config.ts.ejs +1 -0
- package/dist/generators/generator-constants.js +2 -2
- package/dist/generators/gradle/templates/gradle/wrapper/gradle-wrapper.properties +1 -1
- package/dist/generators/heroku/generator.js +1 -1
- package/dist/generators/info/generator.js +1 -3
- package/dist/generators/info/support/extract-info.js +60 -0
- package/dist/generators/info/support/index.js +1 -0
- package/dist/generators/init/generator.js +2 -2
- package/dist/generators/init/resources/.node-version +1 -1
- package/dist/generators/init/resources/package.json +2 -2
- package/dist/generators/java/generators/bootstrap/generator.js +9 -2
- package/dist/generators/java/generators/build-tool/command.js +6 -3
- package/dist/generators/java/generators/domain/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.ejs +1 -5
- package/dist/generators/java/generators/domain/templates/src/test/java/_package_/_entityPackage_/domain/_persistClass_Asserts.java.ejs +3 -3
- package/dist/generators/java/generators/domain/templates/src/test/java/_package_/_entityPackage_/domain/_persistClass_Test.java.ejs +3 -3
- package/dist/generators/java/generators/node/templates/npmw +1 -5
- package/dist/generators/java/support/add-java-annotation.js +28 -7
- package/dist/generators/java/support/generated-annotation-transform.js +1 -1
- package/dist/generators/java/support/index.js +1 -1
- package/dist/generators/jdl/generator.js +7 -7
- package/dist/generators/kubernetes/files.js +1 -1
- package/dist/generators/kubernetes/templates/db/mysql.yml.ejs +1 -1
- package/dist/generators/kubernetes/templates/keycloak/keycloak-configmap.yml.ejs +14 -3
- package/dist/generators/languages/generator.js +5 -2
- package/dist/generators/liquibase/templates/src/main/java/_package_/config/LiquibaseConfiguration.java.ejs +1 -1
- package/dist/generators/maven/command.js +15 -0
- package/dist/generators/maven/generator.js +6 -1
- package/dist/generators/maven/index.js +1 -0
- package/dist/generators/maven/internal/xml-store.js +7 -6
- package/dist/generators/maven/support/pom-store.js +24 -9
- package/dist/generators/maven/templates/.mvn/wrapper/maven-wrapper.properties +2 -2
- package/dist/generators/maven/templates/mvnw +185 -243
- package/dist/generators/maven/templates/mvnw.cmd +121 -180
- package/dist/generators/react/entity-files-react.js +7 -7
- package/dist/generators/react/generator.js +10 -0
- package/dist/generators/react/resources/package.json +28 -28
- package/dist/generators/react/templates/src/main/webapp/app/app.tsx.ejs +9 -0
- package/dist/generators/react/templates/src/main/webapp/app/config/axios-interceptor.spec.ts.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/config/axios-interceptor.ts.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/config/notification-middleware.spec.ts.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/config/notification-middleware.ts.ejs +80 -87
- package/dist/generators/react/templates/src/main/webapp/app/config/store.ts.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/config/translation.ts.ejs +4 -0
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.tsx.ejs +3 -3
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.reducer.ts.ejs +12 -7
- package/dist/generators/react/templates/src/main/webapp/app/modules/home/home.tsx.ejs +15 -1
- package/dist/generators/react/templates/src/main/webapp/app/modules/login/login-redirect.tsx.ejs +4 -0
- package/dist/generators/react/templates/src/main/webapp/app/modules/login/logout.tsx.ejs +5 -3
- package/dist/generators/react/templates/src/main/webapp/app/routes.tsx.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/shared/auth/private-route.spec.tsx.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/shared/auth/private-route.tsx.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/shared/layout/header/header.tsx.ejs +0 -9
- package/dist/generators/react/templates/src/main/webapp/app/shared/layout/menus/account.spec.tsx.ejs +1 -3
- package/dist/generators/react/templates/src/main/webapp/app/shared/layout/menus/account.tsx.ejs +29 -6
- package/dist/generators/react/templates/src/main/webapp/app/shared/reducers/reducer.utils.ts.ejs +2 -3
- package/dist/generators/react/templates/src/main/webapp/app/shared/util/url-utils.ts.ejs +1 -1
- package/dist/generators/server/command.js +0 -11
- package/dist/generators/server/generator.js +16 -75
- package/dist/generators/server/jdl/application-definition.js +3 -1
- package/dist/generators/server/resources/Dockerfile +13 -13
- package/dist/generators/server/resources/gradle/libs.versions.toml +9 -7
- package/dist/generators/server/resources/pom.xml +16 -16
- package/dist/generators/server/support/config.js +4 -8
- package/dist/generators/server/support/prepare-entity.js +5 -6
- package/dist/generators/server/support/relationship.js +5 -2
- package/dist/generators/server/templates/build.gradle.ejs +5 -3
- package/dist/generators/server/templates/gradle/profile_dev.gradle.ejs +2 -1
- package/dist/generators/server/templates/gradle/profile_prod.gradle.ejs +2 -1
- package/dist/generators/server/templates/gradle.properties.ejs +1 -1
- package/dist/generators/server/templates/pom.xml.ejs +7 -31
- package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/service/dto/_dtoClass_.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/config/AsyncConfiguration.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/config/Constants.java.ejs +0 -2
- package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_imperative.java.ejs +1 -18
- package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_reactive.java.ejs +1 -15
- package/dist/generators/server/templates/src/main/java/_package_/config/SecurityJwtConfiguration.java.ejs +1 -21
- package/dist/generators/server/templates/src/main/java/_package_/config/WebConfigurer.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/security/DomainUserDetailsService.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/security/PersistentTokenRememberMeServices.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/security/SecurityUtils.java.ejs +65 -5
- package/dist/generators/server/templates/src/main/java/_package_/security/oauth2/AudienceValidator.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/service/MailService.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/service/dto/UserDTO.java.ejs +34 -0
- package/dist/generators/server/templates/src/main/java/_package_/service/mapper/UserMapper.java.ejs +8 -4
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/AccountResource.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/AccountResource_oauth2.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/AccountResource_skipUserManagement.java.ejs +44 -10
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/AuthenticateController.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/resources/config/application-dev.yml.ejs +1 -1
- package/dist/generators/server/templates/src/main/resources/config/application.yml.ejs +60 -22
- package/dist/generators/server/templates/src/main/resources/config/bootstrap.yml.ejs +1 -1
- package/dist/generators/server/templates/src/main/resources/swagger/api.yml.ejs +1 -1
- package/dist/generators/server/templates/src/test/java/_package_/security/DomainUserDetailsServiceIT.java.ejs +31 -13
- package/dist/generators/server/templates/src/test/java/_package_/service/mapper/UserMapperTest.java.ejs +84 -17
- package/dist/generators/server/templates/src/test/java/_package_/web/rest/AccountResourceIT.java.ejs +62 -6
- package/dist/generators/server/templates/src/test/java/_package_/web/rest/AccountResourceIT_oauth2.java.ejs +22 -0
- package/dist/generators/server/templates/src/test/resources/config/application.yml.ejs +20 -10
- package/dist/generators/spring-boot/command.js +117 -6
- package/dist/generators/spring-boot/files.js +0 -5
- package/dist/generators/spring-boot/generator.js +44 -9
- package/dist/generators/spring-boot/prompts.js +6 -70
- package/dist/generators/spring-boot/resources/spring-boot-dependencies.pom +374 -582
- package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/service/UserService.java.ejs +1 -1
- package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/service/_entityClass_QueryService.java.ejs +1 -1
- package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/service/impl/_entityClass_ServiceImpl.java.ejs +1 -1
- package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/web/rest/PublicUserResource.java.ejs +1 -1
- package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/web/rest/UserResource.java.ejs +1 -1
- package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/web/rest/_entityClass_Resource.java.ejs +1 -1
- package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/service/UserServiceIT.java.ejs +47 -11
- package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/PublicUserResourceIT.java.ejs +60 -24
- package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/UserResourceIT.java.ejs +195 -318
- package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs +58 -51
- package/dist/generators/spring-cache/internal/dependencies.js +2 -2
- package/dist/generators/spring-cache/resources/gradle/libs.versions.toml +1 -1
- package/dist/generators/spring-cache/templates/src/main/java/_package_/config/CacheConfiguration.java.ejs +3 -3
- package/dist/generators/spring-cloud/generators/gateway/command.js +10 -1
- package/dist/generators/spring-cloud/generators/gateway/generator.js +13 -0
- package/dist/generators/spring-cloud/generators/gateway/jdl/jdl-routes-option.js +6 -0
- package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/main/java/_package_/broker/KafkaConsumer_imperative.java.ejs +1 -1
- package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/main/java/_package_/broker/KafkaConsumer_reactive.java.ejs +1 -1
- package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/main/java/_package_/web/rest/KafkaResource_imperative.java.ejs +1 -1
- package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/main/java/_package_/web/rest/KafkaResource_reactive.java.ejs +1 -1
- package/dist/generators/spring-data-cassandra/generator.js +2 -2
- package/dist/generators/spring-data-couchbase/templates/src/main/java/_package_/config/DatabaseConfiguration.java.ejs +1 -1
- package/dist/generators/spring-data-neo4j/templates/src/main/java/_package_/config/DatabaseConfiguration.java_neo4j.ejs +18 -2
- package/dist/generators/spring-data-relational/templates/src/main/java/_package_/config/DatabaseConfiguration.java.ejs +1 -1
- package/dist/generators/spring-data-relational/templates/src/test/java/_package_/config/SqlTestContainersSpringContextCustomizerFactory.java.ejs +3 -1
- package/dist/generators/vue/entity-files-vue.js +7 -7
- package/dist/generators/vue/resources/package.json +21 -21
- package/dist/generators/vue/templates/.eslintrc.cjs.ejs +7 -0
- package/dist/generators/vue/templates/src/main/webapp/app/admin/tracker/tracker.service.spec.ts.ejs +1 -1
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-details.vue.ejs +1 -1
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.vue.ejs +1 -1
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.vue.ejs +1 -1
- package/dist/generators/vue/templates/src/main/webapp/app/shared/alert/alert.service.spec.ts.ejs +8 -8
- package/dist/generators/vue/templates/src/main/webapp/app/shared/data/data-utils.service.spec.ts.ejs +1 -1
- package/dist/generators/vue/templates/tsconfig.app.json.ejs +1 -1
- package/dist/generators/vue/templates/vite.config.mts.ejs +5 -4
- package/dist/jdl/converters/jdl-to-json/jdl-to-json-basic-entity-converter.js +1 -1
- package/dist/jdl/converters/jdl-to-json/jdl-to-json-field-converter.js +4 -4
- package/dist/jdl/converters/jdl-to-json/jdl-with-applications-to-json-converter.js +9 -9
- package/dist/jdl/converters/jdl-to-json/jdl-without-application-to-json-converter.js +2 -2
- package/dist/jdl/converters/json-to-jdl-application-converter.js +1 -1
- package/dist/jdl/converters/json-to-jdl-converter.js +6 -5
- package/dist/jdl/converters/json-to-jdl-entity-converter.js +14 -14
- package/dist/jdl/converters/json-to-jdl-option-converter.js +1 -2
- package/dist/jdl/converters/parsed-jdl-to-jdl-object/application-converter.js +1 -1
- package/dist/jdl/converters/parsed-jdl-to-jdl-object/option-converter.js +2 -2
- package/dist/jdl/converters/parsed-jdl-to-jdl-object/parsed-jdl-to-jdl-object-converter.js +7 -6
- package/dist/jdl/converters/parsed-jdl-to-jdl-object/validation-converter.js +1 -1
- package/dist/jdl/exporters/applications/jhipster-application-formatter.js +16 -23
- package/dist/jdl/exporters/config.js +1 -0
- package/dist/jdl/exporters/jhipster-deployment-exporter.js +5 -5
- package/dist/jdl/exporters/jhipster-entity-exporter.js +1 -1
- package/dist/jdl/jdl-importer.js +22 -20
- package/dist/jdl/jhipster/binary-options.js +12 -8
- package/dist/jdl/jhipster/json-entity.js +1 -1
- package/dist/jdl/models/abstract-jdl-option.js +2 -2
- package/dist/jdl/models/jdl-application-configuration-factory.js +2 -0
- package/dist/jdl/models/jdl-binary-option.js +2 -2
- package/dist/jdl/models/jdl-deployment.js +11 -0
- package/dist/jdl/models/jdl-entity.js +1 -1
- package/dist/jdl/models/jdl-enum.js +1 -1
- package/dist/jdl/models/jdl-enums.js +0 -18
- package/dist/jdl/models/jdl-field.js +2 -2
- package/dist/jdl/models/jdl-object-wrapper.js +1 -0
- package/dist/jdl/models/jdl-object.js +23 -45
- package/dist/jdl/models/jdl-options.js +0 -18
- package/dist/jdl/models/jdl-relationships.js +8 -16
- package/dist/jdl/models/jdl-unary-option.js +1 -1
- package/dist/jdl/models/list-jdl-application-configuration-option.js +5 -2
- package/dist/jdl/parsing/jdl-ast-builder-visitor.js +12 -0
- package/dist/jdl/parsing/jdl-parser.js +14 -0
- package/dist/jdl/parsing/lexer/lexer.js +17 -11
- package/dist/jdl/parsing/validator.js +16 -2
- package/dist/jdl/readers/json-reader.js +1 -1
- package/dist/jdl/utils/array-utils.js +6 -0
- package/dist/jdl/utils/set-utils.js +3 -2
- package/dist/jdl/validators/jdl-without-application-validator.js +2 -2
- package/dist/lib/eslint/base.js +25 -0
- package/dist/lib/eslint/recommended.js +22 -0
- package/dist/testing/github.js +32 -0
- package/dist/testing/helpers.js +13 -0
- package/dist/testing/index.js +2 -0
- package/dist/testing/sample-config.js +31 -0
- package/dist/types/cli/commands.d.mts +2 -0
- package/dist/types/cli/environment-builder.d.mts +1 -0
- package/dist/types/generators/base/api.d.ts +19 -8
- package/dist/types/generators/base/generator.d.ts +10 -4
- package/dist/types/generators/base/internal/command.d.ts +2 -0
- package/dist/types/generators/base/internal/index.d.ts +1 -0
- package/dist/types/generators/base/priorities.d.ts +4 -0
- package/dist/types/generators/base/shared-data.d.ts +11 -2
- package/dist/types/generators/base/types.d.ts +12 -0
- package/dist/types/generators/base-application/priorities.d.ts +2 -0
- package/dist/types/generators/base-application/support/entity.d.ts +2 -2
- package/dist/types/generators/base-application/support/prepare-entity.d.ts +3 -3
- package/dist/types/generators/base-application/support/relationship.d.ts +5 -5
- package/dist/types/generators/base-application/types.d.ts +11 -0
- package/dist/types/generators/base-core/generator.d.ts +18 -2
- package/dist/types/generators/generator-constants.d.ts +1 -1
- package/dist/types/generators/info/support/extract-info.d.ts +14 -0
- package/dist/types/generators/info/support/index.d.ts +1 -0
- package/dist/types/generators/java/support/add-java-annotation.d.ts +10 -20
- package/dist/types/generators/java/support/doc.d.ts +1 -1
- package/dist/types/generators/java/support/index.d.ts +1 -1
- package/dist/types/generators/java/types.d.ts +12 -0
- package/dist/types/generators/maven/internal/xml-store.d.ts +3 -2
- package/dist/types/generators/maven/support/pom-store.d.ts +5 -2
- package/dist/types/generators/maven/types.d.ts +1 -0
- package/dist/types/generators/server/support/relationship.d.ts +2 -2
- package/dist/types/generators/server/types.d.ts +7 -1
- package/dist/types/generators/spring-cloud/generators/gateway/jdl/jdl-routes-option.d.ts +2 -0
- package/dist/types/generators/spring-cloud/generators/gateway/types.d.ts +4 -0
- package/dist/types/jdl/converters/jdl-to-json/jdl-to-json-field-converter.d.ts +2 -2
- package/dist/types/jdl/converters/jdl-to-json/jdl-with-applications-to-json-converter.d.ts +2 -1
- package/dist/types/jdl/converters/jdl-to-json/jdl-without-application-to-json-converter.d.ts +3 -1
- package/dist/types/jdl/converters/json-to-jdl-application-converter.d.ts +9 -2
- package/dist/types/jdl/converters/json-to-jdl-converter.d.ts +3 -3
- package/dist/types/jdl/converters/json-to-jdl-entity-converter.d.ts +2 -4
- package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/application-converter.d.ts +3 -1
- package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/deployment-converter.d.ts +2 -1
- package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/entity-converter.d.ts +3 -1
- package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/enum-converter.d.ts +2 -1
- package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/field-converter.d.ts +2 -1
- package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/option-converter.d.ts +3 -3
- package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/parsed-jdl-to-jdl-object-converter.d.ts +2 -1
- package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/relationship-converter.d.ts +2 -1
- package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/types.d.ts +110 -0
- package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/validation-converter.d.ts +2 -1
- package/dist/types/jdl/converters/types.d.ts +102 -14
- package/dist/types/jdl/exporters/applications/jhipster-application-formatter.d.ts +4 -4
- package/dist/types/jdl/exporters/config.d.ts +2 -1
- package/dist/types/jdl/exporters/export-utils.d.ts +2 -1
- package/dist/types/jdl/exporters/jdl-exporter.d.ts +2 -1
- package/dist/types/jdl/exporters/jhipster-deployment-exporter.d.ts +3 -1
- package/dist/types/jdl/exporters/jhipster-entity-exporter.d.ts +3 -1
- package/dist/types/jdl/exporters/types.d.ts +61 -0
- package/dist/types/jdl/jhipster/binary-options.d.ts +8 -26
- package/dist/types/jdl/jhipster/field-types.d.ts +2 -2
- package/dist/types/jdl/jhipster/json-entity.d.ts +2 -2
- package/dist/types/jdl/models/abstract-jdl-option.d.ts +14 -9
- package/dist/types/jdl/models/boolean-jdl-application-configuration-option.d.ts +1 -1
- package/dist/types/jdl/models/integer-jdl-application-configuration-option.d.ts +1 -1
- package/dist/types/jdl/models/jdl-application-configuration-factory.d.ts +1 -1
- package/dist/types/jdl/models/jdl-application-configuration-option.d.ts +4 -4
- package/dist/types/jdl/models/jdl-application-configuration.d.ts +4 -4
- package/dist/types/jdl/models/jdl-application-definition.d.ts +4 -4
- package/dist/types/jdl/models/jdl-application-entities.d.ts +4 -4
- package/dist/types/jdl/models/jdl-application.d.ts +16 -13
- package/dist/types/jdl/models/jdl-binary-option.d.ts +5 -3
- package/dist/types/jdl/models/jdl-deployment.d.ts +13 -1
- package/dist/types/jdl/models/jdl-entity.d.ts +5 -5
- package/dist/types/jdl/models/jdl-enum-value.d.ts +4 -4
- package/dist/types/jdl/models/jdl-enum.d.ts +9 -5
- package/dist/types/jdl/models/jdl-enums.d.ts +6 -5
- package/dist/types/jdl/models/jdl-field.d.ts +10 -8
- package/dist/types/jdl/models/jdl-object-wrapper.d.ts +25 -0
- package/dist/types/jdl/models/jdl-object.d.ts +23 -19
- package/dist/types/jdl/models/jdl-options.d.ts +7 -24
- package/dist/types/jdl/models/jdl-relationship.d.ts +16 -10
- package/dist/types/jdl/models/jdl-relationships.d.ts +5 -5
- package/dist/types/jdl/models/jdl-validation.d.ts +3 -3
- package/dist/types/jdl/models/list-jdl-application-configuration-option.d.ts +4 -3
- package/dist/types/jdl/models/string-jdl-application-configuration-option.d.ts +2 -2
- package/dist/types/jdl/parsing/jdl-ast-builder-visitor.d.ts +1 -0
- package/dist/types/jdl/parsing/jdl-parser.d.ts +1 -0
- package/dist/types/jdl/parsing/jdl-parsing-types.d.ts +23 -0
- package/dist/types/jdl/parsing/lexer/lexer.d.ts +6 -2
- package/dist/types/jdl/parsing/validator.d.ts +1 -1
- package/dist/types/jdl/utils/array-utils.d.ts +1 -0
- package/dist/types/jdl/utils/set-utils.d.ts +1 -19
- package/dist/types/jdl/validators/deployment-validator.d.ts +2 -1
- package/dist/types/lib/eslint/base.d.ts +20 -0
- package/dist/types/lib/eslint/recommended.d.ts +20 -0
- package/dist/types/testing/github.d.ts +11 -0
- package/dist/types/testing/helpers.d.ts +21 -3
- package/dist/types/testing/index.d.ts +2 -0
- package/dist/types/testing/sample-config.d.ts +4 -0
- package/package.json +35 -30
- package/dist/generators/generate-blueprint/templates/.eslintrc.json.ejs +0 -35
- /package/dist/jdl/converters/{types.js → parsed-jdl-to-jdl-object/types.js} +0 -0
|
@@ -271,7 +271,7 @@ export default class BaseApplicationGenerator extends BaseGenerator {
|
|
|
271
271
|
if ([PREPARING, LOADING].includes(priorityName)) {
|
|
272
272
|
return {
|
|
273
273
|
application,
|
|
274
|
-
applicationDefaults: data => mutateData(application, data),
|
|
274
|
+
applicationDefaults: data => mutateData(application, { __override__: false, ...data }),
|
|
275
275
|
};
|
|
276
276
|
}
|
|
277
277
|
if (LOADING_ENTITIES === priorityName) {
|
|
@@ -448,6 +448,8 @@ export default class BaseApplicationGenerator extends BaseGenerator {
|
|
|
448
448
|
taskName: 'queueConfiguringEachEntity',
|
|
449
449
|
cancellable: true,
|
|
450
450
|
method: () => {
|
|
451
|
+
if (this.options.skipPriorities?.includes(CONFIGURING_EACH_ENTITY))
|
|
452
|
+
return;
|
|
451
453
|
this.log.debug(`Queueing entity tasks ${CONFIGURING_EACH_ENTITY}`);
|
|
452
454
|
const tasks = this.extractTasksFromPriority(CONFIGURING_EACH_ENTITY, { skip: false });
|
|
453
455
|
this.getEntitiesDataToConfigure().forEach(({ entityName, entityStorage, entityConfig }) => {
|
|
@@ -467,6 +469,8 @@ export default class BaseApplicationGenerator extends BaseGenerator {
|
|
|
467
469
|
taskName: 'queueLoadingEntities',
|
|
468
470
|
cancellable: true,
|
|
469
471
|
method: () => {
|
|
472
|
+
if (this.options.skipPriorities?.includes(LOADING_ENTITIES))
|
|
473
|
+
return;
|
|
470
474
|
this.log.debug(`Queueing entity tasks ${LOADING_ENTITIES}`);
|
|
471
475
|
const tasks = this.extractTasksFromPriority(LOADING_ENTITIES, { skip: false });
|
|
472
476
|
this.log.debug(`Queueing entity tasks ${LOADING_ENTITIES}`);
|
|
@@ -484,6 +488,8 @@ export default class BaseApplicationGenerator extends BaseGenerator {
|
|
|
484
488
|
taskName: 'queuePreparingEachEntity',
|
|
485
489
|
cancellable: true,
|
|
486
490
|
method: () => {
|
|
491
|
+
if (this.options.skipPriorities?.includes(PREPARING_EACH_ENTITY))
|
|
492
|
+
return;
|
|
487
493
|
this.log.debug(`Queueing entity tasks ${PREPARING_EACH_ENTITY}`);
|
|
488
494
|
const tasks = this.extractTasksFromPriority(PREPARING_EACH_ENTITY, { skip: false });
|
|
489
495
|
this.getEntitiesDataToPrepare().forEach(({ description, ...data }) => {
|
|
@@ -503,6 +509,8 @@ export default class BaseApplicationGenerator extends BaseGenerator {
|
|
|
503
509
|
taskName: 'queuePreparingEachEntityField',
|
|
504
510
|
cancellable: true,
|
|
505
511
|
method: () => {
|
|
512
|
+
if (this.options.skipPriorities?.includes(PREPARING_EACH_ENTITY_FIELD))
|
|
513
|
+
return;
|
|
506
514
|
const tasks = this.extractTasksFromPriority(PREPARING_EACH_ENTITY_FIELD, { skip: false });
|
|
507
515
|
this.getEntitiesFieldsDataToPrepare().forEach(({ description, ...data }) => {
|
|
508
516
|
this.log.debug(`Queueing entity tasks ${PREPARING_EACH_ENTITY_FIELD} for ${description}`);
|
|
@@ -521,6 +529,8 @@ export default class BaseApplicationGenerator extends BaseGenerator {
|
|
|
521
529
|
taskName: 'queuePreparingEachEntityRelationship',
|
|
522
530
|
cancellable: true,
|
|
523
531
|
method: () => {
|
|
532
|
+
if (this.options.skipPriorities?.includes(PREPARING_EACH_ENTITY_RELATIONSHIP))
|
|
533
|
+
return;
|
|
524
534
|
const tasks = this.extractTasksFromPriority(PREPARING_EACH_ENTITY_RELATIONSHIP, { skip: false });
|
|
525
535
|
this.getEntitiesRelationshipsDataToPrepare().forEach(({ description, ...data }) => {
|
|
526
536
|
this.log.debug(`Queueing entity tasks ${PREPARING_EACH_ENTITY_RELATIONSHIP} for ${description}`);
|
|
@@ -539,6 +549,8 @@ export default class BaseApplicationGenerator extends BaseGenerator {
|
|
|
539
549
|
taskName: 'queuePostPreparingEachEntity',
|
|
540
550
|
cancellable: true,
|
|
541
551
|
method: () => {
|
|
552
|
+
if (this.options.skipPriorities?.includes(POST_PREPARING_EACH_ENTITY))
|
|
553
|
+
return;
|
|
542
554
|
const tasks = this.extractTasksFromPriority(POST_PREPARING_EACH_ENTITY, { skip: false });
|
|
543
555
|
this.getEntitiesDataToPostPrepare().forEach(({ description, ...data }) => {
|
|
544
556
|
this.log.debug(`Queueing entity tasks ${POST_PREPARING_EACH_ENTITY} for ${description}`);
|
|
@@ -557,7 +569,7 @@ export default class BaseApplicationGenerator extends BaseGenerator {
|
|
|
557
569
|
taskName: 'queueWritingEachEntity',
|
|
558
570
|
cancellable: true,
|
|
559
571
|
method: () => {
|
|
560
|
-
if (this.options.skipWriting)
|
|
572
|
+
if (this.options.skipWriting || this.options.skipPriorities?.includes(WRITING_ENTITIES))
|
|
561
573
|
return;
|
|
562
574
|
const tasks = this.extractTasksFromPriority(WRITING_ENTITIES, { skip: false });
|
|
563
575
|
const args = this.getArgsForPriority(WRITING_ENTITIES);
|
|
@@ -574,7 +586,7 @@ export default class BaseApplicationGenerator extends BaseGenerator {
|
|
|
574
586
|
taskName: 'queuePostWritingEachEntity',
|
|
575
587
|
cancellable: true,
|
|
576
588
|
method: () => {
|
|
577
|
-
if (this.options.skipWriting)
|
|
589
|
+
if (this.options.skipWriting || this.options.skipPriorities?.includes(POST_WRITING_ENTITIES))
|
|
578
590
|
return;
|
|
579
591
|
const tasks = this.extractTasksFromPriority(POST_WRITING_ENTITIES, { skip: false });
|
|
580
592
|
const args = this.getArgsForPriority(POST_WRITING_ENTITIES);
|
|
@@ -126,6 +126,7 @@ export const PRIORITY_NAMES_LIST = [
|
|
|
126
126
|
PRIORITY_NAMES.PROMPTING,
|
|
127
127
|
PRIORITY_NAMES.CONFIGURING,
|
|
128
128
|
PRIORITY_NAMES.COMPOSING,
|
|
129
|
+
PRIORITY_NAMES.COMPOSING_COMPONENT,
|
|
129
130
|
PRIORITY_NAMES.LOADING,
|
|
130
131
|
PRIORITY_NAMES.PREPARING,
|
|
131
132
|
CONFIGURING_EACH_ENTITY,
|
|
@@ -22,12 +22,11 @@ import { getDatabaseTypeData, hibernateSnakeCase } from '../../server/support/in
|
|
|
22
22
|
import { createFaker, parseChangelog, stringHashCode, upperFirstCamelCase, getMicroserviceAppName, mutateData, } from '../../base/support/index.js';
|
|
23
23
|
import { fieldToReference } from './prepare-field.js';
|
|
24
24
|
import { getTypescriptKeyType, getEntityParentPathAddition } from '../../client/support/index.js';
|
|
25
|
-
import { applicationTypes,
|
|
25
|
+
import { applicationTypes, binaryOptions, databaseTypes, entityOptions, fieldTypes, searchEngineTypes, } from '../../../jdl/jhipster/index.js';
|
|
26
26
|
import { fieldIsEnum } from './field-utils.js';
|
|
27
27
|
const NO_SEARCH_ENGINE = searchEngineTypes.NO;
|
|
28
28
|
const { PaginationTypes, ServiceTypes, MapperTypes } = entityOptions;
|
|
29
29
|
const { GATEWAY, MICROSERVICE } = applicationTypes;
|
|
30
|
-
const { OAUTH2 } = authenticationTypes;
|
|
31
30
|
const { CommonDBTypes } = fieldTypes;
|
|
32
31
|
const { BOOLEAN, LONG, STRING, UUID, INTEGER } = CommonDBTypes;
|
|
33
32
|
const { NO: NO_DTO, MAPSTRUCT } = MapperTypes;
|
|
@@ -191,10 +190,16 @@ export default function prepareEntity(entityWithConfig, generator, application)
|
|
|
191
190
|
? `${entityWithConfig.clientRootFolder}-${entityWithConfig.entityStateName}`
|
|
192
191
|
: entityWithConfig.entityStateName);
|
|
193
192
|
mutateData(entityWithConfig, {
|
|
193
|
+
__override__: false,
|
|
194
194
|
i18nKeyPrefix: data => data.i18nKeyPrefix ?? `${data.frontendAppName}.${data.entityTranslationKey}`,
|
|
195
195
|
i18nAlertHeaderPrefix: data => data.i18nAlertHeaderPrefix ?? data.microserviceAppName
|
|
196
196
|
? `${data.microserviceAppName}.${data.entityTranslationKey}`
|
|
197
197
|
: data.i18nKeyPrefix,
|
|
198
|
+
hasRelationshipWithBuiltInUser: ({ relationships }) => relationships.some(relationship => relationship.otherEntity.builtInUser),
|
|
199
|
+
saveUserSnapshot: ({ hasRelationshipWithBuiltInUser, dto }) => application.applicationTypeMicroservice &&
|
|
200
|
+
application.authenticationTypeOauth2 &&
|
|
201
|
+
hasRelationshipWithBuiltInUser &&
|
|
202
|
+
dto === NO_MAPPER,
|
|
198
203
|
});
|
|
199
204
|
const { microserviceName, entityFileName, microfrontend } = entityWithConfig;
|
|
200
205
|
entityWithConfig.entityApi = microserviceName ? `services/${microserviceName.toLowerCase()}/` : '';
|
|
@@ -203,12 +208,6 @@ export default function prepareEntity(entityWithConfig, generator, application)
|
|
|
203
208
|
(microfrontend && microserviceName && entityWithConfig.applicationType === MICROSERVICE
|
|
204
209
|
? `${microserviceName.toLowerCase()}/${entityFileName}`
|
|
205
210
|
: `${entityFileName}`);
|
|
206
|
-
const hasBuiltInUserField = entityWithConfig.relationships.some(relationship => relationship.otherEntity.builtInUser);
|
|
207
|
-
entityWithConfig.saveUserSnapshot =
|
|
208
|
-
application.applicationType === MICROSERVICE &&
|
|
209
|
-
application.authenticationType === OAUTH2 &&
|
|
210
|
-
hasBuiltInUserField &&
|
|
211
|
-
entityWithConfig.dto === NO_MAPPER;
|
|
212
211
|
entityWithConfig.generateFakeData = type => {
|
|
213
212
|
const fieldsToGenerate = type === 'cypress' ? entityWithConfig.fields.filter(field => !field.id || !field.autoGenerate) : entityWithConfig.fields;
|
|
214
213
|
const fieldEntries = fieldsToGenerate.map(field => {
|
|
@@ -71,9 +71,9 @@ export default function prepareRelationship(entityWithConfig, relationship, gene
|
|
|
71
71
|
otherEntityNameCapitalized: upperFirst(otherEntityName),
|
|
72
72
|
// let ownerSide true when type is 'many-to-one' for convenience.
|
|
73
73
|
// means that this side should control the reference.
|
|
74
|
-
ownerSide: relationshipManyToOne || (relationshipLeftSide && !relationshipOneToMany),
|
|
74
|
+
ownerSide: relationship.otherEntity.embedded || relationshipManyToOne || (relationshipLeftSide && !relationshipOneToMany),
|
|
75
75
|
persistableRelationship: ({ ownerSide }) => ownerSide,
|
|
76
|
-
relationshipUpdateBackReference: ({ ownerSide, relationshipRightSide }) => entityWithConfig.databaseType ===
|
|
76
|
+
relationshipUpdateBackReference: ({ ownerSide, relationshipRightSide, otherEntity }) => !otherEntity.embedded && (entityWithConfig.databaseType === NEO4J ? relationshipRightSide : !ownerSide),
|
|
77
77
|
// DB properties
|
|
78
78
|
columnName: hibernateSnakeCase(relationshipName),
|
|
79
79
|
columnNamePrefix: relationship.id && relationshipOneToOne ? '' : `${hibernateSnakeCase(relationshipName)}_`,
|
|
@@ -94,6 +94,7 @@ export default function prepareRelationship(entityWithConfig, relationship, gene
|
|
|
94
94
|
relationship.otherSideReferenceExists = true;
|
|
95
95
|
}
|
|
96
96
|
else if (!ignoreMissingRequiredRelationship &&
|
|
97
|
+
!relationship.otherEntity.embedded &&
|
|
97
98
|
!relationship.relationshipIgnoreBackReference &&
|
|
98
99
|
entityWithConfig.databaseType !== NEO4J &&
|
|
99
100
|
entityWithConfig.databaseType !== DATABASE_NO &&
|
|
@@ -25,14 +25,14 @@ import assert from 'assert';
|
|
|
25
25
|
import { requireNamespace } from '@yeoman/namespace';
|
|
26
26
|
import chalk from 'chalk';
|
|
27
27
|
import { parse as parseYaml, stringify as stringifyYaml } from 'yaml';
|
|
28
|
-
import { kebabCase, snakeCase, merge, get, set } from 'lodash-es';
|
|
28
|
+
import { kebabCase, snakeCase, merge, get, set, defaults, mergeWith } from 'lodash-es';
|
|
29
29
|
import { simpleGit } from 'simple-git';
|
|
30
30
|
import semver, { lt as semverLessThan } from 'semver';
|
|
31
31
|
import YeomanGenerator from 'yeoman-generator';
|
|
32
32
|
import latestVersion from 'latest-version';
|
|
33
33
|
import SharedData from '../base/shared-data.js';
|
|
34
34
|
import { CUSTOM_PRIORITIES, PRIORITY_NAMES, PRIORITY_PREFIX } from '../base/priorities.js';
|
|
35
|
-
import { createJHipster7Context, formatDateForChangelog, joinCallbacks } from '../base/support/index.js';
|
|
35
|
+
import { createJHipster7Context, formatDateForChangelog, joinCallbacks, removeFieldsWithNullishValues, } from '../base/support/index.js';
|
|
36
36
|
import { packageJson } from '../../lib/index.js';
|
|
37
37
|
import { GENERATOR_BOOTSTRAP } from '../generator-list.js';
|
|
38
38
|
import NeedleApi from '../needle-api.js';
|
|
@@ -41,7 +41,9 @@ import { GENERATOR_JHIPSTER, YO_RC_FILE } from '../generator-constants.js';
|
|
|
41
41
|
import { convertConfigToOption } from '../../lib/internal/index.js';
|
|
42
42
|
import { getGradleLibsVersionsProperties } from '../gradle/support/dependabot-gradle.js';
|
|
43
43
|
import { dockerPlaceholderGenerator } from '../docker/utils.js';
|
|
44
|
-
|
|
44
|
+
import { getConfigWithDefaults } from '../../jdl/index.js';
|
|
45
|
+
import { extractArgumentsFromConfigs } from '../base/internal/command.js';
|
|
46
|
+
const { INITIALIZING, PROMPTING, CONFIGURING, COMPOSING, COMPOSING_COMPONENT, LOADING, PREPARING, POST_PREPARING, DEFAULT, WRITING, POST_WRITING, INSTALL, POST_INSTALL, END, } = PRIORITY_NAMES;
|
|
45
47
|
const __filename = fileURLToPath(import.meta.url);
|
|
46
48
|
const __dirname = dirname(__filename);
|
|
47
49
|
const asPriority = (priorityName) => `${PRIORITY_PREFIX}${priorityName}`;
|
|
@@ -49,6 +51,7 @@ const relativeDir = (from, to) => {
|
|
|
49
51
|
const rel = posixRelative(from, to);
|
|
50
52
|
return rel ? `${rel}/` : '';
|
|
51
53
|
};
|
|
54
|
+
const deepMerge = (source1, source2) => mergeWith({}, source1, source2, (a, b) => (Array.isArray(a) ? a.concat(b) : undefined));
|
|
52
55
|
/**
|
|
53
56
|
* This is the base class for a generator for every generator.
|
|
54
57
|
*/
|
|
@@ -58,6 +61,7 @@ export default class CoreGenerator extends YeomanGenerator {
|
|
|
58
61
|
static PROMPTING = asPriority(PROMPTING);
|
|
59
62
|
static CONFIGURING = asPriority(CONFIGURING);
|
|
60
63
|
static COMPOSING = asPriority(COMPOSING);
|
|
64
|
+
static COMPOSING_COMPONENT = asPriority(COMPOSING_COMPONENT);
|
|
61
65
|
static LOADING = asPriority(LOADING);
|
|
62
66
|
static PREPARING = asPriority(PREPARING);
|
|
63
67
|
static POST_PREPARING = asPriority(POST_PREPARING);
|
|
@@ -69,6 +73,7 @@ export default class CoreGenerator extends YeomanGenerator {
|
|
|
69
73
|
static END = asPriority(END);
|
|
70
74
|
useVersionPlaceholders;
|
|
71
75
|
skipChecks;
|
|
76
|
+
ignoreNeedlesError;
|
|
72
77
|
experimental;
|
|
73
78
|
debugEnabled;
|
|
74
79
|
jhipster7Migration;
|
|
@@ -99,14 +104,12 @@ export default class CoreGenerator extends YeomanGenerator {
|
|
|
99
104
|
unique: 'namespace',
|
|
100
105
|
...features,
|
|
101
106
|
});
|
|
102
|
-
let jhipsterOldVersion = null;
|
|
103
107
|
if (!this.options.help) {
|
|
104
108
|
/* Force config to use 'generator-jhipster' namespace. */
|
|
105
109
|
this._config = this._getStorage('generator-jhipster');
|
|
106
110
|
/* JHipster config using proxy mode used as a plain object instead of using get/set. */
|
|
107
111
|
this.jhipsterConfig = this.config.createProxy();
|
|
108
|
-
|
|
109
|
-
this.sharedData = this.createSharedData({ jhipsterOldVersion, help: this.options.help });
|
|
112
|
+
this.sharedData = this.createSharedData({ help: this.options.help });
|
|
110
113
|
/* Options parsing must be executed after forcing jhipster storage namespace and after sharedData have been populated */
|
|
111
114
|
this.parseJHipsterOptions(command.options);
|
|
112
115
|
// Don't write jhipsterVersion to .yo-rc.json when reproducible
|
|
@@ -149,6 +152,19 @@ export default class CoreGenerator extends YeomanGenerator {
|
|
|
149
152
|
}
|
|
150
153
|
return this._needleApi;
|
|
151
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* JHipster config with default values fallback
|
|
157
|
+
*/
|
|
158
|
+
get jhipsterConfigWithDefaults() {
|
|
159
|
+
const configWithDefaults = getConfigWithDefaults(removeFieldsWithNullishValues(this.config.getAll()));
|
|
160
|
+
defaults(configWithDefaults, {
|
|
161
|
+
skipFakeData: false,
|
|
162
|
+
skipCheckLengthOfIdentifier: false,
|
|
163
|
+
enableGradleEnterprise: false,
|
|
164
|
+
pages: [],
|
|
165
|
+
});
|
|
166
|
+
return configWithDefaults;
|
|
167
|
+
}
|
|
152
168
|
/**
|
|
153
169
|
* Warn or throws check failure based on current skipChecks option.
|
|
154
170
|
* @param message
|
|
@@ -169,11 +185,14 @@ You can ignore this error by passing '--skip-checks' to jhipster command.`);
|
|
|
169
185
|
*/
|
|
170
186
|
isJhipsterVersionLessThan(version) {
|
|
171
187
|
const jhipsterOldVersion = this.sharedData.getControl().jhipsterOldVersion;
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
188
|
+
return this.isVersionLessThan(jhipsterOldVersion, version);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Wrapper for `semver.lt` to check if the oldVersion exists and is less than the newVersion.
|
|
192
|
+
* Can be used by blueprints.
|
|
193
|
+
*/
|
|
194
|
+
isVersionLessThan(oldVersion, newVersion) {
|
|
195
|
+
return oldVersion ? semverLessThan(oldVersion, newVersion) : false;
|
|
177
196
|
}
|
|
178
197
|
/**
|
|
179
198
|
* Get arguments for the priority
|
|
@@ -251,6 +270,19 @@ You can ignore this error by passing '--skip-checks' to jhipster command.`);
|
|
|
251
270
|
}
|
|
252
271
|
return this.prompt(this.prepareQuestions(generatorCommand.configs));
|
|
253
272
|
}
|
|
273
|
+
/**
|
|
274
|
+
* Configure the current JHipster command.
|
|
275
|
+
* Blueprints with command override takes precedence.
|
|
276
|
+
*/
|
|
277
|
+
async configureCurrentJHipsterCommandConfig() {
|
|
278
|
+
const generatorCommand = await this.getCurrentJHipsterCommand();
|
|
279
|
+
if (!generatorCommand.configs) {
|
|
280
|
+
throw new Error(`Configs not found for generator ${this.options.namespace}`);
|
|
281
|
+
}
|
|
282
|
+
for (const def of Object.values(generatorCommand.configs)) {
|
|
283
|
+
def.configure?.(this);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
254
286
|
/**
|
|
255
287
|
* Load the current JHipster command storage configuration into the context.
|
|
256
288
|
* Blueprints with command override takes precedence.
|
|
@@ -266,7 +298,7 @@ You can ignore this error by passing '--skip-checks' to jhipster command.`);
|
|
|
266
298
|
context[name] = context[name] ?? config?.[name] ?? this.config.get(name) ?? def.default;
|
|
267
299
|
}
|
|
268
300
|
if (def.scope === 'generator') {
|
|
269
|
-
|
|
301
|
+
this[name] = this[name] ?? this.options[name] ?? def.default;
|
|
270
302
|
}
|
|
271
303
|
if (def.scope === 'blueprint') {
|
|
272
304
|
context[name] = context[name] ?? this.blueprintStorage?.get(name) ?? def.default;
|
|
@@ -292,15 +324,7 @@ You can ignore this error by passing '--skip-checks' to jhipster command.`);
|
|
|
292
324
|
this.parseJHipsterArguments(commandDef.arguments);
|
|
293
325
|
}
|
|
294
326
|
else if (commandDef.configs) {
|
|
295
|
-
this.parseJHipsterArguments(
|
|
296
|
-
.filter(([_name, def]) => def.argument)
|
|
297
|
-
.map(([name, def]) => [
|
|
298
|
-
name,
|
|
299
|
-
{
|
|
300
|
-
description: def.description,
|
|
301
|
-
...def.argument,
|
|
302
|
-
},
|
|
303
|
-
])));
|
|
327
|
+
this.parseJHipsterArguments(extractArgumentsFromConfigs(commandDef.configs));
|
|
304
328
|
}
|
|
305
329
|
if (commandDef.options || commandDef.configs) {
|
|
306
330
|
this.parseJHipsterOptions(commandDef.options, commandDef.configs);
|
|
@@ -395,7 +419,7 @@ You can ignore this error by passing '--skip-checks' to jhipster command.`);
|
|
|
395
419
|
return Object.entries(configs)
|
|
396
420
|
.filter(([_name, def]) => def?.prompt)
|
|
397
421
|
.map(([name, def]) => {
|
|
398
|
-
const promptSpec = typeof def.prompt === 'function' ? def.prompt(this) : { ...def.prompt };
|
|
422
|
+
const promptSpec = typeof def.prompt === 'function' ? def.prompt(this, def) : { ...def.prompt };
|
|
399
423
|
let storage;
|
|
400
424
|
if ((def.scope ?? 'storage') === 'storage') {
|
|
401
425
|
storage = this.config;
|
|
@@ -595,7 +619,12 @@ You can ignore this error by passing '--skip-checks' to jhipster command.`);
|
|
|
595
619
|
// Convert to any because ejs types doesn't support string[] https://github.com/DefinitelyTyped/DefinitelyTyped/pull/63315
|
|
596
620
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
597
621
|
const root = this.jhipsterTemplatesFolders ?? this.templatePath();
|
|
598
|
-
|
|
622
|
+
try {
|
|
623
|
+
return this.renderTemplate(source, destination, data, { root, ...options }, { noGlob: true, ...copyOptions });
|
|
624
|
+
}
|
|
625
|
+
catch (error) {
|
|
626
|
+
throw new Error(`Error writing file ${source} to ${destination}: ${error}`, { cause: error });
|
|
627
|
+
}
|
|
599
628
|
}
|
|
600
629
|
/**
|
|
601
630
|
* write the given files using provided options.
|
|
@@ -604,10 +633,15 @@ You can ignore this error by passing '--skip-checks' to jhipster command.`);
|
|
|
604
633
|
const paramCount = Object.keys(options).filter(key => ['sections', 'blocks', 'templates'].includes(key)).length;
|
|
605
634
|
assert(paramCount > 0, 'One of sections, blocks or templates is required');
|
|
606
635
|
assert(paramCount === 1, 'Only one of sections, blocks or templates must be provided');
|
|
607
|
-
const { sections, blocks,
|
|
636
|
+
const { sections, blocks, context = this, templates } = options;
|
|
637
|
+
const { rootTemplatesPath, customizeTemplatePath = file => file, transform: methodTransform = [] } = options;
|
|
608
638
|
const { _: commonSpec = {} } = sections || {};
|
|
609
639
|
const { transform: sectionTransform = [] } = commonSpec;
|
|
610
640
|
const startTime = new Date().getMilliseconds();
|
|
641
|
+
const { customizeTemplatePaths: contextCustomizeTemplatePaths = [] } = context;
|
|
642
|
+
const templateData = this.jhipster7Migration
|
|
643
|
+
? createJHipster7Context(this, context, { log: this.jhipster7Migration === 'verbose' ? msg => this.log.info(msg) : () => { } })
|
|
644
|
+
: context;
|
|
611
645
|
/* Build lookup order first has preference.
|
|
612
646
|
* Example
|
|
613
647
|
* rootTemplatesPath = ['reactive', 'common']
|
|
@@ -642,7 +676,7 @@ You can ignore this error by passing '--skip-checks' to jhipster command.`);
|
|
|
642
676
|
return val;
|
|
643
677
|
}
|
|
644
678
|
if (typeof val === 'function') {
|
|
645
|
-
return val.call(this,
|
|
679
|
+
return val.call(this, templateData) || false;
|
|
646
680
|
}
|
|
647
681
|
throw new Error(`Type not supported ${val}`);
|
|
648
682
|
};
|
|
@@ -650,7 +684,6 @@ You can ignore this error by passing '--skip-checks' to jhipster command.`);
|
|
|
650
684
|
const extension = extname(sourceFile);
|
|
651
685
|
const isBinary = binary || ['.png', '.jpg', '.gif', '.svg', '.ico'].includes(extension);
|
|
652
686
|
const appendEjs = noEjs === undefined ? !isBinary && extension !== '.ejs' : !noEjs;
|
|
653
|
-
const ejsFile = appendEjs || extension === '.ejs';
|
|
654
687
|
let targetFile;
|
|
655
688
|
if (typeof destinationFile === 'function') {
|
|
656
689
|
targetFile = resolveCallback(destinationFile);
|
|
@@ -661,9 +694,14 @@ You can ignore this error by passing '--skip-checks' to jhipster command.`);
|
|
|
661
694
|
let sourceFileFrom;
|
|
662
695
|
if (Array.isArray(rootTemplatesAbsolutePath)) {
|
|
663
696
|
// Look for existing templates
|
|
664
|
-
|
|
697
|
+
let existingTemplates = rootTemplatesAbsolutePath
|
|
665
698
|
.map(rootPath => this.templatePath(rootPath, sourceFile))
|
|
666
699
|
.filter(templateFile => existsSync(appendEjs ? `${templateFile}.ejs` : templateFile));
|
|
700
|
+
if (existingTemplates.length === 0 && this.getFeatures().jhipster7Migration) {
|
|
701
|
+
existingTemplates = rootTemplatesAbsolutePath
|
|
702
|
+
.map(rootPath => this.templatePath(rootPath, appendEjs ? sourceFile : `${sourceFile}.ejs`))
|
|
703
|
+
.filter(templateFile => existsSync(templateFile));
|
|
704
|
+
}
|
|
667
705
|
if (existingTemplates.length > 1) {
|
|
668
706
|
const moreThanOneMessage = `Multiples templates were found for file ${sourceFile}, using the first
|
|
669
707
|
templates: ${JSON.stringify(existingTemplates, null, 2)}`;
|
|
@@ -685,43 +723,68 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
|
|
|
685
723
|
else {
|
|
686
724
|
sourceFileFrom = this.templatePath(sourceFile);
|
|
687
725
|
}
|
|
688
|
-
|
|
689
|
-
|
|
726
|
+
const file = customizeTemplatePath({ sourceFile, resolvedSourceFile: sourceFileFrom, destinationFile: targetFile });
|
|
727
|
+
if (!file) {
|
|
728
|
+
return undefined;
|
|
690
729
|
}
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
});
|
|
705
|
-
// Async calls will make the render method to be scheduled, allowing the faker key to change in the meantime.
|
|
706
|
-
useAsync = false;
|
|
730
|
+
sourceFileFrom = file.resolvedSourceFile;
|
|
731
|
+
targetFile = file.destinationFile;
|
|
732
|
+
let templatesRoots = [].concat(rootTemplatesAbsolutePath);
|
|
733
|
+
for (const contextCustomizeTemplatePath of contextCustomizeTemplatePaths) {
|
|
734
|
+
const file = contextCustomizeTemplatePath({
|
|
735
|
+
namespace: this.options.namespace,
|
|
736
|
+
sourceFile,
|
|
737
|
+
resolvedSourceFile: sourceFileFrom,
|
|
738
|
+
destinationFile: targetFile,
|
|
739
|
+
templatesRoots,
|
|
740
|
+
});
|
|
741
|
+
if (!file) {
|
|
742
|
+
return undefined;
|
|
707
743
|
}
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
const copyOptions = { noGlob: true };
|
|
716
|
-
// TODO drop for v8 final release
|
|
717
|
-
const data = this.jhipster7Migration ? createJHipster7Context(this, context, { ignoreWarnings: true }) : context;
|
|
718
|
-
if (useAsync) {
|
|
719
|
-
await this.renderTemplateAsync(sourceFileFrom, targetFile, data, renderOptions, copyOptions);
|
|
744
|
+
sourceFileFrom = file.resolvedSourceFile;
|
|
745
|
+
targetFile = file.destinationFile;
|
|
746
|
+
templatesRoots = file.templatesRoots;
|
|
747
|
+
}
|
|
748
|
+
try {
|
|
749
|
+
if (!appendEjs && extname(sourceFileFrom) !== '.ejs') {
|
|
750
|
+
await this.copyTemplateAsync(sourceFileFrom, targetFile);
|
|
720
751
|
}
|
|
721
752
|
else {
|
|
722
|
-
|
|
753
|
+
let useAsync = true;
|
|
754
|
+
if (context.entityClass) {
|
|
755
|
+
if (!context.baseName) {
|
|
756
|
+
throw new Error('baseName is required at templates context');
|
|
757
|
+
}
|
|
758
|
+
const sourceBasename = basename(sourceFileFrom);
|
|
759
|
+
const seed = `${context.entityClass}-${sourceBasename}${context.fakerSeed ?? ''}`;
|
|
760
|
+
Object.values(this.sharedData.getApplication()?.sharedEntities ?? {}).forEach((entity) => {
|
|
761
|
+
entity.resetFakerSeed(seed);
|
|
762
|
+
});
|
|
763
|
+
// Async calls will make the render method to be scheduled, allowing the faker key to change in the meantime.
|
|
764
|
+
useAsync = false;
|
|
765
|
+
}
|
|
766
|
+
const renderOptions = {
|
|
767
|
+
...(options?.renderOptions ?? {}),
|
|
768
|
+
// Set root for ejs to lookup for partials.
|
|
769
|
+
root: templatesRoots,
|
|
770
|
+
// ejs caching cause problem https://github.com/jhipster/generator-jhipster/pull/20757
|
|
771
|
+
cache: false,
|
|
772
|
+
};
|
|
773
|
+
const copyOptions = { noGlob: true };
|
|
774
|
+
if (appendEjs) {
|
|
775
|
+
sourceFileFrom = `${sourceFileFrom}.ejs`;
|
|
776
|
+
}
|
|
777
|
+
if (useAsync) {
|
|
778
|
+
await this.renderTemplateAsync(sourceFileFrom, targetFile, templateData, renderOptions, copyOptions);
|
|
779
|
+
}
|
|
780
|
+
else {
|
|
781
|
+
this.renderTemplate(sourceFileFrom, targetFile, templateData, renderOptions, copyOptions);
|
|
782
|
+
}
|
|
723
783
|
}
|
|
724
784
|
}
|
|
785
|
+
catch (error) {
|
|
786
|
+
throw new Error(`Error rendering template ${sourceFileFrom} to ${targetFile}: ${error}`, { cause: error });
|
|
787
|
+
}
|
|
725
788
|
if (!isBinary && transform && transform.length) {
|
|
726
789
|
this.editFile(targetFile, ...transform);
|
|
727
790
|
}
|
|
@@ -867,7 +930,7 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
|
|
|
867
930
|
if (!originalContent) {
|
|
868
931
|
const { ignoreNonExisting, create } = actualOptions;
|
|
869
932
|
const errorMessage = typeof ignoreNonExisting === 'string' ? ` ${ignoreNonExisting}.` : '';
|
|
870
|
-
if (ignoreNonExisting) {
|
|
933
|
+
if (ignoreNonExisting || (!create && this.ignoreNeedlesError)) {
|
|
871
934
|
this.log(`${chalk.yellow('\nUnable to find ')}${filePath}.${chalk.yellow(errorMessage)}\n`);
|
|
872
935
|
// return a noop.
|
|
873
936
|
const noop = () => noop;
|
|
@@ -884,7 +947,11 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
|
|
|
884
947
|
try {
|
|
885
948
|
newContent = joinCallbacks(...callbacks).call(this, newContent, filePath);
|
|
886
949
|
if (actualOptions.assertModified && originalContent === newContent) {
|
|
887
|
-
|
|
950
|
+
const errorMessage = `${chalk.yellow('Fail to modify ')}${filePath}.`;
|
|
951
|
+
if (!this.ignoreNeedlesError) {
|
|
952
|
+
throw new Error(errorMessage);
|
|
953
|
+
}
|
|
954
|
+
this.log(errorMessage);
|
|
888
955
|
}
|
|
889
956
|
this.writeDestination(filePath, newContent);
|
|
890
957
|
}
|
|
@@ -919,7 +986,9 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
|
|
|
919
986
|
}
|
|
920
987
|
return true;
|
|
921
988
|
});
|
|
922
|
-
|
|
989
|
+
const mergedContent = stringifyYaml(deepMerge(parseYaml(content), value));
|
|
990
|
+
const header = headerComments.length > 0 ? headerComments.join('\n').concat('\n') : '';
|
|
991
|
+
return `${header}${mergedContent}`;
|
|
923
992
|
});
|
|
924
993
|
}
|
|
925
994
|
/**
|
|
@@ -1060,7 +1129,7 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
|
|
|
1060
1129
|
getSharedApplication(applicationFolder = this.destinationPath()) {
|
|
1061
1130
|
return this.options.sharedData.applications?.[this.calculateApplicationId(applicationFolder)];
|
|
1062
1131
|
}
|
|
1063
|
-
createSharedData({
|
|
1132
|
+
createSharedData({ help }) {
|
|
1064
1133
|
const applicationId = this.options.applicationId ?? this.calculateApplicationId(this.destinationPath());
|
|
1065
1134
|
if (this.options.sharedData.applications === undefined) {
|
|
1066
1135
|
this.options.sharedData.applications = {};
|
|
@@ -1070,6 +1139,6 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
|
|
|
1070
1139
|
sharedApplications[applicationId] = {};
|
|
1071
1140
|
}
|
|
1072
1141
|
const { ignoreNeedlesError } = this.options;
|
|
1073
|
-
return new SharedData(sharedApplications[applicationId], {
|
|
1142
|
+
return new SharedData(sharedApplications[applicationId], { destinationPath: this.destinationPath(), memFs: this.env.sharedFs, log: this.log, logCwd: this.env.logCwd }, { ignoreNeedlesError });
|
|
1074
1143
|
}
|
|
1075
1144
|
}
|
|
@@ -157,7 +157,7 @@ export default class BootstrapGenerator extends BaseGenerator {
|
|
|
157
157
|
const prettierTransforms = [];
|
|
158
158
|
if (!this.skipPrettier) {
|
|
159
159
|
const ignoreErrors = this.options.ignoreErrors || this.upgradeCommand;
|
|
160
|
-
prettierTransforms.push(createESLintTransform.call(this, { ignoreErrors, extensions: 'ts,js' }), createRemoveUnusedImportsTransform.call(this, { ignoreErrors }), await createPrettierTransform.call(this, {
|
|
160
|
+
prettierTransforms.push(createESLintTransform.call(this, { ignoreErrors, extensions: 'ts,js,cjs,mjs' }), createRemoveUnusedImportsTransform.call(this, { ignoreErrors }), await createPrettierTransform.call(this, {
|
|
161
161
|
ignoreErrors,
|
|
162
162
|
prettierPackageJson: true,
|
|
163
163
|
prettierJava: !this.jhipsterConfig.skipServer,
|
|
@@ -1,8 +1,15 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import eslint from 'eslint';
|
|
2
|
+
import { baseRules } from '../../../lib/eslint/base.js';
|
|
3
|
+
let eslintInstance;
|
|
4
|
+
/* Flat config based eslint
|
|
5
|
+
Blocked by https://github.com/import-js/eslint-plugin-import/issues/2556
|
|
6
|
+
import eslint from 'eslint/use-at-your-own-risk';
|
|
7
|
+
const { languageOptions, plugins: tseslintPlugins } = tseslint.configs.base;
|
|
8
|
+
new eslint.FlatESLint({ fix: true, overrideConfigFile: true, cwd, plugins, baseConfig: { languageOptions, rules } });
|
|
9
|
+
*/
|
|
3
10
|
export default async ({ resolvePluginsRelativeTo, filePath, fileContents }) => {
|
|
4
|
-
if (!
|
|
5
|
-
|
|
11
|
+
if (!eslintInstance) {
|
|
12
|
+
eslintInstance = new eslint.ESLint({
|
|
6
13
|
fix: true,
|
|
7
14
|
// Disable destination configs. We should apply plugins and rules which jhipster depends on.
|
|
8
15
|
useEslintrc: false,
|
|
@@ -14,20 +21,15 @@ export default async ({ resolvePluginsRelativeTo, filePath, fileContents }) => {
|
|
|
14
21
|
sourceType: 'module',
|
|
15
22
|
ecmaVersion: 'latest',
|
|
16
23
|
},
|
|
17
|
-
rules:
|
|
18
|
-
'import/order': 'error',
|
|
19
|
-
'import/no-duplicates': 'error',
|
|
20
|
-
'unused-imports/no-unused-imports': 'error',
|
|
21
|
-
'unused-imports/no-unused-vars': ['warn', { vars: 'all', varsIgnorePattern: '^_', args: 'after-used', argsIgnorePattern: '^_' }],
|
|
22
|
-
},
|
|
24
|
+
rules: baseRules,
|
|
23
25
|
},
|
|
24
26
|
});
|
|
25
27
|
}
|
|
26
|
-
if (await
|
|
28
|
+
if (await eslintInstance.isPathIgnored(filePath)) {
|
|
27
29
|
return { result: fileContents };
|
|
28
30
|
}
|
|
29
31
|
try {
|
|
30
|
-
const [result] = await
|
|
32
|
+
const [result] = await eslintInstance.lintText(fileContents, { filePath });
|
|
31
33
|
return { result: result.output ?? fileContents };
|
|
32
34
|
}
|
|
33
35
|
catch (error) {
|
|
@@ -36,7 +36,12 @@ export default class TemplateFile {
|
|
|
36
36
|
this._debug('======');
|
|
37
37
|
this._debug(contents);
|
|
38
38
|
}
|
|
39
|
-
|
|
39
|
+
try {
|
|
40
|
+
this._compiled = ejs.compile(contents, options);
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
throw new Error(`Error compiling ${this._filename}, with contents:\n${contents}`, { cause: error });
|
|
44
|
+
}
|
|
40
45
|
}
|
|
41
46
|
addFragment(templateFile) {
|
|
42
47
|
assert(templateFile, 'templateFile is required');
|
|
@@ -48,7 +48,7 @@ export default class BootstrapApplicationGenerator extends BaseApplicationGenera
|
|
|
48
48
|
application.skipUserManagement = true;
|
|
49
49
|
}
|
|
50
50
|
applicationDefaults({
|
|
51
|
-
useNpmWrapper: application => application.clientFrameworkAny && application.
|
|
51
|
+
useNpmWrapper: application => application.clientFrameworkAny && application.backendTypeJavaAny,
|
|
52
52
|
documentationArchiveUrl: ({ jhipsterVersion }) => `${JHIPSTER_DOCUMENTATION_URL}${JHIPSTER_DOCUMENTATION_ARCHIVE_PATH}v${jhipsterVersion}`,
|
|
53
53
|
});
|
|
54
54
|
let prettierExtensions = 'md,json,yml,html';
|
|
@@ -140,15 +140,19 @@ export default class BootstrapApplicationBase extends BaseApplicationGenerator {
|
|
|
140
140
|
backendTypeJavaAny: ({ backendTypeSpringBoot }) => backendTypeSpringBoot,
|
|
141
141
|
});
|
|
142
142
|
},
|
|
143
|
+
userRelationship({ applicationDefaults }) {
|
|
144
|
+
applicationDefaults({
|
|
145
|
+
__override__: false,
|
|
146
|
+
anyEntityHasRelationshipWithUser: this.getExistingEntities().some(entity => (entity.definition.relationships ?? []).some(relationship => relationship.otherEntityName.toLowerCase() === 'user')),
|
|
147
|
+
});
|
|
148
|
+
},
|
|
143
149
|
syncUserWithIdp({ application, applicationDefaults }) {
|
|
144
150
|
if (!application.backendTypeSpringBoot)
|
|
145
151
|
return;
|
|
146
152
|
if (application.syncUserWithIdp === undefined && application.authenticationType === 'oauth2') {
|
|
147
153
|
applicationDefaults({
|
|
148
154
|
__override__: false,
|
|
149
|
-
syncUserWithIdp: data => data.databaseType !== 'no' &&
|
|
150
|
-
(data.applicationType === 'gateway' ||
|
|
151
|
-
this.getExistingEntities().some(entity => (entity.definition.relationships ?? []).some(relationship => relationship.otherEntityName.toLowerCase() === 'user'))),
|
|
155
|
+
syncUserWithIdp: data => data.databaseType !== 'no' && (data.applicationType === 'gateway' || data.anyEntityHasRelationshipWithUser),
|
|
152
156
|
});
|
|
153
157
|
}
|
|
154
158
|
else if (application.syncUserWithIdp && application.authenticationType !== 'oauth2') {
|