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
@@ -3,306 +3,306 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- var jest_without_globals_1 = require("jest-without-globals");
7
- var getUsedModelsForService_1 = require("./getUsedModelsForService");
8
- var buildedTypes_1 = require("../../../../builders/buildedTypes");
9
- var AdditionalServiceBuilder_1 = __importDefault(require("../../../../builders/AdditionalServiceBuilder"));
6
+ const jest_without_globals_1 = require("jest-without-globals");
7
+ const getUsedModelsForService_1 = require("./getUsedModelsForService");
8
+ const buildedTypes_1 = require("../../../../builders/buildedTypes");
9
+ const AdditionalServiceBuilder_1 = __importDefault(require("../../../../builders/AdditionalServiceBuilder"));
10
10
  // yarn test --testPathPattern getUsedModelsForService
11
- var addUnusedModels = function (service) {
12
- var unusedGeneralModel = service.addGeneralModel('unusedGeneralModel');
11
+ const addUnusedModels = (service) => {
12
+ const unusedGeneralModel = service.addGeneralModel('unusedGeneralModel');
13
13
  unusedGeneralModel.addField('fieldOfModel').setType('string').setRequired();
14
- var unusedInputModel = service.addInputModel('unusedInputModel');
14
+ const unusedInputModel = service.addInputModel('unusedInputModel');
15
15
  unusedInputModel.addField('fieldOfModel').setType('string').setRequired();
16
- var unusedOutputModel = service.addOutputModel('unusedOutputModel');
16
+ const unusedOutputModel = service.addOutputModel('unusedOutputModel');
17
17
  unusedOutputModel.addField('fieldOfModel').setType('string').setRequired();
18
18
  };
19
- describe('getUsedModelsForService', function () {
20
- describe('for args model', function () {
21
- it('returns args and general model for args model with link to general model', function () {
22
- var service = new AdditionalServiceBuilder_1.default('someService', 'ru');
19
+ describe('getUsedModelsForService', () => {
20
+ describe('for args model', () => {
21
+ it('returns args and general model for args model with link to general model', () => {
22
+ const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
23
23
  addUnusedModels(service);
24
- var someGerenalModel = service.addGeneralModel('someGerenalModel');
24
+ const someGerenalModel = service.addGeneralModel('someGerenalModel');
25
25
  someGerenalModel.addField('fieldOfModel').setType('string').setRequired();
26
- var someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
26
+ const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
27
27
  someMethod.setExportedToApi();
28
- var someMethodArgs = someMethod.getArgsModel();
28
+ const someMethodArgs = someMethod.getArgsModel();
29
29
  someMethodArgs.addModelField('someGerenalModel', 'objectField').setRequired();
30
- var inputModels = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()).inputModels;
30
+ const { inputModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
31
31
  (0, jest_without_globals_1.expect)(inputModels).toIncludeSameMembers([someGerenalModel.build(), someMethodArgs.build()]);
32
32
  });
33
- it('returns args and input model for args model with link to input model', function () {
34
- var service = new AdditionalServiceBuilder_1.default('someService', 'ru');
33
+ it('returns args and input model for args model with link to input model', () => {
34
+ const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
35
35
  addUnusedModels(service);
36
- var someInputModel = service.addInputModel('someInputModel');
36
+ const someInputModel = service.addInputModel('someInputModel');
37
37
  someInputModel.addField('fieldOfModel').setType('string').setRequired();
38
- var someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
38
+ const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
39
39
  someMethod.setExportedToApi();
40
- var someMethodArgs = someMethod.getArgsModel();
40
+ const someMethodArgs = someMethod.getArgsModel();
41
41
  someMethodArgs.addModelField('someInputModel', 'objectField').setRequired();
42
- var inputModels = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()).inputModels;
42
+ const { inputModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
43
43
  (0, jest_without_globals_1.expect)(inputModels).toIncludeSameMembers([someInputModel.build(), someMethodArgs.build()]);
44
44
  });
45
- it('returns args and two general models for args model with link to general model that itself has link to another general model', function () {
46
- var service = new AdditionalServiceBuilder_1.default('someService', 'ru');
45
+ it('returns args and two general models for args model with link to general model that itself has link to another general model', () => {
46
+ const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
47
47
  addUnusedModels(service);
48
- var someSecondGerenalModel = service.addGeneralModel('someSecondGerenalModel');
48
+ const someSecondGerenalModel = service.addGeneralModel('someSecondGerenalModel');
49
49
  someSecondGerenalModel.addField('fieldOfModel').setType('string').setRequired();
50
- var someGerenalModel = service.addGeneralModel('someGerenalModel');
50
+ const someGerenalModel = service.addGeneralModel('someGerenalModel');
51
51
  someGerenalModel.addModelField('someSecondGerenalModel', 'objectField').setRequired();
52
- var someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
52
+ const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
53
53
  someMethod.setExportedToApi();
54
- var someMethodArgs = someMethod.getArgsModel();
54
+ const someMethodArgs = someMethod.getArgsModel();
55
55
  someMethodArgs.addModelField('someGerenalModel', 'objectField').setRequired();
56
- var inputModels = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()).inputModels;
56
+ const { inputModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
57
57
  (0, jest_without_globals_1.expect)(inputModels).toIncludeSameMembers([someGerenalModel.build(), someSecondGerenalModel.build(), someMethodArgs.build()]);
58
58
  });
59
- it('returns args, general and input models for args model with link to general model that itself has link to another input model', function () {
60
- var service = new AdditionalServiceBuilder_1.default('someService', 'ru');
59
+ it('returns args, general and input models for args model with link to general model that itself has link to another input model', () => {
60
+ const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
61
61
  addUnusedModels(service);
62
- var someInputModel = service.addInputModel('someInputModel');
62
+ const someInputModel = service.addInputModel('someInputModel');
63
63
  someInputModel.addField('fieldOfModel').setType('string').setRequired();
64
- var someGerenalModel = service.addGeneralModel('someGerenalModel');
64
+ const someGerenalModel = service.addGeneralModel('someGerenalModel');
65
65
  someGerenalModel.addModelField('someInputModel', 'objectField').setRequired();
66
- var someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
66
+ const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
67
67
  someMethod.setExportedToApi();
68
- var someMethodArgs = someMethod.getArgsModel();
68
+ const someMethodArgs = someMethod.getArgsModel();
69
69
  someMethodArgs.addModelField('someGerenalModel', 'objectField').setRequired();
70
- var inputModels = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()).inputModels;
70
+ const { inputModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
71
71
  (0, jest_without_globals_1.expect)(inputModels).toIncludeSameMembers([someGerenalModel.build(), someInputModel.build(), someMethodArgs.build()]);
72
72
  });
73
- it('returns args, general and input models for args model with link to input model that itself has link to general model', function () {
74
- var service = new AdditionalServiceBuilder_1.default('someService', 'ru');
73
+ it('returns args, general and input models for args model with link to input model that itself has link to general model', () => {
74
+ const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
75
75
  addUnusedModels(service);
76
- var someGerenalModel = service.addGeneralModel('someGerenalModel');
76
+ const someGerenalModel = service.addGeneralModel('someGerenalModel');
77
77
  someGerenalModel.addField('fieldOfModel').setType('string').setRequired();
78
- var someInputModel = service.addInputModel('someInputModel');
78
+ const someInputModel = service.addInputModel('someInputModel');
79
79
  someInputModel.addModelField('someGerenalModel', 'objectField').setRequired();
80
- var someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
80
+ const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
81
81
  someMethod.setExportedToApi();
82
- var someMethodArgs = someMethod.getArgsModel();
82
+ const someMethodArgs = someMethod.getArgsModel();
83
83
  someMethodArgs.addModelField('someInputModel', 'objectField').setRequired();
84
- var inputModels = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()).inputModels;
84
+ const { inputModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
85
85
  (0, jest_without_globals_1.expect)(inputModels).toIncludeSameMembers([someGerenalModel.build(), someInputModel.build(), someMethodArgs.build()]);
86
86
  });
87
- it('returns args and two input models for args model with link to input model that itself has link to another input model', function () {
88
- var service = new AdditionalServiceBuilder_1.default('someService', 'ru');
87
+ it('returns args and two input models for args model with link to input model that itself has link to another input model', () => {
88
+ const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
89
89
  addUnusedModels(service);
90
- var someSecondInputModel = service.addInputModel('someSecondInputModel');
90
+ const someSecondInputModel = service.addInputModel('someSecondInputModel');
91
91
  someSecondInputModel.addField('fieldOfModel').setType('string').setRequired();
92
- var someInputModel = service.addInputModel('someInputModel');
92
+ const someInputModel = service.addInputModel('someInputModel');
93
93
  someInputModel.addModelField('someSecondInputModel', 'objectField').setRequired();
94
- var someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
94
+ const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
95
95
  someMethod.setExportedToApi();
96
- var someMethodArgs = someMethod.getArgsModel();
96
+ const someMethodArgs = someMethod.getArgsModel();
97
97
  someMethodArgs.addModelField('someInputModel', 'objectField').setRequired();
98
- var inputModels = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()).inputModels;
98
+ const { inputModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
99
99
  (0, jest_without_globals_1.expect)(inputModels).toIncludeSameMembers([someSecondInputModel.build(), someInputModel.build(), someMethodArgs.build()]);
100
100
  });
101
- it('throws if args model has link to output model', function () {
102
- var service = new AdditionalServiceBuilder_1.default('someService', 'ru');
101
+ it('throws if args model has link to output model', () => {
102
+ const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
103
103
  addUnusedModels(service);
104
- var someOutputModel = service.addOutputModel('someOutputModel');
104
+ const someOutputModel = service.addOutputModel('someOutputModel');
105
105
  someOutputModel.addField('fieldOfModel').setType('string').setRequired();
106
- var someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
106
+ const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
107
107
  someMethod.setExportedToApi();
108
- var someMethodArgs = someMethod.getArgsModel();
108
+ const someMethodArgs = someMethod.getArgsModel();
109
109
  someMethodArgs.addModelField('someOutputModel', 'objectField').setRequired();
110
- (0, jest_without_globals_1.expect)(function () { return (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()); })
110
+ (0, jest_without_globals_1.expect)(() => (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()))
111
111
  .toThrow(new Error('Can\'t find model "someOutputModel", models: unusedGeneralModel, unusedInputModel, someMethodArgs'));
112
112
  });
113
113
  });
114
- describe('for return model', function () {
115
- it('returns return model and general model for return model with link to general model', function () {
116
- var service = new AdditionalServiceBuilder_1.default('someService', 'ru');
114
+ describe('for return model', () => {
115
+ it('returns return model and general model for return model with link to general model', () => {
116
+ const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
117
117
  addUnusedModels(service);
118
- var someGerenalModel = service.addGeneralModel('someGerenalModel');
118
+ const someGerenalModel = service.addGeneralModel('someGerenalModel');
119
119
  someGerenalModel.addField('fieldOfModel').setType('string').setRequired();
120
- var someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
120
+ const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
121
121
  someMethod.setExportedToApi();
122
- var someMethodReturn = someMethod.getReturnModel();
122
+ const someMethodReturn = someMethod.getReturnModel();
123
123
  someMethodReturn.addModelField('someGerenalModel', 'objectField').setRequired();
124
- var outputModels = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()).outputModels;
124
+ const { outputModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
125
125
  (0, jest_without_globals_1.expect)(outputModels).toIncludeSameMembers([someGerenalModel.build(), someMethodReturn.build()]);
126
126
  });
127
- it('returns return model and output model for return model with link to output model', function () {
128
- var service = new AdditionalServiceBuilder_1.default('someService', 'ru');
127
+ it('returns return model and output model for return model with link to output model', () => {
128
+ const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
129
129
  addUnusedModels(service);
130
- var someOutputModel = service.addOutputModel('someOutputModel');
130
+ const someOutputModel = service.addOutputModel('someOutputModel');
131
131
  someOutputModel.addField('fieldOfModel').setType('string').setRequired();
132
- var someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
132
+ const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
133
133
  someMethod.setExportedToApi();
134
- var someMethodReturn = someMethod.getReturnModel();
134
+ const someMethodReturn = someMethod.getReturnModel();
135
135
  someMethodReturn.addModelField('someOutputModel', 'objectField').setRequired();
136
- var outputModels = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()).outputModels;
136
+ const { outputModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
137
137
  (0, jest_without_globals_1.expect)(outputModels).toIncludeSameMembers([someOutputModel.build(), someMethodReturn.build()]);
138
138
  });
139
- it('returns return model and two general models for return model with link to general model that itself has link to another general model', function () {
140
- var service = new AdditionalServiceBuilder_1.default('someService', 'ru');
139
+ it('returns return model and two general models for return model with link to general model that itself has link to another general model', () => {
140
+ const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
141
141
  addUnusedModels(service);
142
- var someSecondGerenalModel = service.addGeneralModel('someSecondGerenalModel');
142
+ const someSecondGerenalModel = service.addGeneralModel('someSecondGerenalModel');
143
143
  someSecondGerenalModel.addField('fieldOfModel').setType('string').setRequired();
144
- var someGerenalModel = service.addGeneralModel('someGerenalModel');
144
+ const someGerenalModel = service.addGeneralModel('someGerenalModel');
145
145
  someGerenalModel.addModelField('someSecondGerenalModel', 'objectField').setRequired();
146
- var someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
146
+ const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
147
147
  someMethod.setExportedToApi();
148
- var someMethodReturn = someMethod.getReturnModel();
148
+ const someMethodReturn = someMethod.getReturnModel();
149
149
  someMethodReturn.addModelField('someGerenalModel', 'objectField').setRequired();
150
- var outputModels = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()).outputModels;
150
+ const { outputModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
151
151
  (0, jest_without_globals_1.expect)(outputModels).toIncludeSameMembers([someGerenalModel.build(), someSecondGerenalModel.build(), someMethodReturn.build()]);
152
152
  });
153
- it('returns return model, general and output models for return model with link to general model that itself has link to another output model', function () {
154
- var service = new AdditionalServiceBuilder_1.default('someService', 'ru');
153
+ it('returns return model, general and output models for return model with link to general model that itself has link to another output model', () => {
154
+ const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
155
155
  addUnusedModels(service);
156
- var someOutputModel = service.addOutputModel('someOutputModel');
156
+ const someOutputModel = service.addOutputModel('someOutputModel');
157
157
  someOutputModel.addField('fieldOfModel').setType('string').setRequired();
158
- var someGerenalModel = service.addGeneralModel('someGerenalModel');
158
+ const someGerenalModel = service.addGeneralModel('someGerenalModel');
159
159
  someGerenalModel.addModelField('someOutputModel', 'objectField').setRequired();
160
- var someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
160
+ const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
161
161
  someMethod.setExportedToApi();
162
- var someMethodReturn = someMethod.getReturnModel();
162
+ const someMethodReturn = someMethod.getReturnModel();
163
163
  someMethodReturn.addModelField('someGerenalModel', 'objectField').setRequired();
164
- var outputModels = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()).outputModels;
164
+ const { outputModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
165
165
  (0, jest_without_globals_1.expect)(outputModels).toIncludeSameMembers([someGerenalModel.build(), someOutputModel.build(), someMethodReturn.build()]);
166
166
  });
167
- it('returns return model, general and output models for return model with link to output model that itself has link to general model', function () {
168
- var service = new AdditionalServiceBuilder_1.default('someService', 'ru');
167
+ it('returns return model, general and output models for return model with link to output model that itself has link to general model', () => {
168
+ const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
169
169
  addUnusedModels(service);
170
- var someGerenalModel = service.addGeneralModel('someGerenalModel');
170
+ const someGerenalModel = service.addGeneralModel('someGerenalModel');
171
171
  someGerenalModel.addField('fieldOfModel').setType('string').setRequired();
172
- var someOutputModel = service.addOutputModel('someOutputModel');
172
+ const someOutputModel = service.addOutputModel('someOutputModel');
173
173
  someOutputModel.addModelField('someGerenalModel', 'objectField').setRequired();
174
- var someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
174
+ const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
175
175
  someMethod.setExportedToApi();
176
- var someMethodReturn = someMethod.getReturnModel();
176
+ const someMethodReturn = someMethod.getReturnModel();
177
177
  someMethodReturn.addModelField('someOutputModel', 'objectField').setRequired();
178
- var outputModels = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()).outputModels;
178
+ const { outputModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
179
179
  (0, jest_without_globals_1.expect)(outputModels).toIncludeSameMembers([someGerenalModel.build(), someOutputModel.build(), someMethodReturn.build()]);
180
180
  });
181
- it('returns return model and two output models for return model with link to output model that itself has link to another output model', function () {
182
- var service = new AdditionalServiceBuilder_1.default('someService', 'ru');
181
+ it('returns return model and two output models for return model with link to output model that itself has link to another output model', () => {
182
+ const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
183
183
  addUnusedModels(service);
184
- var someSecondOutputModel = service.addOutputModel('someSecondOutputModel');
184
+ const someSecondOutputModel = service.addOutputModel('someSecondOutputModel');
185
185
  someSecondOutputModel.addField('fieldOfModel').setType('string').setRequired();
186
- var someOutputModel = service.addOutputModel('someOutputModel');
186
+ const someOutputModel = service.addOutputModel('someOutputModel');
187
187
  someOutputModel.addModelField('someSecondOutputModel', 'objectField').setRequired();
188
- var someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
188
+ const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
189
189
  someMethod.setExportedToApi();
190
- var someMethodReturn = someMethod.getReturnModel();
190
+ const someMethodReturn = someMethod.getReturnModel();
191
191
  someMethodReturn.addModelField('someOutputModel', 'objectField').setRequired();
192
- var outputModels = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()).outputModels;
192
+ const { outputModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
193
193
  (0, jest_without_globals_1.expect)(outputModels).toIncludeSameMembers([someSecondOutputModel.build(), someOutputModel.build(), someMethodReturn.build()]);
194
194
  });
195
- it('throws if return model has link to input model', function () {
196
- var service = new AdditionalServiceBuilder_1.default('someService', 'ru');
195
+ it('throws if return model has link to input model', () => {
196
+ const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
197
197
  addUnusedModels(service);
198
- var someInputModel = service.addInputModel('someInputModel');
198
+ const someInputModel = service.addInputModel('someInputModel');
199
199
  someInputModel.addField('fieldOfModel').setType('string').setRequired();
200
- var someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
200
+ const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
201
201
  someMethod.setExportedToApi();
202
- var someMethodReturn = someMethod.getReturnModel();
202
+ const someMethodReturn = someMethod.getReturnModel();
203
203
  someMethodReturn.addModelField('someInputModel', 'objectField').setRequired();
204
- (0, jest_without_globals_1.expect)(function () { return (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()); })
204
+ (0, jest_without_globals_1.expect)(() => (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()))
205
205
  .toThrow(new Error('Can\'t find model "someInputModel", models: unusedGeneralModel, unusedOutputModel, someMethodResult'));
206
206
  });
207
207
  });
208
- describe('handling general models', function () {
209
- it('returns general model for return model with link to general model', function () {
210
- var service = new AdditionalServiceBuilder_1.default('someService', 'ru');
208
+ describe('handling general models', () => {
209
+ it('returns general model for return model with link to general model', () => {
210
+ const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
211
211
  addUnusedModels(service);
212
- var someGerenalModel = service.addGeneralModel('someGerenalModel');
212
+ const someGerenalModel = service.addGeneralModel('someGerenalModel');
213
213
  someGerenalModel.addField('fieldOfModel').setType('string').setRequired();
214
- var someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
214
+ const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
215
215
  someMethod.setExportedToApi();
216
- var someMethodReturn = someMethod.getReturnModel();
216
+ const someMethodReturn = someMethod.getReturnModel();
217
217
  someMethodReturn.addModelField('someGerenalModel', 'objectField').setRequired();
218
- var generalModels = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()).generalModels;
218
+ const { generalModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
219
219
  (0, jest_without_globals_1.expect)(generalModels).toIncludeSameMembers([someGerenalModel.build()]);
220
220
  });
221
- it('returns empty array for return model with link to output model', function () {
222
- var service = new AdditionalServiceBuilder_1.default('someService', 'ru');
221
+ it('returns empty array for return model with link to output model', () => {
222
+ const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
223
223
  addUnusedModels(service);
224
- var someOutputModel = service.addOutputModel('someOutputModel');
224
+ const someOutputModel = service.addOutputModel('someOutputModel');
225
225
  someOutputModel.addField('fieldOfModel').setType('string').setRequired();
226
- var someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
226
+ const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
227
227
  someMethod.setExportedToApi();
228
- var someMethodReturn = someMethod.getReturnModel();
228
+ const someMethodReturn = someMethod.getReturnModel();
229
229
  someMethodReturn.addModelField('someOutputModel', 'objectField').setRequired();
230
- var generalModels = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()).generalModels;
230
+ const { generalModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
231
231
  (0, jest_without_globals_1.expect)(generalModels).toBeEmpty();
232
232
  });
233
- it('returns two general models for return model with link to general model that itself has link to another general model', function () {
234
- var service = new AdditionalServiceBuilder_1.default('someService', 'ru');
233
+ it('returns two general models for return model with link to general model that itself has link to another general model', () => {
234
+ const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
235
235
  addUnusedModels(service);
236
- var someSecondGerenalModel = service.addGeneralModel('someSecondGerenalModel');
236
+ const someSecondGerenalModel = service.addGeneralModel('someSecondGerenalModel');
237
237
  someSecondGerenalModel.addField('fieldOfModel').setType('string').setRequired();
238
- var someGerenalModel = service.addGeneralModel('someGerenalModel');
238
+ const someGerenalModel = service.addGeneralModel('someGerenalModel');
239
239
  someGerenalModel.addModelField('someSecondGerenalModel', 'objectField').setRequired();
240
- var someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
240
+ const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
241
241
  someMethod.setExportedToApi();
242
- var someMethodReturn = someMethod.getReturnModel();
242
+ const someMethodReturn = someMethod.getReturnModel();
243
243
  someMethodReturn.addModelField('someGerenalModel', 'objectField').setRequired();
244
- var generalModels = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()).generalModels;
244
+ const { generalModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
245
245
  (0, jest_without_globals_1.expect)(generalModels).toIncludeSameMembers([someGerenalModel.build(), someSecondGerenalModel.build()]);
246
246
  });
247
- it('returns general model for return model with link to general model that itself has link to another output model', function () {
248
- var service = new AdditionalServiceBuilder_1.default('someService', 'ru');
247
+ it('returns general model for return model with link to general model that itself has link to another output model', () => {
248
+ const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
249
249
  addUnusedModels(service);
250
- var someOutputModel = service.addOutputModel('someOutputModel');
250
+ const someOutputModel = service.addOutputModel('someOutputModel');
251
251
  someOutputModel.addField('fieldOfModel').setType('string').setRequired();
252
- var someGerenalModel = service.addGeneralModel('someGerenalModel');
252
+ const someGerenalModel = service.addGeneralModel('someGerenalModel');
253
253
  someGerenalModel.addModelField('someOutputModel', 'objectField').setRequired();
254
- var someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
254
+ const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
255
255
  someMethod.setExportedToApi();
256
- var someMethodReturn = someMethod.getReturnModel();
256
+ const someMethodReturn = someMethod.getReturnModel();
257
257
  someMethodReturn.addModelField('someGerenalModel', 'objectField').setRequired();
258
- var generalModels = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()).generalModels;
258
+ const { generalModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
259
259
  (0, jest_without_globals_1.expect)(generalModels).toIncludeSameMembers([someGerenalModel.build()]);
260
260
  });
261
- it('returns general model for return model with link to output model that itself has link to general model', function () {
262
- var service = new AdditionalServiceBuilder_1.default('someService', 'ru');
261
+ it('returns general model for return model with link to output model that itself has link to general model', () => {
262
+ const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
263
263
  addUnusedModels(service);
264
- var someGerenalModel = service.addGeneralModel('someGerenalModel');
264
+ const someGerenalModel = service.addGeneralModel('someGerenalModel');
265
265
  someGerenalModel.addField('fieldOfModel').setType('string').setRequired();
266
- var someOutputModel = service.addOutputModel('someOutputModel');
266
+ const someOutputModel = service.addOutputModel('someOutputModel');
267
267
  someOutputModel.addModelField('someGerenalModel', 'objectField').setRequired();
268
- var someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
268
+ const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
269
269
  someMethod.setExportedToApi();
270
- var someMethodReturn = someMethod.getReturnModel();
270
+ const someMethodReturn = someMethod.getReturnModel();
271
271
  someMethodReturn.addModelField('someOutputModel', 'objectField').setRequired();
272
- var generalModels = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()).generalModels;
272
+ const { generalModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
273
273
  (0, jest_without_globals_1.expect)(generalModels).toIncludeSameMembers([someGerenalModel.build()]);
274
274
  });
275
- it('returns empty array for return model with link to output model that itself has link to another output model', function () {
276
- var service = new AdditionalServiceBuilder_1.default('someService', 'ru');
275
+ it('returns empty array for return model with link to output model that itself has link to another output model', () => {
276
+ const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
277
277
  addUnusedModels(service);
278
- var someSecondOutputModel = service.addOutputModel('someSecondOutputModel');
278
+ const someSecondOutputModel = service.addOutputModel('someSecondOutputModel');
279
279
  someSecondOutputModel.addField('fieldOfModel').setType('string').setRequired();
280
- var someOutputModel = service.addOutputModel('someOutputModel');
280
+ const someOutputModel = service.addOutputModel('someOutputModel');
281
281
  someOutputModel.addModelField('someSecondOutputModel', 'objectField').setRequired();
282
- var someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
282
+ const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
283
283
  someMethod.setExportedToApi();
284
- var someMethodReturn = someMethod.getReturnModel();
284
+ const someMethodReturn = someMethod.getReturnModel();
285
285
  someMethodReturn.addModelField('someOutputModel', 'objectField').setRequired();
286
- var generalModels = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()).generalModels;
286
+ const { generalModels } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
287
287
  (0, jest_without_globals_1.expect)(generalModels).toBeEmpty();
288
288
  });
289
289
  });
290
- describe('for return and args model', function () {
291
- it('returns return model and general model for return model with link to general model', function () {
292
- var service = new AdditionalServiceBuilder_1.default('someService', 'ru');
290
+ describe('for return and args model', () => {
291
+ it('returns return model and general model for return model with link to general model', () => {
292
+ const service = new AdditionalServiceBuilder_1.default('someService', 'ru');
293
293
  addUnusedModels(service);
294
- var someGerenalModel = service.addGeneralModel('someGerenalModel');
294
+ const someGerenalModel = service.addGeneralModel('someGerenalModel');
295
295
  someGerenalModel.addField('fieldOfModel').setType('string').setRequired();
296
- var someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
296
+ const someMethod = service.addMethod('someMethod', buildedTypes_1.MethodType.Query, 'Some method');
297
297
  someMethod.setExportedToApi();
298
- var someMethodReturn = someMethod.getReturnModel();
298
+ const someMethodReturn = someMethod.getReturnModel();
299
299
  someMethodReturn.addModelField('someGerenalModel', 'objectField').setRequired();
300
- var someMethodArgs = someMethod.getArgsModel();
300
+ const someMethodArgs = someMethod.getArgsModel();
301
301
  someMethodArgs.addModelField('someGerenalModel', 'objectField').setRequired();
302
- var _a = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build()), inputModels = _a.inputModels, outputModels = _a.outputModels;
302
+ const { inputModels, outputModels, } = (0, getUsedModelsForService_1.getUsedModelsForService)(service.build());
303
303
  (0, jest_without_globals_1.expect)(inputModels).toIncludeSameMembers([someGerenalModel.build(), someMethodArgs.build()]);
304
304
  (0, jest_without_globals_1.expect)(outputModels).toIncludeSameMembers([someGerenalModel.build(), someMethodReturn.build()]);
305
305
  });
306
306
  });
307
307
  });
308
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0VXNlZE1vZGVsc0ZvclNlcnZpY2Uuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9wcm9qZWN0c0dlbmVyYXRpb24vZ2VuZXJhdG9ycy9ncmFwaC91dGlscy9zZXJ2aWNlTW9kZWxzL2dldFVzZWRNb2RlbHNGb3JTZXJ2aWNlLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2REFBNkM7QUFDN0MscUVBQW1FO0FBQ25FLGtFQUErRDtBQUMvRCwyR0FBcUY7QUFFckYsc0RBQXNEO0FBRXRELElBQU0sZUFBZSxHQUFHLFVBQUMsT0FBaUM7SUFDeEQsSUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDekUsa0JBQWtCLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUU1RSxJQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNuRSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRTFFLElBQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3RFLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDN0UsQ0FBQyxDQUFBO0FBRUQsUUFBUSxDQUFDLHlCQUF5QixFQUFFO0lBQ2xDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtRQUN6QixFQUFFLENBQUMsMEVBQTBFLEVBQUU7WUFDN0UsSUFBTSxPQUFPLEdBQUcsSUFBSSxrQ0FBd0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxD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
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0VXNlZE1vZGVsc0ZvclNlcnZpY2Uuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9wcm9qZWN0c0dlbmVyYXRpb24vZ2VuZXJhdG9ycy9ncmFwaC91dGlscy9zZXJ2aWNlTW9kZWxzL2dldFVzZWRNb2RlbHNGb3JTZXJ2aWNlLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrREFBNkM7QUFDN0MsdUVBQW1FO0FBQ25FLG9FQUErRDtBQUMvRCw2R0FBcUY7QUFFckYsc0RBQXNEO0FBRXRELE1BQU0sZUFBZSxHQUFHLENBQUMsT0FBaUMsRUFBRSxFQUFFO0lBQzVELE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3pFLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFNUUsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDbkUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUUxRSxNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN0RSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQzdFLENBQUMsQ0FBQTtBQUVELFFBQVEsQ0FBQyx5QkFBeUIsRUFBRSxHQUFHLEVBQUU7SUFDdkMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtRQUM5QixFQUFFLENBQUMsMEVBQTBFLEVBQUUsR0FBRyxFQUFFO1lBQ2xGLE1BQU0sT0FB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