@bearer/openapi-generator
Advanced tools
Comparing version 0.100.1-next.27 to 0.100.1-next.35
@@ -46,3 +46,3 @@ # Change Log | ||
* **openapi-generator:** fix the intent order ([#545](https://github.com/Bearer/bearer/issues/545)) ([14c1087](https://github.com/Bearer/bearer/commit/14c1087)) | ||
* **openapi-generator:** fix the func order ([#545](https://github.com/Bearer/bearer/issues/545)) ([14c1087](https://github.com/Bearer/bearer/commit/14c1087)) | ||
@@ -49,0 +49,0 @@ |
import ts from 'typescript'; | ||
export declare const INTENT_ACTION = "action"; | ||
export declare const FUNCTION_ACTION = "action"; | ||
declare type TOutput = { | ||
requestBody: any; | ||
response: any; | ||
intentAuthType?: string; | ||
functionAuthType?: string; | ||
}; | ||
/** | ||
* Convert single intent types to json schema | ||
* Convert single func types to json schema | ||
* This function tries to find the relevant type definitions, Params and `action` method resposne type | ||
* and converts the types to json-schema | ||
* @param intentPath absolute path to intent | ||
* @param functionPath absolute path to function | ||
* @param options compiler options | ||
*/ | ||
export declare function intentTypesToSchemaConverter(intentPath: string, options?: ts.CompilerOptions): TOutput; | ||
export declare function functionTypesToSchemaConverter(functionPath: string, options?: ts.CompilerOptions): TOutput; | ||
/** | ||
* Generate full openapi spec from intents | ||
* @param intentsDir absolute path to intents directory | ||
* @param intents list of intent names | ||
* Generate full openapi spec from functions | ||
* @param functionsDir absolute path to functions directory | ||
* @param functions list of func names | ||
* @param integrationUuid integration unique identifier | ||
* @param integrationName name of the integration | ||
*/ | ||
export default function generator({ intentsDir, intents, integrationUuid, integrationName }: { | ||
intentsDir: string; | ||
intents: string[]; | ||
export default function generator({ functionsDir, functions, integrationUuid, integrationName }: { | ||
functionsDir: string; | ||
functions: string[]; | ||
integrationUuid: string; | ||
@@ -27,0 +27,0 @@ integrationName: string; |
@@ -10,3 +10,3 @@ "use strict"; | ||
const convert_type_1 = require("./convert-type"); | ||
exports.INTENT_ACTION = 'action'; | ||
exports.FUNCTION_ACTION = 'action'; | ||
/** | ||
@@ -18,3 +18,3 @@ * find action method in class and return relevant node | ||
if (node.name) { | ||
return node.name.getText() === exports.INTENT_ACTION; | ||
return node.name.getText() === exports.FUNCTION_ACTION; | ||
} | ||
@@ -61,3 +61,3 @@ return false; | ||
/** | ||
* Find the Parameter type in intent and convert it to json-schema | ||
* Find the Parameter type in func and convert it to json-schema | ||
*/ | ||
@@ -79,3 +79,3 @@ function serializeParameters(sym, node, checker) { | ||
*/ | ||
function getIntentAuthType(sym, node, checker) { | ||
function getFunctionAuthType(sym, node, checker) { | ||
if (sym) { | ||
@@ -86,3 +86,2 @@ const typ = checker.getTypeOfSymbolAtLocation(sym, node); | ||
const authType = checker.typeToString(typ.aliasTypeArguments[index]); | ||
console.log(authType); | ||
if (/apiKey/.test(authType)) | ||
@@ -105,11 +104,11 @@ return 'APIKEY'; | ||
/** | ||
* Convert single intent types to json schema | ||
* Convert single func types to json schema | ||
* This function tries to find the relevant type definitions, Params and `action` method resposne type | ||
* and converts the types to json-schema | ||
* @param intentPath absolute path to intent | ||
* @param functionPath absolute path to function | ||
* @param options compiler options | ||
*/ | ||
function intentTypesToSchemaConverter(intentPath, options = { target: typescript_1.default.ScriptTarget.ES5, module: typescript_1.default.ModuleKind.CommonJS }) { | ||
const program = typescript_1.default.createProgram([intentPath], options); | ||
const sourceFile = program.getSourceFile(intentPath); | ||
function functionTypesToSchemaConverter(functionPath, options = { target: typescript_1.default.ScriptTarget.ES5, module: typescript_1.default.ModuleKind.CommonJS }) { | ||
const program = typescript_1.default.createProgram([functionPath], options); | ||
const sourceFile = program.getSourceFile(functionPath); | ||
const checker = program.getTypeChecker(); | ||
@@ -136,3 +135,3 @@ const output = { | ||
output.response = serializeBody(actionMethodNode, checker); | ||
output.intentAuthType = getIntentAuthType(sym, parameterNode, checker); | ||
output.functionAuthType = getFunctionAuthType(sym, parameterNode, checker); | ||
} | ||
@@ -146,21 +145,21 @@ } | ||
} | ||
exports.intentTypesToSchemaConverter = intentTypesToSchemaConverter; | ||
exports.functionTypesToSchemaConverter = functionTypesToSchemaConverter; | ||
/** | ||
* Generate full openapi spec from intents | ||
* @param intentsDir absolute path to intents directory | ||
* @param intents list of intent names | ||
* Generate full openapi spec from functions | ||
* @param functionsDir absolute path to functions directory | ||
* @param functions list of func names | ||
* @param integrationUuid integration unique identifier | ||
* @param integrationName name of the integration | ||
*/ | ||
function generator({ intentsDir, intents, integrationUuid, integrationName }) { | ||
function generator({ functionsDir, functions, integrationUuid, integrationName }) { | ||
const doc = openapi_template_1.topOfSpec(integrationName); | ||
const schemas = intents.sort().reduce((acc, intent) => { | ||
const intentPath = path_1.default.join(intentsDir, `${intent}.ts`); | ||
const typeSchema = intentTypesToSchemaConverter(intentPath); | ||
const schemas = functions.sort().reduce((acc, func) => { | ||
const functionPath = path_1.default.join(functionsDir, `${func}.ts`); | ||
const typeSchema = functionTypesToSchemaConverter(functionPath); | ||
return Object.assign(acc, openapi_template_1.specPath({ | ||
integrationUuid, | ||
intentName: intent, | ||
functionName: func, | ||
response: { type: 'object', properties: typeSchema.response }, | ||
requestBody: typeSchema.requestBody, | ||
oauth: typeSchema.intentAuthType === 'OAUTH2' || typeSchema.intentAuthType === 'OAUTH1' | ||
oauth: typeSchema.functionAuthType === 'OAUTH2' || typeSchema.functionAuthType === 'OAUTH1' | ||
})); | ||
@@ -167,0 +166,0 @@ }, {}); |
@@ -36,5 +36,5 @@ declare type THeader = { | ||
}; | ||
export declare function specPath({ integrationUuid, intentName, requestBody, response, oauth }: { | ||
export declare function specPath({ integrationUuid, functionName, requestBody, response, oauth }: { | ||
integrationUuid: string; | ||
intentName: string; | ||
functionName: string; | ||
requestBody: any; | ||
@@ -41,0 +41,0 @@ response: any; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
function specPath({ integrationUuid, intentName, requestBody, response, oauth }) { | ||
function specPath({ integrationUuid, functionName, requestBody, response, oauth }) { | ||
return { | ||
[`/${integrationUuid}/${intentName}`]: { | ||
[`/${integrationUuid}/${functionName}`]: { | ||
post: { | ||
@@ -17,6 +17,6 @@ parameters: [ | ||
].filter(e => e !== undefined), | ||
summary: intentName, | ||
summary: functionName, | ||
requestBody: { content: { 'application/json': { schema: requestBody } } }, | ||
responses: { | ||
'200': { description: intentName, content: { 'application/json': { schema: response } } }, | ||
'200': { description: functionName, content: { 'application/json': { schema: response } } }, | ||
'401': { | ||
@@ -62,3 +62,3 @@ description: 'Access forbidden', | ||
}, | ||
servers: [{ url: 'https://int.bearer.sh/api/v2/intents/backend/' }], | ||
servers: [{ url: 'https://int.bearer.sh/api/v2/functions/backend/' }], | ||
tags: [ | ||
@@ -65,0 +65,0 @@ { |
{ | ||
"name": "@bearer/openapi-generator", | ||
"version": "0.100.1-next.27+c9ee260b", | ||
"description": "Intent openapi spec generator", | ||
"version": "0.100.1-next.35+21768b97", | ||
"description": "Function openapi spec generator", | ||
"main": "lib/index.js", | ||
@@ -32,6 +32,6 @@ "repository": "Bearer/bearer", | ||
"dependencies": { | ||
"@bearer/intents": "^0.99.0", | ||
"@bearer/functions": "^0.100.1-next.35+21768b97", | ||
"lodash.merge": "^4.6.1" | ||
}, | ||
"gitHead": "c9ee260b35afd185d9f71d27f9ae6ad808794162" | ||
"gitHead": "21768b977dfe12c3f06fae21bf12fb48732caa0a" | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Manifest confusion
Supply chain riskThis package has inconsistent metadata. This could be malicious or caused by an error when publishing the package.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Manifest confusion
Supply chain riskThis package has inconsistent metadata. This could be malicious or caused by an error when publishing the package.
Found 1 instance in 1 package
19883
431
+ Added@bearer/functions@0.100.1-next.48(transitive)
+ Added@bearer/logger@0.100.1-next.48(transitive)
+ Addedaxios@0.18.1(transitive)
+ Addeddebug@4.3.7(transitive)
+ Addedfollow-redirects@1.5.10(transitive)
+ Addedis-buffer@2.0.5(transitive)
+ Addedms@2.1.3(transitive)
+ Addedtypescript@3.9.10(transitive)
+ Addeduuid@3.4.0(transitive)
- Removed@bearer/intents@^0.99.0