@cerema/cadriciel 1.0.8 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (421) hide show
  1. package/aaaa/.cadriciel/.uuid +1 -0
  2. package/aaaa/.cadriciel/bin/db-update.js +337 -0
  3. package/aaaa/.cadriciel/bin/gen/api/api.js +484 -0
  4. package/aaaa/.cadriciel/bin/gen/component/component.js +36 -0
  5. package/aaaa/.cadriciel/bin/gen/page/page.js +163 -0
  6. package/aaaa/.cadriciel/bin/gen/project/project.js +172 -0
  7. package/aaaa/.cadriciel/bin/gen/query/query.js +92 -0
  8. package/aaaa/.cadriciel/bin/gen/service/service.js +18 -0
  9. package/aaaa/.cadriciel/bin/gen.js +19 -0
  10. package/aaaa/.cadriciel/bin/lib/convert.js +94 -0
  11. package/aaaa/.cadriciel/bin/lib/global.js +140 -0
  12. package/aaaa/.cadriciel/bin/lib/templates.js +48 -0
  13. package/aaaa/.cadriciel/bin/lib/utils.js +76 -0
  14. package/aaaa/.cadriciel/bin/logs.js +34 -0
  15. package/aaaa/.cadriciel/bin/reset.js +45 -0
  16. package/aaaa/.cadriciel/bin/restart.js +30 -0
  17. package/aaaa/.cadriciel/bin/start.js +194 -0
  18. package/aaaa/.cadriciel/bin/stop.js +32 -0
  19. package/aaaa/.cadriciel/bin/templates/components/{{name}}.component.html +1 -0
  20. package/aaaa/.cadriciel/bin/templates/components/{{name}}.component.scss +0 -0
  21. package/aaaa/.cadriciel/bin/templates/components/{{name}}.component.ts +15 -0
  22. package/aaaa/.cadriciel/bin/templates/java/config.java +59 -0
  23. package/aaaa/.cadriciel/bin/templates/routing.module.ts +30 -0
  24. package/aaaa/.cadriciel/bin/templates/{{name}}.component.html +1 -0
  25. package/aaaa/.cadriciel/bin/templates/{{name}}.component.scss +0 -0
  26. package/aaaa/.cadriciel/bin/templates/{{name}}.component.ts +16 -0
  27. package/aaaa/.cadriciel/bin/templates/{{name}}.service.ts +20 -0
  28. package/aaaa/.cadriciel/routes/root.json +1 -0
  29. package/aaaa/.gitlab-ci.yml +65 -0
  30. package/aaaa/.project +1 -0
  31. package/aaaa/.vscode/settings.json +3 -0
  32. package/aaaa/angular.json +165 -0
  33. package/aaaa/api/aaaa-data/Readme.md +27 -0
  34. package/aaaa/api/aaaa-data/pom.xml +46 -0
  35. package/aaaa/api/aaaa-data/src/main/resources/db/dev/Readme.md +5 -0
  36. package/aaaa/api/aaaa-data/src/main/resources/db/dev/V2022.06.02.1513__dev-data.sql +7 -0
  37. package/aaaa/api/aaaa-data/src/main/resources/db/migration/Readme.md +38 -0
  38. package/aaaa/api/aaaa-data/src/main/resources/db/migration/V2021.10.14.0819__Init.sql +23 -0
  39. package/aaaa/api/aaaa-data/src/main/resources/flyway.properties +4 -0
  40. package/aaaa/api/aaaa-metier/pom.xml +134 -0
  41. package/aaaa/api/aaaa-metier/src/main/java/fr/cerema/dsi/aaaa/services/CustomUserDetailsService.java +12 -0
  42. package/aaaa/api/aaaa-metier/src/main/java/fr/cerema/dsi/aaaa/services/ProfilService.java +24 -0
  43. package/aaaa/api/aaaa-metier/src/main/java/fr/cerema/dsi/aaaa/services/UserService.java +36 -0
  44. package/aaaa/api/aaaa-metier/src/main/java/fr/cerema/dsi/aaaa/services/impl/CustomUserDetailsServiceImpl.java +79 -0
  45. package/aaaa/api/aaaa-metier/src/main/java/fr/cerema/dsi/aaaa/services/impl/ProfilServiceImpl.java +27 -0
  46. package/aaaa/api/aaaa-metier/src/main/java/fr/cerema/dsi/aaaa/services/impl/UserServiceImpl.java +75 -0
  47. package/aaaa/api/aaaa-metier/src/main/java/fr/cerema/dsi/commons/security/UserSecurityServiceUtil.java +30 -0
  48. package/aaaa/api/aaaa-metier/src/main/java/fr/cerema/dsi/commons/services/GenericService.java +30 -0
  49. package/aaaa/api/aaaa-metier/src/main/java/fr/cerema/dsi/commons/services/GenericServiceImpl.java +62 -0
  50. package/aaaa/api/aaaa-metier/src/test/java/fr/cerema/dsi/aaaa/services/UserServiceImplTest.java +60 -0
  51. package/aaaa/api/aaaa-persistance/pom.xml +72 -0
  52. package/aaaa/api/aaaa-persistance/src/main/java/fr/cerema/dsi/aaaa/repositories/ProfilRepository.java +18 -0
  53. package/aaaa/api/aaaa-persistance/src/main/java/fr/cerema/dsi/aaaa/repositories/UserRepository.java +28 -0
  54. package/aaaa/api/aaaa-persistance/src/main/java/fr/cerema/dsi/commons/repositories/AbstractDao.java +118 -0
  55. package/aaaa/api/aaaa-persistance/src/main/java/fr/cerema/dsi/commons/repositories/GenericRepository.java +101 -0
  56. package/aaaa/api/aaaa-persistance/src/main/java/fr/cerema/dsi/commons/repositories/IAbstractDao.java +66 -0
  57. package/aaaa/api/aaaa-presentation/Readme.md +98 -0
  58. package/aaaa/api/aaaa-presentation/pom.xml +385 -0
  59. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/App.java +20 -0
  60. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/config/AspectJConfiguration.java +58 -0
  61. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/config/AuthenticationTokenFilter.java +134 -0
  62. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/config/SecurityConfiguration.java +71 -0
  63. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/config/StaticResourcesWebConfiguration.java +41 -0
  64. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/config/WebConfiguration.java +59 -0
  65. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/controllers/AccountController.java +59 -0
  66. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/controllers/ApiOpenController.java +63 -0
  67. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/controllers/UserController.java +63 -0
  68. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/dto/GenericDTO.java +20 -0
  69. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/dto/ProfilDTO.java +26 -0
  70. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/dto/UserDTO.java +57 -0
  71. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/dto/UserWithCurrentAuthorityDTO.java +31 -0
  72. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/mapper/UserMapper.java +30 -0
  73. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/commons/beans/errors/ApiSubError.java +5 -0
  74. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/commons/beans/errors/ApiValidationSubError.java +13 -0
  75. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/commons/beans/errors/JsonApiError.java +308 -0
  76. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/commons/controllers/AbstractErrorHandler.java +67 -0
  77. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/commons/controllers/ClientForwardController.java +19 -0
  78. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/commons/controllers/CustomErrorController.java +57 -0
  79. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/commons/controllers/RestResponseEntityExceptionHandler.java +75 -0
  80. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/commons/security/auth/jwt/exceptions/InvalidTokenException.java +30 -0
  81. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/commons/security/filters/AppCorsFilter.java +45 -0
  82. package/aaaa/api/aaaa-presentation/src/main/resources/META-INF/spring.factories +2 -0
  83. package/aaaa/api/aaaa-presentation/src/main/resources/banner.txt +3 -0
  84. package/aaaa/api/aaaa-presentation/src/main/resources/logback-spring-ci.xml +15 -0
  85. package/aaaa/api/aaaa-presentation/src/main/resources/logback-spring.xml +15 -0
  86. package/aaaa/api/aaaa-presentation/src/main/resources-filtered/application-ci.yml +59 -0
  87. package/aaaa/api/aaaa-presentation/src/main/resources-filtered/application-prod.yml +59 -0
  88. package/aaaa/api/aaaa-presentation/src/main/resources-filtered/application.yml +134 -0
  89. package/aaaa/api/aaaa-presentation/src/test/java/fr/cerema/dsi/aaaa/service/IntegrationTest.java +18 -0
  90. package/aaaa/api/aaaa-presentation/src/test/java/fr/cerema/dsi/aaaa/service/UserServiceImplIT.java +43 -0
  91. package/aaaa/api/aaaa-presentation/src/test/resources/application.yml +41 -0
  92. package/aaaa/api/aaaa-presentation/src/test/resources/db.migration/Readme.md +6 -0
  93. package/aaaa/api/aaaa-presentation/target/classes/META-INF/spring.factories +2 -0
  94. package/aaaa/api/aaaa-presentation/target/classes/application-ci.yml +59 -0
  95. package/aaaa/api/aaaa-presentation/target/classes/application-prod.yml +59 -0
  96. package/aaaa/api/aaaa-presentation/target/classes/application.yml +134 -0
  97. package/aaaa/api/aaaa-presentation/target/classes/banner.txt +3 -0
  98. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/App.class +0 -0
  99. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/config/AspectJConfiguration.class +0 -0
  100. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/config/AuthenticationTokenFilter.class +0 -0
  101. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/config/SecurityConfiguration.class +0 -0
  102. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/config/StaticResourcesWebConfiguration.class +0 -0
  103. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/config/WebConfiguration.class +0 -0
  104. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/controllers/AccountController.class +0 -0
  105. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/controllers/ApiOpenController.class +0 -0
  106. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/controllers/UserController.class +0 -0
  107. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/dto/GenericDTO.class +0 -0
  108. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/dto/ProfilDTO.class +0 -0
  109. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/dto/UserDTO.class +0 -0
  110. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/dto/UserWithCurrentAuthorityDTO.class +0 -0
  111. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/mapper/UserMapper.class +0 -0
  112. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/mapper/UserMapperImpl.class +0 -0
  113. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/commons/beans/errors/ApiSubError.class +0 -0
  114. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/commons/beans/errors/ApiValidationSubError.class +0 -0
  115. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/commons/beans/errors/JsonApiError$ApiError.class +0 -0
  116. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/commons/beans/errors/JsonApiError.class +0 -0
  117. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/commons/controllers/AbstractErrorHandler.class +0 -0
  118. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/commons/controllers/ClientForwardController.class +0 -0
  119. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/commons/controllers/CustomErrorController.class +0 -0
  120. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/commons/controllers/RestResponseEntityExceptionHandler.class +0 -0
  121. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/commons/security/auth/jwt/exceptions/InvalidTokenException.class +0 -0
  122. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/commons/security/filters/AppCorsFilter.class +0 -0
  123. package/aaaa/api/aaaa-presentation/target/classes/logback-spring-ci.xml +15 -0
  124. package/aaaa/api/aaaa-presentation/target/classes/logback-spring.xml +15 -0
  125. package/aaaa/api/aaaa-presentation/target/generated-sources/annotations/fr/cerema/dsi/aaaa/mapper/UserMapperImpl.java +136 -0
  126. package/aaaa/api/aaaa-presentation/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +25 -0
  127. package/aaaa/api/aaaa-presentation/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +23 -0
  128. package/aaaa/api/aaaa-transverse/pom.xml +25 -0
  129. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/aaaa/entities/Profil.java +53 -0
  130. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/aaaa/entities/User.java +79 -0
  131. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/aaaa/enums/Role.java +9 -0
  132. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/aaaa/exceptions/JwtConfMalformedException.java +9 -0
  133. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/aaaa/exceptions/security/AuthenticationServiceException.java +30 -0
  134. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/aaaa/exceptions/security/NoRoleForUserServiceException.java +29 -0
  135. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/aaaa/exceptions/security/UserNotFoundServiceException.java +29 -0
  136. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/commons/entities/GenericEntity.java +43 -0
  137. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/commons/exceptions/BadRequestException.java +43 -0
  138. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/commons/exceptions/EntityNotFoundException.java +9 -0
  139. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/commons/exceptions/GenericRepositoryException.java +29 -0
  140. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/commons/exceptions/GenericServiceException.java +29 -0
  141. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/commons/exceptions/UserNotFoundException.java +11 -0
  142. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/commons/exceptions/UtilsException.java +13 -0
  143. package/aaaa/api/pom.xml +156 -0
  144. package/aaaa/client/app/components/.gitkeep +0 -0
  145. package/aaaa/client/app/interfaces/.gitkeep +0 -0
  146. package/aaaa/client/app/interfaces/dbschema.ts +171 -0
  147. package/aaaa/client/app/menu.json +41 -0
  148. package/aaaa/client/app/pages/pages-routing.module.ts +19 -0
  149. package/aaaa/client/app/pages/profils/profils.component.html +4 -0
  150. package/aaaa/client/app/pages/profils/profils.component.scss +0 -0
  151. package/aaaa/client/app/pages/profils/profils.component.ts +21 -0
  152. package/aaaa/client/app/pages/root/root.component.html +2 -0
  153. package/aaaa/client/app/pages/root/root.component.scss +24 -0
  154. package/aaaa/client/app/pages/root/root.component.ts +29 -0
  155. package/aaaa/client/app/services/demo.service.ts +21 -0
  156. package/aaaa/client/app/services/profils.service.ts +25 -0
  157. package/aaaa/client/app/services/test.service.ts +20 -0
  158. package/aaaa/client/app-routing.module.ts +50 -0
  159. package/aaaa/client/app.component.css +46 -0
  160. package/aaaa/client/app.component.html +1 -0
  161. package/aaaa/client/app.component.ts +62 -0
  162. package/aaaa/client/app.module.ts +99 -0
  163. package/aaaa/client/assets/favicon.ico +0 -0
  164. package/aaaa/client/assets/i18n/fr.json +33 -0
  165. package/aaaa/client/assets/images/dollar.svg +1 -0
  166. package/aaaa/client/assets/images/logo.png +0 -0
  167. package/aaaa/client/assets/images/logo_title.png +0 -0
  168. package/aaaa/client/assets/images/work-in-progress.svg +64 -0
  169. package/aaaa/client/assets/layout/fonts/lato-v17-latin-ext_latin-300.woff +0 -0
  170. package/aaaa/client/assets/layout/fonts/lato-v17-latin-ext_latin-300.woff2 +0 -0
  171. package/aaaa/client/assets/layout/fonts/lato-v17-latin-ext_latin-700.woff +0 -0
  172. package/aaaa/client/assets/layout/fonts/lato-v17-latin-ext_latin-700.woff2 +0 -0
  173. package/aaaa/client/assets/layout/fonts/lato-v17-latin-ext_latin-regular.woff +0 -0
  174. package/aaaa/client/assets/layout/fonts/lato-v17-latin-ext_latin-regular.woff2 +0 -0
  175. package/aaaa/client/assets/layout/images/LogoCerema.svg +226 -0
  176. package/aaaa/client/assets/layout/images/LogoCerema_horizontal.svg +167 -0
  177. package/aaaa/client/assets/layout/images/SpinnerCerema.svg +6 -0
  178. package/aaaa/client/assets/layout/images/authentication.svg +1 -0
  179. package/aaaa/client/assets/layout/images/mail.svg +1 -0
  180. package/aaaa/client/assets/layout/images/postgresql.svg +1 -0
  181. package/aaaa/client/assets/layout/images/user.png +0 -0
  182. package/aaaa/client/assets/layout/styles/layout/_breadcrumb.scss +18 -0
  183. package/aaaa/client/assets/layout/styles/layout/_config.scss +33 -0
  184. package/aaaa/client/assets/layout/styles/layout/_content.scss +20 -0
  185. package/aaaa/client/assets/layout/styles/layout/_fonts.scss +29 -0
  186. package/aaaa/client/assets/layout/styles/layout/_footer.scss +25 -0
  187. package/aaaa/client/assets/layout/styles/layout/_main.scss +29 -0
  188. package/aaaa/client/assets/layout/styles/layout/_responsive.scss +159 -0
  189. package/aaaa/client/assets/layout/styles/layout/_sidebar.scss +2 -0
  190. package/aaaa/client/assets/layout/styles/layout/_topbar.scss +250 -0
  191. package/aaaa/client/assets/layout/styles/layout/_typography.scss +63 -0
  192. package/aaaa/client/assets/layout/styles/layout/_utils.scss +19 -0
  193. package/aaaa/client/assets/layout/styles/layout/layout.scss +15 -0
  194. package/aaaa/client/assets/layout/styles/layout/preloading.css +73 -0
  195. package/aaaa/client/assets/layout/styles/layout/preloading.scss +79 -0
  196. package/aaaa/client/assets/layout/styles/layout/sidebar/_sidebar_slim.scss +131 -0
  197. package/aaaa/client/assets/layout/styles/layout/sidebar/_sidebar_vertical.scss +132 -0
  198. package/aaaa/client/assets/layout/styles/layout/theme/_dark.scss +10 -0
  199. package/aaaa/client/assets/layout/styles/layout/theme/_light.scss +10 -0
  200. package/aaaa/client/assets/layout/styles/layout/theme/_primary.scss +10 -0
  201. package/aaaa/client/assets/layout/styles/layout/theme/_themes.scss +3 -0
  202. package/aaaa/client/assets/layout/styles/theme/designer/_colors.scss +17 -0
  203. package/aaaa/client/assets/layout/styles/theme/designer/_common.scss +68 -0
  204. package/aaaa/client/assets/layout/styles/theme/designer/_components.scss +102 -0
  205. package/aaaa/client/assets/layout/styles/theme/designer/_mixins.scss +203 -0
  206. package/aaaa/client/assets/layout/styles/theme/designer/components/button/_button.scss +560 -0
  207. package/aaaa/client/assets/layout/styles/theme/designer/components/button/_speeddial.scss +81 -0
  208. package/aaaa/client/assets/layout/styles/theme/designer/components/button/_splitbutton.scss +381 -0
  209. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_carousel.scss +37 -0
  210. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_datatable.scss +278 -0
  211. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_dataview.scss +55 -0
  212. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_filter.scss +138 -0
  213. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_fullcalendar.scss +329 -0
  214. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_orderlist.scss +103 -0
  215. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_organizationchart.scss +50 -0
  216. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_paginator.scss +92 -0
  217. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_picklist.scss +103 -0
  218. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_timeline.scss +38 -0
  219. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_tree.scss +144 -0
  220. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_treetable.scss +246 -0
  221. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_virtualscroller.scss +28 -0
  222. package/aaaa/client/assets/layout/styles/theme/designer/components/file/_fileupload.scss +58 -0
  223. package/aaaa/client/assets/layout/styles/theme/designer/components/menu/_breadcrumb.scss +42 -0
  224. package/aaaa/client/assets/layout/styles/theme/designer/components/menu/_contextmenu.scss +56 -0
  225. package/aaaa/client/assets/layout/styles/theme/designer/components/menu/_dock.scss +86 -0
  226. package/aaaa/client/assets/layout/styles/theme/designer/components/menu/_megamenu.scss +106 -0
  227. package/aaaa/client/assets/layout/styles/theme/designer/components/menu/_menu.scss +45 -0
  228. package/aaaa/client/assets/layout/styles/theme/designer/components/menu/_menubar.scss +183 -0
  229. package/aaaa/client/assets/layout/styles/theme/designer/components/menu/_panelmenu.scss +140 -0
  230. package/aaaa/client/assets/layout/styles/theme/designer/components/menu/_slidemenu.scss +59 -0
  231. package/aaaa/client/assets/layout/styles/theme/designer/components/menu/_steps.scss +56 -0
  232. package/aaaa/client/assets/layout/styles/theme/designer/components/menu/_tabmenu.scss +69 -0
  233. package/aaaa/client/assets/layout/styles/theme/designer/components/menu/_tieredmenu.scss +60 -0
  234. package/aaaa/client/assets/layout/styles/theme/designer/components/messages/_inlinemessage.scss +64 -0
  235. package/aaaa/client/assets/layout/styles/theme/designer/components/messages/_message.scss +102 -0
  236. package/aaaa/client/assets/layout/styles/theme/designer/components/messages/_toast.scss +95 -0
  237. package/aaaa/client/assets/layout/styles/theme/designer/components/misc/_avatar.scss +30 -0
  238. package/aaaa/client/assets/layout/styles/theme/designer/components/misc/_badge.scss +48 -0
  239. package/aaaa/client/assets/layout/styles/theme/designer/components/misc/_blockui.scss +0 -0
  240. package/aaaa/client/assets/layout/styles/theme/designer/components/misc/_chip.scss +38 -0
  241. package/aaaa/client/assets/layout/styles/theme/designer/components/misc/_inplace.scss +17 -0
  242. package/aaaa/client/assets/layout/styles/theme/designer/components/misc/_progressbar.scss +17 -0
  243. package/aaaa/client/assets/layout/styles/theme/designer/components/misc/_scrolltop.scss +20 -0
  244. package/aaaa/client/assets/layout/styles/theme/designer/components/misc/_skeleton.scss +8 -0
  245. package/aaaa/client/assets/layout/styles/theme/designer/components/misc/_tag.scss +35 -0
  246. package/aaaa/client/assets/layout/styles/theme/designer/components/misc/_terminal.scss +11 -0
  247. package/aaaa/client/assets/layout/styles/theme/designer/components/multimedia/_galleria.scss +139 -0
  248. package/aaaa/client/assets/layout/styles/theme/designer/components/multimedia/_image.scss +44 -0
  249. package/aaaa/client/assets/layout/styles/theme/designer/components/overlay/_confirmpopup.scss +65 -0
  250. package/aaaa/client/assets/layout/styles/theme/designer/components/overlay/_dialog.scss +64 -0
  251. package/aaaa/client/assets/layout/styles/theme/designer/components/overlay/_overlaypanel.scss +62 -0
  252. package/aaaa/client/assets/layout/styles/theme/designer/components/overlay/_sidebar.scss +23 -0
  253. package/aaaa/client/assets/layout/styles/theme/designer/components/overlay/_tooltip.scss +33 -0
  254. package/aaaa/client/assets/layout/styles/theme/designer/components/panel/_accordion.scss +119 -0
  255. package/aaaa/client/assets/layout/styles/theme/designer/components/panel/_card.scss +30 -0
  256. package/aaaa/client/assets/layout/styles/theme/designer/components/panel/_divider.scss +31 -0
  257. package/aaaa/client/assets/layout/styles/theme/designer/components/panel/_fieldset.scss +47 -0
  258. package/aaaa/client/assets/layout/styles/theme/designer/components/panel/_panel.scss +58 -0
  259. package/aaaa/client/assets/layout/styles/theme/designer/components/panel/_scrollpanel.scss +6 -0
  260. package/aaaa/client/assets/layout/styles/theme/designer/components/panel/_splitter.scss +19 -0
  261. package/aaaa/client/assets/layout/styles/theme/designer/components/panel/_tabview.scss +78 -0
  262. package/aaaa/client/assets/layout/styles/theme/designer/components/panel/_toolbar.scss +10 -0
  263. package/aaaa/client/assets/layout/styles/theme/theme-dark/_extensions.scss +90 -0
  264. package/aaaa/client/assets/layout/styles/theme/theme-dark/_variables.scss +867 -0
  265. package/aaaa/client/assets/layout/styles/theme/theme-dark/blue/theme.css +7341 -0
  266. package/aaaa/client/assets/layout/styles/theme/theme-dark/blue/theme.scss +12 -0
  267. package/aaaa/client/assets/layout/styles/theme/theme-dark/cyan/theme.css +7341 -0
  268. package/aaaa/client/assets/layout/styles/theme/theme-dark/cyan/theme.scss +12 -0
  269. package/aaaa/client/assets/layout/styles/theme/theme-dark/deeppurple/theme.css +7341 -0
  270. package/aaaa/client/assets/layout/styles/theme/theme-dark/deeppurple/theme.scss +12 -0
  271. package/aaaa/client/assets/layout/styles/theme/theme-dark/green/theme.css +7341 -0
  272. package/aaaa/client/assets/layout/styles/theme/theme-dark/green/theme.scss +12 -0
  273. package/aaaa/client/assets/layout/styles/theme/theme-dark/indigo/theme.css +7341 -0
  274. package/aaaa/client/assets/layout/styles/theme/theme-dark/indigo/theme.scss +12 -0
  275. package/aaaa/client/assets/layout/styles/theme/theme-dark/lime/theme.css +7341 -0
  276. package/aaaa/client/assets/layout/styles/theme/theme-dark/lime/theme.scss +12 -0
  277. package/aaaa/client/assets/layout/styles/theme/theme-dark/orange/theme.css +7341 -0
  278. package/aaaa/client/assets/layout/styles/theme/theme-dark/orange/theme.scss +12 -0
  279. package/aaaa/client/assets/layout/styles/theme/theme-dark/pink/theme.css +7341 -0
  280. package/aaaa/client/assets/layout/styles/theme/theme-dark/pink/theme.scss +12 -0
  281. package/aaaa/client/assets/layout/styles/theme/theme-dark/purple/theme.css +7341 -0
  282. package/aaaa/client/assets/layout/styles/theme/theme-dark/purple/theme.scss +12 -0
  283. package/aaaa/client/assets/layout/styles/theme/theme-dark/yellow/theme.css +7341 -0
  284. package/aaaa/client/assets/layout/styles/theme/theme-dark/yellow/theme.scss +12 -0
  285. package/aaaa/client/assets/layout/styles/theme/theme-light/_extensions.scss +90 -0
  286. package/aaaa/client/assets/layout/styles/theme/theme-light/_variables.scss +870 -0
  287. package/aaaa/client/assets/layout/styles/theme/theme-light/blue/theme.css +7540 -0
  288. package/aaaa/client/assets/layout/styles/theme/theme-light/blue/theme.scss +12 -0
  289. package/aaaa/client/assets/layout/styles/theme/theme-light/cyan/theme.css +7341 -0
  290. package/aaaa/client/assets/layout/styles/theme/theme-light/cyan/theme.scss +12 -0
  291. package/aaaa/client/assets/layout/styles/theme/theme-light/deeppurple/theme.css +7341 -0
  292. package/aaaa/client/assets/layout/styles/theme/theme-light/deeppurple/theme.scss +12 -0
  293. package/aaaa/client/assets/layout/styles/theme/theme-light/green/theme.css +7341 -0
  294. package/aaaa/client/assets/layout/styles/theme/theme-light/green/theme.scss +12 -0
  295. package/aaaa/client/assets/layout/styles/theme/theme-light/indigo/theme.css +7341 -0
  296. package/aaaa/client/assets/layout/styles/theme/theme-light/indigo/theme.scss +12 -0
  297. package/aaaa/client/assets/layout/styles/theme/theme-light/lime/theme.css +7341 -0
  298. package/aaaa/client/assets/layout/styles/theme/theme-light/lime/theme.scss +12 -0
  299. package/aaaa/client/assets/layout/styles/theme/theme-light/orange/theme.css +7341 -0
  300. package/aaaa/client/assets/layout/styles/theme/theme-light/orange/theme.scss +12 -0
  301. package/aaaa/client/assets/layout/styles/theme/theme-light/pink/theme.css +7341 -0
  302. package/aaaa/client/assets/layout/styles/theme/theme-light/pink/theme.scss +12 -0
  303. package/aaaa/client/assets/layout/styles/theme/theme-light/purple/theme.css +7341 -0
  304. package/aaaa/client/assets/layout/styles/theme/theme-light/purple/theme.scss +12 -0
  305. package/aaaa/client/assets/layout/styles/theme/theme-light/yellow/theme.css +7341 -0
  306. package/aaaa/client/assets/layout/styles/theme/theme-light/yellow/theme.scss +12 -0
  307. package/aaaa/client/environments/environment.ts +9 -0
  308. package/aaaa/client/index.dev.html +33 -0
  309. package/aaaa/client/index.prod.html +33 -0
  310. package/aaaa/client/layout/api/menuchangeevent.ts +4 -0
  311. package/aaaa/client/layout/api/tabcloseevent.ts +6 -0
  312. package/aaaa/client/layout/app.breadcrumb.component.html +14 -0
  313. package/aaaa/client/layout/app.breadcrumb.component.ts +48 -0
  314. package/aaaa/client/layout/app.footer.component.html +20 -0
  315. package/aaaa/client/layout/app.footer.component.ts +23 -0
  316. package/aaaa/client/layout/app.menu.component.html +3 -0
  317. package/aaaa/client/layout/app.menu.service.ts +23 -0
  318. package/aaaa/client/layout/app.menuitem.component.ts +310 -0
  319. package/aaaa/client/layout/app.sidebar.component.html +5 -0
  320. package/aaaa/client/layout/app.sidebar.component.ts +13 -0
  321. package/aaaa/client/layout/app.topbar.component.html +72 -0
  322. package/aaaa/client/layout/app.topbar.component.ts +67 -0
  323. package/aaaa/client/layout/common/err-403/err-403.component.html +24 -0
  324. package/aaaa/client/layout/common/err-403/err-403.component.scss +340 -0
  325. package/aaaa/client/layout/common/err-403/err-403.ts +19 -0
  326. package/aaaa/client/layout/common/work-in-progress/work-in-progress.component.html +1 -0
  327. package/aaaa/client/layout/common/work-in-progress/work-in-progress.component.scss +8 -0
  328. package/aaaa/client/layout/common/work-in-progress/work-in-progress.component.ts +14 -0
  329. package/aaaa/client/layout/config/app.config.component.html +86 -0
  330. package/aaaa/client/layout/config/app.config.component.scss +0 -0
  331. package/aaaa/client/layout/config/app.config.component.ts +241 -0
  332. package/aaaa/client/layout/config/config.module.ts +27 -0
  333. package/aaaa/client/layout/main/main.component.html +15 -0
  334. package/aaaa/client/layout/main/main.component.spec.ts +34 -0
  335. package/aaaa/client/layout/main/main.component.ts +186 -0
  336. package/aaaa/client/layout/main.module.ts +45 -0
  337. package/aaaa/client/layout/service/app.layout.service.ts +124 -0
  338. package/aaaa/client/layout/shared/components/app.menu.component.ts +69 -0
  339. package/aaaa/client/layout/shared/components/auth/accessdenied/accessdenied-routing.module.ts +12 -0
  340. package/aaaa/client/layout/shared/components/auth/accessdenied/accessdenied.component.html +11 -0
  341. package/aaaa/client/layout/shared/components/auth/accessdenied/accessdenied.component.ts +7 -0
  342. package/aaaa/client/layout/shared/components/auth/accessdenied/accessdenied.module.ts +17 -0
  343. package/aaaa/client/layout/shared/components/auth/auth-routing.module.ts +14 -0
  344. package/aaaa/client/layout/shared/components/auth/auth.module.ts +13 -0
  345. package/aaaa/client/layout/shared/components/auth/error/error-routing.module.ts +12 -0
  346. package/aaaa/client/layout/shared/components/auth/error/error.component.html +10 -0
  347. package/aaaa/client/layout/shared/components/auth/error/error.component.ts +7 -0
  348. package/aaaa/client/layout/shared/components/auth/error/error.module.ts +12 -0
  349. package/aaaa/client/layout/shared/components/auth/login/login-routing.module.ts +12 -0
  350. package/aaaa/client/layout/shared/components/auth/login/login.component.html +15 -0
  351. package/aaaa/client/layout/shared/components/auth/login/login.component.ts +47 -0
  352. package/aaaa/client/layout/shared/components/auth/login/login.module.ts +21 -0
  353. package/aaaa/client/layout/shared/components/auth/logout/logout/logout.component.html +8 -0
  354. package/aaaa/client/layout/shared/components/auth/logout/logout/logout.component.scss +21 -0
  355. package/aaaa/client/layout/shared/components/auth/logout/logout/logout.component.ts +15 -0
  356. package/aaaa/client/layout/shared/components/auth/logout/logout.module.ts +26 -0
  357. package/aaaa/client/layout/shared/components/code/code.component.ts +17 -0
  358. package/aaaa/client/layout/shared/components/indic/indic.component.html +8 -0
  359. package/aaaa/client/layout/shared/components/indic/indic.component.scss +0 -0
  360. package/aaaa/client/layout/shared/components/indic/indic.component.ts +60 -0
  361. package/aaaa/client/layout/shared/components/lookup-input/lookup-input.component.html +70 -0
  362. package/aaaa/client/layout/shared/components/lookup-input/lookup-input.component.scss +0 -0
  363. package/aaaa/client/layout/shared/components/lookup-input/lookup-input.component.ts +121 -0
  364. package/aaaa/client/layout/shared/components/notfound/notfound-routing.module.ts +12 -0
  365. package/aaaa/client/layout/shared/components/notfound/notfound.component.html +42 -0
  366. package/aaaa/client/layout/shared/components/notfound/notfound.component.ts +7 -0
  367. package/aaaa/client/layout/shared/components/notfound/notfound.module.ts +12 -0
  368. package/aaaa/client/layout/shared/constants/dateFormat.constants.ts +1 -0
  369. package/aaaa/client/layout/shared/constants/mocks/user-mocks.constants.ts +36 -0
  370. package/aaaa/client/layout/shared/constants/pagination.constants.ts +1 -0
  371. package/aaaa/client/layout/shared/core/config/application-config.service.ts +34 -0
  372. package/aaaa/client/layout/shared/core/config/db-config.service.ts +20 -0
  373. package/aaaa/client/layout/shared/core/guard/can-modify.guard.ts +51 -0
  374. package/aaaa/client/layout/shared/core/guard/login.guard.ts +24 -0
  375. package/aaaa/client/layout/shared/core/guard/ui.guard.ts +94 -0
  376. package/aaaa/client/layout/shared/core/interceptor/handle-req.interceptor.ts +31 -0
  377. package/aaaa/client/layout/shared/core/interceptor/index.ts +10 -0
  378. package/aaaa/client/layout/shared/core/request/pageable.model.ts +5 -0
  379. package/aaaa/client/layout/shared/core/request/request-util.ts +21 -0
  380. package/aaaa/client/layout/shared/core/resolver/accueil.resolver.ts +19 -0
  381. package/aaaa/client/layout/shared/core/storage/MyLocalStorageService.ts +22 -0
  382. package/aaaa/client/layout/shared/core/storage/MyStorageService.ts +17 -0
  383. package/aaaa/client/layout/shared/dev/dev-dashboard/dev-dashboard.component.html +26 -0
  384. package/aaaa/client/layout/shared/dev/dev-dashboard/dev-dashboard.component.scss +68 -0
  385. package/aaaa/client/layout/shared/dev/dev-dashboard/dev-dashboard.component.ts +24 -0
  386. package/aaaa/client/layout/shared/dev/dev-routing.module.ts +19 -0
  387. package/aaaa/client/layout/shared/dev/dev.module.ts +76 -0
  388. package/aaaa/client/layout/shared/entities/claims.model.ts +9 -0
  389. package/aaaa/client/layout/shared/entities/user.model.ts +9 -0
  390. package/aaaa/client/layout/shared/i18n/fr.json +74 -0
  391. package/aaaa/client/layout/shared/service/dev.service.ts +21 -0
  392. package/aaaa/client/layout/shared/service/policy.service.ts +22 -0
  393. package/aaaa/client/layout/shared/service/user.service.ts +71 -0
  394. package/aaaa/client/layout/shared/shared.module.ts +11 -0
  395. package/aaaa/client/layout/shared/utils/globals.ts +85 -0
  396. package/aaaa/client/layout/shared/utils/misc.ts +31 -0
  397. package/aaaa/client/main-routing.module.ts +47 -0
  398. package/aaaa/client/main.ts +13 -0
  399. package/aaaa/client/pages.module.ts +76 -0
  400. package/aaaa/client/polyfills.ts +64 -0
  401. package/aaaa/client/styles.scss +45 -0
  402. package/aaaa/client/themes.scss +84 -0
  403. package/aaaa/cypress/fixtures/example.json +5 -0
  404. package/aaaa/cypress/support/commands.ts +37 -0
  405. package/aaaa/cypress/support/component-index.html +12 -0
  406. package/aaaa/cypress/support/component.ts +39 -0
  407. package/aaaa/cypress.config.ts +11 -0
  408. package/aaaa/logo.png +0 -0
  409. package/aaaa/package.json +84 -0
  410. package/aaaa/policies/ui.policy.json +4 -0
  411. package/aaaa/pom.xml +59 -0
  412. package/aaaa/run.sh +7 -0
  413. package/aaaa/tsconfig.app.json +9 -0
  414. package/aaaa/tsconfig.json +39 -0
  415. package/aaaa/tsconfig.spec.json +9 -0
  416. package/aaaa/yarn.lock +8987 -0
  417. package/cmd/init.js +2 -1
  418. package/cmd/login.js +1 -1
  419. package/cmd/update.js +1 -1
  420. package/lib/s3.js +2 -8
  421. package/package.json +1 -1
@@ -0,0 +1,172 @@
1
+ module.exports = (args) => {
2
+ const hb = require('handlebars');
3
+ const fs = require('fs');
4
+ const xml2js = require('xml2js');
5
+ const path = require('path');
6
+ const ora = require('ora');
7
+ const prompts = require('prompts');
8
+ const dir = __dirname + '/../../../../api';
9
+ const data_dir = fs.readdirSync(dir);
10
+ const Jimp = require('jimp');
11
+ const commondir = 'main/java/fr/cerema/dsi';
12
+ const commondot = commondir.replace(/\//g, '.').split('main.java.')[1];
13
+ const capitalizeFirstLetter = (str) => {
14
+ if (!str || typeof str !== 'string') {
15
+ return '';
16
+ }
17
+ return str.charAt(0).toUpperCase() + str.slice(1);
18
+ };
19
+ let data = data_dir.find((item) => item.includes('-data'));
20
+ const schema = data.split('-data')[0];
21
+ const presentation_dir = path.resolve(
22
+ `${__dirname}/../../../../api/${schema}-presentation/src/${commondir}/${schema}/`
23
+ );
24
+ const configSwagger = fs.readFileSync(
25
+ __dirname + '/../../templates/java/config.java',
26
+ 'utf-8'
27
+ );
28
+
29
+ const restartIt = async () => {
30
+ console.log('xxxx');
31
+ const response = await prompts({
32
+ type: 'confirm',
33
+ name: 'value',
34
+ message: 'Redémarrage du service API ?',
35
+ });
36
+
37
+ if (response.value) {
38
+ const spinner = ora('Redémarrage du service API').start();
39
+ const { exec } = require('child_process');
40
+ exec('yarn restart api', (err, stdout, stderr) => {
41
+ if (err) {
42
+ console.error(err);
43
+ return;
44
+ }
45
+ spinner.succeed('Service API redémarré !');
46
+ });
47
+ }
48
+ };
49
+
50
+ async function createBanner(imagePath, titleText, cb) {
51
+ const spinner = ora('Création de la bannière').start();
52
+ const [image, fontWhite, fontBlack] = await Promise.all([
53
+ Jimp.read(imagePath),
54
+ Jimp.loadFont(Jimp.FONT_SANS_128_WHITE), // Police blanche de taille 128
55
+ Jimp.loadFont(Jimp.FONT_SANS_128_BLACK), // Police noire de taille 128
56
+ ]);
57
+
58
+ const bannerWidth = 1000;
59
+ const bannerHeight = 192;
60
+
61
+ image.resize(Jimp.AUTO, bannerHeight);
62
+ const banner = new Jimp(bannerWidth, bannerHeight, 0x00000000); // 0x00000000 est transparent
63
+ banner.composite(image, 0, 0);
64
+ const textWidth = bannerWidth - image.bitmap.width;
65
+ const spacing = 30;
66
+ banner.print(
67
+ fontBlack,
68
+ image.bitmap.width + spacing + 2,
69
+ bannerHeight / 2 -
70
+ Jimp.measureTextHeight(fontBlack, titleText, textWidth) / 2 +
71
+ 2,
72
+ {
73
+ text: titleText,
74
+ alignmentX: Jimp.HORIZONTAL_ALIGN_LEFT,
75
+ alignmentY: Jimp.VERTICAL_ALIGN_MIDDLE,
76
+ width: textWidth - spacing,
77
+ }
78
+ );
79
+ banner.print(
80
+ fontBlack,
81
+ image.bitmap.width + spacing + 2,
82
+ bannerHeight / 2 -
83
+ Jimp.measureTextHeight(fontBlack, titleText, textWidth) / 2 +
84
+ 3,
85
+ {
86
+ text: titleText,
87
+ alignmentX: Jimp.HORIZONTAL_ALIGN_LEFT,
88
+ alignmentY: Jimp.VERTICAL_ALIGN_MIDDLE,
89
+ width: textWidth - spacing,
90
+ }
91
+ );
92
+
93
+ banner.print(
94
+ fontWhite,
95
+ image.bitmap.width + spacing,
96
+ bannerHeight / 2 -
97
+ Jimp.measureTextHeight(fontWhite, titleText, textWidth) / 2,
98
+ {
99
+ text: titleText,
100
+ alignmentX: Jimp.HORIZONTAL_ALIGN_LEFT,
101
+ alignmentY: Jimp.VERTICAL_ALIGN_MIDDLE,
102
+ width: textWidth - spacing,
103
+ }
104
+ );
105
+ fs.copyFileSync(
106
+ __dirname + '/../../../../logo.png',
107
+ __dirname + '/../../../../client/assets/images/logo_title.png'
108
+ );
109
+ banner.write(
110
+ __dirname + '/../../../../client/assets/images/logo_title.png',
111
+ (err) => {
112
+ if (err) throw err;
113
+ spinner.succeed('Bannière créée !');
114
+ cb();
115
+ }
116
+ );
117
+ }
118
+ const config_swagger_filename =
119
+ presentation_dir + '/config/WebConfiguration.java';
120
+ const ConfigSwagger = hb.compile(configSwagger);
121
+ const pkg = require('../../../../package.json');
122
+ const namespace = commondot + '.' + schema;
123
+ const packageName = pkg.name;
124
+ const packageDescription = pkg.description;
125
+ const packageVersion = pkg.version;
126
+ createBanner(
127
+ __dirname + '/../../../../logo.png',
128
+ capitalizeFirstLetter(schema),
129
+ () => {
130
+ const spinner = ora(
131
+ 'Création du fichier de configuration Swagger'
132
+ ).start();
133
+ fs.writeFileSync(
134
+ config_swagger_filename,
135
+ ConfigSwagger({
136
+ namespace,
137
+ packageName,
138
+ packageDescription,
139
+ packageVersion,
140
+ })
141
+ );
142
+ spinner.succeed('Fichier de configuration Swagger créé !');
143
+ const spin = ora('Synchronisation du pom.xml').start();
144
+ fs.readFile(
145
+ __dirname + '/../../../../pom.xml',
146
+ 'utf8',
147
+ (err, xmlData) => {
148
+ if (err) throw err;
149
+
150
+ xml2js.parseString(xmlData, async (err, result) => {
151
+ if (err) throw err;
152
+
153
+ result.project.artifactId[0] = packageName;
154
+ result.project.version[0] = packageVersion;
155
+ if (!result.project.description) {
156
+ result.project.description = [];
157
+ }
158
+ result.project.description[0] = packageDescription;
159
+
160
+ const builder = new xml2js.Builder();
161
+ const updatedXml = builder.buildObject(result);
162
+
163
+ fs.writeFileSync(__dirname + '/../../../../pom.xml', updatedXml);
164
+ spin.succeed('pom.xml synchronisé !');
165
+ console.log(' ');
166
+ await restartIt();
167
+ });
168
+ }
169
+ );
170
+ }
171
+ );
172
+ };
@@ -0,0 +1,92 @@
1
+ module.exports = (args) => {
2
+ require('dotenv').config();
3
+ const fs = require('fs');
4
+ const Path = require('path');
5
+ const prompts = require('prompts');
6
+ const { OpenAI } = require('openai');
7
+ const ora = require('ora');
8
+ const path = require('path');
9
+ const Sequelize = require('sequelize');
10
+
11
+ var SETUP = fs.readFileSync(`${__dirname}/../../../.uuid`, 'utf-8');
12
+ let envContent;
13
+ const dockerPath = path.resolve(__dirname, `../../../../docker/${SETUP}`);
14
+ require('dotenv').config({ path: dockerPath + '/.env' });
15
+
16
+ const uri = `postgres://${process.env.POSTGRES_USER}:${process.env.POSTGRES_PASSWORD}@localhost:${process.env.POSTGRES_DEV_PORT}/${process.env.POSTGRES_DB}`;
17
+
18
+ const openai = new OpenAI({
19
+ apiKey: process.env.OPENAI_API_KEY,
20
+ });
21
+
22
+ function extractSQLQueries(text) {
23
+ const regex = /CREATE TABLE .*?;/gs;
24
+ return text.match(regex) || [];
25
+ }
26
+
27
+ const replacePrimaryKeys = (sql) => {
28
+ // Remplacer PRIMARY KEY
29
+ sql = sql.replace(/(\w+)_id SERIAL PRIMARY KEY/g, 'id SERIAL PRIMARY KEY');
30
+
31
+ // Remplacer les références
32
+ const referenceRegex = /REFERENCES (\w+) \((\w+)_id\)/g;
33
+ sql = sql.replace(referenceRegex, 'REFERENCES $1 (id)');
34
+
35
+ // Remplacer les autres occurrences de _id
36
+ sql = sql.replace(/(\w+)_id/g, '$1');
37
+
38
+ return sql;
39
+ };
40
+
41
+ async function q() {
42
+ const response = await prompts({
43
+ type: 'text',
44
+ name: 'content',
45
+ message: 'Décrivez la structure de votre base de données',
46
+ });
47
+
48
+ const completion = await openai.chat.completions.create({
49
+ messages: [
50
+ {
51
+ role: 'assistant',
52
+ content:
53
+ 'write postgres SQL create table with field name escaped and automatically add field id as serial primary key : ' +
54
+ response.content,
55
+ },
56
+ ],
57
+ model: 'gpt-3.5-turbo',
58
+ });
59
+ let SQL = completion.choices[0].message.content;
60
+ SQL = extractSQLQueries(SQL);
61
+ SQL = replacePrimaryKeys(SQL.join('\n'));
62
+ const response2 = await prompts({
63
+ type: 'confirm',
64
+ name: 'confirm',
65
+ message:
66
+ 'Voici votre requête :\n' +
67
+ SQL +
68
+ "\nVoulez vous que je l'éxécute sur votre instance postgres ?",
69
+ });
70
+ if (response2.confirm) {
71
+ const spinner = ora('Génération de votre requête SQL...').start();
72
+ const sequelize = new Sequelize(uri, {
73
+ logging: false,
74
+ });
75
+ sequelize
76
+ .query(SQL)
77
+ .then((res) => {
78
+ spinner.succeed(
79
+ '👍 Votre requête SQL a bien été éxécutée sur votre instance postgres.'
80
+ );
81
+ sequelize.close();
82
+ })
83
+ .catch((err) => {
84
+ spinner.fail('KO');
85
+ console.log('----');
86
+ console.log(err.message);
87
+ console.log('----');
88
+ });
89
+ }
90
+ }
91
+ q();
92
+ };
@@ -0,0 +1,18 @@
1
+ module.exports = (args) => {
2
+ const fs = require('fs');
3
+ const Path = require('path');
4
+
5
+ const templates = require('../../lib/templates');
6
+ // Supprime le slash initial s'il existe
7
+ const arg = args[0].startsWith('/') ? args[0].slice(1) : args[0];
8
+ const servicePath = Path.normalize(
9
+ __dirname + '/../../../../client/app/services/' + arg + '.service.ts'
10
+ );
11
+ const page = arg.split('/');
12
+ const name = page[page.length - 1];
13
+ const nameUpper = name.charAt(0).toUpperCase() + name.slice(1);
14
+ fs.writeFileSync(
15
+ servicePath,
16
+ templates.service({ name: name, nameUpperCase: nameUpper })
17
+ );
18
+ };
@@ -0,0 +1,19 @@
1
+ const { exec } = require('child_process');
2
+ const fs = require('fs');
3
+ const path = require('path');
4
+ const hb = require('handlebars');
5
+ const args = process.argv.slice(2);
6
+
7
+ if (args[0] == 'p') args[0] = 'page';
8
+ if (args[0] == 'c') args[0] = 'component';
9
+ if (args[0] == 's') args[0] = 'service';
10
+ if (args[0] == 'a') args[0] = 'api';
11
+ if (args[0] == 'q') args[0] = 'query';
12
+ if (args[0] == 'a') args[0] = 'api';
13
+
14
+ try {
15
+ require(__dirname + '/gen/' + args[0] + '/' + args[0])(args.slice(1));
16
+ } catch (e) {
17
+ console.log(e);
18
+ console.log("*** Cette commande n'existe pas ***");
19
+ }
@@ -0,0 +1,94 @@
1
+ const fs = require('fs');
2
+ const Handlebars = require('handlebars');
3
+ const prettier = require('prettier');
4
+
5
+ const emptyModule = {
6
+ imports: [
7
+ [['NgModule'], '@angular/core'],
8
+ [['CommonModule'], '@angular/common'],
9
+ [['TranslateModule'], '@ngx-translate/core'],
10
+ ],
11
+ module: {
12
+ exports: [],
13
+ providers: ['MessageService'],
14
+ declarations: [],
15
+ imports: [],
16
+ },
17
+ };
18
+
19
+ const toJSON = (path) => {
20
+ const code = fs.readFileSync(path, 'utf8');
21
+
22
+ let jsonOutput = {
23
+ imports: [],
24
+ module: {
25
+ exports: [],
26
+ providers: [],
27
+ declarations: [],
28
+ imports: [],
29
+ },
30
+ };
31
+
32
+ // Handle imports
33
+ const importRegex = /import {(.+?)} from ['"](.+?)['"]/g;
34
+ let match;
35
+ while ((match = importRegex.exec(code)) !== null) {
36
+ const itemsList = match[1]
37
+ .split(',')
38
+ .map((item) => item.trim())
39
+ .filter(Boolean);
40
+ const path = match[2];
41
+ jsonOutput.imports.push([itemsList, path]);
42
+ }
43
+
44
+ // Handle NgModule properties
45
+ ['providers', 'declarations', 'imports'].forEach((prop) => {
46
+ const propRegex = new RegExp(`${prop}: \\[([\\s\\S]*?)\\],`);
47
+ const match = propRegex.exec(code);
48
+ if (match) {
49
+ jsonOutput.module[prop] = match[1]
50
+ .split(',')
51
+ .map((item) => item.trim())
52
+ .filter(Boolean);
53
+ }
54
+ });
55
+ return jsonOutput;
56
+ };
57
+
58
+ const toModule = async (path) => {
59
+ try {
60
+ const json = JSON.parse(fs.readFileSync(path, 'utf8'));
61
+ } catch (e) {
62
+ const json = emptyModule;
63
+ }
64
+
65
+ const importTemplate = "import { {{this.[0].[0]}} } from '{{this.[1]}}';\n";
66
+ const compiledImportTemplate = Handlebars.compile(importTemplate);
67
+ let importStatements = json.imports.map(compiledImportTemplate).join('');
68
+
69
+ const moduleTemplate = `
70
+ @NgModule({
71
+ exports: [{{module.exports}}],
72
+ providers: [{{module.providers}}],
73
+ declarations: [{{module.declarations}}],
74
+ imports: [{{module.imports}}],
75
+ })
76
+ export class MyModule {}
77
+ `;
78
+
79
+ let compiledModuleTemplate = Handlebars.compile(moduleTemplate);
80
+ let moduleStatement = compiledModuleTemplate(json);
81
+
82
+ let result = importStatements + moduleStatement;
83
+
84
+ let moduleFileContent = await prettier.format(result, {
85
+ parser: 'typescript',
86
+ });
87
+
88
+ return moduleFileContent;
89
+ };
90
+
91
+ module.exports = {
92
+ toJSON,
93
+ toModule,
94
+ };
@@ -0,0 +1,140 @@
1
+ const _ = require('lodash');
2
+ const fs = require('fs');
3
+
4
+ const queryData = (data, params, fields) => {
5
+ let results = data;
6
+
7
+ // Filter by parameters
8
+ if (params) {
9
+ results = results.filter((item) => {
10
+ return Object.keys(params).every((key) => {
11
+ return item[key] === params[key];
12
+ });
13
+ });
14
+ }
15
+
16
+ // Select fields
17
+ if (fields) {
18
+ results = results.map((item) => {
19
+ const selected = {};
20
+ fields.forEach((field) => {
21
+ selected[field] = item[field];
22
+ });
23
+ return selected;
24
+ });
25
+ }
26
+
27
+ return results;
28
+ };
29
+
30
+ const dbTypes = (type) => {
31
+ if (type === 'bool') type = 'boolean';
32
+ else if (type === 'text') type = 'text';
33
+ else if (type === 'string') type = 'varchar(255)';
34
+ else if (type === 'int') type = 'integer';
35
+ else if (type === 'bigint') type = 'bigint';
36
+ else if (type === 'smallint') type = 'smallint';
37
+ else if (type === 'decimal') type = 'decimal';
38
+ else if (type === 'numeric') type = 'numeric';
39
+ else if (type === 'real') type = 'real';
40
+ else if (type === 'double') type = 'double precision';
41
+ else if (type === 'date') type = 'date';
42
+ else if (type === 'time') type = 'time';
43
+ else if (type === 'timestamp') type = 'timestamp';
44
+ else if (type === 'timestamptz') type = 'timestamp with time zone';
45
+ else if (type === 'interval') type = 'interval';
46
+ else if (type === 'json') type = 'json';
47
+ else if (type === 'jsonb') type = 'jsonb';
48
+ else if (type === 'uuid') type = 'uuid';
49
+ else if (type === 'geography') type = 'geography';
50
+ else if (type === 'point') type = 'point';
51
+ else if (type === 'line') type = 'line';
52
+ else if (type === 'lseg') type = 'lseg';
53
+ else if (type === 'box') type = 'box';
54
+ else if (type === 'path') type = 'path';
55
+ else if (type === 'polygon') type = 'polygon';
56
+ else if (type === 'circle') type = 'circle';
57
+ return type;
58
+ };
59
+
60
+ const compareArrays = (oldArray, newArray) => {
61
+ const created = [];
62
+ const updated = [];
63
+ const deleted = [];
64
+
65
+ // Compare objects in the new array with the old array
66
+ for (const newObj of newArray) {
67
+ const matchingObj = oldArray.find((oldObj) => oldObj.id === newObj.id);
68
+
69
+ if (matchingObj) {
70
+ // Object exists in both arrays, check for updates
71
+ const updatedProperties = {};
72
+ let hasUpdates = false;
73
+
74
+ for (const key in newObj) {
75
+ if (!_.isEqual(newObj[key], matchingObj[key])) {
76
+ updatedProperties[key] = {
77
+ from: matchingObj[key],
78
+ to: newObj[key],
79
+ };
80
+ hasUpdates = true;
81
+ }
82
+ }
83
+
84
+ if (hasUpdates) {
85
+ const updateInfo = {
86
+ id: newObj.id,
87
+ name: matchingObj.name,
88
+ schema: matchingObj.schema,
89
+ updatedProperties,
90
+ };
91
+
92
+ updated.push(updateInfo);
93
+ }
94
+ } else {
95
+ // Object doesn't exist in the old array, it's a new object
96
+ created.push(newObj);
97
+ }
98
+ }
99
+
100
+ // Find deleted objects by comparing IDs
101
+ for (const oldObj of oldArray) {
102
+ const matchingObj = newArray.find((newObj) => oldObj.id === newObj.id);
103
+
104
+ if (!matchingObj) {
105
+ // Object doesn't exist in the new array, it's deleted
106
+ deleted.push(oldObj);
107
+ }
108
+ }
109
+
110
+ return { created, updated, deleted };
111
+ };
112
+
113
+ const compareConstraintsArrays = (oldArray, newArray) => {
114
+ const created = _.differenceWith(newArray, oldArray, _.isEqual);
115
+ const deleted = _.differenceWith(oldArray, newArray, _.isEqual);
116
+ const commonItems = _.intersectionWith(
117
+ newArray,
118
+ oldArray,
119
+ (newItem, oldItem) => newItem.constraint_name === oldItem.constraint_name
120
+ );
121
+ const updated = commonItems.filter((newItem) => {
122
+ const oldItem = oldArray.find(
123
+ (i) => i.constraint_name === newItem.constraint_name
124
+ );
125
+ return !_.isEqual(newItem, oldItem);
126
+ });
127
+
128
+ return {
129
+ created,
130
+ updated,
131
+ deleted,
132
+ };
133
+ };
134
+
135
+ module.exports = {
136
+ queryData,
137
+ dbTypes,
138
+ compareArrays,
139
+ compareConstraintsArrays,
140
+ };
@@ -0,0 +1,48 @@
1
+ const hb = require('handlebars');
2
+ const fs = require('fs');
3
+ /** templates */
4
+ const route = hb.compile(
5
+ fs.readFileSync(__dirname + '/../templates/routing.module.ts', 'utf-8')
6
+ );
7
+ const html = hb.compile(
8
+ fs.readFileSync(__dirname + '/../templates/{{name}}.component.html', 'utf8')
9
+ );
10
+ const scss = hb.compile(
11
+ fs.readFileSync(__dirname + '/../templates/{{name}}.component.scss', 'utf8')
12
+ );
13
+ const ts = hb.compile(
14
+ fs.readFileSync(__dirname + '/../templates/{{name}}.component.ts', 'utf8')
15
+ );
16
+ const service = hb.compile(
17
+ fs.readFileSync(__dirname + '/../templates/{{name}}.service.ts', 'utf8')
18
+ );
19
+
20
+ const cxHTML = hb.compile(
21
+ fs.readFileSync(
22
+ __dirname + '/../templates/components/{{name}}.component.html',
23
+ 'utf8'
24
+ )
25
+ );
26
+ const cxCSS = hb.compile(
27
+ fs.readFileSync(
28
+ __dirname + '/../templates/components/{{name}}.component.scss',
29
+ 'utf8'
30
+ )
31
+ );
32
+ const cxTS = hb.compile(
33
+ fs.readFileSync(
34
+ __dirname + '/../templates/components/{{name}}.component.ts',
35
+ 'utf8'
36
+ )
37
+ );
38
+
39
+ module.exports = {
40
+ route,
41
+ html,
42
+ scss,
43
+ ts,
44
+ service,
45
+ cxTS,
46
+ cxCSS,
47
+ cxHTML,
48
+ };
@@ -0,0 +1,76 @@
1
+ const modifyRoutes = (routes) => {
2
+ routes.forEach((route) => {
3
+ if (route.children) {
4
+ // Move the component into children with empty path
5
+ route.children.unshift({
6
+ path: '',
7
+ component: route.component,
8
+ });
9
+ delete route.component;
10
+
11
+ // Recursively modify the child routes
12
+ modifyRoutes(route.children);
13
+ }
14
+ });
15
+ };
16
+
17
+ const pathsToJson = (paths) => {
18
+ const routes = [];
19
+ const imports = [];
20
+
21
+ paths.forEach((path) => {
22
+ const parts = path.split('/').filter(Boolean); // removes empty strings
23
+ let currentRoute = routes;
24
+
25
+ parts.forEach((part, index) => {
26
+ // Check if the part is 'root'
27
+ let componentPathPart = part;
28
+ if (part === 'root') {
29
+ part = ''; // Change 'root' to empty string
30
+ }
31
+
32
+ let existingRoute = currentRoute.find((route) => route.path === part);
33
+
34
+ if (!existingRoute) {
35
+ existingRoute = { path: part };
36
+ currentRoute.push(existingRoute);
37
+ }
38
+
39
+ if (index === parts.length - 1) {
40
+ existingRoute.component =
41
+ componentPathPart.charAt(0).toUpperCase() +
42
+ componentPathPart.slice(1) +
43
+ 'Component';
44
+ const componentName = existingRoute.component;
45
+
46
+ if (!imports.find((imp) => imp.name === componentName)) {
47
+ // Generate the correct import path
48
+ const importPath =
49
+ './' +
50
+ (path + '/' + componentPathPart + '.component').replace(/^\//, '');
51
+ imports.push({
52
+ name: componentName,
53
+ path: importPath,
54
+ });
55
+ }
56
+ }
57
+
58
+ if (index !== parts.length - 1) {
59
+ if (!existingRoute.children) {
60
+ existingRoute.children = [];
61
+ }
62
+ currentRoute = existingRoute.children;
63
+ }
64
+ });
65
+ });
66
+
67
+ return {
68
+ imports: imports,
69
+ routes: routes,
70
+ };
71
+ };
72
+
73
+ module.exports = {
74
+ modifyRoutes,
75
+ pathsToJson,
76
+ };
@@ -0,0 +1,34 @@
1
+ const serviceName = process.argv[process.argv.length - 1];
2
+ const { spawn } = require('child_process');
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+
6
+ var SETUP = fs.readFileSync(`${__dirname}/../.uuid`, 'utf-8').split('\n')[0];
7
+
8
+ const streamDockerComposeLogs = (serviceName) => {
9
+ const dockerComposeDir = path.resolve(
10
+ path.join(__dirname + '/../../docker', SETUP)
11
+ );
12
+
13
+ const dockerComposeLogs = spawn(
14
+ 'docker-compose',
15
+ ['logs', '-f', serviceName],
16
+ {
17
+ cwd: dockerComposeDir,
18
+ }
19
+ );
20
+
21
+ dockerComposeLogs.stdout.on('data', (data) => {
22
+ console.log(`${data}`);
23
+ });
24
+
25
+ dockerComposeLogs.stderr.on('data', (data) => {
26
+ console.error(`${data}`);
27
+ });
28
+
29
+ dockerComposeLogs.on('close', (code) => {
30
+ console.log(`exited.`);
31
+ });
32
+ };
33
+
34
+ streamDockerComposeLogs(serviceName);