@microsoft/m365-spec-parser 0.0.2-alpha.0 → 0.0.2-alpha.2

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/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ Copyright (c) Microsoft Corporation.
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,125 @@
1
+ # M365 Spec Parser
2
+
3
+ The M365 Spec Parser package is designed to parse OpenAPI specification files to generate resources for M365 applications.
4
+
5
+ ## Sample Usage
6
+
7
+ ### For NodeJS environment
8
+ ```typescript
9
+ import { SpecParser, ParseOptions } from "@microsoft/m365-spec-parser";
10
+
11
+ // Define parsing options
12
+ const option: ParseOptions = {
13
+ allowMissingId: true, // Allow missing IDs in the specification, default true
14
+ allowSwagger: true, // Allow Swagger specifications, default true
15
+ allowAPIKeyAuth: false, // Disallow API key authentication, default false
16
+ allowMultipleParameters: false, // Disallow multiple parameters, default false
17
+ allowOauth2: false, // Disallow OAuth2 authentication, default false
18
+ };
19
+
20
+ // Create a new SpecParser instance with the given options
21
+ const parser = new SpecParser("path/to/spec/file", option);
22
+
23
+ // Validate the specification
24
+ const validateResult = await parser.validate();
25
+ // If the specification is not valid, log the errors and warnings
26
+ if (validateResult.status !== ValidationStatus.Valid) {
27
+ console.log(validateResult.errors);
28
+ console.log(validateResult.warnings);
29
+ }
30
+
31
+ // List the operations in the specification
32
+ const listResult = await parser.list();
33
+ // Log each operation
34
+ for (let i = 0; i < listResult.length; i++) {
35
+ console.log(listResult[i]);
36
+ }
37
+
38
+ // Define a filter for the operations to generate
39
+ const filter = ["GET /pet/{id}"];
40
+ // Define the paths for the Teams app manifest file, the output specification file, and the output adaptive card folder
41
+ const teamsAppManifestFilePath = "path/to/teamsapp/manifest/file";
42
+ const outputSpecFilePath = "path/to/output/spec/path";
43
+ const outputAdaptiveCardFolder = "adaptivecard/folder";
44
+ // Generate the operations
45
+ const generateResult = await parser.generate(
46
+ teamsAppManifestFilePath,
47
+ filter,
48
+ outputSpecFilePath,
49
+ outputAdaptiveCardFolder
50
+ );
51
+
52
+ // If not all operations were successfully generated, log the warnings
53
+ if (!generateResult.allSuccess) {
54
+ console.log(generateResult.warnings);
55
+ }
56
+ ```
57
+
58
+ ### For browser environment
59
+ ```typescript
60
+ import { SpecParser, ParseOptions } from "@microsoft/m365-spec-parser";
61
+
62
+ // Define parsing options
63
+ const option: ParseOptions = {
64
+ allowMissingId: false, // Allow missing IDs in the specification, default false
65
+ allowSwagger: false, // Allow Swagger specifications, default false
66
+ allowAPIKeyAuth: false, // Disallow API key authentication, default false
67
+ allowMultipleParameters: false, // Disallow multiple parameters, default false
68
+ allowOauth2: false, // Disallow OAuth2 authentication, default false
69
+ };
70
+
71
+ // Create a new SpecParser instance with the given options
72
+ const parser = new SpecParser("path/to/spec/file", option);
73
+
74
+ // Validate the specification
75
+ const validateResult = await parser.validate();
76
+ // If the specification is not valid, log the errors and warnings
77
+ if (validateResult.status !== ValidationStatus.Valid) {
78
+ console.log(validateResult.errors);
79
+ console.log(validateResult.warnings);
80
+ }
81
+
82
+ // List the operations in the specification
83
+ const listResult = await parser.listSupportedAPIInfo();
84
+ // Log each operation
85
+ for (let i = 0; i < listResult.length; i++) {
86
+ console.log(listResult[i]);
87
+ }
88
+ ```
89
+
90
+ ## Data Collection.
91
+
92
+ The software may collect information about you and your use of the software and send it to Microsoft. Microsoft may use this information to provide services and improve our products and services. You may turn off the telemetry as described in the repository. There are also some features in the software that may enable you and Microsoft to collect data from users of your applications. If you use these features, you must comply with applicable law, including providing appropriate notices to users of your applications together with a copy of Microsoft's privacy statement. Our privacy statement is located at https://go.microsoft.com/fwlink/?LinkID=824704. You can learn more about data collection and use in the help documentation and our privacy statement. Your use of the software operates as your consent to these practices.
93
+
94
+ ## Code of Conduct
95
+
96
+ This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
97
+
98
+ ## Contributing
99
+
100
+ There are many ways in which you can participate in the project, for example:
101
+
102
+ - [Submit bugs and feature requests](https://github.com/OfficeDev/TeamsFx/issues), and help us verify as they are checked in
103
+ - Review [source code changes](https://github.com/OfficeDev/TeamsFx/pulls)
104
+
105
+ If you are interested in fixing issues and contributing directly to the code base, please see the [Contributing Guide](./CONTRIBUTING.md).
106
+
107
+ ## Reporting Security Issues
108
+
109
+ **Please do not report security vulnerabilities through public GitHub issues.**
110
+
111
+ Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).
112
+
113
+ If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).
114
+
115
+ You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc).
116
+
117
+ ## Trademarks
118
+
119
+ This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow [Microsoft's Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general). Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.
120
+
121
+ ## License
122
+
123
+ Copyright (c) Microsoft Corporation. All rights reserved.
124
+
125
+ Licensed under the [MIT](LICENSE.txt) license.
@@ -319,12 +319,15 @@ class Utils {
319
319
  if (!allowOauth2 && allowAPIKeyAuth && Utils.isAPIKeyAuth(auths[0].authSchema)) {
320
320
  return true;
321
321
  }
322
- else if (!allowAPIKeyAuth && allowOauth2 && Utils.isBearerTokenAuth(auths[0].authSchema)) {
322
+ else if (!allowAPIKeyAuth &&
323
+ allowOauth2 &&
324
+ Utils.isBearerTokenAuth(auths[0].authSchema)) {
323
325
  return true;
324
326
  }
325
327
  else if (allowAPIKeyAuth &&
326
328
  allowOauth2 &&
327
- (Utils.isAPIKeyAuth(auths[0].authSchema) || Utils.isBearerTokenAuth(auths[0].authSchema))) {
329
+ (Utils.isAPIKeyAuth(auths[0].authSchema) ||
330
+ Utils.isBearerTokenAuth(auths[0].authSchema))) {
328
331
  return true;
329
332
  }
330
333
  }
@@ -745,7 +748,11 @@ class SpecParser {
745
748
  try {
746
749
  try {
747
750
  await this.loadSpec();
748
- await this.parser.validate(this.spec);
751
+ await this.parser.validate(this.spec, {
752
+ validate: {
753
+ schema: false,
754
+ },
755
+ });
749
756
  }
750
757
  catch (e) {
751
758
  return {
@@ -842,5 +849,5 @@ class SpecParser {
842
849
  }
843
850
  }
844
851
 
845
- export { ConstantString, ErrorType, SpecParser, SpecParserError, ValidationStatus, WarningType };
852
+ export { ConstantString, ErrorType, SpecParser, SpecParserError, Utils, ValidationStatus, WarningType };
846
853
  //# sourceMappingURL=index.esm2017.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm2017.js","sources":["../src/interfaces.ts","../src/specParserError.ts","../src/constants.ts","../src/utils.ts","../src/specParser.browser.ts"],"sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\"use strict\";\n\nimport { OpenAPIV3 } from \"openapi-types\";\n\n/**\n * An interface that represents the result of validating an OpenAPI specification file.\n */\nexport interface ValidateResult {\n /**\n * The validation status of the OpenAPI specification file.\n */\n status: ValidationStatus;\n\n /**\n * An array of warning results generated during validation.\n */\n warnings: WarningResult[];\n\n /**\n * An array of error results generated during validation.\n */\n errors: ErrorResult[];\n}\n\n/**\n * An interface that represents a warning result generated during validation.\n */\nexport interface WarningResult {\n /**\n * The type of warning.\n */\n type: WarningType;\n\n /**\n * The content of the warning.\n */\n content: string;\n\n /**\n * data of the warning.\n */\n data?: any;\n}\n\n/**\n * An interface that represents an error result generated during validation.\n */\nexport interface ErrorResult {\n /**\n * The type of error.\n */\n type: ErrorType;\n\n /**\n * The content of the error.\n */\n content: string;\n\n /**\n * data of the error.\n */\n data?: any;\n}\n\nexport interface GenerateResult {\n allSuccess: boolean;\n warnings: WarningResult[];\n}\n\n/**\n * An enum that represents the types of errors that can occur during validation.\n */\nexport enum ErrorType {\n SpecNotValid = \"spec-not-valid\",\n RemoteRefNotSupported = \"remote-ref-not-supported\",\n NoServerInformation = \"no-server-information\",\n UrlProtocolNotSupported = \"url-protocol-not-supported\",\n RelativeServerUrlNotSupported = \"relative-server-url-not-supported\",\n NoSupportedApi = \"no-supported-api\",\n NoExtraAPICanBeAdded = \"no-extra-api-can-be-added\",\n ResolveServerUrlFailed = \"resolve-server-url-failed\",\n SwaggerNotSupported = \"swagger-not-supported\",\n MultipleAPIKeyNotSupported = \"multiple-api-key-not-supported\",\n\n ListFailed = \"list-failed\",\n listSupportedAPIInfoFailed = \"list-supported-api-info-failed\",\n FilterSpecFailed = \"filter-spec-failed\",\n UpdateManifestFailed = \"update-manifest-failed\",\n GenerateAdaptiveCardFailed = \"generate-adaptive-card-failed\",\n GenerateFailed = \"generate-failed\",\n ValidateFailed = \"validate-failed\",\n\n Cancelled = \"cancelled\",\n Unknown = \"unknown\",\n}\n\n/**\n * An enum that represents the types of warnings that can occur during validation.\n */\nexport enum WarningType {\n OperationIdMissing = \"operationid-missing\",\n GenerateCardFailed = \"generate-card-failed\",\n OperationOnlyContainsOptionalParam = \"operation-only-contains-optional-param\",\n ConvertSwaggerToOpenAPI = \"convert-swagger-to-openapi\",\n Unknown = \"unknown\",\n}\n\n/**\n * An enum that represents the validation status of an OpenAPI specification file.\n */\nexport enum ValidationStatus {\n Valid,\n Warning, // If there are any warnings, the file is still valid\n Error, // If there are any errors, the file is not valid\n}\n\nexport interface TextBlockElement {\n type: string;\n text: string;\n wrap: boolean;\n}\n\nexport interface ImageElement {\n type: string;\n url: string;\n $when: string;\n}\n\nexport interface ArrayElement {\n type: string;\n $data: string;\n items: Array<TextBlockElement | ImageElement | ArrayElement>;\n}\n\nexport interface AdaptiveCard {\n type: string;\n $schema: string;\n version: string;\n body: Array<TextBlockElement | ImageElement | ArrayElement>;\n}\n\nexport interface PreviewCardTemplate {\n title: string;\n subtitle?: string;\n image?: {\n url: string;\n alt?: string;\n $when?: string;\n };\n}\n\nexport interface WrappedAdaptiveCard {\n version: string;\n $schema?: string;\n jsonPath?: string;\n responseLayout: string;\n responseCardTemplate: AdaptiveCard;\n previewCardTemplate: PreviewCardTemplate;\n}\n\nexport interface ChoicesItem {\n title: string;\n value: string;\n}\n\nexport interface Parameter {\n name: string;\n title: string;\n description: string;\n inputType?: \"text\" | \"textarea\" | \"number\" | \"date\" | \"time\" | \"toggle\" | \"choiceset\";\n value?: string;\n choices?: ChoicesItem[];\n}\n\nexport interface CheckParamResult {\n requiredNum: number;\n optionalNum: number;\n isValid: boolean;\n}\n\nexport interface ParseOptions {\n allowMissingId?: boolean;\n allowSwagger?: boolean;\n allowAPIKeyAuth?: boolean;\n allowMultipleParameters?: boolean;\n allowOauth2?: boolean;\n}\n\nexport interface APIInfo {\n method: string;\n path: string;\n title: string;\n id: string;\n parameters: Parameter[];\n description: string;\n warning?: WarningResult;\n}\n\nexport interface ListAPIResult {\n api: string;\n server: string;\n operationId: string;\n auth?: OpenAPIV3.SecuritySchemeObject;\n}\n\nexport interface AuthSchema {\n authSchema: OpenAPIV3.SecuritySchemeObject;\n name: string;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\"use strict\";\n\nimport { ErrorType } from \"./interfaces\";\n\nexport class SpecParserError extends Error {\n public readonly errorType: ErrorType;\n\n constructor(message: string, errorType: ErrorType) {\n super(message);\n this.errorType = errorType;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\"use strict\";\n\nexport class ConstantString {\n static readonly CancelledMessage = \"Operation is cancelled.\";\n static readonly NoServerInformation =\n \"No server information is found in the OpenAPI description document.\";\n static readonly RemoteRefNotSupported = \"Remote reference is not supported: %s.\";\n static readonly MissingOperationId = \"Missing operationIds: %s.\";\n static readonly NoSupportedApi =\n \"No supported API is found in the OpenAPI description document: only GET and POST methods are supported, additionally, there can be at most one required parameter, and no auth is allowed.\";\n\n static readonly AdditionalPropertiesNotSupported =\n \"'additionalProperties' is not supported, and will be ignored.\";\n static readonly SchemaNotSupported = \"'oneOf', 'anyOf', and 'not' schema are not supported: %s.\";\n static readonly UnknownSchema = \"Unknown schema: %s.\";\n\n static readonly UrlProtocolNotSupported =\n \"Server url is not correct: protocol %s is not supported, you should use https protocol instead.\";\n static readonly RelativeServerUrlNotSupported =\n \"Server url is not correct: relative server url is not supported.\";\n static readonly ResolveServerUrlFailed =\n \"Unable to resolve the server URL: please make sure that the environment variable %s is defined.\";\n static readonly OperationOnlyContainsOptionalParam =\n \"Operation %s contains multiple optional parameters. The first optional parameter is used for this command.\";\n static readonly ConvertSwaggerToOpenAPI =\n \"The Swagger 2.0 file has been converted to OpenAPI 3.0.\";\n\n static readonly SwaggerNotSupported =\n \"Swagger 2.0 is not supported. Please convert to OpenAPI 3.0 manually before proceeding.\";\n\n static readonly MultipleAPIKeyNotSupported =\n \"Multiple API keys are not supported. Please make sure that all selected APIs use the same API key.\";\n\n static readonly WrappedCardVersion = \"devPreview\";\n static readonly WrappedCardSchema =\n \"https://developer.microsoft.com/json-schemas/teams/vDevPreview/MicrosoftTeams.ResponseRenderingTemplate.schema.json\";\n static readonly WrappedCardResponseLayout = \"list\";\n\n static readonly GetMethod = \"get\";\n static readonly PostMethod = \"post\";\n static readonly AdaptiveCardVersion = \"1.5\";\n static readonly AdaptiveCardSchema = \"http://adaptivecards.io/schemas/adaptive-card.json\";\n static readonly AdaptiveCardType = \"AdaptiveCard\";\n static readonly TextBlockType = \"TextBlock\";\n static readonly ContainerType = \"Container\";\n static readonly RegistrationIdPostfix = \"REGISTRATION_ID\";\n static readonly ResponseCodeFor20X = [\n \"200\",\n \"201\",\n \"202\",\n \"203\",\n \"204\",\n \"205\",\n \"206\",\n \"207\",\n \"208\",\n \"226\",\n \"default\",\n ];\n static readonly AllOperationMethods = [\n \"get\",\n \"post\",\n \"put\",\n \"delete\",\n \"patch\",\n \"head\",\n \"options\",\n \"trace\",\n ];\n\n // TODO: update after investigating the usage of these constants.\n static readonly WellknownResultNames = [\n \"result\",\n \"data\",\n \"items\",\n \"root\",\n \"matches\",\n \"queries\",\n \"list\",\n \"output\",\n ];\n static readonly WellknownTitleName = [\"title\", \"name\", \"summary\", \"caption\", \"subject\", \"label\"];\n static readonly WellknownSubtitleName = [\n \"subtitle\",\n \"id\",\n \"uid\",\n \"description\",\n \"desc\",\n \"detail\",\n ];\n static readonly WellknownImageName = [\n \"image\",\n \"icon\",\n \"avatar\",\n \"picture\",\n \"photo\",\n \"logo\",\n \"pic\",\n \"thumbnail\",\n \"img\",\n ];\n\n static readonly ShortDescriptionMaxLens = 80;\n static readonly FullDescriptionMaxLens = 4000;\n static readonly CommandDescriptionMaxLens = 128;\n static readonly ParameterDescriptionMaxLens = 128;\n static readonly CommandTitleMaxLens = 32;\n static readonly ParameterTitleMaxLens = 32;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\"use strict\";\n\nimport { OpenAPIV3 } from \"openapi-types\";\nimport SwaggerParser from '@apidevtools/swagger-parser';\nimport { ConstantString } from \"./constants\";\nimport {\n AuthSchema,\n CheckParamResult,\n ErrorResult,\n ErrorType,\n Parameter,\n ValidateResult,\n ValidationStatus,\n WarningResult,\n WarningType,\n} from \"./interfaces\";\nimport { IMessagingExtensionCommand } from \"@microsoft/teams-manifest\";\n\nexport class Utils {\n static checkParameters(paramObject: OpenAPIV3.ParameterObject[]): CheckParamResult {\n const paramResult = {\n requiredNum: 0,\n optionalNum: 0,\n isValid: true,\n };\n \n if (!paramObject) {\n return paramResult;\n }\n \n for (let i = 0; i < paramObject.length; i++) {\n const param = paramObject[i];\n const schema = param.schema as OpenAPIV3.SchemaObject;\n const isRequiredWithoutDefault = param.required && schema.default === undefined;\n \n if (param.in === \"header\" || param.in === \"cookie\") {\n if (isRequiredWithoutDefault) {\n paramResult.isValid = false;\n }\n continue;\n }\n \n if (\n schema.type !== \"boolean\" &&\n schema.type !== \"string\" &&\n schema.type !== \"number\" &&\n schema.type !== \"integer\"\n ) {\n if (isRequiredWithoutDefault) {\n paramResult.isValid = false;\n }\n continue;\n }\n \n if (param.in === \"query\" || param.in === \"path\") {\n if (isRequiredWithoutDefault) {\n paramResult.requiredNum = paramResult.requiredNum + 1;\n } else {\n paramResult.optionalNum = paramResult.optionalNum + 1;\n }\n }\n }\n \n return paramResult;\n }\n \n static checkPostBody(\n schema: OpenAPIV3.SchemaObject,\n isRequired = false\n ): CheckParamResult {\n const paramResult = {\n requiredNum: 0,\n optionalNum: 0,\n isValid: true,\n };\n \n if (Object.keys(schema).length === 0) {\n return paramResult;\n }\n \n const isRequiredWithoutDefault = isRequired && schema.default === undefined;\n \n if (\n schema.type === \"string\" ||\n schema.type === \"integer\" ||\n schema.type === \"boolean\" ||\n schema.type === \"number\"\n ) {\n if (isRequiredWithoutDefault) {\n paramResult.requiredNum = paramResult.requiredNum + 1;\n } else {\n paramResult.optionalNum = paramResult.optionalNum + 1;\n }\n } else if (schema.type === \"object\") {\n const { properties } = schema;\n for (const property in properties) {\n let isRequired = false;\n if (schema.required && schema.required?.indexOf(property) >= 0) {\n isRequired = true;\n }\n const result = Utils.checkPostBody(properties[property] as OpenAPIV3.SchemaObject, isRequired);\n paramResult.requiredNum += result.requiredNum;\n paramResult.optionalNum += result.optionalNum;\n paramResult.isValid = paramResult.isValid && result.isValid;\n }\n } else {\n if (isRequiredWithoutDefault) {\n paramResult.isValid = false;\n }\n }\n return paramResult;\n }\n \n /**\n * Checks if the given API is supported.\n * @param {string} method - The HTTP method of the API.\n * @param {string} path - The path of the API.\n * @param {OpenAPIV3.Document} spec - The OpenAPI specification document.\n * @returns {boolean} - Returns true if the API is supported, false otherwise.\n * @description The following APIs are supported:\n * 1. only support Get/Post operation without auth property\n * 2. parameter inside query or path only support string, number, boolean and integer\n * 3. parameter inside post body only support string, number, boolean, integer and object\n * 4. request body + required parameters <= 1\n * 5. response body should be “application/json” and not empty, and response code should be 20X\n * 6. only support request body with “application/json” content type\n */\n static isSupportedApi(\n method: string,\n path: string,\n spec: OpenAPIV3.Document,\n allowMissingId: boolean,\n allowAPIKeyAuth: boolean,\n allowMultipleParameters: boolean,\n allowOauth2: boolean\n ): boolean {\n const pathObj = spec.paths[path];\n method = method.toLocaleLowerCase();\n if (pathObj) {\n if (\n (method === ConstantString.PostMethod || method === ConstantString.GetMethod) &&\n pathObj[method]\n ) {\n const securities = pathObj[method]!.security;\n const authArray = Utils.getAuthArray(securities, spec);\n if (!Utils.isSupportedAuth(authArray, allowAPIKeyAuth, allowOauth2)) {\n return false;\n }\n \n const operationObject = pathObj[method] as OpenAPIV3.OperationObject;\n if (!allowMissingId && !operationObject.operationId) {\n return false;\n }\n const paramObject = operationObject.parameters as OpenAPIV3.ParameterObject[];\n \n const requestBody = operationObject.requestBody as OpenAPIV3.RequestBodyObject;\n const requestJsonBody = requestBody?.content[\"application/json\"];\n\n const mediaTypesCount = Object.keys(requestBody?.content || {}).length;\n if (mediaTypesCount > 1) {\n return false;\n }\n\n const responseJson = Utils.getResponseJson(operationObject);\n if (Object.keys(responseJson).length === 0) {\n return false;\n }\n \n let requestBodyParamResult = {\n requiredNum: 0,\n optionalNum: 0,\n isValid: true,\n };\n \n if (requestJsonBody) {\n const requestBodySchema = requestJsonBody.schema as OpenAPIV3.SchemaObject;\n requestBodyParamResult = Utils.checkPostBody(requestBodySchema, requestBody.required);\n }\n \n if (!requestBodyParamResult.isValid) {\n return false;\n }\n \n const paramResult = Utils.checkParameters(paramObject);\n \n if (!paramResult.isValid) {\n return false;\n }\n \n if (requestBodyParamResult.requiredNum + paramResult.requiredNum > 1) {\n if (\n allowMultipleParameters &&\n requestBodyParamResult.requiredNum + paramResult.requiredNum <= 5\n ) {\n return true;\n }\n return false;\n } else if (\n requestBodyParamResult.requiredNum +\n requestBodyParamResult.optionalNum +\n paramResult.requiredNum +\n paramResult.optionalNum ===\n 0\n ) {\n return false;\n } else {\n return true;\n }\n }\n }\n \n return false;\n }\n \n static isSupportedAuth(\n authSchemaArray: AuthSchema[][],\n allowAPIKeyAuth: boolean,\n allowOauth2: boolean\n ): boolean {\n if (authSchemaArray.length === 0) {\n return true;\n }\n \n if (allowAPIKeyAuth || allowOauth2) {\n // Currently we don't support multiple auth in one operation\n if (authSchemaArray.length > 0 && authSchemaArray.every((auths) => auths.length > 1)) {\n return false;\n }\n \n for (const auths of authSchemaArray) {\n if (auths.length === 1) {\n if (!allowOauth2 && allowAPIKeyAuth && Utils.isAPIKeyAuth(auths[0].authSchema)) {\n return true;\n } else if (!allowAPIKeyAuth && allowOauth2 && Utils.isBearerTokenAuth(auths[0].authSchema)) {\n return true;\n } else if (\n allowAPIKeyAuth &&\n allowOauth2 &&\n (Utils.isAPIKeyAuth(auths[0].authSchema) || Utils.isBearerTokenAuth(auths[0].authSchema))\n ) {\n return true;\n }\n }\n }\n }\n \n return false;\n }\n \n static isAPIKeyAuth(authSchema: OpenAPIV3.SecuritySchemeObject): boolean {\n return authSchema.type === \"apiKey\";\n }\n \n static isBearerTokenAuth(authSchema: OpenAPIV3.SecuritySchemeObject): boolean {\n return (\n authSchema.type === \"oauth2\" ||\n authSchema.type === \"openIdConnect\" ||\n (authSchema.type === \"http\" && authSchema.scheme === \"bearer\")\n );\n }\n \n static getAuthArray(\n securities: OpenAPIV3.SecurityRequirementObject[] | undefined,\n spec: OpenAPIV3.Document\n ): AuthSchema[][] {\n const result: AuthSchema[][] = [];\n const securitySchemas = spec.components?.securitySchemes;\n if (securities && securitySchemas) {\n for (let i = 0; i < securities.length; i++) {\n const security = securities[i];\n \n const authArray: AuthSchema[] = [];\n for (const name in security) {\n const auth = securitySchemas[name] as OpenAPIV3.SecuritySchemeObject;\n authArray.push({\n authSchema: auth,\n name: name,\n });\n }\n \n if (authArray.length > 0) {\n result.push(authArray);\n }\n }\n }\n \n result.sort((a, b) => a[0].name.localeCompare(b[0].name));\n \n return result;\n }\n \n static updateFirstLetter(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n static getResponseJson(\n operationObject: OpenAPIV3.OperationObject | undefined\n ): OpenAPIV3.MediaTypeObject {\n let json: OpenAPIV3.MediaTypeObject = {};\n \n for (const code of ConstantString.ResponseCodeFor20X) {\n const responseObject = operationObject?.responses?.[code] as OpenAPIV3.ResponseObject;\n\n const mediaTypesCount = Object.keys(responseObject?.content || {}).length;\n if (mediaTypesCount > 1) {\n return {};\n }\n\n if (responseObject?.content?.[\"application/json\"]) {\n json = responseObject.content[\"application/json\"];\n break;\n }\n }\n \n return json;\n }\n \n static convertPathToCamelCase(path: string): string {\n const pathSegments = path.split(/[./{]/);\n const camelCaseSegments = pathSegments.map((segment) => {\n segment = segment.replace(/}/g, \"\");\n return segment.charAt(0).toUpperCase() + segment.slice(1);\n });\n const camelCasePath = camelCaseSegments.join(\"\");\n return camelCasePath;\n }\n \n static getUrlProtocol(urlString: string): string | undefined {\n try {\n const url = new URL(urlString);\n return url.protocol;\n } catch (err) {\n return undefined;\n }\n }\n \n static resolveServerUrl(url: string): string {\n const placeHolderReg = /\\${{\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\s*}}/g;\n let matches = placeHolderReg.exec(url);\n let newUrl = url;\n while (matches != null) {\n const envVar = matches[1];\n const envVal = process.env[envVar];\n if (!envVal) {\n throw new Error(Utils.format(ConstantString.ResolveServerUrlFailed, envVar));\n } else {\n newUrl = newUrl.replace(matches[0], envVal);\n }\n matches = placeHolderReg.exec(url);\n }\n return newUrl;\n }\n \n static checkServerUrl(servers: OpenAPIV3.ServerObject[]): ErrorResult[] {\n const errors: ErrorResult[] = [];\n \n let serverUrl;\n try {\n serverUrl = Utils.resolveServerUrl(servers[0].url);\n } catch (err) {\n errors.push({\n type: ErrorType.ResolveServerUrlFailed,\n content: (err as Error).message,\n data: servers,\n });\n return errors;\n }\n \n const protocol = Utils.getUrlProtocol(serverUrl);\n if (!protocol) {\n // Relative server url is not supported\n errors.push({\n type: ErrorType.RelativeServerUrlNotSupported,\n content: ConstantString.RelativeServerUrlNotSupported,\n data: servers,\n });\n } else if (protocol !== \"https:\") {\n // Http server url is not supported\n const protocolString = protocol.slice(0, -1);\n errors.push({\n type: ErrorType.UrlProtocolNotSupported,\n content: Utils.format(ConstantString.UrlProtocolNotSupported, protocol.slice(0, -1)),\n data: protocolString,\n });\n }\n \n return errors;\n }\n \n static validateServer(\n spec: OpenAPIV3.Document,\n allowMissingId: boolean,\n allowAPIKeyAuth: boolean,\n allowMultipleParameters: boolean,\n allowOauth2: boolean\n ): ErrorResult[] {\n const errors: ErrorResult[] = [];\n \n let hasTopLevelServers = false;\n let hasPathLevelServers = false;\n let hasOperationLevelServers = false;\n \n if (spec.servers && spec.servers.length >= 1) {\n hasTopLevelServers = true;\n \n // for multiple server, we only use the first url\n const serverErrors = Utils.checkServerUrl(spec.servers);\n errors.push(...serverErrors);\n }\n \n const paths = spec.paths;\n for (const path in paths) {\n const methods = paths[path];\n \n if (methods?.servers && methods.servers.length >= 1) {\n hasPathLevelServers = true;\n const serverErrors = Utils.checkServerUrl(methods.servers);\n errors.push(...serverErrors);\n }\n \n for (const method in methods) {\n const operationObject = (methods as any)[method] as OpenAPIV3.OperationObject;\n if (\n Utils.isSupportedApi(\n method,\n path,\n spec,\n allowMissingId,\n allowAPIKeyAuth,\n allowMultipleParameters,\n allowOauth2\n )\n ) {\n if (operationObject?.servers && operationObject.servers.length >= 1) {\n hasOperationLevelServers = true;\n const serverErrors = Utils.checkServerUrl(operationObject.servers);\n errors.push(...serverErrors);\n }\n }\n }\n }\n if (!hasTopLevelServers && !hasPathLevelServers && !hasOperationLevelServers) {\n errors.push({\n type: ErrorType.NoServerInformation,\n content: ConstantString.NoServerInformation,\n });\n }\n return errors;\n }\n \n static isWellKnownName(name: string, wellknownNameList: string[]): boolean {\n for (let i = 0; i < wellknownNameList.length; i++) {\n name = name.replace(/_/g, \"\").replace(/-/g, \"\");\n if (name.toLowerCase().includes(wellknownNameList[i])) {\n return true;\n }\n }\n return false;\n }\n \n static generateParametersFromSchema(\n schema: OpenAPIV3.SchemaObject,\n name: string,\n allowMultipleParameters: boolean,\n isRequired = false\n ): [Parameter[], Parameter[]] {\n const requiredParams: Parameter[] = [];\n const optionalParams: Parameter[] = [];\n \n if (\n schema.type === \"string\" ||\n schema.type === \"integer\" ||\n schema.type === \"boolean\" ||\n schema.type === \"number\"\n ) {\n const parameter = {\n name: name,\n title: Utils.updateFirstLetter(name).slice(0, ConstantString.ParameterTitleMaxLens),\n description: (schema.description ?? \"\").slice(0, ConstantString.ParameterDescriptionMaxLens),\n };\n \n if (allowMultipleParameters) {\n Utils.updateParameterWithInputType(schema, parameter);\n }\n \n if (isRequired && schema.default === undefined) {\n requiredParams.push(parameter);\n } else {\n optionalParams.push(parameter);\n }\n } else if (schema.type === \"object\") {\n const { properties } = schema;\n for (const property in properties) {\n let isRequired = false;\n if (schema.required && schema.required?.indexOf(property) >= 0) {\n isRequired = true;\n }\n const [requiredP, optionalP] = Utils.generateParametersFromSchema(\n properties[property] as OpenAPIV3.SchemaObject,\n property,\n allowMultipleParameters,\n isRequired\n );\n \n requiredParams.push(...requiredP);\n optionalParams.push(...optionalP);\n }\n }\n \n return [requiredParams, optionalParams];\n }\n \n static updateParameterWithInputType(\n schema: OpenAPIV3.SchemaObject,\n param: Parameter\n ): void {\n if (schema.enum) {\n param.inputType = \"choiceset\";\n param.choices = [];\n for (let i = 0; i < schema.enum.length; i++) {\n param.choices.push({\n title: schema.enum[i],\n value: schema.enum[i],\n });\n }\n } else if (schema.type === \"string\") {\n param.inputType = \"text\";\n } else if (schema.type === \"integer\" || schema.type === \"number\") {\n param.inputType = \"number\";\n } else if (schema.type === \"boolean\") {\n param.inputType = \"toggle\";\n }\n \n if (schema.default) {\n param.value = schema.default;\n }\n }\n \n static parseApiInfo(\n operationItem: OpenAPIV3.OperationObject,\n allowMultipleParameters: boolean\n ): [IMessagingExtensionCommand, WarningResult | undefined] {\n const requiredParams: Parameter[] = [];\n const optionalParams: Parameter[] = [];\n const paramObject = operationItem.parameters as OpenAPIV3.ParameterObject[];\n \n if (paramObject) {\n paramObject.forEach((param: OpenAPIV3.ParameterObject) => {\n const parameter: Parameter = {\n name: param.name,\n title: Utils.updateFirstLetter(param.name).slice(0, ConstantString.ParameterTitleMaxLens),\n description: (param.description ?? \"\").slice(0, ConstantString.ParameterDescriptionMaxLens),\n };\n \n const schema = param.schema as OpenAPIV3.SchemaObject;\n if (allowMultipleParameters && schema) {\n Utils.updateParameterWithInputType(schema, parameter);\n }\n \n if (param.in !== \"header\" && param.in !== \"cookie\") {\n if (param.required && schema?.default === undefined) {\n requiredParams.push(parameter);\n } else {\n optionalParams.push(parameter);\n }\n }\n });\n }\n \n if (operationItem.requestBody) {\n const requestBody = operationItem.requestBody as OpenAPIV3.RequestBodyObject;\n const requestJson = requestBody.content[\"application/json\"];\n if (Object.keys(requestJson).length !== 0) {\n const schema = requestJson.schema as OpenAPIV3.SchemaObject;\n const [requiredP, optionalP] = Utils.generateParametersFromSchema(\n schema,\n \"requestBody\",\n allowMultipleParameters,\n requestBody.required\n );\n requiredParams.push(...requiredP);\n optionalParams.push(...optionalP);\n }\n }\n \n const operationId = operationItem.operationId!;\n \n const parameters = [];\n \n if (requiredParams.length !== 0) {\n parameters.push(...requiredParams);\n } else {\n parameters.push(optionalParams[0]);\n }\n \n const command: IMessagingExtensionCommand = {\n context: [\"compose\"],\n type: \"query\",\n title: (operationItem.summary ?? \"\").slice(0, ConstantString.CommandTitleMaxLens),\n id: operationId,\n parameters: parameters,\n description: (operationItem.description ?? \"\").slice(\n 0,\n ConstantString.CommandDescriptionMaxLens\n ),\n };\n let warning: WarningResult | undefined = undefined;\n \n if (requiredParams.length === 0 && optionalParams.length > 1) {\n warning = {\n type: WarningType.OperationOnlyContainsOptionalParam,\n content: Utils.format(ConstantString.OperationOnlyContainsOptionalParam, operationId),\n data: operationId,\n };\n }\n return [command, warning];\n }\n \n static listSupportedAPIs(\n spec: OpenAPIV3.Document,\n allowMissingId: boolean,\n allowAPIKeyAuth: boolean,\n allowMultipleParameters: boolean,\n allowOauth2: boolean\n ): {\n [key: string]: OpenAPIV3.OperationObject;\n } {\n const paths = spec.paths;\n const result: { [key: string]: OpenAPIV3.OperationObject } = {};\n for (const path in paths) {\n const methods = paths[path];\n for (const method in methods) {\n // For developer preview, only support GET operation with only 1 parameter without auth\n if (\n Utils.isSupportedApi(\n method,\n path,\n spec,\n allowMissingId,\n allowAPIKeyAuth,\n allowMultipleParameters,\n allowOauth2\n )\n ) {\n const operationObject = (methods as any)[method] as OpenAPIV3.OperationObject;\n result[`${method.toUpperCase()} ${path}`] = operationObject;\n }\n }\n }\n return result;\n }\n \n static validateSpec(\n spec: OpenAPIV3.Document,\n parser: SwaggerParser,\n isSwaggerFile: boolean,\n allowMissingId: boolean,\n allowAPIKeyAuth: boolean,\n allowMultipleParameters: boolean,\n allowOauth2: boolean\n ): ValidateResult {\n const errors: ErrorResult[] = [];\n const warnings: WarningResult[] = [];\n \n if (isSwaggerFile) {\n warnings.push({\n type: WarningType.ConvertSwaggerToOpenAPI,\n content: ConstantString.ConvertSwaggerToOpenAPI,\n });\n }\n \n // Server validation\n const serverErrors = Utils.validateServer(\n spec,\n allowMissingId,\n allowAPIKeyAuth,\n allowMultipleParameters,\n allowOauth2\n );\n errors.push(...serverErrors);\n \n // Remote reference not supported\n const refPaths = parser.$refs.paths();\n \n // refPaths [0] is the current spec file path\n if (refPaths.length > 1) {\n errors.push({\n type: ErrorType.RemoteRefNotSupported,\n content: Utils.format(ConstantString.RemoteRefNotSupported, refPaths.join(\", \")),\n data: refPaths,\n });\n }\n \n // No supported API\n const apiMap = Utils.listSupportedAPIs(\n spec,\n allowMissingId,\n allowAPIKeyAuth,\n allowMultipleParameters,\n allowOauth2\n );\n if (Object.keys(apiMap).length === 0) {\n errors.push({\n type: ErrorType.NoSupportedApi,\n content: ConstantString.NoSupportedApi,\n });\n }\n \n // OperationId missing\n const apisMissingOperationId: string[] = [];\n for (const key in apiMap) {\n const pathObjectItem = apiMap[key];\n if (!pathObjectItem.operationId) {\n apisMissingOperationId.push(key);\n }\n }\n \n if (apisMissingOperationId.length > 0) {\n warnings.push({\n type: WarningType.OperationIdMissing,\n content: Utils.format(ConstantString.MissingOperationId, apisMissingOperationId.join(\", \")),\n data: apisMissingOperationId,\n });\n }\n \n let status = ValidationStatus.Valid;\n if (warnings.length > 0 && errors.length === 0) {\n status = ValidationStatus.Warning;\n } else if (errors.length > 0) {\n status = ValidationStatus.Error;\n }\n \n return {\n status,\n warnings,\n errors,\n };\n }\n \n static format(str: string, ...args: string[]): string {\n let index = 0;\n return str.replace(/%s/g, () => {\n const arg = args[index++];\n return arg !== undefined ? arg : \"\";\n });\n }\n \n static getSafeRegistrationIdEnvName(authName: string): string {\n if (!authName) {\n return \"\";\n }\n \n let safeRegistrationIdEnvName = authName.toUpperCase().replace(/[^A-Z0-9_]/g, \"_\");\n \n if (!safeRegistrationIdEnvName.match(/^[A-Z]/)) {\n safeRegistrationIdEnvName = \"PREFIX_\" + safeRegistrationIdEnvName;\n }\n \n return safeRegistrationIdEnvName;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\"use strict\";\n\nimport SwaggerParser from \"@apidevtools/swagger-parser\";\nimport { OpenAPIV3 } from \"openapi-types\";\nimport {\n APIInfo,\n ErrorType,\n GenerateResult,\n ParseOptions,\n ValidateResult,\n ValidationStatus,\n Parameter,\n ListAPIResult,\n} from \"./interfaces\";\nimport { SpecParserError } from \"./specParserError\";\nimport { Utils } from \"./utils\";\nimport { ConstantString } from \"./constants\";\n\n/**\n * A class that parses an OpenAPI specification file and provides methods to validate, list, and generate artifacts.\n */\nexport class SpecParser {\n public readonly pathOrSpec: string | OpenAPIV3.Document;\n public readonly parser: SwaggerParser;\n public readonly options: Required<ParseOptions>;\n\n private apiMap: { [key: string]: OpenAPIV3.PathItemObject } | undefined;\n private spec: OpenAPIV3.Document | undefined;\n private unResolveSpec: OpenAPIV3.Document | undefined;\n private isSwaggerFile: boolean | undefined;\n\n private defaultOptions: ParseOptions = {\n allowMissingId: false,\n allowSwagger: false,\n allowAPIKeyAuth: false,\n allowMultipleParameters: false,\n allowOauth2: false,\n };\n\n /**\n * Creates a new instance of the SpecParser class.\n * @param pathOrDoc The path to the OpenAPI specification file or the OpenAPI specification object.\n * @param options The options for parsing the OpenAPI specification file.\n */\n constructor(pathOrDoc: string | OpenAPIV3.Document, options?: ParseOptions) {\n this.pathOrSpec = pathOrDoc;\n this.parser = new SwaggerParser();\n this.options = {\n ...this.defaultOptions,\n ...(options ?? {}),\n } as Required<ParseOptions>;\n }\n\n /**\n * Validates the OpenAPI specification file and returns a validation result.\n *\n * @returns A validation result object that contains information about any errors or warnings in the specification file.\n */\n async validate(): Promise<ValidateResult> {\n try {\n try {\n await this.loadSpec();\n await this.parser.validate(this.spec!);\n } catch (e) {\n return {\n status: ValidationStatus.Error,\n warnings: [],\n errors: [{ type: ErrorType.SpecNotValid, content: (e as Error).toString() }],\n };\n }\n\n if (!this.options.allowSwagger && this.isSwaggerFile) {\n return {\n status: ValidationStatus.Error,\n warnings: [],\n errors: [\n { type: ErrorType.SwaggerNotSupported, content: ConstantString.SwaggerNotSupported },\n ],\n };\n }\n\n return Utils.validateSpec(\n this.spec!,\n this.parser,\n !!this.isSwaggerFile,\n this.options.allowMissingId,\n this.options.allowAPIKeyAuth,\n this.options.allowMultipleParameters,\n this.options.allowOauth2\n );\n } catch (err) {\n throw new SpecParserError((err as Error).toString(), ErrorType.ValidateFailed);\n }\n }\n\n async listSupportedAPIInfo(): Promise<APIInfo[]> {\n try {\n await this.loadSpec();\n const apiMap = this.getAllSupportedAPIs(this.spec!);\n const apiInfos: APIInfo[] = [];\n for (const key in apiMap) {\n const pathObjectItem = apiMap[key];\n const [method, path] = key.split(\" \");\n const operationId = pathObjectItem.operationId;\n\n // In Browser environment, this api is by default not support api without operationId\n if (!operationId) {\n continue;\n }\n\n const [command, warning] = Utils.parseApiInfo(\n pathObjectItem,\n this.options.allowMultipleParameters\n );\n\n const apiInfo: APIInfo = {\n method: method,\n path: path,\n title: command.title,\n id: operationId,\n parameters: command.parameters! as Parameter[],\n description: command.description!,\n };\n\n if (warning) {\n apiInfo.warning = warning;\n }\n\n apiInfos.push(apiInfo);\n }\n\n return apiInfos;\n } catch (err) {\n throw new SpecParserError((err as Error).toString(), ErrorType.listSupportedAPIInfoFailed);\n }\n }\n\n /**\n * Lists all the OpenAPI operations in the specification file.\n * @returns A string array that represents the HTTP method and path of each operation, such as ['GET /pets/{petId}', 'GET /user/{userId}']\n * according to copilot plugin spec, only list get and post method without auth\n */\n // eslint-disable-next-line @typescript-eslint/require-await\n async list(): Promise<ListAPIResult[]> {\n throw new Error(\"Method not implemented.\");\n }\n\n /**\n * Generates and update artifacts from the OpenAPI specification file. Generate Adaptive Cards, update Teams app manifest, and generate a new OpenAPI specification file.\n * @param manifestPath A file path of the Teams app manifest file to update.\n * @param filter An array of strings that represent the filters to apply when generating the artifacts. If filter is empty, it would process nothing.\n * @param outputSpecPath File path of the new OpenAPI specification file to generate. If not specified or empty, no spec file will be generated.\n * @param adaptiveCardFolder Folder path where the Adaptive Card files will be generated. If not specified or empty, Adaptive Card files will not be generated.\n */\n // eslint-disable-next-line @typescript-eslint/require-await\n async generate(\n manifestPath: string,\n filter: string[],\n outputSpecPath: string,\n adaptiveCardFolder: string,\n signal?: AbortSignal\n ): Promise<GenerateResult> {\n throw new Error(\"Method not implemented.\");\n }\n\n private async loadSpec(): Promise<void> {\n if (!this.spec) {\n this.unResolveSpec = (await this.parser.parse(this.pathOrSpec)) as OpenAPIV3.Document;\n if (!this.unResolveSpec.openapi && (this.unResolveSpec as any).swagger === \"2.0\") {\n this.isSwaggerFile = true;\n }\n\n const clonedUnResolveSpec = JSON.parse(JSON.stringify(this.unResolveSpec));\n this.spec = (await this.parser.dereference(clonedUnResolveSpec)) as OpenAPIV3.Document;\n }\n }\n\n private getAllSupportedAPIs(spec: OpenAPIV3.Document): {\n [key: string]: OpenAPIV3.OperationObject;\n } {\n if (this.apiMap !== undefined) {\n return this.apiMap;\n }\n const result = Utils.listSupportedAPIs(\n spec,\n this.options.allowMissingId,\n this.options.allowAPIKeyAuth,\n this.options.allowMultipleParameters,\n this.options.allowOauth2\n );\n this.apiMap = result;\n return result;\n }\n}\n"],"names":[],"mappings":";;AAAA;AAuEA;;AAEG;IACS,UAsBX;AAtBD,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,cAAA,CAAA,GAAA,gBAA+B,CAAA;AAC/B,IAAA,SAAA,CAAA,uBAAA,CAAA,GAAA,0BAAkD,CAAA;AAClD,IAAA,SAAA,CAAA,qBAAA,CAAA,GAAA,uBAA6C,CAAA;AAC7C,IAAA,SAAA,CAAA,yBAAA,CAAA,GAAA,4BAAsD,CAAA;AACtD,IAAA,SAAA,CAAA,+BAAA,CAAA,GAAA,mCAAmE,CAAA;AACnE,IAAA,SAAA,CAAA,gBAAA,CAAA,GAAA,kBAAmC,CAAA;AACnC,IAAA,SAAA,CAAA,sBAAA,CAAA,GAAA,2BAAkD,CAAA;AAClD,IAAA,SAAA,CAAA,wBAAA,CAAA,GAAA,2BAAoD,CAAA;AACpD,IAAA,SAAA,CAAA,qBAAA,CAAA,GAAA,uBAA6C,CAAA;AAC7C,IAAA,SAAA,CAAA,4BAAA,CAAA,GAAA,gCAA6D,CAAA;AAE7D,IAAA,SAAA,CAAA,YAAA,CAAA,GAAA,aAA0B,CAAA;AAC1B,IAAA,SAAA,CAAA,4BAAA,CAAA,GAAA,gCAA6D,CAAA;AAC7D,IAAA,SAAA,CAAA,kBAAA,CAAA,GAAA,oBAAuC,CAAA;AACvC,IAAA,SAAA,CAAA,sBAAA,CAAA,GAAA,wBAA+C,CAAA;AAC/C,IAAA,SAAA,CAAA,4BAAA,CAAA,GAAA,+BAA4D,CAAA;AAC5D,IAAA,SAAA,CAAA,gBAAA,CAAA,GAAA,iBAAkC,CAAA;AAClC,IAAA,SAAA,CAAA,gBAAA,CAAA,GAAA,iBAAkC,CAAA;AAElC,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACrB,CAAC,EAtBW,SAAS,KAAT,SAAS,GAsBpB,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;IACS,YAMX;AAND,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,oBAAA,CAAA,GAAA,qBAA0C,CAAA;AAC1C,IAAA,WAAA,CAAA,oBAAA,CAAA,GAAA,sBAA2C,CAAA;AAC3C,IAAA,WAAA,CAAA,oCAAA,CAAA,GAAA,wCAA6E,CAAA;AAC7E,IAAA,WAAA,CAAA,yBAAA,CAAA,GAAA,4BAAsD,CAAA;AACtD,IAAA,WAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACrB,CAAC,EANW,WAAW,KAAX,WAAW,GAMtB,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;IACS,iBAIX;AAJD,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,gBAAA,CAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,gBAAA,CAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACP,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,GAI3B,EAAA,CAAA,CAAA;;ACpHD;AAMM,MAAO,eAAgB,SAAQ,KAAK,CAAA;IAGxC,WAAY,CAAA,OAAe,EAAE,SAAoB,EAAA;QAC/C,KAAK,CAAC,OAAO,CAAC,CAAC;AACf,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC5B;AACF;;ACbD;MAIa,cAAc,CAAA;;AACT,cAAgB,CAAA,gBAAA,GAAG,yBAAyB,CAAC;AAC7C,cAAmB,CAAA,mBAAA,GACjC,qEAAqE,CAAC;AACxD,cAAqB,CAAA,qBAAA,GAAG,wCAAwC,CAAC;AACjE,cAAkB,CAAA,kBAAA,GAAG,2BAA2B,CAAC;AACjD,cAAc,CAAA,cAAA,GAC5B,4LAA4L,CAAC;AAE/K,cAAgC,CAAA,gCAAA,GAC9C,+DAA+D,CAAC;AAClD,cAAkB,CAAA,kBAAA,GAAG,2DAA2D,CAAC;AACjF,cAAa,CAAA,aAAA,GAAG,qBAAqB,CAAC;AAEtC,cAAuB,CAAA,uBAAA,GACrC,iGAAiG,CAAC;AACpF,cAA6B,CAAA,6BAAA,GAC3C,kEAAkE,CAAC;AACrD,cAAsB,CAAA,sBAAA,GACpC,iGAAiG,CAAC;AACpF,cAAkC,CAAA,kCAAA,GAChD,4GAA4G,CAAC;AAC/F,cAAuB,CAAA,uBAAA,GACrC,yDAAyD,CAAC;AAE5C,cAAmB,CAAA,mBAAA,GACjC,yFAAyF,CAAC;AAE5E,cAA0B,CAAA,0BAAA,GACxC,oGAAoG,CAAC;AAEvF,cAAkB,CAAA,kBAAA,GAAG,YAAY,CAAC;AAClC,cAAiB,CAAA,iBAAA,GAC/B,qHAAqH,CAAC;AACxG,cAAyB,CAAA,yBAAA,GAAG,MAAM,CAAC;AAEnC,cAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAClB,cAAU,CAAA,UAAA,GAAG,MAAM,CAAC;AACpB,cAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;AAC5B,cAAkB,CAAA,kBAAA,GAAG,oDAAoD,CAAC;AAC1E,cAAgB,CAAA,gBAAA,GAAG,cAAc,CAAC;AAClC,cAAa,CAAA,aAAA,GAAG,WAAW,CAAC;AAC5B,cAAa,CAAA,aAAA,GAAG,WAAW,CAAC;AAC5B,cAAqB,CAAA,qBAAA,GAAG,iBAAiB,CAAC;AAC1C,cAAA,CAAA,kBAAkB,GAAG;IACnC,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,SAAS;CACV,CAAC;AACc,cAAA,CAAA,mBAAmB,GAAG;IACpC,KAAK;IACL,MAAM;IACN,KAAK;IACL,QAAQ;IACR,OAAO;IACP,MAAM;IACN,SAAS;IACT,OAAO;CACR,CAAC;AAEF;AACgB,cAAA,CAAA,oBAAoB,GAAG;IACrC,QAAQ;IACR,MAAM;IACN,OAAO;IACP,MAAM;IACN,SAAS;IACT,SAAS;IACT,MAAM;IACN,QAAQ;CACT,CAAC;AACc,cAAA,CAAA,kBAAkB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACjF,cAAA,CAAA,qBAAqB,GAAG;IACtC,UAAU;IACV,IAAI;IACJ,KAAK;IACL,aAAa;IACb,MAAM;IACN,QAAQ;CACT,CAAC;AACc,cAAA,CAAA,kBAAkB,GAAG;IACnC,OAAO;IACP,MAAM;IACN,QAAQ;IACR,SAAS;IACT,OAAO;IACP,MAAM;IACN,KAAK;IACL,WAAW;IACX,KAAK;CACN,CAAC;AAEc,cAAuB,CAAA,uBAAA,GAAG,EAAE,CAAC;AAC7B,cAAsB,CAAA,sBAAA,GAAG,IAAI,CAAC;AAC9B,cAAyB,CAAA,yBAAA,GAAG,GAAG,CAAC;AAChC,cAA2B,CAAA,2BAAA,GAAG,GAAG,CAAC;AAClC,cAAmB,CAAA,mBAAA,GAAG,EAAE,CAAC;AACzB,cAAqB,CAAA,qBAAA,GAAG,EAAE;;AC7G5C;MAoBa,KAAK,CAAA;IAChB,OAAO,eAAe,CAAC,WAAwC,EAAA;AAC7D,QAAA,MAAM,WAAW,GAAG;AAClB,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,OAAO,EAAE,IAAI;SACd,CAAC;QAEF,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,OAAO,WAAW,CAAC;AACpB,SAAA;AAED,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,YAAA,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAgC,CAAC;YACtD,MAAM,wBAAwB,GAAG,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC;YAEhF,IAAI,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,KAAK,CAAC,EAAE,KAAK,QAAQ,EAAE;AAClD,gBAAA,IAAI,wBAAwB,EAAE;AAC5B,oBAAA,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B,iBAAA;gBACD,SAAS;AACV,aAAA;AAED,YAAA,IACE,MAAM,CAAC,IAAI,KAAK,SAAS;gBACzB,MAAM,CAAC,IAAI,KAAK,QAAQ;gBACxB,MAAM,CAAC,IAAI,KAAK,QAAQ;AACxB,gBAAA,MAAM,CAAC,IAAI,KAAK,SAAS,EACzB;AACA,gBAAA,IAAI,wBAAwB,EAAE;AAC5B,oBAAA,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B,iBAAA;gBACD,SAAS;AACV,aAAA;YAED,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,IAAI,KAAK,CAAC,EAAE,KAAK,MAAM,EAAE;AAC/C,gBAAA,IAAI,wBAAwB,EAAE;oBAC5B,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC;AACvD,iBAAA;AAAM,qBAAA;oBACL,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC;AACvD,iBAAA;AACF,aAAA;AACF,SAAA;AAED,QAAA,OAAO,WAAW,CAAC;KACpB;AAED,IAAA,OAAO,aAAa,CAClB,MAA8B,EAC9B,UAAU,GAAG,KAAK,EAAA;;AAElB,QAAA,MAAM,WAAW,GAAG;AAClB,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,OAAO,EAAE,IAAI;SACd,CAAC;QAEF,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,YAAA,OAAO,WAAW,CAAC;AACpB,SAAA;QAED,MAAM,wBAAwB,GAAG,UAAU,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC;AAE5E,QAAA,IACE,MAAM,CAAC,IAAI,KAAK,QAAQ;YACxB,MAAM,CAAC,IAAI,KAAK,SAAS;YACzB,MAAM,CAAC,IAAI,KAAK,SAAS;AACzB,YAAA,MAAM,CAAC,IAAI,KAAK,QAAQ,EACxB;AACA,YAAA,IAAI,wBAAwB,EAAE;gBAC5B,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC;AACvD,aAAA;AAAM,iBAAA;gBACL,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC;AACvD,aAAA;AACF,SAAA;AAAM,aAAA,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AACnC,YAAA,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;AAC9B,YAAA,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE;gBACjC,IAAI,UAAU,GAAG,KAAK,CAAC;AACvB,gBAAA,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAA,MAAA,MAAM,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,QAAQ,CAAC,KAAI,CAAC,EAAE;oBAC9D,UAAU,GAAG,IAAI,CAAC;AACnB,iBAAA;AACD,gBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAA2B,EAAE,UAAU,CAAC,CAAC;AAC/F,gBAAA,WAAW,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC;AAC9C,gBAAA,WAAW,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC;gBAC9C,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;AAC7D,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,wBAAwB,EAAE;AAC5B,gBAAA,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B,aAAA;AACF,SAAA;AACD,QAAA,OAAO,WAAW,CAAC;KACpB;AAED;;;;;;;;;;;;;AAaG;AACH,IAAA,OAAO,cAAc,CACnB,MAAc,EACd,IAAY,EACZ,IAAwB,EACxB,cAAuB,EACvB,eAAwB,EACxB,uBAAgC,EAChC,WAAoB,EAAA;QAEpB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACjC,QAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;AACpC,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,IACE,CAAC,MAAM,KAAK,cAAc,CAAC,UAAU,IAAI,MAAM,KAAK,cAAc,CAAC,SAAS;gBAC5E,OAAO,CAAC,MAAM,CAAC,EACf;gBACA,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAE,CAAC,QAAQ,CAAC;gBAC7C,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACvD,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,EAAE,eAAe,EAAE,WAAW,CAAC,EAAE;AACnE,oBAAA,OAAO,KAAK,CAAC;AACd,iBAAA;AAED,gBAAA,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAA8B,CAAC;AACrE,gBAAA,IAAI,CAAC,cAAc,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;AACnD,oBAAA,OAAO,KAAK,CAAC;AACd,iBAAA;AACD,gBAAA,MAAM,WAAW,GAAG,eAAe,CAAC,UAAyC,CAAC;AAE9E,gBAAA,MAAM,WAAW,GAAG,eAAe,CAAC,WAA0C,CAAC;AAC/E,gBAAA,MAAM,eAAe,GAAG,WAAW,KAAA,IAAA,IAAX,WAAW,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAX,WAAW,CAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAEjE,gBAAA,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA,WAAW,KAAA,IAAA,IAAX,WAAW,KAAX,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAW,CAAE,OAAO,KAAI,EAAE,CAAC,CAAC,MAAM,CAAC;gBACvE,IAAI,eAAe,GAAG,CAAC,EAAE;AACvB,oBAAA,OAAO,KAAK,CAAC;AACd,iBAAA;gBAED,MAAM,YAAY,GAAG,KAAK,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;gBAC5D,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1C,oBAAA,OAAO,KAAK,CAAC;AACd,iBAAA;AAED,gBAAA,IAAI,sBAAsB,GAAG;AAC3B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,OAAO,EAAE,IAAI;iBACd,CAAC;AAEF,gBAAA,IAAI,eAAe,EAAE;AACnB,oBAAA,MAAM,iBAAiB,GAAG,eAAe,CAAC,MAAgC,CAAC;oBAC3E,sBAAsB,GAAG,KAAK,CAAC,aAAa,CAAC,iBAAiB,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AACvF,iBAAA;AAED,gBAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE;AACnC,oBAAA,OAAO,KAAK,CAAC;AACd,iBAAA;gBAED,MAAM,WAAW,GAAG,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;AAEvD,gBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AACxB,oBAAA,OAAO,KAAK,CAAC;AACd,iBAAA;gBAED,IAAI,sBAAsB,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,GAAG,CAAC,EAAE;AACpE,oBAAA,IACE,uBAAuB;wBACvB,sBAAsB,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,IAAI,CAAC,EACjE;AACA,wBAAA,OAAO,IAAI,CAAC;AACb,qBAAA;AACD,oBAAA,OAAO,KAAK,CAAC;AACd,iBAAA;qBAAM,IACL,sBAAsB,CAAC,WAAW;AAChC,oBAAA,sBAAsB,CAAC,WAAW;AAClC,oBAAA,WAAW,CAAC,WAAW;AACvB,oBAAA,WAAW,CAAC,WAAW;AACzB,oBAAA,CAAC,EACD;AACA,oBAAA,OAAO,KAAK,CAAC;AACd,iBAAA;AAAM,qBAAA;AACL,oBAAA,OAAO,IAAI,CAAC;AACb,iBAAA;AACF,aAAA;AACF,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,OAAO,eAAe,CACpB,eAA+B,EAC/B,eAAwB,EACxB,WAAoB,EAAA;AAEpB,QAAA,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,IAAI,eAAe,IAAI,WAAW,EAAE;;YAElC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACpF,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;AAED,YAAA,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE;AACnC,gBAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,oBAAA,IAAI,CAAC,WAAW,IAAI,eAAe,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE;AAC9E,wBAAA,OAAO,IAAI,CAAC;AACb,qBAAA;AAAM,yBAAA,IAAI,CAAC,eAAe,IAAI,WAAW,IAAI,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE;AAC1F,wBAAA,OAAO,IAAI,CAAC;AACb,qBAAA;AAAM,yBAAA,IACL,eAAe;wBACf,WAAW;yBACV,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EACzF;AACA,wBAAA,OAAO,IAAI,CAAC;AACb,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KACd;IAED,OAAO,YAAY,CAAC,UAA0C,EAAA;AAC5D,QAAA,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,CAAC;KACrC;IAED,OAAO,iBAAiB,CAAC,UAA0C,EAAA;AACjE,QAAA,QACE,UAAU,CAAC,IAAI,KAAK,QAAQ;YAC5B,UAAU,CAAC,IAAI,KAAK,eAAe;AACnC,aAAC,UAAU,CAAC,IAAI,KAAK,MAAM,IAAI,UAAU,CAAC,MAAM,KAAK,QAAQ,CAAC,EAC9D;KACH;AAED,IAAA,OAAO,YAAY,CACjB,UAA6D,EAC7D,IAAwB,EAAA;;QAExB,MAAM,MAAM,GAAmB,EAAE,CAAC;QAClC,MAAM,eAAe,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,eAAe,CAAC;QACzD,IAAI,UAAU,IAAI,eAAe,EAAE;AACjC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,gBAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAE/B,MAAM,SAAS,GAAiB,EAAE,CAAC;AACnC,gBAAA,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;AAC3B,oBAAA,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAmC,CAAC;oBACrE,SAAS,CAAC,IAAI,CAAC;AACb,wBAAA,UAAU,EAAE,IAAI;AAChB,wBAAA,IAAI,EAAE,IAAI;AACX,qBAAA,CAAC,CAAC;AACJ,iBAAA;AAED,gBAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,oBAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxB,iBAAA;AACF,aAAA;AACF,SAAA;QAED,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAE1D,QAAA,OAAO,MAAM,CAAC;KACf;IAED,OAAO,iBAAiB,CAAC,GAAW,EAAA;AAClC,QAAA,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACnD;IAED,OAAO,eAAe,CACpB,eAAsD,EAAA;;QAEtD,IAAI,IAAI,GAA8B,EAAE,CAAC;AAEzC,QAAA,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,kBAAkB,EAAE;AACpD,YAAA,MAAM,cAAc,GAAG,CAAA,EAAA,GAAA,eAAe,KAAf,IAAA,IAAA,eAAe,KAAf,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,eAAe,CAAE,SAAS,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAA6B,CAAC;AAEtF,YAAA,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA,cAAc,KAAA,IAAA,IAAd,cAAc,KAAd,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,cAAc,CAAE,OAAO,KAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YAC1E,IAAI,eAAe,GAAG,CAAC,EAAE;AACvB,gBAAA,OAAO,EAAE,CAAC;AACX,aAAA;YAED,IAAI,CAAA,EAAA,GAAA,cAAc,KAAA,IAAA,IAAd,cAAc,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAd,cAAc,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,kBAAkB,CAAC,EAAE;AACjD,gBAAA,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;gBAClD,MAAM;AACP,aAAA;AACF,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACb;IAED,OAAO,sBAAsB,CAAC,IAAY,EAAA;QACxC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;YACrD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACpC,YAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5D,SAAC,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjD,QAAA,OAAO,aAAa,CAAC;KACtB;IAED,OAAO,cAAc,CAAC,SAAiB,EAAA;QACrC,IAAI;AACF,YAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;YAC/B,OAAO,GAAG,CAAC,QAAQ,CAAC;AACrB,SAAA;AAAC,QAAA,OAAO,GAAG,EAAE;AACZ,YAAA,OAAO,SAAS,CAAC;AAClB,SAAA;KACF;IAED,OAAO,gBAAgB,CAAC,GAAW,EAAA;QACjC,MAAM,cAAc,GAAG,uCAAuC,CAAC;QAC/D,IAAI,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,MAAM,GAAG,GAAG,CAAC;QACjB,OAAO,OAAO,IAAI,IAAI,EAAE;AACtB,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC,CAAC;AAC9E,aAAA;AAAM,iBAAA;AACL,gBAAA,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC7C,aAAA;AACD,YAAA,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;IAED,OAAO,cAAc,CAAC,OAAiC,EAAA;QACrD,MAAM,MAAM,GAAkB,EAAE,CAAC;AAEjC,QAAA,IAAI,SAAS,CAAC;QACd,IAAI;AACF,YAAA,SAAS,GAAG,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACpD,SAAA;AAAC,QAAA,OAAO,GAAG,EAAE;YACZ,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,SAAS,CAAC,sBAAsB;gBACtC,OAAO,EAAG,GAAa,CAAC,OAAO;AAC/B,gBAAA,IAAI,EAAE,OAAO;AACd,aAAA,CAAC,CAAC;AACH,YAAA,OAAO,MAAM,CAAC;AACf,SAAA;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,EAAE;;YAEb,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,SAAS,CAAC,6BAA6B;gBAC7C,OAAO,EAAE,cAAc,CAAC,6BAA6B;AACrD,gBAAA,IAAI,EAAE,OAAO;AACd,aAAA,CAAC,CAAC;AACJ,SAAA;aAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE;;YAEhC,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,SAAS,CAAC,uBAAuB;AACvC,gBAAA,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,uBAAuB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpF,gBAAA,IAAI,EAAE,cAAc;AACrB,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACf;IAED,OAAO,cAAc,CACnB,IAAwB,EACxB,cAAuB,EACvB,eAAwB,EACxB,uBAAgC,EAChC,WAAoB,EAAA;QAEpB,MAAM,MAAM,GAAkB,EAAE,CAAC;QAEjC,IAAI,kBAAkB,GAAG,KAAK,CAAC;QAC/B,IAAI,mBAAmB,GAAG,KAAK,CAAC;QAChC,IAAI,wBAAwB,GAAG,KAAK,CAAC;QAErC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;YAC5C,kBAAkB,GAAG,IAAI,CAAC;;YAG1B,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxD,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;AAC9B,SAAA;AAED,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AAE5B,YAAA,IAAI,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,OAAO,KAAI,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;gBACnD,mBAAmB,GAAG,IAAI,CAAC;gBAC3B,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3D,gBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;AAC9B,aAAA;AAED,YAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,gBAAA,MAAM,eAAe,GAAI,OAAe,CAAC,MAAM,CAA8B,CAAC;AAC9E,gBAAA,IACE,KAAK,CAAC,cAAc,CAClB,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,WAAW,CACZ,EACD;AACA,oBAAA,IAAI,CAAA,eAAe,KAAA,IAAA,IAAf,eAAe,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAf,eAAe,CAAE,OAAO,KAAI,eAAe,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;wBACnE,wBAAwB,GAAG,IAAI,CAAC;wBAChC,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AACnE,wBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;AAC9B,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;QACD,IAAI,CAAC,kBAAkB,IAAI,CAAC,mBAAmB,IAAI,CAAC,wBAAwB,EAAE;YAC5E,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,SAAS,CAAC,mBAAmB;gBACnC,OAAO,EAAE,cAAc,CAAC,mBAAmB;AAC5C,aAAA,CAAC,CAAC;AACJ,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;AAED,IAAA,OAAO,eAAe,CAAC,IAAY,EAAE,iBAA2B,EAAA;AAC9D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjD,YAAA,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAChD,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE;AACrD,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAED,OAAO,4BAA4B,CACjC,MAA8B,EAC9B,IAAY,EACZ,uBAAgC,EAChC,UAAU,GAAG,KAAK,EAAA;;QAElB,MAAM,cAAc,GAAgB,EAAE,CAAC;QACvC,MAAM,cAAc,GAAgB,EAAE,CAAC;AAEvC,QAAA,IACE,MAAM,CAAC,IAAI,KAAK,QAAQ;YACxB,MAAM,CAAC,IAAI,KAAK,SAAS;YACzB,MAAM,CAAC,IAAI,KAAK,SAAS;AACzB,YAAA,MAAM,CAAC,IAAI,KAAK,QAAQ,EACxB;AACA,YAAA,MAAM,SAAS,GAAG;AAChB,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,qBAAqB,CAAC;AACnF,gBAAA,WAAW,EAAE,CAAC,CAAA,EAAA,GAAA,MAAM,CAAC,WAAW,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,2BAA2B,CAAC;aAC7F,CAAC;AAEF,YAAA,IAAI,uBAAuB,EAAE;AAC3B,gBAAA,KAAK,CAAC,4BAA4B,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACvD,aAAA;AAED,YAAA,IAAI,UAAU,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE;AAC9C,gBAAA,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAChC,aAAA;AAAM,iBAAA;AACL,gBAAA,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAChC,aAAA;AACF,SAAA;AAAM,aAAA,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AACnC,YAAA,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;AAC9B,YAAA,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE;gBACjC,IAAI,UAAU,GAAG,KAAK,CAAC;AACvB,gBAAA,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAA,MAAA,MAAM,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,QAAQ,CAAC,KAAI,CAAC,EAAE;oBAC9D,UAAU,GAAG,IAAI,CAAC;AACnB,iBAAA;gBACD,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,4BAA4B,CAC/D,UAAU,CAAC,QAAQ,CAA2B,EAC9C,QAAQ,EACR,uBAAuB,EACvB,UAAU,CACX,CAAC;AAEF,gBAAA,cAAc,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;AAClC,gBAAA,cAAc,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;AACnC,aAAA;AACF,SAAA;AAED,QAAA,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;KACzC;AAED,IAAA,OAAO,4BAA4B,CACjC,MAA8B,EAC9B,KAAgB,EAAA;QAEhB,IAAI,MAAM,CAAC,IAAI,EAAE;AACf,YAAA,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC;AAC9B,YAAA,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AACnB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,gBAAA,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;AACjB,oBAAA,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACrB,oBAAA,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACtB,iBAAA,CAAC,CAAC;AACJ,aAAA;AACF,SAAA;AAAM,aAAA,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AACnC,YAAA,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;AAC1B,SAAA;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AAChE,YAAA,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC5B,SAAA;AAAM,aAAA,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;AACpC,YAAA,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC5B,SAAA;QAED,IAAI,MAAM,CAAC,OAAO,EAAE;AAClB,YAAA,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;AAC9B,SAAA;KACF;AAED,IAAA,OAAO,YAAY,CACjB,aAAwC,EACxC,uBAAgC,EAAA;;QAEhC,MAAM,cAAc,GAAgB,EAAE,CAAC;QACvC,MAAM,cAAc,GAAgB,EAAE,CAAC;AACvC,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,UAAyC,CAAC;AAE5E,QAAA,IAAI,WAAW,EAAE;AACf,YAAA,WAAW,CAAC,OAAO,CAAC,CAAC,KAAgC,KAAI;;AACvD,gBAAA,MAAM,SAAS,GAAc;oBAC3B,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,oBAAA,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,qBAAqB,CAAC;AACzF,oBAAA,WAAW,EAAE,CAAC,CAAA,EAAA,GAAA,KAAK,CAAC,WAAW,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,2BAA2B,CAAC;iBAC5F,CAAC;AAEF,gBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAgC,CAAC;gBACtD,IAAI,uBAAuB,IAAI,MAAM,EAAE;AACrC,oBAAA,KAAK,CAAC,4BAA4B,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACvD,iBAAA;gBAED,IAAI,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,KAAK,CAAC,EAAE,KAAK,QAAQ,EAAE;AAClD,oBAAA,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,OAAO,MAAK,SAAS,EAAE;AACnD,wBAAA,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAChC,qBAAA;AAAM,yBAAA;AACL,wBAAA,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAChC,qBAAA;AACF,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;QAED,IAAI,aAAa,CAAC,WAAW,EAAE;AAC7B,YAAA,MAAM,WAAW,GAAG,aAAa,CAAC,WAA0C,CAAC;YAC7E,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YAC5D,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACzC,gBAAA,MAAM,MAAM,GAAG,WAAW,CAAC,MAAgC,CAAC;gBAC5D,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,4BAA4B,CAC/D,MAAM,EACN,aAAa,EACb,uBAAuB,EACvB,WAAW,CAAC,QAAQ,CACrB,CAAC;AACF,gBAAA,cAAc,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;AAClC,gBAAA,cAAc,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;AACnC,aAAA;AACF,SAAA;AAED,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,WAAY,CAAC;QAE/C,MAAM,UAAU,GAAG,EAAE,CAAC;AAEtB,QAAA,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/B,YAAA,UAAU,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;AACpC,SAAA;AAAM,aAAA;YACL,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,SAAA;AAED,QAAA,MAAM,OAAO,GAA+B;YAC1C,OAAO,EAAE,CAAC,SAAS,CAAC;AACpB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,KAAK,EAAE,CAAC,CAAA,EAAA,GAAA,aAAa,CAAC,OAAO,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,mBAAmB,CAAC;AACjF,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,UAAU,EAAE,UAAU;AACtB,YAAA,WAAW,EAAE,CAAC,CAAA,EAAA,GAAA,aAAa,CAAC,WAAW,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,EAAE,KAAK,CAClD,CAAC,EACD,cAAc,CAAC,yBAAyB,CACzC;SACF,CAAC;QACF,IAAI,OAAO,GAA8B,SAAS,CAAC;QAEnD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5D,YAAA,OAAO,GAAG;gBACR,IAAI,EAAE,WAAW,CAAC,kCAAkC;gBACpD,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,kCAAkC,EAAE,WAAW,CAAC;AACrF,gBAAA,IAAI,EAAE,WAAW;aAClB,CAAC;AACH,SAAA;AACD,QAAA,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KAC3B;IAED,OAAO,iBAAiB,CACtB,IAAwB,EACxB,cAAuB,EACvB,eAAwB,EACxB,uBAAgC,EAChC,WAAoB,EAAA;AAIpB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,MAAM,GAAiD,EAAE,CAAC;AAChE,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5B,YAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;;AAE5B,gBAAA,IACE,KAAK,CAAC,cAAc,CAClB,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,WAAW,CACZ,EACD;AACA,oBAAA,MAAM,eAAe,GAAI,OAAe,CAAC,MAAM,CAA8B,CAAC;AAC9E,oBAAA,MAAM,CAAC,CAAA,EAAG,MAAM,CAAC,WAAW,EAAE,CAAI,CAAA,EAAA,IAAI,CAAE,CAAA,CAAC,GAAG,eAAe,CAAC;AAC7D,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;AAED,IAAA,OAAO,YAAY,CACjB,IAAwB,EACxB,MAAqB,EACrB,aAAsB,EACtB,cAAuB,EACvB,eAAwB,EACxB,uBAAgC,EAChC,WAAoB,EAAA;QAEpB,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAoB,EAAE,CAAC;AAErC,QAAA,IAAI,aAAa,EAAE;YACjB,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,WAAW,CAAC,uBAAuB;gBACzC,OAAO,EAAE,cAAc,CAAC,uBAAuB;AAChD,aAAA,CAAC,CAAC;AACJ,SAAA;;AAGD,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CACvC,IAAI,EACJ,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,WAAW,CACZ,CAAC;AACF,QAAA,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;;QAG7B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;;AAGtC,QAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,SAAS,CAAC,qBAAqB;AACrC,gBAAA,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,qBAAqB,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChF,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA,CAAC,CAAC;AACJ,SAAA;;AAGD,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,iBAAiB,CACpC,IAAI,EACJ,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,WAAW,CACZ,CAAC;QACF,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YACpC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,SAAS,CAAC,cAAc;gBAC9B,OAAO,EAAE,cAAc,CAAC,cAAc;AACvC,aAAA,CAAC,CAAC;AACJ,SAAA;;QAGD,MAAM,sBAAsB,GAAa,EAAE,CAAC;AAC5C,QAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AACxB,YAAA,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;AAC/B,gBAAA,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,aAAA;AACF,SAAA;AAED,QAAA,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE;YACrC,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,WAAW,CAAC,kBAAkB;AACpC,gBAAA,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3F,gBAAA,IAAI,EAAE,sBAAsB;AAC7B,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,IAAI,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC;QACpC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9C,YAAA,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC;AACnC,SAAA;AAAM,aAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,YAAA,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC;AACjC,SAAA;QAED,OAAO;YACL,MAAM;YACN,QAAQ;YACR,MAAM;SACP,CAAC;KACH;AAED,IAAA,OAAO,MAAM,CAAC,GAAW,EAAE,GAAG,IAAc,EAAA;QAC1C,IAAI,KAAK,GAAG,CAAC,CAAC;AACd,QAAA,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAK;AAC7B,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1B,OAAO,GAAG,KAAK,SAAS,GAAG,GAAG,GAAG,EAAE,CAAC;AACtC,SAAC,CAAC,CAAC;KACJ;IAED,OAAO,4BAA4B,CAAC,QAAgB,EAAA;QAClD,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AAED,QAAA,IAAI,yBAAyB,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AAEnF,QAAA,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;AAC9C,YAAA,yBAAyB,GAAG,SAAS,GAAG,yBAAyB,CAAC;AACnE,SAAA;AAED,QAAA,OAAO,yBAAyB,CAAC;KAClC;AACF;;AC1vBD;AAoBA;;AAEG;MACU,UAAU,CAAA;AAkBrB;;;;AAIG;IACH,WAAY,CAAA,SAAsC,EAAE,OAAsB,EAAA;AAblE,QAAA,IAAA,CAAA,cAAc,GAAiB;AACrC,YAAA,cAAc,EAAE,KAAK;AACrB,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,uBAAuB,EAAE,KAAK;AAC9B,YAAA,WAAW,EAAE,KAAK;SACnB,CAAC;AAQA,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,OAAO,GAAG,gCACV,IAAI,CAAC,cAAc,CACnB,GAAC,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,OAAO,GAAI,EAAE,EACQ,CAAC;KAC7B;AAED;;;;AAIG;AACH,IAAA,MAAM,QAAQ,GAAA;QACZ,IAAI;YACF,IAAI;AACF,gBAAA,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACtB,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC;AACxC,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;gBACV,OAAO;oBACL,MAAM,EAAE,gBAAgB,CAAC,KAAK;AAC9B,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,YAAY,EAAE,OAAO,EAAG,CAAW,CAAC,QAAQ,EAAE,EAAE,CAAC;iBAC7E,CAAC;AACH,aAAA;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE;gBACpD,OAAO;oBACL,MAAM,EAAE,gBAAgB,CAAC,KAAK;AAC9B,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,MAAM,EAAE;wBACN,EAAE,IAAI,EAAE,SAAS,CAAC,mBAAmB,EAAE,OAAO,EAAE,cAAc,CAAC,mBAAmB,EAAE;AACrF,qBAAA;iBACF,CAAC;AACH,aAAA;AAED,YAAA,OAAO,KAAK,CAAC,YAAY,CACvB,IAAI,CAAC,IAAK,EACV,IAAI,CAAC,MAAM,EACX,CAAC,CAAC,IAAI,CAAC,aAAa,EACpB,IAAI,CAAC,OAAO,CAAC,cAAc,EAC3B,IAAI,CAAC,OAAO,CAAC,eAAe,EAC5B,IAAI,CAAC,OAAO,CAAC,uBAAuB,EACpC,IAAI,CAAC,OAAO,CAAC,WAAW,CACzB,CAAC;AACH,SAAA;AAAC,QAAA,OAAO,GAAG,EAAE;AACZ,YAAA,MAAM,IAAI,eAAe,CAAE,GAAa,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;AAChF,SAAA;KACF;AAED,IAAA,MAAM,oBAAoB,GAAA;QACxB,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAc,EAAE,CAAC;AAC/B,YAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AACxB,gBAAA,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACnC,gBAAA,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtC,gBAAA,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC;;gBAG/C,IAAI,CAAC,WAAW,EAAE;oBAChB,SAAS;AACV,iBAAA;AAED,gBAAA,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,YAAY,CAC3C,cAAc,EACd,IAAI,CAAC,OAAO,CAAC,uBAAuB,CACrC,CAAC;AAEF,gBAAA,MAAM,OAAO,GAAY;AACvB,oBAAA,MAAM,EAAE,MAAM;AACd,oBAAA,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,OAAO,CAAC,KAAK;AACpB,oBAAA,EAAE,EAAE,WAAW;oBACf,UAAU,EAAE,OAAO,CAAC,UAA0B;oBAC9C,WAAW,EAAE,OAAO,CAAC,WAAY;iBAClC,CAAC;AAEF,gBAAA,IAAI,OAAO,EAAE;AACX,oBAAA,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3B,iBAAA;AAED,gBAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxB,aAAA;AAED,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAA;AAAC,QAAA,OAAO,GAAG,EAAE;AACZ,YAAA,MAAM,IAAI,eAAe,CAAE,GAAa,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,0BAA0B,CAAC,CAAC;AAC5F,SAAA;KACF;AAED;;;;AAIG;;AAEH,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC5C;AAED;;;;;;AAMG;;IAEH,MAAM,QAAQ,CACZ,YAAoB,EACpB,MAAgB,EAChB,cAAsB,EACtB,kBAA0B,EAC1B,MAAoB,EAAA;AAEpB,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC5C;AAEO,IAAA,MAAM,QAAQ,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACd,YAAA,IAAI,CAAC,aAAa,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAuB,CAAC;AACtF,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,IAAK,IAAI,CAAC,aAAqB,CAAC,OAAO,KAAK,KAAK,EAAE;AAChF,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC3B,aAAA;AAED,YAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AAC3E,YAAA,IAAI,CAAC,IAAI,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAuB,CAAC;AACxF,SAAA;KACF;AAEO,IAAA,mBAAmB,CAAC,IAAwB,EAAA;AAGlD,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;YAC7B,OAAO,IAAI,CAAC,MAAM,CAAC;AACpB,SAAA;AACD,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,iBAAiB,CACpC,IAAI,EACJ,IAAI,CAAC,OAAO,CAAC,cAAc,EAC3B,IAAI,CAAC,OAAO,CAAC,eAAe,EAC5B,IAAI,CAAC,OAAO,CAAC,uBAAuB,EACpC,IAAI,CAAC,OAAO,CAAC,WAAW,CACzB,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,OAAO,MAAM,CAAC;KACf;AACF;;;;"}
1
+ {"version":3,"file":"index.esm2017.js","sources":["../src/interfaces.ts","../src/specParserError.ts","../src/constants.ts","../src/utils.ts","../src/specParser.browser.ts"],"sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\"use strict\";\n\nimport { OpenAPIV3 } from \"openapi-types\";\n\n/**\n * An interface that represents the result of validating an OpenAPI specification file.\n */\nexport interface ValidateResult {\n /**\n * The validation status of the OpenAPI specification file.\n */\n status: ValidationStatus;\n\n /**\n * An array of warning results generated during validation.\n */\n warnings: WarningResult[];\n\n /**\n * An array of error results generated during validation.\n */\n errors: ErrorResult[];\n}\n\n/**\n * An interface that represents a warning result generated during validation.\n */\nexport interface WarningResult {\n /**\n * The type of warning.\n */\n type: WarningType;\n\n /**\n * The content of the warning.\n */\n content: string;\n\n /**\n * data of the warning.\n */\n data?: any;\n}\n\n/**\n * An interface that represents an error result generated during validation.\n */\nexport interface ErrorResult {\n /**\n * The type of error.\n */\n type: ErrorType;\n\n /**\n * The content of the error.\n */\n content: string;\n\n /**\n * data of the error.\n */\n data?: any;\n}\n\nexport interface GenerateResult {\n allSuccess: boolean;\n warnings: WarningResult[];\n}\n\n/**\n * An enum that represents the types of errors that can occur during validation.\n */\nexport enum ErrorType {\n SpecNotValid = \"spec-not-valid\",\n RemoteRefNotSupported = \"remote-ref-not-supported\",\n NoServerInformation = \"no-server-information\",\n UrlProtocolNotSupported = \"url-protocol-not-supported\",\n RelativeServerUrlNotSupported = \"relative-server-url-not-supported\",\n NoSupportedApi = \"no-supported-api\",\n NoExtraAPICanBeAdded = \"no-extra-api-can-be-added\",\n ResolveServerUrlFailed = \"resolve-server-url-failed\",\n SwaggerNotSupported = \"swagger-not-supported\",\n MultipleAPIKeyNotSupported = \"multiple-api-key-not-supported\",\n\n ListFailed = \"list-failed\",\n listSupportedAPIInfoFailed = \"list-supported-api-info-failed\",\n FilterSpecFailed = \"filter-spec-failed\",\n UpdateManifestFailed = \"update-manifest-failed\",\n GenerateAdaptiveCardFailed = \"generate-adaptive-card-failed\",\n GenerateFailed = \"generate-failed\",\n ValidateFailed = \"validate-failed\",\n\n Cancelled = \"cancelled\",\n Unknown = \"unknown\",\n}\n\n/**\n * An enum that represents the types of warnings that can occur during validation.\n */\nexport enum WarningType {\n OperationIdMissing = \"operationid-missing\",\n GenerateCardFailed = \"generate-card-failed\",\n OperationOnlyContainsOptionalParam = \"operation-only-contains-optional-param\",\n ConvertSwaggerToOpenAPI = \"convert-swagger-to-openapi\",\n Unknown = \"unknown\",\n}\n\n/**\n * An enum that represents the validation status of an OpenAPI specification file.\n */\nexport enum ValidationStatus {\n Valid,\n Warning, // If there are any warnings, the file is still valid\n Error, // If there are any errors, the file is not valid\n}\n\nexport interface TextBlockElement {\n type: string;\n text: string;\n wrap: boolean;\n}\n\nexport interface ImageElement {\n type: string;\n url: string;\n $when: string;\n}\n\nexport interface ArrayElement {\n type: string;\n $data: string;\n items: Array<TextBlockElement | ImageElement | ArrayElement>;\n}\n\nexport interface AdaptiveCard {\n type: string;\n $schema: string;\n version: string;\n body: Array<TextBlockElement | ImageElement | ArrayElement>;\n}\n\nexport interface PreviewCardTemplate {\n title: string;\n subtitle?: string;\n image?: {\n url: string;\n alt?: string;\n $when?: string;\n };\n}\n\nexport interface WrappedAdaptiveCard {\n version: string;\n $schema?: string;\n jsonPath?: string;\n responseLayout: string;\n responseCardTemplate: AdaptiveCard;\n previewCardTemplate: PreviewCardTemplate;\n}\n\nexport interface ChoicesItem {\n title: string;\n value: string;\n}\n\nexport interface Parameter {\n name: string;\n title: string;\n description: string;\n inputType?: \"text\" | \"textarea\" | \"number\" | \"date\" | \"time\" | \"toggle\" | \"choiceset\";\n value?: string;\n choices?: ChoicesItem[];\n}\n\nexport interface CheckParamResult {\n requiredNum: number;\n optionalNum: number;\n isValid: boolean;\n}\n\nexport interface ParseOptions {\n allowMissingId?: boolean;\n allowSwagger?: boolean;\n allowAPIKeyAuth?: boolean;\n allowMultipleParameters?: boolean;\n allowOauth2?: boolean;\n}\n\nexport interface APIInfo {\n method: string;\n path: string;\n title: string;\n id: string;\n parameters: Parameter[];\n description: string;\n warning?: WarningResult;\n}\n\nexport interface ListAPIResult {\n api: string;\n server: string;\n operationId: string;\n auth?: OpenAPIV3.SecuritySchemeObject;\n}\n\nexport interface AuthSchema {\n authSchema: OpenAPIV3.SecuritySchemeObject;\n name: string;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\"use strict\";\n\nimport { ErrorType } from \"./interfaces\";\n\nexport class SpecParserError extends Error {\n public readonly errorType: ErrorType;\n\n constructor(message: string, errorType: ErrorType) {\n super(message);\n this.errorType = errorType;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\"use strict\";\n\nexport class ConstantString {\n static readonly CancelledMessage = \"Operation is cancelled.\";\n static readonly NoServerInformation =\n \"No server information is found in the OpenAPI description document.\";\n static readonly RemoteRefNotSupported = \"Remote reference is not supported: %s.\";\n static readonly MissingOperationId = \"Missing operationIds: %s.\";\n static readonly NoSupportedApi =\n \"No supported API is found in the OpenAPI description document: only GET and POST methods are supported, additionally, there can be at most one required parameter, and no auth is allowed.\";\n\n static readonly AdditionalPropertiesNotSupported =\n \"'additionalProperties' is not supported, and will be ignored.\";\n static readonly SchemaNotSupported = \"'oneOf', 'anyOf', and 'not' schema are not supported: %s.\";\n static readonly UnknownSchema = \"Unknown schema: %s.\";\n\n static readonly UrlProtocolNotSupported =\n \"Server url is not correct: protocol %s is not supported, you should use https protocol instead.\";\n static readonly RelativeServerUrlNotSupported =\n \"Server url is not correct: relative server url is not supported.\";\n static readonly ResolveServerUrlFailed =\n \"Unable to resolve the server URL: please make sure that the environment variable %s is defined.\";\n static readonly OperationOnlyContainsOptionalParam =\n \"Operation %s contains multiple optional parameters. The first optional parameter is used for this command.\";\n static readonly ConvertSwaggerToOpenAPI =\n \"The Swagger 2.0 file has been converted to OpenAPI 3.0.\";\n\n static readonly SwaggerNotSupported =\n \"Swagger 2.0 is not supported. Please convert to OpenAPI 3.0 manually before proceeding.\";\n\n static readonly MultipleAPIKeyNotSupported =\n \"Multiple API keys are not supported. Please make sure that all selected APIs use the same API key.\";\n\n static readonly WrappedCardVersion = \"devPreview\";\n static readonly WrappedCardSchema =\n \"https://developer.microsoft.com/json-schemas/teams/vDevPreview/MicrosoftTeams.ResponseRenderingTemplate.schema.json\";\n static readonly WrappedCardResponseLayout = \"list\";\n\n static readonly GetMethod = \"get\";\n static readonly PostMethod = \"post\";\n static readonly AdaptiveCardVersion = \"1.5\";\n static readonly AdaptiveCardSchema = \"http://adaptivecards.io/schemas/adaptive-card.json\";\n static readonly AdaptiveCardType = \"AdaptiveCard\";\n static readonly TextBlockType = \"TextBlock\";\n static readonly ContainerType = \"Container\";\n static readonly RegistrationIdPostfix = \"REGISTRATION_ID\";\n static readonly ResponseCodeFor20X = [\n \"200\",\n \"201\",\n \"202\",\n \"203\",\n \"204\",\n \"205\",\n \"206\",\n \"207\",\n \"208\",\n \"226\",\n \"default\",\n ];\n static readonly AllOperationMethods = [\n \"get\",\n \"post\",\n \"put\",\n \"delete\",\n \"patch\",\n \"head\",\n \"options\",\n \"trace\",\n ];\n\n // TODO: update after investigating the usage of these constants.\n static readonly WellknownResultNames = [\n \"result\",\n \"data\",\n \"items\",\n \"root\",\n \"matches\",\n \"queries\",\n \"list\",\n \"output\",\n ];\n static readonly WellknownTitleName = [\"title\", \"name\", \"summary\", \"caption\", \"subject\", \"label\"];\n static readonly WellknownSubtitleName = [\n \"subtitle\",\n \"id\",\n \"uid\",\n \"description\",\n \"desc\",\n \"detail\",\n ];\n static readonly WellknownImageName = [\n \"image\",\n \"icon\",\n \"avatar\",\n \"picture\",\n \"photo\",\n \"logo\",\n \"pic\",\n \"thumbnail\",\n \"img\",\n ];\n\n static readonly ShortDescriptionMaxLens = 80;\n static readonly FullDescriptionMaxLens = 4000;\n static readonly CommandDescriptionMaxLens = 128;\n static readonly ParameterDescriptionMaxLens = 128;\n static readonly CommandTitleMaxLens = 32;\n static readonly ParameterTitleMaxLens = 32;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\"use strict\";\n\nimport { OpenAPIV3 } from \"openapi-types\";\nimport SwaggerParser from \"@apidevtools/swagger-parser\";\nimport { ConstantString } from \"./constants\";\nimport {\n AuthSchema,\n CheckParamResult,\n ErrorResult,\n ErrorType,\n Parameter,\n ValidateResult,\n ValidationStatus,\n WarningResult,\n WarningType,\n} from \"./interfaces\";\nimport { IMessagingExtensionCommand } from \"@microsoft/teams-manifest\";\n\nexport class Utils {\n static checkParameters(paramObject: OpenAPIV3.ParameterObject[]): CheckParamResult {\n const paramResult = {\n requiredNum: 0,\n optionalNum: 0,\n isValid: true,\n };\n\n if (!paramObject) {\n return paramResult;\n }\n\n for (let i = 0; i < paramObject.length; i++) {\n const param = paramObject[i];\n const schema = param.schema as OpenAPIV3.SchemaObject;\n const isRequiredWithoutDefault = param.required && schema.default === undefined;\n\n if (param.in === \"header\" || param.in === \"cookie\") {\n if (isRequiredWithoutDefault) {\n paramResult.isValid = false;\n }\n continue;\n }\n\n if (\n schema.type !== \"boolean\" &&\n schema.type !== \"string\" &&\n schema.type !== \"number\" &&\n schema.type !== \"integer\"\n ) {\n if (isRequiredWithoutDefault) {\n paramResult.isValid = false;\n }\n continue;\n }\n\n if (param.in === \"query\" || param.in === \"path\") {\n if (isRequiredWithoutDefault) {\n paramResult.requiredNum = paramResult.requiredNum + 1;\n } else {\n paramResult.optionalNum = paramResult.optionalNum + 1;\n }\n }\n }\n\n return paramResult;\n }\n\n static checkPostBody(schema: OpenAPIV3.SchemaObject, isRequired = false): CheckParamResult {\n const paramResult = {\n requiredNum: 0,\n optionalNum: 0,\n isValid: true,\n };\n\n if (Object.keys(schema).length === 0) {\n return paramResult;\n }\n\n const isRequiredWithoutDefault = isRequired && schema.default === undefined;\n\n if (\n schema.type === \"string\" ||\n schema.type === \"integer\" ||\n schema.type === \"boolean\" ||\n schema.type === \"number\"\n ) {\n if (isRequiredWithoutDefault) {\n paramResult.requiredNum = paramResult.requiredNum + 1;\n } else {\n paramResult.optionalNum = paramResult.optionalNum + 1;\n }\n } else if (schema.type === \"object\") {\n const { properties } = schema;\n for (const property in properties) {\n let isRequired = false;\n if (schema.required && schema.required?.indexOf(property) >= 0) {\n isRequired = true;\n }\n const result = Utils.checkPostBody(\n properties[property] as OpenAPIV3.SchemaObject,\n isRequired\n );\n paramResult.requiredNum += result.requiredNum;\n paramResult.optionalNum += result.optionalNum;\n paramResult.isValid = paramResult.isValid && result.isValid;\n }\n } else {\n if (isRequiredWithoutDefault) {\n paramResult.isValid = false;\n }\n }\n return paramResult;\n }\n\n /**\n * Checks if the given API is supported.\n * @param {string} method - The HTTP method of the API.\n * @param {string} path - The path of the API.\n * @param {OpenAPIV3.Document} spec - The OpenAPI specification document.\n * @returns {boolean} - Returns true if the API is supported, false otherwise.\n * @description The following APIs are supported:\n * 1. only support Get/Post operation without auth property\n * 2. parameter inside query or path only support string, number, boolean and integer\n * 3. parameter inside post body only support string, number, boolean, integer and object\n * 4. request body + required parameters <= 1\n * 5. response body should be “application/json” and not empty, and response code should be 20X\n * 6. only support request body with “application/json” content type\n */\n static isSupportedApi(\n method: string,\n path: string,\n spec: OpenAPIV3.Document,\n allowMissingId: boolean,\n allowAPIKeyAuth: boolean,\n allowMultipleParameters: boolean,\n allowOauth2: boolean\n ): boolean {\n const pathObj = spec.paths[path];\n method = method.toLocaleLowerCase();\n if (pathObj) {\n if (\n (method === ConstantString.PostMethod || method === ConstantString.GetMethod) &&\n pathObj[method]\n ) {\n const securities = pathObj[method]!.security;\n const authArray = Utils.getAuthArray(securities, spec);\n if (!Utils.isSupportedAuth(authArray, allowAPIKeyAuth, allowOauth2)) {\n return false;\n }\n\n const operationObject = pathObj[method] as OpenAPIV3.OperationObject;\n if (!allowMissingId && !operationObject.operationId) {\n return false;\n }\n const paramObject = operationObject.parameters as OpenAPIV3.ParameterObject[];\n\n const requestBody = operationObject.requestBody as OpenAPIV3.RequestBodyObject;\n const requestJsonBody = requestBody?.content[\"application/json\"];\n\n const mediaTypesCount = Object.keys(requestBody?.content || {}).length;\n if (mediaTypesCount > 1) {\n return false;\n }\n\n const responseJson = Utils.getResponseJson(operationObject);\n if (Object.keys(responseJson).length === 0) {\n return false;\n }\n\n let requestBodyParamResult = {\n requiredNum: 0,\n optionalNum: 0,\n isValid: true,\n };\n\n if (requestJsonBody) {\n const requestBodySchema = requestJsonBody.schema as OpenAPIV3.SchemaObject;\n requestBodyParamResult = Utils.checkPostBody(requestBodySchema, requestBody.required);\n }\n\n if (!requestBodyParamResult.isValid) {\n return false;\n }\n\n const paramResult = Utils.checkParameters(paramObject);\n\n if (!paramResult.isValid) {\n return false;\n }\n\n if (requestBodyParamResult.requiredNum + paramResult.requiredNum > 1) {\n if (\n allowMultipleParameters &&\n requestBodyParamResult.requiredNum + paramResult.requiredNum <= 5\n ) {\n return true;\n }\n return false;\n } else if (\n requestBodyParamResult.requiredNum +\n requestBodyParamResult.optionalNum +\n paramResult.requiredNum +\n paramResult.optionalNum ===\n 0\n ) {\n return false;\n } else {\n return true;\n }\n }\n }\n\n return false;\n }\n\n static isSupportedAuth(\n authSchemaArray: AuthSchema[][],\n allowAPIKeyAuth: boolean,\n allowOauth2: boolean\n ): boolean {\n if (authSchemaArray.length === 0) {\n return true;\n }\n\n if (allowAPIKeyAuth || allowOauth2) {\n // Currently we don't support multiple auth in one operation\n if (authSchemaArray.length > 0 && authSchemaArray.every((auths) => auths.length > 1)) {\n return false;\n }\n\n for (const auths of authSchemaArray) {\n if (auths.length === 1) {\n if (!allowOauth2 && allowAPIKeyAuth && Utils.isAPIKeyAuth(auths[0].authSchema)) {\n return true;\n } else if (\n !allowAPIKeyAuth &&\n allowOauth2 &&\n Utils.isBearerTokenAuth(auths[0].authSchema)\n ) {\n return true;\n } else if (\n allowAPIKeyAuth &&\n allowOauth2 &&\n (Utils.isAPIKeyAuth(auths[0].authSchema) ||\n Utils.isBearerTokenAuth(auths[0].authSchema))\n ) {\n return true;\n }\n }\n }\n }\n\n return false;\n }\n\n static isAPIKeyAuth(authSchema: OpenAPIV3.SecuritySchemeObject): boolean {\n return authSchema.type === \"apiKey\";\n }\n\n static isBearerTokenAuth(authSchema: OpenAPIV3.SecuritySchemeObject): boolean {\n return (\n authSchema.type === \"oauth2\" ||\n authSchema.type === \"openIdConnect\" ||\n (authSchema.type === \"http\" && authSchema.scheme === \"bearer\")\n );\n }\n\n static getAuthArray(\n securities: OpenAPIV3.SecurityRequirementObject[] | undefined,\n spec: OpenAPIV3.Document\n ): AuthSchema[][] {\n const result: AuthSchema[][] = [];\n const securitySchemas = spec.components?.securitySchemes;\n if (securities && securitySchemas) {\n for (let i = 0; i < securities.length; i++) {\n const security = securities[i];\n\n const authArray: AuthSchema[] = [];\n for (const name in security) {\n const auth = securitySchemas[name] as OpenAPIV3.SecuritySchemeObject;\n authArray.push({\n authSchema: auth,\n name: name,\n });\n }\n\n if (authArray.length > 0) {\n result.push(authArray);\n }\n }\n }\n\n result.sort((a, b) => a[0].name.localeCompare(b[0].name));\n\n return result;\n }\n\n static updateFirstLetter(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n static getResponseJson(\n operationObject: OpenAPIV3.OperationObject | undefined\n ): OpenAPIV3.MediaTypeObject {\n let json: OpenAPIV3.MediaTypeObject = {};\n\n for (const code of ConstantString.ResponseCodeFor20X) {\n const responseObject = operationObject?.responses?.[code] as OpenAPIV3.ResponseObject;\n\n const mediaTypesCount = Object.keys(responseObject?.content || {}).length;\n if (mediaTypesCount > 1) {\n return {};\n }\n\n if (responseObject?.content?.[\"application/json\"]) {\n json = responseObject.content[\"application/json\"];\n break;\n }\n }\n\n return json;\n }\n\n static convertPathToCamelCase(path: string): string {\n const pathSegments = path.split(/[./{]/);\n const camelCaseSegments = pathSegments.map((segment) => {\n segment = segment.replace(/}/g, \"\");\n return segment.charAt(0).toUpperCase() + segment.slice(1);\n });\n const camelCasePath = camelCaseSegments.join(\"\");\n return camelCasePath;\n }\n\n static getUrlProtocol(urlString: string): string | undefined {\n try {\n const url = new URL(urlString);\n return url.protocol;\n } catch (err) {\n return undefined;\n }\n }\n\n static resolveServerUrl(url: string): string {\n const placeHolderReg = /\\${{\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\s*}}/g;\n let matches = placeHolderReg.exec(url);\n let newUrl = url;\n while (matches != null) {\n const envVar = matches[1];\n const envVal = process.env[envVar];\n if (!envVal) {\n throw new Error(Utils.format(ConstantString.ResolveServerUrlFailed, envVar));\n } else {\n newUrl = newUrl.replace(matches[0], envVal);\n }\n matches = placeHolderReg.exec(url);\n }\n return newUrl;\n }\n\n static checkServerUrl(servers: OpenAPIV3.ServerObject[]): ErrorResult[] {\n const errors: ErrorResult[] = [];\n\n let serverUrl;\n try {\n serverUrl = Utils.resolveServerUrl(servers[0].url);\n } catch (err) {\n errors.push({\n type: ErrorType.ResolveServerUrlFailed,\n content: (err as Error).message,\n data: servers,\n });\n return errors;\n }\n\n const protocol = Utils.getUrlProtocol(serverUrl);\n if (!protocol) {\n // Relative server url is not supported\n errors.push({\n type: ErrorType.RelativeServerUrlNotSupported,\n content: ConstantString.RelativeServerUrlNotSupported,\n data: servers,\n });\n } else if (protocol !== \"https:\") {\n // Http server url is not supported\n const protocolString = protocol.slice(0, -1);\n errors.push({\n type: ErrorType.UrlProtocolNotSupported,\n content: Utils.format(ConstantString.UrlProtocolNotSupported, protocol.slice(0, -1)),\n data: protocolString,\n });\n }\n\n return errors;\n }\n\n static validateServer(\n spec: OpenAPIV3.Document,\n allowMissingId: boolean,\n allowAPIKeyAuth: boolean,\n allowMultipleParameters: boolean,\n allowOauth2: boolean\n ): ErrorResult[] {\n const errors: ErrorResult[] = [];\n\n let hasTopLevelServers = false;\n let hasPathLevelServers = false;\n let hasOperationLevelServers = false;\n\n if (spec.servers && spec.servers.length >= 1) {\n hasTopLevelServers = true;\n\n // for multiple server, we only use the first url\n const serverErrors = Utils.checkServerUrl(spec.servers);\n errors.push(...serverErrors);\n }\n\n const paths = spec.paths;\n for (const path in paths) {\n const methods = paths[path];\n\n if (methods?.servers && methods.servers.length >= 1) {\n hasPathLevelServers = true;\n const serverErrors = Utils.checkServerUrl(methods.servers);\n errors.push(...serverErrors);\n }\n\n for (const method in methods) {\n const operationObject = (methods as any)[method] as OpenAPIV3.OperationObject;\n if (\n Utils.isSupportedApi(\n method,\n path,\n spec,\n allowMissingId,\n allowAPIKeyAuth,\n allowMultipleParameters,\n allowOauth2\n )\n ) {\n if (operationObject?.servers && operationObject.servers.length >= 1) {\n hasOperationLevelServers = true;\n const serverErrors = Utils.checkServerUrl(operationObject.servers);\n errors.push(...serverErrors);\n }\n }\n }\n }\n if (!hasTopLevelServers && !hasPathLevelServers && !hasOperationLevelServers) {\n errors.push({\n type: ErrorType.NoServerInformation,\n content: ConstantString.NoServerInformation,\n });\n }\n return errors;\n }\n\n static isWellKnownName(name: string, wellknownNameList: string[]): boolean {\n for (let i = 0; i < wellknownNameList.length; i++) {\n name = name.replace(/_/g, \"\").replace(/-/g, \"\");\n if (name.toLowerCase().includes(wellknownNameList[i])) {\n return true;\n }\n }\n return false;\n }\n\n static generateParametersFromSchema(\n schema: OpenAPIV3.SchemaObject,\n name: string,\n allowMultipleParameters: boolean,\n isRequired = false\n ): [Parameter[], Parameter[]] {\n const requiredParams: Parameter[] = [];\n const optionalParams: Parameter[] = [];\n\n if (\n schema.type === \"string\" ||\n schema.type === \"integer\" ||\n schema.type === \"boolean\" ||\n schema.type === \"number\"\n ) {\n const parameter = {\n name: name,\n title: Utils.updateFirstLetter(name).slice(0, ConstantString.ParameterTitleMaxLens),\n description: (schema.description ?? \"\").slice(\n 0,\n ConstantString.ParameterDescriptionMaxLens\n ),\n };\n\n if (allowMultipleParameters) {\n Utils.updateParameterWithInputType(schema, parameter);\n }\n\n if (isRequired && schema.default === undefined) {\n requiredParams.push(parameter);\n } else {\n optionalParams.push(parameter);\n }\n } else if (schema.type === \"object\") {\n const { properties } = schema;\n for (const property in properties) {\n let isRequired = false;\n if (schema.required && schema.required?.indexOf(property) >= 0) {\n isRequired = true;\n }\n const [requiredP, optionalP] = Utils.generateParametersFromSchema(\n properties[property] as OpenAPIV3.SchemaObject,\n property,\n allowMultipleParameters,\n isRequired\n );\n\n requiredParams.push(...requiredP);\n optionalParams.push(...optionalP);\n }\n }\n\n return [requiredParams, optionalParams];\n }\n\n static updateParameterWithInputType(schema: OpenAPIV3.SchemaObject, param: Parameter): void {\n if (schema.enum) {\n param.inputType = \"choiceset\";\n param.choices = [];\n for (let i = 0; i < schema.enum.length; i++) {\n param.choices.push({\n title: schema.enum[i],\n value: schema.enum[i],\n });\n }\n } else if (schema.type === \"string\") {\n param.inputType = \"text\";\n } else if (schema.type === \"integer\" || schema.type === \"number\") {\n param.inputType = \"number\";\n } else if (schema.type === \"boolean\") {\n param.inputType = \"toggle\";\n }\n\n if (schema.default) {\n param.value = schema.default;\n }\n }\n\n static parseApiInfo(\n operationItem: OpenAPIV3.OperationObject,\n allowMultipleParameters: boolean\n ): [IMessagingExtensionCommand, WarningResult | undefined] {\n const requiredParams: Parameter[] = [];\n const optionalParams: Parameter[] = [];\n const paramObject = operationItem.parameters as OpenAPIV3.ParameterObject[];\n\n if (paramObject) {\n paramObject.forEach((param: OpenAPIV3.ParameterObject) => {\n const parameter: Parameter = {\n name: param.name,\n title: Utils.updateFirstLetter(param.name).slice(0, ConstantString.ParameterTitleMaxLens),\n description: (param.description ?? \"\").slice(\n 0,\n ConstantString.ParameterDescriptionMaxLens\n ),\n };\n\n const schema = param.schema as OpenAPIV3.SchemaObject;\n if (allowMultipleParameters && schema) {\n Utils.updateParameterWithInputType(schema, parameter);\n }\n\n if (param.in !== \"header\" && param.in !== \"cookie\") {\n if (param.required && schema?.default === undefined) {\n requiredParams.push(parameter);\n } else {\n optionalParams.push(parameter);\n }\n }\n });\n }\n\n if (operationItem.requestBody) {\n const requestBody = operationItem.requestBody as OpenAPIV3.RequestBodyObject;\n const requestJson = requestBody.content[\"application/json\"];\n if (Object.keys(requestJson).length !== 0) {\n const schema = requestJson.schema as OpenAPIV3.SchemaObject;\n const [requiredP, optionalP] = Utils.generateParametersFromSchema(\n schema,\n \"requestBody\",\n allowMultipleParameters,\n requestBody.required\n );\n requiredParams.push(...requiredP);\n optionalParams.push(...optionalP);\n }\n }\n\n const operationId = operationItem.operationId!;\n\n const parameters = [];\n\n if (requiredParams.length !== 0) {\n parameters.push(...requiredParams);\n } else {\n parameters.push(optionalParams[0]);\n }\n\n const command: IMessagingExtensionCommand = {\n context: [\"compose\"],\n type: \"query\",\n title: (operationItem.summary ?? \"\").slice(0, ConstantString.CommandTitleMaxLens),\n id: operationId,\n parameters: parameters,\n description: (operationItem.description ?? \"\").slice(\n 0,\n ConstantString.CommandDescriptionMaxLens\n ),\n };\n let warning: WarningResult | undefined = undefined;\n\n if (requiredParams.length === 0 && optionalParams.length > 1) {\n warning = {\n type: WarningType.OperationOnlyContainsOptionalParam,\n content: Utils.format(ConstantString.OperationOnlyContainsOptionalParam, operationId),\n data: operationId,\n };\n }\n return [command, warning];\n }\n\n static listSupportedAPIs(\n spec: OpenAPIV3.Document,\n allowMissingId: boolean,\n allowAPIKeyAuth: boolean,\n allowMultipleParameters: boolean,\n allowOauth2: boolean\n ): {\n [key: string]: OpenAPIV3.OperationObject;\n } {\n const paths = spec.paths;\n const result: { [key: string]: OpenAPIV3.OperationObject } = {};\n for (const path in paths) {\n const methods = paths[path];\n for (const method in methods) {\n // For developer preview, only support GET operation with only 1 parameter without auth\n if (\n Utils.isSupportedApi(\n method,\n path,\n spec,\n allowMissingId,\n allowAPIKeyAuth,\n allowMultipleParameters,\n allowOauth2\n )\n ) {\n const operationObject = (methods as any)[method] as OpenAPIV3.OperationObject;\n result[`${method.toUpperCase()} ${path}`] = operationObject;\n }\n }\n }\n return result;\n }\n\n static validateSpec(\n spec: OpenAPIV3.Document,\n parser: SwaggerParser,\n isSwaggerFile: boolean,\n allowMissingId: boolean,\n allowAPIKeyAuth: boolean,\n allowMultipleParameters: boolean,\n allowOauth2: boolean\n ): ValidateResult {\n const errors: ErrorResult[] = [];\n const warnings: WarningResult[] = [];\n\n if (isSwaggerFile) {\n warnings.push({\n type: WarningType.ConvertSwaggerToOpenAPI,\n content: ConstantString.ConvertSwaggerToOpenAPI,\n });\n }\n\n // Server validation\n const serverErrors = Utils.validateServer(\n spec,\n allowMissingId,\n allowAPIKeyAuth,\n allowMultipleParameters,\n allowOauth2\n );\n errors.push(...serverErrors);\n\n // Remote reference not supported\n const refPaths = parser.$refs.paths();\n\n // refPaths [0] is the current spec file path\n if (refPaths.length > 1) {\n errors.push({\n type: ErrorType.RemoteRefNotSupported,\n content: Utils.format(ConstantString.RemoteRefNotSupported, refPaths.join(\", \")),\n data: refPaths,\n });\n }\n\n // No supported API\n const apiMap = Utils.listSupportedAPIs(\n spec,\n allowMissingId,\n allowAPIKeyAuth,\n allowMultipleParameters,\n allowOauth2\n );\n if (Object.keys(apiMap).length === 0) {\n errors.push({\n type: ErrorType.NoSupportedApi,\n content: ConstantString.NoSupportedApi,\n });\n }\n\n // OperationId missing\n const apisMissingOperationId: string[] = [];\n for (const key in apiMap) {\n const pathObjectItem = apiMap[key];\n if (!pathObjectItem.operationId) {\n apisMissingOperationId.push(key);\n }\n }\n\n if (apisMissingOperationId.length > 0) {\n warnings.push({\n type: WarningType.OperationIdMissing,\n content: Utils.format(ConstantString.MissingOperationId, apisMissingOperationId.join(\", \")),\n data: apisMissingOperationId,\n });\n }\n\n let status = ValidationStatus.Valid;\n if (warnings.length > 0 && errors.length === 0) {\n status = ValidationStatus.Warning;\n } else if (errors.length > 0) {\n status = ValidationStatus.Error;\n }\n\n return {\n status,\n warnings,\n errors,\n };\n }\n\n static format(str: string, ...args: string[]): string {\n let index = 0;\n return str.replace(/%s/g, () => {\n const arg = args[index++];\n return arg !== undefined ? arg : \"\";\n });\n }\n\n static getSafeRegistrationIdEnvName(authName: string): string {\n if (!authName) {\n return \"\";\n }\n\n let safeRegistrationIdEnvName = authName.toUpperCase().replace(/[^A-Z0-9_]/g, \"_\");\n\n if (!safeRegistrationIdEnvName.match(/^[A-Z]/)) {\n safeRegistrationIdEnvName = \"PREFIX_\" + safeRegistrationIdEnvName;\n }\n\n return safeRegistrationIdEnvName;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\"use strict\";\n\nimport SwaggerParser from \"@apidevtools/swagger-parser\";\nimport { OpenAPIV3 } from \"openapi-types\";\nimport {\n APIInfo,\n ErrorType,\n GenerateResult,\n ParseOptions,\n ValidateResult,\n ValidationStatus,\n Parameter,\n ListAPIResult,\n} from \"./interfaces\";\nimport { SpecParserError } from \"./specParserError\";\nimport { Utils } from \"./utils\";\nimport { ConstantString } from \"./constants\";\n\n/**\n * A class that parses an OpenAPI specification file and provides methods to validate, list, and generate artifacts.\n */\nexport class SpecParser {\n public readonly pathOrSpec: string | OpenAPIV3.Document;\n public readonly parser: SwaggerParser;\n public readonly options: Required<ParseOptions>;\n\n private apiMap: { [key: string]: OpenAPIV3.PathItemObject } | undefined;\n private spec: OpenAPIV3.Document | undefined;\n private unResolveSpec: OpenAPIV3.Document | undefined;\n private isSwaggerFile: boolean | undefined;\n\n private defaultOptions: ParseOptions = {\n allowMissingId: false,\n allowSwagger: false,\n allowAPIKeyAuth: false,\n allowMultipleParameters: false,\n allowOauth2: false,\n };\n\n /**\n * Creates a new instance of the SpecParser class.\n * @param pathOrDoc The path to the OpenAPI specification file or the OpenAPI specification object.\n * @param options The options for parsing the OpenAPI specification file.\n */\n constructor(pathOrDoc: string | OpenAPIV3.Document, options?: ParseOptions) {\n this.pathOrSpec = pathOrDoc;\n this.parser = new SwaggerParser();\n this.options = {\n ...this.defaultOptions,\n ...(options ?? {}),\n } as Required<ParseOptions>;\n }\n\n /**\n * Validates the OpenAPI specification file and returns a validation result.\n *\n * @returns A validation result object that contains information about any errors or warnings in the specification file.\n */\n async validate(): Promise<ValidateResult> {\n try {\n try {\n await this.loadSpec();\n await this.parser.validate(this.spec!, {\n validate: {\n schema: false,\n },\n });\n } catch (e) {\n return {\n status: ValidationStatus.Error,\n warnings: [],\n errors: [{ type: ErrorType.SpecNotValid, content: (e as Error).toString() }],\n };\n }\n\n if (!this.options.allowSwagger && this.isSwaggerFile) {\n return {\n status: ValidationStatus.Error,\n warnings: [],\n errors: [\n { type: ErrorType.SwaggerNotSupported, content: ConstantString.SwaggerNotSupported },\n ],\n };\n }\n\n return Utils.validateSpec(\n this.spec!,\n this.parser,\n !!this.isSwaggerFile,\n this.options.allowMissingId,\n this.options.allowAPIKeyAuth,\n this.options.allowMultipleParameters,\n this.options.allowOauth2\n );\n } catch (err) {\n throw new SpecParserError((err as Error).toString(), ErrorType.ValidateFailed);\n }\n }\n\n async listSupportedAPIInfo(): Promise<APIInfo[]> {\n try {\n await this.loadSpec();\n const apiMap = this.getAllSupportedAPIs(this.spec!);\n const apiInfos: APIInfo[] = [];\n for (const key in apiMap) {\n const pathObjectItem = apiMap[key];\n const [method, path] = key.split(\" \");\n const operationId = pathObjectItem.operationId;\n\n // In Browser environment, this api is by default not support api without operationId\n if (!operationId) {\n continue;\n }\n\n const [command, warning] = Utils.parseApiInfo(\n pathObjectItem,\n this.options.allowMultipleParameters\n );\n\n const apiInfo: APIInfo = {\n method: method,\n path: path,\n title: command.title,\n id: operationId,\n parameters: command.parameters! as Parameter[],\n description: command.description!,\n };\n\n if (warning) {\n apiInfo.warning = warning;\n }\n\n apiInfos.push(apiInfo);\n }\n\n return apiInfos;\n } catch (err) {\n throw new SpecParserError((err as Error).toString(), ErrorType.listSupportedAPIInfoFailed);\n }\n }\n\n /**\n * Lists all the OpenAPI operations in the specification file.\n * @returns A string array that represents the HTTP method and path of each operation, such as ['GET /pets/{petId}', 'GET /user/{userId}']\n * according to copilot plugin spec, only list get and post method without auth\n */\n // eslint-disable-next-line @typescript-eslint/require-await\n async list(): Promise<ListAPIResult[]> {\n throw new Error(\"Method not implemented.\");\n }\n\n /**\n * Generates and update artifacts from the OpenAPI specification file. Generate Adaptive Cards, update Teams app manifest, and generate a new OpenAPI specification file.\n * @param manifestPath A file path of the Teams app manifest file to update.\n * @param filter An array of strings that represent the filters to apply when generating the artifacts. If filter is empty, it would process nothing.\n * @param outputSpecPath File path of the new OpenAPI specification file to generate. If not specified or empty, no spec file will be generated.\n * @param adaptiveCardFolder Folder path where the Adaptive Card files will be generated. If not specified or empty, Adaptive Card files will not be generated.\n */\n // eslint-disable-next-line @typescript-eslint/require-await\n async generate(\n manifestPath: string,\n filter: string[],\n outputSpecPath: string,\n adaptiveCardFolder: string,\n signal?: AbortSignal\n ): Promise<GenerateResult> {\n throw new Error(\"Method not implemented.\");\n }\n\n private async loadSpec(): Promise<void> {\n if (!this.spec) {\n this.unResolveSpec = (await this.parser.parse(this.pathOrSpec)) as OpenAPIV3.Document;\n if (!this.unResolveSpec.openapi && (this.unResolveSpec as any).swagger === \"2.0\") {\n this.isSwaggerFile = true;\n }\n\n const clonedUnResolveSpec = JSON.parse(JSON.stringify(this.unResolveSpec));\n this.spec = (await this.parser.dereference(clonedUnResolveSpec)) as OpenAPIV3.Document;\n }\n }\n\n private getAllSupportedAPIs(spec: OpenAPIV3.Document): {\n [key: string]: OpenAPIV3.OperationObject;\n } {\n if (this.apiMap !== undefined) {\n return this.apiMap;\n }\n const result = Utils.listSupportedAPIs(\n spec,\n this.options.allowMissingId,\n this.options.allowAPIKeyAuth,\n this.options.allowMultipleParameters,\n this.options.allowOauth2\n );\n this.apiMap = result;\n return result;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -323,12 +323,15 @@ class Utils {
323
323
  if (!allowOauth2 && allowAPIKeyAuth && Utils.isAPIKeyAuth(auths[0].authSchema)) {
324
324
  return true;
325
325
  }
326
- else if (!allowAPIKeyAuth && allowOauth2 && Utils.isBearerTokenAuth(auths[0].authSchema)) {
326
+ else if (!allowAPIKeyAuth &&
327
+ allowOauth2 &&
328
+ Utils.isBearerTokenAuth(auths[0].authSchema)) {
327
329
  return true;
328
330
  }
329
331
  else if (allowAPIKeyAuth &&
330
332
  allowOauth2 &&
331
- (Utils.isAPIKeyAuth(auths[0].authSchema) || Utils.isBearerTokenAuth(auths[0].authSchema))) {
333
+ (Utils.isAPIKeyAuth(auths[0].authSchema) ||
334
+ Utils.isBearerTokenAuth(auths[0].authSchema))) {
332
335
  return true;
333
336
  }
334
337
  }
@@ -1047,7 +1050,8 @@ function inferPreviewCardTemplate(card) {
1047
1050
  result.title = text;
1048
1051
  textBlockElements.delete(element);
1049
1052
  }
1050
- else if (!result.subtitle && Utils.isWellKnownName(text, ConstantString.WellknownSubtitleName)) {
1053
+ else if (!result.subtitle &&
1054
+ Utils.isWellKnownName(text, ConstantString.WellknownSubtitleName)) {
1051
1055
  result.subtitle = text;
1052
1056
  textBlockElements.delete(element);
1053
1057
  }
@@ -1310,5 +1314,5 @@ class SpecParser {
1310
1314
  }
1311
1315
  }
1312
1316
 
1313
- export { ConstantString, ErrorType, SpecParser, SpecParserError, ValidationStatus, WarningType };
1317
+ export { ConstantString, ErrorType, SpecParser, SpecParserError, Utils, ValidationStatus, WarningType };
1314
1318
  //# sourceMappingURL=index.esm2017.mjs.map