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
|
@@ -22,6 +22,7 @@ import { upperFirst } from '../utils/string-utils.js';
|
|
|
22
22
|
* The JSONEntity class represents a read-to-be exported to JSON entity.
|
|
23
23
|
*/
|
|
24
24
|
class JSONEntity {
|
|
25
|
+
annotations;
|
|
25
26
|
/**
|
|
26
27
|
* Creates a new JSONEntity instance.
|
|
27
28
|
* @param args the entity configuration, keys:
|
|
@@ -46,6 +47,7 @@ class JSONEntity {
|
|
|
46
47
|
const merged = merge(getDefaults(args.entityName), args);
|
|
47
48
|
this.name = merged.name;
|
|
48
49
|
this.fields = merged.fields;
|
|
50
|
+
this.annotations = merged.annotations;
|
|
49
51
|
this.relationships = merged.relationships;
|
|
50
52
|
this.documentation = merged.documentation;
|
|
51
53
|
this.entityTableName = merged.entityTableName;
|
|
@@ -100,6 +102,9 @@ class JSONEntity {
|
|
|
100
102
|
this[optionName] = options[optionName];
|
|
101
103
|
});
|
|
102
104
|
}
|
|
105
|
+
setAnnotations(annotations = {}) {
|
|
106
|
+
Object.assign(this.annotations, annotations);
|
|
107
|
+
}
|
|
103
108
|
}
|
|
104
109
|
export default JSONEntity;
|
|
105
110
|
function getDefaults(entityName) {
|
|
@@ -108,5 +113,6 @@ function getDefaults(entityName) {
|
|
|
108
113
|
fields: [],
|
|
109
114
|
relationships: [],
|
|
110
115
|
applications: [],
|
|
116
|
+
annotations: {},
|
|
111
117
|
};
|
|
112
118
|
}
|
|
@@ -32,12 +32,44 @@ export default function createApplicationConfigurationFromObject(configurationOb
|
|
|
32
32
|
logger.debug(`Unrecognized application option name and value: '${optionName}' and '${optionValue}'.`);
|
|
33
33
|
return;
|
|
34
34
|
}
|
|
35
|
-
configuration.setOption(
|
|
35
|
+
configuration.setOption(createApplicationJDLConfigurationOption(optionName, optionValue));
|
|
36
36
|
});
|
|
37
37
|
return configuration;
|
|
38
38
|
}
|
|
39
|
-
function
|
|
39
|
+
export function createApplicationNamespaceConfigurationFromObject(parsedNamespaceConfigs = {}) {
|
|
40
|
+
return Object.entries(parsedNamespaceConfigs).map(([namespace, parsedConfig]) => {
|
|
41
|
+
const configuration = new JDLApplicationConfiguration(namespace);
|
|
42
|
+
for (const [optionName, optionValue] of Object.entries(parsedConfig)) {
|
|
43
|
+
configuration.setOption(createUnknownJDLConfigurationOption(optionName, optionValue));
|
|
44
|
+
}
|
|
45
|
+
return configuration;
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
function createUnknownJDLConfigurationOption(name, value) {
|
|
49
|
+
let type;
|
|
50
|
+
if (typeof value === 'boolean') {
|
|
51
|
+
type = 'boolean';
|
|
52
|
+
}
|
|
53
|
+
else if (/^\d+$/.test(value)) {
|
|
54
|
+
value = parseInt(value, 10);
|
|
55
|
+
type = 'integer';
|
|
56
|
+
}
|
|
57
|
+
else if (Array.isArray(value)) {
|
|
58
|
+
type = 'list';
|
|
59
|
+
}
|
|
60
|
+
else if (typeof value === 'string') {
|
|
61
|
+
type = 'string';
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
throw new Error(`Unknown value type for option ${name}`);
|
|
65
|
+
}
|
|
66
|
+
return createJDLConfigurationOption(type, name, value);
|
|
67
|
+
}
|
|
68
|
+
function createApplicationJDLConfigurationOption(name, value) {
|
|
40
69
|
const type = applicationDefinition.getTypeForOption(name);
|
|
70
|
+
return createJDLConfigurationOption(type, name, value);
|
|
71
|
+
}
|
|
72
|
+
function createJDLConfigurationOption(type, name, value) {
|
|
41
73
|
switch (type) {
|
|
42
74
|
case 'string':
|
|
43
75
|
return new StringJDLApplicationConfigurationOption(name, value, applicationDefinition.shouldTheValueBeQuoted(name));
|
|
@@ -20,8 +20,10 @@ import ApplicationOptions from '../jhipster/application-options.js';
|
|
|
20
20
|
const { OptionNames } = ApplicationOptions;
|
|
21
21
|
export default class JDLApplicationConfiguration {
|
|
22
22
|
options;
|
|
23
|
-
|
|
23
|
+
namespace;
|
|
24
|
+
constructor(namespace) {
|
|
24
25
|
this.options = {};
|
|
26
|
+
this.namespace = namespace;
|
|
25
27
|
}
|
|
26
28
|
hasOption(optionName) {
|
|
27
29
|
if (!optionName) {
|
|
@@ -54,12 +56,13 @@ export default class JDLApplicationConfiguration {
|
|
|
54
56
|
}
|
|
55
57
|
toString(indent = 0) {
|
|
56
58
|
const spaceBeforeConfigKeyword = ' '.repeat(indent);
|
|
59
|
+
const namespace = this.namespace ? `:${this.namespace}` : '';
|
|
57
60
|
if (Object.keys(this.options).length === 0) {
|
|
58
|
-
return `${spaceBeforeConfigKeyword}config {}`;
|
|
61
|
+
return `${spaceBeforeConfigKeyword}config${namespace} {}`;
|
|
59
62
|
}
|
|
60
63
|
const spaceBeforeOption = ' '.repeat(2 * indent);
|
|
61
64
|
const config = getFormattedConfigOptionsString(this.options, spaceBeforeOption);
|
|
62
|
-
return `${spaceBeforeConfigKeyword}config {
|
|
65
|
+
return `${spaceBeforeConfigKeyword}config${namespace} {
|
|
63
66
|
${config}
|
|
64
67
|
${spaceBeforeConfigKeyword}}`;
|
|
65
68
|
}
|
|
@@ -22,6 +22,6 @@ import JDLApplication from './jdl-application.js';
|
|
|
22
22
|
* @param {Object} config - the application configuration.
|
|
23
23
|
* @returns {JDLApplication} the created JDL application.
|
|
24
24
|
*/
|
|
25
|
-
export default function createJDLApplication(config
|
|
26
|
-
return new JDLApplication({ config: { baseName: 'jhipster', ...config } });
|
|
25
|
+
export default function createJDLApplication(config, namespaceConfigs) {
|
|
26
|
+
return new JDLApplication({ config: { baseName: 'jhipster', ...config }, namespaceConfigs });
|
|
27
27
|
}
|
|
@@ -16,15 +16,17 @@
|
|
|
16
16
|
* See the License for the specific language governing permissions and
|
|
17
17
|
* limitations under the License.
|
|
18
18
|
*/
|
|
19
|
-
import createApplicationConfigurationFromObject from './jdl-application-configuration-factory.js';
|
|
19
|
+
import createApplicationConfigurationFromObject, { createApplicationNamespaceConfigurationFromObject, } from './jdl-application-configuration-factory.js';
|
|
20
20
|
import JDLApplicationEntities from './jdl-application-entities.js';
|
|
21
21
|
import JDLOptions from './jdl-options.js';
|
|
22
22
|
export default class JDLApplication {
|
|
23
23
|
config;
|
|
24
|
+
namespaceConfigs;
|
|
24
25
|
entityNames;
|
|
25
26
|
options;
|
|
26
|
-
constructor({ config = {}, entityNames = [] } = {}) {
|
|
27
|
+
constructor({ config = {}, entityNames = [], namespaceConfigs = {} } = {}) {
|
|
27
28
|
this.config = createApplicationConfigurationFromObject(config);
|
|
29
|
+
this.namespaceConfigs = createApplicationNamespaceConfigurationFromObject(namespaceConfigs);
|
|
28
30
|
this.entityNames = new JDLApplicationEntities(entityNames);
|
|
29
31
|
this.options = new JDLOptions();
|
|
30
32
|
}
|
|
@@ -50,6 +52,11 @@ export default class JDLApplication {
|
|
|
50
52
|
forEachConfigurationOption(passedFunction) {
|
|
51
53
|
this.config.forEachOption(passedFunction);
|
|
52
54
|
}
|
|
55
|
+
forEachNamespaceConfiguration(passedFunction) {
|
|
56
|
+
for (const namespaceConfig of this.namespaceConfigs) {
|
|
57
|
+
passedFunction(namespaceConfig);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
53
60
|
addEntityName(entityName) {
|
|
54
61
|
if (!entityName) {
|
|
55
62
|
throw new Error('An entity name has to be passed so as to be added to the application.');
|
|
@@ -87,7 +94,9 @@ export default class JDLApplication {
|
|
|
87
94
|
return this.options.size();
|
|
88
95
|
}
|
|
89
96
|
toString() {
|
|
90
|
-
let stringifiedApplication = `application {
|
|
97
|
+
let stringifiedApplication = `application {
|
|
98
|
+
${this.config.toString(2)}
|
|
99
|
+
${this.namespaceConfigs.map(config => `${config.toString(2)}\n`).join()}`;
|
|
91
100
|
if (this.entityNames.size() !== 0) {
|
|
92
101
|
stringifiedApplication += `\n${this.entityNames.toString(2)}\n`;
|
|
93
102
|
}
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* See the License for the specific language governing permissions and
|
|
17
17
|
* limitations under the License.
|
|
18
18
|
*/
|
|
19
|
+
import { upperFirst } from 'lodash-es';
|
|
19
20
|
import { merge } from '../utils/object-utils.js';
|
|
20
21
|
import getTableNameFromEntityName from '../jhipster/entity-table-name-creator.js';
|
|
21
22
|
export default class JDLEntity {
|
|
@@ -23,6 +24,7 @@ export default class JDLEntity {
|
|
|
23
24
|
tableName;
|
|
24
25
|
fields;
|
|
25
26
|
comment;
|
|
27
|
+
annotations;
|
|
26
28
|
constructor(args) {
|
|
27
29
|
const merged = merge(defaults(), args);
|
|
28
30
|
if (!merged.name) {
|
|
@@ -32,6 +34,7 @@ export default class JDLEntity {
|
|
|
32
34
|
this.tableName = merged.tableName || merged.name;
|
|
33
35
|
this.fields = merged.fields;
|
|
34
36
|
this.comment = merged.comment;
|
|
37
|
+
this.annotations = merged.annotations ?? {};
|
|
35
38
|
}
|
|
36
39
|
/**
|
|
37
40
|
* Adds the fields to the entity.
|
|
@@ -60,6 +63,18 @@ export default class JDLEntity {
|
|
|
60
63
|
.map(line => ` * ${line}\n`)
|
|
61
64
|
.join('')} */\n`;
|
|
62
65
|
}
|
|
66
|
+
Object.entries(this.annotations).forEach(([key, value]) => {
|
|
67
|
+
key = upperFirst(key);
|
|
68
|
+
if (value === true) {
|
|
69
|
+
stringifiedEntity += `@${key}\n`;
|
|
70
|
+
}
|
|
71
|
+
else if (typeof value === 'string') {
|
|
72
|
+
stringifiedEntity += `@${key}("${value}")\n`;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
stringifiedEntity += `@${key}(${value})\n`;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
63
78
|
stringifiedEntity += `entity ${this.name}`;
|
|
64
79
|
if (this.tableName && getTableNameFromEntityName(this.name) !== getTableNameFromEntityName(this.tableName)) {
|
|
65
80
|
stringifiedEntity += ` (${this.tableName})`;
|
|
@@ -73,7 +88,7 @@ export default class JDLEntity {
|
|
|
73
88
|
function defaults() {
|
|
74
89
|
return {
|
|
75
90
|
fields: {},
|
|
76
|
-
|
|
91
|
+
annotations: {},
|
|
77
92
|
};
|
|
78
93
|
}
|
|
79
94
|
function formatFieldObjects(jdlFieldObjects) {
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* See the License for the specific language governing permissions and
|
|
17
17
|
* limitations under the License.
|
|
18
18
|
*/
|
|
19
|
+
import { upperFirst } from 'lodash-es';
|
|
19
20
|
import { merge } from '../utils/object-utils.js';
|
|
20
21
|
export default class JDLField {
|
|
21
22
|
name;
|
|
@@ -66,6 +67,18 @@ export default class JDLField {
|
|
|
66
67
|
.map(line => ` * ${line}\n`)
|
|
67
68
|
.join('')} */\n`;
|
|
68
69
|
}
|
|
70
|
+
Object.entries(this.options ?? {}).forEach(([key, value]) => {
|
|
71
|
+
key = upperFirst(key);
|
|
72
|
+
if (value === true) {
|
|
73
|
+
string += `@${key}\n`;
|
|
74
|
+
}
|
|
75
|
+
else if (typeof value === 'string') {
|
|
76
|
+
string += `@${key}("${value}")\n`;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
string += `@${key}(${value})\n`;
|
|
80
|
+
}
|
|
81
|
+
});
|
|
69
82
|
string += `${this.name} ${this.type}`;
|
|
70
83
|
Object.keys(this.validations).forEach(validationName => {
|
|
71
84
|
string += ` ${this.validations[validationName].toString()}`;
|
|
@@ -229,10 +229,10 @@ export default class JDLObject {
|
|
|
229
229
|
string += `${this.enums.toString()}\n`;
|
|
230
230
|
}
|
|
231
231
|
if (this.getRelationshipQuantity() !== 0) {
|
|
232
|
-
string += `${relationshipsToString(this.relationships)}
|
|
232
|
+
string += `${relationshipsToString(this.relationships)}`;
|
|
233
233
|
}
|
|
234
234
|
if (this.getOptionQuantity() !== 0) {
|
|
235
|
-
string +=
|
|
235
|
+
string += `\n${optionsToString(this.options)}`;
|
|
236
236
|
}
|
|
237
237
|
return string;
|
|
238
238
|
}
|
|
@@ -263,7 +263,7 @@ function relationshipsToString(relationships) {
|
|
|
263
263
|
if (string === '') {
|
|
264
264
|
return '';
|
|
265
265
|
}
|
|
266
|
-
return `${
|
|
266
|
+
return `${string}\n`;
|
|
267
267
|
}
|
|
268
268
|
function optionsToString(options) {
|
|
269
269
|
const string = options.toString();
|
|
@@ -1,3 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2013-2023 the original author or authors from the JHipster project.
|
|
3
|
+
*
|
|
4
|
+
* This file is part of the JHipster project, see https://www.jhipster.tech/
|
|
5
|
+
* for more information.
|
|
6
|
+
*
|
|
7
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
* you may not use this file except in compliance with the License.
|
|
9
|
+
* You may obtain a copy of the License at
|
|
10
|
+
*
|
|
11
|
+
* https://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
*
|
|
13
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
* See the License for the specific language governing permissions and
|
|
17
|
+
* limitations under the License.
|
|
18
|
+
*/
|
|
19
|
+
import { upperFirst } from 'lodash-es';
|
|
1
20
|
import { Validations } from '../jhipster/index.mjs';
|
|
2
21
|
import { relationshipTypeExists } from '../jhipster/relationship-types.js';
|
|
3
22
|
const { REQUIRED } = Validations;
|
|
@@ -72,9 +91,9 @@ export default class JDLRelationship {
|
|
|
72
91
|
if (Object.keys(sourceOptions).length !== 0) {
|
|
73
92
|
Object.keys(sourceOptions).forEach(name => {
|
|
74
93
|
const value = sourceOptions[name];
|
|
75
|
-
|
|
94
|
+
name = upperFirst(name);
|
|
95
|
+
string += `@${name}${value != null && value !== true ? `(${value}) ` : ' '}`;
|
|
76
96
|
});
|
|
77
|
-
string += ' ';
|
|
78
97
|
}
|
|
79
98
|
string += `${this.from}`;
|
|
80
99
|
if (this.injectedFieldInFrom) {
|
|
@@ -92,12 +111,11 @@ export default class JDLRelationship {
|
|
|
92
111
|
}
|
|
93
112
|
const destinationOptions = this.options.destination;
|
|
94
113
|
if (Object.keys(destinationOptions).length !== 0) {
|
|
95
|
-
string += '\n';
|
|
96
114
|
Object.keys(destinationOptions).forEach(name => {
|
|
97
115
|
const value = destinationOptions[name];
|
|
98
|
-
|
|
116
|
+
name = upperFirst(name);
|
|
117
|
+
string += `@${name}${value != null && value !== true ? `(${value}) ` : ' '}`;
|
|
99
118
|
});
|
|
100
|
-
string += ' ';
|
|
101
119
|
}
|
|
102
120
|
string += `${this.to}`;
|
|
103
121
|
if (this.injectedFieldInTo) {
|
|
@@ -135,14 +135,29 @@ export default class JDLAstBuilderVisitor extends BaseJDLCSTVisitor {
|
|
|
135
135
|
};
|
|
136
136
|
}
|
|
137
137
|
annotationDeclaration(context) {
|
|
138
|
+
const optionName = context.option[0].image;
|
|
138
139
|
if (!context.value) {
|
|
139
|
-
return { optionName
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
140
|
+
return { optionName, type: 'UNARY' };
|
|
141
|
+
}
|
|
142
|
+
let { image: optionValue } = context.value[0];
|
|
143
|
+
const { tokenType } = context.value[0];
|
|
144
|
+
switch (tokenType.name) {
|
|
145
|
+
case 'INTEGER':
|
|
146
|
+
optionValue = parseInt(optionValue, 10);
|
|
147
|
+
break;
|
|
148
|
+
case 'DECIMAL':
|
|
149
|
+
optionValue = parseFloat(optionValue);
|
|
150
|
+
break;
|
|
151
|
+
case 'TRUE':
|
|
152
|
+
optionValue = true;
|
|
153
|
+
break;
|
|
154
|
+
case 'FALSE':
|
|
155
|
+
optionValue = false;
|
|
156
|
+
break;
|
|
157
|
+
default:
|
|
158
|
+
optionValue = optionValue.replace(/"/g, '');
|
|
159
|
+
}
|
|
160
|
+
return { optionName, optionValue, type: 'BINARY' };
|
|
146
161
|
}
|
|
147
162
|
entityTableNameDeclaration(context) {
|
|
148
163
|
return context.NAME[0].image;
|
|
@@ -380,6 +395,7 @@ export default class JDLAstBuilderVisitor extends BaseJDLCSTVisitor {
|
|
|
380
395
|
applicationSubDeclaration(context) {
|
|
381
396
|
const applicationSubDeclaration = {
|
|
382
397
|
config: {},
|
|
398
|
+
namespaceConfigs: {},
|
|
383
399
|
entities: { entityList: [], excluded: [] },
|
|
384
400
|
options: {},
|
|
385
401
|
useOptions: [],
|
|
@@ -388,6 +404,10 @@ export default class JDLAstBuilderVisitor extends BaseJDLCSTVisitor {
|
|
|
388
404
|
// Apparently the pegjs grammar only returned the last config
|
|
389
405
|
applicationSubDeclaration.config = this.visit(context.applicationSubConfig[context.applicationSubConfig.length - 1]);
|
|
390
406
|
}
|
|
407
|
+
if (context.applicationSubNamespaceConfig) {
|
|
408
|
+
const { namespace, config } = this.visit(context.applicationSubNamespaceConfig[context.applicationSubNamespaceConfig.length - 1]);
|
|
409
|
+
applicationSubDeclaration.namespaceConfigs[namespace] = config;
|
|
410
|
+
}
|
|
391
411
|
if (context.applicationSubEntities) {
|
|
392
412
|
// Apparently the pegjs grammar only returned the last entities
|
|
393
413
|
applicationSubDeclaration.entities = this.visit(context.applicationSubEntities[context.applicationSubEntities.length - 1]);
|
|
@@ -429,6 +449,42 @@ export default class JDLAstBuilderVisitor extends BaseJDLCSTVisitor {
|
|
|
429
449
|
}
|
|
430
450
|
return applicationSubDeclaration;
|
|
431
451
|
}
|
|
452
|
+
applicationSubNamespaceConfig(context) {
|
|
453
|
+
const config = {};
|
|
454
|
+
const namespace = context.namespace[0].image;
|
|
455
|
+
if (context.applicationNamespaceConfigDeclaration) {
|
|
456
|
+
const configProps = context.applicationNamespaceConfigDeclaration.map(this.visit, this);
|
|
457
|
+
configProps.forEach(configProp => {
|
|
458
|
+
config[configProp.key] = configProp.value;
|
|
459
|
+
});
|
|
460
|
+
}
|
|
461
|
+
return { namespace, config };
|
|
462
|
+
}
|
|
463
|
+
applicationNamespaceConfigDeclaration(context) {
|
|
464
|
+
const key = context.NAME[0].image;
|
|
465
|
+
const value = this.visit(context.namespaceConfigValue);
|
|
466
|
+
return { key, value };
|
|
467
|
+
}
|
|
468
|
+
namespaceConfigValue(context) {
|
|
469
|
+
if (context.qualifiedName) {
|
|
470
|
+
return this.visit(context.qualifiedName);
|
|
471
|
+
}
|
|
472
|
+
if (context.list) {
|
|
473
|
+
return this.visit(context.list);
|
|
474
|
+
}
|
|
475
|
+
if (context.INTEGER) {
|
|
476
|
+
return context.INTEGER[0].image;
|
|
477
|
+
}
|
|
478
|
+
if (context.STRING) {
|
|
479
|
+
const stringImage = context.STRING[0].image;
|
|
480
|
+
return stringImage.substring(1, stringImage.length - 1);
|
|
481
|
+
}
|
|
482
|
+
if (context.BOOLEAN) {
|
|
483
|
+
return context.BOOLEAN[0].image === 'true';
|
|
484
|
+
}
|
|
485
|
+
/* istanbul ignore next */
|
|
486
|
+
throw new Error('No valid config value was found, expected a qualified name, a list, an integer, a string or a boolean.');
|
|
487
|
+
}
|
|
432
488
|
applicationSubConfig(context) {
|
|
433
489
|
const config = {};
|
|
434
490
|
if (context.applicationConfigDeclaration) {
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import { CstParser } from 'chevrotain';
|
|
20
20
|
import { tokens as LexerTokens } from './lexer/lexer.js';
|
|
21
|
+
import { NAME } from './lexer/shared-tokens.js';
|
|
21
22
|
let instance;
|
|
22
23
|
export default class JDLParser extends CstParser {
|
|
23
24
|
constructor() {
|
|
@@ -64,9 +65,12 @@ export default class JDLParser extends CstParser {
|
|
|
64
65
|
this.applicationDeclaration();
|
|
65
66
|
this.applicationSubDeclaration();
|
|
66
67
|
this.applicationSubConfig();
|
|
68
|
+
this.applicationSubNamespaceConfig();
|
|
67
69
|
this.applicationSubEntities();
|
|
68
70
|
this.applicationConfigDeclaration();
|
|
69
71
|
this.configValue();
|
|
72
|
+
this.applicationNamespaceConfigDeclaration();
|
|
73
|
+
this.namespaceConfigValue();
|
|
70
74
|
this.qualifiedName();
|
|
71
75
|
this.list();
|
|
72
76
|
// very important to call this after all the rules have been defined.
|
|
@@ -133,12 +137,17 @@ export default class JDLParser extends CstParser {
|
|
|
133
137
|
this.CONSUME(LexerTokens.NAME, { LABEL: 'option' });
|
|
134
138
|
this.OPTION(() => {
|
|
135
139
|
this.CONSUME(LexerTokens.LPAREN);
|
|
136
|
-
this.OR(
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
140
|
+
this.OR({
|
|
141
|
+
IGNORE_AMBIGUITIES: true,
|
|
142
|
+
DEF: [
|
|
143
|
+
{ ALT: () => this.CONSUME(LexerTokens.STRING, { LABEL: 'value' }) },
|
|
144
|
+
{ ALT: () => this.CONSUME(LexerTokens.INTEGER, { LABEL: 'value' }) },
|
|
145
|
+
{ ALT: () => this.CONSUME(LexerTokens.DECIMAL, { LABEL: 'value' }) },
|
|
146
|
+
{ ALT: () => this.CONSUME(LexerTokens.TRUE, { LABEL: 'value' }) },
|
|
147
|
+
{ ALT: () => this.CONSUME(LexerTokens.FALSE, { LABEL: 'value' }) },
|
|
148
|
+
{ ALT: () => this.CONSUME2(LexerTokens.NAME, { LABEL: 'value' }) },
|
|
149
|
+
],
|
|
150
|
+
});
|
|
142
151
|
this.CONSUME(LexerTokens.RPAREN);
|
|
143
152
|
});
|
|
144
153
|
});
|
|
@@ -455,6 +464,7 @@ export default class JDLParser extends CstParser {
|
|
|
455
464
|
this.RULE('applicationSubDeclaration', () => {
|
|
456
465
|
this.MANY(() => {
|
|
457
466
|
this.OR([
|
|
467
|
+
{ ALT: () => this.SUBRULE(this.applicationSubNamespaceConfig) },
|
|
458
468
|
{ ALT: () => this.SUBRULE(this.applicationSubConfig) },
|
|
459
469
|
{ ALT: () => this.SUBRULE(this.applicationSubEntities) },
|
|
460
470
|
{ ALT: () => this.SUBRULE(this.unaryOptionDeclaration) },
|
|
@@ -464,6 +474,42 @@ export default class JDLParser extends CstParser {
|
|
|
464
474
|
});
|
|
465
475
|
});
|
|
466
476
|
}
|
|
477
|
+
applicationSubNamespaceConfig() {
|
|
478
|
+
this.RULE('applicationSubNamespaceConfig', () => {
|
|
479
|
+
this.CONSUME(LexerTokens.CONFIG);
|
|
480
|
+
this.CONSUME(LexerTokens.LPAREN);
|
|
481
|
+
this.CONSUME(LexerTokens.NAME, { LABEL: 'namespace' });
|
|
482
|
+
this.CONSUME(LexerTokens.RPAREN);
|
|
483
|
+
this.CONSUME(LexerTokens.LCURLY);
|
|
484
|
+
this.MANY(() => {
|
|
485
|
+
this.OR([
|
|
486
|
+
{ ALT: () => this.CONSUME(LexerTokens.JAVADOC) },
|
|
487
|
+
{ ALT: () => this.SUBRULE(this.applicationNamespaceConfigDeclaration) },
|
|
488
|
+
]);
|
|
489
|
+
});
|
|
490
|
+
this.CONSUME(LexerTokens.RCURLY);
|
|
491
|
+
});
|
|
492
|
+
}
|
|
493
|
+
applicationNamespaceConfigDeclaration() {
|
|
494
|
+
this.RULE('applicationNamespaceConfigDeclaration', () => {
|
|
495
|
+
this.CONSUME(NAME);
|
|
496
|
+
this.SUBRULE(this.namespaceConfigValue);
|
|
497
|
+
this.OPTION(() => {
|
|
498
|
+
this.CONSUME(LexerTokens.COMMA);
|
|
499
|
+
});
|
|
500
|
+
});
|
|
501
|
+
}
|
|
502
|
+
namespaceConfigValue() {
|
|
503
|
+
this.RULE('namespaceConfigValue', () => {
|
|
504
|
+
this.OR([
|
|
505
|
+
{ ALT: () => this.CONSUME(LexerTokens.BOOLEAN) },
|
|
506
|
+
{ ALT: () => this.SUBRULE(this.qualifiedName) },
|
|
507
|
+
{ ALT: () => this.SUBRULE(this.list) },
|
|
508
|
+
{ ALT: () => this.CONSUME(LexerTokens.INTEGER) },
|
|
509
|
+
{ ALT: () => this.CONSUME(LexerTokens.STRING) },
|
|
510
|
+
]);
|
|
511
|
+
});
|
|
512
|
+
}
|
|
467
513
|
applicationSubConfig() {
|
|
468
514
|
this.RULE('applicationSubConfig', () => {
|
|
469
515
|
this.CONSUME(LexerTokens.CONFIG);
|
|
@@ -23,7 +23,7 @@ import { applicationOptions } from '../../jhipster/index.mjs';
|
|
|
23
23
|
import jhipsterDefinition from '../../../generators/app/jdl/index.mjs';
|
|
24
24
|
const { OptionNames } = applicationOptions;
|
|
25
25
|
const { APPLICATION_TYPE, AUTHENTICATION_TYPE, BASE_NAME, BLUEPRINT, BLUEPRINTS, BUILD_TOOL, CACHE_PROVIDER, CLIENT_FRAMEWORK, CLIENT_PACKAGE_MANAGER, CLIENT_THEME, CLIENT_THEME_VARIANT, CREATION_TIMESTAMP, DATABASE_TYPE, DEV_DATABASE_TYPE, DTO_SUFFIX, EMBEDDABLE_LAUNCH_SCRIPT, ENABLE_HIBERNATE_CACHE, ENABLE_SWAGGER_CODEGEN, ENABLE_TRANSLATION, ENTITY_SUFFIX, GATEWAY_SERVER_PORT, JHIPSTER_VERSION, JHI_PREFIX, JWT_SECRET_KEY, LANGUAGES, MICROFRONTEND, MICROFRONTENDS, NATIVE_LANGUAGE, PACKAGE_NAME, PROD_DATABASE_TYPE, REACTIVE, REMEMBER_ME_KEY, SEARCH_ENGINE, SERVER_PORT, SKIP_CLIENT, SKIP_SERVER, SKIP_USER_MANAGEMENT, TEST_FRAMEWORKS, WEBSOCKET, WITH_ADMIN_UI, ENABLE_GRADLE_ENTERPRISE, GRADLE_ENTERPRISE_HOST, } = OptionNames;
|
|
26
|
-
const applicationConfigCategoryToken = createTokenFromConfig({ name: 'CONFIG_KEY', pattern: Lexer.NA });
|
|
26
|
+
export const applicationConfigCategoryToken = createTokenFromConfig({ name: 'CONFIG_KEY', pattern: Lexer.NA });
|
|
27
27
|
const applicationConfigTokens = [
|
|
28
28
|
{ name: 'BASE_NAME', pattern: BASE_NAME },
|
|
29
29
|
{ name: 'BLUEPRINTS', pattern: BLUEPRINTS },
|
|
@@ -55,7 +55,7 @@ const applicationConfigTokens = [
|
|
|
55
55
|
{ name: 'CLIENT_THEME', pattern: CLIENT_THEME },
|
|
56
56
|
{ name: 'WITH_ADMIN_UI', pattern: WITH_ADMIN_UI },
|
|
57
57
|
{ name: 'NATIVE_LANGUAGE', pattern: NATIVE_LANGUAGE },
|
|
58
|
-
{ name: 'FRONT_END_BUILDER', pattern: 'frontendBuilder' },
|
|
58
|
+
{ name: 'FRONT_END_BUILDER', pattern: 'frontendBuilder' }, // TODO always valid?
|
|
59
59
|
{ name: 'SKIP_USER_MANAGEMENT', pattern: SKIP_USER_MANAGEMENT },
|
|
60
60
|
{ name: 'ENABLE_SWAGGER_CODEGEN', pattern: ENABLE_SWAGGER_CODEGEN },
|
|
61
61
|
{ name: 'REACTIVE', pattern: REACTIVE },
|
|
@@ -23,9 +23,11 @@ export default class EntityValidator extends Validator {
|
|
|
23
23
|
constructor() {
|
|
24
24
|
super('entity', ['name', 'tableName']);
|
|
25
25
|
}
|
|
26
|
-
validate(jdlEntity) {
|
|
26
|
+
validate(jdlEntity, options = {}) {
|
|
27
27
|
super.validate(jdlEntity);
|
|
28
|
-
|
|
28
|
+
if (options.checkReservedKeywords) {
|
|
29
|
+
checkForReservedClassName(jdlEntity);
|
|
30
|
+
}
|
|
29
31
|
}
|
|
30
32
|
}
|
|
31
33
|
function checkForReservedClassName(jdlEntity) {
|
|
@@ -23,9 +23,11 @@ export default class EnumValidator extends Validator {
|
|
|
23
23
|
constructor() {
|
|
24
24
|
super('enum', ['name']);
|
|
25
25
|
}
|
|
26
|
-
validate(jdlEnum) {
|
|
26
|
+
validate(jdlEnum, options = {}) {
|
|
27
27
|
super.validate(jdlEnum);
|
|
28
|
-
|
|
28
|
+
if (options.checkReservedKeywords) {
|
|
29
|
+
checkForReservedClassName(jdlEnum);
|
|
30
|
+
}
|
|
29
31
|
}
|
|
30
32
|
}
|
|
31
33
|
function checkForReservedClassName(jdlEnum) {
|
|
@@ -42,20 +42,30 @@ export default function createValidator(jdlObject, logger = console) {
|
|
|
42
42
|
checkForErrors: () => {
|
|
43
43
|
jdlObject.forEachApplication(jdlApplication => {
|
|
44
44
|
const blueprints = jdlApplication.getConfigurationOptionValue(BLUEPRINTS);
|
|
45
|
-
|
|
45
|
+
const checkReservedKeywords = (blueprints?.length ?? 0) === 0;
|
|
46
|
+
checkForNamespaceConfigErrors(jdlApplication);
|
|
47
|
+
checkForRelationshipErrors();
|
|
48
|
+
checkForEntityErrors(jdlApplication, { checkReservedKeywords });
|
|
49
|
+
checkForEnumErrors({ checkReservedKeywords });
|
|
50
|
+
if (!checkReservedKeywords) {
|
|
46
51
|
logger.warn('Blueprints are being used, the JDL validation phase is skipped.');
|
|
47
52
|
return;
|
|
48
53
|
}
|
|
49
|
-
checkForEntityErrors(jdlApplication);
|
|
50
|
-
checkForRelationshipErrors();
|
|
51
|
-
checkForEnumErrors();
|
|
52
54
|
checkDeploymentsErrors();
|
|
53
55
|
checkForOptionErrors();
|
|
54
56
|
});
|
|
55
57
|
checkForRelationshipsBetweenApplications();
|
|
56
58
|
},
|
|
57
59
|
};
|
|
58
|
-
function
|
|
60
|
+
function checkForNamespaceConfigErrors(jdlApplication) {
|
|
61
|
+
jdlApplication.forEachNamespaceConfiguration(config => {
|
|
62
|
+
const blueprints = jdlApplication.config.getOption('blueprints');
|
|
63
|
+
if (!blueprints || !blueprints.getValue().some(blueprint => blueprint === config.namespace)) {
|
|
64
|
+
throw new Error(`Blueprint namespace config ${config.namespace} requires the blueprint ${config.namespace}`);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
function checkForEntityErrors(jdlApplication, options) {
|
|
59
69
|
if (jdlObject.getEntityQuantity() === 0) {
|
|
60
70
|
return;
|
|
61
71
|
}
|
|
@@ -64,7 +74,7 @@ export default function createValidator(jdlObject, logger = console) {
|
|
|
64
74
|
if (!jdlApplication.hasEntityName(jdlEntity.name)) {
|
|
65
75
|
return;
|
|
66
76
|
}
|
|
67
|
-
validator.validate(jdlEntity);
|
|
77
|
+
validator.validate(jdlEntity, options);
|
|
68
78
|
checkForFieldErrors(jdlEntity.name, jdlEntity.fields, jdlApplication);
|
|
69
79
|
});
|
|
70
80
|
}
|
|
@@ -100,13 +110,13 @@ export default function createValidator(jdlObject, logger = console) {
|
|
|
100
110
|
});
|
|
101
111
|
});
|
|
102
112
|
}
|
|
103
|
-
function checkForEnumErrors() {
|
|
113
|
+
function checkForEnumErrors(options) {
|
|
104
114
|
if (jdlObject.getEnumQuantity() === 0) {
|
|
105
115
|
return;
|
|
106
116
|
}
|
|
107
117
|
const validator = new EnumValidator();
|
|
108
118
|
jdlObject.forEachEnum(jdlEnum => {
|
|
109
|
-
validator.validate(jdlEnum);
|
|
119
|
+
validator.validate(jdlEnum, options);
|
|
110
120
|
});
|
|
111
121
|
}
|
|
112
122
|
function checkDeploymentsErrors() {
|