generator-jhipster 8.0.0-rc.1 → 8.1.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 +71 -58
- package/dist/cli/environment-builder.mjs +14 -7
- package/dist/cli/jhipster-command.mjs +7 -3
- package/dist/cli/program.mjs +2 -2
- package/dist/generators/angular/cleanup.mjs +7 -0
- package/dist/generators/angular/files-angular.mjs +3 -4
- package/dist/generators/angular/generator.mjs +10 -22
- package/dist/generators/angular/needle-api/needle-client-angular.mjs +2 -8
- package/dist/generators/angular/resources/package.json +25 -24
- package/dist/generators/angular/support/translate-angular.mjs +2 -2
- package/dist/generators/angular/templates/README.md.jhi.client.angular.ejs +1 -1
- package/dist/generators/angular/templates/angular.json.ejs +3 -7
- package/dist/generators/angular/templates/package.json.ejs +4 -8
- package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.component.html.ejs +6 -4
- package/dist/generators/angular/templates/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.html.ejs +39 -33
- package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.html.ejs +44 -36
- package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.html.ejs +24 -23
- package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.html.ejs +74 -62
- package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.component.html.ejs +12 -4
- package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.html.ejs +54 -48
- package/dist/generators/angular/templates/src/main/webapp/app/admin/admin.routes.ts.ejs +74 -0
- package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.component.html.ejs +15 -5
- package/dist/generators/angular/templates/src/main/webapp/app/admin/docs/docs.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/gateway/gateway.component.html.ejs +20 -7
- package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.component.html.ejs +10 -7
- package/dist/generators/angular/templates/src/main/webapp/app/admin/health/modal/health-modal.component.html.ejs +9 -3
- package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.html.ejs +12 -4
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.html.ejs +13 -7
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-cache/metrics-cache.component.html.ejs +6 -2
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-datasource/metrics-datasource.component.html.ejs +3 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-endpoints-requests/metrics-endpoints-requests.component.html.ejs +13 -9
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-garbagecollector/metrics-garbagecollector.component.html.ejs +13 -5
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.html.ejs +21 -7
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-request/metrics-request.component.html.ejs +6 -2
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-system/metrics-system.component.html.ejs +3 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.component.html.ejs +16 -7
- package/dist/generators/angular/templates/src/main/webapp/app/admin/tracker/tracker.component.html.ejs +3 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +3 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.html.ejs +11 -4
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +20 -11
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.html.ejs +48 -34
- package/dist/generators/angular/templates/src/main/webapp/app/app.component.ts.ejs +73 -0
- package/dist/generators/angular/templates/src/main/webapp/app/app.config.ts.ejs +67 -0
- package/dist/generators/angular/templates/src/main/webapp/app/app.routes.ts.ejs +85 -0
- package/dist/generators/angular/templates/src/main/webapp/app/core/microfrontend/index.ts.ejs +5 -4
- package/dist/generators/angular/templates/src/main/webapp/app/core/util/alert.service.spec.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/core/util/data-util.service.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/core/util/event-manager.service.spec.ts.ejs +12 -12
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.model.ts.ejs +4 -4
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.html.ejs +3 -1
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.html.ejs +26 -14
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.html.ejs +44 -35
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/service/_entityFile_.service.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-form.service.spec.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-form.service.ts.ejs +5 -12
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.html.ejs +55 -21
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.spec.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.ts.ejs +10 -10
- package/dist/generators/angular/templates/src/main/webapp/app/entities/entity.routes.ts.ejs +25 -0
- package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.html.ejs +21 -17
- package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/error/error.component.html.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.spec.ts.ejs +5 -2
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.ts.ejs +5 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +97 -78
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.scss.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.scss.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.ts.ejs +6 -4
- package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.html.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert-error.component.html.ejs +6 -2
- package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert.component.html.ejs +6 -2
- package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.component.html.ejs +11 -7
- package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.model.spec.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort-by.directive.spec.ts.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/bootstrap.ts.ejs +5 -5
- package/dist/generators/angular/templates/src/main/webapp/content/scss/global.scss.ejs +1 -1
- package/dist/generators/angular/templates/webpack/webpack.microfrontend.js.ejs +48 -126
- package/dist/generators/app/README.md +108 -0
- package/dist/generators/app/USAGE +3 -0
- package/dist/generators/app/command.mjs +3 -3
- package/dist/generators/app/generator.mjs +11 -0
- package/dist/generators/app/support/config.mjs +3 -3
- package/dist/generators/base/command.mjs +0 -11
- package/dist/generators/base/generator.mjs +0 -3
- package/dist/generators/base/support/config.mjs +6 -6
- package/dist/generators/base/support/jhipster7-context.mjs +3 -3
- package/dist/generators/base-application/generator.mjs +7 -8
- package/dist/generators/base-application/support/entities.mjs +2 -2
- package/dist/generators/base-application/support/enum.mjs +1 -1
- package/dist/generators/base-application/support/index.mjs +1 -0
- package/dist/generators/base-application/support/prepare-entity.mjs +14 -11
- package/dist/generators/base-application/support/prepare-field.mjs +11 -7
- package/dist/generators/base-application/support/prepare-relationship.mjs +16 -14
- package/dist/generators/base-application/support/update-application-entities-transform.mjs +52 -0
- package/dist/generators/base-core/generator.mjs +17 -4
- package/dist/generators/base-entity-changes/generator.mjs +1 -1
- package/dist/generators/base-workspaces/internal/docker-prompts.mjs +13 -12
- package/dist/generators/bootstrap/command.mjs +6 -0
- package/dist/generators/bootstrap/generator.mjs +84 -45
- package/dist/generators/bootstrap/support/auto-crlf-transform.mjs +34 -21
- package/dist/generators/bootstrap/support/eslint-transform.mjs +2 -5
- package/dist/generators/bootstrap/support/java-unused-imports-transform.mjs +2 -2
- package/dist/generators/bootstrap/support/multi-step-transform/index.mjs +17 -28
- package/dist/generators/bootstrap/support/multi-step-transform/template-file-fs.mjs +12 -6
- package/dist/generators/bootstrap/support/multi-step-transform/template-file.mjs +1 -0
- package/dist/generators/bootstrap/support/prettier-support.mjs +2 -2
- package/dist/generators/bootstrap-application/generator.mjs +10 -21
- package/dist/generators/bootstrap-application-base/command.mjs +30 -0
- package/dist/generators/bootstrap-application-base/generator.mjs +36 -11
- package/dist/generators/bootstrap-application-base/index.mjs +1 -0
- package/dist/generators/bootstrap-application-base/support/export-jdl-transform.mjs +61 -0
- package/dist/generators/bootstrap-application-base/support/import-jdl-transform.mjs +64 -0
- package/dist/generators/bootstrap-application-base/support/index.mjs +2 -0
- package/dist/generators/bootstrap-application-server/generator.mjs +2 -2
- package/dist/generators/client/command.mjs +2 -0
- package/dist/generators/client/resources/package.json +4 -4
- package/dist/generators/client/support/entity-definition.mjs +3 -3
- package/dist/generators/client/templates/README.md.jhi.client.ejs +2 -2
- package/dist/generators/client/templates/src/main/webapp/content/css/loading.css.ejs +1 -1
- package/dist/generators/client/templates/src/main/webapp/index.html.ejs +2 -2
- package/dist/generators/client/templates/webpack/webpack.microfrontend.js.jhi.ejs +14 -1
- package/dist/generators/common/command.mjs +2 -0
- package/dist/generators/common/files.mjs +1 -1
- package/dist/generators/common/generator.mjs +29 -7
- package/dist/generators/common/resources/package.json +4 -4
- package/dist/generators/common/templates/.lintstagedrc.cjs.ejs +21 -0
- package/dist/generators/common/templates/.prettierrc.ejs +1 -1
- package/dist/generators/common/templates/README.md.jhi.ejs +2 -0
- package/dist/generators/common/templates/sonar-project.properties.ejs +1 -1
- package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/settings-page.cy.ts.ejs +3 -0
- package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/entity/_entity_.cy.ts.ejs +0 -1
- package/dist/generators/docker/generator.mjs +1 -1
- package/dist/generators/docker/templates/docker/cassandra.yml.ejs +2 -2
- package/dist/generators/docker/templates/docker/keycloak.yml.ejs +1 -1
- package/dist/generators/docker/templates/docker/realm-config/jhipster-realm.json.ejs +4 -1
- package/dist/generators/docker-compose/generator.mjs +4 -11
- package/dist/generators/docker-compose/templates/docker-compose.yml.ejs +1 -1
- package/dist/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +4 -1
- package/dist/generators/entity/prompts.mjs +123 -306
- package/dist/generators/export-jdl/generator.mjs +1 -1
- package/dist/generators/feign-client/cleanup.mjs +12 -0
- package/dist/generators/feign-client/files.mjs +35 -0
- package/dist/generators/feign-client/generator.mjs +65 -0
- package/dist/generators/feign-client/index.mjs +19 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/AuthorizationHeaderUtil.java.ejs +174 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/AuthorizedFeignClient.java.ejs +72 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/OAuth2InterceptedFeignConfiguration.java.ejs +35 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/OAuthIdpTokenResponseDTO.java.ejs +161 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/TokenRelayRequestInterceptor.java.ejs +42 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/UserFeignClientInterceptor_jwt.java.ejs +36 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/config/FeignConfiguration.java.ejs +45 -0
- package/dist/generators/feign-client/templates/src/test/java/_package_/client/AuthorizationHeaderUtilTest.java.ejs +263 -0
- package/dist/generators/generate-blueprint/command.mjs +1 -1
- package/dist/generators/generate-blueprint/resources/package.json +1 -1
- package/dist/generators/generate-blueprint/templates/vitest.config.ts.ejs +1 -1
- package/dist/generators/generator-constants.mjs +11 -7
- package/dist/generators/generator-list.mjs +1 -0
- package/dist/generators/git/generator.mjs +3 -5
- package/dist/generators/gradle/constants.mjs +1 -1
- package/dist/generators/heroku/generator.mjs +318 -595
- package/dist/generators/heroku/templates/Procfile.ejs +1 -1
- package/dist/generators/heroku/templates/application-heroku.yml.ejs +0 -12
- package/dist/generators/info/generator.mjs +6 -4
- package/dist/generators/init/generator.mjs +2 -2
- package/dist/generators/java/command.mjs +6 -0
- package/dist/generators/java/entity-files.mjs +5 -1
- package/dist/generators/java/generator.mjs +15 -15
- package/dist/generators/java/support/package-info-transform.mjs +20 -6
- package/dist/generators/java/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.ejs +24 -28
- package/dist/generators/java/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.jackson_identity_info.ejs +30 -0
- package/dist/generators/java/templates/src/main/java/_package_/_entityPackage_/domain/enumeration/_enumName_.java.ejs +3 -3
- package/dist/generators/java/templates/src/test/java/_package_/_entityPackage_/domain/_persistClass_Test.java.ejs +86 -8
- package/dist/generators/java/templates/src/test/java/_package_/_entityPackage_/domain/_persistClass_TestSamples.java.ejs +85 -0
- package/dist/generators/jdl/generator.mjs +32 -28
- package/dist/generators/kubernetes/templates/ingress.yml.ejs +0 -1
- package/dist/generators/kubernetes/templates/keycloak/keycloak-configmap.yml.ejs +4 -1
- package/dist/generators/kubernetes/templates/keycloak/keycloak.yml.ejs +1 -1
- package/dist/generators/languages/command.mjs +5 -0
- package/dist/generators/languages/generator.mjs +44 -28
- package/dist/generators/languages/prompts.mjs +3 -1
- package/dist/generators/languages/support/translate.mjs +1 -1
- package/dist/generators/languages/templates/entity/i18n/entity_pt-br.json.ejs +1 -1
- package/dist/generators/languages/translation-data.mjs +8 -13
- package/dist/generators/liquibase/README.md +19 -0
- package/dist/generators/liquibase/generator.mjs +7 -3
- package/dist/generators/project-name/generator.mjs +14 -19
- package/dist/generators/project-name/support/name-resolver.mjs +35 -6
- package/dist/generators/react/generator.mjs +18 -10
- package/dist/generators/react/resources/package.json +30 -29
- package/dist/generators/react/templates/package.json.ejs +4 -5
- package/dist/generators/react/templates/src/main/webapp/app/config/icon-loader.ts.ejs +35 -33
- package/dist/generators/react/templates/src/main/webapp/app/config/notification-middleware.spec.ts.ejs +4 -4
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-detail.tsx.ejs +1 -2
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.tsx.ejs +19 -15
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.reducer.ts.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.tsx.ejs +3 -8
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityModel_.model.ts.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/modules/home/home.tsx.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/routes.tsx.ejs +9 -2
- package/dist/generators/react/templates/src/main/webapp/app/shared/layout/header/header-components.tsx.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/shared/layout/header/header.scss.ejs +6 -5
- package/dist/generators/react/templates/src/main/webapp/app/shared/layout/menus/entities.tsx.ejs +10 -1
- package/dist/generators/react/templates/src/main/webapp/app/shared/reducers/reducer.utils.ts.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/shared/util/date-utils.ts.ejs +1 -1
- package/dist/generators/react/templates/tsconfig.test.json.ejs +1 -1
- package/dist/generators/react/templates/webpack/webpack.microfrontend.js.jhi.react.ejs +13 -58
- package/dist/generators/server/cleanup.mjs +5 -0
- package/dist/generators/server/command.mjs +13 -2
- package/dist/generators/server/entity-files.mjs +3 -3
- package/dist/generators/server/files.mjs +2 -38
- package/dist/generators/server/generator.mjs +48 -23
- package/dist/generators/server/jdl/application-definition.mjs +5 -2
- package/dist/generators/server/options/feign-client.mjs +24 -0
- package/dist/generators/server/options/index.mjs +1 -0
- package/dist/generators/server/resources/Dockerfile +19 -19
- package/dist/generators/server/resources/gradle/libs.versions.toml +4 -4
- package/dist/generators/server/resources/pom.xml +18 -18
- package/dist/generators/server/support/config.mjs +5 -4
- package/dist/generators/server/support/prepare-entity.mjs +9 -6
- package/dist/generators/server/support/prepare-field.mjs +20 -0
- package/dist/generators/server/support/relationship.mjs +2 -1
- package/dist/generators/server/support/templates/field-values.mjs +5 -2
- package/dist/generators/server/templates/README.md.jhi.spring-boot.ejs +0 -1
- package/dist/generators/server/templates/build.gradle.ejs +1 -2
- package/dist/generators/server/templates/gradle/profile_dev.gradle.ejs +3 -21
- package/dist/generators/server/templates/gradle/profile_prod.gradle.ejs +5 -15
- package/dist/generators/server/templates/package.json.ejs +0 -5
- package/dist/generators/server/templates/pom.xml.ejs +2 -12
- package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/get_all_template.ejs +8 -8
- package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/search_template.ejs +4 -4
- package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/repository/_entityClass_Repository.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/service/dto/_dtoClass_.java.ejs +2 -2
- package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/service/mapper/_entityClass_Mapper.java.ejs +2 -2
- package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/web/rest/_entityClass_Resource.java.ejs +14 -14
- package/dist/generators/server/templates/src/main/java/_package_/config/JacksonConfiguration.java.ejs +2 -1
- package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_imperative.java.ejs +21 -3
- package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_reactive.java.ejs +6 -1
- package/dist/generators/server/templates/src/main/java/_package_/security/oauth2/CustomClaimConverter.java.ejs +1 -5
- package/dist/generators/server/templates/src/main/java/_package_/service/MailService.java.ejs +48 -6
- 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/LogoutResource_imperative.java.ejs +4 -13
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/LogoutResource_reactive.java.ejs +5 -11
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/PublicUserResource.java.ejs +6 -7
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/UserResource.java.ejs +6 -8
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/errors/ExceptionTranslator.java.ejs +4 -7
- package/dist/generators/server/templates/src/main/resources/config/application.yml.ejs +8 -7
- package/dist/generators/server/templates/src/test/java/_package_/TechnicalStructureTest.java.ejs +1 -1
- package/dist/generators/server/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs +11 -11
- package/dist/generators/server/templates/src/test/java/_package_/web/rest/AccountResourceIT.java.ejs +4 -4
- package/dist/generators/server/templates/src/test/java/_package_/web/rest/errors/ExceptionTranslatorTestController.java.ejs +2 -2
- package/dist/generators/spring-cache/internal/dependencies.mjs +1 -1
- package/dist/generators/spring-cache/templates/gradle/cache.gradle.ejs +1 -1
- package/dist/generators/spring-cache/templates/src/main/java/_package_/config/CacheFactoryConfiguration.java.ejs +1 -1
- package/dist/generators/spring-cloud-stream/templates/src/main/java/_package_/web/rest/KafkaResource_imperative.java.ejs +1 -1
- package/dist/generators/spring-cloud-stream/templates/src/main/java/_package_/web/rest/KafkaResource_reactive.java.ejs +1 -1
- package/dist/generators/spring-cloud-stream/templates/src/test/java/_package_/web/rest/KafkaResourceIT_reactive.java.ejs +3 -0
- package/dist/generators/spring-data-elasticsearch/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.elastic_search.ejs +1 -1
- package/dist/generators/spring-data-elasticsearch/templates/src/main/java/_package_/_entityPackage_/repository/search/_entityClass_SearchRepository.java.ejs +1 -3
- package/dist/generators/spring-data-elasticsearch/templates/src/main/java/_package_/repository/search/UserSearchRepository.java.ejs +4 -4
- package/dist/generators/spring-data-neo4j/generator.mjs +43 -1
- package/dist/generators/spring-data-neo4j/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.spring_data_neo4j.ejs +3 -37
- package/dist/generators/spring-data-relational/README.md +7 -0
- package/dist/generators/spring-data-relational/generator.mjs +2 -1
- package/dist/generators/spring-data-relational/internal/dependencies.mjs +29 -8
- package/dist/generators/spring-data-relational/support/database-data.mjs +4 -0
- package/dist/generators/spring-data-relational/templates/src/main/java/_package_/repository/EntityManager_reactive.java.ejs +49 -8
- package/dist/generators/spring-data-relational/templates/src/test/java/_package_/config/SqlTestContainersSpringContextCustomizerFactory.java.ejs +1 -1
- package/dist/generators/upgrade/generator.mjs +3 -3
- package/dist/generators/vue/generator.mjs +25 -16
- package/dist/generators/vue/resources/package.json +29 -28
- package/dist/generators/vue/templates/package.json.ejs +4 -5
- package/dist/generators/vue/templates/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +10 -3
- package/dist/generators/vue/templates/src/main/webapp/app/core/jhi-navbar/jhi-navbar.vue.ejs +3 -4
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-details.vue.ejs +1 -2
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.component.spec.ts.ejs +1 -1
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.component.ts.ejs +3 -3
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.vue.ejs +2 -15
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.service.ts.ejs +1 -1
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.vue.ejs +14 -7
- package/dist/generators/vue/templates/src/main/webapp/app/router/index.ts.ejs +8 -1
- package/dist/generators/vue/templates/webpack/webpack.microfrontend.js.jhi.vue.ejs +19 -34
- package/dist/jdl/converters/jdl-to-json/jdl-to-json-basic-entity-converter.js +1 -0
- package/dist/jdl/converters/jdl-to-json/jdl-to-json-option-converter.js +2 -2
- package/dist/jdl/converters/jdl-to-json/jdl-to-json-relationship-converter.js +1 -1
- package/dist/jdl/converters/jdl-to-json/jdl-without-application-to-json-converter.js +1 -1
- package/dist/jdl/converters/json-to-jdl-converter.js +1 -1
- package/dist/jdl/converters/json-to-jdl-entity-converter.js +1 -0
- package/dist/jdl/converters/parsed-jdl-to-jdl-object/application-converter.js +1 -17
- package/dist/jdl/converters/parsed-jdl-to-jdl-object/entity-converter.js +5 -0
- package/dist/jdl/converters/parsed-jdl-to-jdl-object/parsed-jdl-to-jdl-object-converter.js +0 -27
- package/dist/jdl/exporters/applications/jhipster-application-formatter.js +17 -1
- package/dist/jdl/exporters/config.js +11 -0
- package/dist/jdl/exporters/export-utils.js +2 -13
- package/dist/jdl/exporters/jhipster-entity-exporter.js +3 -2
- package/dist/jdl/index.js +1 -0
- package/dist/jdl/jdl-importer.js +6 -2
- package/dist/jdl/jhipster/default-application-options.js +1 -1
- package/dist/jdl/jhipster/field-types.js +1 -1
- package/dist/jdl/jhipster/json-entity.js +6 -0
- package/dist/jdl/models/jdl-application-configuration-factory.js +34 -2
- package/dist/jdl/models/jdl-application-configuration.js +6 -3
- package/dist/jdl/models/jdl-application-factory.js +2 -2
- package/dist/jdl/models/jdl-application.js +12 -3
- package/dist/jdl/models/jdl-entity.js +16 -1
- package/dist/jdl/models/jdl-field.js +13 -0
- package/dist/jdl/models/jdl-object.js +3 -3
- package/dist/jdl/models/jdl-relationship.js +23 -5
- package/dist/jdl/parsing/jdl-ast-builder-visitor.js +63 -7
- package/dist/jdl/parsing/jdl-parser.js +52 -6
- package/dist/jdl/parsing/lexer/application-tokens.js +2 -2
- package/dist/jdl/validators/entity-validator.js +4 -2
- package/dist/jdl/validators/enum-validator.js +4 -2
- package/dist/jdl/validators/jdl-with-application-validator.js +18 -8
- package/dist/jdl/validators/jdl-without-application-validator.js +30 -29
- package/dist/jdl/validators/validator.js +1 -1
- package/dist/testing/helpers.mjs +10 -3
- package/dist/types/cli/environment-builder.d.mts +2 -0
- package/dist/types/generators/angular/needle-api/needle-client-angular.d.mts +0 -1
- package/dist/types/generators/base/api.d.mts +12 -0
- package/dist/types/generators/base/support/config.d.mts +3 -3
- package/dist/types/generators/base/support/needles.d.mts +1 -1
- package/dist/types/generators/base-application/generator.d.mts +2 -2
- package/dist/types/generators/base-application/support/index.d.mts +1 -0
- package/dist/types/generators/base-application/support/prepare-entity.d.mts +6 -1
- package/dist/types/generators/base-application/support/update-application-entities-transform.d.mts +4 -0
- package/dist/types/generators/base-application/types/relationship.d.mts +4 -0
- package/dist/types/generators/base-core/generator.d.mts +7 -1
- package/dist/types/generators/bootstrap/support/auto-crlf-transform.d.mts +3 -2
- package/dist/types/generators/bootstrap/support/multi-step-transform/index.d.mts +3 -20
- package/dist/types/generators/bootstrap/support/multi-step-transform/template-file-fs.d.mts +15 -9
- package/dist/types/generators/bootstrap/support/multi-step-transform/template-file.d.mts +1 -0
- package/dist/types/generators/bootstrap-application-base/support/export-jdl-transform.d.mts +8 -0
- package/dist/types/generators/bootstrap-application-base/support/import-jdl-transform.d.mts +6 -0
- package/dist/types/generators/bootstrap-application-base/support/index.d.mts +2 -0
- package/dist/types/generators/client/support/entity-definition.d.mts +2 -2
- package/dist/types/generators/feign-client/types-export.d.ts +1 -0
- package/dist/types/generators/generator-constants.d.mts +52 -48
- package/dist/types/generators/generator-list.d.mts +1 -0
- package/dist/types/generators/java/support/package-info-transform.d.mts +1 -4
- package/dist/types/generators/project-name/support/name-resolver.d.mts +9 -1
- package/dist/types/generators/server/options/feign-client.d.mts +21 -0
- package/dist/types/generators/server/options/index.d.mts +1 -0
- package/dist/types/generators/server/support/templates/field-values.d.mts +1 -1
- package/dist/types/jdl/converters/json-to-jdl-converter.d.ts +1 -0
- package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/option-converter.d.ts +1 -1
- package/dist/types/jdl/exporters/config.d.ts +1 -0
- package/dist/types/jdl/index.d.ts +1 -0
- package/dist/types/jdl/jdl-importer.d.ts +1 -0
- package/dist/types/jdl/jhipster/json-entity.d.ts +2 -0
- package/dist/types/jdl/models/jdl-application-configuration-factory.d.ts +1 -0
- package/dist/types/jdl/models/jdl-application-configuration-option.d.ts +2 -2
- package/dist/types/jdl/models/jdl-application-configuration.d.ts +8 -6
- package/dist/types/jdl/models/jdl-application-factory.d.ts +1 -1
- package/dist/types/jdl/models/jdl-application.d.ts +8 -4
- package/dist/types/jdl/models/jdl-entity.d.ts +1 -0
- package/dist/types/jdl/models/jdl-object.d.ts +1 -1
- package/dist/types/jdl/models/jdl-relationship.d.ts +0 -18
- package/dist/types/jdl/models/list-jdl-application-configuration-option.d.ts +1 -1
- package/dist/types/jdl/parsing/jdl-ast-builder-visitor.d.ts +10 -0
- package/dist/types/jdl/parsing/jdl-parser.d.ts +3 -0
- package/dist/types/jdl/parsing/lexer/application-tokens.d.ts +1 -0
- package/dist/types/jdl/types/types.d.mts +2 -2
- package/dist/types/jdl/validators/entity-validator.d.ts +2 -2
- package/dist/types/jdl/validators/enum-validator.d.ts +2 -2
- package/dist/types/jdl/validators/validator.d.ts +4 -1
- package/package.json +41 -41
|
@@ -16,39 +16,28 @@
|
|
|
16
16
|
* See the License for the specific language governing permissions and
|
|
17
17
|
* limitations under the License.
|
|
18
18
|
*/
|
|
19
|
-
import {
|
|
20
|
-
import PQueue from 'p-queue';
|
|
21
|
-
import { isFilePending } from 'mem-fs-editor/state';
|
|
19
|
+
import { transform } from 'p-transform';
|
|
22
20
|
import TemplateFileFs from './template-file-fs.mjs';
|
|
23
21
|
// eslint-disable-next-line import/prefer-default-export
|
|
24
22
|
export const createMultiStepTransform = () => {
|
|
25
|
-
const twoStepTemplateQueue = new PQueue({ concurrency: 1, autoStart: false });
|
|
26
23
|
const templateFileFs = new TemplateFileFs({});
|
|
27
|
-
const
|
|
28
|
-
const duplex =
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
delete file.state;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
else if (isFilePending(file)) {
|
|
47
|
-
pendingFiles.push(file.path);
|
|
48
|
-
}
|
|
49
|
-
yield file;
|
|
24
|
+
const templateFiles = [];
|
|
25
|
+
const duplex = transform((file) => {
|
|
26
|
+
if (!templateFileFs.isTemplate(file.path)) {
|
|
27
|
+
throw new Error(`File ${file.path} is not supported`);
|
|
28
|
+
}
|
|
29
|
+
const templateFile = templateFileFs.add(file);
|
|
30
|
+
if (templateFile.rootTemplate) {
|
|
31
|
+
templateFiles.push(templateFile);
|
|
32
|
+
}
|
|
33
|
+
return undefined;
|
|
34
|
+
}, async function () {
|
|
35
|
+
for (const templateFile of templateFiles) {
|
|
36
|
+
const file = templateFile.file;
|
|
37
|
+
file.path = templateFile.basePath;
|
|
38
|
+
file.contents = Buffer.from(templateFile.render().concat('\n'));
|
|
39
|
+
this.push(templateFile.file);
|
|
50
40
|
}
|
|
51
|
-
await twoStepTemplateQueue.start().onIdle();
|
|
52
41
|
});
|
|
53
42
|
duplex.templateFileFs = templateFileFs;
|
|
54
43
|
return duplex;
|
|
@@ -21,6 +21,10 @@ import path from 'path';
|
|
|
21
21
|
import { minimatch } from 'minimatch';
|
|
22
22
|
import TemplateFile from './template-file.mjs';
|
|
23
23
|
export default class TemplateFileFs {
|
|
24
|
+
fragmentFiles;
|
|
25
|
+
rootFiles = [];
|
|
26
|
+
extension;
|
|
27
|
+
delimiter;
|
|
24
28
|
constructor(options = {}) {
|
|
25
29
|
this.extension = options.extension || 'jhi';
|
|
26
30
|
this.delimiter = options.delimiter || '&';
|
|
@@ -35,12 +39,14 @@ export default class TemplateFileFs {
|
|
|
35
39
|
isDerivedTemplate(filePath) {
|
|
36
40
|
return minimatch(filePath, `**/*.${this.extension}.*`, { dot: true });
|
|
37
41
|
}
|
|
38
|
-
add(
|
|
39
|
-
assert(
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
templateFile.
|
|
43
|
-
|
|
42
|
+
add(file) {
|
|
43
|
+
assert(file.contents, 'contents is required');
|
|
44
|
+
const templateFile = this.get(file.path);
|
|
45
|
+
templateFile.compile(file.path, file.contents.toString(), { delimiter: this.delimiter });
|
|
46
|
+
if (templateFile.rootTemplate) {
|
|
47
|
+
templateFile.file = file;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
44
50
|
this.get(templateFile.parentPath).addFragment(templateFile);
|
|
45
51
|
}
|
|
46
52
|
return templateFile;
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* limitations under the License.
|
|
18
18
|
*/
|
|
19
19
|
import { passthrough } from 'p-transform';
|
|
20
|
-
import {
|
|
20
|
+
import { isFileStateModified } from 'mem-fs-editor/state';
|
|
21
21
|
import prettier from 'prettier';
|
|
22
22
|
import prettierPluginJava from 'prettier-plugin-java';
|
|
23
23
|
import prettierPluginProperties from 'prettier-plugin-properties';
|
|
@@ -34,7 +34,7 @@ export const createPrettierTransform = async function (options = {}) {
|
|
|
34
34
|
const globExpression = extensions.includes(',') ? `**/*.{${extensions}}` : `**/*.${extensions}`;
|
|
35
35
|
const minimatch = new Minimatch(globExpression, { dot: true });
|
|
36
36
|
return passthrough(async (file) => {
|
|
37
|
-
if (!minimatch.match(file.path) ||
|
|
37
|
+
if (!minimatch.match(file.path) || !isFileStateModified(file)) {
|
|
38
38
|
return;
|
|
39
39
|
}
|
|
40
40
|
if (!file.contents) {
|
|
@@ -22,8 +22,6 @@ import { validations } from '../../jdl/jhipster/index.mjs';
|
|
|
22
22
|
import { stringifyApplicationData, derivedPrimaryKeyProperties, preparePostEntitiesCommonDerivedProperties, preparePostEntityCommonDerivedProperties, } from '../base-application/support/index.mjs';
|
|
23
23
|
import { GENERATOR_BOOTSTRAP_APPLICATION, GENERATOR_BOOTSTRAP_APPLICATION_CLIENT, GENERATOR_BOOTSTRAP_APPLICATION_SERVER, } from '../generator-list.mjs';
|
|
24
24
|
import { preparePostEntityServerDerivedProperties } from '../server/support/index.mjs';
|
|
25
|
-
import { getDefaultAppName } from '../project-name/support/index.mjs';
|
|
26
|
-
import { packageJson } from '../../lib/index.mjs';
|
|
27
25
|
import { loadStoredAppOptions } from '../app/support/index.mjs';
|
|
28
26
|
import { JHIPSTER_DOCUMENTATION_ARCHIVE_PATH, JHIPSTER_DOCUMENTATION_URL } from '../generator-constants.mjs';
|
|
29
27
|
const { Validations: { MAX, MIN, MAXLENGTH, MINLENGTH, MAXBYTES, MINBYTES, PATTERN }, SUPPORTED_VALIDATION_RULES, } = validations;
|
|
@@ -44,22 +42,6 @@ export default class BootstrapApplicationGenerator extends BaseApplicationGenera
|
|
|
44
42
|
await this.dependsOnJHipster(GENERATOR_BOOTSTRAP_APPLICATION_CLIENT);
|
|
45
43
|
await this.dependsOnJHipster(GENERATOR_BOOTSTRAP_APPLICATION_SERVER);
|
|
46
44
|
}
|
|
47
|
-
get configuring() {
|
|
48
|
-
return this.asConfiguringTaskGroup({
|
|
49
|
-
defaults() {
|
|
50
|
-
if (!this.options.reproducible) {
|
|
51
|
-
this.config.defaults({
|
|
52
|
-
jhipsterVersion: packageJson.version,
|
|
53
|
-
baseName: getDefaultAppName(this),
|
|
54
|
-
creationTimestamp: new Date().getTime(),
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
get [BaseApplicationGenerator.CONFIGURING]() {
|
|
61
|
-
return this.configuring;
|
|
62
|
-
}
|
|
63
45
|
get preparing() {
|
|
64
46
|
return this.asPreparingTaskGroup({
|
|
65
47
|
preparing({ application, applicationDefaults }) {
|
|
@@ -76,9 +58,6 @@ export default class BootstrapApplicationGenerator extends BaseApplicationGenera
|
|
|
76
58
|
if (application.clientFrameworkVue) {
|
|
77
59
|
prettierExtensions = `${prettierExtensions},vue`;
|
|
78
60
|
}
|
|
79
|
-
if (application.clientFrameworkSvelte) {
|
|
80
|
-
prettierExtensions = `${prettierExtensions},svelte`;
|
|
81
|
-
}
|
|
82
61
|
}
|
|
83
62
|
if (!application.skipServer) {
|
|
84
63
|
prettierExtensions = `${prettierExtensions},java`;
|
|
@@ -149,6 +128,16 @@ export default class BootstrapApplicationGenerator extends BaseApplicationGenera
|
|
|
149
128
|
postPreparingEntities({ entities }) {
|
|
150
129
|
preparePostEntitiesCommonDerivedProperties(entities);
|
|
151
130
|
},
|
|
131
|
+
checkProperties({ entities }) {
|
|
132
|
+
for (const entity of entities) {
|
|
133
|
+
const properties = [...entity.fields.map(entity => entity.propertyName), ...entity.relationships.map(rel => rel.propertyName)];
|
|
134
|
+
if (new Set(properties).size !== properties.length) {
|
|
135
|
+
// Has duplicated properties.
|
|
136
|
+
const duplicated = [...new Set(properties.filter((v, i, a) => a.indexOf(v) !== i))];
|
|
137
|
+
throw new Error(`You have duplicate properties in entity ${entity.name}: ${duplicated.join(', ')}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
},
|
|
152
141
|
});
|
|
153
142
|
}
|
|
154
143
|
get [BaseApplicationGenerator.DEFAULT]() {
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { parseCreationTimestamp } from '../base/support/timestamp.mjs';
|
|
2
|
+
const command = {
|
|
3
|
+
options: {
|
|
4
|
+
baseName: {
|
|
5
|
+
description: 'Application base name',
|
|
6
|
+
type: String,
|
|
7
|
+
scope: 'storage',
|
|
8
|
+
},
|
|
9
|
+
skipJhipsterDependencies: {
|
|
10
|
+
description: "Don't write jhipster dependencies to package.json.",
|
|
11
|
+
type: Boolean,
|
|
12
|
+
scope: 'storage',
|
|
13
|
+
},
|
|
14
|
+
creationTimestamp: {
|
|
15
|
+
description: 'Project creation timestamp (used for reproducible builds)',
|
|
16
|
+
type: parseCreationTimestamp,
|
|
17
|
+
scope: 'storage',
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
configs: {
|
|
21
|
+
jdlStore: {
|
|
22
|
+
description: 'JDL store',
|
|
23
|
+
cli: {
|
|
24
|
+
type: String,
|
|
25
|
+
},
|
|
26
|
+
scope: 'storage',
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
export default command;
|
|
@@ -21,6 +21,7 @@ import os from 'os';
|
|
|
21
21
|
import * as _ from 'lodash-es';
|
|
22
22
|
import chalk from 'chalk';
|
|
23
23
|
import { passthrough } from '@yeoman/transform';
|
|
24
|
+
import { isFileStateModified } from 'mem-fs-editor/state';
|
|
24
25
|
import BaseApplicationGenerator from '../base-application/index.mjs';
|
|
25
26
|
import { addFakerToEntity, loadEntitiesAnnotations, loadEntitiesOtherSide, stringifyApplicationData, prepareEntity as prepareEntityForTemplates, prepareField as prepareFieldForTemplates, prepareRelationship, } from '../base-application/support/index.mjs';
|
|
26
27
|
import { createUserEntity } from './utils.mjs';
|
|
@@ -29,6 +30,8 @@ import { GENERATOR_BOOTSTRAP, GENERATOR_BOOTSTRAP_APPLICATION_BASE, GENERATOR_CO
|
|
|
29
30
|
import { packageJson } from '../../lib/index.mjs';
|
|
30
31
|
import { loadLanguagesConfig } from '../languages/support/index.mjs';
|
|
31
32
|
import { loadAppConfig, loadDerivedAppConfig, loadStoredAppOptions } from '../app/support/index.mjs';
|
|
33
|
+
import { exportJDLTransform, importJDLTransform } from './support/index.mjs';
|
|
34
|
+
import command from './command.mjs';
|
|
32
35
|
const isWin32 = os.platform() === 'win32';
|
|
33
36
|
const { lowerFirst } = _;
|
|
34
37
|
export default class BootstrapApplicationBase extends BaseApplicationGenerator {
|
|
@@ -45,7 +48,8 @@ export default class BootstrapApplicationBase extends BaseApplicationGenerator {
|
|
|
45
48
|
if (this.delegateToBlueprint) {
|
|
46
49
|
throw new Error('Only sbs blueprint is supported');
|
|
47
50
|
}
|
|
48
|
-
await this.dependsOnJHipster(GENERATOR_PROJECT_NAME);
|
|
51
|
+
const projectNameGenerator = (await this.dependsOnJHipster(GENERATOR_PROJECT_NAME));
|
|
52
|
+
projectNameGenerator.javaApplication = true;
|
|
49
53
|
await this.composeWithJHipster(GENERATOR_BOOTSTRAP);
|
|
50
54
|
}
|
|
51
55
|
get initializing() {
|
|
@@ -53,6 +57,19 @@ export default class BootstrapApplicationBase extends BaseApplicationGenerator {
|
|
|
53
57
|
displayLogo() {
|
|
54
58
|
this.printDestinationInfo();
|
|
55
59
|
},
|
|
60
|
+
parseOptions() {
|
|
61
|
+
this.parseJHipsterCommand(command);
|
|
62
|
+
},
|
|
63
|
+
async jdlStore() {
|
|
64
|
+
if (this.jhipsterConfig.jdlStore) {
|
|
65
|
+
this.logger.warn('Storing configuration inside a JDL file is experimental');
|
|
66
|
+
this.logger.info(`Using JDL store ${this.jhipsterConfig.jdlStore}`);
|
|
67
|
+
const destinationPath = this.destinationPath();
|
|
68
|
+
const jdlStorePath = this.destinationPath(this.jhipsterConfig.jdlStore);
|
|
69
|
+
this.features.commitTransformFactory = () => exportJDLTransform({ destinationPath, jdlStorePath });
|
|
70
|
+
await this.pipeline({ refresh: true, pendingFiles: false }, importJDLTransform({ destinationPath, jdlStorePath }));
|
|
71
|
+
}
|
|
72
|
+
},
|
|
56
73
|
});
|
|
57
74
|
}
|
|
58
75
|
get [BaseApplicationGenerator.INITIALIZING]() {
|
|
@@ -112,9 +129,14 @@ export default class BootstrapApplicationBase extends BaseApplicationGenerator {
|
|
|
112
129
|
get configuringEachEntity() {
|
|
113
130
|
return this.asConfiguringEachEntityTaskGroup({
|
|
114
131
|
configureEntity({ entityStorage, entityConfig }) {
|
|
115
|
-
entityStorage.defaults({ fields: [], relationships: [] });
|
|
116
|
-
if (entityConfig.changelogDate
|
|
117
|
-
entityConfig.changelogDate =
|
|
132
|
+
entityStorage.defaults({ fields: [], relationships: [], annotations: {} });
|
|
133
|
+
if (entityConfig.changelogDate) {
|
|
134
|
+
entityConfig.annotations.changelogDate = entityConfig.changelogDate;
|
|
135
|
+
delete entityConfig.changelogDate;
|
|
136
|
+
}
|
|
137
|
+
if (!entityConfig.annotations.changelogDate) {
|
|
138
|
+
entityConfig.annotations.changelogDate = this.dateFormatForLiquibase();
|
|
139
|
+
entityStorage.save();
|
|
118
140
|
}
|
|
119
141
|
},
|
|
120
142
|
configureRelationships({ entityName, entityStorage, entityConfig }) {
|
|
@@ -171,8 +193,9 @@ export default class BootstrapApplicationBase extends BaseApplicationGenerator {
|
|
|
171
193
|
}
|
|
172
194
|
}
|
|
173
195
|
else {
|
|
174
|
-
|
|
196
|
+
let entity = entityStorage.getAll();
|
|
175
197
|
entity.name = entity.name ?? entityName;
|
|
198
|
+
entity = { ...entity, ...entity.annotations };
|
|
176
199
|
this.sharedData.setEntity(entityName, entity);
|
|
177
200
|
}
|
|
178
201
|
}
|
|
@@ -243,18 +266,20 @@ export default class BootstrapApplicationBase extends BaseApplicationGenerator {
|
|
|
243
266
|
}
|
|
244
267
|
}
|
|
245
268
|
};
|
|
246
|
-
this.queueTransformStream(
|
|
247
|
-
|
|
269
|
+
this.queueTransformStream({
|
|
270
|
+
name: 'updating package.json dependencies versions',
|
|
271
|
+
filter: file => isFileStateModified(file) && file.path.startsWith(this.destinationPath()) && isPackageJson(file),
|
|
272
|
+
refresh: false,
|
|
273
|
+
}, passthrough(file => {
|
|
274
|
+
const contents = file.contents.toString();
|
|
275
|
+
if (contents.includes('null')) {
|
|
248
276
|
const content = JSON.parse(file.contents.toString());
|
|
249
277
|
populateNullValues(content.dependencies);
|
|
250
278
|
populateNullValues(content.devDependencies);
|
|
251
279
|
populateNullValues(content.peerDependencies);
|
|
252
280
|
file.contents = Buffer.from(`${JSON.stringify(content, null, 2)}\n`);
|
|
253
281
|
}
|
|
254
|
-
})
|
|
255
|
-
name: 'updating package.json dependency versions',
|
|
256
|
-
streamOptions: { filter: isPackageJson },
|
|
257
|
-
});
|
|
282
|
+
}));
|
|
258
283
|
},
|
|
259
284
|
});
|
|
260
285
|
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { basename, join } from 'path';
|
|
2
|
+
import { Duplex } from 'stream';
|
|
3
|
+
import { loadFile } from 'mem-fs';
|
|
4
|
+
import { Minimatch } from 'minimatch';
|
|
5
|
+
import { setModifiedFileState } from 'mem-fs-editor/state';
|
|
6
|
+
import { GENERATOR_JHIPSTER } from '../../generator-constants.mjs';
|
|
7
|
+
import { getJDLObjectFromSingleApplication } from '../../../jdl/converters/json-to-jdl-converter.js';
|
|
8
|
+
export const exportJDLTransform = ({ destinationPath, jdlStorePath, throwOnMissingConfig = true, keepEntitiesConfig, }) => Duplex.from(async function* (files) {
|
|
9
|
+
const yoRcFilePath = join(destinationPath, '.yo-rc.json');
|
|
10
|
+
const entitiesMatcher = new Minimatch(`${destinationPath}/.jhipster/*.json`);
|
|
11
|
+
const entitiesFiles = [];
|
|
12
|
+
const entitiesMap = new Map();
|
|
13
|
+
let yoRcFileInMemory;
|
|
14
|
+
let jdlStoreFileInMemory;
|
|
15
|
+
for await (const file of files) {
|
|
16
|
+
if (file.path === yoRcFilePath) {
|
|
17
|
+
yoRcFileInMemory = file;
|
|
18
|
+
}
|
|
19
|
+
else if (file.path === jdlStorePath) {
|
|
20
|
+
jdlStoreFileInMemory = file;
|
|
21
|
+
}
|
|
22
|
+
else if (file.contents && entitiesMatcher.match(file.path)) {
|
|
23
|
+
entitiesMap.set(basename(file.path).replace('.json', ''), JSON.parse(file.contents.toString()));
|
|
24
|
+
entitiesFiles.push(file);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
yield file;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const yoRcFile = loadFile(yoRcFilePath);
|
|
31
|
+
const yoRcContents = yoRcFileInMemory?.contents ?? yoRcFile.contents;
|
|
32
|
+
if (yoRcContents) {
|
|
33
|
+
const contents = JSON.parse(yoRcContents.toString());
|
|
34
|
+
if (contents[GENERATOR_JHIPSTER]?.jdlStore) {
|
|
35
|
+
const { jdlStore, jwtSecretKey, rememberMeKey, jhipsterVersion, creationTimestamp, incrementalChangelog, ...rest } = contents[GENERATOR_JHIPSTER];
|
|
36
|
+
const jdlObject = getJDLObjectFromSingleApplication({ ...contents, [GENERATOR_JHIPSTER]: { ...rest, incrementalChangelog } }, entitiesMap);
|
|
37
|
+
const jdlContents = jdlObject.toString();
|
|
38
|
+
const jdlStoreFile = jdlStoreFileInMemory ?? loadFile(jdlStorePath);
|
|
39
|
+
jdlStoreFile.contents = Buffer.from(jdlContents);
|
|
40
|
+
setModifiedFileState(jdlStoreFile);
|
|
41
|
+
jdlStoreFile.conflicter = 'force';
|
|
42
|
+
yield jdlStoreFile;
|
|
43
|
+
yoRcFile.contents = Buffer.from(JSON.stringify({ [GENERATOR_JHIPSTER]: { jdlStore, jwtSecretKey, rememberMeKey, jhipsterVersion, creationTimestamp } }, null, 2));
|
|
44
|
+
setModifiedFileState(yoRcFile);
|
|
45
|
+
yoRcFile.conflicter = 'force';
|
|
46
|
+
yield yoRcFile;
|
|
47
|
+
// Incremental changelog requires entities files to be kept for incremental change at next run
|
|
48
|
+
if (keepEntitiesConfig || incrementalChangelog) {
|
|
49
|
+
for (const file of entitiesFiles) {
|
|
50
|
+
yield file;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
else if (throwOnMissingConfig) {
|
|
55
|
+
throw new Error(`File ${yoRcFilePath} is not a valid JHipster configuration file`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else if (throwOnMissingConfig) {
|
|
59
|
+
throw new Error(`File ${yoRcFilePath} has no contents`);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Duplex } from 'stream';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { loadFile } from 'mem-fs';
|
|
4
|
+
import { Minimatch } from 'minimatch';
|
|
5
|
+
import { upperFirst } from 'lodash-es';
|
|
6
|
+
import { GENERATOR_JHIPSTER } from '../../generator-constants.mjs';
|
|
7
|
+
import { createImporterFromContent } from '../../../jdl/jdl-importer.js';
|
|
8
|
+
import { mergeYoRcContent } from '../../../jdl/index.js';
|
|
9
|
+
export const importJDLTransform = ({ destinationPath, jdlStorePath }) => Duplex.from(async function* (files) {
|
|
10
|
+
const yoRcFilePath = join(destinationPath, '.yo-rc.json');
|
|
11
|
+
const entitiesFolder = join(destinationPath, '.jhipster');
|
|
12
|
+
const entitiesMatcher = new Minimatch(`${entitiesFolder}/*.json`);
|
|
13
|
+
const entityFields = [];
|
|
14
|
+
let jdlStoreFileInMemory;
|
|
15
|
+
let yoRcFileInMemory;
|
|
16
|
+
for await (const file of files) {
|
|
17
|
+
if (file.path === jdlStorePath) {
|
|
18
|
+
jdlStoreFileInMemory = file;
|
|
19
|
+
yield jdlStoreFileInMemory;
|
|
20
|
+
}
|
|
21
|
+
else if (file.path === yoRcFilePath) {
|
|
22
|
+
yoRcFileInMemory = file;
|
|
23
|
+
}
|
|
24
|
+
else if (entitiesMatcher.match(file.path)) {
|
|
25
|
+
entityFields.push(file);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
yield file;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const jdlStoreContents = jdlStoreFileInMemory?.contents ?? loadFile(jdlStorePath).contents;
|
|
32
|
+
if (!jdlStoreContents) {
|
|
33
|
+
if (yoRcFileInMemory) {
|
|
34
|
+
yield yoRcFileInMemory;
|
|
35
|
+
}
|
|
36
|
+
for (const file of entityFields) {
|
|
37
|
+
yield file;
|
|
38
|
+
}
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (entityFields.length > 0) {
|
|
42
|
+
throw new Error('Entities configuration files are not supported by jdlStore');
|
|
43
|
+
}
|
|
44
|
+
const importer = createImporterFromContent(jdlStoreContents.toString());
|
|
45
|
+
const importState = importer.import();
|
|
46
|
+
const applicationWithEntities = Object.values(importState.exportedApplicationsWithEntities);
|
|
47
|
+
if (applicationWithEntities.length !== 1) {
|
|
48
|
+
throw new Error(`JDL stores supports only jdls with 1 application, found ${applicationWithEntities.length}`);
|
|
49
|
+
}
|
|
50
|
+
const { config, namespaceConfigs, entities } = applicationWithEntities[0];
|
|
51
|
+
const yoRcFile = loadFile(yoRcFilePath);
|
|
52
|
+
const yoRcContents = yoRcFileInMemory?.contents ?? yoRcFile.contents;
|
|
53
|
+
yoRcFile.contents = Buffer.from(JSON.stringify(mergeYoRcContent(yoRcContents ? JSON.parse(yoRcContents.toString()) : {}, {
|
|
54
|
+
...namespaceConfigs,
|
|
55
|
+
[GENERATOR_JHIPSTER]: config,
|
|
56
|
+
}), null, 2));
|
|
57
|
+
yield yoRcFile;
|
|
58
|
+
for (const entity of entities) {
|
|
59
|
+
const configFile = join(entitiesFolder, `${upperFirst(entity.name)}.json`);
|
|
60
|
+
const file = loadFile(configFile);
|
|
61
|
+
file.contents = Buffer.from(JSON.stringify(entity, null, 2));
|
|
62
|
+
yield file;
|
|
63
|
+
}
|
|
64
|
+
});
|
|
@@ -122,10 +122,10 @@ export default class BoostrapApplicationServer extends BaseApplicationGenerator
|
|
|
122
122
|
prepareEntity({ entity }) {
|
|
123
123
|
prepareEntityServerForTemplates(entity);
|
|
124
124
|
},
|
|
125
|
-
preparePrimaryKey({ entity }) {
|
|
125
|
+
preparePrimaryKey({ entity, application }) {
|
|
126
126
|
// If primaryKey doesn't exist, create it.
|
|
127
127
|
if (!entity.embedded && !entity.primaryKey) {
|
|
128
|
-
prepareEntityPrimaryKeyForTemplates(entity,
|
|
128
|
+
prepareEntityPrimaryKeyForTemplates.call(this, { entity, application });
|
|
129
129
|
}
|
|
130
130
|
},
|
|
131
131
|
});
|
|
@@ -20,6 +20,7 @@ import chalk from 'chalk';
|
|
|
20
20
|
import * as _ from 'lodash-es';
|
|
21
21
|
import { testFrameworkTypes } from '../../jdl/jhipster/index.mjs';
|
|
22
22
|
import { APPLICATION_TYPE_GATEWAY, APPLICATION_TYPE_MICROSERVICE, clientFrameworkTypes } from '../../jdl/index.js';
|
|
23
|
+
import { GENERATOR_COMMON } from '../generator-list.mjs';
|
|
23
24
|
const { CYPRESS } = testFrameworkTypes;
|
|
24
25
|
const { intersection } = _;
|
|
25
26
|
const { ANGULAR, REACT, VUE, NO: CLIENT_FRAMEWORK_NO } = clientFrameworkTypes;
|
|
@@ -116,5 +117,6 @@ const command = {
|
|
|
116
117
|
},
|
|
117
118
|
},
|
|
118
119
|
},
|
|
120
|
+
import: [GENERATOR_COMMON],
|
|
119
121
|
};
|
|
120
122
|
export default command;
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
"dayjs": "1.11.10"
|
|
4
4
|
},
|
|
5
5
|
"devDependencies": {
|
|
6
|
-
"@cypress/code-coverage": "3.12.
|
|
6
|
+
"@cypress/code-coverage": "3.12.13",
|
|
7
7
|
"babel-loader": "9.1.3",
|
|
8
8
|
"babel-plugin-istanbul": "6.1.1",
|
|
9
|
-
"cypress": "13.
|
|
9
|
+
"cypress": "13.6.1",
|
|
10
10
|
"cypress-audit": "1.1.0",
|
|
11
11
|
"eslint-plugin-cypress": "2.15.1",
|
|
12
|
-
"lighthouse": "11.
|
|
12
|
+
"lighthouse": "11.3.0",
|
|
13
13
|
"nyc": "15.1.0",
|
|
14
|
-
"swagger-ui-dist": "5.
|
|
14
|
+
"swagger-ui-dist": "5.10.3"
|
|
15
15
|
}
|
|
16
16
|
}
|
|
@@ -34,14 +34,14 @@ const { ANGULAR, VUE } = clientFrameworkTypes;
|
|
|
34
34
|
* @param {string} dto - dto
|
|
35
35
|
* @param [customDateType]
|
|
36
36
|
* @param {boolean} embedded - either the actual entity is embedded or not
|
|
37
|
-
* @param { string}
|
|
37
|
+
* @param { string} clientFramework
|
|
38
38
|
* @returns variablesWithTypes: Array
|
|
39
39
|
*/
|
|
40
|
-
const generateEntityClientFields = (primaryKey, fields, relationships, dto, customDateType = 'dayjs.Dayjs', embedded = false,
|
|
40
|
+
const generateEntityClientFields = (primaryKey, fields, relationships, dto, customDateType = 'dayjs.Dayjs', embedded = false, clientFramework = ANGULAR) => {
|
|
41
41
|
const variablesWithTypes = [];
|
|
42
42
|
if (!embedded && primaryKey) {
|
|
43
43
|
const tsKeyType = getTypescriptKeyType(primaryKey);
|
|
44
|
-
if (
|
|
44
|
+
if (clientFramework === VUE) {
|
|
45
45
|
variablesWithTypes.push(`id?: ${tsKeyType}`);
|
|
46
46
|
}
|
|
47
47
|
}
|
|
@@ -109,7 +109,7 @@ The service worker initialization code is commented out by default. To enable it
|
|
|
109
109
|
Note: [Workbox](https://developers.google.com/web/tools/workbox/) powers JHipster's service worker. It dynamically generates the `service-worker.js` file.
|
|
110
110
|
<%_ } _%>
|
|
111
111
|
<%_ if (clientFrameworkAngular) { _%>
|
|
112
|
-
The service worker initialization code is disabled by default. To enable it, uncomment the following code in `<%= clientSrcDir %>app/app.
|
|
112
|
+
The service worker initialization code is disabled by default. To enable it, uncomment the following code in `<%= clientSrcDir %>app/app.config.ts`:
|
|
113
113
|
|
|
114
114
|
```typescript
|
|
115
115
|
ServiceWorkerModule.register('ngsw-worker.js', { enabled: false }),
|
|
@@ -132,7 +132,7 @@ To benefit from TypeScript type definitions from [DefinitelyTyped][] repository
|
|
|
132
132
|
|
|
133
133
|
Then you would import the JS and CSS files specified in library's installation instructions so that [Webpack][] knows about them:
|
|
134
134
|
<%_ if (clientFrameworkAngular) { _%>
|
|
135
|
-
Edit [<%= clientSrcDir %>app/app.
|
|
135
|
+
Edit [<%= clientSrcDir %>app/app.config.ts](<%= clientSrcDir %>app/app.config.ts) file:
|
|
136
136
|
|
|
137
137
|
```
|
|
138
138
|
import 'leaflet/dist/leaflet.js';
|
|
@@ -151,7 +151,7 @@
|
|
|
151
151
|
left: -8px;
|
|
152
152
|
width: 24px;
|
|
153
153
|
height: 10px;
|
|
154
|
-
background-image: url('
|
|
154
|
+
background-image: url('/content/images/logo-jhipster.png');
|
|
155
155
|
background-size: contain;
|
|
156
156
|
-webkit-animation: lds-pacman-3 1s linear infinite;
|
|
157
157
|
animation: lds-pacman-3 1.5s linear infinite;
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
</p>
|
|
44
44
|
<![endif]-->
|
|
45
45
|
<%_ if (clientFrameworkAngular) { _%>
|
|
46
|
-
<<%= jhiPrefixDashed %>-
|
|
46
|
+
<<%= jhiPrefixDashed %>-app>
|
|
47
47
|
<%_ } else { _%>
|
|
48
48
|
<div id="<% if (clientFrameworkReact) { %>root<% } else { %>app<% } %>">
|
|
49
49
|
<%_ } _%>
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
</div>
|
|
96
96
|
</div>
|
|
97
97
|
<%_ if (clientFrameworkAngular) { _%>
|
|
98
|
-
</<%= jhiPrefixDashed %>-
|
|
98
|
+
</<%= jhiPrefixDashed %>-app>
|
|
99
99
|
<%_ } else { _%>
|
|
100
100
|
</div>
|
|
101
101
|
<%_ } _%>
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
// Register sections and max allowed fragments, 0 for unlimited.
|
|
21
21
|
fragments.registerSections({
|
|
22
22
|
importsSection:0,
|
|
23
|
+
configSection: 0,
|
|
23
24
|
moduleFederationSection: 0,
|
|
24
25
|
pluginsSection: 0,
|
|
25
26
|
});
|
|
@@ -28,7 +29,18 @@ _&>
|
|
|
28
29
|
const ModuleFederationPlugin = require('webpack/lib/container/ModuleFederationPlugin');
|
|
29
30
|
<&- fragments.importsSection() &>
|
|
30
31
|
const packageJson = require('../package.json');
|
|
31
|
-
|
|
32
|
+
// Microfrontend api, should match across gateway and microservices.
|
|
33
|
+
const apiVersion = '0.0.1';
|
|
34
|
+
|
|
35
|
+
const sharedDefaults = { singleton: true, strictVersion: true, requiredVersion: apiVersion };
|
|
36
|
+
const shareMappings = (...mappings) => Object.fromEntries(mappings.map(map => [map, { ...sharedDefaults, version: apiVersion }]));
|
|
37
|
+
|
|
38
|
+
const shareDependencies = ({ skipList = [] } = {}) =>
|
|
39
|
+
Object.fromEntries(
|
|
40
|
+
Object.entries(packageJson.dependencies)
|
|
41
|
+
.filter(([dependency]) => !skipList.includes(dependency))
|
|
42
|
+
.map(([dependency, version]) => [dependency, { ...sharedDefaults, version, requiredVersion: version }]),
|
|
43
|
+
);
|
|
32
44
|
|
|
33
45
|
module.exports = ({ serve }) => {
|
|
34
46
|
return {
|
|
@@ -37,6 +49,7 @@ module.exports = ({ serve }) => {
|
|
|
37
49
|
chunkIds: 'named',
|
|
38
50
|
runtimeChunk: false,
|
|
39
51
|
},
|
|
52
|
+
<&- fragments.configSection() &>
|
|
40
53
|
plugins: [
|
|
41
54
|
new ModuleFederationPlugin({
|
|
42
55
|
<%_ if (applicationTypeMicroservice) { _%>
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { GENERATOR_BOOTSTRAP_APPLICATION_BASE } from '../generator-list.mjs';
|
|
1
2
|
const command = {
|
|
2
3
|
options: {
|
|
3
4
|
prettierTabWidth: {
|
|
@@ -11,5 +12,6 @@ const command = {
|
|
|
11
12
|
scope: 'storage',
|
|
12
13
|
},
|
|
13
14
|
},
|
|
15
|
+
import: [GENERATOR_BOOTSTRAP_APPLICATION_BASE],
|
|
14
16
|
};
|
|
15
17
|
export default command;
|