runlify 0.0.739 → 0.0.741

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.
@@ -71,249 +71,236 @@ const generateAdditionalService_1 = require("./generateAdditionalService");
71
71
  const IntegrationClients_1 = __importDefault(require("./generators/fileTemplates/back/environment/src/integrationClients/IntegrationClients"));
72
72
  const integrationClientConstrictors_1 = __importDefault(require("./generators/fileTemplates/back/environment/src/integrationClients/integrationClientConstrictors"));
73
73
  const cleanFiles_1 = __importDefault(require("./fileCleaners/cleanFiles"));
74
- // Бек (generateBack)
75
- // Исходники бека (generateBackSrc)
76
- // Исходники бека (generateBackSrcEntity)
77
- // GitlabCi бека (generateBackGitlabCi)
78
- // Helm чарты бека (generateBackHelm)
79
- // Фронт (generateFront)
80
- // Исходники фронта (generateFrontSrc)
81
- // Исходники фронта (generateFrontSrcEntity)
82
- // GitlabCi фронта (generateFrontGitlabCi)
83
- // Helm чарты фронта (generateFrontHelm)
84
- const generateHelpService = (args, typesOnly = false) => __awaiter(void 0, void 0, void 0, function* () {
85
- (0, fs_jetpack_1.write)((0, path_1.join)(args.options.detachedBackProject, 'src', 'adm', 'graph', 'services', 'help', 'baseTypeDefs.ts'), (0, baseTypeDefs_1.default)(args));
74
+ const generateHelpService = (fileWriter, args, typesOnly = false) => __awaiter(void 0, void 0, void 0, function* () {
75
+ fileWriter.write((0, path_1.join)(args.options.detachedBackProject, 'src', 'adm', 'graph', 'services', 'help', 'baseTypeDefs.ts'), (0, baseTypeDefs_1.default)(args));
86
76
  if (!typesOnly) {
87
- (0, fs_jetpack_1.write)((0, path_1.join)(args.options.detachedBackProject, 'src', 'adm', 'graph', 'services', 'help', 'baseResolvers.ts'), (0, baseResolvers_1.default)());
88
- (0, fs_jetpack_1.write)((0, path_1.join)(args.options.detachedBackProject, 'src', 'adm', 'graph', 'services', 'help', 'permissionsToGraphql.ts'), (0, permissionsToGraphql_2.default)());
89
- (0, fs_jetpack_1.write)((0, path_1.join)(args.options.detachedBackProject, 'src', 'adm', 'services', 'HelpService', 'HelpService.ts'), (0, HelpService_1.default)(args));
77
+ fileWriter.write((0, path_1.join)(args.options.detachedBackProject, 'src', 'adm', 'graph', 'services', 'help', 'baseResolvers.ts'), (0, baseResolvers_1.default)());
78
+ fileWriter.write((0, path_1.join)(args.options.detachedBackProject, 'src', 'adm', 'graph', 'services', 'help', 'permissionsToGraphql.ts'), (0, permissionsToGraphql_2.default)());
79
+ fileWriter.write((0, path_1.join)(args.options.detachedBackProject, 'src', 'adm', 'services', 'HelpService', 'HelpService.ts'), (0, HelpService_1.default)(args));
90
80
  }
91
81
  });
92
- const generateBackSrc = (args) => __awaiter(void 0, void 0, void 0, function* () {
93
- // log.info('generateBackSrc');
94
- yield Promise.all([
95
- (0, fs_jetpack_1.write)((0, path_1.join)(args.options.detachedBackProject, 'src', 'config', 'config.ts'), (0, config_1.configItemsTmpl)(args)),
96
- generateHelpService(args, true),
97
- ]);
98
- (0, exports.generateBackIntegrationClients)(args);
82
+ const generateBackSrc = (fileWriter, args, typesOnly) => __awaiter(void 0, void 0, void 0, function* () {
83
+ if (!typesOnly) {
84
+ yield Promise.all([
85
+ fileWriter.write((0, path_1.join)(args.options.detachedBackProject, 'src', 'config', 'config.ts'), (0, config_1.configItemsTmpl)(args)),
86
+ (0, exports.generateBackIntegrationClients)(fileWriter, args),
87
+ ]);
88
+ }
89
+ generateHelpService(fileWriter, args, typesOnly);
99
90
  });
100
91
  exports.generateBackSrc = generateBackSrc;
101
- const generateBackIntegrationClients = (args) => __awaiter(void 0, void 0, void 0, function* () {
92
+ const generateBackIntegrationClients = (fileWriter, args) => __awaiter(void 0, void 0, void 0, function* () {
102
93
  for (const client of args.system.integrationClients) {
103
94
  const clientFolder = (0, path_1.join)(args.options.detachedBackProject, 'src', 'integrationClients', `${client.name}`);
104
- (0, utils_1.writeFileIfNotExists)((0, path_1.join)(clientFolder, `${(0, change_case_1.pascalCase)(client.name)}Client.ts`), (0, IntegrationClient_1.default)(args, client));
105
- (0, fs_jetpack_1.write)((0, path_1.join)(clientFolder, `types.ts`), (0, types_2.default)(args, client));
95
+ fileWriter.writeFileIfNotExists((0, path_1.join)(clientFolder, `${(0, change_case_1.pascalCase)(client.name)}Client.ts`), (0, IntegrationClient_1.default)(args, client));
96
+ fileWriter.write((0, path_1.join)(clientFolder, `types.ts`), (0, types_2.default)(args, client));
106
97
  }
107
98
  });
108
99
  exports.generateBackIntegrationClients = generateBackIntegrationClients;
109
- const generateBackEnvs = (args) => __awaiter(void 0, void 0, void 0, function* () {
100
+ const generateBackEnvs = (fileWriter, args) => __awaiter(void 0, void 0, void 0, function* () {
110
101
  const filePath = (0, path_1.join)(args.options.detachedBackProject, 'config', 'default.json');
111
- (0, fs_jetpack_1.write)(filePath, (0, defaultEnv_1.backDefaultEnv)(args));
102
+ fileWriter.write(filePath, (0, defaultEnv_1.backDefaultEnv)(args));
112
103
  });
113
104
  exports.generateBackEnvs = generateBackEnvs;
114
- const generateBackDocsConfiguration = (args) => __awaiter(void 0, void 0, void 0, function* () {
105
+ const generateBackDocsConfiguration = (fileWriter, args) => __awaiter(void 0, void 0, void 0, function* () {
115
106
  const filePath = (0, path_1.join)(args.options.detachedBackProject, 'docs', 'configuration.md');
116
- (0, fs_jetpack_1.write)(filePath, (0, backDocsConfiguration_1.default)(args));
107
+ fileWriter.write(filePath, (0, backDocsConfiguration_1.default)(args));
117
108
  });
118
109
  exports.generateBackDocsConfiguration = generateBackDocsConfiguration;
119
- const generateBackDocsSpec = (args) => __awaiter(void 0, void 0, void 0, function* () {
110
+ const generateBackDocsSpec = (fileWriter, args) => __awaiter(void 0, void 0, void 0, function* () {
120
111
  const filePath = (0, path_1.join)(args.options.detachedBackProject, 'docs', 'spec.md');
121
- (0, fs_jetpack_1.write)(filePath, (0, backDocSpec_1.default)(args));
112
+ fileWriter.write(filePath, (0, backDocSpec_1.default)(args));
122
113
  });
123
114
  exports.generateBackDocsSpec = generateBackDocsSpec;
124
- const generateBackDocsRestApis = (args) => __awaiter(void 0, void 0, void 0, function* () {
115
+ const generateBackDocsRestApis = (fileWriter, args) => __awaiter(void 0, void 0, void 0, function* () {
125
116
  for (const restApi of args.system.restApis) {
126
117
  const filePath = (0, path_1.join)(args.options.detachedBackProject, 'docs', 'restApis', `${restApi.name}.md`);
127
- (0, fs_jetpack_1.write)(filePath, (0, backDocsRestApi_1.default)(args, restApi));
118
+ fileWriter.write(filePath, (0, backDocsRestApi_1.default)(args, restApi));
128
119
  }
129
120
  });
130
121
  exports.generateBackDocsRestApis = generateBackDocsRestApis;
131
- const generateBackDocsIntegrationClients = (args) => __awaiter(void 0, void 0, void 0, function* () {
122
+ const generateBackDocsIntegrationClients = (fileWriter, args) => __awaiter(void 0, void 0, void 0, function* () {
132
123
  for (const client of args.system.integrationClients) {
133
124
  const filePath = (0, path_1.join)(args.options.detachedBackProject, 'docs', 'integrationClients', `${client.name}.md`);
134
- (0, fs_jetpack_1.write)(filePath, (0, backDocsIntegrationClient_1.default)(args, client));
125
+ fileWriter.write(filePath, (0, backDocsIntegrationClient_1.default)(args, client));
135
126
  }
136
127
  });
137
128
  exports.generateBackDocsIntegrationClients = generateBackDocsIntegrationClients;
138
- const generateBackDocsEntities = (args) => __awaiter(void 0, void 0, void 0, function* () {
129
+ const generateBackDocsEntities = (fileWriter, args) => __awaiter(void 0, void 0, void 0, function* () {
139
130
  yield Promise.all(args.entities.map((entity) => {
140
131
  const filePath = (0, path_1.join)(args.options.detachedBackProject, 'docs', (0, pluralize_1.plural)(entity.type), `${entity.name}.md`);
141
- return (0, fs_jetpack_1.write)(filePath, (0, backDocsEntity_1.default)((0, args_1.prepareEntityWideGenerationArgs)(args, entity)));
132
+ return fileWriter.write(filePath, (0, backDocsEntity_1.default)((0, args_1.prepareEntityWideGenerationArgs)(args, entity)));
142
133
  }));
143
134
  });
144
135
  exports.generateBackDocsEntities = generateBackDocsEntities;
145
- const generateBackEnums = (args) => __awaiter(void 0, void 0, void 0, function* () {
136
+ const generateBackEnums = (fileWriter, args) => __awaiter(void 0, void 0, void 0, function* () {
146
137
  yield Promise.all(args.entities
147
138
  .filter((e) => e.predefinedElements.length > 0)
148
139
  .map((entity) => {
149
140
  const filePath = (0, path_1.join)(args.options.detachedBackProject, 'src', 'types', `${(0, cases_1.pascal)((0, pluralize_1.singular)(entity.name))}.ts`);
150
- return (0, fs_jetpack_1.write)(filePath, (0, enum_1.enumTmpl)({
141
+ return fileWriter.write(filePath, (0, enum_1.enumTmpl)({
151
142
  entity,
152
143
  options: args.options,
153
144
  }));
154
145
  }));
155
146
  });
156
147
  exports.generateBackEnums = generateBackEnums;
157
- const generateBackEntityEnum = (args) => __awaiter(void 0, void 0, void 0, function* () {
148
+ const generateBackEntityEnum = (fileWriter, args) => __awaiter(void 0, void 0, void 0, function* () {
158
149
  const filePath = (0, path_1.join)(args.options.detachedBackProject, 'src', 'types', 'Entity.ts');
159
- return (0, fs_jetpack_1.write)(filePath, (0, Entities_1.Entities)({
150
+ return fileWriter.write(filePath, (0, Entities_1.Entities)({
160
151
  entities: args.entities,
161
152
  options: args.options,
162
153
  }));
163
154
  });
164
155
  exports.generateBackEntityEnum = generateBackEntityEnum;
165
- const generateBackEnumsInit = (args) => __awaiter(void 0, void 0, void 0, function* () {
156
+ const generateBackEnumsInit = (fileWriter, args) => __awaiter(void 0, void 0, void 0, function* () {
166
157
  yield Promise.all(args.entities
167
158
  .filter((e) => e.predefinedElements.length > 0)
168
159
  .map((entity) => {
169
160
  const filePath = (0, path_1.join)(args.options.detachedBackProject, 'src', 'init', 'common', `init${(0, cases_1.pascal)(entity.name)}.ts`);
170
- return (0, fs_jetpack_1.write)(filePath, (0, initCommon_1.initCommonEnumTmpl)({
161
+ return fileWriter.write(filePath, (0, initCommon_1.initCommonEnumTmpl)({
171
162
  entity,
172
163
  options: args.options,
173
164
  }));
174
165
  }));
175
166
  });
176
167
  exports.generateBackEnumsInit = generateBackEnumsInit;
177
- const generateBackEntitiesEnumInit = (args) => __awaiter(void 0, void 0, void 0, function* () {
168
+ const generateBackEntitiesEnumInit = (fileWriter, args) => __awaiter(void 0, void 0, void 0, function* () {
178
169
  const filePath = (0, path_1.join)(args.options.detachedBackProject, 'src', 'init', 'common', 'initEntities.ts');
179
- return (0, fs_jetpack_1.write)(filePath, (0, initEntities_1.initEntities)(args));
170
+ return fileWriter.write(filePath, (0, initEntities_1.initEntities)(args));
180
171
  });
181
172
  exports.generateBackEntitiesEnumInit = generateBackEntitiesEnumInit;
182
- const generateBackDevEnums = (args) => __awaiter(void 0, void 0, void 0, function* () {
173
+ const generateBackDevEnums = (fileWriter, args) => __awaiter(void 0, void 0, void 0, function* () {
183
174
  yield Promise.all(args.entities
184
175
  .filter((e) => e.devPerefinedElements.length > 0)
185
176
  .map((entity) => {
186
177
  const filePath = (0, path_1.join)(args.options.detachedBackProject, 'src', 'types', `Dev${(0, cases_1.pascal)((0, pluralize_1.singular)(entity.name))}.ts`);
187
- return (0, fs_jetpack_1.write)(filePath, (0, devEnum_1.devEnumTmpl)({
178
+ return fileWriter.write(filePath, (0, devEnum_1.devEnumTmpl)({
188
179
  entity,
189
180
  options: args.options,
190
181
  }));
191
182
  }));
192
183
  });
193
184
  exports.generateBackDevEnums = generateBackDevEnums;
194
- const generateBackDevEnumsInit = (args) => __awaiter(void 0, void 0, void 0, function* () {
185
+ const generateBackDevEnumsInit = (fileWriter, args) => __awaiter(void 0, void 0, void 0, function* () {
195
186
  yield Promise.all(args.entities
196
187
  .filter((e) => e.devPerefinedElements.length > 0)
197
188
  .map((entity) => {
198
189
  const filePath = (0, path_1.join)(args.options.detachedBackProject, 'src', 'init', 'dev', `init${(0, cases_1.pascal)(entity.name)}.ts`);
199
- return (0, fs_jetpack_1.write)(filePath, (0, initDev_1.initDevEnumTmpl)({
190
+ return fileWriter.write(filePath, (0, initDev_1.initDevEnumTmpl)({
200
191
  entity,
201
192
  options: args.options,
202
193
  }));
203
194
  }));
204
195
  });
205
196
  exports.generateBackDevEnumsInit = generateBackDevEnumsInit;
206
- const generateAdminAppDocsConfiguration = (args) => __awaiter(void 0, void 0, void 0, function* () {
197
+ const generateAdminAppDocsConfiguration = (fileWriter, args) => __awaiter(void 0, void 0, void 0, function* () {
207
198
  const filePath = (0, path_1.join)(args.options.detachedUiProject, 'docs', 'configuration.md');
208
- (0, fs_jetpack_1.write)(filePath, (0, adminAppDocsConfiguration_1.adminAppDocsConfiguration)(args));
199
+ fileWriter.write(filePath, (0, adminAppDocsConfiguration_1.adminAppDocsConfiguration)(args));
209
200
  });
210
201
  exports.generateAdminAppDocsConfiguration = generateAdminAppDocsConfiguration;
211
- const generateBackDocs = (args) => __awaiter(void 0, void 0, void 0, function* () {
202
+ const generateBackDocs = (fileWriter, args) => __awaiter(void 0, void 0, void 0, function* () {
212
203
  yield Promise.all([
213
- (0, exports.generateBackDocsSpec)(args),
214
- (0, exports.generateBackDocsConfiguration)(args),
215
- (0, exports.generateBackDocsRestApis)(args),
216
- (0, exports.generateBackDocsIntegrationClients)(args),
217
- (0, exports.generateBackDocsEntities)(args),
218
- (0, exports.generateBackEnums)(args),
219
- (0, exports.generateBackEnumsInit)(args),
220
- (0, exports.generateBackEntityEnum)(args),
221
- (0, exports.generateBackEntitiesEnumInit)(args),
222
- (0, exports.generateBackDevEnums)(args),
223
- (0, exports.generateBackDevEnumsInit)(args),
224
- (0, exports.generateAdminAppDocsConfiguration)(args),
204
+ (0, exports.generateBackDocsSpec)(fileWriter, args),
205
+ (0, exports.generateBackDocsConfiguration)(fileWriter, args),
206
+ (0, exports.generateBackDocsRestApis)(fileWriter, args),
207
+ (0, exports.generateBackDocsIntegrationClients)(fileWriter, args),
208
+ (0, exports.generateBackDocsEntities)(fileWriter, args),
209
+ (0, exports.generateBackEnums)(fileWriter, args),
210
+ (0, exports.generateBackEnumsInit)(fileWriter, args),
211
+ (0, exports.generateBackEntityEnum)(fileWriter, args),
212
+ (0, exports.generateBackEntitiesEnumInit)(fileWriter, args),
213
+ (0, exports.generateBackDevEnums)(fileWriter, args),
214
+ (0, exports.generateBackDevEnumsInit)(fileWriter, args),
215
+ (0, exports.generateAdminAppDocsConfiguration)(fileWriter, args),
225
216
  ]);
226
217
  });
227
218
  exports.generateBackDocs = generateBackDocs;
228
- const generateBack = (args) => __awaiter(void 0, void 0, void 0, function* () {
229
- // log.info('generateBack');
230
- yield Promise.all([
231
- (0, exports.generateBackSrc)(args),
232
- (0, exports.generateBackEnvs)(args),
233
- (0, exports.generateBackDocs)(args),
234
- (0, elastic_1.generateBackElasticBootstrap)(args),
235
- ]);
219
+ const generateBack = (fileWriter, args, typesOnly) => __awaiter(void 0, void 0, void 0, function* () {
220
+ if (!typesOnly) {
221
+ yield Promise.all([
222
+ (0, exports.generateBackEnvs)(fileWriter, args),
223
+ (0, exports.generateBackDocs)(fileWriter, args),
224
+ (0, elastic_1.generateBackElasticBootstrap)(fileWriter, args),
225
+ ]);
226
+ }
227
+ (0, exports.generateBackSrc)(fileWriter, args, typesOnly);
236
228
  });
237
229
  exports.generateBack = generateBack;
238
- const generateFrontSrcEntityTranslationsDocs = (args) => __awaiter(void 0, void 0, void 0, function* () {
239
- // log.info('generateFrontSrcEntityTranslationsDocs');
230
+ const generateFrontSrcEntityTranslationsDocs = (fileWriter, args) => __awaiter(void 0, void 0, void 0, function* () {
240
231
  for (const lang of args.system.languages) {
241
232
  const filePath = (0, path_1.join)(args.options.detachedUiProject, `src/i18n/${lang.id}/${lang.id}Docs.ts`);
242
- (0, fs_jetpack_1.write)(filePath, (0, uiLangDocsTmpl_1.uiTranslationsLangDocsTmpl)(args, lang.id));
233
+ fileWriter.write(filePath, (0, uiLangDocsTmpl_1.uiTranslationsLangDocsTmpl)(args, lang.id));
243
234
  }
244
235
  });
245
236
  exports.generateFrontSrcEntityTranslationsDocs = generateFrontSrcEntityTranslationsDocs;
246
- const generateFrontSrcEntityTranslationsCatalogs = (args) => __awaiter(void 0, void 0, void 0, function* () {
247
- // log.info('generateFrontSrcEntityTranslationsCatalogs');
237
+ const generateFrontSrcEntityTranslationsCatalogs = (fileWriter, args) => __awaiter(void 0, void 0, void 0, function* () {
248
238
  for (const lang of args.system.languages) {
249
239
  const filePath = (0, path_1.join)(args.options.detachedUiProject, `src/i18n/${lang.id}/${lang.id}Catalogs.ts`);
250
- (0, fs_jetpack_1.write)(filePath, (0, uiLangCatalogsTmpl_1.uiTranslationsLangCatalogsTmpl)(args, lang.id));
240
+ fileWriter.write(filePath, (0, uiLangCatalogsTmpl_1.uiTranslationsLangCatalogsTmpl)(args, lang.id));
251
241
  }
252
242
  });
253
243
  exports.generateFrontSrcEntityTranslationsCatalogs = generateFrontSrcEntityTranslationsCatalogs;
254
- const generateFrontSrcEntityTranslationsInfoRegistries = (args) => __awaiter(void 0, void 0, void 0, function* () {
255
- // log.info('generateFrontSrcEntityTranslationsInfoRegistries');
244
+ const generateFrontSrcEntityTranslationsInfoRegistries = (fileWriter, args) => __awaiter(void 0, void 0, void 0, function* () {
256
245
  for (const lang of args.system.languages) {
257
246
  const filePath = (0, path_1.join)(args.options.detachedUiProject, `src/i18n/${lang.id}/${lang.id}InfoRegistries.ts`);
258
- (0, fs_jetpack_1.write)(filePath, (0, uiLangInfoRegistriesTmpl_1.uiTranslationsLangInfoRegistriesTmpl)(args, lang.id));
247
+ fileWriter.write(filePath, (0, uiLangInfoRegistriesTmpl_1.uiTranslationsLangInfoRegistriesTmpl)(args, lang.id));
259
248
  }
260
249
  });
261
250
  exports.generateFrontSrcEntityTranslationsInfoRegistries = generateFrontSrcEntityTranslationsInfoRegistries;
262
- const generateFrontSrcEntityTranslationsSumRegistries = (args) => __awaiter(void 0, void 0, void 0, function* () {
263
- // log.info('generateFrontSrcEntityTranslationsSumRegistries');
251
+ const generateFrontSrcEntityTranslationsSumRegistries = (fileWriter, args) => __awaiter(void 0, void 0, void 0, function* () {
264
252
  for (const lang of args.system.languages) {
265
253
  const filePath = (0, path_1.join)(args.options.detachedUiProject, `src/i18n/${lang.id}/${lang.id}SumRegistries.ts`);
266
- (0, fs_jetpack_1.write)(filePath, (0, uiLangSumRegistriesTmpl_1.uiTranslationsLangSumRegistriesTmpl)(args, lang.id));
254
+ fileWriter.write(filePath, (0, uiLangSumRegistriesTmpl_1.uiTranslationsLangSumRegistriesTmpl)(args, lang.id));
267
255
  }
268
256
  });
269
257
  exports.generateFrontSrcEntityTranslationsSumRegistries = generateFrontSrcEntityTranslationsSumRegistries;
270
- const generateFrontSrcEntityTranslationsReports = (args) => __awaiter(void 0, void 0, void 0, function* () {
271
- // log.info('generateFrontSrcEntityTranslationsReports');
258
+ const generateFrontSrcEntityTranslationsReports = (fileWriter, args) => __awaiter(void 0, void 0, void 0, function* () {
272
259
  for (const lang of args.system.languages) {
273
260
  const filePath = (0, path_1.join)(args.options.detachedUiProject, `src/i18n/${lang.id}/${lang.id}Reports.ts`);
274
- (0, fs_jetpack_1.write)(filePath, (0, uiLangReportsTmpl_1.uiTranslationsLangReportsTmpl)(args, lang.id));
261
+ fileWriter.write(filePath, (0, uiLangReportsTmpl_1.uiTranslationsLangReportsTmpl)(args, lang.id));
275
262
  }
276
263
  });
277
264
  exports.generateFrontSrcEntityTranslationsReports = generateFrontSrcEntityTranslationsReports;
278
- const generateFrontSrcEntityIcon = (entityWideGenerationArgs) => __awaiter(void 0, void 0, void 0, function* () {
265
+ const generateFrontSrcEntityIcon = (fileWriter, entityWideGenerationArgs) => __awaiter(void 0, void 0, void 0, function* () {
279
266
  const { entity: { name }, } = entityWideGenerationArgs;
280
267
  const filePath = (0, path_1.join)(entityWideGenerationArgs.options.detachedUiProject, `src/adm/pages/${name}/${(0, cases_1.pascalSingular)(name)}Icon.tsx`);
281
- (0, fs_jetpack_1.write)(filePath, (0, Icon_1.uiEntityIconTmpl)(entityWideGenerationArgs));
268
+ fileWriter.write(filePath, (0, Icon_1.uiEntityIconTmpl)(entityWideGenerationArgs));
282
269
  });
283
270
  exports.generateFrontSrcEntityIcon = generateFrontSrcEntityIcon;
284
- const generateFrontSrcGetEntityValidation = (entityWideGenerationArgs) => __awaiter(void 0, void 0, void 0, function* () {
271
+ const generateFrontSrcGetEntityValidation = (fileWriter, entityWideGenerationArgs) => __awaiter(void 0, void 0, void 0, function* () {
285
272
  const { entity: { name }, } = entityWideGenerationArgs;
286
- // src/adm/pages/milesReceivedForFlightsByManagerDocuments/getMilesReceivedForFlightsByManagerDocumentValidation.tsx
287
273
  const filePath = (0, path_1.join)(entityWideGenerationArgs.options.detachedUiProject, `src/adm/pages/${name}/get${(0, cases_1.pascalSingular)(name)}Validation.tsx`);
288
- (0, fs_jetpack_1.write)(filePath, (0, getEntityValidation_1.uiGetEntityValidationTmpl)(entityWideGenerationArgs));
274
+ fileWriter.write(filePath, (0, getEntityValidation_1.uiGetEntityValidationTmpl)(entityWideGenerationArgs));
289
275
  });
290
276
  exports.generateFrontSrcGetEntityValidation = generateFrontSrcGetEntityValidation;
291
- const generateFrontSrcEntity = (entityWideGenerationArgs) => __awaiter(void 0, void 0, void 0, function* () {
292
- // log.info('generateFrontSrcEntity');
293
- // log.info(typeof entityWideGenerationArgs);
294
- yield (0, exports.generateFrontSrcEntityIcon)(entityWideGenerationArgs);
295
- yield (0, exports.generateFrontSrcGetEntityValidation)(entityWideGenerationArgs);
277
+ const generateFrontSrcEntity = (fileWriter, entityWideGenerationArgs) => __awaiter(void 0, void 0, void 0, function* () {
278
+ yield Promise.all([
279
+ (0, exports.generateFrontSrcEntityIcon)(fileWriter, entityWideGenerationArgs),
280
+ (0, exports.generateFrontSrcGetEntityValidation)(fileWriter, entityWideGenerationArgs),
281
+ ]);
296
282
  });
297
283
  exports.generateFrontSrcEntity = generateFrontSrcEntity;
298
- const generateFrontSrc = (args) => __awaiter(void 0, void 0, void 0, function* () {
299
- yield Promise.all(args.entities.map((entity) => (0, exports.generateFrontSrcEntity)((0, args_1.prepareEntityWideGenerationArgs)(args, entity))));
284
+ const generateFrontSrc = (fileWriter, args) => __awaiter(void 0, void 0, void 0, function* () {
300
285
  yield Promise.all([
301
- (0, exports.generateFrontSrcEntityTranslationsDocs)(args),
302
- (0, exports.generateFrontSrcEntityTranslationsCatalogs)(args),
303
- (0, exports.generateFrontSrcEntityTranslationsSumRegistries)(args),
304
- (0, exports.generateFrontSrcEntityTranslationsInfoRegistries)(args),
305
- (0, exports.generateFrontSrcEntityTranslationsReports)(args),
286
+ args.entities.map((entity) => (0, exports.generateFrontSrcEntity)(fileWriter, (0, args_1.prepareEntityWideGenerationArgs)(args, entity))),
287
+ (0, exports.generateFrontSrcEntityTranslationsDocs)(fileWriter, args),
288
+ (0, exports.generateFrontSrcEntityTranslationsCatalogs)(fileWriter, args),
289
+ (0, exports.generateFrontSrcEntityTranslationsSumRegistries)(fileWriter, args),
290
+ (0, exports.generateFrontSrcEntityTranslationsInfoRegistries)(fileWriter, args),
291
+ (0, exports.generateFrontSrcEntityTranslationsReports)(fileWriter, args),
306
292
  ]);
307
293
  });
308
294
  exports.generateFrontSrc = generateFrontSrc;
309
- const generateFront = (args) => __awaiter(void 0, void 0, void 0, function* () {
310
- // log.info('generateFront');
295
+ const generateFront = (fileWriter, args) => __awaiter(void 0, void 0, void 0, function* () {
311
296
  yield Promise.all([
312
- (0, exports.generateFrontSrc)(args),
297
+ (0, exports.generateFrontSrc)(fileWriter, args),
313
298
  ]);
314
299
  });
315
300
  exports.generateFront = generateFront;
316
301
  const generateProject = (system, initialOpts = types_1.defaultBootstrapEntityOptions) => __awaiter(void 0, void 0, void 0, function* () {
302
+ const { filesToWrite, reset, write, writeFileIfNotExists, } = (0, utils_1.createFilesToWriteUtils)();
303
+ const fileWriter = { write, writeFileIfNotExists };
317
304
  const dir = (0, fs_jetpack_1.cwd)('..').cwd();
318
305
  const detachedBackProject = (0, path_1.join)(dir, `${initialOpts.projectPrefix}-back`);
319
306
  const detachedUiProject = (0, path_1.join)(dir, `${initialOpts.projectPrefix}-ui`);
@@ -321,154 +308,100 @@ const generateProject = (system, initialOpts = types_1.defaultBootstrapEntityOpt
321
308
  const opts = Object.assign(Object.assign(Object.assign({}, types_1.defaultBootstrapEntityOptions), initialOpts), { detachedBackProject,
322
309
  detachedUiProject });
323
310
  const args = (0, args_1.prepareProjectWideGenerationArgs)(system, opts);
324
- yield (0, exports.generateBack)(args);
325
- yield (0, exports.generateFront)(args);
326
311
  const { entities } = args;
327
- let prjBackSrcPrefixedDir = '';
328
- const prjDetachedBackSrcDir = (0, path_1.join)(opts.detachedBackProject, 'src');
329
- // if (opts.detachedBackProject) {
330
- prjBackSrcPrefixedDir = (0, path_1.join)(prjDetachedBackSrcDir, 'adm');
331
- // } else {
332
- // prjBackSrcPrefixedDir = join(__dirname, '..', '..', prefix);
333
- // }
312
+ yield (0, cleanFiles_1.default)(args);
334
313
  // Pre grapgql types compose generation
335
314
  yield Promise.all([
336
- (0, cleanFiles_1.default)(args),
337
- ...entities.map((entity) => (0, generateEntity_1.generateEntity)((0, args_1.prepareEntityWideGenerationArgs)(Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, opts), { typesOnly: true }) }), entity))),
338
- ...system.additionalServices.map((service) => (0, generateAdditionalService_1.generateAdditionalService)((0, args_1.prepareAdditionalServiceWideGenerationArgs)(Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, opts), { typesOnly: true }) }), service))),
315
+ ...entities.map((entity) => (0, generateEntity_1.generateEntity)(fileWriter, (0, args_1.prepareEntityWideGenerationArgs)(Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, opts), { typesOnly: true }) }), entity))),
316
+ ...system.additionalServices.map((service) => (0, generateAdditionalService_1.generateAdditionalService)(fileWriter, (0, args_1.prepareAdditionalServiceWideGenerationArgs)(Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, opts), { typesOnly: true }) }), service))),
317
+ (0, exports.generateBack)(fileWriter, args, true),
339
318
  ]);
340
- // const graphMetaServiceDir = join(
341
- // prjBackSrcPrefixedDir,
342
- // 'graph',
343
- // 'services',
344
- // 'meta'
345
- // )
346
- // write(`${graphMetaServiceDir}/baseTypeDefs.ts`, graphMetaTypesTmpl())
319
+ (0, utils_1.writeFiles)(filesToWrite);
320
+ reset();
347
321
  yield (0, genGraphSchemesByLocalGenerator_1.genGraphSchemesByLocalGenerator)(opts);
348
- yield generateHelpService(args, false);
322
+ yield (0, exports.generateFront)(fileWriter, args);
323
+ let prjBackSrcPrefixedDir = '';
324
+ const prjDetachedBackSrcDir = (0, path_1.join)(opts.detachedBackProject, 'src');
325
+ prjBackSrcPrefixedDir = (0, path_1.join)(prjDetachedBackSrcDir, 'adm');
349
326
  // Full generation
350
327
  yield Promise.all([
351
- ...entities.map((entity) => (0, generateEntity_1.generateEntity)((0, args_1.prepareEntityWideGenerationArgs)(Object.assign(Object.assign({}, args), { options: Object.assign({}, opts) }), entity))),
352
- ...system.additionalServices.map((service) => (0, generateAdditionalService_1.generateAdditionalService)((0, args_1.prepareAdditionalServiceWideGenerationArgs)(Object.assign(Object.assign({}, args), { options: Object.assign({}, opts) }), service))),
328
+ ...entities.map((entity) => (0, generateEntity_1.generateEntity)(fileWriter, (0, args_1.prepareEntityWideGenerationArgs)(Object.assign(Object.assign({}, args), { options: Object.assign({}, opts) }), entity))),
329
+ ...system.additionalServices.map((service) => (0, generateAdditionalService_1.generateAdditionalService)(fileWriter, (0, args_1.prepareAdditionalServiceWideGenerationArgs)(Object.assign(Object.assign({}, args), { options: Object.assign({}, opts) }), service))),
330
+ (0, exports.generateBack)(fileWriter, args, false),
353
331
  ]);
354
332
  // Prisma schema
355
333
  const servicesDir = (0, path_1.join)(prjBackSrcPrefixedDir, 'services');
356
- // if (opts.genPrismaSchema) {
357
- // const prismaSchema = genPrismaSchemaForEntities(args, allLinks);
358
- // write(join(prjBackSrcPrefixedDir, 'schema.prisma'), prismaSchema);
359
- // }
360
334
  // Graph
361
335
  const graphDir = (0, path_1.join)(prjBackSrcPrefixedDir, 'graph');
362
- // write(
363
- // `${graphMetaServiceDir}/baseResolvers.ts`,
364
- // // graphMetaResolversTmpl()
365
- // )
366
- // // Context
367
- // // src/dc/services/context.ts
368
- // if (opts.genContext && !opts.typesOnly) {
369
- // write(join(servicesDir, 'context.ts'), graphContextTmpl(args));
370
- // }
371
336
  // Types
372
337
  if (opts.genContext) {
373
- (0, fs_jetpack_1.write)((0, path_1.join)(servicesDir, 'BaseServices.ts'), (0, BaseServices_1.default)(args));
338
+ fileWriter.write((0, path_1.join)(servicesDir, 'BaseServices.ts'), (0, BaseServices_1.default)(args));
374
339
  }
375
340
  // Types
376
341
  if (opts.genContext) {
377
- (0, fs_jetpack_1.write)((0, path_1.join)(servicesDir, 'serviceConstrictors.ts'), (0, serviceConstrictors_1.default)(args));
342
+ fileWriter.write((0, path_1.join)(servicesDir, 'serviceConstrictors.ts'), (0, serviceConstrictors_1.default)(args));
378
343
  }
379
- (0, fs_jetpack_1.write)((0, path_1.join)(servicesDir, 'IntegrationClients.ts'), (0, IntegrationClients_1.default)(args));
380
- (0, fs_jetpack_1.write)((0, path_1.join)(servicesDir, 'integrationClientConstrictors.ts'), (0, integrationClientConstrictors_1.default)(args));
344
+ fileWriter.write((0, path_1.join)(servicesDir, 'IntegrationClients.ts'), (0, IntegrationClients_1.default)(args));
345
+ fileWriter.write((0, path_1.join)(servicesDir, 'integrationClientConstrictors.ts'), (0, integrationClientConstrictors_1.default)(args));
381
346
  const generatedAdditionalServices = (0, AdditionalServices_1.additionalServicesTmpl)();
382
- yield (0, utils_1.writeFileIfNotExists)((0, path_1.join)(servicesDir, 'AdditionalServices.ts'), generatedAdditionalServices);
383
- (0, fs_jetpack_1.write)((0, path_1.join)(graphDir, 'permissionsToGraphql.ts'), (0, permissionsToGraphql_1.backPermissionToGraphqlTmpl)(args, opts));
347
+ fileWriter.writeFileIfNotExists((0, path_1.join)(servicesDir, 'AdditionalServices.ts'), generatedAdditionalServices);
348
+ fileWriter.write((0, path_1.join)(graphDir, 'permissionsToGraphql.ts'), (0, permissionsToGraphql_1.backPermissionToGraphqlTmpl)(args, opts));
384
349
  // Root
385
- // src/restRouter.ts
386
350
  const restRouter = (0, restRouter_1.restRouterTmpl)();
387
- yield (0, utils_1.writeFileIfNotExists)((0, path_1.join)(prjDetachedBackSrcDir, 'rest', 'restRouter.ts'), restRouter);
388
- // // src/meta/metadata.json
389
- // const genFolder = join(prjDetachedBackSrcDir, 'gen')
390
- // name: string;
391
- // prefix: string;
392
- // needFor: string;
393
- // configVars: string[];
394
- // deployEnvironments: string[];
395
- // catalogs: EntityWithOptions[];
396
- // documents: EntityWithOptions[];
397
- // infoRegistries: EntityWithOptions[];
398
- // sumRegistries: EntityWithOptions[];
399
- // const metaWithoutOptions = {
400
- // ...system,
401
- // catalogs: system.catalogs,
402
- // documents: system.documents,
403
- // infoRegistries: system.infoRegistries,
404
- // sumRegistries: system.sumRegistries,
405
- // }
406
- // write(
407
- // join(genFolder, 'metadata.json'),
408
- // stringify(metaWithoutOptions, undefined, 1)
409
- // )
351
+ fileWriter.writeFileIfNotExists((0, path_1.join)(prjDetachedBackSrcDir, 'rest', 'restRouter.ts'), restRouter);
410
352
  // UI
411
353
  let prjUiSrcPrefixedDir = '';
412
354
  const prjDetachedUiSrcDir = (0, path_1.join)(opts.detachedUiProject, 'src');
413
- // if (opts.detachedBackProject) {
414
355
  prjUiSrcPrefixedDir = (0, path_1.join)(prjDetachedUiSrcDir, 'adm');
415
- // } else {
416
- // prjUiSrcPrefixedDir = join('/home/name/prj/crawler-ui/src', prefix);
417
- // }
418
356
  if (!opts.typesOnly) {
419
357
  // Resources
420
- // src/dc/resources.tsx genUiResources uiResourcesTmpl
421
358
  if (opts.genUiResources) {
422
359
  const { resources, resourcesChunk0, resourcesChunk1 } = (0, resources_1.uiResourcesTmpl)(args);
423
- (0, fs_jetpack_1.write)((0, path_1.join)(prjUiSrcPrefixedDir, 'resources.tsx'), resources);
424
- (0, fs_jetpack_1.write)((0, path_1.join)(prjUiSrcPrefixedDir, 'resourcesChunk0.tsx'), resourcesChunk0);
425
- (0, fs_jetpack_1.write)((0, path_1.join)(prjUiSrcPrefixedDir, 'resourcesChunk1.tsx'), resourcesChunk1);
360
+ fileWriter.write((0, path_1.join)(prjUiSrcPrefixedDir, 'resources.tsx'), resources);
361
+ fileWriter.write((0, path_1.join)(prjUiSrcPrefixedDir, 'resourcesChunk0.tsx'), resourcesChunk0);
362
+ fileWriter.write((0, path_1.join)(prjUiSrcPrefixedDir, 'resourcesChunk1.tsx'), resourcesChunk1);
426
363
  }
427
364
  // Resources page
428
- // src/dc/ResourcesPage.tsx genUiResourcesPage uiResourcesPageTmpl
429
365
  if (opts.genUiResourcesPage) {
430
366
  const generatedResources = (0, ResourcesPage_1.uiResourcesPageTmpl)(args);
431
- (0, fs_jetpack_1.write)((0, path_1.join)(prjUiSrcPrefixedDir, 'ResourcesPage.tsx'), generatedResources);
367
+ fileWriter.write((0, path_1.join)(prjUiSrcPrefixedDir, 'ResourcesPage.tsx'), generatedResources);
432
368
  }
433
369
  const generatedUiMetaPage = (0, MetaPage_1.uiMetaPageTmpl)();
434
- (0, fs_jetpack_1.write)((0, path_1.join)(prjUiSrcPrefixedDir, 'MetaPage.tsx'), generatedUiMetaPage);
370
+ fileWriter.write((0, path_1.join)(prjUiSrcPrefixedDir, 'MetaPage.tsx'), generatedUiMetaPage);
435
371
  // Resources page
436
- // src/dc/entityMapping.ts genUiEntityMapping uiEntityMappingTmpl
437
372
  if (opts.genUiEntityMapping) {
438
373
  const generatedResources = (0, entityMapping_1.uiEntityMappingTmpl)(args, opts);
439
- (0, fs_jetpack_1.write)((0, path_1.join)(prjUiSrcPrefixedDir, 'entityMapping.ts'), generatedResources);
374
+ fileWriter.write((0, path_1.join)(prjUiSrcPrefixedDir, 'entityMapping.ts'), generatedResources);
440
375
  }
441
376
  // Resources page
442
- // src/dc/ProjectMenu.tsx genUiMenu uiMenuTmpl
443
377
  if (opts.genUiMenu) {
444
378
  const generatedSubMenu = (0, getDefaultMenu_1.uiGetDefaultMenuTmpl)(args);
445
379
  const generatedAdditionalMenu = (0, getAdditionalMenu_1.uiGetAdditionalMenuTmpl)();
446
- (0, fs_jetpack_1.write)((0, path_1.join)(prjUiSrcPrefixedDir, 'getDefaultMenu.ts'), generatedSubMenu);
447
- yield (0, utils_1.writeFileIfNotExists)((0, path_1.join)(prjUiSrcPrefixedDir, 'getAdditionalMenu.ts'), generatedAdditionalMenu);
380
+ fileWriter.write((0, path_1.join)(prjUiSrcPrefixedDir, 'getDefaultMenu.ts'), generatedSubMenu);
381
+ fileWriter.writeFileIfNotExists((0, path_1.join)(prjUiSrcPrefixedDir, 'getAdditionalMenu.ts'), generatedAdditionalMenu);
448
382
  }
449
383
  // Resources page
450
- // src/dc/routes.tsx genUiRoutes uiRoutesTmpl
451
384
  if (opts.genUiRoutes) {
452
385
  const generatedResources = (0, routes_1.default)(args);
453
- (0, fs_jetpack_1.write)((0, path_1.join)(prjUiSrcPrefixedDir, 'routes.tsx'), generatedResources);
386
+ fileWriter.write((0, path_1.join)(prjUiSrcPrefixedDir, 'routes.tsx'), generatedResources);
454
387
  }
455
388
  const generatedUiAdditionalRoutesTmpl = (0, additionalRoutes_1.uiAdditionalRoutesTmpl)();
456
- yield (0, utils_1.writeFileIfNotExists)((0, path_1.join)(prjUiSrcPrefixedDir, 'additionalRoutes.tsx'), generatedUiAdditionalRoutesTmpl);
389
+ fileWriter.writeFileIfNotExists((0, path_1.join)(prjUiSrcPrefixedDir, 'additionalRoutes.tsx'), generatedUiAdditionalRoutesTmpl);
457
390
  // Functions page
458
- // src/dc/functions/Functions.tsx
459
391
  if (opts.genUiFunctions) {
460
392
  const generatedResources = (0, Functions_1.uiFunctionsTmpl)(opts);
461
393
  const uiFunctionsDir = (0, path_1.join)(prjUiSrcPrefixedDir, 'functions');
462
- (0, fs_jetpack_1.write)((0, path_1.join)(uiFunctionsDir, 'Functions.tsx'), generatedResources);
394
+ fileWriter.write((0, path_1.join)(uiFunctionsDir, 'Functions.tsx'), generatedResources);
463
395
  }
464
396
  // Dashboard page
465
- // src/dc/dashboard.tsx
466
397
  if (opts.genUiDashboard) {
467
398
  const generatedResources = (0, Dashboard_1.default)();
468
- yield (0, utils_1.writeFileIfNotExists)((0, path_1.join)(prjUiSrcPrefixedDir, 'Dashboard.tsx'), generatedResources);
399
+ fileWriter.writeFileIfNotExists((0, path_1.join)(prjUiSrcPrefixedDir, 'Dashboard.tsx'), generatedResources);
469
400
  }
470
401
  }
471
- yield (0, generateEnvironment_1.generateEnvironment)(args);
402
+ yield (0, generateEnvironment_1.generateEnvironment)(fileWriter, args);
403
+ (0, utils_1.writeFiles)(filesToWrite);
404
+ reset();
472
405
  });
473
406
  exports.default = generateProject;
474
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVQcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb2plY3RzR2VuZXJhdGlvbi9nZW5lcmF0ZVByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQTJCO0FBQzNCLHVFQUF5RTtBQUN6RSwrRUFBaUY7QUFDakYscUdBQXdHO0FBQ3hHLGtHQUErRTtBQUMvRSwrRUFBaUY7QUFDakYsd0ZBQXFFO0FBQ3JFLGlGQUFtRjtBQUNuRixpRkFBbUY7QUFDbkYsK0RBQTJEO0FBQzNELCtFQUFvRjtBQUNwRix1RkFBbUY7QUFDbkYsbUNBQW9GO0FBQ3BGLHFEQUFpRDtBQUNqRCxnRkFBZ0Y7QUFDaEYsbUNBQThDO0FBQzlDLHFGQUF1RjtBQUN2Rix1RkFBeUY7QUFDekYscUVBQXVFO0FBQ3ZFLG9HQUFvRztBQUVwRywyRkFBbUc7QUFDbkcsMkNBQXVDO0FBQ3ZDLGlHQUF5RztBQUN6RyxtRUFBMkU7QUFDM0UsMENBQXVEO0FBQ3ZELG1HQUEyRztBQUMzRywrR0FBdUg7QUFDdkgsNkdBQXFIO0FBQ3JILGlDQU1lO0FBQ2YsdUZBQXVGO0FBQ3ZGLG1JQUEwRztBQUMxRyx3SEFBb0g7QUFDcEgsdUhBQThGO0FBQzlGLHFIQUE0RjtBQUM1Rix5Q0FBNEM7QUFDNUMsNkdBQXdGO0FBQ3hGLG1IQUE4RjtBQUM5Rix5R0FBeUY7QUFDekYsMkdBQXNGO0FBQ3RGLDJIQUFzRztBQUN0RywrREFBK0Q7QUFDL0QscUVBQXFFO0FBQ3JFLDJFQUErRTtBQUMvRSxxRUFBeUU7QUFDekUsdUhBQXVHO0FBQ3ZHLHVFQUFtRTtBQUNuRSwrRUFBMkU7QUFDM0UsaUdBQW1HO0FBQ25HLDZFQUE2RjtBQUM3RiwySUFBa0g7QUFDbEgsNklBQTRIO0FBQzVILDZDQUF3QztBQUN4QyxxSEFBcUg7QUFDckgsK0dBQXNGO0FBQ3RGLDJFQUF1RTtBQUN2RSwrSUFBNkg7QUFDN0gscUtBQW1KO0FBQ25K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
407
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVQcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb2plY3RzR2VuZXJhdGlvbi9nZW5lcmF0ZVByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQTJCO0FBQzNCLHVFQUF5RTtBQUN6RSwrRUFBaUY7QUFDakYscUdBQXdHO0FBQ3hHLGtHQUErRTtBQUMvRSwrRUFBaUY7QUFDakYsd0ZBQXFFO0FBQ3JFLGlGQUFtRjtBQUNuRixpRkFBbUY7QUFDbkYsK0RBQTJEO0FBQzNELCtFQUFvRjtBQUNwRix1RkFBbUY7QUFDbkYsbUNBQWdHO0FBQ2hHLHFEQUFpRDtBQUNqRCxnRkFBZ0Y7QUFDaEYsbUNBQTZEO0FBQzdELHFGQUF1RjtBQUN2Rix1RkFBeUY7QUFDekYscUVBQXVFO0FBQ3ZFLG9HQUFvRztBQUVwRywyRkFBbUc7QUFDbkcsMkNBQWdDO0FBQ2hDLGlHQUF5RztBQUN6RyxtRUFBMkU7QUFDM0UsMENBQXVEO0FBQ3ZELG1HQUEyRztBQUMzRywrR0FBdUg7QUFDdkgsNkdBQXFIO0FBQ3JILGlDQU1lO0FBQ2YsdUZBQXVGO0FBQ3ZGLG1JQUEwRztBQUMxRyx3SEFBb0g7QUFDcEgsdUhBQThGO0FBQzlGLHFIQUE0RjtBQUM1Rix5Q0FBNEM7QUFDNUMsNkdBQXdGO0FBQ3hGLG1IQUE4RjtBQUM5Rix5R0FBeUY7QUFDekYsMkdBQXNGO0FBQ3RGLDJIQUFzRztBQUN0RywrREFBK0Q7QUFDL0QscUVBQXFFO0FBQ3JFLDJFQUErRTtBQUMvRSxxRUFBeUU7QUFDekUsdUhBQXVHO0FBQ3ZHLHVFQUFtRTtBQUNuRSwrRUFBMkU7QUFDM0UsaUdBQW1HO0FBQ25HLDZFQUE2RjtBQUM3RiwySUFBa0g7QUFDbEgsNklBQTRIO0FBQzVILDZDQUF3QztBQUN4QyxxSEFBcUg7QUFDckgsK0dBQXNGO0FBQ3RGLDJFQUF1RTtBQUN2RSwrSUFBNkg7QUFDN0gscUtBQW1KO0FBQ25K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