Skip to content

Commit dfcdcf6

Browse files
authored
Merge pull request #22 from mojisdev/json-schemas
feat: add initial data schemas endpoint
2 parents 51266e1 + d9973ff commit dfcdcf6

File tree

5 files changed

+34
-2
lines changed

5 files changed

+34
-2
lines changed

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
"dependencies": {
2222
"@hono/zod-openapi": "^0.19.2",
2323
"@mojis/internal-utils": "^0.0.6",
24+
"@mojis/json-schemas": "^0.0.2",
2425
"@scalar/hono-api-reference": "^0.7.2",
2526
"hono": "^4.7.5",
2627
"zod": "^3.24.2"

pnpm-lock.yaml

+8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

scripts/build-openapi.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ import { existsSync } from "node:fs";
22
import { mkdir, writeFile } from "node:fs/promises";
33
import path from "node:path";
44
import process from "node:process";
5-
import app from "../src";
5+
import { getOpenAPIDocument } from "../src";
66
import { buildOpenApiConfig } from "../src/openapi";
77

88
const root = path.resolve(import.meta.dirname, "../");
99

1010
async function run() {
11-
const obj = app.getOpenAPIDocument(buildOpenApiConfig("x.y.z", [
11+
const obj = getOpenAPIDocument(buildOpenApiConfig("x.y.z", [
1212
{
1313
url: "https://api.mojis.dev",
1414
description: "Production Environment",

src/index.ts

+8
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { apiReference } from "@scalar/hono-api-reference";
55
import { env } from "hono/adapter";
66
import { HTTPException } from "hono/http-exception";
77
import { buildOpenApiConfig } from "./openapi";
8+
import { DATA_SCHEMAS_ROUTER } from "./routes/data-schemas";
89
import { GATEWAY_GITHUB_ROUTER } from "./routes/gateway_github";
910
import { RANDOM_EMOJI_ROUTER } from "./routes/random-emoji";
1011
import { V1_CATEGORIES_ROUTER } from "./routes/v1_categories";
@@ -15,6 +16,7 @@ const app = new OpenAPIHono<HonoEnv>();
1516
app.route("/", V1_VERSIONS_ROUTER);
1617
app.route("/", V1_CATEGORIES_ROUTER);
1718
app.route("/", GATEWAY_GITHUB_ROUTER);
19+
app.route("/", DATA_SCHEMAS_ROUTER);
1820
app.route("/", RANDOM_EMOJI_ROUTER);
1921

2022
app.get(
@@ -102,6 +104,12 @@ app.notFound(async (c) => {
102104
} satisfies ApiError, 404);
103105
});
104106

107+
const getOpenAPIDocument = app.getOpenAPIDocument;
108+
109+
export {
110+
getOpenAPIDocument,
111+
};
112+
105113
export default {
106114
fetch: app.fetch,
107115
scheduled: async (_, env) => {

src/routes/data-schemas.ts

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import type { HonoEnv } from "../types";
2+
import groupsSchema from "@mojis/json-schemas/groups.json";
3+
import { Hono } from "hono";
4+
import { cache } from "../middlewares/cache";
5+
6+
export const DATA_SCHEMAS_ROUTER = new Hono<HonoEnv>().basePath("/data-schemas");
7+
8+
DATA_SCHEMAS_ROUTER.get("*", cache({
9+
cacheName: "data-schemas",
10+
cacheControl: "max-age=3600, immutable",
11+
}));
12+
13+
DATA_SCHEMAS_ROUTER.get("/groups.json", (c) => {
14+
return c.json(groupsSchema);
15+
});

0 commit comments

Comments
 (0)