Skip to content

Commit

Permalink
fix(code-gen): more fixes for backend TypeScript targets
Browse files Browse the repository at this point in the history
  • Loading branch information
dirkdev98 committed Nov 14, 2024
1 parent de3d2f3 commit 2a45b24
Show file tree
Hide file tree
Showing 12 changed files with 87 additions and 45 deletions.
2 changes: 2 additions & 0 deletions packages/cli/src/generated/common/types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,3 +95,5 @@ export type CliCompletion =
"specification": "boolean"|"number"|"string"|"booleanOrString";
"description"?: string|undefined;
};


8 changes: 1 addition & 7 deletions packages/code-gen/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,7 @@
"./package.json": "./package.json"
},
"type": "module",
"keywords": [
"compas",
"generate",
"router",
"validation",
"code-gen"
],
"keywords": ["compas", "generate", "router", "validation", "code-gen"],
"license": "MIT",
"dependencies": {
"@compas/stdlib": "0.15.4"
Expand Down
59 changes: 59 additions & 0 deletions packages/code-gen/src/api-client/ts-axios.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@ export function tsAxiosGenerateCommonFile(generateContext) {
{
importCollector: new JavascriptImportCollector(),
typeImportCollector: new JavascriptImportCollector(true),
contents:
generateContext.options.generators.router ?
`// @ts-nocheck\n\n`
: undefined,
},
);

Expand Down Expand Up @@ -73,6 +77,61 @@ export function tsAxiosGenerateCommonFile(generateContext) {
}>;
`,
);

if (generateContext.options.generators.router) {
importCollector.destructure("@compas/stdlib", "AppError");
importCollector.destructure("@compas/stdlib", "streamToBuffer");

fileWrite(
file,
`/**
* Adds an interceptor to the provided Axios instance, wrapping any error in an AppError.
* This allows directly testing against an error key or property.
*/
export function axiosInterceptErrorAndWrapWithAppError(axiosInstance: AxiosInstance) {
axiosInstance.interceptors.response.use(undefined, async (error) => {
// Validator error
if (AppError.instanceOf(error)) {
// If it is an AppError already, it most likely is thrown by the response
// validators. So we rethrow it as is.
throw error;
}
if (typeof error?.response?.data?.pipe === "function") {
const buffer = await streamToBuffer(error.response.data);
try {
error.response.data = JSON.parse(buffer.toString("utf-8"));
} catch {
// Unknown error
throw new AppError(
\`response.error\`,
error.response?.status ?? 500,
{
message:
"Could not decode the response body for further information.",
},
error,
);
}
}
// Server AppError
const { key, info } = error.response?.data ?? {};
if (typeof key === "string" && !!info && typeof info === "object") {
throw new AppError(key, error.response.status, info, error);
}
// Unknown error
throw new AppError(
\`response.error\`,
error.response?.status ?? 500,
AppError.format(error),
);
});
}
`,
);
}
}

/**
Expand Down
15 changes: 8 additions & 7 deletions packages/code-gen/src/crud/events.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,6 @@ import {
* @param {import("../generate.js").GenerateContext} generateContext
*/
export function crudEventsGenerate(generateContext) {
if (generateContext.options.targetLanguage !== "js") {
return;
}

if (isNil(generateContext.options.generators.router?.target?.library)) {
return;
}
Expand Down Expand Up @@ -96,9 +92,14 @@ function crudEventsGenerateForType(generateContext, file, crud) {
* @param {import("../../types/advanced-types.d.ts").NamedType<import("../generated/common/types.d.ts").StructureCrudDefinition>} crud
*/
function crudEventsFile(generateContext, crud) {
return fileContextCreateGeneric(generateContext, `${crud.group}/events.js`, {
importCollector: new JavascriptImportCollector(),
});
return fileContextCreateGeneric(
generateContext,
`${crud.group}/events.${generateContext.options.targetLanguage}`,
{
importCollector: new JavascriptImportCollector(),
contents: "// @ts-nocheck\n\n",
},
);
}

/**
Expand Down
15 changes: 8 additions & 7 deletions packages/code-gen/src/crud/handlers.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,6 @@ import { crudQueryBuilderGet } from "./query-builder.js";
* @param {import("../generate.js").GenerateContext} generateContext
*/
export function crudHandlersGenerate(generateContext) {
if (generateContext.options.targetLanguage !== "js") {
return;
}

if (isNil(generateContext.options.generators.router?.target?.library)) {
return;
}
Expand All @@ -60,9 +56,14 @@ export function crudHandlersGenerate(generateContext) {
* @param {import("../../types/advanced-types.d.ts").NamedType<import("../generated/common/types.d.ts").StructureCrudDefinition>} crud
*/
function crudHandlersFile(generateContext, crud) {
return fileContextCreateGeneric(generateContext, `${crud.group}/crud.js`, {
importCollector: new JavascriptImportCollector(),
});
return fileContextCreateGeneric(
generateContext,
`${crud.group}/crud.${generateContext.options.targetLanguage}`,
{
importCollector: new JavascriptImportCollector(),
contents: "// @ts-nocheck\n\n",
},
);
}

/**
Expand Down
2 changes: 1 addition & 1 deletion packages/code-gen/src/database/ts-postgres.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ export function tsPostgresGenerateUtils(generateContext) {

const indexFile = fileContextCreateGeneric(
generateContext,
"common/database.js",
"common/database.ts",
{
importCollector: new JavascriptImportCollector(),
typeImportCollector: new JavascriptImportCollector(true),
Expand Down
2 changes: 2 additions & 0 deletions packages/code-gen/src/generated/common/types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1389,3 +1389,5 @@ export type StructureTypeDefinitionInput =
|StructureReferenceDefinitionInput
|StructureRelationDefinitionInput
|StructureRouteInvalidationDefinitionInput;


5 changes: 1 addition & 4 deletions packages/create-compas/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,7 @@
"bin": {
"create-compas": "src/create-compas.js"
},
"keywords": [
"compas",
"create"
],
"keywords": ["compas", "create"],
"license": "MIT",
"dependencies": {
"@compas/stdlib": "0.15.4",
Expand Down
8 changes: 1 addition & 7 deletions packages/server/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,7 @@
"./package.json": "./package.json"
},
"type": "module",
"keywords": [
"compas",
"koa",
"api",
"http",
"backend"
],
"keywords": ["compas", "koa", "api", "http", "backend"],
"license": "MIT",
"dependencies": {
"@compas/stdlib": "0.15.4",
Expand Down
7 changes: 1 addition & 6 deletions packages/stdlib/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,7 @@
"./package.json": "./package.json"
},
"type": "module",
"keywords": [
"compas",
"stdlib",
"standard",
"logger"
],
"keywords": ["compas", "stdlib", "standard", "logger"],
"license": "MIT",
"dependencies": {
"@types/node": "22.9.0",
Expand Down
7 changes: 1 addition & 6 deletions packages/store/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,7 @@
"./package.json": "./package.json"
},
"type": "module",
"keywords": [
"compas",
"s3",
"postgres",
"persistence"
],
"keywords": ["compas", "s3", "postgres", "persistence"],
"license": "MIT",
"dependencies": {
"@aws-sdk/client-s3": "3.689.0",
Expand Down
2 changes: 2 additions & 0 deletions packages/store/src/generated/common/types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2505,3 +2505,5 @@ export type QueryExpansionStoreSessionStoreToken = {
"session": QueryDefinitionStoreSessionStore;
"accessToken"?: QueryDefinitionStoreSessionStoreToken|undefined;
};


0 comments on commit 2a45b24

Please sign in to comment.