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.
- package/build/projectsGeneration/generateAdditionalService.js +6 -15
- package/build/projectsGeneration/generateEntity.js +47 -59
- package/build/projectsGeneration/generateEnvironment.js +28 -52
- package/build/projectsGeneration/generateProject.js +130 -197
- package/build/projectsGeneration/generators/fileTemplates/back/elastic/elastic.js +2 -2
- package/build/projectsGeneration/utils.js +23 -2
- package/build/types/projectsGeneration/generateAdditionalService.d.ts +2 -1
- package/build/types/projectsGeneration/generateEntity.d.ts +2 -1
- package/build/types/projectsGeneration/generateEnvironment.d.ts +2 -1
- package/build/types/projectsGeneration/generateProject.d.ts +28 -27
- package/build/types/projectsGeneration/generators/fileTemplates/back/elastic/elastic.d.ts +2 -1
- package/build/types/projectsGeneration/types.d.ts +9 -0
- package/build/types/projectsGeneration/utils.d.ts +8 -1
- package/package.json +1 -1
|
@@ -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
|
-
|
|
75
|
-
|
|
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
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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
|
-
|
|
105
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
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.
|
|
302
|
-
(0, exports.
|
|
303
|
-
(0, exports.
|
|
304
|
-
(0, exports.
|
|
305
|
-
(0, exports.
|
|
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
|
-
|
|
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,
|
|
337
|
-
...
|
|
338
|
-
|
|
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
|
-
|
|
341
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
342
|
+
fileWriter.write((0, path_1.join)(servicesDir, 'serviceConstrictors.ts'), (0, serviceConstrictors_1.default)(args));
|
|
378
343
|
}
|
|
379
|
-
|
|
380
|
-
|
|
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
|
-
|
|
383
|
-
|
|
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
|
-
|
|
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
|
-
|
|
424
|
-
|
|
425
|
-
|
|
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
|
-
|
|
367
|
+
fileWriter.write((0, path_1.join)(prjUiSrcPrefixedDir, 'ResourcesPage.tsx'), generatedResources);
|
|
432
368
|
}
|
|
433
369
|
const generatedUiMetaPage = (0, MetaPage_1.uiMetaPageTmpl)();
|
|
434
|
-
|
|
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
|
-
|
|
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
|
-
|
|
447
|
-
|
|
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
|
-
|
|
386
|
+
fileWriter.write((0, path_1.join)(prjUiSrcPrefixedDir, 'routes.tsx'), generatedResources);
|
|
454
387
|
}
|
|
455
388
|
const generatedUiAdditionalRoutesTmpl = (0, additionalRoutes_1.uiAdditionalRoutesTmpl)();
|
|
456
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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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
|