aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2025-04-13 01:27:45 +0000
committerMohamed Bassem <me@mbassem.com>2025-04-13 01:53:11 +0000
commitcf97bace33fdd14f29ce947d55d17cba8fa85c11 (patch)
tree048a88eeabfcb1b1b32b2cd298c229e6c7082341
parenta39cd5f3c0a3e287652f945d203facab413b5b65 (diff)
downloadkarakeep-cf97bace33fdd14f29ce947d55d17cba8fa85c11.tar.zst
feat: Add an MCP server for karakeep
Diffstat (limited to '')
-rw-r--r--apps/browser-extension/package.json2
-rw-r--r--apps/mcp/.gitignore1
-rw-r--r--apps/mcp/.npmignore4
-rw-r--r--apps/mcp/README.md34
-rw-r--r--apps/mcp/package.json51
-rw-r--r--apps/mcp/src/bookmarks.ts137
-rw-r--r--apps/mcp/src/index.ts16
-rw-r--r--apps/mcp/src/lists.ts145
-rw-r--r--apps/mcp/src/shared.ts34
-rw-r--r--apps/mcp/src/tags.ts68
-rw-r--r--apps/mcp/tsconfig.json15
-rw-r--r--apps/mcp/vite.config.mts26
-rw-r--r--apps/mobile/package.json2
-rw-r--r--apps/web/package.json2
-rw-r--r--apps/workers/package.json2
-rw-r--r--packages/e2e_tests/tests/api/bookmarks.test.ts1
-rw-r--r--packages/open-api/hoarder-openapi-spec.json638
-rw-r--r--packages/open-api/lib/bookmarks.ts89
-rw-r--r--packages/open-api/lib/errors.ts6
-rw-r--r--packages/open-api/lib/highlights.ts41
-rw-r--r--packages/open-api/lib/lists.ts73
-rw-r--r--packages/open-api/lib/tags.ts33
-rw-r--r--packages/open-api/package.json2
-rw-r--r--packages/sdk/package.json1
-rw-r--r--packages/sdk/src/hoarder-api.d.ts351
-rw-r--r--packages/shared/package.json2
-rw-r--r--packages/trpc/package.json2
-rw-r--r--pnpm-lock.yaml873
28 files changed, 2512 insertions, 139 deletions
diff --git a/apps/browser-extension/package.json b/apps/browser-extension/package.json
index 58da5217..2f4dd7f7 100644
--- a/apps/browser-extension/package.json
+++ b/apps/browser-extension/package.json
@@ -37,7 +37,7 @@
"superjson": "^2.2.1",
"tailwind-merge": "^2.2.1",
"tailwindcss-animate": "^1.0.7",
- "zod": "^3.22.4"
+ "zod": "^3.24.2"
},
"devDependencies": {
"@crxjs/vite-plugin": "2.0.0-beta.28",
diff --git a/apps/mcp/.gitignore b/apps/mcp/.gitignore
new file mode 100644
index 00000000..1521c8b7
--- /dev/null
+++ b/apps/mcp/.gitignore
@@ -0,0 +1 @@
+dist
diff --git a/apps/mcp/.npmignore b/apps/mcp/.npmignore
new file mode 100644
index 00000000..18a504f5
--- /dev/null
+++ b/apps/mcp/.npmignore
@@ -0,0 +1,4 @@
+.turbo/**
+src/**
+vite.config.mts
+tsconfig.json
diff --git a/apps/mcp/README.md b/apps/mcp/README.md
new file mode 100644
index 00000000..d59bb894
--- /dev/null
+++ b/apps/mcp/README.md
@@ -0,0 +1,34 @@
+# Karakeep MCP Server
+
+This is the Karakeep MCP server, which is a server that can be used to interact with Karakeep from other tools.
+
+## Supported Tools
+
+- Searching bookmarks
+- Adding and removing bookmarks from lists
+- Attaching and detaching tags to bookmarks
+- Creating new lists
+- Creating text and URL bookmarks
+
+Currently, the MCP server only exposes tools (no resources).
+
+## Usage with Claude Desktop
+
+
+```
+{
+ "mcpServers": {
+ "karakeep": {
+ "command": "npx",
+ "args": [
+ "@karakeep/mcp",
+ ],
+ "env": {
+ "KARAKEEP_API_ADDR": "https://<YOUR_SERVER_ADDR>",
+ "KARAKEEP_API_KEY": "<YOUR_TOKEN>"
+ }
+ }
+ }
+}
+```
+
diff --git a/apps/mcp/package.json b/apps/mcp/package.json
new file mode 100644
index 00000000..5e41dd18
--- /dev/null
+++ b/apps/mcp/package.json
@@ -0,0 +1,51 @@
+{
+ "$schema": "https://json.schemastore.org/package.json",
+ "name": "@karakeep/mcp",
+ "version": "0.23.3",
+ "description": "MCP server for Karakeep",
+ "license": "GNU Affero General Public License version 3",
+ "type": "module",
+ "keywords": [
+ "hoarder",
+ "karakeep",
+ "mcp"
+ ],
+ "bin": {
+ "karakeep-mcp": "dist/index.js"
+ },
+ "devDependencies": {
+ "@karakeep/eslint-config": "workspace:^0.2.0",
+ "@karakeep/prettier-config": "workspace:^0.1.0",
+ "@karakeep/tsconfig": "workspace:^0.1.0",
+ "@tsconfig/node22": "^22.0.0",
+ "shx": "^0.4.0",
+ "tsx": "^4.7.1",
+ "vite": "^5.1.0"
+ },
+ "scripts": {
+ "build": "vite build && shx chmod +x dist/index.js",
+ "run": "tsx src/index.ts",
+ "lint": "eslint .",
+ "lint:fix": "eslint . --fix",
+ "format": "prettier . --ignore-path ../../.prettierignore",
+ "format:fix": "prettier . --write --ignore-path ../../.prettierignore",
+ "typecheck": "tsc --noEmit"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/karakeep-app/karakeep.git",
+ "directory": "apps/mcp"
+ },
+ "eslintConfig": {
+ "root": true,
+ "extends": [
+ "@karakeep/eslint-config/base"
+ ]
+ },
+ "prettier": "@karakeep/prettier-config",
+ "dependencies": {
+ "@karakeep/sdk": "workspace:*",
+ "@modelcontextprotocol/sdk": "^1.9.0",
+ "zod": "^3.24.2"
+ }
+}
diff --git a/apps/mcp/src/bookmarks.ts b/apps/mcp/src/bookmarks.ts
new file mode 100644
index 00000000..bcafba91
--- /dev/null
+++ b/apps/mcp/src/bookmarks.ts
@@ -0,0 +1,137 @@
+import { CallToolResult } from "@modelcontextprotocol/sdk/types";
+import { z } from "zod";
+
+import { karakeepClient, mcpServer, toMcpToolError } from "./shared";
+
+// Tools
+mcpServer.tool(
+ "search-bookmarks",
+ `Search for bookmarks matching a specific a query.
+`,
+ {
+ query: z.string().describe(`
+ By default, this will do a full-text search, but you can also use qualifiers to filter the results.
+You can search bookmarks using specific qualifiers. is:fav finds favorited bookmarks,
+is:archived searches archived bookmarks, is:tagged finds those with tags,
+is:inlist finds those in lists, and is:link, is:text, and is:media filter by bookmark type.
+url:<value> searches for URL substrings, #<tag> searches for bookmarks with a specific tag,
+list:<name> searches for bookmarks in a specific list,
+after:<date> finds bookmarks created on or after a date (YYYY-MM-DD), and before:<date> finds bookmarks created on or before a date (YYYY-MM-DD).
+If you need to pass names with spaces, you can quote them with double quotes. If you want to negate a qualifier, prefix it with a minus sign.
+## Examples:
+
+### Find favorited bookmarks from 2023 that are tagged "important"
+is:fav after:2023-01-01 before:2023-12-31 #important
+
+### Find archived bookmarks that are either in "reading" list or tagged "work"
+is:archived and (list:reading or #work)
+
+### Combine text search with qualifiers
+machine learning is:fav`),
+ },
+ async ({ query }): Promise<CallToolResult> => {
+ const res = await karakeepClient.GET("/bookmarks/search", {
+ params: {
+ query: {
+ q: query,
+ limit: 10,
+ },
+ },
+ });
+ if (!res.data) {
+ return toMcpToolError(res.error);
+ }
+ return {
+ content: res.data.bookmarks.map((bookmark) => ({
+ type: "text",
+ text: JSON.stringify(bookmark),
+ })),
+ };
+ },
+);
+
+mcpServer.tool(
+ "get-bookmark",
+ `Get a bookmark by id.`,
+ {
+ bookmarkId: z.string().describe(`The bookmarkId to get.`),
+ },
+ async ({ bookmarkId }): Promise<CallToolResult> => {
+ const res = await karakeepClient.GET(`/bookmarks/{bookmarkId}`, {
+ params: {
+ path: {
+ bookmarkId,
+ },
+ },
+ });
+ if (res.error) {
+ return toMcpToolError(res.error);
+ }
+ return {
+ content: [
+ {
+ type: "text",
+ text: JSON.stringify(res.data),
+ },
+ ],
+ };
+ },
+);
+
+mcpServer.tool(
+ "create-text-bookmark",
+ `Create a text bookmark`,
+ {
+ title: z.string().optional().describe(`The title of the bookmark`),
+ text: z.string().describe(`The text to be bookmarked`),
+ },
+ async ({ title, text }): Promise<CallToolResult> => {
+ const res = await karakeepClient.POST(`/bookmarks`, {
+ body: {
+ type: "text",
+ title,
+ text,
+ },
+ });
+ if (res.error) {
+ return toMcpToolError(res.error);
+ }
+ return {
+ content: [
+ {
+ type: "text",
+ text: JSON.stringify(res.data),
+ },
+ ],
+ };
+ },
+);
+
+mcpServer.tool(
+ "create-url-bookmark",
+ `Create a url bookmark`,
+ {
+ title: z.string().optional().describe(`The title of the bookmark`),
+ url: z.string().describe(`The url to be bookmarked`),
+ },
+ async ({ title, url }): Promise<CallToolResult> => {
+ const res = await karakeepClient.POST(`/bookmarks`, {
+ body: {
+ type: "link",
+ title,
+ url,
+ },
+ });
+ if (res.error) {
+ return toMcpToolError(res.error);
+ }
+ return {
+ content: [
+ {
+ type: "text",
+ text: JSON.stringify(res.data),
+ },
+ ],
+ };
+ },
+);
diff --git a/apps/mcp/src/index.ts b/apps/mcp/src/index.ts
new file mode 100644
index 00000000..51437fc6
--- /dev/null
+++ b/apps/mcp/src/index.ts
@@ -0,0 +1,16 @@
+#!/usr/bin/env node
+import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
+
+import { mcpServer } from "./shared";
+
+import "./bookmarks.ts";
+import "./lists.ts";
+import "./tags.ts";
+
+async function run() {
+ // Start receiving messages on stdin and sending messages on stdout
+ const transport = new StdioServerTransport();
+ await mcpServer.connect(transport);
+}
+
+run();
diff --git a/apps/mcp/src/lists.ts b/apps/mcp/src/lists.ts
new file mode 100644
index 00000000..6cfe1d13
--- /dev/null
+++ b/apps/mcp/src/lists.ts
@@ -0,0 +1,145 @@
+import { CallToolResult } from "@modelcontextprotocol/sdk/types";
+import { z } from "zod";
+
+import { karakeepClient, mcpServer, toMcpToolError } from "./shared";
+
+mcpServer.tool(
+ "get-lists",
+ `Search for bookmarks matching a specific a query.`,
+ async (): Promise<CallToolResult> => {
+ const res = await karakeepClient.GET("/lists");
+ if (!res.data) {
+ return toMcpToolError(res.error);
+ }
+ return {
+ content: res.data.lists.map((list) => ({
+ type: "text",
+ text: JSON.stringify(list),
+ })),
+ };
+ },
+);
+
+mcpServer.tool(
+ "get-bookmarks-in-list",
+ `Search for bookmarks matching a specific a query.`,
+ {
+ listId: z.string().describe(`The listId to search in.`),
+ },
+ async ({ listId }): Promise<CallToolResult> => {
+ const res = await karakeepClient.GET(`/lists/{listId}/bookmarks`, {
+ params: {
+ path: {
+ listId,
+ },
+ },
+ });
+ if (res.error) {
+ return toMcpToolError(res.error);
+ }
+ return {
+ content: res.data.bookmarks.map((bookmark) => ({
+ type: "text",
+ text: JSON.stringify(bookmark),
+ })),
+ };
+ },
+);
+
+mcpServer.tool(
+ "add-bookmark-to-list",
+ `Add a bookmark to a list.`,
+ {
+ listId: z.string().describe(`The listId to add the bookmark to.`),
+ bookmarkId: z.string().describe(`The bookmarkId to add.`),
+ },
+ async ({ listId, bookmarkId }): Promise<CallToolResult> => {
+ const res = await karakeepClient.PUT(
+ `/lists/{listId}/bookmarks/{bookmarkId}`,
+ {
+ params: {
+ path: {
+ listId,
+ bookmarkId,
+ },
+ },
+ },
+ );
+ if (res.error) {
+ return toMcpToolError(res.error);
+ }
+ return {
+ content: [
+ {
+ type: "text",
+ text: `Bookmark ${bookmarkId} added to list ${listId}`,
+ },
+ ],
+ };
+ },
+);
+
+mcpServer.tool(
+ "remove-bookmark-from-list",
+ `Remove a bookmark from a list.`,
+ {
+ listId: z.string().describe(`The listId to remove the bookmark from.`),
+ bookmarkId: z.string().describe(`The bookmarkId to remove.`),
+ },
+ async ({ listId, bookmarkId }): Promise<CallToolResult> => {
+ const res = await karakeepClient.DELETE(
+ `/lists/{listId}/bookmarks/{bookmarkId}`,
+ {
+ params: {
+ path: {
+ listId,
+ bookmarkId,
+ },
+ },
+ },
+ );
+ if (res.error) {
+ return toMcpToolError(res.error);
+ }
+ return {
+ content: [
+ {
+ type: "text",
+ text: `Bookmark ${bookmarkId} removed from list ${listId}`,
+ },
+ ],
+ };
+ },
+);
+
+mcpServer.tool(
+ "create-list",
+ `Create a list.`,
+ {
+ name: z.string().describe(`The name of the list.`),
+ icon: z.string().describe(`The emoji icon of the list.`),
+ parentId: z
+ .string()
+ .optional()
+ .describe(`The parent list id of this list.`),
+ },
+ async ({ name, icon }): Promise<CallToolResult> => {
+ const res = await karakeepClient.POST("/lists", {
+ body: {
+ name,
+ icon,
+ },
+ });
+ if (res.error) {
+ return toMcpToolError(res.error);
+ }
+ return {
+ content: [
+ {
+ type: "text",
+ text: `List ${name} created with id ${res.data.id}`,
+ },
+ ],
+ };
+ },
+);
diff --git a/apps/mcp/src/shared.ts b/apps/mcp/src/shared.ts
new file mode 100644
index 00000000..69672769
--- /dev/null
+++ b/apps/mcp/src/shared.ts
@@ -0,0 +1,34 @@
+import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
+import { CallToolResult } from "@modelcontextprotocol/sdk/types";
+
+import { createHoarderClient } from "@karakeep/sdk";
+
+const addr = process.env.KARAKEEP_API_ADDR;
+const apiKey = process.env.KARAKEEP_API_KEY;
+
+export const karakeepClient = createHoarderClient({
+ baseUrl: `${addr}/api/v1`,
+ headers: {
+ "Content-Type": "application/json",
+ authorization: `Bearer ${apiKey}`,
+ },
+});
+
+export const mcpServer = new McpServer({
+ name: "Karakeep",
+ version: "0.23.0",
+});
+
+export function toMcpToolError(
+ error: { code: string; message: string } | undefined,
+): CallToolResult {
+ return {
+ isError: true,
+ content: [
+ {
+ type: "text",
+ text: error ? JSON.stringify(error) : `Something went wrong`,
+ },
+ ],
+ };
+}
diff --git a/apps/mcp/src/tags.ts b/apps/mcp/src/tags.ts
new file mode 100644
index 00000000..a23abea0
--- /dev/null
+++ b/apps/mcp/src/tags.ts
@@ -0,0 +1,68 @@
+import { CallToolResult } from "@modelcontextprotocol/sdk/types";
+import { z } from "zod";
+
+import { karakeepClient, mcpServer, toMcpToolError } from "./shared";
+
+mcpServer.tool(
+ "attach-tag-to-bookmark",
+ `Attach a tag to a bookmark.`,
+ {
+ bookmarkId: z.string().describe(`The bookmarkId to attach the tag to.`),
+ tagsToAttach: z.array(z.string()).describe(`The tag names to attach.`),
+ },
+ async ({ bookmarkId, tagsToAttach }): Promise<CallToolResult> => {
+ const res = await karakeepClient.POST(`/bookmarks/{bookmarkId}/tags`, {
+ params: {
+ path: {
+ bookmarkId,
+ },
+ },
+ body: {
+ tags: tagsToAttach.map((tag) => ({ tagName: tag })),
+ },
+ });
+ if (res.error) {
+ return toMcpToolError(res.error);
+ }
+ return {
+ content: [
+ {
+ type: "text",
+ text: `Tags ${JSON.stringify(tagsToAttach)} attached to bookmark ${bookmarkId}`,
+ },
+ ],
+ };
+ },
+);
+
+mcpServer.tool(
+ "detach-tag-from-bookmark",
+ `Detach a tag from a bookmark.`,
+ {
+ bookmarkId: z.string().describe(`The bookmarkId to detach the tag from.`),
+ tagsToDetach: z.array(z.string()).describe(`The tag names to detach.`),
+ },
+ async ({ bookmarkId, tagsToDetach }): Promise<CallToolResult> => {
+ const res = await karakeepClient.DELETE(`/bookmarks/{bookmarkId}/tags`, {
+ params: {
+ path: {
+ bookmarkId,
+ },
+ },
+ body: {
+ tags: tagsToDetach.map((tag) => ({ tagName: tag })),
+ },
+ });
+ if (res.error) {
+ return toMcpToolError(res.error);
+ }
+ return {
+ content: [
+ {
+ type: "text",
+ text: `Tags ${JSON.stringify(tagsToDetach)} detached from bookmark ${bookmarkId}`,
+ },
+ ],
+ };
+ },
+);
diff --git a/apps/mcp/tsconfig.json b/apps/mcp/tsconfig.json
new file mode 100644
index 00000000..07b074a3
--- /dev/null
+++ b/apps/mcp/tsconfig.json
@@ -0,0 +1,15 @@
+{
+ "$schema": "https://json.schemastore.org/tsconfig",
+ "extends": "@karakeep/tsconfig/node.json",
+ "include": ["src", "vite.config.mts"],
+ "exclude": ["node_modules", "dist"],
+ "compilerOptions": {
+ "baseUrl": ".",
+ "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json",
+ "strictNullChecks": true,
+ "paths": {
+ "@/*": ["./src/*"]
+ },
+ "types": ["vite/client"]
+ }
+}
diff --git a/apps/mcp/vite.config.mts b/apps/mcp/vite.config.mts
new file mode 100644
index 00000000..81717bff
--- /dev/null
+++ b/apps/mcp/vite.config.mts
@@ -0,0 +1,26 @@
+// This file is shamelessly copied from immich's CLI vite config
+// https://github.com/immich-app/immich/blob/main/cli/vite.config.ts
+import { defineConfig } from "vite";
+import tsconfigPaths from "vite-tsconfig-paths";
+
+export default defineConfig({
+ build: {
+ rollupOptions: {
+ input: "src/index.ts",
+ output: {
+ dir: "dist",
+ },
+ },
+ ssr: true,
+ },
+ ssr: {
+ // bundle everything except for Node built-ins
+ noExternal: /^(?!node:).*$/,
+ },
+ plugins: [tsconfigPaths()],
+ define: {
+ "import.meta.env.CLI_VERSION": JSON.stringify(
+ process.env.npm_package_version,
+ ),
+ },
+});
diff --git a/apps/mobile/package.json b/apps/mobile/package.json
index c17d4f26..4ce6a718 100644
--- a/apps/mobile/package.json
+++ b/apps/mobile/package.json
@@ -55,7 +55,7 @@
"react-native-webview": "^13.12.2",
"tailwind-merge": "^2.2.1",
"use-debounce": "^10.0.0",
- "zod": "^3.22.4",
+ "zod": "^3.24.2",
"zustand": "^4.5.1"
},
"devDependencies": {
diff --git a/apps/web/package.json b/apps/web/package.json
index db02bbaa..5279dad8 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -90,7 +90,7 @@
"sharp": "^0.33.3",
"superjson": "^2.2.1",
"tailwind-merge": "^2.2.1",
- "zod": "^3.22.4",
+ "zod": "^3.24.2",
"zustand": "^4.5.1"
},
"devDependencies": {
diff --git a/apps/workers/package.json b/apps/workers/package.json
index 7ce1cbcf..91487973 100644
--- a/apps/workers/package.json
+++ b/apps/workers/package.json
@@ -43,7 +43,7 @@
"tesseract.js": "^5.1.1",
"tsx": "^4.7.1",
"typescript": "^5.7.3",
- "zod": "^3.22.4"
+ "zod": "^3.24.2"
},
"devDependencies": {
"@karakeep/eslint-config": "workspace:^0.2.0",
diff --git a/packages/e2e_tests/tests/api/bookmarks.test.ts b/packages/e2e_tests/tests/api/bookmarks.test.ts
index dbd536b1..91fbcc20 100644
--- a/packages/e2e_tests/tests/api/bookmarks.test.ts
+++ b/packages/e2e_tests/tests/api/bookmarks.test.ts
@@ -41,6 +41,7 @@ describe("Bookmarks API", () => {
if (error) {
console.error("Error creating bookmark:", error);
+ throw error;
}
expect(createResponse.status).toBe(201);
diff --git a/packages/open-api/hoarder-openapi-spec.json b/packages/open-api/hoarder-openapi-spec.json
index a1d48ba2..c7f91949 100644
--- a/packages/open-api/hoarder-openapi-spec.json
+++ b/packages/open-api/hoarder-openapi-spec.json
@@ -712,6 +712,28 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
}
@@ -795,6 +817,28 @@
}
}
}
+ },
+ "404": {
+ "description": "Bookmark not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
},
@@ -817,6 +861,28 @@
"responses": {
"204": {
"description": "No content - the bookmark was deleted"
+ },
+ "404": {
+ "description": "Bookmark not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
},
@@ -955,6 +1021,28 @@
}
}
}
+ },
+ "404": {
+ "description": "Bookmark not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
}
@@ -1033,6 +1121,28 @@
}
}
}
+ },
+ "404": {
+ "description": "Bookmark not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
}
@@ -1104,6 +1214,28 @@
}
}
}
+ },
+ "404": {
+ "description": "Bookmark not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
},
@@ -1173,6 +1305,28 @@
}
}
}
+ },
+ "404": {
+ "description": "Bookmark not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
}
@@ -1215,6 +1369,28 @@
}
}
}
+ },
+ "404": {
+ "description": "Bookmark not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
}
@@ -1300,6 +1476,28 @@
}
}
}
+ },
+ "404": {
+ "description": "Bookmark not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
}
@@ -1345,6 +1543,28 @@
"responses": {
"204": {
"description": "No content - asset was replaced successfully"
+ },
+ "404": {
+ "description": "Bookmark not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
},
@@ -1370,6 +1590,28 @@
"responses": {
"204": {
"description": "No content - asset was detached successfully"
+ },
+ "404": {
+ "description": "Bookmark not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
}
@@ -1476,6 +1718,28 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
}
@@ -1507,6 +1771,28 @@
}
}
}
+ },
+ "404": {
+ "description": "List not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
},
@@ -1529,6 +1815,28 @@
"responses": {
"204": {
"description": "No content - the bookmark was deleted"
+ },
+ "404": {
+ "description": "List not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
},
@@ -1592,6 +1900,28 @@
}
}
}
+ },
+ "404": {
+ "description": "List not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
}
@@ -1639,6 +1969,28 @@
}
}
}
+ },
+ "404": {
+ "description": "List not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
}
@@ -1666,6 +2018,50 @@
"responses": {
"204": {
"description": "No content - the bookmark was added"
+ },
+ "400": {
+ "description": "Bookmark already in list",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "List or bookmark not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
},
@@ -1691,6 +2087,50 @@
"responses": {
"204": {
"description": "No content - the bookmark was added"
+ },
+ "400": {
+ "description": "Bookmark already not in list",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "List or bookmark not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
}
@@ -1759,6 +2199,28 @@
}
}
}
+ },
+ "404": {
+ "description": "Tag not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
},
@@ -1781,6 +2243,28 @@
"responses": {
"204": {
"description": "No content - the bookmark was deleted"
+ },
+ "404": {
+ "description": "Tag not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
},
@@ -1825,6 +2309,28 @@
}
}
}
+ },
+ "404": {
+ "description": "Tag not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
}
@@ -1872,6 +2378,28 @@
}
}
}
+ },
+ "404": {
+ "description": "Tag not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
}
@@ -1986,6 +2514,50 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad highlight request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Bookmark not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
}
@@ -2017,6 +2589,28 @@
}
}
}
+ },
+ "404": {
+ "description": "Highlight not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
},
@@ -2046,6 +2640,28 @@
}
}
}
+ },
+ "404": {
+ "description": "Highlight not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
},
@@ -2096,6 +2712,28 @@
}
}
}
+ },
+ "404": {
+ "description": "Highlight not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message"
+ ]
+ }
+ }
+ }
}
}
}
diff --git a/packages/open-api/lib/bookmarks.ts b/packages/open-api/lib/bookmarks.ts
index b45d6350..51c67369 100644
--- a/packages/open-api/lib/bookmarks.ts
+++ b/packages/open-api/lib/bookmarks.ts
@@ -13,6 +13,7 @@ import {
} from "@karakeep/shared/types/bookmarks";
import { BearerAuth } from "./common";
+import { ErrorSchema } from "./errors";
import { HighlightSchema } from "./highlights";
import {
BookmarkSchema,
@@ -125,6 +126,14 @@ registry.registerPath({
},
},
},
+ 400: {
+ description: "Bad request",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
registry.registerPath({
@@ -146,6 +155,14 @@ registry.registerPath({
},
},
},
+ 404: {
+ description: "Bookmark not found",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
@@ -163,6 +180,14 @@ registry.registerPath({
204: {
description: "No content - the bookmark was deleted",
},
+ 404: {
+ description: "Bookmark not found",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
@@ -194,6 +219,14 @@ registry.registerPath({
},
},
},
+ 404: {
+ description: "Bookmark not found",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
@@ -217,6 +250,14 @@ registry.registerPath({
},
},
},
+ 404: {
+ description: "Bookmark not found",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
@@ -247,6 +288,14 @@ registry.registerPath({
},
},
},
+ 404: {
+ description: "Bookmark not found",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
@@ -277,6 +326,14 @@ registry.registerPath({
},
},
},
+ 404: {
+ description: "Bookmark not found",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
@@ -299,6 +356,14 @@ registry.registerPath({
},
},
},
+ 404: {
+ description: "Bookmark not found",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
@@ -329,6 +394,14 @@ registry.registerPath({
},
},
},
+ 404: {
+ description: "Bookmark not found",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
@@ -359,6 +432,14 @@ registry.registerPath({
204: {
description: "No content - asset was replaced successfully",
},
+ 404: {
+ description: "Bookmark not found",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
@@ -379,5 +460,13 @@ registry.registerPath({
204: {
description: "No content - asset was detached successfully",
},
+ 404: {
+ description: "Bookmark not found",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
diff --git a/packages/open-api/lib/errors.ts b/packages/open-api/lib/errors.ts
new file mode 100644
index 00000000..326e0e9a
--- /dev/null
+++ b/packages/open-api/lib/errors.ts
@@ -0,0 +1,6 @@
+import { z } from "zod";
+
+export const ErrorSchema = z.object({
+ code: z.string(),
+ message: z.string(),
+});
diff --git a/packages/open-api/lib/highlights.ts b/packages/open-api/lib/highlights.ts
index 2e4ec2d1..6eb1970e 100644
--- a/packages/open-api/lib/highlights.ts
+++ b/packages/open-api/lib/highlights.ts
@@ -11,6 +11,7 @@ import {
} from "@karakeep/shared/types/highlights";
import { BearerAuth } from "./common";
+import { ErrorSchema } from "./errors";
import { PaginationSchema } from "./pagination";
export const registry = new OpenAPIRegistry();
@@ -84,6 +85,22 @@ registry.registerPath({
},
},
},
+ 400: {
+ description: "Bad highlight request",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
+ 404: {
+ description: "Bookmark not found",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
registry.registerPath({
@@ -105,6 +122,14 @@ registry.registerPath({
},
},
},
+ 404: {
+ description: "Highlight not found",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
@@ -127,6 +152,14 @@ registry.registerPath({
},
},
},
+ 404: {
+ description: "Highlight not found",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
@@ -158,5 +191,13 @@ registry.registerPath({
},
},
},
+ 404: {
+ description: "Highlight not found",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
diff --git a/packages/open-api/lib/lists.ts b/packages/open-api/lib/lists.ts
index c66acef4..f2c0d954 100644
--- a/packages/open-api/lib/lists.ts
+++ b/packages/open-api/lib/lists.ts
@@ -12,6 +12,7 @@ import {
import { BookmarkIdSchema } from "./bookmarks";
import { BearerAuth } from "./common";
+import { ErrorSchema } from "./errors";
import { PaginatedBookmarksSchema, PaginationSchema } from "./pagination";
export const registry = new OpenAPIRegistry();
@@ -78,6 +79,14 @@ registry.registerPath({
},
},
},
+ 400: {
+ description: "Bad request",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
registry.registerPath({
@@ -99,6 +108,14 @@ registry.registerPath({
},
},
},
+ 404: {
+ description: "List not found",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
@@ -116,6 +133,14 @@ registry.registerPath({
204: {
description: "No content - the bookmark was deleted",
},
+ 404: {
+ description: "List not found",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
@@ -147,6 +172,14 @@ registry.registerPath({
},
},
},
+ 404: {
+ description: "List not found",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
@@ -170,6 +203,14 @@ registry.registerPath({
},
},
},
+ 404: {
+ description: "List not found",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
@@ -187,6 +228,22 @@ registry.registerPath({
204: {
description: "No content - the bookmark was added",
},
+ 400: {
+ description: "Bookmark already in list",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
+ 404: {
+ description: "List or bookmark not found",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
@@ -204,5 +261,21 @@ registry.registerPath({
204: {
description: "No content - the bookmark was added",
},
+ 400: {
+ description: "Bookmark already not in list",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
+ 404: {
+ description: "List or bookmark not found",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
diff --git a/packages/open-api/lib/tags.ts b/packages/open-api/lib/tags.ts
index e7e6561d..86353924 100644
--- a/packages/open-api/lib/tags.ts
+++ b/packages/open-api/lib/tags.ts
@@ -10,6 +10,7 @@ import {
} from "@karakeep/shared/types/tags";
import { BearerAuth } from "./common";
+import { ErrorSchema } from "./errors";
import { PaginatedBookmarksSchema, PaginationSchema } from "./pagination";
export const registry = new OpenAPIRegistry();
@@ -69,6 +70,14 @@ registry.registerPath({
},
},
},
+ 404: {
+ description: "Tag not found",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
@@ -86,6 +95,14 @@ registry.registerPath({
204: {
description: "No content - the bookmark was deleted",
},
+ 404: {
+ description: "Tag not found",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
@@ -117,6 +134,14 @@ registry.registerPath({
},
},
},
+ 404: {
+ description: "Tag not found",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
@@ -140,5 +165,13 @@ registry.registerPath({
},
},
},
+ 404: {
+ description: "Tag not found",
+ content: {
+ "application/json": {
+ schema: ErrorSchema,
+ },
+ },
+ },
},
});
diff --git a/packages/open-api/package.json b/packages/open-api/package.json
index 0059f9bf..dfbb0bb6 100644
--- a/packages/open-api/package.json
+++ b/packages/open-api/package.json
@@ -7,7 +7,7 @@
"dependencies": {
"@asteasolutions/zod-to-openapi": "^7.2.0",
"@karakeep/shared": "workspace:^0.1.0",
- "zod": "^3.22.4"
+ "zod": "^3.24.2"
},
"devDependencies": {
"@karakeep/eslint-config": "workspace:^0.2.0",
diff --git a/packages/sdk/package.json b/packages/sdk/package.json
index 51408f79..eada3234 100644
--- a/packages/sdk/package.json
+++ b/packages/sdk/package.json
@@ -21,6 +21,7 @@
"@karakeep/prettier-config": "workspace:^0.1.0",
"@karakeep/tsconfig": "workspace:^0.1.0",
"@tsconfig/node22": "^22.0.0",
+ "openapi-typescript": "^7.6.1",
"tsx": "^4.7.1",
"vite": "^5.1.0",
"vite-plugin-dts": "^4.4.0"
diff --git a/packages/sdk/src/hoarder-api.d.ts b/packages/sdk/src/hoarder-api.d.ts
index d0fd8e19..44b8bef7 100644
--- a/packages/sdk/src/hoarder-api.d.ts
+++ b/packages/sdk/src/hoarder-api.d.ts
@@ -98,6 +98,18 @@ export interface paths {
"application/json": components["schemas"]["Bookmark"];
};
};
+ /** @description Bad request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
delete?: never;
@@ -180,6 +192,18 @@ export interface paths {
"application/json": components["schemas"]["Bookmark"];
};
};
+ /** @description Bookmark not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
put?: never;
@@ -206,6 +230,18 @@ export interface paths {
};
content?: never;
};
+ /** @description Bookmark not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
options?: never;
@@ -265,6 +301,18 @@ export interface paths {
};
};
};
+ /** @description Bookmark not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
trace?: never;
@@ -313,6 +361,18 @@ export interface paths {
};
};
};
+ /** @description Bookmark not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
delete?: never;
@@ -366,6 +426,18 @@ export interface paths {
};
};
};
+ /** @description Bookmark not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
/**
@@ -404,6 +476,18 @@ export interface paths {
};
};
};
+ /** @description Bookmark not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
options?: never;
@@ -444,6 +528,18 @@ export interface paths {
};
};
};
+ /** @description Bookmark not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
put?: never;
@@ -516,6 +612,18 @@ export interface paths {
};
};
};
+ /** @description Bookmark not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
delete?: never;
@@ -562,6 +670,18 @@ export interface paths {
};
content?: never;
};
+ /** @description Bookmark not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
post?: never;
@@ -588,6 +708,18 @@ export interface paths {
};
content?: never;
};
+ /** @description Bookmark not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
options?: never;
@@ -645,6 +777,7 @@ export interface paths {
content: {
"application/json": {
name: string;
+ description?: string;
icon: string;
/**
* @default manual
@@ -666,6 +799,18 @@ export interface paths {
"application/json": components["schemas"]["List"];
};
};
+ /** @description Bad request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
delete?: never;
@@ -705,6 +850,18 @@ export interface paths {
"application/json": components["schemas"]["List"];
};
};
+ /** @description List not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
put?: never;
@@ -731,6 +888,18 @@ export interface paths {
};
content?: never;
};
+ /** @description List not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
options?: never;
@@ -753,6 +922,7 @@ export interface paths {
content: {
"application/json": {
name?: string;
+ description?: string | null;
icon?: string;
parentId?: string | null;
query?: string;
@@ -769,6 +939,18 @@ export interface paths {
"application/json": components["schemas"]["List"];
};
};
+ /** @description List not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
trace?: never;
@@ -807,6 +989,18 @@ export interface paths {
"application/json": components["schemas"]["PaginatedBookmarks"];
};
};
+ /** @description List not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
put?: never;
@@ -848,6 +1042,30 @@ export interface paths {
};
content?: never;
};
+ /** @description Bookmark already in list */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
+ /** @description List or bookmark not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
post?: never;
@@ -874,6 +1092,30 @@ export interface paths {
};
content?: never;
};
+ /** @description Bookmark already not in list */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
+ /** @description List or bookmark not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
options?: never;
@@ -953,6 +1195,18 @@ export interface paths {
"application/json": components["schemas"]["Tag"];
};
};
+ /** @description Tag not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
put?: never;
@@ -979,6 +1233,18 @@ export interface paths {
};
content?: never;
};
+ /** @description Tag not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
options?: never;
@@ -1014,6 +1280,18 @@ export interface paths {
"application/json": components["schemas"]["Tag"];
};
};
+ /** @description Tag not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
trace?: never;
@@ -1052,6 +1330,18 @@ export interface paths {
"application/json": components["schemas"]["PaginatedBookmarks"];
};
};
+ /** @description Tag not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
put?: never;
@@ -1135,6 +1425,30 @@ export interface paths {
"application/json": components["schemas"]["Highlight"];
};
};
+ /** @description Bad highlight request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
+ /** @description Bookmark not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
delete?: never;
@@ -1174,6 +1488,18 @@ export interface paths {
"application/json": components["schemas"]["Highlight"];
};
};
+ /** @description Highlight not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
put?: never;
@@ -1202,6 +1528,18 @@ export interface paths {
"application/json": components["schemas"]["Highlight"];
};
};
+ /** @description Highlight not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
options?: never;
@@ -1238,6 +1576,18 @@ export interface paths {
"application/json": components["schemas"]["Highlight"];
};
};
+ /** @description Highlight not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ code: string;
+ message: string;
+ };
+ };
+ };
};
};
trace?: never;
@@ -1440,6 +1790,7 @@ export interface components {
List: {
id: string;
name: string;
+ description?: string | null;
icon: string;
parentId: string | null;
/**
diff --git a/packages/shared/package.json b/packages/shared/package.json
index 14815c86..a262267a 100644
--- a/packages/shared/package.json
+++ b/packages/shared/package.json
@@ -12,7 +12,7 @@
"openai": "^4.86.1",
"typescript-parsec": "^0.3.4",
"winston": "^3.11.0",
- "zod": "^3.22.4",
+ "zod": "^3.24.2",
"zod-to-json-schema": "^3.24.3"
},
"devDependencies": {
diff --git a/packages/trpc/package.json b/packages/trpc/package.json
index 8cb74f0b..94fdee1b 100644
--- a/packages/trpc/package.json
+++ b/packages/trpc/package.json
@@ -20,7 +20,7 @@
"drizzle-orm": "^0.38.3",
"superjson": "^2.2.1",
"tiny-invariant": "^1.3.3",
- "zod": "^3.22.4"
+ "zod": "^3.24.2"
},
"devDependencies": {
"@karakeep/eslint-config": "workspace:^0.2.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c1e9449c..eb3b16a7 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -116,8 +116,8 @@ importers:
specifier: ^1.0.7
version: 1.0.7(tailwindcss@3.4.1)
zod:
- specifier: ^3.22.4
- version: 3.22.4
+ specifier: ^3.24.2
+ version: 3.24.2
devDependencies:
'@crxjs/vite-plugin':
specifier: 2.0.0-beta.28
@@ -295,6 +295,40 @@ importers:
specifier: ^4.3.0
version: 4.3.0(typescript@5.7.3)(vite@5.1.4(@types/node@22.13.0))
+ apps/mcp:
+ dependencies:
+ '@karakeep/sdk':
+ specifier: workspace:*
+ version: link:../../packages/sdk
+ '@modelcontextprotocol/sdk':
+ specifier: ^1.9.0
+ version: 1.9.0
+ zod:
+ specifier: ^3.24.2
+ version: 3.24.2
+ devDependencies:
+ '@karakeep/eslint-config':
+ specifier: workspace:^0.2.0
+ version: link:../../tooling/eslint
+ '@karakeep/prettier-config':
+ specifier: workspace:^0.1.0
+ version: link:../../tooling/prettier
+ '@karakeep/tsconfig':
+ specifier: workspace:^0.1.0
+ version: link:../../tooling/typescript
+ '@tsconfig/node22':
+ specifier: ^22.0.0
+ version: 22.0.0
+ shx:
+ specifier: ^0.4.0
+ version: 0.4.0
+ tsx:
+ specifier: ^4.7.1
+ version: 4.7.1
+ vite:
+ specifier: ^5.1.0
+ version: 5.1.4(@types/node@22.13.0)
+
apps/mobile:
dependencies:
'@karakeep/shared':
@@ -418,8 +452,8 @@ importers:
specifier: ^10.0.0
version: 10.0.0(react@18.3.1)
zod:
- specifier: ^3.22.4
- version: 3.22.4
+ specifier: ^3.24.2
+ version: 3.24.2
zustand:
specifier: ^4.5.1
version: 4.5.1(@types/react@18.3.12)(react@18.3.1)
@@ -683,8 +717,8 @@ importers:
specifier: ^2.2.1
version: 2.2.1
zod:
- specifier: ^3.22.4
- version: 3.22.4
+ specifier: ^3.24.2
+ version: 3.24.2
zustand:
specifier: ^4.5.1
version: 4.5.1(@types/react@18.2.58)(react@18.3.1)
@@ -855,8 +889,8 @@ importers:
specifier: ^5.7.3
version: 5.7.3
zod:
- specifier: ^3.22.4
- version: 3.22.4
+ specifier: ^3.24.2
+ version: 3.24.2
devDependencies:
'@karakeep/eslint-config':
specifier: workspace:^0.2.0
@@ -992,13 +1026,13 @@ importers:
dependencies:
'@asteasolutions/zod-to-openapi':
specifier: ^7.2.0
- version: 7.2.0(zod@3.22.4)
+ version: 7.2.0(zod@3.24.2)
'@karakeep/shared':
specifier: workspace:^0.1.0
version: link:../shared
zod:
- specifier: ^3.22.4
- version: 3.22.4
+ specifier: ^3.24.2
+ version: 3.24.2
devDependencies:
'@karakeep/eslint-config':
specifier: workspace:^0.2.0
@@ -1031,6 +1065,9 @@ importers:
'@tsconfig/node22':
specifier: ^22.0.0
version: 22.0.0
+ openapi-typescript:
+ specifier: ^7.6.1
+ version: 7.6.1(typescript@5.7.3)
tsx:
specifier: ^4.7.1
version: 4.7.1
@@ -1057,7 +1094,7 @@ importers:
version: 0.5.14
openai:
specifier: ^4.86.1
- version: 4.86.1(zod@3.22.4)
+ version: 4.86.1(zod@3.24.2)
typescript-parsec:
specifier: ^0.3.4
version: 0.3.4
@@ -1065,11 +1102,11 @@ importers:
specifier: ^3.11.0
version: 3.11.0
zod:
- specifier: ^3.22.4
- version: 3.22.4
+ specifier: ^3.24.2
+ version: 3.24.2
zod-to-json-schema:
specifier: ^3.24.3
- version: 3.24.3(zod@3.22.4)
+ version: 3.24.3(zod@3.24.2)
devDependencies:
'@karakeep/eslint-config':
specifier: workspace:^0.2.0
@@ -1142,8 +1179,8 @@ importers:
specifier: ^1.3.3
version: 1.3.3
zod:
- specifier: ^3.22.4
- version: 3.22.4
+ specifier: ^3.24.2
+ version: 3.24.2
devDependencies:
'@karakeep/eslint-config':
specifier: workspace:^0.2.0
@@ -3542,6 +3579,10 @@ packages:
'@microsoft/tsdoc@0.15.1':
resolution: {integrity: sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==}
+ '@modelcontextprotocol/sdk@1.9.0':
+ resolution: {integrity: sha512-Jq2EUCQpe0iyO5FGpzVYDNFR6oR53AIrwph9yWl7uSc7IWUMsrmpmSaTGra5hQNunXpM+9oit85p924jWuHzUA==}
+ engines: {node: '>=18'}
+
'@monaco-editor/loader@1.4.0':
resolution: {integrity: sha512-00ioBig0x642hytVspPl7DbQyaSWRaolYie/UFNjoTdvoKPzo6xrXLhTk9ixgIKcLH5b5vDOjVNiGyY+uDCUlg==}
peerDependencies:
@@ -4495,6 +4536,16 @@ packages:
'@react-navigation/routers@7.0.0':
resolution: {integrity: sha512-b2ehNmgAfDziTd0EERm0C9JI9JH1kdRS4SNBWbKQOVPv23WG+5ExovwWet26sGtMabLJ5lxSE8Z2/fByfggjNQ==}
+ '@redocly/ajv@8.11.2':
+ resolution: {integrity: sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg==}
+
+ '@redocly/config@0.22.2':
+ resolution: {integrity: sha512-roRDai8/zr2S9YfmzUfNhKjOF0NdcOIqF7bhf4MVC5UxpjIysDjyudvlAiVbpPHp3eDRWbdzUgtkK1a7YiDNyQ==}
+
+ '@redocly/openapi-core@1.34.2':
+ resolution: {integrity: sha512-glfkQFJizLdq2fBkNvc2FJW0sxDb5exd0wIXhFk+WHaFLMREBC3CxRo2Zq7uJIdfV9U3YTceMbXJklpDfmmwFQ==}
+ engines: {node: '>=18.17.0', npm: '>=9.5.0'}
+
'@reduxjs/toolkit@1.9.7':
resolution: {integrity: sha512-t7v8ZPxhhKgOKtU+uyJT13lu4vL7az5aFi4IdoDs/eS548edn2M8Ik9h8fxgvMjGoAUVFSt6ZC1P5cWmQ014QQ==}
peerDependencies:
@@ -5564,6 +5615,10 @@ packages:
resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
engines: {node: '>= 0.6'}
+ accepts@2.0.0:
+ resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
+ engines: {node: '>= 0.6'}
+
acorn-import-assertions@1.9.0:
resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==}
deprecated: package has been renamed to acorn-import-attributes
@@ -5674,6 +5729,10 @@ packages:
ansi-align@3.0.1:
resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
+ ansi-colors@4.1.3:
+ resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
+ engines: {node: '>=6'}
+
ansi-escapes@4.3.2:
resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
engines: {node: '>=8'}
@@ -6051,6 +6110,10 @@ packages:
resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+ body-parser@2.2.0:
+ resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==}
+ engines: {node: '>=18'}
+
bonjour-service@1.2.1:
resolution: {integrity: sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==}
@@ -6172,10 +6235,18 @@ packages:
resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==}
engines: {node: '>=8'}
+ call-bind-apply-helpers@1.0.2:
+ resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
+ engines: {node: '>= 0.4'}
+
call-bind@1.0.7:
resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
engines: {node: '>= 0.4'}
+ call-bound@1.0.4:
+ resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
+ engines: {node: '>= 0.4'}
+
caller-callsite@2.0.0:
resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==}
engines: {node: '>=4'}
@@ -6242,6 +6313,9 @@ packages:
resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
+ change-case@5.4.4:
+ resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==}
+
char-regex@1.0.2:
resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==}
engines: {node: '>=10'}
@@ -6436,6 +6510,9 @@ packages:
colord@2.9.3:
resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==}
+ colorette@1.4.0:
+ resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==}
+
colorette@2.0.20:
resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
@@ -6553,6 +6630,10 @@ packages:
resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
engines: {node: '>= 0.6'}
+ content-disposition@1.0.0:
+ resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==}
+ engines: {node: '>= 0.6'}
+
content-type@1.0.5:
resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
engines: {node: '>= 0.6'}
@@ -6578,6 +6659,10 @@ packages:
resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
engines: {node: '>= 0.6'}
+ cookie@0.7.2:
+ resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
+ engines: {node: '>= 0.6'}
+
cookiejar@2.1.4:
resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==}
@@ -6610,6 +6695,10 @@ packages:
core-util-is@1.0.3:
resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+ cors@2.8.5:
+ resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
+ engines: {node: '>= 0.10'}
+
cosmiconfig@5.2.1:
resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==}
engines: {node: '>=4'}
@@ -7315,6 +7404,10 @@ packages:
sqlite3:
optional: true
+ dunder-proto@1.0.1:
+ resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
+ engines: {node: '>= 0.4'}
+
duplexer@0.1.2:
resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}
@@ -7423,6 +7516,10 @@ packages:
resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
engines: {node: '>= 0.4'}
+ es-define-property@1.0.1:
+ resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
+ engines: {node: '>= 0.4'}
+
es-errors@1.3.0:
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
engines: {node: '>= 0.4'}
@@ -7437,6 +7534,10 @@ packages:
es-module-lexer@1.4.1:
resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==}
+ es-object-atoms@1.1.1:
+ resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
+ engines: {node: '>= 0.4'}
+
es-set-tostringtag@2.0.3:
resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==}
engines: {node: '>= 0.4'}
@@ -7734,6 +7835,14 @@ packages:
resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
engines: {node: '>=0.8.x'}
+ eventsource-parser@3.0.1:
+ resolution: {integrity: sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==}
+ engines: {node: '>=18.0.0'}
+
+ eventsource@3.0.6:
+ resolution: {integrity: sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA==}
+ engines: {node: '>=18.0.0'}
+
exec-async@2.2.0:
resolution: {integrity: sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==}
@@ -7964,10 +8073,20 @@ packages:
exponential-backoff@3.1.1:
resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==}
+ express-rate-limit@7.5.0:
+ resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==}
+ engines: {node: '>= 16'}
+ peerDependencies:
+ express: ^4.11 || 5 || ^5.0.0-beta.1
+
express@4.18.3:
resolution: {integrity: sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw==}
engines: {node: '>= 0.10.0'}
+ express@5.1.0:
+ resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==}
+ engines: {node: '>= 18'}
+
ext@1.7.0:
resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==}
@@ -8116,6 +8235,10 @@ packages:
resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==}
engines: {node: '>= 0.8'}
+ finalhandler@2.1.0:
+ resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==}
+ engines: {node: '>= 0.8'}
+
find-cache-dir@2.1.0:
resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==}
engines: {node: '>=6'}
@@ -8258,6 +8381,10 @@ packages:
resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
engines: {node: '>= 0.6'}
+ fresh@2.0.0:
+ resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==}
+ engines: {node: '>= 0.8'}
+
fs-constants@1.0.0:
resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
@@ -8329,6 +8456,10 @@ packages:
resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
engines: {node: '>= 0.4'}
+ get-intrinsic@1.3.0:
+ resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
+ engines: {node: '>= 0.4'}
+
get-nonce@1.0.1:
resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
engines: {node: '>=6'}
@@ -8344,6 +8475,10 @@ packages:
resolution: {integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==}
engines: {node: '>=4'}
+ get-proto@1.0.1:
+ resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
+ engines: {node: '>= 0.4'}
+
get-stdin@5.0.1:
resolution: {integrity: sha512-jZV7n6jGE3Gt7fgSTJoz91Ak5MuTLwMwkoYdjxuJ/AmjIsE1UC03y/IWkZCQGEvVNS9qoRNwy5BCqxImv0FVeA==}
engines: {node: '>=0.12.0'}
@@ -8469,6 +8604,10 @@ packages:
gopd@1.0.1:
resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
+ gopd@1.2.0:
+ resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
+ engines: {node: '>= 0.4'}
+
got@11.8.6:
resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==}
engines: {node: '>=10.19.0'}
@@ -8526,6 +8665,10 @@ packages:
resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
engines: {node: '>= 0.4'}
+ has-symbols@1.1.0:
+ resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
+ engines: {node: '>= 0.4'}
+
has-tostringtag@1.0.2:
resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
engines: {node: '>= 0.4'}
@@ -8542,6 +8685,10 @@ packages:
resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==}
engines: {node: '>= 0.4'}
+ hasown@2.0.2:
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
+
hast-util-from-parse5@8.0.1:
resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==}
@@ -8825,6 +8972,10 @@ packages:
resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
engines: {node: '>=8'}
+ index-to-position@1.1.0:
+ resolution: {integrity: sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==}
+ engines: {node: '>=18'}
+
infima@0.2.0-alpha.44:
resolution: {integrity: sha512-tuRkUSO/lB3rEhLJk25atwAjgLuzq070+pOW8XcvpHky/YbENnRRdPd85IBkyeTgttmOy5ah+yHYsK1HhUd4lQ==}
engines: {node: '>=12'}
@@ -9080,6 +9231,9 @@ packages:
is-promise@2.2.2:
resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==}
+ is-promise@4.0.0:
+ resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==}
+
is-reference@3.0.2:
resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==}
@@ -9291,6 +9445,10 @@ packages:
jose@5.2.2:
resolution: {integrity: sha512-/WByRr4jDcsKlvMd1dRJnPfS1GVO3WuKyaurJ/vvXcOaUQO8rnNObCQMlv/5uCceVQIq5Q4WLF44ohsdiTohdg==}
+ js-levenshtein@1.1.6:
+ resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==}
+ engines: {node: '>=0.10.0'}
+
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@@ -9768,6 +9926,10 @@ packages:
marky@1.2.5:
resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==}
+ math-intrinsics@1.1.0:
+ resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
+ engines: {node: '>= 0.4'}
+
md5-file@3.2.3:
resolution: {integrity: sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==}
engines: {node: '>=0.10'}
@@ -9849,6 +10011,10 @@ packages:
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
engines: {node: '>= 0.6'}
+ media-typer@1.1.0:
+ resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==}
+ engines: {node: '>= 0.8'}
+
meilisearch@0.37.0:
resolution: {integrity: sha512-LdbK6JmRghCawrmWKJSEQF0OiE82md+YqJGE/U2JcCD8ROwlhTx0KM6NX4rQt0u0VpV0QZVG9umYiu3CSSIJAQ==}
@@ -9873,6 +10039,10 @@ packages:
merge-descriptors@1.0.1:
resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==}
+ merge-descriptors@2.0.0:
+ resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==}
+ engines: {node: '>=18'}
+
merge-stream@2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
@@ -10141,6 +10311,10 @@ packages:
resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
engines: {node: '>= 0.6'}
+ mime-db@1.54.0:
+ resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==}
+ engines: {node: '>= 0.6'}
+
mime-format@2.0.0:
resolution: {integrity: sha512-sv1KDeJFutfXbT+MpIuExruuVZ7LSNQVHIxf7IZVr0a/qWKcHY8DHklWoO6CWf7QnGLl0eC8vBEghl5paWSqqg==}
@@ -10159,6 +10333,10 @@ packages:
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
engines: {node: '>= 0.6'}
+ mime-types@3.0.1:
+ resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==}
+ engines: {node: '>= 0.6'}
+
mime@1.6.0:
resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
engines: {node: '>=4'}
@@ -10368,6 +10546,10 @@ packages:
resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
engines: {node: '>= 0.6'}
+ negotiator@1.0.0:
+ resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==}
+ engines: {node: '>= 0.6'}
+
neo-async@2.6.2:
resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
@@ -10606,6 +10788,10 @@ packages:
object-inspect@1.13.1:
resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
+ object-inspect@1.13.4:
+ resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
+ engines: {node: '>= 0.4'}
+
object-keys@1.1.1:
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
engines: {node: '>= 0.4'}
@@ -10703,6 +10889,12 @@ packages:
openapi-typescript-helpers@0.0.15:
resolution: {integrity: sha512-opyTPaunsklCBpTK8JGef6mfPhLSnyy5a0IN9vKtx3+4aExf+KxEqYwIy3hqkedXIB97u357uLMJsOnm3GVjsw==}
+ openapi-typescript@7.6.1:
+ resolution: {integrity: sha512-F7RXEeo/heF3O9lOXo2bNjCOtfp7u+D6W3a3VNEH2xE6v+fxLtn5nq0uvUcA1F5aT+CMhNeC5Uqtg5tlXFX/ag==}
+ hasBin: true
+ peerDependencies:
+ typescript: ^5.x
+
openapi3-ts@4.4.0:
resolution: {integrity: sha512-9asTNB9IkKEzWMcHmVZE7Ts3kC9G7AFHfs8i7caD8HbI76gEjdkId4z/AkP83xdZsH7PLAnnbl47qZkXuxpArw==}
@@ -10829,6 +11021,10 @@ packages:
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
engines: {node: '>=8'}
+ parse-json@8.3.0:
+ resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==}
+ engines: {node: '>=18'}
+
parse-ms@2.1.0:
resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==}
engines: {node: '>=6'}
@@ -10928,6 +11124,10 @@ packages:
path-to-regexp@2.2.1:
resolution: {integrity: sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==}
+ path-to-regexp@8.2.0:
+ resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==}
+ engines: {node: '>=16'}
+
path-type@4.0.0:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
@@ -11003,6 +11203,10 @@ packages:
resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
engines: {node: '>= 6'}
+ pkce-challenge@5.0.0:
+ resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==}
+ engines: {node: '>=16.20.0'}
+
pkg-dir@3.0.0:
resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==}
engines: {node: '>=6'}
@@ -11026,6 +11230,10 @@ packages:
resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==}
engines: {node: '>=10.4.0'}
+ pluralize@8.0.0:
+ resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
+ engines: {node: '>=4'}
+
pngjs@3.4.0:
resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==}
engines: {node: '>=4.0.0'}
@@ -11619,14 +11827,14 @@ packages:
resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==}
engines: {node: '>=0.6'}
- qs@6.12.0:
- resolution: {integrity: sha512-trVZiI6RMOkO476zLGaBIzszOdFPnCCXHPG9kn0yuS1uz6xdVxPfZdB3vUig9pxPFDM9BRAgz/YUIVQ1/vuiUg==}
- engines: {node: '>=0.6'}
-
qs@6.13.1:
resolution: {integrity: sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==}
engines: {node: '>=0.6'}
+ qs@6.14.0:
+ resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==}
+ engines: {node: '>=0.6'}
+
query-string@7.1.3:
resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==}
engines: {node: '>=6'}
@@ -11662,6 +11870,10 @@ packages:
resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
engines: {node: '>= 0.8'}
+ raw-body@3.0.0:
+ resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==}
+ engines: {node: '>= 0.8'}
+
rc@1.2.8:
resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
hasBin: true
@@ -12292,6 +12504,10 @@ packages:
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
+ router@2.2.0:
+ resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==}
+ engines: {node: '>= 18'}
+
rrweb-cssom@0.6.0:
resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==}
@@ -12428,6 +12644,10 @@ packages:
resolution: {integrity: sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==}
engines: {node: '>= 0.8.0'}
+ send@1.2.0:
+ resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==}
+ engines: {node: '>= 18'}
+
serialize-error@2.1.0:
resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==}
engines: {node: '>=0.10.0'}
@@ -12449,6 +12669,10 @@ packages:
resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==}
engines: {node: '>= 0.8.0'}
+ serve-static@2.2.0:
+ resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==}
+ engines: {node: '>= 18'}
+
server-only@0.0.1:
resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==}
@@ -12518,6 +12742,11 @@ packages:
engines: {node: '>=4'}
hasBin: true
+ shelljs@0.9.2:
+ resolution: {integrity: sha512-S3I64fEiKgTZzKCC46zT/Ib9meqofLrQVbpSswtjFfAVDW+AZ54WTnAM/3/yENoxz/V1Cy6u3kiiEbQ4DNphvw==}
+ engines: {node: '>=18'}
+ hasBin: true
+
sherif-darwin-arm64@1.2.0:
resolution: {integrity: sha512-v3EcA7qVYz+jQHbYrH1E8dYTXCm6/+UcwIa2dsGhSMxEZcLw/4nDJ3q5MtDBexcutVZNYzoDFurjGZ7AwB0fEQ==}
cpu: [arm64]
@@ -12552,10 +12781,31 @@ packages:
resolution: {integrity: sha512-lWdfPk9hqTSz78en8XrTnClYO/uP3LTAbxrrjxoIvi0ll4ts1WjXV6SRvBKXBXpcklGxETzQxqLZKqeqq0u+dQ==}
hasBin: true
+ shx@0.4.0:
+ resolution: {integrity: sha512-Z0KixSIlGPpijKgcH6oCMCbltPImvaKy0sGH8AkLRXw1KyzpKtaCTizP2xen+hNDqVF4xxgvA0KXSb9o4Q6hnA==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ side-channel-list@1.0.0:
+ resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-map@1.0.1:
+ resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-weakmap@1.0.2:
+ resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
+ engines: {node: '>= 0.4'}
+
side-channel@1.0.6:
resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
engines: {node: '>= 0.4'}
+ side-channel@1.1.0:
+ resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
+ engines: {node: '>= 0.4'}
+
siginfo@2.0.0:
resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
@@ -12927,6 +13177,10 @@ packages:
resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
engines: {node: '>=10'}
+ supports-color@9.4.0:
+ resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==}
+ engines: {node: '>=12'}
+
supports-hyperlinks@2.3.0:
resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==}
engines: {node: '>=8'}
@@ -13276,10 +13530,18 @@ packages:
resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==}
engines: {node: '>=12.20'}
+ type-fest@4.39.1:
+ resolution: {integrity: sha512-uW9qzd66uyHYxwyVBYiwS4Oi0qZyUqwjU+Oevr6ZogYiXt99EOYtwvzMSLw1c3lYo2HzJsep/NB23iEVEgjG/w==}
+ engines: {node: '>=16'}
+
type-is@1.6.18:
resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
engines: {node: '>= 0.6'}
+ type-is@2.0.1:
+ resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==}
+ engines: {node: '>= 0.6'}
+
type@2.7.3:
resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==}
@@ -13440,6 +13702,9 @@ packages:
resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==}
engines: {node: '>=14.16'}
+ uri-js-replace@1.0.1:
+ resolution: {integrity: sha512-W+C9NWNLFOoBI2QWDp4UT9pv65r2w5Cx+3sTYFvtMdDBxkKt1syCqsUdSFAChbEe1uK5TfS04wt/nGwmaeIQ0g==}
+
uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
@@ -14063,6 +14328,9 @@ packages:
yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+ yaml-ast-parser@0.0.43:
+ resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==}
+
yaml@1.10.2:
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
engines: {node: '>= 6'}
@@ -14119,8 +14387,8 @@ packages:
peerDependencies:
zod: ^3.24.1
- zod@3.22.4:
- resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==}
+ zod@3.24.2:
+ resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==}
zustand@4.5.1:
resolution: {integrity: sha512-XlauQmH64xXSC1qGYNv00ODaQ3B+tNPoy22jv2diYiP4eoDKr9LA+Bh5Bc3gplTrFdb6JVI+N4kc1DZ/tbtfPg==}
@@ -14282,10 +14550,10 @@ snapshots:
lru-cache: 10.4.3
dev: false
- '@asteasolutions/zod-to-openapi@7.2.0(zod@3.22.4)':
+ '@asteasolutions/zod-to-openapi@7.2.0(zod@3.24.2)':
dependencies:
openapi3-ts: 4.4.0
- zod: 3.22.4
+ zod: 3.24.2
dev: false
'@auth/core@0.27.0':
@@ -14348,7 +14616,7 @@ snapshots:
'@babel/traverse': 7.25.9
'@babel/types': 7.26.0
convert-source-map: 2.0.0
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@@ -14445,7 +14713,7 @@ snapshots:
'@babel/core': 7.26.0
'@babel/helper-compilation-targets': 7.25.9
'@babel/helper-plugin-utils': 7.25.9
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
lodash.debounce: 4.0.8
resolve: 1.22.8
transitivePeerDependencies:
@@ -14457,7 +14725,7 @@ snapshots:
'@babel/core': 7.26.0
'@babel/helper-compilation-targets': 7.25.9
'@babel/helper-plugin-utils': 7.25.9
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
lodash.debounce: 4.0.8
resolve: 1.22.8
transitivePeerDependencies:
@@ -15689,7 +15957,7 @@ snapshots:
'@babel/helper-split-export-declaration': 7.22.6
'@babel/parser': 7.26.2
'@babel/types': 7.26.0
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
globals: 11.12.0
transitivePeerDependencies:
- supports-color
@@ -15702,7 +15970,7 @@ snapshots:
'@babel/parser': 7.26.2
'@babel/template': 7.25.9
'@babel/types': 7.26.0
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
globals: 11.12.0
transitivePeerDependencies:
- supports-color
@@ -16818,7 +17086,7 @@ snapshots:
ci-info: 3.9.0
compression: 1.7.4
connect: 3.7.0
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
env-editor: 0.4.2
fast-glob: 3.3.2
form-data: 3.0.1
@@ -16880,7 +17148,7 @@ snapshots:
'@expo/plist': 0.2.0
'@expo/sdk-runtime-versions': 1.0.0
chalk: 4.1.2
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
getenv: 1.0.0
glob: 10.4.5
resolve-from: 5.0.0
@@ -16936,7 +17204,7 @@ snapshots:
'@expo/env@0.4.0':
dependencies:
chalk: 4.1.2
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
dotenv: 16.4.5
dotenv-expand: 11.0.7
getenv: 1.0.0
@@ -16949,7 +17217,7 @@ snapshots:
'@expo/spawn-async': 1.7.2
arg: 5.0.2
chalk: 4.1.2
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
find-up: 5.0.0
getenv: 1.0.0
minimatch: 3.1.2
@@ -16992,7 +17260,7 @@ snapshots:
'@expo/json-file': 9.0.0
'@expo/spawn-async': 1.7.2
chalk: 4.1.2
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
fs-extra: 9.1.0
getenv: 1.0.0
glob: 10.4.5
@@ -17047,7 +17315,7 @@ snapshots:
'@expo/image-utils': 0.6.3
'@expo/json-file': 9.0.0
'@react-native/normalize-colors': 0.76.3
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
fs-extra: 9.1.0
resolve-from: 5.0.0
semver: 7.6.3
@@ -17076,7 +17344,7 @@ snapshots:
dependencies:
'@remix-run/node': 2.15.0(typescript@5.7.3)
abort-controller: 3.0.0
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
source-map-support: 0.5.21
transitivePeerDependencies:
- supports-color
@@ -17819,6 +18087,22 @@ snapshots:
'@microsoft/tsdoc@0.15.1':
dev: true
+ '@modelcontextprotocol/sdk@1.9.0':
+ dependencies:
+ content-type: 1.0.5
+ cors: 2.8.5
+ cross-spawn: 7.0.3
+ eventsource: 3.0.6
+ express: 5.1.0
+ express-rate-limit: 7.5.0(express@5.1.0)
+ pkce-challenge: 5.0.0
+ raw-body: 3.0.0
+ zod: 3.24.2
+ zod-to-json-schema: 3.24.3(zod@3.24.2)
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
'@monaco-editor/loader@1.4.0(monaco-editor@0.31.1)':
dependencies:
monaco-editor: 0.31.1
@@ -17987,9 +18271,9 @@ snapshots:
'@npmcli/agent@2.2.1':
dependencies:
- agent-base: 7.1.0
+ agent-base: 7.1.0(supports-color@9.4.0)
http-proxy-agent: 7.0.2
- https-proxy-agent: 7.0.5
+ https-proxy-agent: 7.0.5(supports-color@9.4.0)
lru-cache: 10.4.3
socks-proxy-agent: 8.0.2
transitivePeerDependencies:
@@ -18889,6 +19173,32 @@ snapshots:
nanoid: 3.3.7
dev: false
+ '@redocly/ajv@8.11.2':
+ dependencies:
+ fast-deep-equal: 3.1.3
+ json-schema-traverse: 1.0.0
+ require-from-string: 2.0.2
+ uri-js-replace: 1.0.1
+ dev: true
+
+ '@redocly/config@0.22.2':
+ dev: true
+
+ '@redocly/openapi-core@1.34.2(supports-color@9.4.0)':
+ dependencies:
+ '@redocly/ajv': 8.11.2
+ '@redocly/config': 0.22.2
+ colorette: 1.4.0
+ https-proxy-agent: 7.0.5(supports-color@9.4.0)
+ js-levenshtein: 1.1.6
+ js-yaml: 4.1.0
+ minimatch: 5.1.6
+ pluralize: 8.0.0
+ yaml-ast-parser: 0.0.43
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
'@reduxjs/toolkit@1.9.7(react-redux@7.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
dependencies:
immer: 9.0.21
@@ -19877,7 +20187,7 @@ snapshots:
'@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.7.3)
'@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.7.3)
'@typescript-eslint/visitor-keys': 6.21.0
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
eslint: 8.57.0
graphemer: 1.4.0
ignore: 5.3.1
@@ -19913,7 +20223,7 @@ snapshots:
'@typescript-eslint/types': 6.21.0
'@typescript-eslint/typescript-estree': 6.21.0(typescript@5.7.3)
'@typescript-eslint/visitor-keys': 6.21.0
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
eslint: 8.57.0
typescript: 5.7.3
transitivePeerDependencies:
@@ -19926,7 +20236,7 @@ snapshots:
'@typescript-eslint/types': 8.22.0
'@typescript-eslint/typescript-estree': 8.22.0(typescript@5.7.3)
'@typescript-eslint/visitor-keys': 8.22.0
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
eslint: 8.57.0
typescript: 5.7.3
transitivePeerDependencies:
@@ -19949,7 +20259,7 @@ snapshots:
dependencies:
'@typescript-eslint/typescript-estree': 6.21.0(typescript@5.7.3)
'@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.7.3)
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
eslint: 8.57.0
ts-api-utils: 1.2.1(typescript@5.7.3)
typescript: 5.7.3
@@ -19961,7 +20271,7 @@ snapshots:
dependencies:
'@typescript-eslint/typescript-estree': 8.22.0(typescript@5.7.3)
'@typescript-eslint/utils': 8.22.0(eslint@8.57.0)(typescript@5.7.3)
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
eslint: 8.57.0
ts-api-utils: 2.0.1(typescript@5.7.3)
typescript: 5.7.3
@@ -19979,7 +20289,7 @@ snapshots:
dependencies:
'@typescript-eslint/types': 6.21.0
'@typescript-eslint/visitor-keys': 6.21.0
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.3
@@ -19994,7 +20304,7 @@ snapshots:
dependencies:
'@typescript-eslint/types': 8.22.0
'@typescript-eslint/visitor-keys': 8.22.0
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
fast-glob: 3.3.2
is-glob: 4.0.3
minimatch: 9.0.4
@@ -20282,6 +20592,12 @@ snapshots:
negotiator: 0.6.3
dev: false
+ accepts@2.0.0:
+ dependencies:
+ mime-types: 3.0.1
+ negotiator: 1.0.0
+ dev: false
+
acorn-import-assertions@1.9.0(acorn@8.11.3):
dependencies:
acorn: 8.11.3
@@ -20303,12 +20619,11 @@ snapshots:
address@1.2.2:
dev: false
- agent-base@7.1.0:
+ agent-base@7.1.0(supports-color@9.4.0):
dependencies:
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
transitivePeerDependencies:
- supports-color
- dev: false
agentkeepalive@4.5.0:
dependencies:
@@ -20391,7 +20706,6 @@ snapshots:
fast-uri: 3.0.1
json-schema-traverse: 1.0.0
require-from-string: 2.0.2
- dev: false
algoliasearch-helper@3.16.3(algoliasearch@4.22.1):
dependencies:
@@ -20428,6 +20742,9 @@ snapshots:
string-width: 4.2.3
dev: false
+ ansi-colors@4.1.3:
+ dev: true
+
ansi-escapes@4.3.2:
dependencies:
type-fest: 0.21.3
@@ -20956,6 +21273,21 @@ snapshots:
- supports-color
dev: false
+ body-parser@2.2.0:
+ dependencies:
+ bytes: 3.1.2
+ content-type: 1.0.5
+ debug: 4.4.0(supports-color@9.4.0)
+ http-errors: 2.0.0
+ iconv-lite: 0.6.3
+ on-finished: 2.4.1
+ qs: 6.14.0
+ raw-body: 3.0.0
+ type-is: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
bonjour-service@1.2.1:
dependencies:
fast-deep-equal: 3.1.3
@@ -21142,6 +21474,11 @@ snapshots:
responselike: 2.0.1
dev: false
+ call-bind-apply-helpers@1.0.2:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+
call-bind@1.0.7:
dependencies:
es-define-property: 1.0.0
@@ -21150,6 +21487,12 @@ snapshots:
get-intrinsic: 1.2.4
set-function-length: 1.2.1
+ call-bound@1.0.4:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ get-intrinsic: 1.3.0
+ dev: false
+
caller-callsite@2.0.0:
dependencies:
callsites: 2.0.0
@@ -21223,6 +21566,9 @@ snapshots:
chalk@5.3.0: {}
+ change-case@5.4.4:
+ dev: true
+
char-regex@1.0.2:
dev: false
@@ -21485,6 +21831,9 @@ snapshots:
colord@2.9.3:
dev: false
+ colorette@1.4.0:
+ dev: true
+
colorette@2.0.20:
dev: false
@@ -21619,6 +21968,11 @@ snapshots:
safe-buffer: 5.2.1
dev: false
+ content-disposition@1.0.0:
+ dependencies:
+ safe-buffer: 5.2.1
+ dev: false
+
content-type@1.0.5:
dev: false
@@ -21638,6 +21992,9 @@ snapshots:
cookie@0.6.0:
dev: false
+ cookie@0.7.2:
+ dev: false
+
cookiejar@2.1.4:
dev: false
@@ -21678,6 +22035,12 @@ snapshots:
core-util-is@1.0.3:
dev: false
+ cors@2.8.5:
+ dependencies:
+ object-assign: 4.1.1
+ vary: 1.1.2
+ dev: false
+
cosmiconfig@5.2.1:
dependencies:
import-fresh: 2.0.0
@@ -21748,7 +22111,6 @@ snapshots:
semver: 5.7.2
shebang-command: 1.2.0
which: 1.3.1
- dev: false
cross-spawn@7.0.3:
dependencies:
@@ -22026,7 +22388,7 @@ snapshots:
debug-fabulous@2.0.2:
dependencies:
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
memoizee: 0.4.17
transitivePeerDependencies:
- supports-color
@@ -22059,9 +22421,10 @@ snapshots:
dependencies:
ms: 2.1.3
- debug@4.4.0:
+ debug@4.4.0(supports-color@9.4.0):
dependencies:
ms: 2.1.3
+ supports-color: 9.4.0
decamelize@1.2.0:
dev: false
@@ -22203,7 +22566,7 @@ snapshots:
detect-port@1.5.1:
dependencies:
address: 1.2.2
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
transitivePeerDependencies:
- supports-color
dev: false
@@ -22494,6 +22857,12 @@ snapshots:
react: 18.3.1
dev: false
+ dunder-proto@1.0.1:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
duplexer@0.1.2:
dev: false
@@ -22550,7 +22919,6 @@ snapshots:
end-of-stream@1.4.4:
dependencies:
once: 1.4.0
- dev: false
enhanced-resolve@5.15.0:
dependencies:
@@ -22639,6 +23007,8 @@ snapshots:
dependencies:
get-intrinsic: 1.2.4
+ es-define-property@1.0.1: {}
+
es-errors@1.3.0: {}
es-iterator-helpers@1.0.17:
@@ -22664,6 +23034,10 @@ snapshots:
es-module-lexer@1.4.1: {}
+ es-object-atoms@1.1.1:
+ dependencies:
+ es-errors: 1.3.0
+
es-set-tostringtag@2.0.3:
dependencies:
get-intrinsic: 1.2.4
@@ -22711,7 +23085,7 @@ snapshots:
esbuild-register@3.5.0(esbuild@0.19.12):
dependencies:
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
esbuild: 0.19.12
transitivePeerDependencies:
- supports-color
@@ -23156,6 +23530,14 @@ snapshots:
events@3.3.0: {}
+ eventsource-parser@3.0.1:
+ dev: false
+
+ eventsource@3.0.6:
+ dependencies:
+ eventsource-parser: 3.0.1
+ dev: false
+
exec-async@2.2.0:
dev: false
@@ -23168,7 +23550,6 @@ snapshots:
p-finally: 1.0.0
signal-exit: 3.0.7
strip-eof: 1.0.0
- dev: false
execa@5.1.1:
dependencies:
@@ -23498,6 +23879,11 @@ snapshots:
exponential-backoff@3.1.1:
dev: false
+ express-rate-limit@7.5.0(express@5.1.0):
+ dependencies:
+ express: 5.1.0
+ dev: false
+
express@4.18.3:
dependencies:
accepts: 1.3.8
@@ -23535,6 +23921,39 @@ snapshots:
- supports-color
dev: false
+ express@5.1.0:
+ dependencies:
+ accepts: 2.0.0
+ body-parser: 2.2.0
+ content-disposition: 1.0.0
+ content-type: 1.0.5
+ cookie: 0.7.2
+ cookie-signature: 1.2.1
+ debug: 4.4.0(supports-color@9.4.0)
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ finalhandler: 2.1.0
+ fresh: 2.0.0
+ http-errors: 2.0.0
+ merge-descriptors: 2.0.0
+ mime-types: 3.0.1
+ on-finished: 2.4.1
+ once: 1.4.0
+ parseurl: 1.3.3
+ proxy-addr: 2.0.7
+ qs: 6.14.0
+ range-parser: 1.2.1
+ router: 2.2.0
+ send: 1.2.0
+ serve-static: 2.2.0
+ statuses: 2.0.1
+ type-is: 2.0.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
ext@1.7.0:
dependencies:
type: 2.7.3
@@ -23549,7 +23968,7 @@ snapshots:
extract-zip@2.0.1:
dependencies:
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
get-stream: 5.2.0
yauzl: 2.10.0
optionalDependencies:
@@ -23584,8 +24003,7 @@ snapshots:
fast-safe-stringify@2.1.1:
dev: false
- fast-uri@3.0.1:
- dev: false
+ fast-uri@3.0.1: {}
fast-url-parser@1.1.3:
dependencies:
@@ -23739,6 +24157,18 @@ snapshots:
- supports-color
dev: false
+ finalhandler@2.1.0:
+ dependencies:
+ debug: 4.4.0(supports-color@9.4.0)
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ statuses: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
find-cache-dir@2.1.0:
dependencies:
commondir: 1.0.1
@@ -23888,7 +24318,7 @@ snapshots:
dezalgo: 1.0.4
hexoid: 1.0.0
once: 1.4.0
- qs: 6.12.0
+ qs: 6.14.0
dev: false
forwarded@0.2.0:
@@ -23902,6 +24332,9 @@ snapshots:
fresh@0.5.2:
dev: false
+ fresh@2.0.0:
+ dev: false
+
fs-constants@1.0.0:
dev: false
@@ -23993,6 +24426,19 @@ snapshots:
has-symbols: 1.0.3
hasown: 2.0.1
+ get-intrinsic@1.3.0:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ function-bind: 1.1.2
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.2
+ math-intrinsics: 1.1.0
+
get-nonce@1.0.1:
dev: false
@@ -24005,13 +24451,17 @@ snapshots:
get-port@3.2.0:
dev: false
+ get-proto@1.0.1:
+ dependencies:
+ dunder-proto: 1.0.1
+ es-object-atoms: 1.1.1
+
get-stdin@5.0.1:
dev: false
get-stream@4.1.0:
dependencies:
pump: 3.0.0
- dev: false
get-stream@5.2.0:
dependencies:
@@ -24044,7 +24494,7 @@ snapshots:
dependencies:
basic-ftp: 5.0.4
data-uri-to-buffer: 6.0.2
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
fs-extra: 11.2.0
transitivePeerDependencies:
- supports-color
@@ -24187,6 +24637,8 @@ snapshots:
dependencies:
get-intrinsic: 1.2.4
+ gopd@1.2.0: {}
+
got@11.8.6:
dependencies:
'@sindresorhus/is': 4.6.0
@@ -24263,6 +24715,8 @@ snapshots:
has-symbols@1.0.3: {}
+ has-symbols@1.1.0: {}
+
has-tostringtag@1.0.2:
dependencies:
has-symbols: 1.0.3
@@ -24279,6 +24733,10 @@ snapshots:
dependencies:
function-bind: 1.1.2
+ hasown@2.0.2:
+ dependencies:
+ function-bind: 1.1.2
+
hast-util-from-parse5@8.0.1:
dependencies:
'@types/hast': 3.0.4
@@ -24582,8 +25040,8 @@ snapshots:
http-proxy-agent@7.0.2:
dependencies:
- agent-base: 7.1.0
- debug: 4.4.0
+ agent-base: 7.1.0(supports-color@9.4.0)
+ debug: 4.4.0(supports-color@9.4.0)
transitivePeerDependencies:
- supports-color
dev: false
@@ -24629,19 +25087,18 @@ snapshots:
https-proxy-agent@7.0.4:
dependencies:
- agent-base: 7.1.0
- debug: 4.4.0
+ agent-base: 7.1.0(supports-color@9.4.0)
+ debug: 4.4.0(supports-color@9.4.0)
transitivePeerDependencies:
- supports-color
dev: false
- https-proxy-agent@7.0.5:
+ https-proxy-agent@7.0.5(supports-color@9.4.0):
dependencies:
- agent-base: 7.1.0
- debug: 4.4.0
+ agent-base: 7.1.0(supports-color@9.4.0)
+ debug: 4.4.0(supports-color@9.4.0)
transitivePeerDependencies:
- supports-color
- dev: false
human-signals@2.1.0:
dev: false
@@ -24732,6 +25189,9 @@ snapshots:
indent-string@4.0.0:
dev: false
+ index-to-position@1.1.0:
+ dev: true
+
infima@0.2.0-alpha.44:
dev: false
@@ -24773,8 +25233,7 @@ snapshots:
hasown: 2.0.1
side-channel: 1.0.6
- interpret@1.4.0:
- dev: false
+ interpret@1.4.0: {}
invariant@2.2.4:
dependencies:
@@ -24970,6 +25429,9 @@ snapshots:
is-promise@2.2.2:
dev: false
+ is-promise@4.0.0:
+ dev: false
+
is-reference@3.0.2:
dependencies:
'@types/estree': 1.0.7
@@ -24996,8 +25458,7 @@ snapshots:
dependencies:
call-bind: 1.0.7
- is-stream@1.1.0:
- dev: false
+ is-stream@1.1.0: {}
is-stream@2.0.1:
dev: false
@@ -25044,7 +25505,7 @@ snapshots:
is-weakset@2.0.2:
dependencies:
call-bind: 1.0.7
- get-intrinsic: 1.2.4
+ get-intrinsic: 1.3.0
is-what@4.1.16: {}
@@ -25247,6 +25708,9 @@ snapshots:
jose@5.2.2:
dev: false
+ js-levenshtein@1.1.6:
+ dev: true
+
js-tokens@4.0.0: {}
js-tokens@8.0.3:
@@ -25340,7 +25804,7 @@ snapshots:
form-data: 4.0.0
html-encoding-sniffer: 4.0.0
http-proxy-agent: 7.0.2
- https-proxy-agent: 7.0.5
+ https-proxy-agent: 7.0.5(supports-color@9.4.0)
is-potential-custom-element-name: 1.0.1
nwsapi: 2.2.13
parse5: 7.1.2
@@ -25369,7 +25833,7 @@ snapshots:
form-data: 4.0.0
html-encoding-sniffer: 4.0.0
http-proxy-agent: 7.0.2
- https-proxy-agent: 7.0.5
+ https-proxy-agent: 7.0.5(supports-color@9.4.0)
is-potential-custom-element-name: 1.0.1
nwsapi: 2.2.13
parse5: 7.1.2
@@ -25609,7 +26073,7 @@ snapshots:
async-mutex: 0.4.1
better-sqlite3: 11.3.0
drizzle-orm: 0.33.0(better-sqlite3@11.3.0)
- zod: 3.22.4
+ zod: 3.24.2
transitivePeerDependencies:
- '@aws-sdk/client-rds-data'
- '@cloudflare/workers-types'
@@ -25874,6 +26338,8 @@ snapshots:
marky@1.2.5:
dev: false
+ math-intrinsics@1.1.0: {}
+
md5-file@3.2.3:
dependencies:
buffer-alloc: 1.2.0
@@ -26103,6 +26569,9 @@ snapshots:
media-typer@0.3.0:
dev: false
+ media-typer@1.1.0:
+ dev: false
+
meilisearch@0.37.0:
dependencies:
cross-fetch: 3.1.8
@@ -26143,6 +26612,9 @@ snapshots:
merge-descriptors@1.0.1:
dev: false
+ merge-descriptors@2.0.0:
+ dev: false
+
merge-stream@2.0.0: {}
merge2@1.4.1: {}
@@ -26772,7 +27244,7 @@ snapshots:
micromark@4.0.0:
dependencies:
'@types/debug': 4.1.12
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
decode-named-character-reference: 1.0.2
devlop: 1.1.0
micromark-core-commonmark: 2.0.0
@@ -26812,6 +27284,9 @@ snapshots:
mime-db@1.52.0: {}
+ mime-db@1.54.0:
+ dev: false
+
mime-format@2.0.0:
dependencies:
charset: 1.0.1
@@ -26836,6 +27311,11 @@ snapshots:
dependencies:
mime-db: 1.52.0
+ mime-types@3.0.1:
+ dependencies:
+ mime-db: 1.54.0
+ dev: false
+
mime@1.6.0:
dev: false
@@ -26893,7 +27373,6 @@ snapshots:
minimatch@5.1.6:
dependencies:
brace-expansion: 2.0.1
- dev: false
minimatch@9.0.3:
dependencies:
@@ -27073,6 +27552,9 @@ snapshots:
negotiator@0.6.3:
dev: false
+ negotiator@1.0.0:
+ dev: false
+
neo-async@2.6.2: {}
nested-error-stacks@2.0.1:
@@ -27190,8 +27672,7 @@ snapshots:
- babel-plugin-macros
dev: false
- nice-try@1.0.5:
- dev: false
+ nice-try@1.0.5: {}
no-case@3.0.4:
dependencies:
@@ -27296,7 +27777,6 @@ snapshots:
npm-run-path@2.0.2:
dependencies:
path-key: 2.0.1
- dev: false
npm-run-path@4.0.1:
dependencies:
@@ -27364,6 +27844,9 @@ snapshots:
object-inspect@1.13.1: {}
+ object-inspect@1.13.4:
+ dev: false
+
object-keys@1.1.1: {}
object.assign@4.1.5:
@@ -27465,7 +27948,7 @@ snapshots:
is-wsl: 2.2.0
dev: false
- openai@4.86.1(zod@3.22.4):
+ openai@4.86.1(zod@3.24.2):
dependencies:
'@types/node': 18.19.18
'@types/node-fetch': 2.6.11
@@ -27474,7 +27957,7 @@ snapshots:
form-data-encoder: 1.7.2
formdata-node: 4.4.1
node-fetch: 2.7.0
- zod: 3.22.4
+ zod: 3.24.2
transitivePeerDependencies:
- encoding
dev: false
@@ -27500,6 +27983,17 @@ snapshots:
openapi-typescript-helpers@0.0.15:
dev: false
+ openapi-typescript@7.6.1(typescript@5.7.3):
+ dependencies:
+ '@redocly/openapi-core': 1.34.2(supports-color@9.4.0)
+ ansi-colors: 4.1.3
+ change-case: 5.4.4
+ parse-json: 8.3.0
+ supports-color: 9.4.0
+ typescript: 5.7.3
+ yargs-parser: 21.1.1
+ dev: true
+
openapi3-ts@4.4.0:
dependencies:
yaml: 2.6.0
@@ -27547,8 +28041,7 @@ snapshots:
p-cancelable@3.0.0:
dev: false
- p-finally@1.0.0:
- dev: false
+ p-finally@1.0.0: {}
p-limit@2.3.0:
dependencies:
@@ -27611,11 +28104,11 @@ snapshots:
pac-proxy-agent@7.0.1:
dependencies:
'@tootallnate/quickjs-emscripten': 0.23.0
- agent-base: 7.1.0
- debug: 4.4.0
+ agent-base: 7.1.0(supports-color@9.4.0)
+ debug: 4.4.0(supports-color@9.4.0)
get-uri: 6.0.3
http-proxy-agent: 7.0.2
- https-proxy-agent: 7.0.5
+ https-proxy-agent: 7.0.5(supports-color@9.4.0)
pac-resolver: 7.0.1
socks-proxy-agent: 8.0.2
transitivePeerDependencies:
@@ -27682,6 +28175,13 @@ snapshots:
json-parse-even-better-errors: 2.3.1
lines-and-columns: 1.2.4
+ parse-json@8.3.0:
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ index-to-position: 1.1.0
+ type-fest: 4.39.1
+ dev: true
+
parse-ms@2.1.0:
dev: false
@@ -27742,8 +28242,7 @@ snapshots:
path-is-inside@1.0.2:
dev: false
- path-key@2.0.1:
- dev: false
+ path-key@2.0.1: {}
path-key@3.1.1: {}
@@ -27787,6 +28286,9 @@ snapshots:
path-to-regexp@2.2.1:
dev: false
+ path-to-regexp@8.2.0:
+ dev: false
+
path-type@4.0.0: {}
path@0.12.7:
@@ -27855,6 +28357,9 @@ snapshots:
pirates@4.0.6: {}
+ pkce-challenge@5.0.0:
+ dev: false
+
pkg-dir@3.0.0:
dependencies:
find-up: 3.0.0
@@ -27889,6 +28394,9 @@ snapshots:
xmlbuilder: 15.1.1
dev: false
+ pluralize@8.0.0:
+ dev: true
+
pngjs@3.4.0:
dev: false
@@ -28585,10 +29093,10 @@ snapshots:
proxy-agent@6.4.0:
dependencies:
- agent-base: 7.1.0
- debug: 4.4.0
+ agent-base: 7.1.0(supports-color@9.4.0)
+ debug: 4.4.0(supports-color@9.4.0)
http-proxy-agent: 7.0.2
- https-proxy-agent: 7.0.4
+ https-proxy-agent: 7.0.5(supports-color@9.4.0)
lru-cache: 7.18.3
pac-proxy-agent: 7.0.1
proxy-from-env: 1.1.0
@@ -28610,7 +29118,6 @@ snapshots:
dependencies:
end-of-stream: 1.4.4
once: 1.4.0
- dev: false
punycode2@1.0.1:
dev: false
@@ -28652,7 +29159,7 @@ snapshots:
puppeteer-extra-plugin-user-data-dir@2.4.1(puppeteer-extra@3.3.6(puppeteer@22.3.0(typescript@5.7.3))):
dependencies:
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
fs-extra: 10.1.0
puppeteer-extra: 3.3.6(puppeteer@22.3.0(typescript@5.7.3))
puppeteer-extra-plugin: 3.2.3(puppeteer-extra@3.3.6(puppeteer@22.3.0(typescript@5.7.3)))
@@ -28663,7 +29170,7 @@ snapshots:
puppeteer-extra-plugin-user-preferences@2.4.1(puppeteer-extra@3.3.6(puppeteer@22.3.0(typescript@5.7.3))):
dependencies:
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
deepmerge: 4.3.1
puppeteer-extra: 3.3.6(puppeteer@22.3.0(typescript@5.7.3))
puppeteer-extra-plugin: 3.2.3(puppeteer-extra@3.3.6(puppeteer@22.3.0(typescript@5.7.3)))
@@ -28675,7 +29182,7 @@ snapshots:
puppeteer-extra-plugin@3.2.3(puppeteer-extra@3.3.6(puppeteer@22.3.0(typescript@5.7.3))):
dependencies:
'@types/debug': 4.1.12
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
merge-deep: 3.0.3
puppeteer-extra: 3.3.6(puppeteer@22.3.0(typescript@5.7.3))
transitivePeerDependencies:
@@ -28710,17 +29217,17 @@ snapshots:
qs@6.11.0:
dependencies:
- side-channel: 1.0.6
+ side-channel: 1.1.0
dev: false
- qs@6.12.0:
+ qs@6.13.1:
dependencies:
side-channel: 1.0.6
dev: false
- qs@6.13.1:
+ qs@6.14.0:
dependencies:
- side-channel: 1.0.6
+ side-channel: 1.1.0
dev: false
query-string@7.1.3:
@@ -28765,6 +29272,14 @@ snapshots:
unpipe: 1.0.0
dev: false
+ raw-body@3.0.0:
+ dependencies:
+ bytes: 3.1.2
+ http-errors: 2.0.0
+ iconv-lite: 0.6.3
+ unpipe: 1.0.0
+ dev: false
+
rc@1.2.8:
dependencies:
deep-extend: 0.6.0
@@ -28977,7 +29492,7 @@ snapshots:
'@babel/helper-module-imports': 7.25.9
'@babel/traverse': 7.25.9
'@babel/types': 7.26.0
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
lightningcss: 1.27.0
react: 18.3.1
react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.24.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)
@@ -28995,7 +29510,7 @@ snapshots:
'@babel/helper-module-imports': 7.25.9
'@babel/traverse': 7.25.9
'@babel/types': 7.26.0
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
lightningcss: 1.27.0
react: 18.3.1
react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.24.0(@babel/core@7.26.0))(react@18.3.1)
@@ -29402,7 +29917,6 @@ snapshots:
rechoir@0.6.2:
dependencies:
resolve: 1.22.8
- dev: false
recursive-readdir@2.2.3:
dependencies:
@@ -29782,6 +30296,17 @@ snapshots:
fsevents: 2.3.3
dev: true
+ router@2.2.0:
+ dependencies:
+ debug: 4.4.0(supports-color@9.4.0)
+ depd: 2.0.0
+ is-promise: 4.0.0
+ parseurl: 1.3.3
+ path-to-regexp: 8.2.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
rrweb-cssom@0.6.0:
dev: false
@@ -29926,8 +30451,7 @@ snapshots:
semver: 7.6.3
dev: false
- semver@5.7.2:
- dev: false
+ semver@5.7.2: {}
semver@6.3.1: {}
@@ -29984,6 +30508,23 @@ snapshots:
- supports-color
dev: false
+ send@1.2.0:
+ dependencies:
+ debug: 4.4.0(supports-color@9.4.0)
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 2.0.0
+ http-errors: 2.0.0
+ mime-types: 3.0.1
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ statuses: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
serialize-error@2.1.0:
dev: false
@@ -30031,6 +30572,16 @@ snapshots:
- supports-color
dev: false
+ serve-static@2.2.0:
+ dependencies:
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ parseurl: 1.3.3
+ send: 1.2.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
server-only@0.0.1:
dev: false
@@ -30137,14 +30688,12 @@ snapshots:
shebang-command@1.2.0:
dependencies:
shebang-regex: 1.0.0
- dev: false
shebang-command@2.0.0:
dependencies:
shebang-regex: 3.0.0
- shebang-regex@1.0.0:
- dev: false
+ shebang-regex@1.0.0: {}
shebang-regex@3.0.0: {}
@@ -30158,6 +30707,14 @@ snapshots:
rechoir: 0.6.2
dev: false
+ shelljs@0.9.2:
+ dependencies:
+ execa: 1.0.0
+ fast-glob: 3.3.2
+ interpret: 1.4.0
+ rechoir: 0.6.2
+ dev: true
+
sherif-darwin-arm64@1.2.0:
dev: true
optional: true
@@ -30192,6 +30749,35 @@ snapshots:
sherif-windows-x64: 1.2.0
dev: true
+ shx@0.4.0:
+ dependencies:
+ minimist: 1.2.8
+ shelljs: 0.9.2
+ dev: true
+
+ side-channel-list@1.0.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+ dev: false
+
+ side-channel-map@1.0.1:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+ dev: false
+
+ side-channel-weakmap@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-map: 1.0.1
+ dev: false
+
side-channel@1.0.6:
dependencies:
call-bind: 1.0.7
@@ -30199,11 +30785,19 @@ snapshots:
get-intrinsic: 1.2.4
object-inspect: 1.13.1
+ side-channel@1.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-list: 1.0.0
+ side-channel-map: 1.0.1
+ side-channel-weakmap: 1.0.2
+ dev: false
+
siginfo@2.0.0:
dev: true
- signal-exit@3.0.7:
- dev: false
+ signal-exit@3.0.7: {}
signal-exit@4.1.0: {}
@@ -30287,8 +30881,8 @@ snapshots:
socks-proxy-agent@8.0.2:
dependencies:
- agent-base: 7.1.0
- debug: 4.4.0
+ agent-base: 7.1.0(supports-color@9.4.0)
+ debug: 4.4.0(supports-color@9.4.0)
socks: 2.8.1
transitivePeerDependencies:
- supports-color
@@ -30337,7 +30931,7 @@ snapshots:
spdy-transport@3.0.0:
dependencies:
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
detect-node: 2.1.0
hpack.js: 2.1.6
obuf: 1.1.2
@@ -30349,7 +30943,7 @@ snapshots:
spdy@4.0.2:
dependencies:
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
handle-thing: 2.0.1
http-deceiver: 1.2.7
select-hose: 2.0.0
@@ -30523,8 +31117,7 @@ snapshots:
strip-comments@2.0.1:
dev: false
- strip-eof@1.0.0:
- dev: false
+ strip-eof@1.0.0: {}
strip-final-newline@2.0.0:
dev: false
@@ -30609,13 +31202,13 @@ snapshots:
dependencies:
component-emitter: 1.3.1
cookiejar: 2.1.4
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
fast-safe-stringify: 2.1.1
form-data: 4.0.0
formidable: 2.1.2
methods: 1.1.2
mime: 2.6.0
- qs: 6.12.0
+ qs: 6.14.0
readable-stream: 3.6.2
semver: 7.6.3
transitivePeerDependencies:
@@ -30639,6 +31232,8 @@ snapshots:
dependencies:
has-flag: 4.0.0
+ supports-color@9.4.0: {}
+
supports-hyperlinks@2.3.0:
dependencies:
has-flag: 4.0.0
@@ -30671,7 +31266,7 @@ snapshots:
table@6.8.2:
dependencies:
- ajv: 8.12.0
+ ajv: 8.17.1
lodash.truncate: 4.4.2
slice-ansi: 4.0.0
string-width: 4.2.3
@@ -31071,12 +31666,22 @@ snapshots:
type-fest@2.19.0:
dev: false
+ type-fest@4.39.1:
+ dev: true
+
type-is@1.6.18:
dependencies:
media-typer: 0.3.0
mime-types: 2.1.35
dev: false
+ type-is@2.0.1:
+ dependencies:
+ content-type: 1.0.5
+ media-typer: 1.1.0
+ mime-types: 3.0.1
+ dev: false
+
type@2.7.3:
dev: false
@@ -31286,6 +31891,9 @@ snapshots:
xdg-basedir: 5.1.0
dev: false
+ uri-js-replace@1.0.1:
+ dev: true
+
uri-js@4.4.1:
dependencies:
punycode: 2.3.1
@@ -31427,7 +32035,7 @@ snapshots:
vite-node@1.6.1(@types/node@22.13.0):
dependencies:
cac: 6.7.14
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
pathe: 1.1.2
picocolors: 1.1.1
vite: 5.1.4(@types/node@22.13.0)
@@ -31449,7 +32057,7 @@ snapshots:
'@volar/typescript': 2.4.11
'@vue/language-core': 2.1.10(typescript@5.7.3)
compare-versions: 6.1.1
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
kolorist: 1.8.0
local-pkg: 0.5.1
magic-string: 0.30.17
@@ -31503,7 +32111,7 @@ snapshots:
'@vitest/utils': 1.6.1
acorn-walk: 8.3.2
chai: 4.4.1
- debug: 4.4.0
+ debug: 4.4.0(supports-color@9.4.0)
execa: 8.0.1
local-pkg: 0.5.1
magic-string: 0.30.17
@@ -31807,7 +32415,6 @@ snapshots:
which@1.3.1:
dependencies:
isexe: 2.0.0
- dev: false
which@2.0.2:
dependencies:
@@ -32117,6 +32724,9 @@ snapshots:
yallist@4.0.0: {}
+ yaml-ast-parser@0.0.43:
+ dev: true
+
yaml@1.10.2:
dev: false
@@ -32133,8 +32743,7 @@ snapshots:
decamelize: 1.2.0
dev: false
- yargs-parser@21.1.1:
- dev: false
+ yargs-parser@21.1.1: {}
yargs@15.4.1:
dependencies:
@@ -32183,12 +32792,12 @@ snapshots:
zlibjs@0.3.1:
dev: false
- zod-to-json-schema@3.24.3(zod@3.22.4):
+ zod-to-json-schema@3.24.3(zod@3.24.2):
dependencies:
- zod: 3.22.4
+ zod: 3.24.2
dev: false
- zod@3.22.4:
+ zod@3.24.2:
dev: false
zustand@4.5.1(@types/react@18.2.58)(react@18.3.1):