@microsoft/m365-spec-parser 0.1.1-alpha.a372ccf67.0 → 0.1.1-alpha.b015b287e.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm2017.js +204 -137
- package/dist/index.esm2017.js.map +1 -1
- package/dist/index.esm2017.mjs +271 -167
- package/dist/index.esm2017.mjs.map +1 -1
- package/dist/index.esm5.js +204 -137
- package/dist/index.esm5.js.map +1 -1
- package/dist/index.node.cjs.js +271 -167
- package/dist/index.node.cjs.js.map +1 -1
- package/dist/src/constants.d.ts +1 -0
- package/dist/src/interfaces.d.ts +44 -16
- package/dist/src/manifestUpdater.d.ts +2 -1
- package/dist/src/specParser.browser.d.ts +1 -0
- package/dist/src/specParser.d.ts +2 -2
- package/dist/src/utils.d.ts +17 -14
- package/package.json +3 -3
package/dist/src/constants.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export declare class ConstantString {
|
|
|
13
13
|
static readonly OperationOnlyContainsOptionalParam = "Operation %s contains multiple optional parameters. The first optional parameter is used for this command.";
|
|
14
14
|
static readonly ConvertSwaggerToOpenAPI = "The Swagger 2.0 file has been converted to OpenAPI 3.0.";
|
|
15
15
|
static readonly SwaggerNotSupported = "Swagger 2.0 is not supported. Please convert to OpenAPI 3.0 manually before proceeding.";
|
|
16
|
+
static readonly SpecVersionNotSupported = "Unsupported OpenAPI version %s. Please use version 3.0.x.";
|
|
16
17
|
static readonly MultipleAuthNotSupported = "Multiple authentication methods are unsupported. Ensure all selected APIs use identical authentication.";
|
|
17
18
|
static readonly UnsupportedSchema = "Unsupported schema in %s %s: %s";
|
|
18
19
|
static readonly WrappedCardVersion = "devPreview";
|
package/dist/src/interfaces.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { IParameter } from "@microsoft/teams-manifest";
|
|
1
2
|
import { OpenAPIV3 } from "openapi-types";
|
|
2
3
|
/**
|
|
3
4
|
* An interface that represents the result of validating an OpenAPI specification file.
|
|
@@ -68,6 +69,7 @@ export declare enum ErrorType {
|
|
|
68
69
|
ResolveServerUrlFailed = "resolve-server-url-failed",
|
|
69
70
|
SwaggerNotSupported = "swagger-not-supported",
|
|
70
71
|
MultipleAuthNotSupported = "multiple-auth-not-supported",
|
|
72
|
+
SpecVersionNotSupported = "spec-version-not-supported",
|
|
71
73
|
ListFailed = "list-failed",
|
|
72
74
|
listSupportedAPIInfoFailed = "list-supported-api-info-failed",
|
|
73
75
|
FilterSpecFailed = "filter-spec-failed",
|
|
@@ -76,6 +78,21 @@ export declare enum ErrorType {
|
|
|
76
78
|
GenerateFailed = "generate-failed",
|
|
77
79
|
ValidateFailed = "validate-failed",
|
|
78
80
|
GetSpecFailed = "get-spec-failed",
|
|
81
|
+
AuthTypeIsNotSupported = "auth-type-is-not-supported",
|
|
82
|
+
MissingOperationId = "missing-operation-id",
|
|
83
|
+
PostBodyContainMultipleMediaTypes = "post-body-contain-multiple-media-types",
|
|
84
|
+
ResponseContainMultipleMediaTypes = "response-contain-multiple-media-types",
|
|
85
|
+
ResponseJsonIsEmpty = "response-json-is-empty",
|
|
86
|
+
PostBodySchemaIsNotJson = "post-body-schema-is-not-json",
|
|
87
|
+
PostBodyContainsRequiredUnsupportedSchema = "post-body-contains-required-unsupported-schema",
|
|
88
|
+
ParamsContainRequiredUnsupportedSchema = "params-contain-required-unsupported-schema",
|
|
89
|
+
ParamsContainsNestedObject = "params-contains-nested-object",
|
|
90
|
+
RequestBodyContainsNestedObject = "request-body-contains-nested-object",
|
|
91
|
+
ExceededRequiredParamsLimit = "exceeded-required-params-limit",
|
|
92
|
+
NoParameter = "no-parameter",
|
|
93
|
+
NoAPIInfo = "no-api-info",
|
|
94
|
+
MethodNotAllowed = "method-not-allowed",
|
|
95
|
+
UrlPathNotExist = "url-path-not-exist",
|
|
79
96
|
Cancelled = "cancelled",
|
|
80
97
|
Unknown = "unknown"
|
|
81
98
|
}
|
|
@@ -135,22 +152,11 @@ export interface WrappedAdaptiveCard {
|
|
|
135
152
|
responseCardTemplate: AdaptiveCard;
|
|
136
153
|
previewCardTemplate: PreviewCardTemplate;
|
|
137
154
|
}
|
|
138
|
-
export interface ChoicesItem {
|
|
139
|
-
title: string;
|
|
140
|
-
value: string;
|
|
141
|
-
}
|
|
142
|
-
export interface Parameter {
|
|
143
|
-
name: string;
|
|
144
|
-
title: string;
|
|
145
|
-
description: string;
|
|
146
|
-
inputType?: "text" | "textarea" | "number" | "date" | "time" | "toggle" | "choiceset";
|
|
147
|
-
value?: string;
|
|
148
|
-
choices?: ChoicesItem[];
|
|
149
|
-
}
|
|
150
155
|
export interface CheckParamResult {
|
|
151
156
|
requiredNum: number;
|
|
152
157
|
optionalNum: number;
|
|
153
158
|
isValid: boolean;
|
|
159
|
+
reason: ErrorType[];
|
|
154
160
|
}
|
|
155
161
|
export interface ParseOptions {
|
|
156
162
|
/**
|
|
@@ -165,6 +171,10 @@ export interface ParseOptions {
|
|
|
165
171
|
* If true, the parser will allow API Key authentication in the spec file.
|
|
166
172
|
*/
|
|
167
173
|
allowAPIKeyAuth?: boolean;
|
|
174
|
+
/**
|
|
175
|
+
* If true, the parser will allow Bearer Token authentication in the spec file.
|
|
176
|
+
*/
|
|
177
|
+
allowBearerTokenAuth?: boolean;
|
|
168
178
|
/**
|
|
169
179
|
* If true, the parser will allow multiple parameters in the spec file. Teams AI project would ignore this parameters and always true
|
|
170
180
|
*/
|
|
@@ -193,17 +203,35 @@ export interface APIInfo {
|
|
|
193
203
|
path: string;
|
|
194
204
|
title: string;
|
|
195
205
|
id: string;
|
|
196
|
-
parameters:
|
|
206
|
+
parameters: IParameter[];
|
|
197
207
|
description: string;
|
|
198
208
|
warning?: WarningResult;
|
|
199
209
|
}
|
|
200
|
-
export interface
|
|
210
|
+
export interface ListAPIInfo {
|
|
201
211
|
api: string;
|
|
202
212
|
server: string;
|
|
203
213
|
operationId: string;
|
|
204
|
-
|
|
214
|
+
isValid: boolean;
|
|
215
|
+
reason: ErrorType[];
|
|
216
|
+
auth?: AuthInfo;
|
|
217
|
+
}
|
|
218
|
+
export interface APIMap {
|
|
219
|
+
[key: string]: {
|
|
220
|
+
operation: OpenAPIV3.OperationObject;
|
|
221
|
+
isValid: boolean;
|
|
222
|
+
reason: ErrorType[];
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
export interface APIValidationResult {
|
|
226
|
+
isValid: boolean;
|
|
227
|
+
reason: ErrorType[];
|
|
228
|
+
}
|
|
229
|
+
export interface ListAPIResult {
|
|
230
|
+
allAPICount: number;
|
|
231
|
+
validAPICount: number;
|
|
232
|
+
APIs: ListAPIInfo[];
|
|
205
233
|
}
|
|
206
234
|
export interface AuthInfo {
|
|
207
|
-
|
|
235
|
+
authScheme: OpenAPIV3.SecuritySchemeObject;
|
|
208
236
|
name: string;
|
|
209
237
|
}
|
|
@@ -5,8 +5,9 @@ export declare class ManifestUpdater {
|
|
|
5
5
|
static updateManifestWithAiPlugin(manifestPath: string, outputSpecPath: string, apiPluginFilePath: string, spec: OpenAPIV3.Document, options: ParseOptions): Promise<[TeamsAppManifest, PluginManifestSchema]>;
|
|
6
6
|
static updateManifestDescription(manifest: TeamsAppManifest, spec: OpenAPIV3.Document): void;
|
|
7
7
|
static mapOpenAPISchemaToFuncParam(schema: OpenAPIV3.SchemaObject, method: string, pathUrl: string): FunctionParameter;
|
|
8
|
-
static generatePluginManifestSchema(spec: OpenAPIV3.Document, specRelativePath: string, options: ParseOptions): PluginManifestSchema;
|
|
8
|
+
static generatePluginManifestSchema(spec: OpenAPIV3.Document, specRelativePath: string, appName: string, options: ParseOptions): PluginManifestSchema;
|
|
9
9
|
static updateManifest(manifestPath: string, outputSpecPath: string, spec: OpenAPIV3.Document, options: ParseOptions, adaptiveCardFolder?: string, authInfo?: AuthInfo): Promise<[TeamsAppManifest, WarningResult[]]>;
|
|
10
10
|
static generateCommands(spec: OpenAPIV3.Document, manifestPath: string, options: ParseOptions, adaptiveCardFolder?: string): Promise<[IMessagingExtensionCommand[], WarningResult[]]>;
|
|
11
11
|
static getRelativePath(from: string, to: string): string;
|
|
12
|
+
static removeEnvs(str: string): string;
|
|
12
13
|
}
|
|
@@ -56,4 +56,5 @@ export declare class SpecParser {
|
|
|
56
56
|
generate(manifestPath: string, filter: string[], outputSpecPath: string, adaptiveCardFolder?: string, signal?: AbortSignal): Promise<GenerateResult>;
|
|
57
57
|
private loadSpec;
|
|
58
58
|
private getAllSupportedAPIs;
|
|
59
|
+
private listSupportedAPIs;
|
|
59
60
|
}
|
package/dist/src/specParser.d.ts
CHANGED
|
@@ -31,7 +31,7 @@ export declare class SpecParser {
|
|
|
31
31
|
* @returns A string array that represents the HTTP method and path of each operation, such as ['GET /pets/{petId}', 'GET /user/{userId}']
|
|
32
32
|
* according to copilot plugin spec, only list get and post method without auth
|
|
33
33
|
*/
|
|
34
|
-
list(): Promise<ListAPIResult
|
|
34
|
+
list(): Promise<ListAPIResult>;
|
|
35
35
|
/**
|
|
36
36
|
* Generate specs according to the filters.
|
|
37
37
|
* @param filter An array of strings that represent the filters to apply when generating the artifacts. If filter is empty, it would process nothing.
|
|
@@ -54,5 +54,5 @@ export declare class SpecParser {
|
|
|
54
54
|
*/
|
|
55
55
|
generate(manifestPath: string, filter: string[], outputSpecPath: string, adaptiveCardFolder?: string, signal?: AbortSignal): Promise<GenerateResult>;
|
|
56
56
|
private loadSpec;
|
|
57
|
-
private
|
|
57
|
+
private getAPIs;
|
|
58
58
|
}
|
package/dist/src/utils.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { OpenAPIV3 } from "openapi-types";
|
|
2
2
|
import SwaggerParser from "@apidevtools/swagger-parser";
|
|
3
|
-
import { AuthInfo, CheckParamResult, ErrorResult,
|
|
4
|
-
import { IMessagingExtensionCommand } from "@microsoft/teams-manifest";
|
|
3
|
+
import { APIMap, APIValidationResult, AuthInfo, CheckParamResult, ErrorResult, ParseOptions, ValidateResult } from "./interfaces";
|
|
4
|
+
import { IMessagingExtensionCommand, IParameter } from "@microsoft/teams-manifest";
|
|
5
5
|
export declare class Utils {
|
|
6
6
|
static hasNestedObjectInSchema(schema: OpenAPIV3.SchemaObject): boolean;
|
|
7
7
|
static checkParameters(paramObject: OpenAPIV3.ParameterObject[], isCopilot: boolean): CheckParamResult;
|
|
@@ -21,26 +21,29 @@ export declare class Utils {
|
|
|
21
21
|
* 5. response body should be “application/json” and not empty, and response code should be 20X
|
|
22
22
|
* 6. only support request body with “application/json” content type
|
|
23
23
|
*/
|
|
24
|
-
static isSupportedApi(method: string, path: string, spec: OpenAPIV3.Document, options: ParseOptions):
|
|
25
|
-
static isSupportedAuth(
|
|
26
|
-
static
|
|
27
|
-
static
|
|
24
|
+
static isSupportedApi(method: string, path: string, spec: OpenAPIV3.Document, options: ParseOptions): APIValidationResult;
|
|
25
|
+
static isSupportedAuth(authSchemeArray: AuthInfo[][], options: ParseOptions): APIValidationResult;
|
|
26
|
+
static isBearerTokenAuth(authScheme: OpenAPIV3.SecuritySchemeObject): boolean;
|
|
27
|
+
static isAPIKeyAuth(authScheme: OpenAPIV3.SecuritySchemeObject): boolean;
|
|
28
|
+
static isOAuthWithAuthCodeFlow(authScheme: OpenAPIV3.SecuritySchemeObject): boolean;
|
|
28
29
|
static getAuthArray(securities: OpenAPIV3.SecurityRequirementObject[] | undefined, spec: OpenAPIV3.Document): AuthInfo[][];
|
|
29
30
|
static updateFirstLetter(str: string): string;
|
|
30
|
-
static getResponseJson(operationObject: OpenAPIV3.OperationObject | undefined, isTeamsAiProject?: boolean):
|
|
31
|
+
static getResponseJson(operationObject: OpenAPIV3.OperationObject | undefined, isTeamsAiProject?: boolean): {
|
|
32
|
+
json: OpenAPIV3.MediaTypeObject;
|
|
33
|
+
multipleMediaType: boolean;
|
|
34
|
+
};
|
|
31
35
|
static convertPathToCamelCase(path: string): string;
|
|
32
36
|
static getUrlProtocol(urlString: string): string | undefined;
|
|
33
|
-
static
|
|
37
|
+
static resolveEnv(str: string): string;
|
|
34
38
|
static checkServerUrl(servers: OpenAPIV3.ServerObject[]): ErrorResult[];
|
|
35
39
|
static validateServer(spec: OpenAPIV3.Document, options: ParseOptions): ErrorResult[];
|
|
36
40
|
static isWellKnownName(name: string, wellknownNameList: string[]): boolean;
|
|
37
|
-
static generateParametersFromSchema(schema: OpenAPIV3.SchemaObject, name: string, allowMultipleParameters: boolean, isRequired?: boolean): [
|
|
38
|
-
static updateParameterWithInputType(schema: OpenAPIV3.SchemaObject, param:
|
|
39
|
-
static parseApiInfo(operationItem: OpenAPIV3.OperationObject, options: ParseOptions):
|
|
40
|
-
static
|
|
41
|
-
[key: string]: OpenAPIV3.OperationObject;
|
|
42
|
-
};
|
|
41
|
+
static generateParametersFromSchema(schema: OpenAPIV3.SchemaObject, name: string, allowMultipleParameters: boolean, isRequired?: boolean): [IParameter[], IParameter[]];
|
|
42
|
+
static updateParameterWithInputType(schema: OpenAPIV3.SchemaObject, param: IParameter): void;
|
|
43
|
+
static parseApiInfo(operationItem: OpenAPIV3.OperationObject, options: ParseOptions): IMessagingExtensionCommand;
|
|
44
|
+
static listAPIs(spec: OpenAPIV3.Document, options: ParseOptions): APIMap;
|
|
43
45
|
static validateSpec(spec: OpenAPIV3.Document, parser: SwaggerParser, isSwaggerFile: boolean, options: ParseOptions): ValidateResult;
|
|
44
46
|
static format(str: string, ...args: string[]): string;
|
|
45
47
|
static getSafeRegistrationIdEnvName(authName: string): string;
|
|
48
|
+
static getAllAPICount(spec: OpenAPIV3.Document): number;
|
|
46
49
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@microsoft/m365-spec-parser",
|
|
3
|
-
"version": "0.1.1-alpha.
|
|
3
|
+
"version": "0.1.1-alpha.b015b287e.0",
|
|
4
4
|
"description": "OpenAPI specification files Parser for M365 Apps",
|
|
5
5
|
"main": "dist/index.node.cjs.js",
|
|
6
6
|
"browser": "dist/index.esm2017.js",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"sideEffects": false,
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@apidevtools/swagger-parser": "^10.1.0",
|
|
42
|
-
"@microsoft/teams-manifest": "0.1.4-alpha.
|
|
42
|
+
"@microsoft/teams-manifest": "0.1.4-alpha.b015b287e.0",
|
|
43
43
|
"fs-extra": "^11.2.0",
|
|
44
44
|
"js-yaml": "^4.1.0",
|
|
45
45
|
"openapi-types": "^7.2.3",
|
|
@@ -148,5 +148,5 @@
|
|
|
148
148
|
"npx eslint --cache --fix --quiet"
|
|
149
149
|
]
|
|
150
150
|
},
|
|
151
|
-
"gitHead": "
|
|
151
|
+
"gitHead": "c7572cef99be51f88f24c87b56218946d2c4750c"
|
|
152
152
|
}
|