adding monkeytype
Some checks failed
Mark Stale PRs / stale (push) Has been cancelled

This commit is contained in:
Benjamin Falch
2026-04-23 13:53:44 +02:00
parent e214a2fd35
commit 2bc741fb78
1930 changed files with 7590652 additions and 0 deletions

View File

@@ -0,0 +1,79 @@
import { initContract } from "@ts-rest/core";
import { z } from "zod";
import {
CommonResponses,
meta,
MonkeyResponseSchema,
responseWithData,
} from "./util/api";
import { IdSchema } from "@monkeytype/schemas/util";
export const GenerateDataRequestSchema = z.object({
username: z.string(),
createUser: z
.boolean()
.optional()
.describe(
"If `true` create user with <username>@example.com and password `password`. If false user has to exist.",
),
firstTestTimestamp: z.number().int().nonnegative().optional(),
lastTestTimestamp: z.number().int().nonnegative().optional(),
minTestsPerDay: z.number().int().nonnegative().optional(),
maxTestsPerDay: z.number().int().nonnegative().optional(),
});
export type GenerateDataRequest = z.infer<typeof GenerateDataRequestSchema>;
export const GenerateDataResponseSchema = responseWithData(
z.object({
uid: IdSchema,
email: z.string().email(),
}),
);
export type GenerateDataResponse = z.infer<typeof GenerateDataResponseSchema>;
export const AddDebugInboxItemRequestSchema = z.object({
rewardType: z.enum(["xp", "badge", "none"]),
});
export type AddDebugInboxItemRequest = z.infer<
typeof AddDebugInboxItemRequestSchema
>;
const c = initContract();
export const devContract = c.router(
{
generateData: {
summary: "generate data",
description: "Generate test results for the given user.",
method: "POST",
path: "/generateData",
body: GenerateDataRequestSchema.strict(),
responses: {
200: GenerateDataResponseSchema,
},
},
addDebugInboxItem: {
summary: "add debug inbox item",
description: "Add a debug inbox item with optional reward.",
method: "POST",
path: "/addDebugInboxItem",
body: AddDebugInboxItemRequestSchema.strict(),
responses: {
200: MonkeyResponseSchema,
},
metadata: meta({
openApiTags: "development",
}),
},
},
{
pathPrefix: "/dev",
strictStatusCodes: true,
metadata: meta({
openApiTags: "development",
authenticationOptions: {
isPublicOnDev: true,
},
}),
commonResponses: CommonResponses,
},
);