From 4c7571bcfe8b1df45edd4e3d2eea10675dc72f72 Mon Sep 17 00:00:00 2001 From: Artemy Date: Wed, 16 Aug 2023 10:36:04 +0300 Subject: [PATCH] feat: swagger --- package-lock.json | 42 ++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + src/app.ts | 13 +++++++++++++ 3 files changed, 56 insertions(+) diff --git a/package-lock.json b/package-lock.json index 63b556d..881f324 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "MIT", "dependencies": { "@fastify/static": "^6.10.2", + "@fastify/swagger": "^8.8.0", "@fastify/view": "^8.0.0", "@mozilla/readability": "^0.4.4", "axios": "^1.4.0", @@ -211,6 +212,18 @@ "node": ">=10" } }, + "node_modules/@fastify/swagger": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@fastify/swagger/-/swagger-8.8.0.tgz", + "integrity": "sha512-tYI2lbItb4yg9FhQj+leK6DdIBICLbXkSR2vZjo117ygHyYQLxw2v0ere/d2PtDmYAx7SOJzxvg3w6y0Sxc3iw==", + "dependencies": { + "fastify-plugin": "^4.0.0", + "json-schema-resolver": "^2.0.0", + "openapi-types": "^12.0.0", + "rfdc": "^1.3.0", + "yaml": "^2.2.2" + } + }, "node_modules/@fastify/view": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@fastify/view/-/view-8.0.0.tgz", @@ -2091,6 +2104,22 @@ } } }, + "node_modules/json-schema-resolver": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/json-schema-resolver/-/json-schema-resolver-2.0.0.tgz", + "integrity": "sha512-pJ4XLQP4Q9HTxl6RVDLJ8Cyh1uitSs0CzDBAz1uoJ4sRD/Bk7cFSXL1FUXDW3zJ7YnfliJx6eu8Jn283bpZ4Yg==", + "dependencies": { + "debug": "^4.1.1", + "rfdc": "^1.1.4", + "uri-js": "^4.2.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/Eomm/json-schema-resolver?sponsor=1" + } + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "dev": true, @@ -2304,6 +2333,11 @@ "wrappy": "1" } }, + "node_modules/openapi-types": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", + "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==" + }, "node_modules/optionator": { "version": "0.9.3", "dev": true, @@ -3285,6 +3319,14 @@ "version": "4.0.0", "license": "ISC" }, + "node_modules/yaml": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", + "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", + "engines": { + "node": ">= 14" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "license": "MIT", diff --git a/package.json b/package.json index 8a4739c..2e08dc9 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "main": "dist/app.js", "dependencies": { "@fastify/static": "^6.10.2", + "@fastify/swagger": "^8.8.0", "@fastify/view": "^8.0.0", "@mozilla/readability": "^0.4.4", "axios": "^1.4.0", diff --git a/src/app.ts b/src/app.ts index 7fad46b..e874661 100644 --- a/src/app.ts +++ b/src/app.ts @@ -6,6 +6,7 @@ import path from "path"; import Fastify from "fastify"; import fastifyStatic from "@fastify/static"; import fastifyView from "@fastify/view"; +import fastifySwagger from "@fastify/swagger"; import ejs from "ejs"; import getRoute from "./routes/get"; @@ -36,6 +37,18 @@ class App { }, }); + await fastify.register(fastifySwagger, { + swagger: { + info: { + title: "Dottxt", + version: "1.0.0", + }, + externalDocs: { + url: "https://github.com/dottxt/dottxt", + }, + }, + }); + fastify.register(indexRoute); fastify.register(getRoute); fastify.register(parseRoute);