1.0.4 • Published 29 days ago

@duplojs/swagger v1.0.4

Weekly downloads
-
License
ISC
Repository
github
Last release
29 days ago

duplojs-swagger

NPM version

Instalation

npm i @duplojs/swagger

Implémentation

import Duplo, {zod} from "@duplojs/duplojs";
import duploSwagger, {SwaggerDescription, SwaggerResponses, SwaggerTag, SwaggerIgnoreInheritDescriptor} from "@duplojs/swagger";

const duplo = Duplo({port: 1506, host: "0.0.0.0"});
duplo.use(duploSwagger, {
    swaggerSpec: {
        tags: [
            {name: "user", description: "Route to iteract with user."}
        ],
    },
});

const isOdd = duplo
.createChecker(
    "isOdd", 
    new SwaggerDescription("verif if input is odd")
)
.handler((input: number, output, options) => {
    if(input % 2 == 1) return output("odd", input);
    else return output("notOdd", input);
})
.build();

duplo.declareRoute("GET", "/user/{id}")
.extract({
    params: {
        id: zod.enum(["1", "2"]),
    }
})
.check(
    isOdd,
    {
        input: (pickup) => Number(pickup("id")),
        catch: (res, info) => res.code(400).info(info).send(),
    },
    new SwaggerIgnoreInheritDescriptor(),
    new SwaggerDescription("add checker isOdd"),
    new SwaggerResponses({code: 400, description: "Id is not odd."}),
)
.handler(
    ({pickup}, res) => {
        res.code(200).send();
    },
    new SwaggerTag("user"),
    new SwaggerDescription("Get user by name"),
    new SwaggerResponses({code: 200, description: "All is good."}),
);

duplo.launch();

Implémentation globales

duplo.use(duploSwagger, {
    ...
    globals: true
});

tsconfig.json

{
  "compilerOptions": {
    ...
    "types": [
		"@duplojs/swagger/globals"
	],
  }
}

Génération open-api json

(node | tsx | ts-node) index.ts --swagger [--only-generate]