runlify 0.0.792 → 0.0.794

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 (145) hide show
  1. package/build/commands/regen.js +31 -17
  2. package/build/extensions/localConfig.js +25 -3
  3. package/build/index.js +8 -2
  4. package/build/projectsGeneration/args.js +3 -2
  5. package/build/projectsGeneration/builders/GenerationPathsBuilder.js +19 -0
  6. package/build/projectsGeneration/builders/SystemMetaBuilder.js +7 -1
  7. package/build/projectsGeneration/builders/buildedTypes.js +1 -1
  8. package/build/projectsGeneration/builders/generationPaths.js +832 -0
  9. package/build/projectsGeneration/builders/index.js +5 -1
  10. package/build/projectsGeneration/fileCleaners/back/graphServices/cleanGraphServices.js +11 -2
  11. package/build/projectsGeneration/fileCleaners/back/services/cleanServices.js +10 -2
  12. package/build/projectsGeneration/fileCleaners/ui/pages/cleanPages.js +13 -2
  13. package/build/projectsGeneration/fileCleaners/ui/widgets/cleanWidgets.js +7 -3
  14. package/build/projectsGeneration/generateProject/back/docs/generateBackDocs.js +22 -14
  15. package/build/projectsGeneration/generateProject/back/generateBackEnvs.js +9 -3
  16. package/build/projectsGeneration/generateProject/back/src/additionalServices/generateBackAdditionalService.js +21 -12
  17. package/build/projectsGeneration/generateProject/back/src/additionalServices/generateBackAdditionalServices.js +9 -6
  18. package/build/projectsGeneration/generateProject/back/src/enums/generateBackEnumsAndInits.js +23 -14
  19. package/build/projectsGeneration/generateProject/back/src/generateBackHelpService.js +13 -6
  20. package/build/projectsGeneration/generateProject/back/src/generateBackIntegrationClients.js +17 -9
  21. package/build/projectsGeneration/generateProject/back/src/generateBackSrc.js +12 -6
  22. package/build/projectsGeneration/generateProject/back/src/services/generateBackEntityGraph.js +17 -11
  23. package/build/projectsGeneration/generateProject/back/src/services/generateBackEntityService.js +27 -25
  24. package/build/projectsGeneration/generateProject/back/src/services/generateBackServices.js +11 -5
  25. package/build/projectsGeneration/generateProject/front/entity/generateFrontSrcEntityIcon.js +13 -4
  26. package/build/projectsGeneration/generateProject/front/entity/generateFrontSrcEntityPages.js +37 -30
  27. package/build/projectsGeneration/generateProject/front/entity/generateFrontSrcEntityWidgets.js +12 -12
  28. package/build/projectsGeneration/generateProject/front/entity/generateFrontSrcGetEntityValidation.js +13 -4
  29. package/build/projectsGeneration/generateProject/front/generateFrontSrc.js +23 -17
  30. package/build/projectsGeneration/generateProject/front/translations/generateFrontSrcTranslations.js +14 -12
  31. package/build/projectsGeneration/generateProject/genGraphSchemesByLocalGenerator.js +36 -5
  32. package/build/projectsGeneration/generateProject/generateBackClickHouseBootstrap.js +9 -3
  33. package/build/projectsGeneration/generateProject/generateBackElasticBootstrap.js +9 -3
  34. package/build/projectsGeneration/generateProject/generateEnvironment.js +53 -61
  35. package/build/projectsGeneration/generateProject/generateProject.js +2 -2
  36. package/build/projectsGeneration/index.js +2 -1
  37. package/build/projectsGeneration/resolveProjectPaths.js +155 -0
  38. package/build/projectsGeneration/types.js +9 -2
  39. package/build/types/index.d.ts +2 -0
  40. package/build/types/projectsGeneration/builders/GenerationPathsBuilder.d.ts +6 -0
  41. package/build/types/projectsGeneration/builders/SystemMetaBuilder.d.ts +3 -0
  42. package/build/types/projectsGeneration/builders/buildedTypes.d.ts +2 -0
  43. package/build/types/projectsGeneration/builders/generationPaths.d.ts +763 -0
  44. package/build/types/projectsGeneration/builders/index.d.ts +2 -0
  45. package/build/types/projectsGeneration/generateProject/genGraphSchemesByLocalGenerator.d.ts +9 -1
  46. package/build/types/projectsGeneration/generators/fileTemplates/back/clickhouse/jobs.d.ts +12 -0
  47. package/build/types/projectsGeneration/generators/fileTemplates/back/elastic/jobs.d.ts +12 -0
  48. package/build/types/projectsGeneration/index.d.ts +1 -0
  49. package/build/types/projectsGeneration/resolveProjectPaths.d.ts +63 -0
  50. package/build/types/projectsGeneration/types.d.ts +6 -0
  51. package/package.json +1 -1
  52. package/build/documentation/algoritmToDoc.spec.js +0 -59
  53. package/build/documentation/curlExampleToText.spec.js +0 -91
  54. package/build/documentation/docToFlatDoc.spec.js +0 -222
  55. package/build/documentation/flatDocToText.spec.js +0 -84
  56. package/build/projectsGeneration/builders/tsFilterFields.spec.js +0 -47
  57. package/build/projectsGeneration/builders/validation/bigintValudationToYupAssertions.spec.js +0 -22
  58. package/build/projectsGeneration/builders/validation/floatValudationToYupAssertions.spec.js +0 -21
  59. package/build/projectsGeneration/builders/validation/intValudationToYupAssertions.spec.js +0 -24
  60. package/build/projectsGeneration/builders/validation/stringValudationToYupAssertions.spec.js +0 -21
  61. package/build/projectsGeneration/generators/fileTemplates/back/elastic/jobs.spec.js +0 -35
  62. package/build/projectsGeneration/generators/fileTemplates/back/environment/src/integrationClients/fieldToTsTypeFieldWithType.spec.js +0 -81
  63. package/build/projectsGeneration/generators/fileTemplates/back/services/additionalService/backAdditionalServiceTypesTmplInner.spec.js +0 -69
  64. package/build/projectsGeneration/generators/fileTemplates/back/services/additionalService/getMethodTypeForService.spec.js +0 -100
  65. package/build/projectsGeneration/generators/fileTemplates/back/services/additionalService/getMethodTypeForServiceReturn.spec.js +0 -58
  66. package/build/projectsGeneration/generators/graph/genGraphAdditionalServiceSchema.spec.js +0 -195
  67. package/build/projectsGeneration/generators/graph/genGraphCrudSchema.spec.js +0 -446
  68. package/build/projectsGeneration/generators/graph/genGraphFilterType.spec.js +0 -97
  69. package/build/projectsGeneration/generators/graph/genGraphType.spec.js +0 -43
  70. package/build/projectsGeneration/generators/graph/printGraphType.spec.js +0 -23
  71. package/build/projectsGeneration/generators/graph/utils/models/getModelInitOrder.spec.js +0 -77
  72. package/build/projectsGeneration/generators/graph/utils/models/getUniqModels.spec.js +0 -39
  73. package/build/projectsGeneration/generators/graph/utils/models/getUsedModels.spec.js +0 -113
  74. package/build/projectsGeneration/generators/graph/utils/serviceModels/augmentInputModelsByUsedAsInputGeneralModelsAndPostfixThemByInput.spec.js +0 -111
  75. package/build/projectsGeneration/generators/graph/utils/serviceModels/getGraphTypesFromInputOutputModels.spec.js +0 -117
  76. package/build/projectsGeneration/generators/graph/utils/serviceModels/getPreparedModelsForGraph.spec.js +0 -123
  77. package/build/projectsGeneration/generators/graph/utils/serviceModels/getUsedGraphModelsForService.spec.js +0 -25
  78. package/build/projectsGeneration/generators/graph/utils/serviceModels/getUsedModelsForService.spec.js +0 -287
  79. package/build/projectsGeneration/generators/graph/utils/serviceModels/prefixServiceModelsWithServiceName.spec.js +0 -111
  80. package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaDefault.spec.js +0 -60
  81. package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaFieldFromExternalEntity.spec.js +0 -17
  82. package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaIdField.spec.js +0 -48
  83. package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaLinkFields.spec.js +0 -85
  84. package/build/projectsGeneration/generators/prisma/scheme/fields/genPrismaScalarField.spec.js +0 -136
  85. package/build/projectsGeneration/generators/prisma/scheme/genPrismaConfig.spec.js +0 -28
  86. package/build/projectsGeneration/generators/prisma/scheme/genPrismaEntity.spec.js +0 -188
  87. package/build/projectsGeneration/generators/prisma/scheme/genPrismaSchemaForEntitiesWithClientAdnDb.spec.js +0 -99
  88. package/build/projectsGeneration/generators/ui/componentNames/edit/getCompNamesToEditLinkField.spec.js +0 -24
  89. package/build/projectsGeneration/generators/ui/componentNames/show/getCompNamesToShowLinkField.spec.js +0 -53
  90. package/build/projectsGeneration/generators/ui/getLinkShowComponent.spec.js +0 -42
  91. package/build/projectsGeneration/generators/ui/getScalarShowComponent.spec.js +0 -27
  92. package/build/projectsGeneration/links/getLinksFromExternalEntities.spec.js +0 -37
  93. package/build/projectsGeneration/links/getLinksOfEntities.spec.js +0 -95
  94. package/build/projectsGeneration/links/getLinksToExternalEntities.spec.js +0 -37
  95. package/build/projectsGeneration/modelsGeneration.serialization.spec.js +0 -96
  96. package/build/projectsGeneration/utils/buildPrismaCommands.spec.js +0 -58
  97. package/build/projectsGeneration/utils/detectPrismaMajorVersion.spec.js +0 -51
  98. package/build/refs/yup.spec.js +0 -60
  99. package/build/types/documentation/algoritmToDoc.spec.d.ts +0 -1
  100. package/build/types/documentation/curlExampleToText.spec.d.ts +0 -1
  101. package/build/types/documentation/docToFlatDoc.spec.d.ts +0 -1
  102. package/build/types/documentation/flatDocToText.spec.d.ts +0 -1
  103. package/build/types/projectsGeneration/builders/tsFilterFields.spec.d.ts +0 -1
  104. package/build/types/projectsGeneration/builders/validation/bigintValudationToYupAssertions.spec.d.ts +0 -1
  105. package/build/types/projectsGeneration/builders/validation/floatValudationToYupAssertions.spec.d.ts +0 -1
  106. package/build/types/projectsGeneration/builders/validation/intValudationToYupAssertions.spec.d.ts +0 -1
  107. package/build/types/projectsGeneration/builders/validation/stringValudationToYupAssertions.spec.d.ts +0 -1
  108. package/build/types/projectsGeneration/generators/fileTemplates/back/elastic/jobs.spec.d.ts +0 -1
  109. package/build/types/projectsGeneration/generators/fileTemplates/back/environment/src/integrationClients/fieldToTsTypeFieldWithType.spec.d.ts +0 -1
  110. package/build/types/projectsGeneration/generators/fileTemplates/back/services/additionalService/backAdditionalServiceTypesTmplInner.spec.d.ts +0 -1
  111. package/build/types/projectsGeneration/generators/fileTemplates/back/services/additionalService/getMethodTypeForService.spec.d.ts +0 -1
  112. package/build/types/projectsGeneration/generators/fileTemplates/back/services/additionalService/getMethodTypeForServiceReturn.spec.d.ts +0 -1
  113. package/build/types/projectsGeneration/generators/graph/genGraphAdditionalServiceSchema.spec.d.ts +0 -1
  114. package/build/types/projectsGeneration/generators/graph/genGraphCrudSchema.spec.d.ts +0 -1
  115. package/build/types/projectsGeneration/generators/graph/genGraphFilterType.spec.d.ts +0 -1
  116. package/build/types/projectsGeneration/generators/graph/genGraphType.spec.d.ts +0 -1
  117. package/build/types/projectsGeneration/generators/graph/printGraphType.spec.d.ts +0 -1
  118. package/build/types/projectsGeneration/generators/graph/utils/models/getModelInitOrder.spec.d.ts +0 -1
  119. package/build/types/projectsGeneration/generators/graph/utils/models/getUniqModels.spec.d.ts +0 -1
  120. package/build/types/projectsGeneration/generators/graph/utils/models/getUsedModels.spec.d.ts +0 -1
  121. package/build/types/projectsGeneration/generators/graph/utils/serviceModels/augmentInputModelsByUsedAsInputGeneralModelsAndPostfixThemByInput.spec.d.ts +0 -1
  122. package/build/types/projectsGeneration/generators/graph/utils/serviceModels/getGraphTypesFromInputOutputModels.spec.d.ts +0 -1
  123. package/build/types/projectsGeneration/generators/graph/utils/serviceModels/getPreparedModelsForGraph.spec.d.ts +0 -1
  124. package/build/types/projectsGeneration/generators/graph/utils/serviceModels/getUsedGraphModelsForService.spec.d.ts +0 -1
  125. package/build/types/projectsGeneration/generators/graph/utils/serviceModels/getUsedModelsForService.spec.d.ts +0 -1
  126. package/build/types/projectsGeneration/generators/graph/utils/serviceModels/prefixServiceModelsWithServiceName.spec.d.ts +0 -1
  127. package/build/types/projectsGeneration/generators/prisma/scheme/fields/genPrismaDefault.spec.d.ts +0 -1
  128. package/build/types/projectsGeneration/generators/prisma/scheme/fields/genPrismaFieldFromExternalEntity.spec.d.ts +0 -1
  129. package/build/types/projectsGeneration/generators/prisma/scheme/fields/genPrismaIdField.spec.d.ts +0 -1
  130. package/build/types/projectsGeneration/generators/prisma/scheme/fields/genPrismaLinkFields.spec.d.ts +0 -1
  131. package/build/types/projectsGeneration/generators/prisma/scheme/fields/genPrismaScalarField.spec.d.ts +0 -1
  132. package/build/types/projectsGeneration/generators/prisma/scheme/genPrismaConfig.spec.d.ts +0 -1
  133. package/build/types/projectsGeneration/generators/prisma/scheme/genPrismaEntity.spec.d.ts +0 -1
  134. package/build/types/projectsGeneration/generators/prisma/scheme/genPrismaSchemaForEntitiesWithClientAdnDb.spec.d.ts +0 -1
  135. package/build/types/projectsGeneration/generators/ui/componentNames/edit/getCompNamesToEditLinkField.spec.d.ts +0 -1
  136. package/build/types/projectsGeneration/generators/ui/componentNames/show/getCompNamesToShowLinkField.spec.d.ts +0 -1
  137. package/build/types/projectsGeneration/generators/ui/getLinkShowComponent.spec.d.ts +0 -1
  138. package/build/types/projectsGeneration/generators/ui/getScalarShowComponent.spec.d.ts +0 -1
  139. package/build/types/projectsGeneration/links/getLinksFromExternalEntities.spec.d.ts +0 -1
  140. package/build/types/projectsGeneration/links/getLinksOfEntities.spec.d.ts +0 -1
  141. package/build/types/projectsGeneration/links/getLinksToExternalEntities.spec.d.ts +0 -1
  142. package/build/types/projectsGeneration/modelsGeneration.serialization.spec.d.ts +0 -1
  143. package/build/types/projectsGeneration/utils/buildPrismaCommands.spec.d.ts +0 -1
  144. package/build/types/projectsGeneration/utils/detectPrismaMajorVersion.spec.d.ts +0 -1
  145. package/build/types/refs/yup.spec.d.ts +0 -1
@@ -0,0 +1,832 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveUiWidgetsDir = exports.resolveGenerationPath = exports.validateGenerationPathTemplate = exports.extractGenerationPathParams = exports.DEFAULT_GENERATION_PATHS = exports.GenerationPathParam = exports.GenerationPathCategory = exports.GenerationPathRoot = void 0;
4
+ const path_1 = require("path");
5
+ exports.GenerationPathRoot = {
6
+ back: 'back',
7
+ ui: 'ui',
8
+ shared: 'shared',
9
+ };
10
+ /**
11
+ * Единый источник правды по именам категорий.
12
+ * Паттерн как у Storage: const + typeof → union.
13
+ */
14
+ exports.GenerationPathCategory = {
15
+ BackHookBeforeCreate: 'back.hook.beforeCreate',
16
+ BackHookAfterCreate: 'back.hook.afterCreate',
17
+ BackHookBeforeUpdate: 'back.hook.beforeUpdate',
18
+ BackHookAfterUpdate: 'back.hook.afterUpdate',
19
+ BackHookBeforeDelete: 'back.hook.beforeDelete',
20
+ BackHookAfterDelete: 'back.hook.afterDelete',
21
+ BackHookBeforeUpsert: 'back.hook.beforeUpsert',
22
+ BackHookChangeListFilter: 'back.hook.changeListFilter',
23
+ BackHookAdditionalOperationsOnCreate: 'back.hook.additionalOperationsOnCreate',
24
+ BackHookAdditionalOperationsOnUpdate: 'back.hook.additionalOperationsOnUpdate',
25
+ BackHookAdditionalOperationsOnDelete: 'back.hook.additionalOperationsOnDelete',
26
+ BackHookTenantIdRequiredHooks: 'back.hook.tenantIdRequiredHooks',
27
+ BackHookInitUserHooks: 'back.hook.initUserHooks',
28
+ BackHookInitBuiltInHooks: 'back.hook.initBuiltInHooks',
29
+ BackServiceClass: 'back.service.class',
30
+ BackServiceAdditionalClass: 'back.service.additionalClass',
31
+ BackServiceConfig: 'back.service.config',
32
+ BackServiceBaseServices: 'back.service.baseServices',
33
+ BackServiceServiceConstrictors: 'back.service.serviceConstrictors',
34
+ UiPageShowMainTab: 'ui.page.show.MainTab',
35
+ UiPageShowDefaultMainTab: 'ui.page.show.DefaultMainTab',
36
+ UiPageShowDefaultEntityShow: 'ui.page.show.DefaultEntityShow',
37
+ UiPageShowDefaultActions: 'ui.page.show.DefaultActions',
38
+ UiPageShowIndex: 'ui.page.show.index',
39
+ UiPageShowAdditionalTabs: 'ui.page.show.additionalTabs',
40
+ UiPageShowDependencyTab: 'ui.page.show.dependencyTab',
41
+ UiPageCreateDefault: 'ui.page.create.Default',
42
+ UiPageCreateIndex: 'ui.page.create.index',
43
+ UiPageEditDefault: 'ui.page.edit.Default',
44
+ UiPageEditIndex: 'ui.page.edit.index',
45
+ UiPageListDefault: 'ui.page.list.Default',
46
+ UiPageListFilter: 'ui.page.list.filter',
47
+ UiPageListDefaultFilter: 'ui.page.list.DefaultFilter',
48
+ UiPageListBreadcrumbs: 'ui.page.list.breadcrumbs',
49
+ UiPageListIndex: 'ui.page.list.index',
50
+ UiPageIcon: 'ui.page.icon',
51
+ UiPageValidation: 'ui.page.validation',
52
+ UiWidgetCount: 'ui.widget.count',
53
+ UiWidgetList: 'ui.widget.list',
54
+ // —— graph ——
55
+ BackGraphEntityBaseTypeDefs: 'back.graph.entity.baseTypeDefs',
56
+ BackGraphEntityAdditionalTypeDefs: 'back.graph.entity.additionalTypeDefs',
57
+ BackGraphEntityBaseResolvers: 'back.graph.entity.baseResolvers',
58
+ BackGraphEntityAdditionalResolvers: 'back.graph.entity.additionalResolvers',
59
+ BackGraphEntityPermissionsToGraphql: 'back.graph.entity.permissionsToGraphql',
60
+ BackGraphEntityBasePermissionsToGraphql: 'back.graph.entity.basePermissionsToGraphql',
61
+ BackGraphEntityAdditionalPermissionsToGraphql: 'back.graph.entity.additionalPermissionsToGraphql',
62
+ BackGraphHelpBaseTypeDefs: 'back.graph.help.baseTypeDefs',
63
+ BackGraphHelpBaseResolvers: 'back.graph.help.baseResolvers',
64
+ BackGraphHelpPermissionsToGraphql: 'back.graph.help.permissionsToGraphql',
65
+ BackGraphPermissionsToGraphql: 'back.graph.permissionsToGraphql',
66
+ BackServiceHelpService: 'back.service.helpService',
67
+ BackGeneratedGraphqlTs: 'back.generated.graphqlTs',
68
+ BackGeneratedGraphqlSchemaJson: 'back.generated.graphqlSchemaJson',
69
+ UiGeneratedGraphqlTs: 'ui.generated.graphqlTs',
70
+ UiGeneratedGraphqlSchemaJson: 'ui.generated.graphqlSchemaJson',
71
+ SharedGraphqlSchemaJson: 'shared.generated.graphqlSchemaJson',
72
+ BackConfig: 'back.config',
73
+ BackRestRouter: 'back.rest.router',
74
+ // —— additional services ——
75
+ BackAdditionalServiceTypes: 'back.additionalService.types',
76
+ BackAdditionalServiceGraphTypeDefs: 'back.additionalService.graph.typeDefs',
77
+ BackAdditionalServiceGraphResolvers: 'back.additionalService.graph.resolvers',
78
+ BackAdditionalServiceGraphPermissionsToGraphql: 'back.additionalService.graph.permissionsToGraphql',
79
+ BackAdditionalServices: 'back.additionalServices',
80
+ // —— integration clients ——
81
+ BackIntegrationClientClass: 'back.integrationClient.class',
82
+ BackIntegrationClientTypes: 'back.integrationClient.types',
83
+ BackIntegrationClientConstrictors: 'back.integrationClient.constrictors',
84
+ BackIntegrationClients: 'back.integrationClients',
85
+ // —— i18n ——
86
+ UiI18nDocs: 'ui.i18n.docs',
87
+ UiI18nCatalogs: 'ui.i18n.catalogs',
88
+ UiI18nInfoRegistries: 'ui.i18n.infoRegistries',
89
+ UiI18nSumRegistries: 'ui.i18n.sumRegistries',
90
+ UiI18nReports: 'ui.i18n.reports',
91
+ // —— enums & inits ——
92
+ BackTypeEnum: 'back.type.enum',
93
+ BackTypeEntityEnum: 'back.type.entityEnum',
94
+ BackTypeDevEnum: 'back.type.devEnum',
95
+ BackInitCommonEnum: 'back.init.common.enum',
96
+ BackInitCommonEntities: 'back.init.common.entities',
97
+ BackInitDevEnum: 'back.init.dev.enum',
98
+ // —— ui adm shell ——
99
+ UiResources: 'ui.resources',
100
+ UiResourcesChunk0: 'ui.resourcesChunk0',
101
+ UiResourcesChunk1: 'ui.resourcesChunk1',
102
+ UiResourcesPage: 'ui.resourcesPage',
103
+ UiMetaPage: 'ui.metaPage',
104
+ UiEntityMapping: 'ui.entityMapping',
105
+ UiGetDefaultMenu: 'ui.getDefaultMenu',
106
+ UiGetAdditionalMenu: 'ui.getAdditionalMenu',
107
+ UiMenuIcons: 'ui.menuIcons',
108
+ UiAdditionalMenuIcons: 'ui.additionalMenuIcons',
109
+ UiRoutes: 'ui.routes',
110
+ UiAdditionalRoutes: 'ui.additionalRoutes',
111
+ UiFunctions: 'ui.functions',
112
+ UiDashboard: 'ui.dashboard',
113
+ // —— environment / prisma / chart / ci ——
114
+ BackClientsGetPrisma: 'back.clients.getPrisma',
115
+ BackClientsCreatePgPrismaClient: 'back.clients.createPgPrismaClient',
116
+ BackClientsGetQueue: 'back.clients.getQueue',
117
+ BackIndex: 'back.index',
118
+ BackTracing: 'back.tracing',
119
+ BackInitPrismaWriteClientPackageStubs: 'back.init.prisma.writeClientPackageStubs',
120
+ BackPrismaSchema: 'back.prisma.schema',
121
+ BackPrismaShardsSchema: 'back.prisma.shards.schema',
122
+ BackPrismaShardsDeployConnection: 'back.prisma.shards.deployConnection',
123
+ BackPrismaShardsConfig: 'back.prisma.shards.config',
124
+ BackPrismaShardsDeployConfig: 'back.prisma.shards.deployConfig',
125
+ BackPrismaDeployConnection: 'back.prisma.deployConnection',
126
+ BackPrismaConfig: 'back.prisma.config',
127
+ BackPrismaDeployConfig: 'back.prisma.deployConfig',
128
+ BackPrismaDatabaseSchema: 'back.prisma.database.schema',
129
+ BackPrismaDatabaseDeployConnection: 'back.prisma.database.deployConnection',
130
+ BackPrismaDatabaseConfig: 'back.prisma.database.config',
131
+ BackPrismaDatabaseDeployConfig: 'back.prisma.database.deployConfig',
132
+ BackPrismaDatabaseMigrationLock: 'back.prisma.database.migrationLock',
133
+ BackChartChart: 'back.chart.chart',
134
+ BackChartValues: 'back.chart.values',
135
+ BackChartIngress: 'back.chart.ingress',
136
+ BackChartBack: 'back.chart.back',
137
+ BackGitlabCi: 'back.gitlabCi',
138
+ BackCiNotify: 'back.ciNotify',
139
+ BackDockerfile: 'back.dockerfile',
140
+ UiApp: 'ui.app',
141
+ UiLayoutMenu: 'ui.layout.menu',
142
+ UiLayoutAppBar: 'ui.layout.appBar',
143
+ UiSpacesContext: 'ui.contexts.spacesContext',
144
+ UiDataProvider: 'ui.dataProvider',
145
+ UiDataProviderGetAdditionalMethods: 'ui.dataProvider.getAdditionalMethods',
146
+ UiI18nProvider: 'ui.i18nProvider',
147
+ UiChartChart: 'ui.chart.chart',
148
+ UiChartValues: 'ui.chart.values',
149
+ UiChartFront: 'ui.chart.front',
150
+ UiChartIngress: 'ui.chart.ingress',
151
+ UiGitlabCi: 'ui.gitlabCi',
152
+ UiCiNotify: 'ui.ciNotify',
153
+ UiDockerfile: 'ui.dockerfile',
154
+ // —— config / docs / bootstrap ——
155
+ BackConfigDefaultJson: 'back.config.defaultJson',
156
+ BackDocsConfiguration: 'back.docs.configuration',
157
+ BackDocsSpec: 'back.docs.spec',
158
+ BackDocsRestApi: 'back.docs.restApi',
159
+ BackDocsIntegrationClient: 'back.docs.integrationClient',
160
+ BackDocsEntity: 'back.docs.entity',
161
+ UiDocsConfiguration: 'ui.docs.configuration',
162
+ BackInitElasticGenJobs: 'back.init.elastic.genJobs',
163
+ BackInitClickHouseGenJobs: 'back.init.clickhouse.genJobs',
164
+ };
165
+ exports.GenerationPathParam = {
166
+ entityName: 'entityName',
167
+ ServiceName: 'ServiceName',
168
+ pascalSingular: 'pascalSingular',
169
+ PascalEntity: 'PascalEntity',
170
+ camelPlural: 'camelPlural',
171
+ OwnerPascal: 'OwnerPascal',
172
+ FromFieldPascal: 'FromFieldPascal',
173
+ serviceName: 'serviceName',
174
+ ServicePascal: 'ServicePascal',
175
+ clientName: 'clientName',
176
+ ClientPascal: 'ClientPascal',
177
+ restApiName: 'restApiName',
178
+ entityTypePlural: 'entityTypePlural',
179
+ langId: 'langId',
180
+ database: 'database',
181
+ };
182
+ const PLACEHOLDER_RE = /\{(\w+)\}/g;
183
+ const generationPathParamValues = new Set(Object.values(exports.GenerationPathParam));
184
+ const serviceNameParams = [exports.GenerationPathParam.ServiceName];
185
+ const uiPageParams = [
186
+ exports.GenerationPathParam.entityName,
187
+ exports.GenerationPathParam.pascalSingular,
188
+ ];
189
+ const backHook = (hookFile) => ({
190
+ root: 'back',
191
+ defaultTemplate: `src/adm/services/{ServiceName}/hooks/${hookFile}.ts`,
192
+ params: serviceNameParams,
193
+ });
194
+ const uiPage = (defaultTemplate, params = uiPageParams) => ({
195
+ root: 'ui',
196
+ defaultTemplate,
197
+ params,
198
+ });
199
+ const camelPluralParams = [exports.GenerationPathParam.camelPlural];
200
+ const backGraphEntity = (file) => ({
201
+ root: 'back',
202
+ defaultTemplate: `src/adm/graph/services/{camelPlural}/${file}.ts`,
203
+ params: camelPluralParams,
204
+ });
205
+ exports.DEFAULT_GENERATION_PATHS = {
206
+ [exports.GenerationPathCategory.BackHookBeforeCreate]: backHook('beforeCreate'),
207
+ [exports.GenerationPathCategory.BackHookAfterCreate]: backHook('afterCreate'),
208
+ [exports.GenerationPathCategory.BackHookBeforeUpdate]: backHook('beforeUpdate'),
209
+ [exports.GenerationPathCategory.BackHookAfterUpdate]: backHook('afterUpdate'),
210
+ [exports.GenerationPathCategory.BackHookBeforeDelete]: backHook('beforeDelete'),
211
+ [exports.GenerationPathCategory.BackHookAfterDelete]: backHook('afterDelete'),
212
+ [exports.GenerationPathCategory.BackHookBeforeUpsert]: backHook('beforeUpsert'),
213
+ [exports.GenerationPathCategory.BackHookChangeListFilter]: backHook('changeListFilter'),
214
+ [exports.GenerationPathCategory.BackHookAdditionalOperationsOnCreate]: backHook('additionalOperationsOnCreate'),
215
+ [exports.GenerationPathCategory.BackHookAdditionalOperationsOnUpdate]: backHook('additionalOperationsOnUpdate'),
216
+ [exports.GenerationPathCategory.BackHookAdditionalOperationsOnDelete]: backHook('additionalOperationsOnDelete'),
217
+ [exports.GenerationPathCategory.BackHookTenantIdRequiredHooks]: backHook('tenantIdRequiredHooks'),
218
+ [exports.GenerationPathCategory.BackHookInitUserHooks]: {
219
+ root: 'back',
220
+ defaultTemplate: 'src/adm/services/{ServiceName}/initUserHooks.ts',
221
+ params: serviceNameParams,
222
+ },
223
+ [exports.GenerationPathCategory.BackHookInitBuiltInHooks]: {
224
+ root: 'back',
225
+ defaultTemplate: 'src/adm/services/{ServiceName}/initBuiltInHooks.ts',
226
+ params: serviceNameParams,
227
+ },
228
+ [exports.GenerationPathCategory.BackServiceClass]: {
229
+ root: 'back',
230
+ defaultTemplate: 'src/adm/services/{ServiceName}/{ServiceName}.ts',
231
+ params: serviceNameParams,
232
+ },
233
+ [exports.GenerationPathCategory.BackServiceAdditionalClass]: {
234
+ root: 'back',
235
+ defaultTemplate: 'src/adm/services/{ServiceName}/Additional{ServiceName}.ts',
236
+ params: serviceNameParams,
237
+ },
238
+ [exports.GenerationPathCategory.BackServiceConfig]: {
239
+ root: 'back',
240
+ defaultTemplate: 'src/adm/services/{ServiceName}/config.ts',
241
+ params: serviceNameParams,
242
+ },
243
+ [exports.GenerationPathCategory.BackServiceBaseServices]: {
244
+ root: 'back',
245
+ defaultTemplate: 'src/adm/services/BaseServices.ts',
246
+ params: [],
247
+ },
248
+ [exports.GenerationPathCategory.BackServiceServiceConstrictors]: {
249
+ root: 'back',
250
+ defaultTemplate: 'src/adm/services/serviceConstrictors.ts',
251
+ params: [],
252
+ },
253
+ [exports.GenerationPathCategory.UiPageShowMainTab]: uiPage('src/adm/pages/{entityName}/{pascalSingular}Show/MainTab.tsx'),
254
+ [exports.GenerationPathCategory.UiPageShowDefaultMainTab]: uiPage('src/adm/pages/{entityName}/{pascalSingular}Show/DefaultMainTab.tsx'),
255
+ [exports.GenerationPathCategory.UiPageShowDefaultEntityShow]: uiPage('src/adm/pages/{entityName}/{pascalSingular}Show/Default{pascalSingular}Show.tsx'),
256
+ [exports.GenerationPathCategory.UiPageShowDefaultActions]: uiPage('src/adm/pages/{entityName}/{pascalSingular}Show/DefaultActions.tsx'),
257
+ [exports.GenerationPathCategory.UiPageShowIndex]: uiPage('src/adm/pages/{entityName}/{pascalSingular}Show/index.tsx'),
258
+ [exports.GenerationPathCategory.UiPageShowAdditionalTabs]: uiPage('src/adm/pages/{entityName}/{pascalSingular}Show/additionalTabs.tsx'),
259
+ [exports.GenerationPathCategory.UiPageShowDependencyTab]: uiPage('src/adm/pages/{entityName}/{pascalSingular}Show/tabs/{OwnerPascal}{FromFieldPascal}Tab.tsx', [
260
+ exports.GenerationPathParam.entityName,
261
+ exports.GenerationPathParam.pascalSingular,
262
+ exports.GenerationPathParam.OwnerPascal,
263
+ exports.GenerationPathParam.FromFieldPascal,
264
+ ]),
265
+ [exports.GenerationPathCategory.UiPageCreateDefault]: uiPage('src/adm/pages/{entityName}/{pascalSingular}Create/Default{pascalSingular}Create.tsx'),
266
+ [exports.GenerationPathCategory.UiPageCreateIndex]: uiPage('src/adm/pages/{entityName}/{pascalSingular}Create/index.tsx'),
267
+ [exports.GenerationPathCategory.UiPageEditDefault]: uiPage('src/adm/pages/{entityName}/{pascalSingular}Edit/Default{pascalSingular}Edit.tsx'),
268
+ [exports.GenerationPathCategory.UiPageEditIndex]: uiPage('src/adm/pages/{entityName}/{pascalSingular}Edit/index.tsx'),
269
+ [exports.GenerationPathCategory.UiPageListDefault]: uiPage('src/adm/pages/{entityName}/{pascalSingular}List/Default{pascalSingular}List.tsx'),
270
+ [exports.GenerationPathCategory.UiPageListFilter]: uiPage('src/adm/pages/{entityName}/{pascalSingular}List/{pascalSingular}Filter.tsx'),
271
+ [exports.GenerationPathCategory.UiPageListDefaultFilter]: uiPage('src/adm/pages/{entityName}/{pascalSingular}List/Default{pascalSingular}Filter.tsx'),
272
+ [exports.GenerationPathCategory.UiPageListBreadcrumbs]: uiPage('src/adm/pages/{entityName}/{pascalSingular}List/{pascalSingular}ListBreadcrumbs.tsx'),
273
+ [exports.GenerationPathCategory.UiPageListIndex]: uiPage('src/adm/pages/{entityName}/{pascalSingular}List/index.tsx'),
274
+ [exports.GenerationPathCategory.UiPageIcon]: uiPage('src/adm/pages/{entityName}/{pascalSingular}Icon.tsx'),
275
+ [exports.GenerationPathCategory.UiPageValidation]: uiPage('src/adm/pages/{entityName}/get{pascalSingular}Validation.tsx'),
276
+ [exports.GenerationPathCategory.UiWidgetCount]: {
277
+ root: 'ui',
278
+ defaultTemplate: 'src/adm/widgets/count/Count{PascalEntity}Widget.tsx',
279
+ params: [exports.GenerationPathParam.PascalEntity],
280
+ },
281
+ [exports.GenerationPathCategory.UiWidgetList]: {
282
+ root: 'ui',
283
+ defaultTemplate: 'src/adm/widgets/list/List{PascalEntity}Widget.tsx',
284
+ params: [exports.GenerationPathParam.PascalEntity],
285
+ },
286
+ [exports.GenerationPathCategory.BackGraphEntityBaseTypeDefs]: backGraphEntity('baseTypeDefs'),
287
+ [exports.GenerationPathCategory.BackGraphEntityAdditionalTypeDefs]: backGraphEntity('additionalTypeDefs'),
288
+ [exports.GenerationPathCategory.BackGraphEntityBaseResolvers]: backGraphEntity('baseResolvers'),
289
+ [exports.GenerationPathCategory.BackGraphEntityAdditionalResolvers]: backGraphEntity('additionalResolvers'),
290
+ [exports.GenerationPathCategory.BackGraphEntityPermissionsToGraphql]: backGraphEntity('permissionsToGraphql'),
291
+ [exports.GenerationPathCategory.BackGraphEntityBasePermissionsToGraphql]: backGraphEntity('basePermissionsToGraphql'),
292
+ [exports.GenerationPathCategory.BackGraphEntityAdditionalPermissionsToGraphql]: backGraphEntity('additionalPermissionsToGraphql'),
293
+ [exports.GenerationPathCategory.BackGraphHelpBaseTypeDefs]: {
294
+ root: 'back',
295
+ defaultTemplate: 'src/adm/graph/services/help/baseTypeDefs.ts',
296
+ params: [],
297
+ },
298
+ [exports.GenerationPathCategory.BackGraphHelpBaseResolvers]: {
299
+ root: 'back',
300
+ defaultTemplate: 'src/adm/graph/services/help/baseResolvers.ts',
301
+ params: [],
302
+ },
303
+ [exports.GenerationPathCategory.BackGraphHelpPermissionsToGraphql]: {
304
+ root: 'back',
305
+ defaultTemplate: 'src/adm/graph/services/help/permissionsToGraphql.ts',
306
+ params: [],
307
+ },
308
+ [exports.GenerationPathCategory.BackGraphPermissionsToGraphql]: {
309
+ root: 'back',
310
+ defaultTemplate: 'src/adm/graph/permissionsToGraphql.ts',
311
+ params: [],
312
+ },
313
+ [exports.GenerationPathCategory.BackServiceHelpService]: {
314
+ root: 'back',
315
+ defaultTemplate: 'src/adm/services/HelpService/HelpService.ts',
316
+ params: [],
317
+ },
318
+ [exports.GenerationPathCategory.BackGeneratedGraphqlTs]: {
319
+ root: 'back',
320
+ defaultTemplate: 'src/generated/graphql.ts',
321
+ params: [],
322
+ },
323
+ [exports.GenerationPathCategory.BackGeneratedGraphqlSchemaJson]: {
324
+ root: 'back',
325
+ defaultTemplate: 'src/generated/graphql.schema.json',
326
+ params: [],
327
+ },
328
+ [exports.GenerationPathCategory.UiGeneratedGraphqlTs]: {
329
+ root: 'ui',
330
+ defaultTemplate: 'src/generated/graphql.ts',
331
+ params: [],
332
+ },
333
+ [exports.GenerationPathCategory.UiGeneratedGraphqlSchemaJson]: {
334
+ root: 'ui',
335
+ defaultTemplate: 'src/generated/graphql.schema.json',
336
+ params: [],
337
+ },
338
+ [exports.GenerationPathCategory.SharedGraphqlSchemaJson]: {
339
+ root: 'shared',
340
+ defaultTemplate: 'src/graphql.schema.json',
341
+ params: [],
342
+ },
343
+ [exports.GenerationPathCategory.BackConfig]: {
344
+ root: 'back',
345
+ defaultTemplate: 'src/config/config.ts',
346
+ params: [],
347
+ },
348
+ [exports.GenerationPathCategory.BackRestRouter]: {
349
+ root: 'back',
350
+ defaultTemplate: 'src/rest/restRouter.ts',
351
+ params: [],
352
+ },
353
+ [exports.GenerationPathCategory.BackAdditionalServiceTypes]: {
354
+ root: 'back',
355
+ defaultTemplate: 'src/adm/services/{ServiceName}/types.ts',
356
+ params: serviceNameParams,
357
+ },
358
+ [exports.GenerationPathCategory.BackAdditionalServiceGraphTypeDefs]: {
359
+ root: 'back',
360
+ defaultTemplate: 'src/adm/graph/services/{serviceName}/typeDefs.ts',
361
+ params: [exports.GenerationPathParam.serviceName],
362
+ },
363
+ [exports.GenerationPathCategory.BackAdditionalServiceGraphResolvers]: {
364
+ root: 'back',
365
+ defaultTemplate: 'src/adm/graph/services/{serviceName}/resolvers.ts',
366
+ params: [exports.GenerationPathParam.serviceName],
367
+ },
368
+ [exports.GenerationPathCategory.BackAdditionalServiceGraphPermissionsToGraphql]: {
369
+ root: 'back',
370
+ defaultTemplate: 'src/adm/graph/services/{serviceName}/permissionsToGraphql.ts',
371
+ params: [exports.GenerationPathParam.serviceName],
372
+ },
373
+ [exports.GenerationPathCategory.BackAdditionalServices]: {
374
+ root: 'back',
375
+ defaultTemplate: 'src/adm/services/AdditionalServices.ts',
376
+ params: [],
377
+ },
378
+ [exports.GenerationPathCategory.BackIntegrationClientClass]: {
379
+ root: 'back',
380
+ defaultTemplate: 'src/integrationClients/{clientName}/{ClientPascal}Client.ts',
381
+ params: [exports.GenerationPathParam.clientName, exports.GenerationPathParam.ClientPascal],
382
+ },
383
+ [exports.GenerationPathCategory.BackIntegrationClientTypes]: {
384
+ root: 'back',
385
+ defaultTemplate: 'src/integrationClients/{clientName}/types.ts',
386
+ params: [exports.GenerationPathParam.clientName],
387
+ },
388
+ [exports.GenerationPathCategory.BackIntegrationClientConstrictors]: {
389
+ root: 'back',
390
+ defaultTemplate: 'src/adm/services/integrationClientConstrictors.ts',
391
+ params: [],
392
+ },
393
+ [exports.GenerationPathCategory.BackIntegrationClients]: {
394
+ root: 'back',
395
+ defaultTemplate: 'src/adm/services/IntegrationClients.ts',
396
+ params: [],
397
+ },
398
+ [exports.GenerationPathCategory.UiI18nDocs]: {
399
+ root: 'ui',
400
+ defaultTemplate: 'src/i18n/{langId}/{langId}Docs.ts',
401
+ params: [exports.GenerationPathParam.langId],
402
+ },
403
+ [exports.GenerationPathCategory.UiI18nCatalogs]: {
404
+ root: 'ui',
405
+ defaultTemplate: 'src/i18n/{langId}/{langId}Catalogs.ts',
406
+ params: [exports.GenerationPathParam.langId],
407
+ },
408
+ [exports.GenerationPathCategory.UiI18nInfoRegistries]: {
409
+ root: 'ui',
410
+ defaultTemplate: 'src/i18n/{langId}/{langId}InfoRegistries.ts',
411
+ params: [exports.GenerationPathParam.langId],
412
+ },
413
+ [exports.GenerationPathCategory.UiI18nSumRegistries]: {
414
+ root: 'ui',
415
+ defaultTemplate: 'src/i18n/{langId}/{langId}SumRegistries.ts',
416
+ params: [exports.GenerationPathParam.langId],
417
+ },
418
+ [exports.GenerationPathCategory.UiI18nReports]: {
419
+ root: 'ui',
420
+ defaultTemplate: 'src/i18n/{langId}/{langId}Reports.ts',
421
+ params: [exports.GenerationPathParam.langId],
422
+ },
423
+ [exports.GenerationPathCategory.BackTypeEnum]: {
424
+ root: 'back',
425
+ defaultTemplate: 'src/types/{pascalSingular}.ts',
426
+ params: [exports.GenerationPathParam.pascalSingular],
427
+ },
428
+ [exports.GenerationPathCategory.BackTypeEntityEnum]: {
429
+ root: 'back',
430
+ defaultTemplate: 'src/types/Entity.ts',
431
+ params: [],
432
+ },
433
+ [exports.GenerationPathCategory.BackTypeDevEnum]: {
434
+ root: 'back',
435
+ defaultTemplate: 'src/types/Dev{pascalSingular}.ts',
436
+ params: [exports.GenerationPathParam.pascalSingular],
437
+ },
438
+ [exports.GenerationPathCategory.BackInitCommonEnum]: {
439
+ root: 'back',
440
+ defaultTemplate: 'src/init/common/init{PascalEntity}.ts',
441
+ params: [exports.GenerationPathParam.PascalEntity],
442
+ },
443
+ [exports.GenerationPathCategory.BackInitCommonEntities]: {
444
+ root: 'back',
445
+ defaultTemplate: 'src/init/common/initEntities.ts',
446
+ params: [],
447
+ },
448
+ [exports.GenerationPathCategory.BackInitDevEnum]: {
449
+ root: 'back',
450
+ defaultTemplate: 'src/init/dev/init{PascalEntity}.ts',
451
+ params: [exports.GenerationPathParam.PascalEntity],
452
+ },
453
+ [exports.GenerationPathCategory.UiResources]: {
454
+ root: 'ui',
455
+ defaultTemplate: 'src/adm/resources.tsx',
456
+ params: [],
457
+ },
458
+ [exports.GenerationPathCategory.UiResourcesChunk0]: {
459
+ root: 'ui',
460
+ defaultTemplate: 'src/adm/resourcesChunk0.tsx',
461
+ params: [],
462
+ },
463
+ [exports.GenerationPathCategory.UiResourcesChunk1]: {
464
+ root: 'ui',
465
+ defaultTemplate: 'src/adm/resourcesChunk1.tsx',
466
+ params: [],
467
+ },
468
+ [exports.GenerationPathCategory.UiResourcesPage]: {
469
+ root: 'ui',
470
+ defaultTemplate: 'src/adm/ResourcesPage.tsx',
471
+ params: [],
472
+ },
473
+ [exports.GenerationPathCategory.UiMetaPage]: {
474
+ root: 'ui',
475
+ defaultTemplate: 'src/adm/MetaPage.tsx',
476
+ params: [],
477
+ },
478
+ [exports.GenerationPathCategory.UiEntityMapping]: {
479
+ root: 'ui',
480
+ defaultTemplate: 'src/adm/entityMapping.ts',
481
+ params: [],
482
+ },
483
+ [exports.GenerationPathCategory.UiGetDefaultMenu]: {
484
+ root: 'ui',
485
+ defaultTemplate: 'src/adm/getDefaultMenu.ts',
486
+ params: [],
487
+ },
488
+ [exports.GenerationPathCategory.UiGetAdditionalMenu]: {
489
+ root: 'ui',
490
+ defaultTemplate: 'src/adm/getAdditionalMenu.ts',
491
+ params: [],
492
+ },
493
+ [exports.GenerationPathCategory.UiMenuIcons]: {
494
+ root: 'ui',
495
+ defaultTemplate: 'src/uiLib/menu/menuIcons.ts',
496
+ params: [],
497
+ },
498
+ [exports.GenerationPathCategory.UiAdditionalMenuIcons]: {
499
+ root: 'ui',
500
+ defaultTemplate: 'src/adm/additionalMenuIcons.ts',
501
+ params: [],
502
+ },
503
+ [exports.GenerationPathCategory.UiRoutes]: {
504
+ root: 'ui',
505
+ defaultTemplate: 'src/adm/routes.tsx',
506
+ params: [],
507
+ },
508
+ [exports.GenerationPathCategory.UiAdditionalRoutes]: {
509
+ root: 'ui',
510
+ defaultTemplate: 'src/adm/additionalRoutes.tsx',
511
+ params: [],
512
+ },
513
+ [exports.GenerationPathCategory.UiFunctions]: {
514
+ root: 'ui',
515
+ defaultTemplate: 'src/adm/functions/Functions.tsx',
516
+ params: [],
517
+ },
518
+ [exports.GenerationPathCategory.UiDashboard]: {
519
+ root: 'ui',
520
+ defaultTemplate: 'src/adm/Dashboard.tsx',
521
+ params: [],
522
+ },
523
+ [exports.GenerationPathCategory.BackClientsGetPrisma]: {
524
+ root: 'back',
525
+ defaultTemplate: 'src/clients/getPrisma.ts',
526
+ params: [],
527
+ },
528
+ [exports.GenerationPathCategory.BackClientsCreatePgPrismaClient]: {
529
+ root: 'back',
530
+ defaultTemplate: 'src/clients/createPgPrismaClient.ts',
531
+ params: [],
532
+ },
533
+ [exports.GenerationPathCategory.BackClientsGetQueue]: {
534
+ root: 'back',
535
+ defaultTemplate: 'src/clients/queue/getQueue.ts',
536
+ params: [],
537
+ },
538
+ [exports.GenerationPathCategory.BackIndex]: {
539
+ root: 'back',
540
+ defaultTemplate: 'src/index.ts',
541
+ params: [],
542
+ },
543
+ [exports.GenerationPathCategory.BackTracing]: {
544
+ root: 'back',
545
+ defaultTemplate: 'src/tracing.ts',
546
+ params: [],
547
+ },
548
+ [exports.GenerationPathCategory.BackInitPrismaWriteClientPackageStubs]: {
549
+ root: 'back',
550
+ defaultTemplate: 'src/init/prisma/writeClientPackageStubs.ts',
551
+ params: [],
552
+ },
553
+ [exports.GenerationPathCategory.BackPrismaSchema]: {
554
+ root: 'back',
555
+ defaultTemplate: 'prisma/schema.prisma',
556
+ params: [],
557
+ },
558
+ [exports.GenerationPathCategory.BackPrismaShardsSchema]: {
559
+ root: 'back',
560
+ defaultTemplate: 'prisma/shards/schema.prisma',
561
+ params: [],
562
+ },
563
+ [exports.GenerationPathCategory.BackPrismaShardsDeployConnection]: {
564
+ root: 'back',
565
+ defaultTemplate: 'prisma/shards/deployConnection.prisma',
566
+ params: [],
567
+ },
568
+ [exports.GenerationPathCategory.BackPrismaShardsConfig]: {
569
+ root: 'back',
570
+ defaultTemplate: 'prisma/shards/prisma.config.ts',
571
+ params: [],
572
+ },
573
+ [exports.GenerationPathCategory.BackPrismaShardsDeployConfig]: {
574
+ root: 'back',
575
+ defaultTemplate: 'prisma/shards/deploy.prisma.config.ts',
576
+ params: [],
577
+ },
578
+ [exports.GenerationPathCategory.BackPrismaDeployConnection]: {
579
+ root: 'back',
580
+ defaultTemplate: 'prisma/deployConnection.prisma',
581
+ params: [],
582
+ },
583
+ [exports.GenerationPathCategory.BackPrismaConfig]: {
584
+ root: 'back',
585
+ defaultTemplate: 'prisma/prisma.config.ts',
586
+ params: [],
587
+ },
588
+ [exports.GenerationPathCategory.BackPrismaDeployConfig]: {
589
+ root: 'back',
590
+ defaultTemplate: 'prisma/deploy.prisma.config.ts',
591
+ params: [],
592
+ },
593
+ [exports.GenerationPathCategory.BackPrismaDatabaseSchema]: {
594
+ root: 'back',
595
+ defaultTemplate: 'prisma/databases/{database}/schema.prisma',
596
+ params: [exports.GenerationPathParam.database],
597
+ },
598
+ [exports.GenerationPathCategory.BackPrismaDatabaseDeployConnection]: {
599
+ root: 'back',
600
+ defaultTemplate: 'prisma/databases/{database}/deployConnection.prisma',
601
+ params: [exports.GenerationPathParam.database],
602
+ },
603
+ [exports.GenerationPathCategory.BackPrismaDatabaseConfig]: {
604
+ root: 'back',
605
+ defaultTemplate: 'prisma/databases/{database}/prisma.config.ts',
606
+ params: [exports.GenerationPathParam.database],
607
+ },
608
+ [exports.GenerationPathCategory.BackPrismaDatabaseDeployConfig]: {
609
+ root: 'back',
610
+ defaultTemplate: 'prisma/databases/{database}/deploy.prisma.config.ts',
611
+ params: [exports.GenerationPathParam.database],
612
+ },
613
+ [exports.GenerationPathCategory.BackPrismaDatabaseMigrationLock]: {
614
+ root: 'back',
615
+ defaultTemplate: 'prisma/databases/{database}/migrations/migration_lock.toml',
616
+ params: [exports.GenerationPathParam.database],
617
+ },
618
+ [exports.GenerationPathCategory.BackChartChart]: {
619
+ root: 'back',
620
+ defaultTemplate: 'chart/Chart.yaml',
621
+ params: [],
622
+ },
623
+ [exports.GenerationPathCategory.BackChartValues]: {
624
+ root: 'back',
625
+ defaultTemplate: 'chart/values.yaml',
626
+ params: [],
627
+ },
628
+ [exports.GenerationPathCategory.BackChartIngress]: {
629
+ root: 'back',
630
+ defaultTemplate: 'chart/templates/ingress.yaml',
631
+ params: [],
632
+ },
633
+ [exports.GenerationPathCategory.BackChartBack]: {
634
+ root: 'back',
635
+ defaultTemplate: 'chart/templates/back.yaml',
636
+ params: [],
637
+ },
638
+ [exports.GenerationPathCategory.BackGitlabCi]: {
639
+ root: 'back',
640
+ defaultTemplate: '.gitlab-ci.yml',
641
+ params: [],
642
+ },
643
+ [exports.GenerationPathCategory.BackCiNotify]: {
644
+ root: 'back',
645
+ defaultTemplate: 'ci-notify.sh',
646
+ params: [],
647
+ },
648
+ [exports.GenerationPathCategory.BackDockerfile]: {
649
+ root: 'back',
650
+ defaultTemplate: 'Dockerfile',
651
+ params: [],
652
+ },
653
+ [exports.GenerationPathCategory.UiApp]: {
654
+ root: 'ui',
655
+ defaultTemplate: 'src/App.tsx',
656
+ params: [],
657
+ },
658
+ [exports.GenerationPathCategory.UiLayoutMenu]: {
659
+ root: 'ui',
660
+ defaultTemplate: 'src/layout/Menu.tsx',
661
+ params: [],
662
+ },
663
+ [exports.GenerationPathCategory.UiLayoutAppBar]: {
664
+ root: 'ui',
665
+ defaultTemplate: 'src/layout/AppBar.tsx',
666
+ params: [],
667
+ },
668
+ [exports.GenerationPathCategory.UiSpacesContext]: {
669
+ root: 'ui',
670
+ defaultTemplate: 'src/contexts/SpacesContext.tsx',
671
+ params: [],
672
+ },
673
+ [exports.GenerationPathCategory.UiDataProvider]: {
674
+ root: 'ui',
675
+ defaultTemplate: 'src/dataProvider/index.ts',
676
+ params: [],
677
+ },
678
+ [exports.GenerationPathCategory.UiDataProviderGetAdditionalMethods]: {
679
+ root: 'ui',
680
+ defaultTemplate: 'src/dataProvider/getAdditionalMethods.ts',
681
+ params: [],
682
+ },
683
+ [exports.GenerationPathCategory.UiI18nProvider]: {
684
+ root: 'ui',
685
+ defaultTemplate: 'src/i18nProvider/index.ts',
686
+ params: [],
687
+ },
688
+ [exports.GenerationPathCategory.UiChartChart]: {
689
+ root: 'ui',
690
+ defaultTemplate: 'chart/Chart.yaml',
691
+ params: [],
692
+ },
693
+ [exports.GenerationPathCategory.UiChartValues]: {
694
+ root: 'ui',
695
+ defaultTemplate: 'chart/values.yaml',
696
+ params: [],
697
+ },
698
+ [exports.GenerationPathCategory.UiChartFront]: {
699
+ root: 'ui',
700
+ defaultTemplate: 'chart/templates/front.yaml',
701
+ params: [],
702
+ },
703
+ [exports.GenerationPathCategory.UiChartIngress]: {
704
+ root: 'ui',
705
+ defaultTemplate: 'chart/templates/ingress.yaml',
706
+ params: [],
707
+ },
708
+ [exports.GenerationPathCategory.UiGitlabCi]: {
709
+ root: 'ui',
710
+ defaultTemplate: '.gitlab-ci.yml',
711
+ params: [],
712
+ },
713
+ [exports.GenerationPathCategory.UiCiNotify]: {
714
+ root: 'ui',
715
+ defaultTemplate: 'ci-notify.sh',
716
+ params: [],
717
+ },
718
+ [exports.GenerationPathCategory.UiDockerfile]: {
719
+ root: 'ui',
720
+ defaultTemplate: 'Dockerfile',
721
+ params: [],
722
+ },
723
+ [exports.GenerationPathCategory.BackConfigDefaultJson]: {
724
+ root: 'back',
725
+ defaultTemplate: 'config/default.json',
726
+ params: [],
727
+ },
728
+ [exports.GenerationPathCategory.BackDocsConfiguration]: {
729
+ root: 'back',
730
+ defaultTemplate: 'docs/configuration.md',
731
+ params: [],
732
+ },
733
+ [exports.GenerationPathCategory.BackDocsSpec]: {
734
+ root: 'back',
735
+ defaultTemplate: 'docs/spec.md',
736
+ params: [],
737
+ },
738
+ [exports.GenerationPathCategory.BackDocsRestApi]: {
739
+ root: 'back',
740
+ defaultTemplate: 'docs/restApis/{restApiName}.md',
741
+ params: [exports.GenerationPathParam.restApiName],
742
+ },
743
+ [exports.GenerationPathCategory.BackDocsIntegrationClient]: {
744
+ root: 'back',
745
+ defaultTemplate: 'docs/integrationClients/{clientName}.md',
746
+ params: [exports.GenerationPathParam.clientName],
747
+ },
748
+ [exports.GenerationPathCategory.BackDocsEntity]: {
749
+ root: 'back',
750
+ defaultTemplate: 'docs/{entityTypePlural}/{entityName}.md',
751
+ params: [exports.GenerationPathParam.entityTypePlural, exports.GenerationPathParam.entityName],
752
+ },
753
+ [exports.GenerationPathCategory.UiDocsConfiguration]: {
754
+ root: 'ui',
755
+ defaultTemplate: 'docs/configuration.md',
756
+ params: [],
757
+ },
758
+ [exports.GenerationPathCategory.BackInitElasticGenJobs]: {
759
+ root: 'back',
760
+ defaultTemplate: 'src/init/elastic/genJobs.ts',
761
+ params: [],
762
+ },
763
+ [exports.GenerationPathCategory.BackInitClickHouseGenJobs]: {
764
+ root: 'back',
765
+ defaultTemplate: 'src/init/clickhouse/genJobs.ts',
766
+ params: [],
767
+ },
768
+ };
769
+ const extractGenerationPathParams = (template) => {
770
+ const found = new Set();
771
+ const re = new RegExp(PLACEHOLDER_RE.source, 'g');
772
+ let match;
773
+ while ((match = re.exec(template)) !== null) {
774
+ const name = match[1];
775
+ if (!generationPathParamValues.has(name)) {
776
+ throw new Error(`Unknown generation path placeholder "{${name}}"`);
777
+ }
778
+ found.add(name);
779
+ }
780
+ return [...found];
781
+ };
782
+ exports.extractGenerationPathParams = extractGenerationPathParams;
783
+ const validateGenerationPathTemplate = (template) => {
784
+ (0, exports.extractGenerationPathParams)(template);
785
+ };
786
+ exports.validateGenerationPathTemplate = validateGenerationPathTemplate;
787
+ const substituteGenerationPathParams = (template, placeholders, vars) => {
788
+ let result = template;
789
+ for (const param of placeholders) {
790
+ result = result.split(`{${param}}`).join(vars[param]);
791
+ }
792
+ return result;
793
+ };
794
+ function resolveGenerationPath(args) {
795
+ var _a, _b;
796
+ const { category, detachedBackProject, detachedUiProject, detachedSharedProject, pathsConfig, vars, } = args;
797
+ const definition = exports.DEFAULT_GENERATION_PATHS[category];
798
+ const template = (_b = (_a = pathsConfig === null || pathsConfig === void 0 ? void 0 : pathsConfig.overrides) === null || _a === void 0 ? void 0 : _a[category]) !== null && _b !== void 0 ? _b : definition.defaultTemplate;
799
+ (0, exports.validateGenerationPathTemplate)(template);
800
+ const placeholders = (0, exports.extractGenerationPathParams)(template);
801
+ const requiredParams = new Set([
802
+ ...definition.params,
803
+ ...placeholders,
804
+ ]);
805
+ for (const param of requiredParams) {
806
+ const value = vars[param];
807
+ if (value === undefined || value === '') {
808
+ throw new Error(`Missing generation path variable "{${param}}" for category "${category}"`);
809
+ }
810
+ }
811
+ const relativePath = substituteGenerationPathParams(template, placeholders, vars);
812
+ const rootDir = definition.root === 'back'
813
+ ? detachedBackProject
814
+ : definition.root === 'ui'
815
+ ? detachedUiProject
816
+ : (detachedSharedProject || detachedBackProject);
817
+ return (0, path_1.join)(rootDir, relativePath);
818
+ }
819
+ exports.resolveGenerationPath = resolveGenerationPath;
820
+ /** Parent of `count`/`list` under widgets — derived from UiWidgetCount template. */
821
+ function resolveUiWidgetsDir(args) {
822
+ const samplePath = resolveGenerationPath({
823
+ category: exports.GenerationPathCategory.UiWidgetCount,
824
+ detachedBackProject: args.detachedBackProject,
825
+ detachedUiProject: args.detachedUiProject,
826
+ pathsConfig: args.pathsConfig,
827
+ vars: { PascalEntity: '_' },
828
+ });
829
+ return (0, path_1.join)(samplePath, '..', '..');
830
+ }
831
+ exports.resolveUiWidgetsDir = resolveUiWidgetsDir;
832
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGlvblBhdGhzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Byb2plY3RzR2VuZXJhdGlvbi9idWlsZGVycy9nZW5lcmF0aW9uUGF0aHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQXlCO0FBS1osUUFBQSxrQkFBa0IsR0FBRztJQUNoQyxJQUFJLEVBQUUsTUFBTTtJQUNaLEVBQUUsRUFBRSxJQUFJO0lBQ1IsTUFBTSxFQUFFLFFBQVE7Q0FDcUMsQ0FBQTtBQUV2RDs7O0dBR0c7QUFDVSxRQUFBLHNCQUFzQixHQUFHO0lBQ3BDLG9CQUFvQixFQUFFLHdCQUF3QjtJQUM5QyxtQkFBbUIsRUFBRSx1QkFBdUI7SUFDNUMsb0JBQW9CLEVBQUUsd0JBQXdCO0lBQzlDLG1CQUFtQixFQUFFLHVCQUF1QjtJQUM1QyxvQkFBb0IsRUFBRSx3QkFBd0I7SUFDOUMsbUJBQW1CLEVBQUUsdUJBQXVCO0lBQzVDLG9CQUFvQixFQUFFLHdCQUF3QjtJQUM5Qyx3QkFBd0IsRUFBRSw0QkFBNEI7SUFDdEQsb0NBQW9DLEVBQUUsd0NBQXdDO0lBQzlFLG9DQUFvQyxFQUFFLHdDQUF3QztJQUM5RSxvQ0FBb0MsRUFBRSx3Q0FBd0M7SUFDOUUsNkJBQTZCLEVBQUUsaUNBQWlDO0lBQ2hFLHFCQUFxQixFQUFFLHlCQUF5QjtJQUNoRCx3QkFBd0IsRUFBRSw0QkFBNEI7SUFDdEQsZ0JBQWdCLEVBQUUsb0JBQW9CO0lBQ3RDLDBCQUEwQixFQUFFLDhCQUE4QjtJQUMxRCxpQkFBaUIsRUFBRSxxQkFBcUI7SUFDeEMsdUJBQXVCLEVBQUUsMkJBQTJCO0lBQ3BELDhCQUE4QixFQUFFLGtDQUFrQztJQUNsRSxpQkFBaUIsRUFBRSxzQkFBc0I7SUFDekMsd0JBQXdCLEVBQUUsNkJBQTZCO0lBQ3ZELDJCQUEyQixFQUFFLGdDQUFnQztJQUM3RCx3QkFBd0IsRUFBRSw2QkFBNkI7SUFDdkQsZUFBZSxFQUFFLG9CQUFvQjtJQUNy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