runlify 0.0.714 → 0.0.715

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 (352) hide show
  1. package/build/cli.js +20 -52
  2. package/build/commands/availableEnvironments.js +16 -51
  3. package/build/commands/generate.js +10 -46
  4. package/build/commands/init.js +73 -140
  5. package/build/commands/login.js +6 -42
  6. package/build/commands/logout.js +5 -41
  7. package/build/commands/pullEnvs.js +23 -70
  8. package/build/commands/readEnv.js +16 -45
  9. package/build/commands/regen.js +17 -48
  10. package/build/commands/runlify.js +6 -37
  11. package/build/commands/showToken.js +14 -45
  12. package/build/commands/start.js +57 -84
  13. package/build/commands/tryGetMeta.js +7 -43
  14. package/build/documentation/algoritmToDoc.js +4 -4
  15. package/build/documentation/algoritmToDoc.spec.js +5 -5
  16. package/build/documentation/curlExampleToText.js +15 -16
  17. package/build/documentation/curlExampleToText.spec.js +32 -16
  18. package/build/documentation/doc.js +1 -2
  19. package/build/documentation/docToFlatDoc.js +13 -17
  20. package/build/documentation/docToFlatDoc.spec.js +9 -9
  21. package/build/documentation/flatDoc.js +1 -2
  22. package/build/documentation/flatDocToText.js +4 -6
  23. package/build/documentation/flatDocToText.spec.js +20 -8
  24. package/build/documentation/templateDoc.js +1 -2
  25. package/build/documentation/templateDocToDoc.js +2 -2
  26. package/build/extensions/auth.js +64 -124
  27. package/build/extensions/cli-extension.js +3 -3
  28. package/build/extensions/cloudEnv.js +76 -120
  29. package/build/extensions/cloudMeta.js +35 -73
  30. package/build/extensions/globalConfig.js +37 -80
  31. package/build/extensions/localConfig.js +15 -46
  32. package/build/extensions/preventRunningIfUpdateAvailable.js +18 -52
  33. package/build/log.js +6 -6
  34. package/build/projectsGeneration/args.js +33 -53
  35. package/build/projectsGeneration/builders/AdditionalServiceBuilder.js +62 -96
  36. package/build/projectsGeneration/builders/BaseBuilder.js +30 -34
  37. package/build/projectsGeneration/builders/BaseSavableEntityBuilder.js +272 -312
  38. package/build/projectsGeneration/builders/CatalogBuilder.js +17 -46
  39. package/build/projectsGeneration/builders/ConfigVarBuilder.js +25 -36
  40. package/build/projectsGeneration/builders/DeploymentBuilder.js +18 -47
  41. package/build/projectsGeneration/builders/DocumentBuilder.js +26 -56
  42. package/build/projectsGeneration/builders/InfoRegistryBuilder.js +106 -140
  43. package/build/projectsGeneration/builders/PageBuilder.js +22 -51
  44. package/build/projectsGeneration/builders/PermissionBuilder.js +12 -41
  45. package/build/projectsGeneration/builders/ReportBuilder.js +23 -52
  46. package/build/projectsGeneration/builders/RestApiBuilder.js +20 -50
  47. package/build/projectsGeneration/builders/RestApiMethodBuilder.js +25 -54
  48. package/build/projectsGeneration/builders/RoleBuilder.js +12 -41
  49. package/build/projectsGeneration/builders/SumRegistryBuilder.js +100 -133
  50. package/build/projectsGeneration/builders/SystemMetaBuilder.js +281 -324
  51. package/build/projectsGeneration/builders/TelegramBotBuilder.js +18 -47
  52. package/build/projectsGeneration/builders/docs/DocumentationOfDocumentBuilder.js +8 -9
  53. package/build/projectsGeneration/builders/fields/BaseFieldBuilder.js +89 -105
  54. package/build/projectsGeneration/builders/fields/IdFieldBuilder.js +24 -54
  55. package/build/projectsGeneration/builders/fields/LinkFieldBuilder.js +33 -62
  56. package/build/projectsGeneration/builders/fields/ModelFieldBuilder.js +18 -47
  57. package/build/projectsGeneration/builders/fields/ScalarFieldBuilder.js +11 -42
  58. package/build/projectsGeneration/builders/fields/ViewLinkFieldBuilder.js +26 -55
  59. package/build/projectsGeneration/builders/integrationClients/IntegrationClientArgsModelBuilder.js +6 -23
  60. package/build/projectsGeneration/builders/integrationClients/IntegrationClientBaseModelBuilder.js +28 -57
  61. package/build/projectsGeneration/builders/integrationClients/IntegrationClientBuilder.js +25 -54
  62. package/build/projectsGeneration/builders/integrationClients/IntegrationClientQueryMethodsBuilder.js +18 -47
  63. package/build/projectsGeneration/builders/integrationClients/IntegrationClientReturnModelBuilder.js +12 -41
  64. package/build/projectsGeneration/builders/materialUiIcons.js +2 -2
  65. package/build/projectsGeneration/builders/mehods/ArgsModelBuilder.js +6 -23
  66. package/build/projectsGeneration/builders/mehods/BaseModelBuilder.js +30 -59
  67. package/build/projectsGeneration/builders/mehods/MethodBuilder.js +36 -66
  68. package/build/projectsGeneration/builders/mehods/ReturnModelBuilder.js +12 -41
  69. package/build/projectsGeneration/builders/menu/BaseMenuItemBuilder.js +24 -54
  70. package/build/projectsGeneration/builders/menu/ExternalEnvMenuItemBuilder.js +11 -40
  71. package/build/projectsGeneration/builders/menu/ExternalMenuItemBuilder.js +11 -40
  72. package/build/projectsGeneration/builders/menu/GroupMenuItemBuilder.js +31 -66
  73. package/build/projectsGeneration/builders/menu/InternalMenuItemBuilder.js +16 -45
  74. package/build/projectsGeneration/builders/tsFilterFields.js +11 -12
  75. package/build/projectsGeneration/builders/tsFilterFields.spec.js +29 -11
  76. package/build/projectsGeneration/builders/ui/FormsBuilder.js +9 -10
  77. package/build/projectsGeneration/builders/ui/ListFormBuilder.js +9 -10
  78. package/build/projectsGeneration/builders/ui/ListFormFilterBuilder.js +14 -16
  79. package/build/projectsGeneration/builders/ui/ListFormFilterFieldBuilder.js +8 -9
  80. package/build/projectsGeneration/builders/utils/accessFunctions.js +4 -4
  81. package/build/projectsGeneration/builders/validation/baseValudationToYupAssertions.js +4 -4
  82. package/build/projectsGeneration/builders/validation/bigintValudationToYupAssertions.js +5 -5
  83. package/build/projectsGeneration/builders/validation/bigintValudationToYupAssertions.spec.js +7 -7
  84. package/build/projectsGeneration/builders/validation/floatValudationToYupAssertions.js +4 -4
  85. package/build/projectsGeneration/builders/validation/floatValudationToYupAssertions.spec.js +6 -6
  86. package/build/projectsGeneration/builders/validation/intValudationToYupAssertions.js +9 -9
  87. package/build/projectsGeneration/builders/validation/intValudationToYupAssertions.spec.js +9 -9
  88. package/build/projectsGeneration/builders/validation/numberValudationToYupAssertions.js +10 -10
  89. package/build/projectsGeneration/builders/validation/stringValudationToYupAssertions.js +6 -6
  90. package/build/projectsGeneration/builders/validation/stringValudationToYupAssertions.spec.js +6 -6
  91. package/build/projectsGeneration/commonEntities/addAggregateTrackings.js +3 -3
  92. package/build/projectsGeneration/commonEntities/addAuditLogs.js +6 -6
  93. package/build/projectsGeneration/commonEntities/addAutogeneration.js +4 -4
  94. package/build/projectsGeneration/commonEntities/addCommonCommands.js +2 -2
  95. package/build/projectsGeneration/commonEntities/addCommonEntities.js +14 -14
  96. package/build/projectsGeneration/commonEntities/addConfigurationVariables.js +4 -4
  97. package/build/projectsGeneration/commonEntities/addLanguages.js +3 -3
  98. package/build/projectsGeneration/commonEntities/addManagers.js +6 -6
  99. package/build/projectsGeneration/commonEntities/addRefreshTokens.js +4 -4
  100. package/build/projectsGeneration/commonEntities/addRoles.js +8 -8
  101. package/build/projectsGeneration/commonEntities/addTenants.js +3 -3
  102. package/build/projectsGeneration/commonEntities/addUserSettings.js +7 -7
  103. package/build/projectsGeneration/commonEntities/addUsers.js +4 -4
  104. package/build/projectsGeneration/defaultCatalogs/addElasticSearch.js +12 -13
  105. package/build/projectsGeneration/defaultCatalogs/files.js +6 -6
  106. package/build/projectsGeneration/fileCleaners/back/graphServices/cleanGraphServices.js +24 -59
  107. package/build/projectsGeneration/fileCleaners/back/services/cleanServices.js +32 -67
  108. package/build/projectsGeneration/fileCleaners/cleanFiles.js +7 -38
  109. package/build/projectsGeneration/fileCleaners/ui/cleanUi.js +7 -39
  110. package/build/projectsGeneration/fileCleaners/ui/pages/cleanPages.js +24 -59
  111. package/build/projectsGeneration/fileCleaners/ui/widgets/cleanWidgets.js +10 -40
  112. package/build/projectsGeneration/fileCleaners/ui/widgets/cleanWidgetsByType.js +29 -62
  113. package/build/projectsGeneration/genGraphSchemesByLocalGenerator.js +26 -68
  114. package/build/projectsGeneration/generateAdditionalService.js +41 -98
  115. package/build/projectsGeneration/generateEntity.js +215 -346
  116. package/build/projectsGeneration/generateEnvironment.js +157 -265
  117. package/build/projectsGeneration/generateProject.js +422 -724
  118. package/build/projectsGeneration/generators/fieldTypeToTsType.js +4 -4
  119. package/build/projectsGeneration/generators/fileTemplates/back/Entities.js +16 -14
  120. package/build/projectsGeneration/generators/fileTemplates/back/devEnum.js +17 -13
  121. package/build/projectsGeneration/generators/fileTemplates/back/elastic/elastic.js +8 -44
  122. package/build/projectsGeneration/generators/fileTemplates/back/elastic/jobs.js +36 -26
  123. package/build/projectsGeneration/generators/fileTemplates/back/enum.js +17 -13
  124. package/build/projectsGeneration/generators/fileTemplates/back/environment/chart/Chart.js +12 -8
  125. package/build/projectsGeneration/generators/fileTemplates/back/environment/chart/templates/back.js +128 -12
  126. package/build/projectsGeneration/generators/fileTemplates/back/environment/chart/templates/ingress.js +54 -8
  127. package/build/projectsGeneration/generators/fileTemplates/back/environment/chart/values.js +149 -13
  128. package/build/projectsGeneration/generators/fileTemplates/back/environment/ciNotify.js +19 -8
  129. package/build/projectsGeneration/generators/fileTemplates/back/environment/defaultEnv.js +5 -9
  130. package/build/projectsGeneration/generators/fileTemplates/back/environment/dockerfileTmplBack.js +38 -8
  131. package/build/projectsGeneration/generators/fileTemplates/back/environment/dockerfileTmplUI.js +42 -8
  132. package/build/projectsGeneration/generators/fileTemplates/back/environment/docs/backDocSpec.js +3 -6
  133. package/build/projectsGeneration/generators/fileTemplates/back/environment/docs/backDocsConfiguration.js +27 -19
  134. package/build/projectsGeneration/generators/fileTemplates/back/environment/docs/backDocsEntity.js +7 -5
  135. package/build/projectsGeneration/generators/fileTemplates/back/environment/docs/backDocsIntegrationClient.js +44 -29
  136. package/build/projectsGeneration/generators/fileTemplates/back/environment/docs/backDocsRestApi.js +45 -18
  137. package/build/projectsGeneration/generators/fileTemplates/back/environment/docs/spec/findLinksToEntities.js +2 -4
  138. package/build/projectsGeneration/generators/fileTemplates/back/environment/docs/spec/getAllSavableEntities.js +7 -11
  139. package/build/projectsGeneration/generators/fileTemplates/back/environment/docs/spec/getProjectSpec.js +206 -216
  140. package/build/projectsGeneration/generators/fileTemplates/back/environment/docs/spec/titleMd.js +5 -5
  141. package/build/projectsGeneration/generators/fileTemplates/back/environment/gitlabCi.js +272 -37
  142. package/build/projectsGeneration/generators/fileTemplates/back/environment/src/clients/getPrisma.js +78 -9
  143. package/build/projectsGeneration/generators/fileTemplates/back/environment/src/clients/queue/getQueue.js +42 -9
  144. package/build/projectsGeneration/generators/fileTemplates/back/environment/src/index.js +36 -9
  145. package/build/projectsGeneration/generators/fileTemplates/back/environment/src/integrationClients/IntegrationClient.js +56 -5
  146. package/build/projectsGeneration/generators/fileTemplates/back/environment/src/integrationClients/IntegrationClients.js +12 -9
  147. package/build/projectsGeneration/generators/fileTemplates/back/environment/src/integrationClients/fieldsToTsTypeFields.js +4 -6
  148. package/build/projectsGeneration/generators/fileTemplates/back/environment/src/integrationClients/integrationClientConstrictors.js +13 -9
  149. package/build/projectsGeneration/generators/fileTemplates/back/environment/src/integrationClients/tsModelTmpl.js +6 -4
  150. package/build/projectsGeneration/generators/fileTemplates/back/environment/src/integrationClients/types.js +15 -7
  151. package/build/projectsGeneration/generators/fileTemplates/back/graph/additionalResolvers.js +9 -2
  152. package/build/projectsGeneration/generators/fileTemplates/back/graph/additionalService/permissionToGraphql.js +16 -9
  153. package/build/projectsGeneration/generators/fileTemplates/back/graph/additionalService/resolvers.js +32 -12
  154. package/build/projectsGeneration/generators/fileTemplates/back/graph/additionalService/typeDefs.js +18 -11
  155. package/build/projectsGeneration/generators/fileTemplates/back/graph/additionalTypes.js +7 -2
  156. package/build/projectsGeneration/generators/fileTemplates/back/graph/entityAdditionalPermissionToGraphqlTmpl.js +20 -9
  157. package/build/projectsGeneration/generators/fileTemplates/back/graph/entityBasePermissionToGraphql.js +22 -10
  158. package/build/projectsGeneration/generators/fileTemplates/back/graph/entityPermissionToGraphqlTmpl.js +18 -9
  159. package/build/projectsGeneration/generators/fileTemplates/back/graph/help/baseResolvers.js +17 -2
  160. package/build/projectsGeneration/generators/fileTemplates/back/graph/help/baseTypeDefs.js +15 -5
  161. package/build/projectsGeneration/generators/fileTemplates/back/graph/help/permissionsToGraphql.js +11 -2
  162. package/build/projectsGeneration/generators/fileTemplates/back/graph/meta/resolvers.js +26 -2
  163. package/build/projectsGeneration/generators/fileTemplates/back/graph/meta/typeDefs.js +17 -2
  164. package/build/projectsGeneration/generators/fileTemplates/back/graph/permissionsToGraphql.js +52 -13
  165. package/build/projectsGeneration/generators/fileTemplates/back/graph/resolvers.js +52 -13
  166. package/build/projectsGeneration/generators/fileTemplates/back/graph/types.js +18 -11
  167. package/build/projectsGeneration/generators/fileTemplates/back/initCommon.js +30 -16
  168. package/build/projectsGeneration/generators/fileTemplates/back/initDev.js +27 -15
  169. package/build/projectsGeneration/generators/fileTemplates/back/initEntities.js +24 -10
  170. package/build/projectsGeneration/generators/fileTemplates/back/root/config/config.js +30 -16
  171. package/build/projectsGeneration/generators/fileTemplates/back/root/restRouter.js +21 -2
  172. package/build/projectsGeneration/generators/fileTemplates/back/services/AdditionalServices.js +7 -2
  173. package/build/projectsGeneration/generators/fileTemplates/back/services/BaseServices.js +18 -22
  174. package/build/projectsGeneration/generators/fileTemplates/back/services/HelpService/HelpService.js +30 -7
  175. package/build/projectsGeneration/generators/fileTemplates/back/services/additionalService/types.js +18 -13
  176. package/build/projectsGeneration/generators/fileTemplates/back/services/entity/additionalClass.js +7 -5
  177. package/build/projectsGeneration/generators/fileTemplates/back/services/entity/class.js +126 -49
  178. package/build/projectsGeneration/generators/fileTemplates/back/services/entity/config.js +59 -40
  179. package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/additionalOperationsOnCreate.js +13 -5
  180. package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/additionalOperationsOnDelete.js +14 -6
  181. package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/additionalOperationsOnUpdate.js +14 -6
  182. package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/afterCreate.js +15 -6
  183. package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/afterDelete.js +15 -6
  184. package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/afterUpdate.js +15 -6
  185. package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/beforeCreate.js +15 -6
  186. package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/beforeDelete.js +15 -6
  187. package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/beforeUpdate.js +14 -6
  188. package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/beforeUpsert.js +30 -7
  189. package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/changeListFilter.js +14 -6
  190. package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/tenantIdRequiredHooks.js +81 -8
  191. package/build/projectsGeneration/generators/fileTemplates/back/services/entity/initBuiltInHooks.js +22 -10
  192. package/build/projectsGeneration/generators/fileTemplates/back/services/entity/initUserHooks.js +31 -6
  193. package/build/projectsGeneration/generators/fileTemplates/back/services/serviceConstrictors.js +26 -14
  194. package/build/projectsGeneration/generators/fileTemplates/ui/Dashboard.js +14 -2
  195. package/build/projectsGeneration/generators/fileTemplates/ui/MetaPage.js +120 -3
  196. package/build/projectsGeneration/generators/fileTemplates/ui/ResourcesPage.js +45 -10
  197. package/build/projectsGeneration/generators/fileTemplates/ui/additionalRoutes.js +5 -2
  198. package/build/projectsGeneration/generators/fileTemplates/ui/entityMapping.js +14 -12
  199. package/build/projectsGeneration/generators/fileTemplates/ui/environment/chart/Chart.js +12 -8
  200. package/build/projectsGeneration/generators/fileTemplates/ui/environment/chart/templates/front.js +118 -13
  201. package/build/projectsGeneration/generators/fileTemplates/ui/environment/chart/templates/ingress.js +51 -8
  202. package/build/projectsGeneration/generators/fileTemplates/ui/environment/chart/values.js +79 -8
  203. package/build/projectsGeneration/generators/fileTemplates/ui/environment/ciNotify.js +19 -8
  204. package/build/projectsGeneration/generators/fileTemplates/ui/environment/docs/adminAppDocsConfiguration.js +27 -21
  205. package/build/projectsGeneration/generators/fileTemplates/ui/environment/gitlabCi.js +179 -26
  206. package/build/projectsGeneration/generators/fileTemplates/ui/environment/src/App.js +107 -10
  207. package/build/projectsGeneration/generators/fileTemplates/ui/environment/src/contexts/SpacesContext.js +67 -9
  208. package/build/projectsGeneration/generators/fileTemplates/ui/environment/src/dataProvider/getAdditionalMethods.js +55 -18
  209. package/build/projectsGeneration/generators/fileTemplates/ui/environment/src/dataProvider/index.js +93 -13
  210. package/build/projectsGeneration/generators/fileTemplates/ui/environment/src/i18nProvider/index.js +51 -19
  211. package/build/projectsGeneration/generators/fileTemplates/ui/environment/src/layout/AppBar.js +60 -9
  212. package/build/projectsGeneration/generators/fileTemplates/ui/environment/src/layout/Menu.js +52 -9
  213. package/build/projectsGeneration/generators/fileTemplates/ui/environment/src/routes.js +38 -9
  214. package/build/projectsGeneration/generators/fileTemplates/ui/functions/Functions.js +60 -7
  215. package/build/projectsGeneration/generators/fileTemplates/ui/getAdditionalMenu.js +11 -2
  216. package/build/projectsGeneration/generators/fileTemplates/ui/getDefaultMenu.js +136 -23
  217. package/build/projectsGeneration/generators/fileTemplates/ui/i18n/lang/uiLangCatalogsTmpl.js +3 -5
  218. package/build/projectsGeneration/generators/fileTemplates/ui/i18n/lang/uiLangDocsTmpl.js +3 -5
  219. package/build/projectsGeneration/generators/fileTemplates/ui/i18n/lang/uiLangInfoRegistriesTmpl.js +3 -5
  220. package/build/projectsGeneration/generators/fileTemplates/ui/i18n/lang/uiLangReportsTmpl.js +3 -3
  221. package/build/projectsGeneration/generators/fileTemplates/ui/i18n/lang/uiLangSumRegistriesTmpl.js +3 -5
  222. package/build/projectsGeneration/generators/fileTemplates/ui/i18n/lang/uiTranslationsForServicesOfSavablesTmpl.js +33 -21
  223. package/build/projectsGeneration/generators/fileTemplates/ui/i18n/lang/uiTranslationsLangTmpl.js +23 -15
  224. package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityCreate/DefaultEntityCreate.js +101 -62
  225. package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityCreate/index.js +15 -5
  226. package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityEdit/DefaultEntityEdit.js +176 -77
  227. package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityEdit/index.js +15 -5
  228. package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityList/DefaultEntityFilter.js +68 -50
  229. package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityList/DefaultEntityList.js +83 -47
  230. package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityList/EntityFilter.js +12 -5
  231. package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityList/index.js +15 -5
  232. package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityShow/DefaultActions.js +54 -19
  233. package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityShow/DefaultEntityShow.js +53 -30
  234. package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityShow/DefaultMainTab.js +45 -32
  235. package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityShow/DependencyTab.js +57 -41
  236. package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityShow/MainTab.js +3 -2
  237. package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityShow/additionalTabs.js +7 -3
  238. package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityShow/index.js +15 -5
  239. package/build/projectsGeneration/generators/fileTemplates/ui/pages/Icon.js +8 -8
  240. package/build/projectsGeneration/generators/fileTemplates/ui/pages/getEntityValidation.js +45 -30
  241. package/build/projectsGeneration/generators/fileTemplates/ui/resources.js +46 -12
  242. package/build/projectsGeneration/generators/fileTemplates/ui/widgets/count/CountWidget.js +50 -9
  243. package/build/projectsGeneration/generators/fileTemplates/ui/widgets/list/ListWidget.js +109 -14
  244. package/build/projectsGeneration/generators/graph/fieldTypeToGraphScalar.js +8 -9
  245. package/build/projectsGeneration/generators/graph/fieldTypeToGraphScalarStringified.js +4 -6
  246. package/build/projectsGeneration/generators/graph/fields/genGraphField.js +8 -9
  247. package/build/projectsGeneration/generators/graph/fields/genGraphIdField.js +7 -8
  248. package/build/projectsGeneration/generators/graph/fields/genGraphIdFieldType.js +6 -6
  249. package/build/projectsGeneration/generators/graph/fields/genGraphLinkField.js +10 -11
  250. package/build/projectsGeneration/generators/graph/fields/genGraphModelField.js +10 -11
  251. package/build/projectsGeneration/generators/graph/fields/genGraphScalarField.js +10 -11
  252. package/build/projectsGeneration/generators/graph/filters/genGraphField.js +7 -7
  253. package/build/projectsGeneration/generators/graph/filters/genGraphIdFilter.js +12 -14
  254. package/build/projectsGeneration/generators/graph/filters/genGraphLinkFilter.js +12 -24
  255. package/build/projectsGeneration/generators/graph/filters/genGraphScalarFilter.js +25 -37
  256. package/build/projectsGeneration/generators/graph/genGraphAdditionalServiceSchema.js +35 -35
  257. package/build/projectsGeneration/generators/graph/genGraphAdditionalServiceSchema.spec.js +148 -65
  258. package/build/projectsGeneration/generators/graph/genGraphCrudSchema.js +38 -50
  259. package/build/projectsGeneration/generators/graph/genGraphCrudSchema.spec.js +393 -34
  260. package/build/projectsGeneration/generators/graph/genGraphFilterType.js +11 -22
  261. package/build/projectsGeneration/generators/graph/genGraphFilterType.spec.js +75 -13
  262. package/build/projectsGeneration/generators/graph/genGraphModelType.js +15 -27
  263. package/build/projectsGeneration/generators/graph/genGraphType.js +7 -18
  264. package/build/projectsGeneration/generators/graph/genGraphType.spec.js +27 -12
  265. package/build/projectsGeneration/generators/graph/printGraphType.js +5 -7
  266. package/build/projectsGeneration/generators/graph/printGraphType.spec.js +11 -6
  267. package/build/projectsGeneration/generators/graph/utils/mapUtils.js +11 -30
  268. package/build/projectsGeneration/generators/graph/utils/models/getModelInitOrder.js +14 -28
  269. package/build/projectsGeneration/generators/graph/utils/models/getModelInitOrder.spec.js +18 -18
  270. package/build/projectsGeneration/generators/graph/utils/models/getUniqModels.js +3 -3
  271. package/build/projectsGeneration/generators/graph/utils/models/getUniqModels.spec.js +17 -28
  272. package/build/projectsGeneration/generators/graph/utils/models/getUsedModels.js +14 -19
  273. package/build/projectsGeneration/generators/graph/utils/models/getUsedModels.spec.js +40 -51
  274. package/build/projectsGeneration/generators/graph/utils/serviceModels/augmentInputModelsByUsedAsInputGeneralModelsAndPostfixThemByInput.js +17 -26
  275. package/build/projectsGeneration/generators/graph/utils/serviceModels/augmentInputModelsByUsedAsInputGeneralModelsAndPostfixThemByInput.spec.js +68 -68
  276. package/build/projectsGeneration/generators/graph/utils/serviceModels/getGraphTypesFromInputOutputModels.js +21 -42
  277. package/build/projectsGeneration/generators/graph/utils/serviceModels/getGraphTypesFromInputOutputModels.spec.js +85 -62
  278. package/build/projectsGeneration/generators/graph/utils/serviceModels/getPreparedModelsForGraph.js +20 -31
  279. package/build/projectsGeneration/generators/graph/utils/serviceModels/getPreparedModelsForGraph.spec.js +48 -49
  280. package/build/projectsGeneration/generators/graph/utils/serviceModels/getServiceModels.js +7 -7
  281. package/build/projectsGeneration/generators/graph/utils/serviceModels/getUsedGraphModelsForService.js +6 -6
  282. package/build/projectsGeneration/generators/graph/utils/serviceModels/getUsedGraphModelsForService.spec.js +13 -13
  283. package/build/projectsGeneration/generators/graph/utils/serviceModels/getUsedModelsForService.js +18 -21
  284. package/build/projectsGeneration/generators/graph/utils/serviceModels/getUsedModelsForService.spec.js +153 -153
  285. package/build/projectsGeneration/generators/graph/utils/serviceModels/prefixServiceModelsWithServiceName.js +25 -26
  286. package/build/projectsGeneration/generators/graph/utils/serviceModels/prefixServiceModelsWithServiceName.spec.js +69 -69
  287. package/build/projectsGeneration/generators/graph/utils/serviceModels/removeDublicatesFromServiceModels.js +4 -4
  288. package/build/projectsGeneration/generators/graph/utils/serviceModels/removeUnusedInOutputGeneralModels.js +6 -17
  289. package/build/projectsGeneration/generators/graph/utils/serviceModels/removeVoidsInServiceModels.js +5 -5
  290. package/build/projectsGeneration/generators/prisma/fieldIdTypeToPrismaType.js +3 -3
  291. package/build/projectsGeneration/generators/prisma/fieldTypeToPrismaType.js +3 -3
  292. package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaDefault.js +3 -3
  293. package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaDefault.spec.js +20 -20
  294. package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaField.js +7 -8
  295. package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaFieldFromExternalEntity.js +6 -7
  296. package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaFieldFromExternalEntity.spec.js +7 -19
  297. package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaIdField.js +10 -11
  298. package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaIdField.spec.js +13 -13
  299. package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaLinkFields.js +15 -18
  300. package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaLinkFields.spec.js +27 -28
  301. package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaScalarField.js +12 -14
  302. package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaScalarField.spec.js +29 -30
  303. package/build/projectsGeneration/generators/prisma/scheme/genPrismaEntity.js +23 -32
  304. package/build/projectsGeneration/generators/prisma/scheme/genPrismaEntity.spec.js +104 -47
  305. package/build/projectsGeneration/generators/prisma/scheme/genPrismaSchemaForEntities.js +5 -7
  306. package/build/projectsGeneration/generators/prisma/scheme/genPrismaSchemaForEntitiesWithClientAdnDb.js +19 -10
  307. package/build/projectsGeneration/generators/ui/componentNames/edit/getCompNameToEditScalar.js +3 -3
  308. package/build/projectsGeneration/generators/ui/componentNames/edit/getCompNamesToEditField.js +7 -7
  309. package/build/projectsGeneration/generators/ui/componentNames/edit/getCompNamesToEditIdField.js +3 -3
  310. package/build/projectsGeneration/generators/ui/componentNames/edit/getCompNamesToEditLinkField.js +5 -5
  311. package/build/projectsGeneration/generators/ui/componentNames/edit/getCompNamesToEditLinkField.spec.js +10 -10
  312. package/build/projectsGeneration/generators/ui/componentNames/edit/getCompNamesToEditScalarField.js +3 -3
  313. package/build/projectsGeneration/generators/ui/componentNames/show/getCompNameToShowScalar.js +3 -3
  314. package/build/projectsGeneration/generators/ui/componentNames/show/getCompNamesToShowField.js +7 -7
  315. package/build/projectsGeneration/generators/ui/componentNames/show/getCompNamesToShowIdField.js +3 -3
  316. package/build/projectsGeneration/generators/ui/componentNames/show/getCompNamesToShowLinkField.js +2 -14
  317. package/build/projectsGeneration/generators/ui/componentNames/show/getCompNamesToShowLinkField.spec.js +17 -17
  318. package/build/projectsGeneration/generators/ui/componentNames/show/getCompNamesToShowScalarField.js +3 -3
  319. package/build/projectsGeneration/generators/ui/getLinkShowComponent.spec.js +18 -18
  320. package/build/projectsGeneration/generators/ui/getScalarShowComponent.spec.js +11 -11
  321. package/build/projectsGeneration/generators/ui/getShowComponent.js +19 -20
  322. package/build/projectsGeneration/links/getLinksFromExternalEntities.js +2 -4
  323. package/build/projectsGeneration/links/getLinksFromExternalEntities.spec.js +11 -22
  324. package/build/projectsGeneration/links/getLinksOfEntities.js +6 -8
  325. package/build/projectsGeneration/links/getLinksOfEntities.spec.js +20 -31
  326. package/build/projectsGeneration/links/getLinksToExternalEntities.js +2 -4
  327. package/build/projectsGeneration/links/getLinksToExternalEntities.spec.js +11 -22
  328. package/build/projectsGeneration/metaUtils.js +17 -23
  329. package/build/projectsGeneration/modelsGeneration.serialization.spec.js +8 -8
  330. package/build/projectsGeneration/modules/addEmailModuleEntities.js +11 -11
  331. package/build/projectsGeneration/types.js +6 -6
  332. package/build/projectsGeneration/utils.js +24 -61
  333. package/build/refs/yup.spec.js +7 -7
  334. package/build/types/projectsGeneration/builders/InfoRegistryBuilder.d.ts +0 -4
  335. package/build/types/projectsGeneration/builders/SumRegistryBuilder.d.ts +0 -3
  336. package/build/types/projectsGeneration/fileCleaners/cleanFiles.d.ts +1 -1
  337. package/build/types/projectsGeneration/generateProject.d.ts +0 -5
  338. package/build/types/projectsGeneration/generators/fileTemplates/back/environment/chart/templates/back.d.ts +1 -1
  339. package/build/types/projectsGeneration/generators/fileTemplates/back/environment/chart/templates/ingress.d.ts +1 -1
  340. package/build/types/projectsGeneration/generators/fileTemplates/back/environment/dockerfileTmplBack.d.ts +1 -1
  341. package/build/types/projectsGeneration/generators/fileTemplates/back/environment/dockerfileTmplUI.d.ts +1 -1
  342. package/build/types/projectsGeneration/generators/fileTemplates/back/environment/src/integrationClients/IntegrationClient.d.ts +1 -1
  343. package/build/types/projectsGeneration/generators/fileTemplates/back/services/entity/config.d.ts +1 -1
  344. package/build/types/projectsGeneration/generators/fileTemplates/ui/environment/chart/templates/front.d.ts +1 -1
  345. package/build/types/projectsGeneration/generators/fileTemplates/ui/environment/chart/templates/ingress.d.ts +1 -1
  346. package/build/types/projectsGeneration/generators/fileTemplates/ui/environment/src/App.d.ts +1 -1
  347. package/build/utils/TermSignals.js +35 -43
  348. package/build/utils/cases.js +12 -18
  349. package/build/utils/getPkgManager.js +4 -4
  350. package/package.json +12 -24
  351. package/build/projectsGeneration/fileCleaners/back/cleanBack.js +0 -50
  352. package/build/types/projectsGeneration/fileCleaners/back/cleanBack.d.ts +0 -3
@@ -1,30 +1,4 @@
1
1
  "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
- var __assign = (this && this.__assign) || function () {
18
- __assign = Object.assign || function(t) {
19
- for (var s, i = 1, n = arguments.length; i < n; i++) {
20
- s = arguments[i];
21
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
- t[p] = s[p];
23
- }
24
- return t;
25
- };
26
- return __assign.apply(this, arguments);
27
- };
28
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
29
3
  if (k2 === undefined) k2 = k;
30
4
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -48,33 +22,24 @@ var __importStar = (this && this.__importStar) || function (mod) {
48
22
  __setModuleDefault(result, mod);
49
23
  return result;
50
24
  };
51
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
52
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
53
- if (ar || !(i in from)) {
54
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
55
- ar[i] = from[i];
56
- }
57
- }
58
- return to.concat(ar || Array.prototype.slice.call(from));
59
- };
60
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
61
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
62
27
  };
63
28
  Object.defineProperty(exports, "__esModule", { value: true });
64
- var ScalarFieldBuilder_1 = __importDefault(require("./fields/ScalarFieldBuilder"));
65
- var IdFieldBuilder_1 = __importDefault(require("./fields/IdFieldBuilder"));
66
- var LinkFieldBuilder_1 = __importDefault(require("./fields/LinkFieldBuilder"));
67
- var buildedTypes_1 = require("./buildedTypes");
68
- var CatalogBuilder_1 = __importDefault(require("./CatalogBuilder"));
69
- var BaseBuilder_1 = __importDefault(require("./BaseBuilder"));
70
- var FormsBuilder_1 = __importDefault(require("./ui/FormsBuilder"));
71
- var ViewLinkFieldBuilder_1 = __importDefault(require("./fields/ViewLinkFieldBuilder"));
72
- var cases_1 = require("../../utils/cases");
73
- var R = __importStar(require("ramda"));
74
- var PermissionBuilder_1 = __importDefault(require("./PermissionBuilder"));
75
- var PageBuilder_1 = __importDefault(require("./PageBuilder"));
76
- var BaseModelBuilder_1 = __importDefault(require("./mehods/BaseModelBuilder"));
77
- var MethodBuilder_1 = __importDefault(require("./mehods/MethodBuilder"));
29
+ const ScalarFieldBuilder_1 = __importDefault(require("./fields/ScalarFieldBuilder"));
30
+ const IdFieldBuilder_1 = __importDefault(require("./fields/IdFieldBuilder"));
31
+ const LinkFieldBuilder_1 = __importDefault(require("./fields/LinkFieldBuilder"));
32
+ const buildedTypes_1 = require("./buildedTypes");
33
+ const CatalogBuilder_1 = __importDefault(require("./CatalogBuilder"));
34
+ const BaseBuilder_1 = __importDefault(require("./BaseBuilder"));
35
+ const FormsBuilder_1 = __importDefault(require("./ui/FormsBuilder"));
36
+ const ViewLinkFieldBuilder_1 = __importDefault(require("./fields/ViewLinkFieldBuilder"));
37
+ const cases_1 = require("../../utils/cases");
38
+ const R = __importStar(require("ramda"));
39
+ const PermissionBuilder_1 = __importDefault(require("./PermissionBuilder"));
40
+ const PageBuilder_1 = __importDefault(require("./PageBuilder"));
41
+ const BaseModelBuilder_1 = __importDefault(require("./mehods/BaseModelBuilder"));
42
+ const MethodBuilder_1 = __importDefault(require("./mehods/MethodBuilder"));
78
43
  // const readPermissions: string[] = [
79
44
  // 'all',
80
45
  // 'get',
@@ -87,257 +52,254 @@ var MethodBuilder_1 = __importDefault(require("./mehods/MethodBuilder"));
87
52
  // 'update',
88
53
  // 'delete',
89
54
  // ]
90
- var BaseSavableEntityBuilder = /** @class */ (function (_super) {
91
- __extends(BaseSavableEntityBuilder, _super);
92
- function BaseSavableEntityBuilder(name, defaultLanguage, title) {
55
+ class BaseSavableEntityBuilder extends BaseBuilder_1.default {
56
+ constructor(name, defaultLanguage, title) {
93
57
  var _a, _b, _c;
94
- var _this = _super.call(this, name, defaultLanguage, title) || this;
95
- _this.permissions = [];
96
- _this.fields = [];
97
- _this.uniqueConstraints = [];
98
- _this.indexes = [];
99
- _this.type = 'catalog';
100
- _this.deletable = false;
101
- _this.editable = true;
102
- _this.singleKey = true;
103
- _this.logging = false;
104
- _this.auditable = true;
105
- _this.creatableByUser = true;
106
- _this.updatableByUser = true;
107
- _this.removableByUser = true;
108
- _this.exportableByUser = true;
109
- _this.space = '';
110
- _this.sortField = 'id';
111
- _this.sortOrder = 'DESC';
112
- _this.sybsystems = [];
113
- _this.predefinedElements = [];
114
- _this.devPerefinedElements = [];
115
- _this.searchEnabled = true;
116
- _this.externalSearch = false;
117
- _this.elasticOnly = false;
118
- _this.multitenancy = 'none';
119
- _this.commonElementsVisibleToAll = false;
120
- _this.title = {};
121
- _this.externalSearchName = undefined;
122
- _this.sharded = false;
123
- _this.isExternalSearch = false;
124
- _this.clearDBAfter = [];
125
- _this.allowedToChange = '';
126
- _this.pages = [];
127
- _this.methods = [];
128
- _this.generalModels = []; // models that may be used as input or output
129
- _this.inputModels = []; // models that may be used only as input
130
- _this.outputModels = []; // models that may be used only as output
131
- _this.labels = [];
132
- _this.setTitle({ plural: (_a = title === null || title === void 0 ? void 0 : title.plural) !== null && _a !== void 0 ? _a : name, singular: (_c = (_b = title === null || title === void 0 ? void 0 : title.singular) !== null && _b !== void 0 ? _b : title === null || title === void 0 ? void 0 : title.plural) !== null && _c !== void 0 ? _c : name });
133
- _this.id = new IdFieldBuilder_1.default('id', defaultLanguage)
58
+ super(name, defaultLanguage, title);
59
+ this.permissions = [];
60
+ this.fields = [];
61
+ this.uniqueConstraints = [];
62
+ this.indexes = [];
63
+ this.type = 'catalog';
64
+ this.deletable = false;
65
+ this.editable = true;
66
+ this.singleKey = true;
67
+ this.logging = false;
68
+ this.auditable = true;
69
+ this.creatableByUser = true;
70
+ this.updatableByUser = true;
71
+ this.removableByUser = true;
72
+ this.exportableByUser = true;
73
+ this.space = '';
74
+ this.sortField = 'id';
75
+ this.sortOrder = 'DESC';
76
+ this.sybsystems = [];
77
+ this.predefinedElements = [];
78
+ this.devPerefinedElements = [];
79
+ this.searchEnabled = true;
80
+ this.externalSearch = false;
81
+ this.elasticOnly = false;
82
+ this.multitenancy = 'none';
83
+ this.commonElementsVisibleToAll = false;
84
+ this.title = {};
85
+ this.externalSearchName = undefined;
86
+ this.sharded = false;
87
+ this.isExternalSearch = false;
88
+ this.clearDBAfter = [];
89
+ this.allowedToChange = '';
90
+ this.pages = [];
91
+ this.methods = [];
92
+ this.generalModels = []; // models that may be used as input or output
93
+ this.inputModels = []; // models that may be used only as input
94
+ this.outputModels = []; // models that may be used only as output
95
+ this.labels = [];
96
+ this.setTitle({ plural: (_a = title === null || title === void 0 ? void 0 : title.plural) !== null && _a !== void 0 ? _a : name, singular: (_c = (_b = title === null || title === void 0 ? void 0 : title.singular) !== null && _b !== void 0 ? _b : title === null || title === void 0 ? void 0 : title.plural) !== null && _c !== void 0 ? _c : name });
97
+ this.id = new IdFieldBuilder_1.default('id', defaultLanguage)
134
98
  .setTitle('Id', 'en')
135
99
  .setTitle('Ид', 'ru');
136
- _this.titleField = new IdFieldBuilder_1.default('id', defaultLanguage);
137
- _this.setTitleFieldByName(_this.getKey().name);
138
- _this.addPage("".concat(name, ".all"), "/".concat(name), "".concat((0, cases_1.camelPlural)(_this.type), ".").concat(_this.name, ".title.plural")).addRequiredPermission("".concat(name, ".all"));
139
- _this.addPage("".concat(name, ".create"), "/".concat(name, "/create"), "".concat((0, cases_1.camelPlural)(_this.type), ".").concat(_this.name, ".title.singular")).addRequiredPermission("".concat(name, ".create"));
140
- _this.addMethod('all', buildedTypes_1.MethodType.Query).setExportedToApi();
141
- _this.addMethod('create', buildedTypes_1.MethodType.Mutation).setExportedToApi();
142
- _this.addMethod('update', buildedTypes_1.MethodType.Mutation).setExportedToApi();
143
- _this.addMethod('delete', buildedTypes_1.MethodType.Mutation).setExportedToApi();
144
- _this.addLabel("".concat((0, cases_1.camelPlural)(_this.type), ".").concat(_this.name, ".title.plural"));
145
- _this.addLabel("".concat((0, cases_1.camelPlural)(_this.type), ".").concat(_this.name, ".title.singular"));
146
- return _this;
147
- }
148
- BaseSavableEntityBuilder.prototype.setTitle = function (title, language) {
149
- var resultedLangiage = language ? language : this.defaultLanguage;
100
+ this.titleField = new IdFieldBuilder_1.default('id', defaultLanguage);
101
+ this.setTitleFieldByName(this.getKey().name);
102
+ this.addPage(`${name}.all`, `/${name}`, `${(0, cases_1.camelPlural)(this.type)}.${this.name}.title.plural`).addRequiredPermission(`${name}.all`);
103
+ this.addPage(`${name}.create`, `/${name}/create`, `${(0, cases_1.camelPlural)(this.type)}.${this.name}.title.singular`).addRequiredPermission(`${name}.create`);
104
+ this.addMethod('all', buildedTypes_1.MethodType.Query).setExportedToApi();
105
+ this.addMethod('create', buildedTypes_1.MethodType.Mutation).setExportedToApi();
106
+ this.addMethod('update', buildedTypes_1.MethodType.Mutation).setExportedToApi();
107
+ this.addMethod('delete', buildedTypes_1.MethodType.Mutation).setExportedToApi();
108
+ this.addLabel(`${(0, cases_1.camelPlural)(this.type)}.${this.name}.title.plural`);
109
+ this.addLabel(`${(0, cases_1.camelPlural)(this.type)}.${this.name}.title.singular`);
110
+ }
111
+ setTitle(title, language) {
112
+ const resultedLangiage = language ? language : this.defaultLanguage;
150
113
  this.title[resultedLangiage] = title;
151
114
  return this;
152
- };
153
- BaseSavableEntityBuilder.prototype.setExternalSearch = function () {
115
+ }
116
+ setExternalSearch() {
154
117
  this.externalSearch = true;
155
118
  this.getKey().setType('string').setAutoGenerated(true);
156
- this.externalSearchName = "external".concat((0, cases_1.pascal)(this.name), "SearchTrackings");
119
+ this.externalSearchName = `external${(0, cases_1.pascal)(this.name)}SearchTrackings`;
157
120
  this.setSearchEnabled();
158
121
  return this;
159
- };
160
- BaseSavableEntityBuilder.prototype.setElasticOnly = function () {
122
+ }
123
+ setElasticOnly() {
161
124
  this.elasticOnly = true;
162
125
  this.getKey().setType('string').setAutoGenerated(true);
163
126
  return this;
164
- };
165
- BaseSavableEntityBuilder.prototype.setSearchEnabled = function (searchEnabled) {
127
+ }
128
+ setSearchEnabled(searchEnabled) {
166
129
  this.searchEnabled = searchEnabled !== null && searchEnabled !== void 0 ? searchEnabled : true;
167
- var filed = this.getFieldIfExist('search');
130
+ const filed = this.getFieldIfExist('search');
168
131
  if (!searchEnabled && filed) {
169
132
  this.delField('search');
170
133
  }
171
134
  return this;
172
- };
173
- BaseSavableEntityBuilder.prototype.setAuditable = function (auditable) {
135
+ }
136
+ setAuditable(auditable) {
174
137
  this.auditable = auditable !== null && auditable !== void 0 ? auditable : true;
175
138
  return this;
176
- };
177
- BaseSavableEntityBuilder.prototype.setDeletable = function (deletable) {
139
+ }
140
+ setDeletable(deletable) {
178
141
  this.deletable = deletable !== null && deletable !== void 0 ? deletable : true;
179
142
  return this;
180
- };
181
- BaseSavableEntityBuilder.prototype.setEditable = function (editable) {
143
+ }
144
+ setEditable(editable) {
182
145
  this.editable = editable !== null && editable !== void 0 ? editable : true;
183
146
  return this;
184
- };
185
- BaseSavableEntityBuilder.prototype.setCreatableByUser = function (creatableByUser) {
147
+ }
148
+ setCreatableByUser(creatableByUser) {
186
149
  this.creatableByUser = creatableByUser !== null && creatableByUser !== void 0 ? creatableByUser : true;
187
150
  return this;
188
- };
189
- BaseSavableEntityBuilder.prototype.setUpdatableByUser = function (updatableByUser) {
151
+ }
152
+ setUpdatableByUser(updatableByUser) {
190
153
  this.updatableByUser = updatableByUser !== null && updatableByUser !== void 0 ? updatableByUser : true;
191
154
  return this;
192
- };
193
- BaseSavableEntityBuilder.prototype.setRemovableByUser = function (removableByUser) {
155
+ }
156
+ setRemovableByUser(removableByUser) {
194
157
  this.removableByUser = removableByUser !== null && removableByUser !== void 0 ? removableByUser : true;
195
158
  return this;
196
- };
197
- BaseSavableEntityBuilder.prototype.setExportableByUser = function (exportableByUser) {
159
+ }
160
+ setExportableByUser(exportableByUser) {
198
161
  this.exportableByUser = exportableByUser !== null && exportableByUser !== void 0 ? exportableByUser : true;
199
162
  return this;
200
- };
201
- BaseSavableEntityBuilder.prototype.getKey = function () {
163
+ }
164
+ getKey() {
202
165
  if (!this.singleKey) {
203
166
  throw new Error('There is no single key');
204
167
  }
205
168
  return this.id;
206
- };
207
- BaseSavableEntityBuilder.prototype.getShardedFields = function () {
208
- return this.fields.filter(function (f) { return f.sharded; });
209
- };
210
- BaseSavableEntityBuilder.prototype.getUniqueConstraints = function (registrarDependent) {
211
- if (registrarDependent === void 0) { registrarDependent = false; }
212
- var uniqueConstraints = __spreadArray([], this.uniqueConstraints, true);
213
- var uniqKeys = this.getShardedFields().map(function (f) { return f.name; });
214
- var isRegistrarDependentSumRegistry = this.type === 'sumRegistry' && registrarDependent;
169
+ }
170
+ getShardedFields() {
171
+ return this.fields.filter((f) => f.sharded);
172
+ }
173
+ getUniqueConstraints(registrarDependent = false) {
174
+ const uniqueConstraints = [...this.uniqueConstraints];
175
+ const uniqKeys = this.getShardedFields().map(f => f.name);
176
+ const isRegistrarDependentSumRegistry = this.type === 'sumRegistry' && registrarDependent;
215
177
  if (!isRegistrarDependentSumRegistry && !R.isEmpty(uniqKeys) && !R.equals(uniqKeys, ['id'])) {
216
178
  uniqueConstraints.push(uniqKeys);
217
179
  }
218
180
  return uniqueConstraints;
219
- };
220
- BaseSavableEntityBuilder.prototype.getFileds = function () {
221
- return __spreadArray([this.id], this.fields, true);
222
- };
223
- BaseSavableEntityBuilder.prototype.getFieldIfExist = function (name) {
224
- return this.getFileds().find(function (f) { return f.name === name; });
225
- };
226
- BaseSavableEntityBuilder.prototype.getFiled = function (name) {
227
- var filed = this.getFieldIfExist(name);
181
+ }
182
+ getFileds() {
183
+ return [this.id, ...this.fields];
184
+ }
185
+ getFieldIfExist(name) {
186
+ return this.getFileds().find((f) => f.name === name);
187
+ }
188
+ getFiled(name) {
189
+ const filed = this.getFieldIfExist(name);
228
190
  if (!filed) {
229
- throw new Error("There is no field with name \"".concat(name, "\""));
191
+ throw new Error(`There is no field with name "${name}"`);
230
192
  }
231
193
  return filed;
232
- };
233
- BaseSavableEntityBuilder.prototype.getLinkFileds = function () {
234
- return this.getFileds().filter(function (field) { return field.getCategory() === 'link'; });
235
- };
236
- BaseSavableEntityBuilder.prototype.addField = function (name, title, _a) {
237
- var _b = _a === void 0 ? {} : _a, isTitleField = _b.isTitleField;
238
- if (this.fields.some(function (f) { return f.name === name; })) {
239
- throw new Error("There is already field with name \"".concat(name, "\". Entity ").concat(this.name));
194
+ }
195
+ getLinkFileds() {
196
+ return this.getFileds().filter((field) => field.getCategory() === 'link');
197
+ }
198
+ addField(name, title, { isTitleField } = {}) {
199
+ if (this.fields.some((f) => f.name === name)) {
200
+ throw new Error(`There is already field with name "${name}". Entity ${this.name}`);
240
201
  }
241
- var field = new ScalarFieldBuilder_1.default(name, this.defaultLanguage, title);
202
+ const field = new ScalarFieldBuilder_1.default(name, this.defaultLanguage, title);
242
203
  this.fields.push(field);
243
204
  if (isTitleField) {
244
205
  this.setTitleFieldByName(name);
245
206
  }
246
- this.addLabel("".concat((0, cases_1.camelPlural)(this.type), ".").concat(this.name, ".fields.").concat(name));
207
+ this.addLabel(`${(0, cases_1.camelPlural)(this.type)}.${this.name}.fields.${name}`);
247
208
  return field;
248
- };
249
- BaseSavableEntityBuilder.prototype.delField = function (name) {
250
- this.fields = this.fields.filter(function (f) { return f.name !== name; });
251
- this.delLabel("".concat((0, cases_1.camelPlural)(this.type), ".").concat(this.name, ".fields.").concat(name));
209
+ }
210
+ delField(name) {
211
+ this.fields = this.fields.filter((f) => f.name !== name);
212
+ this.delLabel(`${(0, cases_1.camelPlural)(this.type)}.${this.name}.fields.${name}`);
252
213
  return this;
253
- };
254
- BaseSavableEntityBuilder.prototype.addLinkField = function (e, name, title) {
214
+ }
215
+ addLinkField(e, name, title) {
255
216
  var _a;
256
- var entity = e;
257
- if (this.fields.some(function (f) { return f.name === name; })) {
258
- throw new Error("There is already field with name \"".concat(name, "\". Entity ").concat(this.name));
217
+ let entity = e;
218
+ if (this.fields.some((f) => f.name === name)) {
219
+ throw new Error(`There is already field with name "${name}". Entity ${this.name}`);
259
220
  }
260
221
  // get name from entity
261
222
  if (entity instanceof CatalogBuilder_1.default) {
262
223
  entity = entity.name;
263
224
  }
264
- var field = new LinkFieldBuilder_1.default(entity, name, this.defaultLanguage, title);
225
+ const field = new LinkFieldBuilder_1.default(entity, name, this.defaultLanguage, title);
265
226
  // get field type from entity
266
227
  if (e instanceof CatalogBuilder_1.default) {
267
- var entityType = (_a = e.fields.find(function (field) { return field instanceof IdFieldBuilder_1.default; })) === null || _a === void 0 ? void 0 : _a.type;
228
+ const entityType = (_a = e.fields.find((field) => field instanceof IdFieldBuilder_1.default)) === null || _a === void 0 ? void 0 : _a.type;
268
229
  if (entityType && field.type !== entityType) {
269
230
  field.setType(entityType);
270
231
  }
271
232
  }
272
233
  this.fields.push(field);
273
234
  return field;
274
- };
275
- BaseSavableEntityBuilder.prototype.addFileField = function (name, title) {
276
- var entity = 'files';
277
- if (this.fields.some(function (f) { return f.name === name; })) {
278
- throw new Error("There is already field with name \"".concat(name, "\". Entity ").concat(this.name));
235
+ }
236
+ addFileField(name, title) {
237
+ const entity = 'files';
238
+ if (this.fields.some((f) => f.name === name)) {
239
+ throw new Error(`There is already field with name "${name}". Entity ${this.name}`);
279
240
  }
280
- var field = new LinkFieldBuilder_1.default(entity, name, this.defaultLanguage, title);
241
+ const field = new LinkFieldBuilder_1.default(entity, name, this.defaultLanguage, title);
281
242
  field.setPredefinedLinkedEntity('file');
282
243
  this.fields.push(field);
283
244
  return field;
284
- };
285
- BaseSavableEntityBuilder.prototype.addImageField = function (name, title) {
286
- var entity = 'files';
287
- if (this.fields.some(function (f) { return f.name === name; })) {
288
- throw new Error("There is already field with name \"".concat(name, "\". Entity ").concat(this.name));
245
+ }
246
+ addImageField(name, title) {
247
+ const entity = 'files';
248
+ if (this.fields.some((f) => f.name === name)) {
249
+ throw new Error(`There is already field with name "${name}". Entity ${this.name}`);
289
250
  }
290
- var field = new LinkFieldBuilder_1.default(entity, name, this.defaultLanguage, title);
251
+ const field = new LinkFieldBuilder_1.default(entity, name, this.defaultLanguage, title);
291
252
  field.setPredefinedLinkedEntity('file');
292
253
  field.setFileType('image');
293
254
  this.fields.push(field);
294
255
  return field;
295
- };
296
- BaseSavableEntityBuilder.prototype.addViewLinkField = function (e, name, title) {
256
+ }
257
+ addViewLinkField(e, name, title) {
297
258
  var _a;
298
- var entity = e;
299
- if (this.fields.some(function (f) { return f.name === name; })) {
300
- throw new Error("There is already field with name \"".concat(name, "\". Entity ").concat(this.name));
259
+ let entity = e;
260
+ if (this.fields.some((f) => f.name === name)) {
261
+ throw new Error(`There is already field with name "${name}". Entity ${this.name}`);
301
262
  }
302
263
  // get name from entity
303
264
  if (entity instanceof CatalogBuilder_1.default) {
304
265
  entity = entity.name;
305
266
  }
306
- var field = new ViewLinkFieldBuilder_1.default(entity, name, this.defaultLanguage, title);
267
+ const field = new ViewLinkFieldBuilder_1.default(entity, name, this.defaultLanguage, title);
307
268
  // get field type from entity
308
269
  if (e instanceof CatalogBuilder_1.default) {
309
- var entityType = (_a = e.fields.find(function (field) { return field instanceof IdFieldBuilder_1.default; })) === null || _a === void 0 ? void 0 : _a.type;
270
+ const entityType = (_a = e.fields.find((field) => field instanceof IdFieldBuilder_1.default)) === null || _a === void 0 ? void 0 : _a.type;
310
271
  if (entityType && field.type !== entityType) {
311
272
  field.setType(entityType);
312
273
  }
313
274
  }
314
275
  this.fields.push(field);
315
276
  return field;
316
- };
317
- BaseSavableEntityBuilder.prototype.setTitleFieldByName = function (titleField) {
318
- var field = this.getFileds().find(function (f) { return f.name === titleField; });
277
+ }
278
+ setTitleFieldByName(titleField) {
279
+ const field = this.getFileds().find((f) => f.name === titleField);
319
280
  if (!field) {
320
- throw new Error("There is no field with name \"".concat(titleField, "\", you can not set it as a title field. Entity ").concat(this.name));
281
+ throw new Error(`There is no field with name "${titleField}", you can not set it as a title field. Entity ${this.name}`);
321
282
  }
322
283
  this.titleField = field;
323
284
  return this;
324
- };
325
- BaseSavableEntityBuilder.prototype.setSort = function (field, order) {
326
- if (!this.getFileds().some(function (f) { return f.name === field; })) {
327
- throw new Error("There is no field with name \"".concat(field, "\", you can not set sort to this field. Entity ").concat(this.name));
285
+ }
286
+ setSort(field, order) {
287
+ if (!this.getFileds().some((f) => f.name === field)) {
288
+ throw new Error(`There is no field with name "${field}", you can not set sort to this field. Entity ${this.name}`);
328
289
  }
329
290
  this.sortField = field;
330
291
  this.sortOrder = order;
331
292
  return this;
332
- };
333
- BaseSavableEntityBuilder.prototype.addUniqueConstraint = function (fields) {
334
- var _this = this;
335
- var currentFields = this.getFileds();
293
+ }
294
+ addUniqueConstraint(fields) {
295
+ const currentFields = this.getFileds();
336
296
  // const currentRequiredFields = currentFields.filter(f => f.required);
337
- var currentFieldNames = currentFields.map(function (f) { return f.name; });
297
+ const currentFieldNames = currentFields.map((f) => f.name);
338
298
  // const currentRequiredFieldNames = currentRequiredFields.map(f => f.name);
339
- if (fields.some(function (f) { return !currentFieldNames.includes(f); })) {
340
- throw new Error("You trying to add constraint for non existing field.\n Current fields: ".concat(currentFields.map(function (f) { return f.title[_this.defaultLanguage]; }).join(', '), ", fields for constraint: ").concat(fields.join(', '), ", field not in current: ").concat(fields.filter(function (f) { return !currentFieldNames.includes(f); }), ".\n Entity ").concat(this.name));
299
+ if (fields.some((f) => !currentFieldNames.includes(f))) {
300
+ throw new Error(`You trying to add constraint for non existing field.
301
+ Current fields: ${currentFields.map(f => f.title[this.defaultLanguage]).join(', ')}, fields for constraint: ${fields.join(', ')}, field not in current: ${fields.filter((f) => !currentFieldNames.includes(f))}.
302
+ Entity ${this.name}`);
341
303
  }
342
304
  // if (fields.some(f => !currentRequiredFieldNames.includes(f))) {
343
305
  // throw new Error(`You trying to add constraint for not required field. Presence of not required filed breaks uniquiness check.
@@ -346,151 +308,152 @@ var BaseSavableEntityBuilder = /** @class */ (function (_super) {
346
308
  // }
347
309
  this.uniqueConstraints.push(fields);
348
310
  return this;
349
- };
350
- BaseSavableEntityBuilder.prototype.addIndex = function (_a) {
351
- var _this = this;
352
- var fields = _a.fields, type = _a.type;
353
- var currentFields = this.getFileds();
354
- var currentFieldNames = currentFields.map(function (f) { return f.name; });
355
- if (fields.some(function (f) { return !currentFieldNames.includes(f); })) {
356
- throw new Error("You trying to add index for non existing field.\n Current fields: ".concat(currentFields.map(function (f) { return f.title[_this.defaultLanguage]; }).join(', '), ", fields for indexing: ").concat(fields.join(', '), ", field not in current: ").concat(fields.filter(function (f) { return !currentFieldNames.includes(f); }), ".\n Entity ").concat(this.name));
311
+ }
312
+ addIndex({ fields, type }) {
313
+ const currentFields = this.getFileds();
314
+ const currentFieldNames = currentFields.map((f) => f.name);
315
+ if (fields.some((f) => !currentFieldNames.includes(f))) {
316
+ throw new Error(`You trying to add index for non existing field.
317
+ Current fields: ${currentFields.map(f => f.title[this.defaultLanguage]).join(', ')}, fields for indexing: ${fields.join(', ')}, field not in current: ${fields.filter((f) => !currentFieldNames.includes(f))}.
318
+ Entity ${this.name}`);
357
319
  }
358
320
  if (type === buildedTypes_1.IndexType.Hash && fields.length > 1) {
359
- throw new Error("Hash method doesn't support multicolumn indexes in entity ".concat(this.name));
321
+ throw new Error(`Hash method doesn't support multicolumn indexes in entity ${this.name}`);
360
322
  }
361
- this.indexes.push({ fields: fields, type: type });
323
+ this.indexes.push({ fields, type });
362
324
  return this;
363
- };
364
- BaseSavableEntityBuilder.prototype.addPemission = function (name, type) {
365
- if (this.permissions.some(function (p) { return p.name === name; })) {
366
- throw new Error("Entity \"".concat(this.name, "\" already have \"").concat(name, "\" pemission"));
325
+ }
326
+ addPemission(name, type) {
327
+ if (this.permissions.some((p) => p.name === name)) {
328
+ throw new Error(`Entity "${this.name}" already have "${name}" pemission`);
367
329
  }
368
- var permission = new PermissionBuilder_1.default("".concat(this.name, ".").concat(name), type, this.defaultLanguage, "".concat(this.name, ".").concat(name));
330
+ const permission = new PermissionBuilder_1.default(`${this.name}.${name}`, type, this.defaultLanguage, `${this.name}.${name}`);
369
331
  this.permissions.push(permission);
370
332
  return this;
371
- };
372
- BaseSavableEntityBuilder.prototype.addPage = function (name, link, label, title) {
373
- if (this.pages.some(function (p) { return p.name === name; })) {
374
- throw new Error("There is already \"".concat(name, "\" page"));
333
+ }
334
+ addPage(name, link, label, title) {
335
+ if (this.pages.some(p => p.name === name)) {
336
+ throw new Error(`There is already "${name}" page`);
375
337
  }
376
- var page = new PageBuilder_1.default(name, link, label, this.defaultLanguage, title);
338
+ const page = new PageBuilder_1.default(name, link, label, this.defaultLanguage, title);
377
339
  this.pages.push(page);
378
340
  return page;
379
- };
380
- BaseSavableEntityBuilder.prototype.getPageByName = function (pageName) {
381
- var found = this.pages.find(function (p) { return p.name === pageName; });
341
+ }
342
+ getPageByName(pageName) {
343
+ const found = this.pages.find(p => p.name === pageName);
382
344
  if (!found) {
383
- throw new Error("Page \"".concat(pageName, "\" not found"));
345
+ throw new Error(`Page "${pageName}" not found`);
384
346
  }
385
347
  return found;
386
- };
387
- BaseSavableEntityBuilder.prototype.getAllPage = function () {
388
- return this.getPageByName("".concat(this.name, ".all"));
389
- };
390
- BaseSavableEntityBuilder.prototype.getCreatePage = function () {
391
- return this.getPageByName("".concat(this.name, ".create"));
392
- };
393
- BaseSavableEntityBuilder.prototype.addMethod = function (name, methodType, title) {
394
- if (this.methods.some(function (f) { return f.name === name; })) {
395
- throw new Error("There is already field with name \"".concat(name, "\" in args model"));
348
+ }
349
+ getAllPage() {
350
+ return this.getPageByName(`${this.name}.all`);
351
+ }
352
+ getCreatePage() {
353
+ return this.getPageByName(`${this.name}.create`);
354
+ }
355
+ addMethod(name, methodType, title) {
356
+ if (this.methods.some((f) => f.name === name)) {
357
+ throw new Error(`There is already field with name "${name}" in args model`);
396
358
  }
397
- var field = new MethodBuilder_1.default(this, name, methodType, this.defaultLanguage, title);
359
+ const field = new MethodBuilder_1.default(this, name, methodType, this.defaultLanguage, title);
398
360
  this.methods.push(field);
399
361
  return field;
400
- };
401
- BaseSavableEntityBuilder.prototype.addGeneralModel = function (name, title) {
402
- if (this.getAllModels().some(function (f) { return f.name === name; })) {
403
- throw new Error("There is already field with name \"".concat(name, "\" in args model"));
362
+ }
363
+ addGeneralModel(name, title) {
364
+ if (this.getAllModels().some((f) => f.name === name)) {
365
+ throw new Error(`There is already field with name "${name}" in args model`);
404
366
  }
405
- var model = new BaseModelBuilder_1.default(this, name, title !== null && title !== void 0 ? title : name, this.defaultLanguage);
367
+ const model = new BaseModelBuilder_1.default(this, name, title !== null && title !== void 0 ? title : name, this.defaultLanguage);
406
368
  this.generalModels.push(model);
407
369
  return model;
408
- };
409
- BaseSavableEntityBuilder.prototype.addInputModel = function (name, title) {
410
- if (this.getAllModels().some(function (f) { return f.name === name; })) {
411
- throw new Error("There is already field with name \"".concat(name, "\" in args model"));
370
+ }
371
+ addInputModel(name, title) {
372
+ if (this.getAllModels().some((f) => f.name === name)) {
373
+ throw new Error(`There is already field with name "${name}" in args model`);
412
374
  }
413
- var model = new BaseModelBuilder_1.default(this, name, title !== null && title !== void 0 ? title : name, this.defaultLanguage);
375
+ const model = new BaseModelBuilder_1.default(this, name, title !== null && title !== void 0 ? title : name, this.defaultLanguage);
414
376
  this.inputModels.push(model);
415
377
  return model;
416
- };
417
- BaseSavableEntityBuilder.prototype.addOutputModel = function (name, title) {
418
- if (this.getAllModels().some(function (f) { return f.name === name; })) {
419
- throw new Error("There is already field with name \"".concat(name, "\" in args model"));
378
+ }
379
+ addOutputModel(name, title) {
380
+ if (this.getAllModels().some((f) => f.name === name)) {
381
+ throw new Error(`There is already field with name "${name}" in args model`);
420
382
  }
421
- var model = new BaseModelBuilder_1.default(this, name, title !== null && title !== void 0 ? title : name, this.defaultLanguage);
383
+ const model = new BaseModelBuilder_1.default(this, name, title !== null && title !== void 0 ? title : name, this.defaultLanguage);
422
384
  this.outputModels.push(model);
423
385
  return model;
424
- };
425
- BaseSavableEntityBuilder.prototype.getMethods = function () {
386
+ }
387
+ getMethods() {
426
388
  return this.methods;
427
- };
428
- BaseSavableEntityBuilder.prototype.getAllModels = function () {
429
- return __spreadArray(__spreadArray(__spreadArray([], this.inputModels, true), this.outputModels, true), this.generalModels, true);
430
- };
431
- BaseSavableEntityBuilder.prototype.getGeneralModels = function () {
389
+ }
390
+ getAllModels() {
391
+ return [
392
+ ...this.inputModels,
393
+ ...this.outputModels,
394
+ ...this.generalModels,
395
+ ];
396
+ }
397
+ getGeneralModels() {
432
398
  return this.generalModels;
433
- };
434
- BaseSavableEntityBuilder.prototype.getInputModels = function () {
399
+ }
400
+ getInputModels() {
435
401
  return this.inputModels;
436
- };
437
- BaseSavableEntityBuilder.prototype.getOutputModels = function () {
402
+ }
403
+ getOutputModels() {
438
404
  return this.outputModels;
439
- };
440
- BaseSavableEntityBuilder.prototype.addLabel = function (label) {
441
- if (this.labels.some(function (l) { return l === label; })) {
442
- throw new Error("There is already label \"".concat(label, "\" in \"").concat(this.name, "\" entity"));
405
+ }
406
+ addLabel(label) {
407
+ if (this.labels.some(l => l === label)) {
408
+ throw new Error(`There is already label "${label}" in "${this.name}" entity`);
443
409
  }
444
410
  this.labels.push(label);
445
- };
446
- BaseSavableEntityBuilder.prototype.delLabel = function (label) {
447
- this.labels = this.labels.filter(function (l) { return l !== label; });
411
+ }
412
+ delLabel(label) {
413
+ this.labels = this.labels.filter((l) => l !== label);
448
414
  return this;
449
- };
450
- BaseSavableEntityBuilder.prototype.build = function () {
451
- return __assign(__assign({}, _super.prototype.build.call(this)), { title: this.title, singleKey: this.singleKey,
415
+ }
416
+ build() {
417
+ return Object.assign(Object.assign({}, super.build()), { title: this.title, singleKey: this.singleKey,
452
418
  // titleField: this.titleField.build(),
453
419
  titleField: this.titleField.name,
454
420
  // linkFields: this.getLinkFileds().map(f => f.build()),
455
421
  // keyField: this.getKey().build(),
456
- keyField: this.getKey().name, fields: this.getFileds().map(function (field) { return field.build(); }), uniqueConstraints: this.getUniqueConstraints(), indexes: this.indexes, forms: this.getForms().build(), predefinedElements: this.predefinedElements, devPerefinedElements: this.devPerefinedElements, auditable: this.auditable, externalSearch: this.externalSearch, elasticOnly: this.elasticOnly, searchEnabled: this.searchEnabled, sortField: this.sortField, sortOrder: this.sortOrder, multitenancy: this.multitenancy, commonElementsVisibleToAll: this.commonElementsVisibleToAll, externalSearchName: this.externalSearchName, sharded: this.sharded, isExternalSearch: this.isExternalSearch, creatableByUser: this.creatableByUser, updatableByUser: this.updatableByUser, removableByUser: this.removableByUser, exportableByUser: this.exportableByUser, clearDBAfter: this.clearDBAfter, allowedToChange: this.allowedToChange, permissions: this.permissions.map(function (p) { return p.build(); }), pages: this.pages.map(function (p) { return p.build(); }), generalModels: this.generalModels.map(function (m) { return m.build(); }), inputModels: this.inputModels.map(function (m) { return m.build(); }), outputModels: this.outputModels.map(function (m) { return m.build(); }), methods: this.methods.map(function (m) { return m.build(); }), labels: this.labels });
457
- };
458
- BaseSavableEntityBuilder.prototype.initFormas = function () {
459
- var _this = this;
422
+ keyField: this.getKey().name, fields: this.getFileds().map((field) => field.build()), uniqueConstraints: this.getUniqueConstraints(), indexes: this.indexes, forms: this.getForms().build(), predefinedElements: this.predefinedElements, devPerefinedElements: this.devPerefinedElements, auditable: this.auditable, externalSearch: this.externalSearch, elasticOnly: this.elasticOnly, searchEnabled: this.searchEnabled, sortField: this.sortField, sortOrder: this.sortOrder, multitenancy: this.multitenancy, commonElementsVisibleToAll: this.commonElementsVisibleToAll, externalSearchName: this.externalSearchName, sharded: this.sharded, isExternalSearch: this.isExternalSearch, creatableByUser: this.creatableByUser, updatableByUser: this.updatableByUser, removableByUser: this.removableByUser, exportableByUser: this.exportableByUser, clearDBAfter: this.clearDBAfter, allowedToChange: this.allowedToChange, permissions: this.permissions.map(p => p.build()), pages: this.pages.map(p => p.build()), generalModels: this.generalModels.map(m => m.build()), inputModels: this.inputModels.map(m => m.build()), outputModels: this.outputModels.map(m => m.build()), methods: this.methods.map(m => m.build()), labels: this.labels });
423
+ }
424
+ initFormas() {
460
425
  if (!this.forms) {
461
- this.forms = new FormsBuilder_1.default(function () { return _this; });
426
+ this.forms = new FormsBuilder_1.default(() => this);
462
427
  }
463
428
  return this;
464
- };
465
- BaseSavableEntityBuilder.prototype.getForms = function () {
429
+ }
430
+ getForms() {
466
431
  this.initFormas();
467
432
  return this.forms;
468
- };
469
- BaseSavableEntityBuilder.prototype.addPredefinedElements = function (fields) {
470
- var _a;
471
- (_a = this.predefinedElements).push.apply(_a, fields);
472
- };
473
- BaseSavableEntityBuilder.prototype.setPredefinedElements = function (fields) {
433
+ }
434
+ addPredefinedElements(fields) {
435
+ this.predefinedElements.push(...fields);
436
+ }
437
+ setPredefinedElements(fields) {
474
438
  this.predefinedElements = fields;
475
- };
476
- BaseSavableEntityBuilder.prototype.addDevPredefinedElements = function (fields) {
477
- var _a;
478
- (_a = this.devPerefinedElements).push.apply(_a, fields);
479
- };
480
- BaseSavableEntityBuilder.prototype.setDevPredefinedElements = function (fields) {
439
+ }
440
+ addDevPredefinedElements(fields) {
441
+ this.devPerefinedElements.push(...fields);
442
+ }
443
+ setDevPredefinedElements(fields) {
481
444
  this.devPerefinedElements = fields;
482
- };
483
- BaseSavableEntityBuilder.prototype.setMultitenancy = function (multitenancy, commonElementsVisibleToAll) {
445
+ }
446
+ setMultitenancy(multitenancy, commonElementsVisibleToAll) {
484
447
  this.multitenancy = multitenancy;
485
448
  if (multitenancy !== 'optional' &&
486
449
  commonElementsVisibleToAll !== undefined) {
487
- throw new Error("You are trying to specify commonElementsVisibleToAll, but multitenancy is not optional (".concat(multitenancy, ")"));
450
+ throw new Error(`You are trying to specify commonElementsVisibleToAll, but multitenancy is not optional (${multitenancy})`);
488
451
  }
489
452
  this.commonElementsVisibleToAll =
490
453
  commonElementsVisibleToAll || multitenancy === 'optional';
491
454
  this.delField('tenantId');
492
455
  if (multitenancy !== 'none') {
493
- var tenantField = this.addLinkField('tenants', 'tenantId')
456
+ const tenantField = this.addLinkField('tenants', 'tenantId')
494
457
  .setType('int')
495
458
  .setNotUpdatableByUser();
496
459
  if (multitenancy === 'required') {
@@ -499,26 +462,23 @@ var BaseSavableEntityBuilder = /** @class */ (function (_super) {
499
462
  .setNotUpdatableByUser(undefined, "await ctx.service('profile').getRequiredTenantId()");
500
463
  }
501
464
  }
502
- };
503
- BaseSavableEntityBuilder.prototype.setSharded = function (value) {
504
- if (value === void 0) { value = true; }
465
+ }
466
+ setSharded(value = true) {
505
467
  this.sharded = value;
506
468
  return this;
507
- };
508
- BaseSavableEntityBuilder.prototype.setIsExternalTable = function () {
469
+ }
470
+ setIsExternalTable() {
509
471
  this.isExternalSearch = true;
510
472
  return this;
511
- };
512
- BaseSavableEntityBuilder.prototype.setClearDBAfter = function (count, unit) {
473
+ }
474
+ setClearDBAfter(count, unit) {
513
475
  this.clearDBAfter.push({ 'count': count, 'unit': unit });
514
476
  return this;
515
- };
516
- BaseSavableEntityBuilder.prototype.setAllowedToChange = function (value) {
517
- if (value === void 0) { value = ''; }
477
+ }
478
+ setAllowedToChange(value = '') {
518
479
  this.allowedToChange = value;
519
480
  return this;
520
- };
521
- return BaseSavableEntityBuilder;
522
- }(BaseBuilder_1.default));
481
+ }
482
+ }
523
483
  exports.default = BaseSavableEntityBuilder;
524
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZVNhdmFibGVFbnRpdHlCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Byb2plY3RzR2VuZXJhdGlvbi9idWlsZGVycy9CYXNlU2F2YWJsZUVudGl0eUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUZBQTREO0FBQzVELDJFQUFvRDtBQUNwRCwrRUFBd0Q7QUFDeEQsK0NBQThIO0FBQzlILG9FQUE2QztBQUM3Qyw4REFBdUM7QUFDdkMsbUVBQTRDO0FBRTVDLHVGQUFnRTtBQUNoRSwyQ0FBdUQ7QUFDdkQsdUNBQTBCO0FBQzFCLDBFQUFtRDtBQUNuRCw4REFBdUM7QUFDdkMsK0VBQXdEO0FBQ3hELHlFQUEyRTtBQUUzRSxzQ0FBc0M7QUFDdEMsV0FBVztBQUNYLFdBQVc7QUFDWCxhQUFhO0FBQ2IsWUFBWTtBQUNaLElBQUk7QUFFSixrQ0FBa0M7QUFDbEMsd0JBQXdCO0FBQ3hCLGNBQWM7QUFDZCxjQUFjO0FBQ2QsY0FBYztBQUNkLElBQUk7QUFFSjtJQUFnRCw0Q0FBVztJQTBDekQsa0NBQVksSUFBWSxFQUFFLGVBQXVCLEVBQUUsS0FBNEM7O1FBQS9GLFlBQ0Usa0JBQU0sSUFBSSxFQUFFLGVBQWUsRUFBRSxLQUFLLENBQUMsU0FvQnBDO1FBN0RELGlCQUFXLEdBQXdCLEVBQUUsQ0FBQTtRQUNyQyxZQUFNLEdBQW1CLEVBQUUsQ0FBQTtRQUMzQix1QkFBaUIsR0FBZSxFQUFFLENBQUE7UUFDbEMsYUFBTyxHQUFpQixFQUFFLENBQUE7UUFDaEIsVUFBSSxHQUFHLFNBQVMsQ0FBQTtRQUUxQixlQUFTLEdBQUcsS0FBSyxDQUFBO1FBQ2pCLGNBQVEsR0FBRyxJQUFJLENBQUE7UUFDZixlQUFTLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLGFBQU8sR0FBRyxLQUFLLENBQUE7UUFD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
484
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZVNhdmFibGVFbnRpdHlCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Byb2plY3RzR2VuZXJhdGlvbi9idWlsZGVycy9CYXNlU2F2YWJsZUVudGl0eUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFGQUE0RDtBQUM1RCw2RUFBb0Q7QUFDcEQsaUZBQXdEO0FBQ3hELGlEQUE4SDtBQUM5SCxzRUFBNkM7QUFDN0MsZ0VBQXVDO0FBQ3ZDLHFFQUE0QztBQUU1Qyx5RkFBZ0U7QUFDaEUsNkNBQXVEO0FBQ3ZELHlDQUEwQjtBQUMxQiw0RUFBbUQ7QUFDbkQsZ0VBQXVDO0FBQ3ZDLGlGQUF3RDtBQUN4RCwyRUFBMkU7QUFFM0Usc0NBQXNDO0FBQ3RDLFdBQVc7QUFDWCxXQUFXO0FBQ1gsYUFBYTtBQUNiLFlBQVk7QUFDWixJQUFJO0FBRUosa0NBQWtDO0FBQ2xDLHdCQUF3QjtBQUN4QixjQUFjO0FBQ2QsY0FBYztBQUNkLGNBQWM7QUFDZCxJQUFJO0FBRUosTUFBZSx3QkFBeUIsU0FBUSxxQkFBVztJQTBDekQsWUFBWSxJQUFZLEVBQUUsZUFBdUIsRUFBRSxLQUE0Qzs7UUFDN0YsS0FBSyxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUE7UUF6Q3JDLGdCQUFXLEdBQXdCLEVBQUUsQ0FBQTtRQUNyQyxXQUFNLEdBQW1CLEVBQUUsQ0FBQTtRQUMzQixzQkFBaUIsR0FBZSxFQUFFLENBQUE7UUFDbEMsWUFBTyxHQUFpQixFQUFFLENBQUE7UUFDaEIsU0FBSSxHQUFHLFNBQVMsQ0FBQTtRQUUxQixjQUFTLEdBQUcsS0FBSyxDQUFBO1FBQ2pCLGFBQVEsR0FBRyxJQUFJLENBQUE7UUFDZixjQUFTLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLFlBQU8sR0FBRyxLQUFLLENBQUE7UUFDZixjQUFTLEdBQUcsSUFBSSxDQUFBO1FBQ2hC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