@compas/code-gen
v0.20.1
Published
Generate various boring parts of your server
Maintainers
Readme
@compas/code-gen
Code generators for routers, validators, SQL queries, API clients and more. Take a look at the documentation.
Maintenance mode
Compas is in maintenance mode. The packages will be maintained for the foreseeable future. New features might be added, but some will also be dropped in favor of other ecosystem-available libraries. Please don't start new projects using Compas.
As a server
mainFn(import.meta, main);
async function main() {
const app = new App();
const T = new TypeCreator("post");
const R = T.router("/post");
app.add(
new TypeCreator("database")
.object("post")
.keys({
title: T.string().searchable(),
body: T.string(),
})
.enableQueries({ withDates: true }),
T.crud("/post").entity(T.reference("database", "post")).routes({
listRoute: true,
singleRoute: true,
createRoute: true,
updateRoute: true,
deleteRoute: true,
}),
);
await app.generate({
outputDirectory: "./src/generated/application",
dumpStructure: true,
dumpApiStructure: true,
dumpPostgres: true,
enabledGenerators: ["validator", "router", "sql", "apiClient"],
});
}As a client
mainFn(import.meta, main);
async function main() {
const app = new App({ verbose: true });
const fromRemote = await loadApiStructureFromRemote(
Axios,
"https://some.compas.powered.backend",
);
app.extend(fromRemote);
await app.generate({
outputDirectory: "./src/generated",
isBrowser: true,
enabledGenerators: ["type", "apiClient", "reactQuery"],
});
await spawn("yarn", ["format"]);
}