@compas/code-gen
Advanced tools
Comparing version 0.12.4 to 0.13.0
{ | ||
"name": "@compas/code-gen", | ||
"version": "0.12.4", | ||
"version": "0.13.0", | ||
"description": "Generate various boring parts of your server", | ||
@@ -24,3 +24,3 @@ "exports": { | ||
"dependencies": { | ||
"@compas/stdlib": "0.12.4" | ||
"@compas/stdlib": "0.13.0" | ||
}, | ||
@@ -27,0 +27,0 @@ "author": { |
@@ -7,1 +7,5 @@ /** | ||
export function openApiGenerate(generateContext: import("../generate.js").GenerateContext): void; | ||
/** | ||
* @param {import("../generate.js").GenerateContext} generateContext | ||
*/ | ||
export function openApiBuildFile(generateContext: import("../generate.js").GenerateContext): any; |
@@ -34,3 +34,3 @@ import { readFileSync } from "node:fs"; | ||
*/ | ||
function openApiBuildFile(generateContext) { | ||
export function openApiBuildFile(generateContext) { | ||
const openApiSpec = merge( | ||
@@ -37,0 +37,0 @@ { |
@@ -14,1 +14,8 @@ /** | ||
export function routeStructureGet(generateContext: import("../generate.js").GenerateContext): string; | ||
/** | ||
* Get the saved route structure in OpenApi format | ||
* | ||
* @param {import("../generate.js").GenerateContext} generateContext | ||
* @returns {string} | ||
*/ | ||
export function routeStructureGetOpenApi(generateContext: import("../generate.js").GenerateContext): string; |
@@ -1,3 +0,10 @@ | ||
import { AnyType, RouteBuilder } from "../builders/index.js"; | ||
import { | ||
AnyType, | ||
ObjectType, | ||
ReferenceType, | ||
RouteBuilder, | ||
StringType, | ||
} from "../builders/index.js"; | ||
import { Generator } from "../generator.js"; | ||
import { openApiBuildFile } from "../open-api/generator.js"; | ||
import { structureRoutes } from "./routes.js"; | ||
@@ -12,2 +19,8 @@ import { structureAddType, structureNamedTypes } from "./structure.js"; | ||
const routeStructureCache = new WeakMap(); | ||
/** | ||
* Cache the openapi structure string based on the current generate context. | ||
* | ||
* @type {WeakMap<object, string>} | ||
*/ | ||
const openApiStructureCache = new WeakMap(); | ||
@@ -59,6 +72,37 @@ /** | ||
); | ||
openApiStructureCache.set( | ||
generateContext, | ||
JSON.stringify( | ||
openApiBuildFile({ | ||
structure: routesOnlyGenerator.internalStructure, | ||
log: generateContext.log, | ||
files: new Map(), | ||
options: { | ||
targetLanguage: "js", | ||
generators: { | ||
openApi: { | ||
openApiExtensions: {}, | ||
openApiRouteExtensions: {}, | ||
}, | ||
}, | ||
}, | ||
}), | ||
).replace(/([`\\])/gm, (v) => `\\${v}`), | ||
); | ||
structureAddType( | ||
generateContext.structure, | ||
new ObjectType("compas", "structureQuery") | ||
.keys({ | ||
format: new StringType().oneOf("compas", "openapi").default(`"compas"`), | ||
}) | ||
.build(), | ||
{ | ||
skipReferenceExtraction: false, | ||
}, | ||
); | ||
structureAddType( | ||
generateContext.structure, | ||
new RouteBuilder("GET", "compas", "structure", "_compas/structure.json") | ||
.query(new ReferenceType("compas", "structureQuery")) | ||
.response(new AnyType()) | ||
@@ -83,1 +127,11 @@ .tags("_compas") | ||
} | ||
/** | ||
* Get the saved route structure in OpenApi format | ||
* | ||
* @param {import("../generate.js").GenerateContext} generateContext | ||
* @returns {string} | ||
*/ | ||
export function routeStructureGetOpenApi(generateContext) { | ||
return openApiStructureCache.get(generateContext) ?? ""; | ||
} |
@@ -11,3 +11,6 @@ import { AnyType } from "../builders/index.js"; | ||
import { fileWrite } from "../file/write.js"; | ||
import { routeStructureGet } from "../processors/route-structure.js"; | ||
import { | ||
routeStructureGet, | ||
routeStructureGetOpenApi, | ||
} from "../processors/route-structure.js"; | ||
import { JavascriptImportCollector } from "../target/javascript.js"; | ||
@@ -437,3 +440,7 @@ import { typesCacheGet } from "../types/cache.js"; | ||
if (ctx.validatedQuery.format === "compas") { | ||
ctx.body = \`${routeStructureGet(generateContext)}\`; | ||
} else if (ctx.validatedQuery.format === "openapi") { | ||
ctx.body = \`${routeStructureGetOpenApi(generateContext)}\`; | ||
} | ||
}; | ||
@@ -440,0 +447,0 @@ `, |
1395633
41792
+ Added@compas/stdlib@0.13.0(transitive)
+ Added@types/node@22.5.0(transitive)
+ Addedundici-types@6.19.8(transitive)
- Removed@compas/stdlib@0.12.4(transitive)
- Removed@types/node@20.14.12(transitive)
- Removedundici-types@5.26.5(transitive)
Updated@compas/stdlib@0.13.0