From 15f65a940f13c213f16b2821a09f9195d603dcae Mon Sep 17 00:00:00 2001 From: Andreas Thomas Date: Wed, 18 Dec 2024 16:35:56 +0100 Subject: [PATCH] chore: clean up unused apps (#2765) --- apps/planetfall/.gitignore | 36 - apps/planetfall/CHANGELOG.md | 153 --- apps/planetfall/README.md | 36 - apps/planetfall/app/api/check/arn/route.ts | 4 - apps/planetfall/app/api/check/bom/route.ts | 4 - apps/planetfall/app/api/check/cdg/route.ts | 4 - apps/planetfall/app/api/check/check.ts | 41 - apps/planetfall/app/api/check/cle/route.ts | 4 - apps/planetfall/app/api/check/cpt/route.ts | 4 - apps/planetfall/app/api/check/dub/route.ts | 4 - apps/planetfall/app/api/check/fra/route.ts | 4 - apps/planetfall/app/api/check/gru/route.ts | 4 - apps/planetfall/app/api/check/hkg/route.ts | 4 - apps/planetfall/app/api/check/hnd/route.ts | 4 - apps/planetfall/app/api/check/iad/route.ts | 4 - apps/planetfall/app/api/check/icn/route.ts | 4 - apps/planetfall/app/api/check/kix/route.ts | 4 - apps/planetfall/app/api/check/lhr/route.ts | 4 - apps/planetfall/app/api/check/pdx/route.ts | 4 - apps/planetfall/app/api/check/sfo/route.ts | 4 - apps/planetfall/app/api/check/sin/route.ts | 4 - apps/planetfall/app/api/check/syd/route.ts | 4 - apps/planetfall/app/favicon.ico | Bin 25931 -> 0 bytes apps/planetfall/app/globals.css | 33 - apps/planetfall/app/layout.tsx | 24 - apps/planetfall/app/lib/schema.ts | 18 - apps/planetfall/app/page.tsx | 113 -- apps/planetfall/next.config.mjs | 4 - apps/planetfall/package.json | 27 - apps/planetfall/postcss.config.js | 6 - apps/planetfall/public/next.svg | 1 - apps/planetfall/public/vercel.svg | 1 - apps/planetfall/tailwind.config.ts | 19 - apps/planetfall/tsconfig.json | 26 - packages/api/package.json | 11 +- packages/api/src/openapi.d.ts | 1139 ++++++++++---------- packages/hono/package.json | 11 +- packages/nextjs/package.json | 11 +- packages/ratelimit/package.json | 12 +- pnpm-lock.yaml | 40 - 40 files changed, 590 insertions(+), 1244 deletions(-) delete mode 100644 apps/planetfall/.gitignore delete mode 100644 apps/planetfall/CHANGELOG.md delete mode 100644 apps/planetfall/README.md delete mode 100644 apps/planetfall/app/api/check/arn/route.ts delete mode 100644 apps/planetfall/app/api/check/bom/route.ts delete mode 100644 apps/planetfall/app/api/check/cdg/route.ts delete mode 100644 apps/planetfall/app/api/check/check.ts delete mode 100644 apps/planetfall/app/api/check/cle/route.ts delete mode 100644 apps/planetfall/app/api/check/cpt/route.ts delete mode 100644 apps/planetfall/app/api/check/dub/route.ts delete mode 100644 apps/planetfall/app/api/check/fra/route.ts delete mode 100644 apps/planetfall/app/api/check/gru/route.ts delete mode 100644 apps/planetfall/app/api/check/hkg/route.ts delete mode 100644 apps/planetfall/app/api/check/hnd/route.ts delete mode 100644 apps/planetfall/app/api/check/iad/route.ts delete mode 100644 apps/planetfall/app/api/check/icn/route.ts delete mode 100644 apps/planetfall/app/api/check/kix/route.ts delete mode 100644 apps/planetfall/app/api/check/lhr/route.ts delete mode 100644 apps/planetfall/app/api/check/pdx/route.ts delete mode 100644 apps/planetfall/app/api/check/sfo/route.ts delete mode 100644 apps/planetfall/app/api/check/sin/route.ts delete mode 100644 apps/planetfall/app/api/check/syd/route.ts delete mode 100644 apps/planetfall/app/favicon.ico delete mode 100644 apps/planetfall/app/globals.css delete mode 100644 apps/planetfall/app/layout.tsx delete mode 100644 apps/planetfall/app/lib/schema.ts delete mode 100644 apps/planetfall/app/page.tsx delete mode 100644 apps/planetfall/next.config.mjs delete mode 100644 apps/planetfall/package.json delete mode 100644 apps/planetfall/postcss.config.js delete mode 100644 apps/planetfall/public/next.svg delete mode 100644 apps/planetfall/public/vercel.svg delete mode 100644 apps/planetfall/tailwind.config.ts delete mode 100644 apps/planetfall/tsconfig.json diff --git a/apps/planetfall/.gitignore b/apps/planetfall/.gitignore deleted file mode 100644 index fd3dbb571a..0000000000 --- a/apps/planetfall/.gitignore +++ /dev/null @@ -1,36 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js -.yarn/install-state.gz - -# testing -/coverage - -# next.js -/.next/ -/out/ - -# production -/build - -# misc -.DS_Store -*.pem - -# debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# local env files -.env*.local - -# vercel -.vercel - -# typescript -*.tsbuildinfo -next-env.d.ts diff --git a/apps/planetfall/CHANGELOG.md b/apps/planetfall/CHANGELOG.md deleted file mode 100644 index 0c9c79b0b6..0000000000 --- a/apps/planetfall/CHANGELOG.md +++ /dev/null @@ -1,153 +0,0 @@ -# planetfall - -## 0.1.22 - -### Patch Changes - -- Updated dependencies [3f8d078] - - @unkey/api@0.29.0 - -## 0.1.21 - -### Patch Changes - -- Updated dependencies [25fd102] - - @unkey/api@0.28.0 - -## 0.1.20 - -### Patch Changes - -- Updated dependencies [852d1a1] - - @unkey/api@0.27.0 - -## 0.1.19 - -### Patch Changes - -- Updated dependencies [82f5b5d] - - @unkey/api@0.26.2 - -## 0.1.18 - -### Patch Changes - -- Updated dependencies [2aada7d] - - @unkey/api@0.26.1 - -## 0.1.17 - -### Patch Changes - -- Updated dependencies [bb6d04e] - - @unkey/api@0.26.0 - -## 0.1.16 - -### Patch Changes - -- Updated dependencies [a532369] - - @unkey/api@0.25.0 - -## 0.1.15 - -### Patch Changes - -- Updated dependencies [bdad4b6] - - @unkey/api@0.24.0 - -## 0.1.14 - -### Patch Changes - -- Updated dependencies [e3231e3] - - @unkey/api@0.23.0 - -## 0.1.13 - -### Patch Changes - -- @unkey/api@0.22.1 - -## 0.1.12 - -### Patch Changes - -- Updated dependencies [53a1df1] - - @unkey/api@0.22.0 - -## 0.1.11 - -### Patch Changes - -- Updated dependencies [9dab761] - - @unkey/api@0.21.0 - -## 0.1.10 - -### Patch Changes - -- Updated dependencies [69c88fa] - - @unkey/api@0.20.7 - -## 0.1.9 - -### Patch Changes - -- Updated dependencies [56ad960] - - @unkey/api@0.20.6 - -## 0.1.8 - -### Patch Changes - -- Updated dependencies [e4961c7] - - @unkey/api@0.20.5 - -## 0.1.7 - -### Patch Changes - -- Updated dependencies [3ddb1f1] - - @unkey/api@0.20.4 - -## 0.1.6 - -### Patch Changes - -- Updated dependencies [fc2b651] - - @unkey/api@0.20.3 - -## 0.1.5 - -### Patch Changes - -- Updated dependencies [c14b285] - - @unkey/api@0.20.2 - -## 0.1.4 - -### Patch Changes - -- @unkey/api@0.20.1 - -## 0.1.3 - -### Patch Changes - -- Updated dependencies [94d721d] - - @unkey/api@0.20.0 - -## 0.1.2 - -### Patch Changes - -- Updated dependencies [a4001eb] - - @unkey/api@0.19.5 - -## 0.1.1 - -### Patch Changes - -- Updated dependencies [7043c1c] - - @unkey/api@0.19.4 diff --git a/apps/planetfall/README.md b/apps/planetfall/README.md deleted file mode 100644 index c4033664f8..0000000000 --- a/apps/planetfall/README.md +++ /dev/null @@ -1,36 +0,0 @@ -This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). - -## Getting Started - -First, run the development server: - -```bash -npm run dev -# or -yarn dev -# or -pnpm dev -# or -bun dev -``` - -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. - -You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. - -This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. - -## Learn More - -To learn more about Next.js, take a look at the following resources: - -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. - -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! - -## Deploy on Vercel - -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. - -Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. diff --git a/apps/planetfall/app/api/check/arn/route.ts b/apps/planetfall/app/api/check/arn/route.ts deleted file mode 100644 index a5f67ce9c7..0000000000 --- a/apps/planetfall/app/api/check/arn/route.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const preferredRegion = ["arn1"]; -export const fetchCache = "force-no-store"; -export const maxDuration = 300; -export { POST } from "../check"; diff --git a/apps/planetfall/app/api/check/bom/route.ts b/apps/planetfall/app/api/check/bom/route.ts deleted file mode 100644 index fdd5758971..0000000000 --- a/apps/planetfall/app/api/check/bom/route.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const preferredRegion = ["bom1"]; -export const fetchCache = "force-no-store"; -export const maxDuration = 300; -export { POST } from "../check"; diff --git a/apps/planetfall/app/api/check/cdg/route.ts b/apps/planetfall/app/api/check/cdg/route.ts deleted file mode 100644 index ee5d3e4d14..0000000000 --- a/apps/planetfall/app/api/check/cdg/route.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const preferredRegion = ["cdg1"]; -export const fetchCache = "force-no-store"; -export const maxDuration = 300; -export { POST } from "../check"; diff --git a/apps/planetfall/app/api/check/check.ts b/apps/planetfall/app/api/check/check.ts deleted file mode 100644 index bdb669683f..0000000000 --- a/apps/planetfall/app/api/check/check.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { checkRequestSchema, type checkResponseSchema } from "@/app/lib/schema"; -import { verifyKey } from "@unkey/api"; -import type { z } from "zod"; -export async function POST(request: Request) { - const key = request.headers.get("Authorization")?.replace("Bearer ", ""); - if (!key) { - return new Response("unauthorized", { status: 401 }); - } - - const { result, error } = await verifyKey({ - apiId: process.env.UNKEY_API_ID!, - key, - }); - if (error) { - return new Response(error.message, { status: 500 }); - } - if (!result.valid) { - return new Response("unauthorized", { status: 403 }); - } - - const req = checkRequestSchema.safeParse(await request.json()); - if (!req.success) { - return new Response(req.error.message, { status: 400 }); - } - - const checks: z.infer["checks"] = []; - for (let i = 0; i < req.data.n; i++) { - const time = Date.now(); - const res = await fetch(req.data.url, { - method: req.data.method, - headers: req.data.headers, - body: req.data.body, - }).catch((err) => { - console.error(err); - return { status: -1 }; - }); - - checks.push({ status: res.status, latency: Date.now() - time }); - } - return Response.json({ checks }); -} diff --git a/apps/planetfall/app/api/check/cle/route.ts b/apps/planetfall/app/api/check/cle/route.ts deleted file mode 100644 index 8c9123e47f..0000000000 --- a/apps/planetfall/app/api/check/cle/route.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const preferredRegion = ["cle1"]; -export const fetchCache = "force-no-store"; -export const maxDuration = 300; -export { POST } from "../check"; diff --git a/apps/planetfall/app/api/check/cpt/route.ts b/apps/planetfall/app/api/check/cpt/route.ts deleted file mode 100644 index 5a31a15fd7..0000000000 --- a/apps/planetfall/app/api/check/cpt/route.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const preferredRegion = ["cpt1"]; -export const fetchCache = "force-no-store"; -export const maxDuration = 300; -export { POST } from "../check"; diff --git a/apps/planetfall/app/api/check/dub/route.ts b/apps/planetfall/app/api/check/dub/route.ts deleted file mode 100644 index 614bc6c05b..0000000000 --- a/apps/planetfall/app/api/check/dub/route.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const preferredRegion = ["dub1"]; -export const fetchCache = "force-no-store"; -export const maxDuration = 300; -export { POST } from "../check"; diff --git a/apps/planetfall/app/api/check/fra/route.ts b/apps/planetfall/app/api/check/fra/route.ts deleted file mode 100644 index 0af2ed411b..0000000000 --- a/apps/planetfall/app/api/check/fra/route.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const preferredRegion = ["fra1"]; -export const fetchCache = "force-no-store"; -export const maxDuration = 300; -export { POST } from "../check"; diff --git a/apps/planetfall/app/api/check/gru/route.ts b/apps/planetfall/app/api/check/gru/route.ts deleted file mode 100644 index c3e4354270..0000000000 --- a/apps/planetfall/app/api/check/gru/route.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const preferredRegion = ["gru1"]; -export const fetchCache = "force-no-store"; -export const maxDuration = 300; -export { POST } from "../check"; diff --git a/apps/planetfall/app/api/check/hkg/route.ts b/apps/planetfall/app/api/check/hkg/route.ts deleted file mode 100644 index fd3c250500..0000000000 --- a/apps/planetfall/app/api/check/hkg/route.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const preferredRegion = ["hkg1"]; -export const fetchCache = "force-no-store"; -export const maxDuration = 300; -export { POST } from "../check"; diff --git a/apps/planetfall/app/api/check/hnd/route.ts b/apps/planetfall/app/api/check/hnd/route.ts deleted file mode 100644 index cc52f982d9..0000000000 --- a/apps/planetfall/app/api/check/hnd/route.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const preferredRegion = ["hnd1"]; -export const fetchCache = "force-no-store"; -export const maxDuration = 300; -export { POST } from "../check"; diff --git a/apps/planetfall/app/api/check/iad/route.ts b/apps/planetfall/app/api/check/iad/route.ts deleted file mode 100644 index b52520b3b0..0000000000 --- a/apps/planetfall/app/api/check/iad/route.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const preferredRegion = ["iad1"]; -export const fetchCache = "force-no-store"; -export const maxDuration = 300; -export { POST } from "../check"; diff --git a/apps/planetfall/app/api/check/icn/route.ts b/apps/planetfall/app/api/check/icn/route.ts deleted file mode 100644 index 9276f9cbdd..0000000000 --- a/apps/planetfall/app/api/check/icn/route.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const preferredRegion = ["icn1"]; -export const fetchCache = "force-no-store"; -export const maxDuration = 300; -export { POST } from "../check"; diff --git a/apps/planetfall/app/api/check/kix/route.ts b/apps/planetfall/app/api/check/kix/route.ts deleted file mode 100644 index f3b474c6b8..0000000000 --- a/apps/planetfall/app/api/check/kix/route.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const preferredRegion = ["kix1"]; -export const fetchCache = "force-no-store"; -export const maxDuration = 300; -export { POST } from "../check"; diff --git a/apps/planetfall/app/api/check/lhr/route.ts b/apps/planetfall/app/api/check/lhr/route.ts deleted file mode 100644 index ebdd1fcabf..0000000000 --- a/apps/planetfall/app/api/check/lhr/route.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const preferredRegion = ["lhr1"]; -export const fetchCache = "force-no-store"; -export const maxDuration = 300; -export { POST } from "../check"; diff --git a/apps/planetfall/app/api/check/pdx/route.ts b/apps/planetfall/app/api/check/pdx/route.ts deleted file mode 100644 index 14cbee00a9..0000000000 --- a/apps/planetfall/app/api/check/pdx/route.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const preferredRegion = ["pdx1"]; -export const fetchCache = "force-no-store"; -export const maxDuration = 300; -export { POST } from "../check"; diff --git a/apps/planetfall/app/api/check/sfo/route.ts b/apps/planetfall/app/api/check/sfo/route.ts deleted file mode 100644 index 97a1288fea..0000000000 --- a/apps/planetfall/app/api/check/sfo/route.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const preferredRegion = ["sfo1"]; -export const fetchCache = "force-no-store"; -export const maxDuration = 300; -export { POST } from "../check"; diff --git a/apps/planetfall/app/api/check/sin/route.ts b/apps/planetfall/app/api/check/sin/route.ts deleted file mode 100644 index c9866d1d32..0000000000 --- a/apps/planetfall/app/api/check/sin/route.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const preferredRegion = ["sin1"]; -export const fetchCache = "force-no-store"; -export const maxDuration = 300; -export { POST } from "../check"; diff --git a/apps/planetfall/app/api/check/syd/route.ts b/apps/planetfall/app/api/check/syd/route.ts deleted file mode 100644 index 3cc9a43a3e..0000000000 --- a/apps/planetfall/app/api/check/syd/route.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const preferredRegion = ["syd1"]; -export const fetchCache = "force-no-store"; -export const maxDuration = 300; -export { POST } from "../check"; diff --git a/apps/planetfall/app/favicon.ico b/apps/planetfall/app/favicon.ico deleted file mode 100644 index 718d6fea4835ec2d246af9800eddb7ffb276240c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25931 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 LrJugUA?W`A8`#=m diff --git a/apps/planetfall/app/globals.css b/apps/planetfall/app/globals.css deleted file mode 100644 index 875c01e819..0000000000 --- a/apps/planetfall/app/globals.css +++ /dev/null @@ -1,33 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -:root { - --foreground-rgb: 0, 0, 0; - --background-start-rgb: 214, 219, 220; - --background-end-rgb: 255, 255, 255; -} - -@media (prefers-color-scheme: dark) { - :root { - --foreground-rgb: 255, 255, 255; - --background-start-rgb: 0, 0, 0; - --background-end-rgb: 0, 0, 0; - } -} - -body { - color: rgb(var(--foreground-rgb)); - background: linear-gradient( - to bottom, - transparent, - rgb(var(--background-end-rgb)) - ) - rgb(var(--background-start-rgb)); -} - -@layer utilities { - .text-balance { - text-wrap: balance; - } -} diff --git a/apps/planetfall/app/layout.tsx b/apps/planetfall/app/layout.tsx deleted file mode 100644 index 60570a4e29..0000000000 --- a/apps/planetfall/app/layout.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import type { Metadata } from "next"; -import { Inter } from "next/font/google"; -import "./globals.css"; - -const inter = Inter({ - subsets: ["latin"], -}); - -export const metadata: Metadata = { - title: "Create Next App", - description: "Generated by create next app", -}; - -export default function RootLayout({ - children, -}: Readonly<{ - children: React.ReactNode; -}>) { - return ( - - {children} - - ); -} diff --git a/apps/planetfall/app/lib/schema.ts b/apps/planetfall/app/lib/schema.ts deleted file mode 100644 index 2c52e5a0d5..0000000000 --- a/apps/planetfall/app/lib/schema.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { z } from "zod"; - -export const checkResponseSchema = z.object({ - checks: z.array( - z.object({ - status: z.number(), - latency: z.number(), - }), - ), -}); - -export const checkRequestSchema = z.object({ - method: z.enum(["GET", "POST", "PUT", "PATCH", "DELETE"]), - url: z.string().url(), - n: z.number().int().positive().lte(10000).optional().default(1), - headers: z.record(z.string()).optional(), - body: z.string().optional(), -}); diff --git a/apps/planetfall/app/page.tsx b/apps/planetfall/app/page.tsx deleted file mode 100644 index f4e3bf6f0b..0000000000 --- a/apps/planetfall/app/page.tsx +++ /dev/null @@ -1,113 +0,0 @@ -import Image from "next/image"; - -export default function Home() { - return ( -
-
-

- Get started by editing  - app/page.tsx -

- -
- -
- Next.js Logo -
- - -
- ); -} diff --git a/apps/planetfall/next.config.mjs b/apps/planetfall/next.config.mjs deleted file mode 100644 index 4678774e6d..0000000000 --- a/apps/planetfall/next.config.mjs +++ /dev/null @@ -1,4 +0,0 @@ -/** @type {import('next').NextConfig} */ -const nextConfig = {}; - -export default nextConfig; diff --git a/apps/planetfall/package.json b/apps/planetfall/package.json deleted file mode 100644 index 3e75c69b73..0000000000 --- a/apps/planetfall/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "planetfall", - "version": "0.1.22", - "private": true, - "scripts": { - "dev": "next dev", - "build": "next build", - "start": "next start", - "lint": "next lint" - }, - "dependencies": { - "@unkey/api": "workspace:^", - "next": "14.2.10", - "react": "^18", - "react-dom": "^18", - "zod": "^3.23.5" - }, - "devDependencies": { - "@types/node": "^20", - "@types/react": "^18.3.11", - "@types/react-dom": "^18.3.0", - "autoprefixer": "^10.4.19", - "postcss": "^8", - "tailwindcss": "^3.4.3", - "typescript": "^5.5.3" - } -} diff --git a/apps/planetfall/postcss.config.js b/apps/planetfall/postcss.config.js deleted file mode 100644 index 12a703d900..0000000000 --- a/apps/planetfall/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -}; diff --git a/apps/planetfall/public/next.svg b/apps/planetfall/public/next.svg deleted file mode 100644 index 5174b28c56..0000000000 --- a/apps/planetfall/public/next.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/planetfall/public/vercel.svg b/apps/planetfall/public/vercel.svg deleted file mode 100644 index d2f8422273..0000000000 --- a/apps/planetfall/public/vercel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/planetfall/tailwind.config.ts b/apps/planetfall/tailwind.config.ts deleted file mode 100644 index 22c6737ad6..0000000000 --- a/apps/planetfall/tailwind.config.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type { Config } from "tailwindcss"; - -const config: Config = { - content: [ - "./pages/**/*.{js,ts,jsx,tsx,mdx}", - "./components/**/*.{js,ts,jsx,tsx,mdx}", - "./app/**/*.{js,ts,jsx,tsx,mdx}", - ], - theme: { - extend: { - backgroundImage: { - "gradient-radial": "radial-gradient(var(--tw-gradient-stops))", - "gradient-conic": "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))", - }, - }, - }, - plugins: [], -}; -export default config; diff --git a/apps/planetfall/tsconfig.json b/apps/planetfall/tsconfig.json deleted file mode 100644 index d481aa4755..0000000000 --- a/apps/planetfall/tsconfig.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "compilerOptions": { - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "skipLibCheck": true, - "strict": true, - "noEmit": true, - "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "Bundler", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - "incremental": true, - "plugins": [ - { - "name": "next" - } - ], - "paths": { - "@/*": ["./*"] - } - }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], - "exclude": ["node_modules"] -} diff --git a/packages/api/package.json b/packages/api/package.json index 183931a141..3584ed5c9b 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -9,19 +9,12 @@ "publishConfig": { "access": "public" }, - "keywords": [ - "unkey", - "client", - "api" - ], + "keywords": ["unkey", "client", "api"], "bugs": { "url": "https://github.com/unkeyed/unkey/issues" }, "homepage": "https://github.com/unkeyed/unkey#readme", - "files": [ - "./dist/**", - "README.md" - ], + "files": ["./dist/**", "README.md"], "author": "Andreas Thomas ", "scripts": { "generate": "openapi-typescript https://api.unkey.dev/openapi.json -o ./src/openapi.d.ts", diff --git a/packages/api/src/openapi.d.ts b/packages/api/src/openapi.d.ts index 27244e87d2..d1d7b13fac 100644 --- a/packages/api/src/openapi.d.ts +++ b/packages/api/src/openapi.d.ts @@ -3,11 +3,14 @@ * Do not make direct changes to the file. */ - /** OneOf type helpers */ type Without = { [P in Exclude]?: never }; -type XOR = (T | U) extends object ? (Without & U) | (Without & T) : T | U; -type OneOf = T extends [infer Only] ? Only : T extends [infer A, infer B, ...infer Rest] ? OneOf<[XOR, ...Rest]> : never; +type XOR = T | U extends object ? (Without & U) | (Without & T) : T | U; +type OneOf = T extends [infer Only] + ? Only + : T extends [infer A, infer B, ...infer Rest] + ? OneOf<[XOR, ...Rest]> + : never; export interface paths { "/v1/liveness": { @@ -542,7 +545,16 @@ export interface components { * * @enum {string} */ - code: "VALID" | "NOT_FOUND" | "FORBIDDEN" | "USAGE_EXCEEDED" | "RATE_LIMITED" | "UNAUTHORIZED" | "DISABLED" | "INSUFFICIENT_PERMISSIONS" | "EXPIRED"; + code: + | "VALID" + | "NOT_FOUND" + | "FORBIDDEN" + | "USAGE_EXCEEDED" + | "RATE_LIMITED" + | "UNAUTHORIZED" + | "DISABLED" + | "INSUFFICIENT_PERMISSIONS" + | "EXPIRED"; /** @description Sets the key to be enabled or disabled. Disabled keys will not verify. */ enabled?: boolean; /** @@ -568,11 +580,18 @@ export interface components { }; }; /** @description A query for which permissions you require */ - PermissionQuery: OneOf<[string, { - and: components["schemas"]["PermissionQuery"][]; - }, { - or: components["schemas"]["PermissionQuery"][]; - }, null]>; + PermissionQuery: OneOf< + [ + string, + { + and: components["schemas"]["PermissionQuery"][]; + }, + { + or: components["schemas"]["PermissionQuery"][]; + }, + null, + ] + >; V1KeysVerifyKeyRequest: { /** * @description The id of the api where the key belongs to. This is optional for now but will be required soon. @@ -630,21 +649,21 @@ export interface components { * ] */ ratelimits?: { - /** - * @description The name of the ratelimit. - * @example tokens - */ - name: string; - /** - * @description Optionally override how expensive this operation is and how many tokens are deducted from the current limit. - * @default 1 - */ - cost?: number; - /** @description Optionally override the limit. */ - limit?: number; - /** @description Optionally override the ratelimit window duration. */ - duration?: number; - }[]; + /** + * @description The name of the ratelimit. + * @example tokens + */ + name: string; + /** + * @description Optionally override how expensive this operation is and how many tokens are deducted from the current limit. + * @default 1 + */ + cost?: number; + /** @description Optionally override the limit. */ + limit?: number; + /** @description Optionally override the ratelimit window duration. */ + duration?: number; + }[]; }; ErrDeleteProtected: { error: { @@ -670,8 +689,7 @@ export interface components { }; }; responses: never; - parameters: { - }; + parameters: {}; requestBodies: never; headers: never; pathItems: never; @@ -682,7 +700,6 @@ export type $defs = Record; export type external = Record; export interface operations { - "v1.liveness": { responses: { /** @description The configured services and their status */ @@ -1331,7 +1348,7 @@ export interface operations { * "refillInterval": 60 * } */ - ratelimit?: ({ + ratelimit?: { /** * @deprecated * @description Fast ratelimiting doesn't add latency, while consistent ratelimiting is more accurate. @@ -1363,7 +1380,7 @@ export interface operations { * This field will become required in a future version. */ duration?: number; - }) | null; + } | null; /** * @description The number of requests that can be made with this key before it becomes invalid. Set `null` to disable. * @example 1000 @@ -1376,7 +1393,7 @@ export interface operations { * "amount": 100 * } */ - refill?: ({ + refill?: { /** * @description Unkey will automatically refill verifications at the set interval. If null is used the refill functionality will be removed from the key. * @enum {string} @@ -1386,7 +1403,7 @@ export interface operations { amount: number; /** @description The day verifications will refill each month, when interval is set to 'monthly' */ refillDay?: number; - }) | null; + } | null; /** * @description Set if key is enabled or disabled. If disabled, the key cannot be used to verify. * @example true @@ -1409,16 +1426,16 @@ export interface operations { * ] */ roles?: { - /** @description The id of the role. Provide either `id` or `name`. If both are provided `id` is used. */ - id?: string; - /** @description Identify the role via its name. Provide either `id` or `name`. If both are provided `id` is used. */ - name?: string; - /** - * @description Set to true to automatically create the permissions they do not exist yet. Only works when specifying `name`. - * Autocreating roles requires your root key to have the `rbac.*.create_role` permission, otherwise the request will get rejected - */ - create?: boolean; - }[]; + /** @description The id of the role. Provide either `id` or `name`. If both are provided `id` is used. */ + id?: string; + /** @description Identify the role via its name. Provide either `id` or `name`. If both are provided `id` is used. */ + name?: string; + /** + * @description Set to true to automatically create the permissions they do not exist yet. Only works when specifying `name`. + * Autocreating roles requires your root key to have the `rbac.*.create_role` permission, otherwise the request will get rejected + */ + create?: boolean; + }[]; /** * @description The permissions you want to set for this key. This overwrites all existing permissions. * Setting permissions requires the `rbac.*.add_permission_to_key` permission. @@ -1436,16 +1453,16 @@ export interface operations { * ] */ permissions?: { - /** @description The id of the permission. Provide either `id` or `name`. If both are provided `id` is used. */ - id?: string; - /** @description Identify the permission via its name. Provide either `id` or `name`. If both are provided `id` is used. */ - name?: string; - /** - * @description Set to true to automatically create the permissions they do not exist yet. Only works when specifying `name`. - * Autocreating permissions requires your root key to have the `rbac.*.create_permission` permission, otherwise the request will get rejected - */ - create?: boolean; - }[]; + /** @description The id of the permission. Provide either `id` or `name`. If both are provided `id` is used. */ + id?: string; + /** @description Identify the permission via its name. Provide either `id` or `name`. If both are provided `id` is used. */ + name?: string; + /** + * @description Set to true to automatically create the permissions they do not exist yet. Only works when specifying `name`. + * Autocreating permissions requires your root key to have the `rbac.*.create_permission` permission, otherwise the request will get rejected + */ + create?: boolean; + }[]; }; }; }; @@ -1595,27 +1612,27 @@ export interface operations { content: { "application/json": { verifications: { - /** - * @description The timestamp of the usage data - * @example 1620000000000 - */ - time: number; - /** - * @description The number of successful requests - * @example 100 - */ - success: number; - /** - * @description The number of requests that were rate limited - * @example 10 - */ - rateLimited: number; - /** - * @description The number of requests that exceeded the usage limit - * @example 0 - */ - usageExceeded: number; - }[]; + /** + * @description The timestamp of the usage data + * @example 1620000000000 + */ + time: number; + /** + * @description The number of successful requests + * @example 100 + */ + success: number; + /** + * @description The number of requests that were rate limited + * @example 10 + */ + rateLimited: number; + /** + * @description The number of requests that exceeded the usage limit + * @example 0 + */ + usageExceeded: number; + }[]; }; }; }; @@ -1671,16 +1688,16 @@ export interface operations { keyId: string; /** @description The permissions you want to add to this key */ permissions: { - /** @description The id of the permission. Provide either `id` or `name`. If both are provided `id` is used. */ - id?: string; - /** @description Identify the permission via its name. Provide either `id` or `name`. If both are provided `id` is used. */ - name?: string; - /** - * @description Set to true to automatically create the permissions they do not exist yet. Only works when specifying `name`. - * Autocreating permissions requires your root key to have the `rbac.*.create_permission` permission, otherwise the request will get rejected - */ - create?: boolean; - }[]; + /** @description The id of the permission. Provide either `id` or `name`. If both are provided `id` is used. */ + id?: string; + /** @description Identify the permission via its name. Provide either `id` or `name`. If both are provided `id` is used. */ + name?: string; + /** + * @description Set to true to automatically create the permissions they do not exist yet. Only works when specifying `name`. + * Autocreating permissions requires your root key to have the `rbac.*.create_permission` permission, otherwise the request will get rejected + */ + create?: boolean; + }[]; }; }; }; @@ -1689,17 +1706,17 @@ export interface operations { 200: { content: { "application/json": { - /** - * @description The id of the permission. This is used internally - * @example perm_123 - */ - id: string; - /** - * @description The name of the permission - * @example dns.record.create - */ - name: string; - }[]; + /** + * @description The id of the permission. This is used internally + * @example perm_123 + */ + id: string; + /** + * @description The name of the permission + * @example dns.record.create + */ + name: string; + }[]; }; }; /** @description The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing). */ @@ -1764,11 +1781,11 @@ export interface operations { * ] */ permissions: { - /** @description The id of the permission. Provide either `id` or `name`. If both are provided `id` is used. */ - id?: string; - /** @description Identify the permission via its name. Provide either `id` or `name`. If both are provided `id` is used. */ - name?: string; - }[]; + /** @description The id of the permission. Provide either `id` or `name`. If both are provided `id` is used. */ + id?: string; + /** @description Identify the permission via its name. Provide either `id` or `name`. If both are provided `id` is used. */ + name?: string; + }[]; }; }; }; @@ -1846,16 +1863,16 @@ export interface operations { * ] */ permissions: { - /** @description The id of the permission. Provide either `id` or `name`. If both are provided `id` is used. */ - id?: string; - /** @description Identify the permission via its name. Provide either `id` or `name`. If both are provided `id` is used. */ - name?: string; - /** - * @description Set to true to automatically create the permissions they do not exist yet. Only works when specifying `name`. - * Autocreating permissions requires your root key to have the `rbac.*.create_permission` permission, otherwise the request will get rejected - */ - create?: boolean; - }[]; + /** @description The id of the permission. Provide either `id` or `name`. If both are provided `id` is used. */ + id?: string; + /** @description Identify the permission via its name. Provide either `id` or `name`. If both are provided `id` is used. */ + name?: string; + /** + * @description Set to true to automatically create the permissions they do not exist yet. Only works when specifying `name`. + * Autocreating permissions requires your root key to have the `rbac.*.create_permission` permission, otherwise the request will get rejected + */ + create?: boolean; + }[]; }; }; }; @@ -1864,17 +1881,17 @@ export interface operations { 200: { content: { "application/json": { - /** - * @description The id of the permission. This is used internally - * @example perm_123 - */ - id: string; - /** - * @description The name of the permission - * @example dns.record.create - */ - name: string; - }[]; + /** + * @description The id of the permission. This is used internally + * @example perm_123 + */ + id: string; + /** + * @description The name of the permission + * @example dns.record.create + */ + name: string; + }[]; }; }; /** @description The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing). */ @@ -1944,16 +1961,16 @@ export interface operations { * ] */ roles: { - /** @description The id of the role. Provide either `id` or `name`. If both are provided `id` is used. */ - id?: string; - /** @description Identify the role via its name. Provide either `id` or `name`. If both are provided `id` is used. */ - name?: string; - /** - * @description Set to true to automatically create the permissions they do not exist yet. Only works when specifying `name`. - * Autocreating roles requires your root key to have the `rbac.*.create_role` permission, otherwise the request will get rejected - */ - create?: boolean; - }[]; + /** @description The id of the role. Provide either `id` or `name`. If both are provided `id` is used. */ + id?: string; + /** @description Identify the role via its name. Provide either `id` or `name`. If both are provided `id` is used. */ + name?: string; + /** + * @description Set to true to automatically create the permissions they do not exist yet. Only works when specifying `name`. + * Autocreating roles requires your root key to have the `rbac.*.create_role` permission, otherwise the request will get rejected + */ + create?: boolean; + }[]; }; }; }; @@ -1962,17 +1979,17 @@ export interface operations { 200: { content: { "application/json": { - /** - * @description The id of the role. This is used internally - * @example role_123 - */ - id: string; - /** - * @description The name of the role - * @example dns.record.create - */ - name: string; - }[]; + /** + * @description The id of the role. This is used internally + * @example role_123 + */ + id: string; + /** + * @description The name of the role + * @example dns.record.create + */ + name: string; + }[]; }; }; /** @description The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing). */ @@ -2037,11 +2054,11 @@ export interface operations { * ] */ roles: { - /** @description The id of the role. Provide either `id` or `name`. If both are provided `id` is used. */ - id?: string; - /** @description Identify the role via its name. Provide either `id` or `name`. If both are provided `id` is used. */ - name?: string; - }[]; + /** @description The id of the role. Provide either `id` or `name`. If both are provided `id` is used. */ + id?: string; + /** @description Identify the role via its name. Provide either `id` or `name`. If both are provided `id` is used. */ + name?: string; + }[]; }; }; }; @@ -2119,16 +2136,16 @@ export interface operations { * ] */ roles: { - /** @description The id of the role. Provide either `id` or `name`. If both are provided `id` is used. */ - id?: string; - /** @description Identify the role via its name. Provide either `id` or `name`. If both are provided `id` is used. */ - name?: string; - /** - * @description Set to true to automatically create the permissions they do not exist yet. Only works when specifying `name`. - * Autocreating roles requires your root key to have the `rbac.*.create_role` permission, otherwise the request will get rejected - */ - create?: boolean; - }[]; + /** @description The id of the role. Provide either `id` or `name`. If both are provided `id` is used. */ + id?: string; + /** @description Identify the role via its name. Provide either `id` or `name`. If both are provided `id` is used. */ + name?: string; + /** + * @description Set to true to automatically create the permissions they do not exist yet. Only works when specifying `name`. + * Autocreating roles requires your root key to have the `rbac.*.create_role` permission, otherwise the request will get rejected + */ + create?: boolean; + }[]; }; }; }; @@ -2137,17 +2154,17 @@ export interface operations { 200: { content: { "application/json": { - /** - * @description The id of the role. This is used internally - * @example role_123 - */ - id: string; - /** - * @description The name of the role - * @example dns.record.create - */ - name: string; - }[]; + /** + * @description The id of the role. This is used internally + * @example role_123 + */ + id: string; + /** + * @description The name of the role + * @example dns.record.create + */ + name: string; + }[]; }; }; /** @description The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing). */ @@ -2596,26 +2613,26 @@ export interface operations { * ] */ resources?: { - /** - * @description The type of resource - * @example organization - */ - type: string; - /** - * @description The unique identifier for the resource - * @example org_123 - */ - id: string; - /** - * @description A human readable name for this resource - * @example unkey - */ - name?: string; - /** @description Attach any metadata to this resources */ - meta?: { - [key: string]: unknown; - }; - }[]; + /** + * @description The type of resource + * @example organization + */ + type: string; + /** + * @description The unique identifier for the resource + * @example org_123 + */ + id: string; + /** + * @description A human readable name for this resource + * @example unkey + */ + name?: string; + /** @description Attach any metadata to this resources */ + meta?: { + [key: string]: unknown; + }; + }[]; }; }; }; @@ -2798,13 +2815,13 @@ export interface operations { 200: { content: { "application/json": { - overrides: ({ - id: string; - identifier: string; - limit: number; - duration: number; - async?: boolean | null; - })[]; + overrides: { + id: string; + identifier: string; + limit: number; + duration: number; + async?: boolean | null; + }[]; /** * @description The cursor to use for the next page of results, if no cursor is returned, there are no more results * @example eyJrZXkiOiJrZXlfMTIzNCJ9 @@ -3000,27 +3017,241 @@ export interface operations { "v1.migrations.createKeys": { requestBody: { content: { - "application/json": ({ - /** - * @description Choose an `API` where this key should be created. - * @example api_123 - */ - apiId: string; + "application/json": { + /** + * @description Choose an `API` where this key should be created. + * @example api_123 + */ + apiId: string; + /** + * @description To make it easier for your users to understand which product an api key belongs to, you can add prefix them. + * + * For example Stripe famously prefixes their customer ids with cus_ or their api keys with sk_live_. + * + * The underscore is automatically added if you are defining a prefix, for example: "prefix": "abc" will result in a key like abc_xxxxxxxxx + */ + prefix?: string; + /** + * @description The name for your Key. This is not customer facing. + * @example my key + */ + name?: string; + /** @description The raw key in plaintext. If provided, unkey encrypts this value and stores it securely. Provide either `hash` or `plaintext` */ + plaintext?: string; + /** @description Provide either `hash` or `plaintext` */ + hash?: { + /** @description The hashed and encoded key */ + value: string; /** - * @description To make it easier for your users to understand which product an api key belongs to, you can add prefix them. - * - * For example Stripe famously prefixes their customer ids with cus_ or their api keys with sk_live_. - * - * The underscore is automatically added if you are defining a prefix, for example: "prefix": "abc" will result in a key like abc_xxxxxxxxx + * @description The algorithm for hashing and encoding, currently only sha256 and base64 are supported + * @enum {string} */ - prefix?: string; + variant: "sha256_base64"; + }; + /** + * @description The first 4 characters of the key. If a prefix is used, it should be the prefix plus 4 characters. + * @example unkey_32kq + */ + start?: string; + /** + * @description Your user’s Id. This will provide a link between Unkey and your customer record. + * When validating a key, we will return this back to you, so you can clearly identify your user from their api key. + * @example team_123 + */ + ownerId?: string; + /** + * @description This is a place for dynamic meta data, anything that feels useful for you should go here + * @example { + * "billingTier": "PRO", + * "trialEnds": "2023-06-16T17:16:37.161Z" + * } + */ + meta?: { + [key: string]: unknown; + }; + /** + * @description A list of roles that this key should have. If the role does not exist, an error is thrown + * @example [ + * "admin", + * "finance" + * ] + */ + roles?: string[]; + /** + * @description A list of permissions that this key should have. If the permission does not exist, an error is thrown + * @example [ + * "domains.create_record", + * "say_hello" + * ] + */ + permissions?: string[]; + /** + * @description You can auto expire keys by providing a unix timestamp in milliseconds. Once Keys expire they will automatically be disabled and are no longer valid unless you enable them again. + * @example 1623869797161 + */ + expires?: number; + /** + * @description You can limit the number of requests a key can make. Once a key reaches 0 remaining requests, it will automatically be disabled and is no longer valid unless you update it. + * @example 1000 + */ + remaining?: number; + /** + * @description Unkey enables you to refill verifications for each key at regular intervals. + * @example { + * "interval": "daily", + * "amount": 100 + * } + */ + refill?: { /** - * @description The name for your Key. This is not customer facing. - * @example my key + * @description Unkey will automatically refill verifications at the set interval. + * @enum {string} */ - name?: string; - /** @description The raw key in plaintext. If provided, unkey encrypts this value and stores it securely. Provide either `hash` or `plaintext` */ - plaintext?: string; + interval: "daily" | "monthly"; + /** @description The number of verifications to refill for each occurrence is determined individually for each key. */ + amount: number; + /** @description The day verifications will refill each month, when interval is set to 'monthly' */ + refillDay?: number; + }; + /** + * @description Unkey comes with per-key ratelimiting out of the box. + * @example { + * "type": "fast", + * "limit": 10, + * "refillRate": 1, + * "refillInterval": 60 + * } + */ + ratelimit?: { + /** + * @description Async will return a response immediately, lowering latency at the cost of accuracy. + * @default false + */ + async?: boolean; + /** + * @deprecated + * @description Fast ratelimiting doesn't add latency, while consistent ratelimiting is more accurate. + * @default fast + * @enum {string} + */ + type?: "fast" | "consistent"; + /** @description The total amount of burstable requests. */ + limit: number; + /** + * @deprecated + * @description How many tokens to refill during each refillInterval. + */ + refillRate: number; + /** + * @deprecated + * @description Determines the speed at which tokens are refilled, in milliseconds. + */ + refillInterval: number; + }; + /** + * @description Sets if key is enabled or disabled. Disabled keys are not valid. + * @default true + * @example false + */ + enabled?: boolean; + /** + * @description Environments allow you to divide your keyspace. + * + * Some applications like Stripe, Clerk, WorkOS and others have a concept of "live" and "test" keys to + * give the developer a way to develop their own application without the risk of modifying real world + * resources. + * + * When you set an environment, we will return it back to you when validating the key, so you can + * handle it correctly. + */ + environment?: string; + }[]; + }; + }; + responses: { + /** @description The key ids of all created keys */ + 200: { + content: { + "application/json": { + /** + * @description The ids of the keys. This is not a secret and can be stored as a reference if you wish. You need the keyId to update or delete a key later. + * @example [ + * "key_123", + * "key_456" + * ] + */ + keyIds: string[]; + }; + }; + }; + /** @description The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing). */ + 400: { + content: { + "application/json": components["schemas"]["ErrBadRequest"]; + }; + }; + /** @description Although the HTTP standard specifies "unauthorized", semantically this response means "unauthenticated". That is, the client must authenticate itself to get the requested response. */ + 401: { + content: { + "application/json": components["schemas"]["ErrUnauthorized"]; + }; + }; + /** @description The client does not have access rights to the content; that is, it is unauthorized, so the server is refusing to give the requested resource. Unlike 401 Unauthorized, the client's identity is known to the server. */ + 403: { + content: { + "application/json": components["schemas"]["ErrForbidden"]; + }; + }; + /** @description The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web. */ + 404: { + content: { + "application/json": components["schemas"]["ErrNotFound"]; + }; + }; + /** @description This response is sent when a request conflicts with the current state of the server. */ + 409: { + content: { + "application/json": components["schemas"]["ErrConflict"]; + }; + }; + /** @description The user has sent too many requests in a given amount of time ("rate limiting") */ + 429: { + content: { + "application/json": components["schemas"]["ErrTooManyRequests"]; + }; + }; + /** @description The server has encountered a situation it does not know how to handle. */ + 500: { + content: { + "application/json": components["schemas"]["ErrInternalServerError"]; + }; + }; + }; + }; + "v1.migrations.enqueueKeys": { + requestBody: { + content: { + "application/json": { + /** @description Contact support@unkey.dev to receive your migration id. */ + migrationId: string; + /** @description The id of the api, you want to migrate keys to */ + apiId: string; + keys: { + /** + * @description To make it easier for your users to understand which product an api key belongs to, you can add prefix them. + * + * For example Stripe famously prefixes their customer ids with cus_ or their api keys with sk_live_. + * + * The underscore is automatically added if you are defining a prefix, for example: "prefix": "abc" will result in a key like abc_xxxxxxxxx + */ + prefix?: string; + /** + * @description The name for your Key. This is not customer facing. + * @example my key + */ + name?: string; + /** @description The raw key in plaintext. If provided, unkey encrypts this value and stores it securely. Provide either `hash` or `plaintext` */ + plaintext?: string; /** @description Provide either `hash` or `plaintext` */ hash?: { /** @description The hashed and encoded key */ @@ -3097,39 +3328,43 @@ export interface operations { refillDay?: number; }; /** - * @description Unkey comes with per-key ratelimiting out of the box. + * @description Unkey comes with per-key fixed-window ratelimiting out of the box. * @example { * "type": "fast", * "limit": 10, - * "refillRate": 1, - * "refillInterval": 60 + * "duration": 60000 * } */ ratelimit?: { /** * @description Async will return a response immediately, lowering latency at the cost of accuracy. - * @default false + * @default true */ async?: boolean; /** * @deprecated - * @description Fast ratelimiting doesn't add latency, while consistent ratelimiting is more accurate. + * @description Deprecated, use `async`. Fast ratelimiting doesn't add latency, while consistent ratelimiting is more accurate. * @default fast * @enum {string} */ type?: "fast" | "consistent"; - /** @description The total amount of burstable requests. */ + /** @description The total amount of requests in a given interval. */ limit: number; + /** + * @description The window duration in milliseconds + * @example 60000 + */ + duration: number; /** * @deprecated * @description How many tokens to refill during each refillInterval. */ - refillRate: number; + refillRate?: number; /** * @deprecated - * @description Determines the speed at which tokens are refilled, in milliseconds. + * @description The refill timeframe, in milliseconds. */ - refillInterval: number; + refillInterval?: number; }; /** * @description Sets if key is enabled or disabled. Disabled keys are not valid. @@ -3148,225 +3383,7 @@ export interface operations { * handle it correctly. */ environment?: string; - })[]; - }; - }; - responses: { - /** @description The key ids of all created keys */ - 200: { - content: { - "application/json": { - /** - * @description The ids of the keys. This is not a secret and can be stored as a reference if you wish. You need the keyId to update or delete a key later. - * @example [ - * "key_123", - * "key_456" - * ] - */ - keyIds: string[]; - }; - }; - }; - /** @description The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing). */ - 400: { - content: { - "application/json": components["schemas"]["ErrBadRequest"]; - }; - }; - /** @description Although the HTTP standard specifies "unauthorized", semantically this response means "unauthenticated". That is, the client must authenticate itself to get the requested response. */ - 401: { - content: { - "application/json": components["schemas"]["ErrUnauthorized"]; - }; - }; - /** @description The client does not have access rights to the content; that is, it is unauthorized, so the server is refusing to give the requested resource. Unlike 401 Unauthorized, the client's identity is known to the server. */ - 403: { - content: { - "application/json": components["schemas"]["ErrForbidden"]; - }; - }; - /** @description The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web. */ - 404: { - content: { - "application/json": components["schemas"]["ErrNotFound"]; - }; - }; - /** @description This response is sent when a request conflicts with the current state of the server. */ - 409: { - content: { - "application/json": components["schemas"]["ErrConflict"]; - }; - }; - /** @description The user has sent too many requests in a given amount of time ("rate limiting") */ - 429: { - content: { - "application/json": components["schemas"]["ErrTooManyRequests"]; - }; - }; - /** @description The server has encountered a situation it does not know how to handle. */ - 500: { - content: { - "application/json": components["schemas"]["ErrInternalServerError"]; - }; - }; - }; - }; - "v1.migrations.enqueueKeys": { - requestBody: { - content: { - "application/json": { - /** @description Contact support@unkey.dev to receive your migration id. */ - migrationId: string; - /** @description The id of the api, you want to migrate keys to */ - apiId: string; - keys: ({ - /** - * @description To make it easier for your users to understand which product an api key belongs to, you can add prefix them. - * - * For example Stripe famously prefixes their customer ids with cus_ or their api keys with sk_live_. - * - * The underscore is automatically added if you are defining a prefix, for example: "prefix": "abc" will result in a key like abc_xxxxxxxxx - */ - prefix?: string; - /** - * @description The name for your Key. This is not customer facing. - * @example my key - */ - name?: string; - /** @description The raw key in plaintext. If provided, unkey encrypts this value and stores it securely. Provide either `hash` or `plaintext` */ - plaintext?: string; - /** @description Provide either `hash` or `plaintext` */ - hash?: { - /** @description The hashed and encoded key */ - value: string; - /** - * @description The algorithm for hashing and encoding, currently only sha256 and base64 are supported - * @enum {string} - */ - variant: "sha256_base64"; - }; - /** - * @description The first 4 characters of the key. If a prefix is used, it should be the prefix plus 4 characters. - * @example unkey_32kq - */ - start?: string; - /** - * @description Your user’s Id. This will provide a link between Unkey and your customer record. - * When validating a key, we will return this back to you, so you can clearly identify your user from their api key. - * @example team_123 - */ - ownerId?: string; - /** - * @description This is a place for dynamic meta data, anything that feels useful for you should go here - * @example { - * "billingTier": "PRO", - * "trialEnds": "2023-06-16T17:16:37.161Z" - * } - */ - meta?: { - [key: string]: unknown; - }; - /** - * @description A list of roles that this key should have. If the role does not exist, an error is thrown - * @example [ - * "admin", - * "finance" - * ] - */ - roles?: string[]; - /** - * @description A list of permissions that this key should have. If the permission does not exist, an error is thrown - * @example [ - * "domains.create_record", - * "say_hello" - * ] - */ - permissions?: string[]; - /** - * @description You can auto expire keys by providing a unix timestamp in milliseconds. Once Keys expire they will automatically be disabled and are no longer valid unless you enable them again. - * @example 1623869797161 - */ - expires?: number; - /** - * @description You can limit the number of requests a key can make. Once a key reaches 0 remaining requests, it will automatically be disabled and is no longer valid unless you update it. - * @example 1000 - */ - remaining?: number; - /** - * @description Unkey enables you to refill verifications for each key at regular intervals. - * @example { - * "interval": "daily", - * "amount": 100 - * } - */ - refill?: { - /** - * @description Unkey will automatically refill verifications at the set interval. - * @enum {string} - */ - interval: "daily" | "monthly"; - /** @description The number of verifications to refill for each occurrence is determined individually for each key. */ - amount: number; - /** @description The day verifications will refill each month, when interval is set to 'monthly' */ - refillDay?: number; - }; - /** - * @description Unkey comes with per-key fixed-window ratelimiting out of the box. - * @example { - * "type": "fast", - * "limit": 10, - * "duration": 60000 - * } - */ - ratelimit?: { - /** - * @description Async will return a response immediately, lowering latency at the cost of accuracy. - * @default true - */ - async?: boolean; - /** - * @deprecated - * @description Deprecated, use `async`. Fast ratelimiting doesn't add latency, while consistent ratelimiting is more accurate. - * @default fast - * @enum {string} - */ - type?: "fast" | "consistent"; - /** @description The total amount of requests in a given interval. */ - limit: number; - /** - * @description The window duration in milliseconds - * @example 60000 - */ - duration: number; - /** - * @deprecated - * @description How many tokens to refill during each refillInterval. - */ - refillRate?: number; - /** - * @deprecated - * @description The refill timeframe, in milliseconds. - */ - refillInterval?: number; - }; - /** - * @description Sets if key is enabled or disabled. Disabled keys are not valid. - * @default true - * @example false - */ - enabled?: boolean; - /** - * @description Environments allow you to divide your keyspace. - * - * Some applications like Stripe, Clerk, WorkOS and others have a concept of "live" and "test" keys to - * give the developer a way to develop their own application without the risk of modifying real world - * resources. - * - * When you set an environment, we will return it back to you when validating the key, so you can - * handle it correctly. - */ - environment?: string; - })[]; + }[]; }; }; }; @@ -3637,22 +3654,22 @@ export interface operations { 200: { content: { "application/json": { - /** - * @description The id of the permission - * @example perm_123 - */ - id: string; - /** - * @description The name of the permission. - * @example domain.record.manager - */ - name: string; - /** - * @description The description of what this permission does. This is just for your team, your users will not see this. - * @example Can manage dns records - */ - description?: string; - }[]; + /** + * @description The id of the permission + * @example perm_123 + */ + id: string; + /** + * @description The name of the permission. + * @example domain.record.manager + */ + name: string; + /** + * @description The description of what this permission does. This is just for your team, your users will not see this. + * @example Can manage dns records + */ + description?: string; + }[]; }; }; /** @description The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing). */ @@ -3915,22 +3932,22 @@ export interface operations { 200: { content: { "application/json": { - /** - * @description The id of the role - * @example role_1234 - */ - id: string; - /** - * @description The name of the role. - * @example domain.record.manager - */ - name: string; - /** - * @description The description of what this role does. This is just for your team, your users will not see this. - * @example Can manage dns records - */ - description?: string; - }[]; + /** + * @description The id of the role + * @example role_1234 + */ + id: string; + /** + * @description The name of the role. + * @example domain.record.manager + */ + name: string; + /** + * @description The description of what this role does. This is just for your team, your users will not see this. + * @example Can manage dns records + */ + description?: string; + }[]; }; }; /** @description The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing). */ @@ -4006,22 +4023,22 @@ export interface operations { * When verifying keys, you can specify which limits you want to use and all keys attached to this identity, will share the limits. */ ratelimits?: { - /** - * @description The name of this limit. You will need to use this again when verifying a key. - * @example tokens - */ - name: string; - /** - * @description How many requests may pass within a given window before requests are rejected. - * @example 10 - */ - limit: number; - /** - * @description The duration for each ratelimit window in milliseconds. - * @example 1000 - */ - duration: number; - }[]; + /** + * @description The name of this limit. You will need to use this again when verifying a key. + * @example tokens + */ + name: string; + /** + * @description How many requests may pass within a given window before requests are rejected. + * @example 10 + */ + limit: number; + /** + * @description The duration for each ratelimit window in milliseconds. + * @example 1000 + */ + duration: number; + }[]; }; }; }; @@ -4104,22 +4121,22 @@ export interface operations { }; /** @description When verifying keys, you can specify which limits you want to use and all keys attached to this identity, will share the limits. */ ratelimits: { - /** - * @description The name of this limit. You will need to use this again when verifying a key. - * @example tokens - */ - name: string; - /** - * @description How many requests may pass within a given window before requests are rejected. - * @example 10 - */ - limit: number; - /** - * @description The duration for each ratelimit window in milliseconds. - * @example 1000 - */ - duration: number; - }[]; + /** + * @description The name of this limit. You will need to use this again when verifying a key. + * @example tokens + */ + name: string; + /** + * @description How many requests may pass within a given window before requests are rejected. + * @example 10 + */ + limit: number; + /** + * @description The duration for each ratelimit window in milliseconds. + * @example 1000 + */ + duration: number; + }[]; }; }; }; @@ -4182,29 +4199,29 @@ export interface operations { "application/json": { /** @description A list of identities. */ identities: { - /** @description The id of this identity. Used to interact with unkey's API */ - id: string; - /** @description The id in your system */ - externalId: string; - /** @description When verifying keys, you can specify which limits you want to use and all keys attached to this identity, will share the limits. */ - ratelimits: { - /** - * @description The name of this limit. You will need to use this again when verifying a key. - * @example tokens - */ - name: string; - /** - * @description How many requests may pass within a given window before requests are rejected. - * @example 10 - */ - limit: number; - /** - * @description The duration for each ratelimit window in milliseconds. - * @example 1000 - */ - duration: number; - }[]; + /** @description The id of this identity. Used to interact with unkey's API */ + id: string; + /** @description The id in your system */ + externalId: string; + /** @description When verifying keys, you can specify which limits you want to use and all keys attached to this identity, will share the limits. */ + ratelimits: { + /** + * @description The name of this limit. You will need to use this again when verifying a key. + * @example tokens + */ + name: string; + /** + * @description How many requests may pass within a given window before requests are rejected. + * @example 10 + */ + limit: number; + /** + * @description The duration for each ratelimit window in milliseconds. + * @example 1000 + */ + duration: number; }[]; + }[]; /** * @description The cursor to use for the next page of results, if no cursor is returned, there are no more results * @example eyJrZXkiOiJrZXlfMTIzNCJ9 @@ -4297,22 +4314,22 @@ export interface operations { * When verifying keys, you can specify which limits you want to use and all keys attached to this identity, will share the limits. */ ratelimits?: { - /** - * @description The name of this limit. You will need to use this again when verifying a key. - * @example tokens - */ - name: string; - /** - * @description How many requests may pass within a given window before requests are rejected. - * @example 10 - */ - limit: number; - /** - * @description The duration for each ratelimit window in milliseconds. - * @example 1000 - */ - duration: number; - }[]; + /** + * @description The name of this limit. You will need to use this again when verifying a key. + * @example tokens + */ + name: string; + /** + * @description How many requests may pass within a given window before requests are rejected. + * @example 10 + */ + limit: number; + /** + * @description The duration for each ratelimit window in milliseconds. + * @example 1000 + */ + duration: number; + }[]; }; }; }; @@ -4341,22 +4358,22 @@ export interface operations { [key: string]: unknown; }; ratelimits: { - /** - * @description The name of this limit. - * @example tokens - */ - name: string; - /** - * @description How many requests may pass within a given window before requests are rejected. - * @example 10 - */ - limit: number; - /** - * @description The duration for each ratelimit window in milliseconds. - * @example 1000 - */ - duration: number; - }[]; + /** + * @description The name of this limit. + * @example tokens + */ + name: string; + /** + * @description How many requests may pass within a given window before requests are rejected. + * @example 10 + */ + limit: number; + /** + * @description The duration for each ratelimit window in milliseconds. + * @example 1000 + */ + duration: number; + }[]; }; }; }; @@ -4718,7 +4735,15 @@ export interface operations { * @example NOT_FOUND * @enum {string} */ - code?: "NOT_FOUND" | "FORBIDDEN" | "USAGE_EXCEEDED" | "RATE_LIMITED" | "UNAUTHORIZED" | "DISABLED" | "INSUFFICIENT_PERMISSIONS" | "EXPIRED"; + code?: + | "NOT_FOUND" + | "FORBIDDEN" + | "USAGE_EXCEEDED" + | "RATE_LIMITED" + | "UNAUTHORIZED" + | "DISABLED" + | "INSUFFICIENT_PERMISSIONS" + | "EXPIRED"; }; }; }; diff --git a/packages/hono/package.json b/packages/hono/package.json index 752ab02e4e..82c7598c66 100644 --- a/packages/hono/package.json +++ b/packages/hono/package.json @@ -8,19 +8,12 @@ "publishConfig": { "access": "public" }, - "keywords": [ - "unkey", - "client", - "api", - "hono" - ], + "keywords": ["unkey", "client", "api", "hono"], "bugs": { "url": "https://github.com/unkeyed/unkey/issues" }, "homepage": "https://github.com/unkeyed/unkey#readme", - "files": [ - "./dist/**" - ], + "files": ["./dist/**"], "author": "Andreas Thomas ", "scripts": { "build": "tsup", diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index d917e71ae0..b3253ca3eb 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -8,19 +8,12 @@ "publishConfig": { "access": "public" }, - "keywords": [ - "unkey", - "client", - "api" - ], + "keywords": ["unkey", "client", "api"], "bugs": { "url": "https://github.com/unkeyed/unkey/issues" }, "homepage": "https://github.com/unkeyed/unkey#readme", - "files": [ - "./dist/**", - "README.md" - ], + "files": ["./dist/**", "README.md"], "author": "Andreas Thomas ", "scripts": { "build": "tsup" diff --git a/packages/ratelimit/package.json b/packages/ratelimit/package.json index 6562e93574..8e1639e4bd 100644 --- a/packages/ratelimit/package.json +++ b/packages/ratelimit/package.json @@ -9,20 +9,12 @@ "publishConfig": { "access": "public" }, - "keywords": [ - "unkey", - "ratelimit", - "global", - "serverless" - ], + "keywords": ["unkey", "ratelimit", "global", "serverless"], "bugs": { "url": "https://github.com/unkeyed/unkey/issues" }, "homepage": "https://github.com/unkeyed/unkey#readme", - "files": [ - "./dist/**", - "README.md" - ], + "files": ["./dist/**", "README.md"], "author": "Andreas Thomas ", "scripts": { "build": "tsup" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1920b0c6b5..968fd11676 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -725,46 +725,6 @@ importers: specifier: ^3.92.0 version: 3.92.0(@cloudflare/workers-types@4.20240603.0) - apps/planetfall: - dependencies: - '@unkey/api': - specifier: workspace:^ - version: link:../../packages/api - next: - specifier: 14.2.10 - version: 14.2.10(@babel/core@7.26.0)(@opentelemetry/api@1.4.1)(react-dom@18.3.1)(react@18.3.1) - react: - specifier: ^18 - version: 18.3.1 - react-dom: - specifier: ^18 - version: 18.3.1(react@18.3.1) - zod: - specifier: ^3.23.5 - version: 3.23.8 - devDependencies: - '@types/node': - specifier: ^20 - version: 20.14.9 - '@types/react': - specifier: ^18.3.11 - version: 18.3.11 - '@types/react-dom': - specifier: ^18.3.0 - version: 18.3.0 - autoprefixer: - specifier: ^10.4.19 - version: 10.4.20(postcss@8.4.38) - postcss: - specifier: ^8 - version: 8.4.38 - tailwindcss: - specifier: ^3.4.3 - version: 3.4.15(ts-node@10.9.2) - typescript: - specifier: ^5.5.3 - version: 5.5.3 - apps/play: dependencies: '@bany/curl-to-json':