@microsoft/teamsfx-core 2.0.7-alpha.bdb04bd16.0 → 2.0.7-alpha.c6bb96186.0
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/common/constants.d.ts +3 -1
- package/build/common/constants.d.ts.map +1 -1
- package/build/common/constants.js +3 -1
- package/build/common/constants.js.map +1 -1
- package/build/common/featureFlags.d.ts +1 -0
- package/build/common/featureFlags.d.ts.map +1 -1
- package/build/common/featureFlags.js +6 -1
- package/build/common/featureFlags.js.map +1 -1
- package/build/common/local/packageJsonHelper.d.ts.map +1 -1
- package/build/common/local/packageJsonHelper.js +1 -2
- package/build/common/local/packageJsonHelper.js.map +1 -1
- package/build/common/m365/packageService.d.ts +1 -0
- package/build/common/m365/packageService.d.ts.map +1 -1
- package/build/common/m365/packageService.js +13 -0
- package/build/common/m365/packageService.js.map +1 -1
- package/build/common/projectSettingsHelper.d.ts +3 -0
- package/build/common/projectSettingsHelper.d.ts.map +1 -1
- package/build/common/projectSettingsHelper.js +29 -1
- package/build/common/projectSettingsHelper.js.map +1 -1
- package/build/common/projectTypeChecker.d.ts.map +1 -1
- package/build/common/projectTypeChecker.js +1 -2
- package/build/common/projectTypeChecker.js.map +1 -1
- package/build/common/samples.d.ts +3 -2
- package/build/common/samples.d.ts.map +1 -1
- package/build/common/samples.js +84 -40
- package/build/common/samples.js.map +1 -1
- package/build/common/templates-config.json +1 -1
- package/build/component/coordinator/index.d.ts +8 -1
- package/build/component/coordinator/index.d.ts.map +1 -1
- package/build/component/coordinator/index.js +56 -5
- package/build/component/coordinator/index.js.map +1 -1
- package/build/component/driver/aad/utility/aadAppClient.d.ts +1 -0
- package/build/component/driver/aad/utility/aadAppClient.d.ts.map +1 -1
- package/build/component/driver/aad/utility/aadAppClient.js +14 -0
- package/build/component/driver/aad/utility/aadAppClient.js.map +1 -1
- package/build/component/driver/apiKey/create.js +2 -2
- package/build/component/driver/apiKey/create.js.map +1 -1
- package/build/component/driver/deploy/azure/impl/AzureZipDeployImpl.d.ts.map +1 -1
- package/build/component/driver/deploy/azure/impl/AzureZipDeployImpl.js +5 -5
- package/build/component/driver/deploy/azure/impl/AzureZipDeployImpl.js.map +1 -1
- package/build/component/driver/teamsApp/clients/appStudioClient.d.ts +30 -0
- package/build/component/driver/teamsApp/clients/appStudioClient.d.ts.map +1 -1
- package/build/component/driver/teamsApp/clients/appStudioClient.js +63 -0
- package/build/component/driver/teamsApp/clients/appStudioClient.js.map +1 -1
- package/build/component/driver/teamsApp/constants.d.ts +3 -0
- package/build/component/driver/teamsApp/constants.d.ts.map +1 -1
- package/build/component/driver/teamsApp/constants.js +3 -0
- package/build/component/driver/teamsApp/constants.js.map +1 -1
- package/build/component/driver/teamsApp/createAppPackage.d.ts +3 -0
- package/build/component/driver/teamsApp/createAppPackage.d.ts.map +1 -1
- package/build/component/driver/teamsApp/createAppPackage.js +61 -14
- package/build/component/driver/teamsApp/createAppPackage.js.map +1 -1
- package/build/component/driver/teamsApp/errors.d.ts +4 -0
- package/build/component/driver/teamsApp/errors.d.ts.map +1 -1
- package/build/component/driver/teamsApp/errors.js +7 -0
- package/build/component/driver/teamsApp/errors.js.map +1 -1
- package/build/component/driver/teamsApp/interfaces/AsyncAppValidationDetailsResponse.d.ts +21 -0
- package/build/component/driver/teamsApp/interfaces/AsyncAppValidationDetailsResponse.d.ts.map +1 -0
- package/build/component/driver/teamsApp/interfaces/AsyncAppValidationDetailsResponse.js +5 -0
- package/build/component/driver/teamsApp/interfaces/AsyncAppValidationDetailsResponse.js.map +1 -0
- package/build/component/driver/teamsApp/interfaces/AsyncAppValidationResponse.d.ts +17 -0
- package/build/component/driver/teamsApp/interfaces/AsyncAppValidationResponse.d.ts.map +1 -0
- package/build/component/driver/teamsApp/interfaces/AsyncAppValidationResponse.js +16 -0
- package/build/component/driver/teamsApp/interfaces/AsyncAppValidationResponse.js.map +1 -0
- package/build/component/driver/teamsApp/interfaces/AsyncAppValidationResultsResponse.d.ts +41 -0
- package/build/component/driver/teamsApp/interfaces/AsyncAppValidationResultsResponse.d.ts.map +1 -0
- package/build/component/driver/teamsApp/interfaces/AsyncAppValidationResultsResponse.js +5 -0
- package/build/component/driver/teamsApp/interfaces/AsyncAppValidationResultsResponse.js.map +1 -0
- package/build/component/driver/teamsApp/utils/ManifestUtils.d.ts +1 -0
- package/build/component/driver/teamsApp/utils/ManifestUtils.d.ts.map +1 -1
- package/build/component/driver/teamsApp/utils/ManifestUtils.js +17 -0
- package/build/component/driver/teamsApp/utils/ManifestUtils.js.map +1 -1
- package/build/component/driver/teamsApp/utils/PluginManifestUtils.d.ts +8 -0
- package/build/component/driver/teamsApp/utils/PluginManifestUtils.d.ts.map +1 -0
- package/build/component/driver/teamsApp/utils/PluginManifestUtils.js +63 -0
- package/build/component/driver/teamsApp/utils/PluginManifestUtils.js.map +1 -0
- package/build/component/generator/copilotPlugin/generator.d.ts +4 -2
- package/build/component/generator/copilotPlugin/generator.d.ts.map +1 -1
- package/build/component/generator/copilotPlugin/generator.js +50 -18
- package/build/component/generator/copilotPlugin/generator.js.map +1 -1
- package/build/component/generator/copilotPlugin/helper.d.ts +5 -3
- package/build/component/generator/copilotPlugin/helper.d.ts.map +1 -1
- package/build/component/generator/copilotPlugin/helper.js +67 -25
- package/build/component/generator/copilotPlugin/helper.js.map +1 -1
- package/build/component/generator/error.d.ts +1 -1
- package/build/component/generator/error.d.ts.map +1 -1
- package/build/component/generator/error.js +4 -4
- package/build/component/generator/error.js.map +1 -1
- package/build/component/generator/generator.d.ts +5 -0
- package/build/component/generator/generator.d.ts.map +1 -1
- package/build/component/generator/generator.js +27 -25
- package/build/component/generator/generator.js.map +1 -1
- package/build/component/generator/generatorAction.d.ts +5 -15
- package/build/component/generator/generatorAction.d.ts.map +1 -1
- package/build/component/generator/generatorAction.js +44 -92
- package/build/component/generator/generatorAction.js.map +1 -1
- package/build/component/generator/officeAddin/config/projectProperties.d.ts +1 -0
- package/build/component/generator/officeAddin/config/projectProperties.d.ts.map +1 -1
- package/build/component/generator/officeAddin/config/projectProperties.js +1 -0
- package/build/component/generator/officeAddin/config/projectProperties.js.map +1 -1
- package/build/component/generator/officeAddin/config/projectsJsonData.d.ts +1 -4
- package/build/component/generator/officeAddin/config/projectsJsonData.d.ts.map +1 -1
- package/build/component/generator/officeAddin/config/projectsJsonData.js +4 -11
- package/build/component/generator/officeAddin/config/projectsJsonData.js.map +1 -1
- package/build/component/generator/officeAddin/generator.d.ts.map +1 -1
- package/build/component/generator/officeAddin/generator.js +13 -7
- package/build/component/generator/officeAddin/generator.js.map +1 -1
- package/build/component/generator/officeAddin/helperMethods.d.ts +2 -1
- package/build/component/generator/officeAddin/helperMethods.d.ts.map +1 -1
- package/build/component/generator/officeAddin/helperMethods.js +21 -10
- package/build/component/generator/officeAddin/helperMethods.js.map +1 -1
- package/build/component/generator/officeXMLAddin/generator.d.ts +9 -0
- package/build/component/generator/officeXMLAddin/generator.d.ts.map +1 -0
- package/build/component/generator/officeXMLAddin/generator.js +90 -0
- package/build/component/generator/officeXMLAddin/generator.js.map +1 -0
- package/build/component/generator/officeXMLAddin/projectConfig.d.ts +36 -0
- package/build/component/generator/officeXMLAddin/projectConfig.d.ts.map +1 -0
- package/build/component/generator/officeXMLAddin/projectConfig.js +127 -0
- package/build/component/generator/officeXMLAddin/projectConfig.js.map +1 -0
- package/build/component/generator/utils.d.ts +0 -1
- package/build/component/generator/utils.d.ts.map +1 -1
- package/build/component/generator/utils.js +29 -18
- package/build/component/generator/utils.js.map +1 -1
- package/build/component/utils/envUtil.d.ts.map +1 -1
- package/build/component/utils/envUtil.js +1 -0
- package/build/component/utils/envUtil.js.map +1 -1
- package/build/core/FxCore.d.ts.map +1 -1
- package/build/core/FxCore.js +21 -12
- package/build/core/FxCore.js.map +1 -1
- package/build/error/arm.d.ts.map +1 -1
- package/build/error/arm.js +0 -2
- package/build/error/arm.js.map +1 -1
- package/build/error/common.d.ts.map +1 -1
- package/build/error/common.js +1 -1
- package/build/error/common.js.map +1 -1
- package/build/error/deploy.d.ts.map +1 -1
- package/build/error/deploy.js +17 -6
- package/build/error/deploy.js.map +1 -1
- package/build/question/constants.d.ts +1 -0
- package/build/question/constants.d.ts.map +1 -1
- package/build/question/constants.js +2 -1
- package/build/question/constants.js.map +1 -1
- package/build/question/create.d.ts +27 -2
- package/build/question/create.d.ts.map +1 -1
- package/build/question/create.js +428 -61
- package/build/question/create.js.map +1 -1
- package/build/question/inputs/CreateProjectInputs.d.ts +18 -6
- package/build/question/inputs/CreateProjectInputs.d.ts.map +1 -1
- package/build/question/options/CreateProjectOptions.d.ts.map +1 -1
- package/build/question/options/CreateProjectOptions.js +46 -11
- package/build/question/options/CreateProjectOptions.js.map +1 -1
- package/build/question/questionNames.d.ts +10 -1
- package/build/question/questionNames.d.ts.map +1 -1
- package/build/question/questionNames.js +9 -0
- package/build/question/questionNames.js.map +1 -1
- package/package.json +6 -6
- package/resource/package.nls.json +157 -78
- package/templates/fallback/common.zip +0 -0
- package/templates/fallback/csharp.zip +0 -0
- package/templates/fallback/js.zip +0 -0
- package/templates/fallback/ts.zip +0 -0
- package/templates/plugins/resource/aad/auth/V3/Enable SSO.txt +1 -1
- package/build/common/spec-parser/adaptiveCardGenerator.d.ts +0 -7
- package/build/common/spec-parser/adaptiveCardGenerator.d.ts.map +0 -1
- package/build/common/spec-parser/adaptiveCardGenerator.js +0 -168
- package/build/common/spec-parser/adaptiveCardGenerator.js.map +0 -1
- package/build/common/spec-parser/adaptiveCardWrapper.d.ts +0 -15
- package/build/common/spec-parser/adaptiveCardWrapper.d.ts.map +0 -1
- package/build/common/spec-parser/adaptiveCardWrapper.js +0 -98
- package/build/common/spec-parser/adaptiveCardWrapper.js.map +0 -1
- package/build/common/spec-parser/constants.d.ts +0 -41
- package/build/common/spec-parser/constants.d.ts.map +0 -1
- package/build/common/spec-parser/constants.js +0 -95
- package/build/common/spec-parser/constants.js.map +0 -1
- package/build/common/spec-parser/index.browser.d.ts +0 -6
- package/build/common/spec-parser/index.browser.d.ts.map +0 -1
- package/build/common/spec-parser/index.browser.js +0 -16
- package/build/common/spec-parser/index.browser.js.map +0 -1
- package/build/common/spec-parser/index.d.ts +0 -5
- package/build/common/spec-parser/index.d.ts.map +0 -1
- package/build/common/spec-parser/index.js +0 -16
- package/build/common/spec-parser/index.js.map +0 -1
- package/build/common/spec-parser/interfaces.d.ts +0 -180
- package/build/common/spec-parser/interfaces.d.ts.map +0 -1
- package/build/common/spec-parser/interfaces.js +0 -51
- package/build/common/spec-parser/interfaces.js.map +0 -1
- package/build/common/spec-parser/manifestUpdater.d.ts +0 -7
- package/build/common/spec-parser/manifestUpdater.d.ts.map +0 -1
- package/build/common/spec-parser/manifestUpdater.js +0 -98
- package/build/common/spec-parser/manifestUpdater.js.map +0 -1
- package/build/common/spec-parser/specFilter.d.ts +0 -3
- package/build/common/spec-parser/specFilter.d.ts.map +0 -1
- package/build/common/spec-parser/specFilter.js +0 -40
- package/build/common/spec-parser/specFilter.js.map +0 -1
- package/build/common/spec-parser/specParser.browser.d.ts +0 -46
- package/build/common/spec-parser/specParser.browser.d.ts.map +0 -1
- package/build/common/spec-parser/specParser.browser.js +0 -139
- package/build/common/spec-parser/specParser.browser.js.map +0 -1
- package/build/common/spec-parser/specParser.d.ts +0 -46
- package/build/common/spec-parser/specParser.d.ts.map +0 -1
- package/build/common/spec-parser/specParser.js +0 -244
- package/build/common/spec-parser/specParser.js.map +0 -1
- package/build/common/spec-parser/specParserError.d.ts +0 -6
- package/build/common/spec-parser/specParserError.d.ts.map +0 -1
- package/build/common/spec-parser/specParserError.js +0 -13
- package/build/common/spec-parser/specParserError.js.map +0 -1
- package/build/common/spec-parser/utils.d.ts +0 -43
- package/build/common/spec-parser/utils.d.ts.map +0 -1
- package/build/common/spec-parser/utils.js +0 -587
- package/build/common/spec-parser/utils.js.map +0 -1
|
@@ -1,587 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Microsoft Corporation.
|
|
2
|
-
// Licensed under the MIT license.
|
|
3
|
-
"use strict";
|
|
4
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.getSafeRegistrationIdEnvName = exports.format = exports.validateSpec = exports.listSupportedAPIs = exports.parseApiInfo = exports.updateParameterWithInputType = exports.generateParametersFromSchema = exports.isWellKnownName = exports.validateServer = exports.checkServerUrl = exports.resolveServerUrl = exports.getUrlProtocol = exports.convertPathToCamelCase = exports.getResponseJson = exports.updateFirstLetter = exports.getAuthArray = exports.isBearerTokenAuth = exports.isAPIKeyAuth = exports.isSupportedAuth = exports.isSupportedApi = exports.checkPostBody = exports.checkParameters = void 0;
|
|
6
|
-
const constants_1 = require("./constants");
|
|
7
|
-
const interfaces_1 = require("./interfaces");
|
|
8
|
-
function checkParameters(paramObject) {
|
|
9
|
-
const paramResult = {
|
|
10
|
-
requiredNum: 0,
|
|
11
|
-
optionalNum: 0,
|
|
12
|
-
isValid: true,
|
|
13
|
-
};
|
|
14
|
-
if (!paramObject) {
|
|
15
|
-
return paramResult;
|
|
16
|
-
}
|
|
17
|
-
for (let i = 0; i < paramObject.length; i++) {
|
|
18
|
-
const param = paramObject[i];
|
|
19
|
-
const schema = param.schema;
|
|
20
|
-
const isRequiredWithoutDefault = param.required && schema.default === undefined;
|
|
21
|
-
if (param.in === "header" || param.in === "cookie") {
|
|
22
|
-
if (isRequiredWithoutDefault) {
|
|
23
|
-
paramResult.isValid = false;
|
|
24
|
-
}
|
|
25
|
-
continue;
|
|
26
|
-
}
|
|
27
|
-
if (schema.type !== "boolean" &&
|
|
28
|
-
schema.type !== "string" &&
|
|
29
|
-
schema.type !== "number" &&
|
|
30
|
-
schema.type !== "integer") {
|
|
31
|
-
if (isRequiredWithoutDefault) {
|
|
32
|
-
paramResult.isValid = false;
|
|
33
|
-
}
|
|
34
|
-
continue;
|
|
35
|
-
}
|
|
36
|
-
if (param.in === "query" || param.in === "path") {
|
|
37
|
-
if (isRequiredWithoutDefault) {
|
|
38
|
-
paramResult.requiredNum = paramResult.requiredNum + 1;
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
paramResult.optionalNum = paramResult.optionalNum + 1;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
return paramResult;
|
|
46
|
-
}
|
|
47
|
-
exports.checkParameters = checkParameters;
|
|
48
|
-
function checkPostBody(schema, isRequired = false) {
|
|
49
|
-
var _a;
|
|
50
|
-
const paramResult = {
|
|
51
|
-
requiredNum: 0,
|
|
52
|
-
optionalNum: 0,
|
|
53
|
-
isValid: true,
|
|
54
|
-
};
|
|
55
|
-
if (Object.keys(schema).length === 0) {
|
|
56
|
-
return paramResult;
|
|
57
|
-
}
|
|
58
|
-
const isRequiredWithoutDefault = isRequired && schema.default === undefined;
|
|
59
|
-
if (schema.type === "string" ||
|
|
60
|
-
schema.type === "integer" ||
|
|
61
|
-
schema.type === "boolean" ||
|
|
62
|
-
schema.type === "number") {
|
|
63
|
-
if (isRequiredWithoutDefault) {
|
|
64
|
-
paramResult.requiredNum = paramResult.requiredNum + 1;
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
paramResult.optionalNum = paramResult.optionalNum + 1;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
else if (schema.type === "object") {
|
|
71
|
-
const { properties } = schema;
|
|
72
|
-
for (const property in properties) {
|
|
73
|
-
let isRequired = false;
|
|
74
|
-
if (schema.required && ((_a = schema.required) === null || _a === void 0 ? void 0 : _a.indexOf(property)) >= 0) {
|
|
75
|
-
isRequired = true;
|
|
76
|
-
}
|
|
77
|
-
const result = checkPostBody(properties[property], isRequired);
|
|
78
|
-
paramResult.requiredNum += result.requiredNum;
|
|
79
|
-
paramResult.optionalNum += result.optionalNum;
|
|
80
|
-
paramResult.isValid = paramResult.isValid && result.isValid;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
if (isRequiredWithoutDefault) {
|
|
85
|
-
paramResult.isValid = false;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return paramResult;
|
|
89
|
-
}
|
|
90
|
-
exports.checkPostBody = checkPostBody;
|
|
91
|
-
/**
|
|
92
|
-
* Checks if the given API is supported.
|
|
93
|
-
* @param {string} method - The HTTP method of the API.
|
|
94
|
-
* @param {string} path - The path of the API.
|
|
95
|
-
* @param {OpenAPIV3.Document} spec - The OpenAPI specification document.
|
|
96
|
-
* @returns {boolean} - Returns true if the API is supported, false otherwise.
|
|
97
|
-
* @description The following APIs are supported:
|
|
98
|
-
* 1. only support Get/Post operation without auth property
|
|
99
|
-
* 2. parameter inside query or path only support string, number, boolean and integer
|
|
100
|
-
* 3. parameter inside post body only support string, number, boolean, integer and object
|
|
101
|
-
* 4. request body + required parameters <= 1
|
|
102
|
-
* 5. response body should be “application/json” and not empty, and response code should be 20X
|
|
103
|
-
* 6. only support request body with “application/json” content type
|
|
104
|
-
*/
|
|
105
|
-
function isSupportedApi(method, path, spec, allowMissingId, allowAPIKeyAuth, allowMultipleParameters, allowOauth2) {
|
|
106
|
-
const pathObj = spec.paths[path];
|
|
107
|
-
method = method.toLocaleLowerCase();
|
|
108
|
-
if (pathObj) {
|
|
109
|
-
if ((method === constants_1.ConstantString.PostMethod || method === constants_1.ConstantString.GetMethod) &&
|
|
110
|
-
pathObj[method]) {
|
|
111
|
-
const securities = pathObj[method].security;
|
|
112
|
-
const authArray = getAuthArray(securities, spec);
|
|
113
|
-
if (!isSupportedAuth(authArray, allowAPIKeyAuth, allowOauth2)) {
|
|
114
|
-
return false;
|
|
115
|
-
}
|
|
116
|
-
const operationObject = pathObj[method];
|
|
117
|
-
if (!allowMissingId && !operationObject.operationId) {
|
|
118
|
-
return false;
|
|
119
|
-
}
|
|
120
|
-
const paramObject = operationObject.parameters;
|
|
121
|
-
const requestBody = operationObject.requestBody;
|
|
122
|
-
const requestJsonBody = requestBody === null || requestBody === void 0 ? void 0 : requestBody.content["application/json"];
|
|
123
|
-
const responseJson = getResponseJson(operationObject);
|
|
124
|
-
if (Object.keys(responseJson).length === 0) {
|
|
125
|
-
return false;
|
|
126
|
-
}
|
|
127
|
-
let requestBodyParamResult = {
|
|
128
|
-
requiredNum: 0,
|
|
129
|
-
optionalNum: 0,
|
|
130
|
-
isValid: true,
|
|
131
|
-
};
|
|
132
|
-
if (requestJsonBody) {
|
|
133
|
-
const requestBodySchema = requestJsonBody.schema;
|
|
134
|
-
requestBodyParamResult = checkPostBody(requestBodySchema, requestBody.required);
|
|
135
|
-
}
|
|
136
|
-
if (!requestBodyParamResult.isValid) {
|
|
137
|
-
return false;
|
|
138
|
-
}
|
|
139
|
-
const paramResult = checkParameters(paramObject);
|
|
140
|
-
if (!paramResult.isValid) {
|
|
141
|
-
return false;
|
|
142
|
-
}
|
|
143
|
-
if (requestBodyParamResult.requiredNum + paramResult.requiredNum > 1) {
|
|
144
|
-
if (allowMultipleParameters &&
|
|
145
|
-
requestBodyParamResult.requiredNum + paramResult.requiredNum <= 5) {
|
|
146
|
-
return true;
|
|
147
|
-
}
|
|
148
|
-
return false;
|
|
149
|
-
}
|
|
150
|
-
else if (requestBodyParamResult.requiredNum +
|
|
151
|
-
requestBodyParamResult.optionalNum +
|
|
152
|
-
paramResult.requiredNum +
|
|
153
|
-
paramResult.optionalNum ===
|
|
154
|
-
0) {
|
|
155
|
-
return false;
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
return true;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
return false;
|
|
163
|
-
}
|
|
164
|
-
exports.isSupportedApi = isSupportedApi;
|
|
165
|
-
function isSupportedAuth(authSchemaArray, allowAPIKeyAuth, allowOauth2) {
|
|
166
|
-
if (authSchemaArray.length === 0) {
|
|
167
|
-
return true;
|
|
168
|
-
}
|
|
169
|
-
if (allowAPIKeyAuth || allowOauth2) {
|
|
170
|
-
// Currently we don't support multiple auth in one operation
|
|
171
|
-
if (authSchemaArray.length > 0 && authSchemaArray.every((auths) => auths.length > 1)) {
|
|
172
|
-
return false;
|
|
173
|
-
}
|
|
174
|
-
for (const auths of authSchemaArray) {
|
|
175
|
-
if (auths.length === 1) {
|
|
176
|
-
if (!allowOauth2 && allowAPIKeyAuth && isAPIKeyAuth(auths[0].authSchema)) {
|
|
177
|
-
return true;
|
|
178
|
-
}
|
|
179
|
-
else if (!allowAPIKeyAuth && allowOauth2 && isBearerTokenAuth(auths[0].authSchema)) {
|
|
180
|
-
return true;
|
|
181
|
-
}
|
|
182
|
-
else if (allowAPIKeyAuth &&
|
|
183
|
-
allowOauth2 &&
|
|
184
|
-
(isAPIKeyAuth(auths[0].authSchema) || isBearerTokenAuth(auths[0].authSchema))) {
|
|
185
|
-
return true;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
return false;
|
|
191
|
-
}
|
|
192
|
-
exports.isSupportedAuth = isSupportedAuth;
|
|
193
|
-
function isAPIKeyAuth(authSchema) {
|
|
194
|
-
return authSchema.type === "apiKey";
|
|
195
|
-
}
|
|
196
|
-
exports.isAPIKeyAuth = isAPIKeyAuth;
|
|
197
|
-
function isBearerTokenAuth(authSchema) {
|
|
198
|
-
return (authSchema.type === "oauth2" ||
|
|
199
|
-
authSchema.type === "openIdConnect" ||
|
|
200
|
-
(authSchema.type === "http" && authSchema.scheme === "bearer"));
|
|
201
|
-
}
|
|
202
|
-
exports.isBearerTokenAuth = isBearerTokenAuth;
|
|
203
|
-
function getAuthArray(securities, spec) {
|
|
204
|
-
var _a;
|
|
205
|
-
const result = [];
|
|
206
|
-
const securitySchemas = (_a = spec.components) === null || _a === void 0 ? void 0 : _a.securitySchemes;
|
|
207
|
-
if (securities && securitySchemas) {
|
|
208
|
-
for (let i = 0; i < securities.length; i++) {
|
|
209
|
-
const security = securities[i];
|
|
210
|
-
const authArray = [];
|
|
211
|
-
for (const name in security) {
|
|
212
|
-
const auth = securitySchemas[name];
|
|
213
|
-
authArray.push({
|
|
214
|
-
authSchema: auth,
|
|
215
|
-
name: name,
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
if (authArray.length > 0) {
|
|
219
|
-
result.push(authArray);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
result.sort((a, b) => a[0].name.localeCompare(b[0].name));
|
|
224
|
-
return result;
|
|
225
|
-
}
|
|
226
|
-
exports.getAuthArray = getAuthArray;
|
|
227
|
-
function updateFirstLetter(str) {
|
|
228
|
-
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
229
|
-
}
|
|
230
|
-
exports.updateFirstLetter = updateFirstLetter;
|
|
231
|
-
function getResponseJson(operationObject) {
|
|
232
|
-
var _a, _b;
|
|
233
|
-
let json = {};
|
|
234
|
-
for (const code of constants_1.ConstantString.ResponseCodeFor20X) {
|
|
235
|
-
const responseObject = (_a = operationObject === null || operationObject === void 0 ? void 0 : operationObject.responses) === null || _a === void 0 ? void 0 : _a[code];
|
|
236
|
-
if ((_b = responseObject === null || responseObject === void 0 ? void 0 : responseObject.content) === null || _b === void 0 ? void 0 : _b["application/json"]) {
|
|
237
|
-
json = responseObject.content["application/json"];
|
|
238
|
-
break;
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
return json;
|
|
242
|
-
}
|
|
243
|
-
exports.getResponseJson = getResponseJson;
|
|
244
|
-
function convertPathToCamelCase(path) {
|
|
245
|
-
const pathSegments = path.split(/[./{]/);
|
|
246
|
-
const camelCaseSegments = pathSegments.map((segment) => {
|
|
247
|
-
segment = segment.replace(/}/g, "");
|
|
248
|
-
return segment.charAt(0).toUpperCase() + segment.slice(1);
|
|
249
|
-
});
|
|
250
|
-
const camelCasePath = camelCaseSegments.join("");
|
|
251
|
-
return camelCasePath;
|
|
252
|
-
}
|
|
253
|
-
exports.convertPathToCamelCase = convertPathToCamelCase;
|
|
254
|
-
function getUrlProtocol(urlString) {
|
|
255
|
-
try {
|
|
256
|
-
const url = new URL(urlString);
|
|
257
|
-
return url.protocol;
|
|
258
|
-
}
|
|
259
|
-
catch (err) {
|
|
260
|
-
return undefined;
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
exports.getUrlProtocol = getUrlProtocol;
|
|
264
|
-
function resolveServerUrl(url) {
|
|
265
|
-
const placeHolderReg = /\${{\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*}}/g;
|
|
266
|
-
let matches = placeHolderReg.exec(url);
|
|
267
|
-
let newUrl = url;
|
|
268
|
-
while (matches != null) {
|
|
269
|
-
const envVar = matches[1];
|
|
270
|
-
const envVal = process.env[envVar];
|
|
271
|
-
if (!envVal) {
|
|
272
|
-
throw new Error(format(constants_1.ConstantString.ResolveServerUrlFailed, envVar));
|
|
273
|
-
}
|
|
274
|
-
else {
|
|
275
|
-
newUrl = newUrl.replace(matches[0], envVal);
|
|
276
|
-
}
|
|
277
|
-
matches = placeHolderReg.exec(url);
|
|
278
|
-
}
|
|
279
|
-
return newUrl;
|
|
280
|
-
}
|
|
281
|
-
exports.resolveServerUrl = resolveServerUrl;
|
|
282
|
-
function checkServerUrl(servers) {
|
|
283
|
-
const errors = [];
|
|
284
|
-
let serverUrl;
|
|
285
|
-
try {
|
|
286
|
-
serverUrl = resolveServerUrl(servers[0].url);
|
|
287
|
-
}
|
|
288
|
-
catch (err) {
|
|
289
|
-
errors.push({
|
|
290
|
-
type: interfaces_1.ErrorType.ResolveServerUrlFailed,
|
|
291
|
-
content: err.message,
|
|
292
|
-
data: servers,
|
|
293
|
-
});
|
|
294
|
-
return errors;
|
|
295
|
-
}
|
|
296
|
-
const protocol = getUrlProtocol(serverUrl);
|
|
297
|
-
if (!protocol) {
|
|
298
|
-
// Relative server url is not supported
|
|
299
|
-
errors.push({
|
|
300
|
-
type: interfaces_1.ErrorType.RelativeServerUrlNotSupported,
|
|
301
|
-
content: constants_1.ConstantString.RelativeServerUrlNotSupported,
|
|
302
|
-
data: servers,
|
|
303
|
-
});
|
|
304
|
-
}
|
|
305
|
-
else if (protocol !== "https:") {
|
|
306
|
-
// Http server url is not supported
|
|
307
|
-
const protocolString = protocol.slice(0, -1);
|
|
308
|
-
errors.push({
|
|
309
|
-
type: interfaces_1.ErrorType.UrlProtocolNotSupported,
|
|
310
|
-
content: format(constants_1.ConstantString.UrlProtocolNotSupported, protocol.slice(0, -1)),
|
|
311
|
-
data: protocolString,
|
|
312
|
-
});
|
|
313
|
-
}
|
|
314
|
-
return errors;
|
|
315
|
-
}
|
|
316
|
-
exports.checkServerUrl = checkServerUrl;
|
|
317
|
-
function validateServer(spec, allowMissingId, allowAPIKeyAuth, allowMultipleParameters, allowOauth2) {
|
|
318
|
-
const errors = [];
|
|
319
|
-
let hasTopLevelServers = false;
|
|
320
|
-
let hasPathLevelServers = false;
|
|
321
|
-
let hasOperationLevelServers = false;
|
|
322
|
-
if (spec.servers && spec.servers.length >= 1) {
|
|
323
|
-
hasTopLevelServers = true;
|
|
324
|
-
// for multiple server, we only use the first url
|
|
325
|
-
const serverErrors = checkServerUrl(spec.servers);
|
|
326
|
-
errors.push(...serverErrors);
|
|
327
|
-
}
|
|
328
|
-
const paths = spec.paths;
|
|
329
|
-
for (const path in paths) {
|
|
330
|
-
const methods = paths[path];
|
|
331
|
-
if ((methods === null || methods === void 0 ? void 0 : methods.servers) && methods.servers.length >= 1) {
|
|
332
|
-
hasPathLevelServers = true;
|
|
333
|
-
const serverErrors = checkServerUrl(methods.servers);
|
|
334
|
-
errors.push(...serverErrors);
|
|
335
|
-
}
|
|
336
|
-
for (const method in methods) {
|
|
337
|
-
const operationObject = methods[method];
|
|
338
|
-
if (isSupportedApi(method, path, spec, allowMissingId, allowAPIKeyAuth, allowMultipleParameters, allowOauth2)) {
|
|
339
|
-
if ((operationObject === null || operationObject === void 0 ? void 0 : operationObject.servers) && operationObject.servers.length >= 1) {
|
|
340
|
-
hasOperationLevelServers = true;
|
|
341
|
-
const serverErrors = checkServerUrl(operationObject.servers);
|
|
342
|
-
errors.push(...serverErrors);
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
if (!hasTopLevelServers && !hasPathLevelServers && !hasOperationLevelServers) {
|
|
348
|
-
errors.push({
|
|
349
|
-
type: interfaces_1.ErrorType.NoServerInformation,
|
|
350
|
-
content: constants_1.ConstantString.NoServerInformation,
|
|
351
|
-
});
|
|
352
|
-
}
|
|
353
|
-
return errors;
|
|
354
|
-
}
|
|
355
|
-
exports.validateServer = validateServer;
|
|
356
|
-
function isWellKnownName(name, wellknownNameList) {
|
|
357
|
-
for (let i = 0; i < wellknownNameList.length; i++) {
|
|
358
|
-
name = name.replace(/_/g, "").replace(/-/g, "");
|
|
359
|
-
if (name.toLowerCase().includes(wellknownNameList[i])) {
|
|
360
|
-
return true;
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
return false;
|
|
364
|
-
}
|
|
365
|
-
exports.isWellKnownName = isWellKnownName;
|
|
366
|
-
function generateParametersFromSchema(schema, name, allowMultipleParameters, isRequired = false) {
|
|
367
|
-
var _a, _b;
|
|
368
|
-
const requiredParams = [];
|
|
369
|
-
const optionalParams = [];
|
|
370
|
-
if (schema.type === "string" ||
|
|
371
|
-
schema.type === "integer" ||
|
|
372
|
-
schema.type === "boolean" ||
|
|
373
|
-
schema.type === "number") {
|
|
374
|
-
const parameter = {
|
|
375
|
-
name: name,
|
|
376
|
-
title: updateFirstLetter(name).slice(0, constants_1.ConstantString.ParameterTitleMaxLens),
|
|
377
|
-
description: ((_a = schema.description) !== null && _a !== void 0 ? _a : "").slice(0, constants_1.ConstantString.ParameterDescriptionMaxLens),
|
|
378
|
-
};
|
|
379
|
-
if (allowMultipleParameters) {
|
|
380
|
-
updateParameterWithInputType(schema, parameter);
|
|
381
|
-
}
|
|
382
|
-
if (isRequired && schema.default === undefined) {
|
|
383
|
-
requiredParams.push(parameter);
|
|
384
|
-
}
|
|
385
|
-
else {
|
|
386
|
-
optionalParams.push(parameter);
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
else if (schema.type === "object") {
|
|
390
|
-
const { properties } = schema;
|
|
391
|
-
for (const property in properties) {
|
|
392
|
-
let isRequired = false;
|
|
393
|
-
if (schema.required && ((_b = schema.required) === null || _b === void 0 ? void 0 : _b.indexOf(property)) >= 0) {
|
|
394
|
-
isRequired = true;
|
|
395
|
-
}
|
|
396
|
-
const [requiredP, optionalP] = generateParametersFromSchema(properties[property], property, allowMultipleParameters, isRequired);
|
|
397
|
-
requiredParams.push(...requiredP);
|
|
398
|
-
optionalParams.push(...optionalP);
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
return [requiredParams, optionalParams];
|
|
402
|
-
}
|
|
403
|
-
exports.generateParametersFromSchema = generateParametersFromSchema;
|
|
404
|
-
function updateParameterWithInputType(schema, param) {
|
|
405
|
-
if (schema.enum) {
|
|
406
|
-
param.inputType = "choiceset";
|
|
407
|
-
param.choices = [];
|
|
408
|
-
for (let i = 0; i < schema.enum.length; i++) {
|
|
409
|
-
param.choices.push({
|
|
410
|
-
title: schema.enum[i],
|
|
411
|
-
value: schema.enum[i],
|
|
412
|
-
});
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
else if (schema.type === "string") {
|
|
416
|
-
param.inputType = "text";
|
|
417
|
-
}
|
|
418
|
-
else if (schema.type === "integer" || schema.type === "number") {
|
|
419
|
-
param.inputType = "number";
|
|
420
|
-
}
|
|
421
|
-
else if (schema.type === "boolean") {
|
|
422
|
-
param.inputType = "toggle";
|
|
423
|
-
}
|
|
424
|
-
if (schema.default) {
|
|
425
|
-
param.value = schema.default;
|
|
426
|
-
}
|
|
427
|
-
}
|
|
428
|
-
exports.updateParameterWithInputType = updateParameterWithInputType;
|
|
429
|
-
function parseApiInfo(operationItem, allowMultipleParameters) {
|
|
430
|
-
var _a, _b;
|
|
431
|
-
const requiredParams = [];
|
|
432
|
-
const optionalParams = [];
|
|
433
|
-
const paramObject = operationItem.parameters;
|
|
434
|
-
if (paramObject) {
|
|
435
|
-
paramObject.forEach((param) => {
|
|
436
|
-
var _a;
|
|
437
|
-
const parameter = {
|
|
438
|
-
name: param.name,
|
|
439
|
-
title: updateFirstLetter(param.name).slice(0, constants_1.ConstantString.ParameterTitleMaxLens),
|
|
440
|
-
description: ((_a = param.description) !== null && _a !== void 0 ? _a : "").slice(0, constants_1.ConstantString.ParameterDescriptionMaxLens),
|
|
441
|
-
};
|
|
442
|
-
const schema = param.schema;
|
|
443
|
-
if (allowMultipleParameters && schema) {
|
|
444
|
-
updateParameterWithInputType(schema, parameter);
|
|
445
|
-
}
|
|
446
|
-
if (param.in !== "header" && param.in !== "cookie") {
|
|
447
|
-
if (param.required && (schema === null || schema === void 0 ? void 0 : schema.default) === undefined) {
|
|
448
|
-
requiredParams.push(parameter);
|
|
449
|
-
}
|
|
450
|
-
else {
|
|
451
|
-
optionalParams.push(parameter);
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
});
|
|
455
|
-
}
|
|
456
|
-
if (operationItem.requestBody) {
|
|
457
|
-
const requestBody = operationItem.requestBody;
|
|
458
|
-
const requestJson = requestBody.content["application/json"];
|
|
459
|
-
if (Object.keys(requestJson).length !== 0) {
|
|
460
|
-
const schema = requestJson.schema;
|
|
461
|
-
const [requiredP, optionalP] = generateParametersFromSchema(schema, "requestBody", allowMultipleParameters, requestBody.required);
|
|
462
|
-
requiredParams.push(...requiredP);
|
|
463
|
-
optionalParams.push(...optionalP);
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
const operationId = operationItem.operationId;
|
|
467
|
-
const parameters = [];
|
|
468
|
-
if (requiredParams.length !== 0) {
|
|
469
|
-
parameters.push(...requiredParams);
|
|
470
|
-
}
|
|
471
|
-
else {
|
|
472
|
-
parameters.push(optionalParams[0]);
|
|
473
|
-
}
|
|
474
|
-
const command = {
|
|
475
|
-
context: ["compose"],
|
|
476
|
-
type: "query",
|
|
477
|
-
title: ((_a = operationItem.summary) !== null && _a !== void 0 ? _a : "").slice(0, constants_1.ConstantString.CommandTitleMaxLens),
|
|
478
|
-
id: operationId,
|
|
479
|
-
parameters: parameters,
|
|
480
|
-
description: ((_b = operationItem.description) !== null && _b !== void 0 ? _b : "").slice(0, constants_1.ConstantString.CommandDescriptionMaxLens),
|
|
481
|
-
};
|
|
482
|
-
let warning = undefined;
|
|
483
|
-
if (requiredParams.length === 0 && optionalParams.length > 1) {
|
|
484
|
-
warning = {
|
|
485
|
-
type: interfaces_1.WarningType.OperationOnlyContainsOptionalParam,
|
|
486
|
-
content: format(constants_1.ConstantString.OperationOnlyContainsOptionalParam, operationId),
|
|
487
|
-
data: operationId,
|
|
488
|
-
};
|
|
489
|
-
}
|
|
490
|
-
return [command, warning];
|
|
491
|
-
}
|
|
492
|
-
exports.parseApiInfo = parseApiInfo;
|
|
493
|
-
function listSupportedAPIs(spec, allowMissingId, allowAPIKeyAuth, allowMultipleParameters, allowOauth2) {
|
|
494
|
-
const paths = spec.paths;
|
|
495
|
-
const result = {};
|
|
496
|
-
for (const path in paths) {
|
|
497
|
-
const methods = paths[path];
|
|
498
|
-
for (const method in methods) {
|
|
499
|
-
// For developer preview, only support GET operation with only 1 parameter without auth
|
|
500
|
-
if (isSupportedApi(method, path, spec, allowMissingId, allowAPIKeyAuth, allowMultipleParameters, allowOauth2)) {
|
|
501
|
-
const operationObject = methods[method];
|
|
502
|
-
result[`${method.toUpperCase()} ${path}`] = operationObject;
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
}
|
|
506
|
-
return result;
|
|
507
|
-
}
|
|
508
|
-
exports.listSupportedAPIs = listSupportedAPIs;
|
|
509
|
-
function validateSpec(spec, parser, isSwaggerFile, allowMissingId, allowAPIKeyAuth, allowMultipleParameters, allowOauth2) {
|
|
510
|
-
const errors = [];
|
|
511
|
-
const warnings = [];
|
|
512
|
-
if (isSwaggerFile) {
|
|
513
|
-
warnings.push({
|
|
514
|
-
type: interfaces_1.WarningType.ConvertSwaggerToOpenAPI,
|
|
515
|
-
content: constants_1.ConstantString.ConvertSwaggerToOpenAPI,
|
|
516
|
-
});
|
|
517
|
-
}
|
|
518
|
-
// Server validation
|
|
519
|
-
const serverErrors = validateServer(spec, allowMissingId, allowAPIKeyAuth, allowMultipleParameters, allowOauth2);
|
|
520
|
-
errors.push(...serverErrors);
|
|
521
|
-
// Remote reference not supported
|
|
522
|
-
const refPaths = parser.$refs.paths();
|
|
523
|
-
// refPaths [0] is the current spec file path
|
|
524
|
-
if (refPaths.length > 1) {
|
|
525
|
-
errors.push({
|
|
526
|
-
type: interfaces_1.ErrorType.RemoteRefNotSupported,
|
|
527
|
-
content: format(constants_1.ConstantString.RemoteRefNotSupported, refPaths.join(", ")),
|
|
528
|
-
data: refPaths,
|
|
529
|
-
});
|
|
530
|
-
}
|
|
531
|
-
// No supported API
|
|
532
|
-
const apiMap = listSupportedAPIs(spec, allowMissingId, allowAPIKeyAuth, allowMultipleParameters, allowOauth2);
|
|
533
|
-
if (Object.keys(apiMap).length === 0) {
|
|
534
|
-
errors.push({
|
|
535
|
-
type: interfaces_1.ErrorType.NoSupportedApi,
|
|
536
|
-
content: constants_1.ConstantString.NoSupportedApi,
|
|
537
|
-
});
|
|
538
|
-
}
|
|
539
|
-
// OperationId missing
|
|
540
|
-
const apisMissingOperationId = [];
|
|
541
|
-
for (const key in apiMap) {
|
|
542
|
-
const pathObjectItem = apiMap[key];
|
|
543
|
-
if (!pathObjectItem.operationId) {
|
|
544
|
-
apisMissingOperationId.push(key);
|
|
545
|
-
}
|
|
546
|
-
}
|
|
547
|
-
if (apisMissingOperationId.length > 0) {
|
|
548
|
-
warnings.push({
|
|
549
|
-
type: interfaces_1.WarningType.OperationIdMissing,
|
|
550
|
-
content: format(constants_1.ConstantString.MissingOperationId, apisMissingOperationId.join(", ")),
|
|
551
|
-
data: apisMissingOperationId,
|
|
552
|
-
});
|
|
553
|
-
}
|
|
554
|
-
let status = interfaces_1.ValidationStatus.Valid;
|
|
555
|
-
if (warnings.length > 0 && errors.length === 0) {
|
|
556
|
-
status = interfaces_1.ValidationStatus.Warning;
|
|
557
|
-
}
|
|
558
|
-
else if (errors.length > 0) {
|
|
559
|
-
status = interfaces_1.ValidationStatus.Error;
|
|
560
|
-
}
|
|
561
|
-
return {
|
|
562
|
-
status,
|
|
563
|
-
warnings,
|
|
564
|
-
errors,
|
|
565
|
-
};
|
|
566
|
-
}
|
|
567
|
-
exports.validateSpec = validateSpec;
|
|
568
|
-
function format(str, ...args) {
|
|
569
|
-
let index = 0;
|
|
570
|
-
return str.replace(/%s/g, () => {
|
|
571
|
-
const arg = args[index++];
|
|
572
|
-
return arg !== undefined ? arg : "";
|
|
573
|
-
});
|
|
574
|
-
}
|
|
575
|
-
exports.format = format;
|
|
576
|
-
function getSafeRegistrationIdEnvName(authName) {
|
|
577
|
-
if (!authName) {
|
|
578
|
-
return "";
|
|
579
|
-
}
|
|
580
|
-
let safeRegistrationIdEnvName = authName.toUpperCase().replace(/[^A-Z0-9_]/g, "_");
|
|
581
|
-
if (!safeRegistrationIdEnvName.match(/^[A-Z]/)) {
|
|
582
|
-
safeRegistrationIdEnvName = "PREFIX_" + safeRegistrationIdEnvName;
|
|
583
|
-
}
|
|
584
|
-
return safeRegistrationIdEnvName;
|
|
585
|
-
}
|
|
586
|
-
exports.getSafeRegistrationIdEnvName = getSafeRegistrationIdEnvName;
|
|
587
|
-
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/common/spec-parser/utils.ts"],"names":[],"mappings":"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"}
|