@metabridge/plugin-typescript
Advanced tools
Comparing version 0.1.8 to 0.2.0
export interface MetaBridgeDriver { | ||
onQueried: (queryName: string, requestBody: any) => Promise<any>; | ||
onSubscribed: (subscriptionName: string, requestBody: any, listener: (response: any) => void) => void; | ||
} | ||
@@ -4,0 +5,0 @@ export declare function makeScaffoldedBridge<T extends MetaBridgeDriver>({ driver, }: { |
@@ -24,7 +24,10 @@ "use strict"; | ||
compile(schema) { | ||
var _a, _b; | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const lines = []; | ||
const properties = Object.entries(schema.queries).reduce((acc, [queryName, { requestBody, response }]) => { | ||
const properties = Object.assign(Object.assign({}, Object.entries(schema.queries).reduce((acc, [queryName, { requestBody, response }]) => { | ||
return Object.assign(Object.assign({}, acc), { [(0, change_case_1.pascalCase)(queryName + " RequestBody")]: requestBody, [(0, change_case_1.pascalCase)(queryName + " Response")]: response }); | ||
}, {}); | ||
}, {})), Object.entries((_a = schema.subscriptions) !== null && _a !== void 0 ? _a : {}).reduce((acc, [subscriptionName, { requestBody, response }]) => { | ||
return Object.assign(Object.assign({}, acc), { [(0, change_case_1.pascalCase)(subscriptionName + " RequestBody")]: requestBody, [(0, change_case_1.pascalCase)(subscriptionName + " Response")]: response }); | ||
}, {})); | ||
const schemaRootTypeName = (0, change_case_1.pascalCase)(schema.appName + " BridgeSchema"); | ||
@@ -39,3 +42,3 @@ const typeDefs = yield (0, json_schema_to_typescript_1.compile)({ | ||
yield promises_1.default.readFile(path_1.default.join(__dirname, "../src/__scaffolds__/makeScaffoldedBridge.ts"), "utf-8"); | ||
const operations = Object.entries(schema.queries).map(([queryName, { operationId, description }]) => { | ||
const queries = Object.entries(schema.queries).map(([queryName, { operationId, description }]) => { | ||
const functionName = (0, change_case_1.camelCase)(operationId); | ||
@@ -54,3 +57,3 @@ const requestBodyTypeName = schemaRootTypeName + | ||
*/ | ||
${functionName}(req: ${requestBodyTypeName}): Promise<${responseTypeName}> { | ||
${functionName}(req: ${requestBodyTypeName}): Promise<${responseTypeName}> { | ||
return driver.onQueried("${queryName}", req) | ||
@@ -60,3 +63,22 @@ }, | ||
}, {}); | ||
const sdk = (0, fp_1.pipe)(replaceAll("Scaffolded", (0, change_case_1.pascalCase)(schema.appName)), replaceAll(" /* operations */", operations.join(`\n`)))(yield promises_1.default.readFile(path_1.default.join(__dirname, "../src/__scaffolds__/makeScaffoldedBridge.ts"), "utf-8")); | ||
const subscriptions = Object.entries((_b = schema.subscriptions) !== null && _b !== void 0 ? _b : {}).map(([subscriptionName, { operationId, description }]) => { | ||
const functionName = (0, change_case_1.camelCase)(operationId); | ||
const requestBodyTypeName = schemaRootTypeName + | ||
`["` + | ||
(0, change_case_1.pascalCase)(subscriptionName + " RequestBody") + | ||
`"]`; | ||
const responseTypeName = schemaRootTypeName + | ||
`["` + | ||
(0, change_case_1.pascalCase)(subscriptionName + " Response") + | ||
`"]`; | ||
return (0, dedent_1.default) ` | ||
/** | ||
* ${description} | ||
*/ | ||
${functionName}(req: ${requestBodyTypeName}, listener: (res: ${responseTypeName}) => void): void { | ||
return driver.onSubscribed("${subscriptionName}", req, listener) | ||
}, | ||
`; | ||
}, {}); | ||
const sdk = (0, fp_1.pipe)(replaceAll("Scaffolded", (0, change_case_1.pascalCase)(schema.appName)), replaceAll(" /* operations */", [...queries, ...subscriptions].join(`\n`)))(yield promises_1.default.readFile(path_1.default.join(__dirname, "../src/__scaffolds__/makeScaffoldedBridge.ts"), "utf-8")); | ||
lines.push(sdk); | ||
@@ -63,0 +85,0 @@ const output = lines.join(`\n`); |
{ | ||
"name": "@metabridge/plugin-typescript", | ||
"version": "0.1.8", | ||
"version": "0.2.0", | ||
"main": "lib/index.js", | ||
@@ -14,3 +14,3 @@ "files": [ | ||
"dependencies": { | ||
"@metabridge/plugin-base": "^0.1.1", | ||
"@metabridge/plugin-base": "^0.2.0", | ||
"change-case": "^4.1.2", | ||
@@ -23,3 +23,3 @@ "dedent": "^0.7.0", | ||
"devDependencies": { | ||
"@metabridge/cli": "^0.1.1", | ||
"@metabridge/cli": "^0.2.0", | ||
"@types/dedent": "^0.7.0", | ||
@@ -33,3 +33,3 @@ "@types/lodash": "^4.14.179", | ||
}, | ||
"gitHead": "972c46c46d25b66b19650ebeda3dec6166e72cfc" | ||
"gitHead": "1811c8182e9fda1de01158fd4a4912bf94db2391" | ||
} |
export interface MetaBridgeDriver { | ||
onQueried: (queryName: string, requestBody: any) => Promise<any>; | ||
onSubscribed: ( | ||
subscriptionName: string, | ||
requestBody: any, | ||
listener: (response: any) => void | ||
) => void; | ||
} | ||
@@ -4,0 +9,0 @@ |
@@ -15,12 +15,24 @@ import { camelCase, pascalCase } from "change-case"; | ||
const properties = Object.entries(schema.queries).reduce( | ||
(acc, [queryName, { requestBody, response }]) => { | ||
return { | ||
...acc, | ||
[pascalCase(queryName + " RequestBody")]: requestBody, | ||
[pascalCase(queryName + " Response")]: response, | ||
}; | ||
}, | ||
{} as any | ||
); | ||
const properties = { | ||
...Object.entries(schema.queries).reduce( | ||
(acc, [queryName, { requestBody, response }]) => { | ||
return { | ||
...acc, | ||
[pascalCase(queryName + " RequestBody")]: requestBody, | ||
[pascalCase(queryName + " Response")]: response, | ||
}; | ||
}, | ||
{} as any | ||
), | ||
...Object.entries(schema.subscriptions ?? {}).reduce( | ||
(acc, [subscriptionName, { requestBody, response }]) => { | ||
return { | ||
...acc, | ||
[pascalCase(subscriptionName + " RequestBody")]: requestBody, | ||
[pascalCase(subscriptionName + " Response")]: response, | ||
}; | ||
}, | ||
{} as any | ||
), | ||
}; | ||
@@ -46,3 +58,3 @@ const schemaRootTypeName = pascalCase(schema.appName + " BridgeSchema"); | ||
const operations = Object.entries(schema.queries).map( | ||
const queries = Object.entries(schema.queries).map( | ||
([queryName, { operationId, description }]) => { | ||
@@ -66,3 +78,3 @@ const functionName = camelCase(operationId); | ||
*/ | ||
${functionName}(req: ${requestBodyTypeName}): Promise<${responseTypeName}> { | ||
${functionName}(req: ${requestBodyTypeName}): Promise<${responseTypeName}> { | ||
return driver.onQueried("${queryName}", req) | ||
@@ -75,5 +87,35 @@ }, | ||
const subscriptions = Object.entries(schema.subscriptions ?? {}).map( | ||
([subscriptionName, { operationId, description }]) => { | ||
const functionName = camelCase(operationId); | ||
const requestBodyTypeName = | ||
schemaRootTypeName + | ||
`["` + | ||
pascalCase(subscriptionName + " RequestBody") + | ||
`"]`; | ||
const responseTypeName = | ||
schemaRootTypeName + | ||
`["` + | ||
pascalCase(subscriptionName + " Response") + | ||
`"]`; | ||
return dedent` | ||
/** | ||
* ${description} | ||
*/ | ||
${functionName}(req: ${requestBodyTypeName}, listener: (res: ${responseTypeName}) => void): void { | ||
return driver.onSubscribed("${subscriptionName}", req, listener) | ||
}, | ||
`; | ||
}, | ||
{} as any | ||
); | ||
const sdk = pipe( | ||
replaceAll("Scaffolded", pascalCase(schema.appName)), | ||
replaceAll(" /* operations */", operations.join(`\n`)) | ||
replaceAll( | ||
" /* operations */", | ||
[...queries, ...subscriptions].join(`\n`) | ||
) | ||
)( | ||
@@ -80,0 +122,0 @@ await fs.readFile( |
10839
251
+ Added@metabridge/plugin-base@0.2.0(transitive)
+ Added@metabridge/schema@0.2.0(transitive)
- Removed@metabridge/plugin-base@0.1.1(transitive)
- Removed@metabridge/schema@0.1.1(transitive)