ts-openapi-codegen 2.0.0-beta.4 → 2.0.0-beta.6
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/dist/cli/index.js +6 -4
- package/dist/cli/initOpenApiConfig/Types.d.ts +5 -0
- package/dist/cli/initOpenApiConfig/Types.d.ts.map +1 -1
- package/dist/cli/initOpenApiConfig/init.d.ts +6 -0
- package/dist/cli/initOpenApiConfig/init.d.ts.map +1 -0
- package/dist/cli/initOpenApiConfig/init.js +61 -0
- package/dist/cli/initOpenApiConfig/initConfig.d.ts +11 -0
- package/dist/cli/initOpenApiConfig/initConfig.d.ts.map +1 -0
- package/dist/cli/initOpenApiConfig/initConfig.js +102 -0
- package/dist/cli/initOpenApiConfig/initCustomRequest.d.ts +3 -0
- package/dist/cli/initOpenApiConfig/initCustomRequest.d.ts.map +1 -0
- package/dist/cli/initOpenApiConfig/initCustomRequest.js +23 -0
- package/dist/cli/initOpenApiConfig/utils/buildConfig.d.ts +21 -0
- package/dist/cli/initOpenApiConfig/utils/buildConfig.d.ts.map +1 -0
- package/dist/cli/initOpenApiConfig/utils/buildConfig.js +107 -0
- package/dist/cli/initOpenApiConfig/utils/findSpecFiles.d.ts +8 -0
- package/dist/cli/initOpenApiConfig/utils/findSpecFiles.d.ts.map +1 -0
- package/dist/cli/initOpenApiConfig/utils/findSpecFiles.js +40 -0
- package/dist/cli/initOpenApiConfig/utils/registerHandlebarTemplates.d.ts +3 -0
- package/dist/cli/initOpenApiConfig/utils/registerHandlebarTemplates.d.ts.map +1 -0
- package/dist/cli/initOpenApiConfig/utils/registerHandlebarTemplates.js +53 -0
- package/dist/cli/initOpenApiConfig/utils/validateSpecFile.d.ts +7 -0
- package/dist/cli/initOpenApiConfig/utils/validateSpecFile.d.ts.map +1 -0
- package/dist/cli/initOpenApiConfig/utils/validateSpecFile.js +23 -0
- package/dist/cli/initOpenApiConfig/utils/validateSpecFiles.d.ts +11 -0
- package/dist/cli/initOpenApiConfig/utils/validateSpecFiles.d.ts.map +1 -0
- package/dist/cli/initOpenApiConfig/utils/validateSpecFiles.js +24 -0
- package/dist/cli/initOpenApiConfig/utils/writeConfigFile.d.ts +11 -0
- package/dist/cli/initOpenApiConfig/utils/writeConfigFile.d.ts.map +1 -0
- package/dist/cli/initOpenApiConfig/utils/writeConfigFile.js +31 -0
- package/dist/cli/schemas/init.d.ts +4 -2
- package/dist/cli/schemas/init.d.ts.map +1 -1
- package/dist/cli/schemas/init.js +5 -2
- package/dist/common/Consts.d.ts +3 -0
- package/dist/common/Consts.d.ts.map +1 -1
- package/dist/common/Consts.js +4 -1
- package/dist/common/utils/fileSystemHelpers.d.ts +2 -0
- package/dist/common/utils/fileSystemHelpers.d.ts.map +1 -1
- package/dist/common/utils/fileSystemHelpers.js +9 -0
- package/dist/core/WriteClient.d.ts +3 -1
- package/dist/core/WriteClient.d.ts.map +1 -1
- package/dist/core/WriteClient.js +8 -0
- package/dist/core/__tests__/WriteClient.test.js +2 -1
- package/dist/core/types/base/ClientArtifacts.model.d.ts +1 -1
- package/dist/core/types/base/ClientArtifacts.model.d.ts.map +1 -1
- package/dist/core/types/base/SimpleClientArtifacts.model.d.ts +1 -1
- package/dist/core/types/base/SimpleClientArtifacts.model.d.ts.map +1 -1
- package/dist/core/types/base/Templates.model.d.ts +29 -0
- package/dist/core/types/base/Templates.model.d.ts.map +1 -0
- package/dist/core/types/base/Templates.model.js +2 -0
- package/dist/core/utils/__mocks__/templates.d.ts +1 -1
- package/dist/core/utils/__mocks__/templates.d.ts.map +1 -1
- package/dist/core/utils/__mocks__/templates.js +2 -1
- package/dist/core/utils/__tests__/resolveRefToImportPath.test.js +73 -0
- package/dist/core/utils/precompileTemplates.js +1 -0
- package/dist/core/utils/registerHandlebarHelpers.d.ts.map +1 -1
- package/dist/core/utils/registerHandlebarHelpers.js +11 -0
- package/dist/core/utils/registerHandlebarTemplates.d.ts +1 -27
- package/dist/core/utils/registerHandlebarTemplates.d.ts.map +1 -1
- package/dist/core/utils/registerHandlebarTemplates.js +4 -2
- package/dist/core/utils/resolveRefToImportPath.d.ts.map +1 -1
- package/dist/core/utils/resolveRefToImportPath.js +7 -6
- package/dist/core/utils/writeClientCore.d.ts +1 -1
- package/dist/core/utils/writeClientCore.d.ts.map +1 -1
- package/dist/core/utils/writeClientCore.js +3 -2
- package/dist/core/utils/writeClientCoreIndex.d.ts +1 -1
- package/dist/core/utils/writeClientCoreIndex.d.ts.map +1 -1
- package/dist/core/utils/writeClientExecutor.d.ts +12 -0
- package/dist/core/utils/writeClientExecutor.d.ts.map +1 -0
- package/dist/core/utils/writeClientExecutor.js +18 -0
- package/dist/core/utils/writeClientFullIndex.d.ts.map +1 -1
- package/dist/core/utils/writeClientFullIndex.js +1 -1
- package/dist/core/utils/writeClientModels.d.ts +1 -1
- package/dist/core/utils/writeClientModels.d.ts.map +1 -1
- package/dist/core/utils/writeClientModelsIndex.d.ts +1 -1
- package/dist/core/utils/writeClientModelsIndex.d.ts.map +1 -1
- package/dist/core/utils/writeClientSchemas.d.ts +1 -1
- package/dist/core/utils/writeClientSchemas.d.ts.map +1 -1
- package/dist/core/utils/writeClientSchemasIndex.d.ts +1 -1
- package/dist/core/utils/writeClientSchemasIndex.d.ts.map +1 -1
- package/dist/core/utils/writeClientServices.d.ts +1 -1
- package/dist/core/utils/writeClientServices.d.ts.map +1 -1
- package/dist/core/utils/writeClientServicesIndex.d.ts +1 -1
- package/dist/core/utils/writeClientServicesIndex.d.ts.map +1 -1
- package/dist/core/utils/writeClientSimpleIndex.d.ts.map +1 -1
- package/dist/core/utils/writeClientSimpleIndex.js +1 -1
- package/dist/templatesCompiled/cli/customRequest.d.ts +11 -0
- package/dist/templatesCompiled/cli/customRequest.d.ts.map +1 -0
- package/dist/templatesCompiled/cli/customRequest.js +27 -0
- package/dist/templatesCompiled/cli/customRequestExecutor.d.ts +11 -0
- package/dist/templatesCompiled/cli/customRequestExecutor.d.ts.map +1 -0
- package/dist/templatesCompiled/cli/customRequestExecutor.js +27 -0
- package/dist/templatesCompiled/cli/openApiConfig.d.ts +2 -1
- package/dist/templatesCompiled/cli/openApiConfig.d.ts.map +1 -1
- package/dist/templatesCompiled/cli/openApiConfig.js +76 -4
- package/dist/templatesCompiled/client/core/createExecutorAdapter.d.ts +12 -0
- package/dist/templatesCompiled/client/core/createExecutorAdapter.d.ts.map +1 -0
- package/dist/templatesCompiled/client/core/createExecutorAdapter.js +32 -0
- package/dist/templatesCompiled/client/{core/legacy-request-adapter.d.ts → exportClient.d.ts} +3 -1
- package/dist/templatesCompiled/client/exportClient.d.ts.map +1 -0
- package/dist/templatesCompiled/client/exportClient.js +49 -0
- package/dist/templatesCompiled/client/indexCore.js +2 -2
- package/dist/templatesCompiled/client/indexFull.d.ts +12 -9
- package/dist/templatesCompiled/client/indexFull.d.ts.map +1 -1
- package/dist/templatesCompiled/client/indexFull.js +69 -46
- package/dist/templatesCompiled/client/indexSimple.d.ts.map +1 -1
- package/dist/templatesCompiled/client/indexSimple.js +2 -1
- package/dist/templatesCompiled/client/partials/serviceOption.d.ts +2 -1
- package/dist/templatesCompiled/client/partials/serviceOption.d.ts.map +1 -1
- package/dist/templatesCompiled/client/partials/serviceOption.js +36 -30
- package/package.json +1 -1
- package/dist/cli/initOpenApiConfig/runInitOpenapiConfig.d.ts +0 -3
- package/dist/cli/initOpenApiConfig/runInitOpenapiConfig.d.ts.map +0 -1
- package/dist/cli/initOpenApiConfig/runInitOpenapiConfig.js +0 -70
- package/dist/templatesCompiled/client/core/legacy-request-adapter.d.ts.map +0 -1
- package/dist/templatesCompiled/client/core/legacy-request-adapter.js +0 -18
package/dist/cli/index.js
CHANGED
|
@@ -15,8 +15,7 @@ const ValidationLibrary_enum_1 = require("../core/types/enums/ValidationLibrary.
|
|
|
15
15
|
const checkConfig_1 = require("./checkAndUpdateConfig/checkConfig");
|
|
16
16
|
const updateConfig_1 = require("./checkAndUpdateConfig/updateConfig");
|
|
17
17
|
const generateOpenApiClient_1 = require("./generateOpenApiClient/generateOpenApiClient");
|
|
18
|
-
const
|
|
19
|
-
const runInitOpenapiConfig_1 = require("./initOpenApiConfig/runInitOpenapiConfig");
|
|
18
|
+
const init_1 = require("./initOpenApiConfig/init");
|
|
20
19
|
const previewChanges_1 = require("./previewChanges/previewChanges");
|
|
21
20
|
const utils_1 = require("./utils");
|
|
22
21
|
const packageDetails = JSON.parse(fs_1.default.readFileSync((0, pathHelpers_1.joinHelper)(__dirname, '../../package.json'), 'utf-8'));
|
|
@@ -100,12 +99,15 @@ program
|
|
|
100
99
|
.description('Generates a configuration file template for a set of single or multiple options')
|
|
101
100
|
.addHelpText('before', (0, utils_1.getCLIName)(APP_NAME))
|
|
102
101
|
.option('-ocn, --openapi-config <value>', 'The path to the configuration file, listing the options', Consts_1.DEFAULT_OPENAPI_CONFIG_FILENAME)
|
|
103
|
-
.
|
|
102
|
+
.option('-sd, --specs-dir <value>', 'Путь до директории с файлами спецификации', './openapi')
|
|
103
|
+
.option('--request <value>', 'Path to custom request file')
|
|
104
|
+
.option('--useCancelableRequest', 'Use cancelled promise as returned data type in request (default: false)')
|
|
105
|
+
.option('--useInteractiveMode', 'Использовать интерактивный режим команды. В терминале будут задаваться вопросы (default: false)')
|
|
104
106
|
.hook('preAction', async () => {
|
|
105
107
|
await updateNotifier.checkAndNotify();
|
|
106
108
|
})
|
|
107
109
|
.action(async (options) => {
|
|
108
|
-
await (0,
|
|
110
|
+
await (0, init_1.init)(options);
|
|
109
111
|
});
|
|
110
112
|
/**
|
|
111
113
|
* preview-changes - Команда для предпросмотра изменений перед генерацией
|
|
@@ -3,4 +3,9 @@ export type TInitOpenApiConfigParams = {
|
|
|
3
3
|
type: EOptionType;
|
|
4
4
|
openapiConfig?: string;
|
|
5
5
|
};
|
|
6
|
+
export type CLITemplates = {
|
|
7
|
+
config: Handlebars.TemplateDelegate;
|
|
8
|
+
request: Handlebars.TemplateDelegate;
|
|
9
|
+
requestExecutor: Handlebars.TemplateDelegate;
|
|
10
|
+
};
|
|
6
11
|
//# sourceMappingURL=Types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Types.d.ts","sourceRoot":"","sources":["../../../src/cli/initOpenApiConfig/Types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,MAAM,MAAM,wBAAwB,GAAG;IACnC,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAA"}
|
|
1
|
+
{"version":3,"file":"Types.d.ts","sourceRoot":"","sources":["../../../src/cli/initOpenApiConfig/Types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,MAAM,MAAM,wBAAwB,GAAG;IACnC,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACvB,MAAM,EAAE,UAAU,CAAC,gBAAgB,CAAC;IACpC,OAAO,EAAE,UAAU,CAAC,gBAAgB,CAAC;IACrC,eAAe,EAAE,UAAU,CAAC,gBAAgB,CAAC;CAChD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/initOpenApiConfig/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAUzC;;GAEG;AACH,wBAAsB,IAAI,CAAC,OAAO,EAAE,YAAY,iBAmD/C"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.init = init;
|
|
4
|
+
const Consts_1 = require("../../common/Consts");
|
|
5
|
+
const confirmDialog_1 = require("../interactive/confirmDialog");
|
|
6
|
+
const schemas_1 = require("../schemas");
|
|
7
|
+
const validation_1 = require("../validation");
|
|
8
|
+
const initConfig_1 = require("./initConfig");
|
|
9
|
+
const initCustomRequest_1 = require("./initCustomRequest");
|
|
10
|
+
const registerHandlebarTemplates_1 = require("./utils/registerHandlebarTemplates");
|
|
11
|
+
/**
|
|
12
|
+
* Фнукция изначальной настройки файлов конфигурации для последующего запуска генератора
|
|
13
|
+
*/
|
|
14
|
+
async function init(options) {
|
|
15
|
+
let validatedOptions;
|
|
16
|
+
try {
|
|
17
|
+
// Валидация опций через Zod
|
|
18
|
+
const validationResult = (0, validation_1.validateCLIOptions)(schemas_1.initOptionsSchema, options);
|
|
19
|
+
if (!validationResult.success) {
|
|
20
|
+
Consts_1.APP_LOGGER.error(validationResult.error);
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
validatedOptions = validationResult.data;
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
Consts_1.APP_LOGGER.error(error.message);
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
const templates = (0, registerHandlebarTemplates_1.registerHandlebarTemplates)();
|
|
30
|
+
if (validatedOptions.useInteractiveMode) {
|
|
31
|
+
const shouldInitConfig = await (0, confirmDialog_1.confirmDialog)({
|
|
32
|
+
message: 'Желаете сформировать конфигурационный файл для быстрого запуска генератора?',
|
|
33
|
+
initial: false,
|
|
34
|
+
});
|
|
35
|
+
if (shouldInitConfig) {
|
|
36
|
+
// TODO: генерация по шаблону!
|
|
37
|
+
await (0, initConfig_1.initConfig)({
|
|
38
|
+
openapiConfig: validatedOptions.openapiConfig,
|
|
39
|
+
request: validatedOptions.request,
|
|
40
|
+
specsDir: validatedOptions.specsDir,
|
|
41
|
+
templates,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
const shouldInitCustomRequest = await (0, confirmDialog_1.confirmDialog)({
|
|
45
|
+
message: 'Желаете сформировать файл с пользовательским вариантом обработки запросов?',
|
|
46
|
+
initial: false,
|
|
47
|
+
});
|
|
48
|
+
if (shouldInitCustomRequest) {
|
|
49
|
+
await (0, initCustomRequest_1.initCustomRequest)(templates, validatedOptions?.useCancelableRequest);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
await (0, initConfig_1.initConfig)({
|
|
54
|
+
openapiConfig: validatedOptions.openapiConfig,
|
|
55
|
+
request: validatedOptions.request,
|
|
56
|
+
specsDir: validatedOptions.specsDir,
|
|
57
|
+
templates,
|
|
58
|
+
});
|
|
59
|
+
await (0, initCustomRequest_1.initCustomRequest)(templates, validatedOptions?.useCancelableRequest);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { InitOptions } from '../schemas';
|
|
2
|
+
import { CLITemplates } from './Types';
|
|
3
|
+
type InitConfigParams = Pick<InitOptions, 'openapiConfig' | 'specsDir' | 'request'> & {
|
|
4
|
+
templates: CLITemplates;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Инициализирует файл конфигурации OpenAPI
|
|
8
|
+
*/
|
|
9
|
+
export declare function initConfig(params: InitConfigParams): Promise<void>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=initConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initConfig.d.ts","sourceRoot":"","sources":["../../../src/cli/initOpenApiConfig/initConfig.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAMvC,KAAK,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,eAAe,GAAG,UAAU,GAAG,SAAS,CAAC,GAAG;IAClF,SAAS,EAAE,YAAY,CAAC;CAC3B,CAAA;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoGxE"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.initConfig = initConfig;
|
|
4
|
+
const Consts_1 = require("../../common/Consts");
|
|
5
|
+
const fileSystemHelpers_1 = require("../../common/utils/fileSystemHelpers");
|
|
6
|
+
const pathHelpers_1 = require("../../common/utils/pathHelpers");
|
|
7
|
+
const confirmDialog_1 = require("../interactive/confirmDialog");
|
|
8
|
+
const constants_1 = require("../interactive/constants");
|
|
9
|
+
const selectDialog_1 = require("../interactive/selectDialog");
|
|
10
|
+
const types_1 = require("../interactive/types");
|
|
11
|
+
const buildConfig_1 = require("./utils/buildConfig");
|
|
12
|
+
const findSpecFiles_1 = require("./utils/findSpecFiles");
|
|
13
|
+
const validateSpecFiles_1 = require("./utils/validateSpecFiles");
|
|
14
|
+
const writeConfigFile_1 = require("./utils/writeConfigFile");
|
|
15
|
+
/**
|
|
16
|
+
* Инициализирует файл конфигурации OpenAPI
|
|
17
|
+
*/
|
|
18
|
+
async function initConfig(params) {
|
|
19
|
+
const configPath = (0, pathHelpers_1.resolveHelper)(process.cwd(), params.openapiConfig);
|
|
20
|
+
const configExists = await fileSystemHelpers_1.fileSystemHelpers.exists(configPath);
|
|
21
|
+
// Шаг 3: Проверка существования файла конфигурации
|
|
22
|
+
if (configExists) {
|
|
23
|
+
const shouldRegenerate = await (0, confirmDialog_1.confirmDialog)({
|
|
24
|
+
message: 'Configuration file already exists. Do you want to regenerate it?',
|
|
25
|
+
initial: false,
|
|
26
|
+
});
|
|
27
|
+
if (!shouldRegenerate) {
|
|
28
|
+
Consts_1.APP_LOGGER.info('Configuration file left unchanged.');
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const currentSpecsDir = params.specsDir;
|
|
33
|
+
// Шаг 4: Формирование файла конфигурации
|
|
34
|
+
// Поиск файлов спецификаций
|
|
35
|
+
let specFiles = [];
|
|
36
|
+
try {
|
|
37
|
+
specFiles = await (0, findSpecFiles_1.findSpecFiles)(currentSpecsDir);
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
Consts_1.APP_LOGGER.warn(`Error finding spec files: ${error instanceof Error ? error.message : String(error)}`);
|
|
41
|
+
}
|
|
42
|
+
if (specFiles.length === 0) {
|
|
43
|
+
Consts_1.APP_LOGGER.warn(`No spec files found in directory: ${currentSpecsDir}`);
|
|
44
|
+
}
|
|
45
|
+
// Валидация файлов
|
|
46
|
+
const validatedSpecs = await (0, validateSpecFiles_1.validateSpecFiles)(specFiles);
|
|
47
|
+
let config;
|
|
48
|
+
let useMultiOption = false;
|
|
49
|
+
let customRequest;
|
|
50
|
+
let perSpecRequest = false;
|
|
51
|
+
if (validatedSpecs.length > 0) {
|
|
52
|
+
// Если найдены валидные спецификации, спрашиваем о типе конфигурации
|
|
53
|
+
useMultiOption = validatedSpecs.length > 1;
|
|
54
|
+
// Спрашиваем про пользовательскую реализацию request
|
|
55
|
+
const hasCustomRequest = await (0, confirmDialog_1.confirmDialog)({
|
|
56
|
+
message: 'Do you want to use a custom request implementation?',
|
|
57
|
+
initial: false,
|
|
58
|
+
});
|
|
59
|
+
if (hasCustomRequest) {
|
|
60
|
+
if (useMultiOption) {
|
|
61
|
+
perSpecRequest = await (0, confirmDialog_1.confirmDialog)({
|
|
62
|
+
message: 'Will each specification have its own request?',
|
|
63
|
+
initial: false,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
customRequest = params.request;
|
|
67
|
+
}
|
|
68
|
+
config = await (0, buildConfig_1.buildConfig)(validatedSpecs, useMultiOption, customRequest, perSpecRequest);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
// Если валидных спецификаций нет, предлагаем создать пример
|
|
72
|
+
Consts_1.APP_LOGGER.warn('No valid OpenAPI specification files found.');
|
|
73
|
+
const action = await (0, selectDialog_1.selectDialog)({
|
|
74
|
+
message: 'What would you like to do?',
|
|
75
|
+
choices: constants_1.OPEN_API_CONFIG_SELECT_OPTIONS,
|
|
76
|
+
initial: 0,
|
|
77
|
+
});
|
|
78
|
+
if (action === types_1.EConfigType.NONE) {
|
|
79
|
+
Consts_1.APP_LOGGER.info('Configuration file generation cancelled.');
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
useMultiOption = action === types_1.EConfigType.MULTI;
|
|
83
|
+
// Спрашиваем про пользовательскую реализацию request
|
|
84
|
+
const hasCustomRequest = await (0, confirmDialog_1.confirmDialog)({
|
|
85
|
+
message: 'Do you want to use a custom request implementation?',
|
|
86
|
+
initial: false,
|
|
87
|
+
});
|
|
88
|
+
if (hasCustomRequest) {
|
|
89
|
+
if (useMultiOption) {
|
|
90
|
+
perSpecRequest = await (0, confirmDialog_1.confirmDialog)({
|
|
91
|
+
message: 'Will each specification have its own request?',
|
|
92
|
+
initial: false,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
customRequest = './custom-request.ts';
|
|
96
|
+
}
|
|
97
|
+
// Создаем пример конфигурации
|
|
98
|
+
config = (0, buildConfig_1.buildExampleConfig)(useMultiOption, customRequest, perSpecRequest);
|
|
99
|
+
}
|
|
100
|
+
// Записываем конфигурацию на диск
|
|
101
|
+
await (0, writeConfigFile_1.writeConfigFile)(params.openapiConfig, config, params.templates);
|
|
102
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initCustomRequest.d.ts","sourceRoot":"","sources":["../../../src/cli/initOpenApiConfig/initCustomRequest.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,YAAY,EAAE,oBAAoB,CAAC,EAAE,OAAO,iBAkB9F"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.initCustomRequest = initCustomRequest;
|
|
4
|
+
const fileSystemHelpers_1 = require("../../common/utils/fileSystemHelpers");
|
|
5
|
+
const format_1 = require("../../common/utils/format");
|
|
6
|
+
const pathHelpers_1 = require("../../common/utils/pathHelpers");
|
|
7
|
+
const confirmDialog_1 = require("../interactive/confirmDialog");
|
|
8
|
+
async function initCustomRequest(templates, useCancelableRequest) {
|
|
9
|
+
// TODO: Подумать над правильной постановкой вопроса!
|
|
10
|
+
const shouldRequestExecutor = await (0, confirmDialog_1.confirmDialog)({
|
|
11
|
+
message: 'Желаете сформировать пользовательский обработчик request в новом формате?',
|
|
12
|
+
initial: false,
|
|
13
|
+
});
|
|
14
|
+
const artifacts = {
|
|
15
|
+
useCancelableRequest,
|
|
16
|
+
};
|
|
17
|
+
const customRequestPath = './src/custom/request.ts';
|
|
18
|
+
const file = (0, pathHelpers_1.resolveHelper)(process.cwd(), customRequestPath);
|
|
19
|
+
const templateResult = shouldRequestExecutor ? templates.requestExecutor(artifacts) : templates.request(artifacts);
|
|
20
|
+
const formattedValue = await (0, format_1.format)(templateResult);
|
|
21
|
+
await fileSystemHelpers_1.fileSystemHelpers.writeFile(file, formattedValue);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { TRawOptions } from '../../../common/TRawOptions';
|
|
2
|
+
import { ValidatedSpec } from './validateSpecFiles';
|
|
3
|
+
/**
|
|
4
|
+
* Формирует конфигурацию на основе валидированных спецификаций
|
|
5
|
+
* @param validatedSpecs - Массив валидированных спецификаций
|
|
6
|
+
* @param useMultiOption - Использовать множественный формат (items)
|
|
7
|
+
* @param customRequest - Путь к кастомной реализации request (опционально)
|
|
8
|
+
* @param perSpecRequest - Использовать отдельный request для каждой спецификации (только для MULTI)
|
|
9
|
+
* @returns Объект конфигурации
|
|
10
|
+
* @throws {Error} Если нет валидированных спецификаций для плоского формата
|
|
11
|
+
*/
|
|
12
|
+
export declare function buildConfig(validatedSpecs: ValidatedSpec[], useMultiOption: boolean, customRequest?: string, perSpecRequest?: boolean): Promise<TRawOptions>;
|
|
13
|
+
/**
|
|
14
|
+
* Создает пример конфигурации, когда нет валидированных спецификаций
|
|
15
|
+
* @param useMultiOption - Использовать множественный формат (items)
|
|
16
|
+
* @param customRequest - Путь к кастомной реализации request (опционально)
|
|
17
|
+
* @param perSpecRequest - Использовать отдельный request для каждой спецификации (только для MULTI)
|
|
18
|
+
* @returns Объект конфигурации-примера
|
|
19
|
+
*/
|
|
20
|
+
export declare function buildExampleConfig(useMultiOption: boolean, customRequest?: string, perSpecRequest?: boolean): TRawOptions;
|
|
21
|
+
//# sourceMappingURL=buildConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildConfig.d.ts","sourceRoot":"","sources":["../../../../src/cli/initOpenApiConfig/utils/buildConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CA8ClK;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,WAAW,CAuCzH"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildConfig = buildConfig;
|
|
4
|
+
exports.buildExampleConfig = buildExampleConfig;
|
|
5
|
+
const Consts_1 = require("../../../common/Consts");
|
|
6
|
+
/**
|
|
7
|
+
* Формирует конфигурацию на основе валидированных спецификаций
|
|
8
|
+
* @param validatedSpecs - Массив валидированных спецификаций
|
|
9
|
+
* @param useMultiOption - Использовать множественный формат (items)
|
|
10
|
+
* @param customRequest - Путь к кастомной реализации request (опционально)
|
|
11
|
+
* @param perSpecRequest - Использовать отдельный request для каждой спецификации (только для MULTI)
|
|
12
|
+
* @returns Объект конфигурации
|
|
13
|
+
* @throws {Error} Если нет валидированных спецификаций для плоского формата
|
|
14
|
+
*/
|
|
15
|
+
async function buildConfig(validatedSpecs, useMultiOption, customRequest, perSpecRequest) {
|
|
16
|
+
if (useMultiOption) {
|
|
17
|
+
const items = validatedSpecs.map(spec => ({
|
|
18
|
+
input: spec.relativePath,
|
|
19
|
+
output: Consts_1.DEFAULT_OUTPUT_API_DIR,
|
|
20
|
+
...(perSpecRequest && customRequest ? { request: customRequest } : {}),
|
|
21
|
+
}));
|
|
22
|
+
return {
|
|
23
|
+
items,
|
|
24
|
+
httpClient: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.httpClient,
|
|
25
|
+
sortByRequired: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.sortByRequired,
|
|
26
|
+
enumPrefix: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.enumPrefix,
|
|
27
|
+
excludeCoreServiceFiles: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.excludeCoreServiceFiles,
|
|
28
|
+
interfacePrefix: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.interfacePrefix,
|
|
29
|
+
typePrefix: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.typePrefix,
|
|
30
|
+
useCancelableRequest: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.useCancelableRequest,
|
|
31
|
+
useOptions: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.useOptions,
|
|
32
|
+
useSeparatedIndexes: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.useSeparatedIndexes,
|
|
33
|
+
useUnionTypes: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.useUnionTypes,
|
|
34
|
+
...(!perSpecRequest && customRequest ? { request: customRequest } : {}),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
if (validatedSpecs.length === 0) {
|
|
39
|
+
throw new Error('No validated spec files found');
|
|
40
|
+
}
|
|
41
|
+
// Для плоского варианта используем первую спецификацию
|
|
42
|
+
const firstSpec = validatedSpecs[0];
|
|
43
|
+
return {
|
|
44
|
+
input: firstSpec.relativePath,
|
|
45
|
+
output: Consts_1.DEFAULT_OUTPUT_API_DIR,
|
|
46
|
+
httpClient: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.httpClient,
|
|
47
|
+
sortByRequired: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.sortByRequired,
|
|
48
|
+
enumPrefix: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.enumPrefix,
|
|
49
|
+
excludeCoreServiceFiles: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.excludeCoreServiceFiles,
|
|
50
|
+
interfacePrefix: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.interfacePrefix,
|
|
51
|
+
typePrefix: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.typePrefix,
|
|
52
|
+
useCancelableRequest: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.useCancelableRequest,
|
|
53
|
+
useOptions: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.useOptions,
|
|
54
|
+
useSeparatedIndexes: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.useSeparatedIndexes,
|
|
55
|
+
useUnionTypes: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.useUnionTypes,
|
|
56
|
+
...(customRequest ? { request: customRequest } : {}),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Создает пример конфигурации, когда нет валидированных спецификаций
|
|
62
|
+
* @param useMultiOption - Использовать множественный формат (items)
|
|
63
|
+
* @param customRequest - Путь к кастомной реализации request (опционально)
|
|
64
|
+
* @param perSpecRequest - Использовать отдельный request для каждой спецификации (только для MULTI)
|
|
65
|
+
* @returns Объект конфигурации-примера
|
|
66
|
+
*/
|
|
67
|
+
function buildExampleConfig(useMultiOption, customRequest, perSpecRequest) {
|
|
68
|
+
if (useMultiOption) {
|
|
69
|
+
return {
|
|
70
|
+
items: [
|
|
71
|
+
{
|
|
72
|
+
input: './openapi/spec.yml',
|
|
73
|
+
output: Consts_1.DEFAULT_OUTPUT_API_DIR,
|
|
74
|
+
...(perSpecRequest && customRequest ? { request: customRequest } : {}),
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
httpClient: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.httpClient,
|
|
78
|
+
sortByRequired: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.sortByRequired,
|
|
79
|
+
enumPrefix: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.enumPrefix,
|
|
80
|
+
excludeCoreServiceFiles: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.excludeCoreServiceFiles,
|
|
81
|
+
interfacePrefix: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.interfacePrefix,
|
|
82
|
+
typePrefix: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.typePrefix,
|
|
83
|
+
useCancelableRequest: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.useCancelableRequest,
|
|
84
|
+
useOptions: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.useOptions,
|
|
85
|
+
useSeparatedIndexes: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.useSeparatedIndexes,
|
|
86
|
+
useUnionTypes: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.useUnionTypes,
|
|
87
|
+
...(!perSpecRequest && customRequest ? { request: customRequest } : {}),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
return {
|
|
92
|
+
input: './openapi/spec.yml',
|
|
93
|
+
output: Consts_1.DEFAULT_OUTPUT_API_DIR,
|
|
94
|
+
httpClient: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.httpClient,
|
|
95
|
+
sortByRequired: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.sortByRequired,
|
|
96
|
+
enumPrefix: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.enumPrefix,
|
|
97
|
+
excludeCoreServiceFiles: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.excludeCoreServiceFiles,
|
|
98
|
+
interfacePrefix: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.interfacePrefix,
|
|
99
|
+
typePrefix: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.typePrefix,
|
|
100
|
+
useCancelableRequest: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.useCancelableRequest,
|
|
101
|
+
useOptions: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.useOptions,
|
|
102
|
+
useSeparatedIndexes: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.useSeparatedIndexes,
|
|
103
|
+
useUnionTypes: Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.useUnionTypes,
|
|
104
|
+
...(customRequest ? { request: customRequest } : {}),
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Находит все файлы спецификаций в директории
|
|
3
|
+
* @param specsDir - Путь к директории со спецификациями
|
|
4
|
+
* @returns Массив путей к файлам спецификаций
|
|
5
|
+
* @throws {Error} Если директория не существует или не является директорией
|
|
6
|
+
*/
|
|
7
|
+
export declare function findSpecFiles(specsDir: string): Promise<string[]>;
|
|
8
|
+
//# sourceMappingURL=findSpecFiles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findSpecFiles.d.ts","sourceRoot":"","sources":["../../../../src/cli/initOpenApiConfig/utils/findSpecFiles.ts"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA6BvE"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.findSpecFiles = findSpecFiles;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const fileSystemHelpers_1 = require("../../../common/utils/fileSystemHelpers");
|
|
9
|
+
const pathHelpers_1 = require("../../../common/utils/pathHelpers");
|
|
10
|
+
const SPEC_EXTENSIONS = ['.json', '.yaml', '.yml'];
|
|
11
|
+
/**
|
|
12
|
+
* Находит все файлы спецификаций в директории
|
|
13
|
+
* @param specsDir - Путь к директории со спецификациями
|
|
14
|
+
* @returns Массив путей к файлам спецификаций
|
|
15
|
+
* @throws {Error} Если директория не существует или не является директорией
|
|
16
|
+
*/
|
|
17
|
+
async function findSpecFiles(specsDir) {
|
|
18
|
+
const resolvedDir = (0, pathHelpers_1.resolveHelper)(process.cwd(), specsDir);
|
|
19
|
+
const dirExists = await fileSystemHelpers_1.fileSystemHelpers.exists(resolvedDir);
|
|
20
|
+
if (!dirExists) {
|
|
21
|
+
throw new Error(`Directory does not exist: ${specsDir}`);
|
|
22
|
+
}
|
|
23
|
+
const isDir = fileSystemHelpers_1.fileSystemHelpers.isDirectory(resolvedDir);
|
|
24
|
+
if (!isDir) {
|
|
25
|
+
throw new Error(`Path is not a directory: ${specsDir}`);
|
|
26
|
+
}
|
|
27
|
+
const files = await fileSystemHelpers_1.fileSystemHelpers.readdir(resolvedDir);
|
|
28
|
+
const specFiles = [];
|
|
29
|
+
for (const file of files) {
|
|
30
|
+
const filePath = (0, pathHelpers_1.joinHelper)(resolvedDir, file);
|
|
31
|
+
const isFile = fileSystemHelpers_1.fileSystemHelpers.isPathToFile(filePath);
|
|
32
|
+
if (isFile) {
|
|
33
|
+
const ext = path_1.default.extname(file).toLowerCase();
|
|
34
|
+
if (SPEC_EXTENSIONS.includes(ext)) {
|
|
35
|
+
specFiles.push(filePath);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return specFiles;
|
|
40
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registerHandlebarTemplates.d.ts","sourceRoot":"","sources":["../../../../src/cli/initOpenApiConfig/utils/registerHandlebarTemplates.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC,wBAAgB,0BAA0B,IAAI,YAAY,CAUzD"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.registerHandlebarTemplates = registerHandlebarTemplates;
|
|
40
|
+
const Handlebars = __importStar(require("handlebars/runtime"));
|
|
41
|
+
const customRequest_1 = __importDefault(require("../../../templatesCompiled/cli/customRequest"));
|
|
42
|
+
const customRequestExecutor_1 = __importDefault(require("../../../templatesCompiled/cli/customRequestExecutor"));
|
|
43
|
+
const openApiConfig_1 = __importDefault(require("../../../templatesCompiled/cli/openApiConfig"));
|
|
44
|
+
const header_1 = __importDefault(require("../../../templatesCompiled/client/partials/header"));
|
|
45
|
+
function registerHandlebarTemplates() {
|
|
46
|
+
const templates = {
|
|
47
|
+
config: Handlebars.template(openApiConfig_1.default),
|
|
48
|
+
request: Handlebars.template(customRequest_1.default),
|
|
49
|
+
requestExecutor: Handlebars.template(customRequestExecutor_1.default),
|
|
50
|
+
};
|
|
51
|
+
Handlebars.registerPartial('header', Handlebars.template(header_1.default));
|
|
52
|
+
return templates;
|
|
53
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Валидирует файл спецификации через SwaggerParser
|
|
3
|
+
* @param filePath - Путь к файлу спецификации
|
|
4
|
+
* @returns true, если файл валиден, false в противном случае
|
|
5
|
+
*/
|
|
6
|
+
export declare function validateSpecFile(filePath: string): Promise<boolean>;
|
|
7
|
+
//# sourceMappingURL=validateSpecFile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateSpecFile.d.ts","sourceRoot":"","sources":["../../../../src/cli/initOpenApiConfig/utils/validateSpecFile.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQzE"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.validateSpecFile = validateSpecFile;
|
|
7
|
+
const swagger_parser_1 = __importDefault(require("@apidevtools/swagger-parser"));
|
|
8
|
+
const Consts_1 = require("../../../common/Consts");
|
|
9
|
+
/**
|
|
10
|
+
* Валидирует файл спецификации через SwaggerParser
|
|
11
|
+
* @param filePath - Путь к файлу спецификации
|
|
12
|
+
* @returns true, если файл валиден, false в противном случае
|
|
13
|
+
*/
|
|
14
|
+
async function validateSpecFile(filePath) {
|
|
15
|
+
try {
|
|
16
|
+
await swagger_parser_1.default.validate(filePath);
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
Consts_1.APP_LOGGER.warn(`Skipping invalid spec file: ${filePath}`);
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface ValidatedSpec {
|
|
2
|
+
path: string;
|
|
3
|
+
relativePath: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Валидирует все файлы спецификаций
|
|
7
|
+
* @param specFiles - Массив путей к файлам спецификаций
|
|
8
|
+
* @returns Массив валидированных спецификаций с относительными путями
|
|
9
|
+
*/
|
|
10
|
+
export declare function validateSpecFiles(specFiles: string[]): Promise<ValidatedSpec[]>;
|
|
11
|
+
//# sourceMappingURL=validateSpecFiles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateSpecFiles.d.ts","sourceRoot":"","sources":["../../../../src/cli/initOpenApiConfig/utils/validateSpecFiles.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAerF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateSpecFiles = validateSpecFiles;
|
|
4
|
+
const pathHelpers_1 = require("../../../common/utils/pathHelpers");
|
|
5
|
+
const validateSpecFile_1 = require("./validateSpecFile");
|
|
6
|
+
/**
|
|
7
|
+
* Валидирует все файлы спецификаций
|
|
8
|
+
* @param specFiles - Массив путей к файлам спецификаций
|
|
9
|
+
* @returns Массив валидированных спецификаций с относительными путями
|
|
10
|
+
*/
|
|
11
|
+
async function validateSpecFiles(specFiles) {
|
|
12
|
+
const validatedSpecs = [];
|
|
13
|
+
for (const specFile of specFiles) {
|
|
14
|
+
const isValid = await (0, validateSpecFile_1.validateSpecFile)(specFile);
|
|
15
|
+
if (isValid) {
|
|
16
|
+
const relativePath = (0, pathHelpers_1.relativeHelper)(process.cwd(), specFile);
|
|
17
|
+
validatedSpecs.push({
|
|
18
|
+
path: specFile,
|
|
19
|
+
relativePath,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return validatedSpecs;
|
|
24
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TRawOptions } from '../../../common/TRawOptions';
|
|
2
|
+
import { CLITemplates } from '../Types';
|
|
3
|
+
/**
|
|
4
|
+
* Записывает конфигурацию в файл
|
|
5
|
+
* @param configPath - Путь к файлу конфигурации
|
|
6
|
+
* @param config - Объект конфигурации для записи
|
|
7
|
+
* @param templates
|
|
8
|
+
* @throws {Error} Если не удалось записать файл
|
|
9
|
+
*/
|
|
10
|
+
export declare function writeConfigFile(configPath: string, config: TRawOptions, templates: CLITemplates): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=writeConfigFile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writeConfigFile.d.ts","sourceRoot":"","sources":["../../../../src/cli/initOpenApiConfig/utils/writeConfigFile.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI1D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAerH"}
|