diff --git a/apps/dev/express/.env.example b/apps/dev/express/.env.example new file mode 100644 index 0000000000..6959cc6e03 --- /dev/null +++ b/apps/dev/express/.env.example @@ -0,0 +1,7 @@ +AUTH_SECRET= + +AUTH_GITHUB_ID= +AUTH_GITHUB_SECRET= + +AUTH_GOOGLE_ID= +AUTH_GOOGLE_SECRET= \ No newline at end of file diff --git a/apps/dev/express/.gitignore b/apps/dev/express/.gitignore new file mode 100644 index 0000000000..01fd4ed6db --- /dev/null +++ b/apps/dev/express/.gitignore @@ -0,0 +1,21 @@ +# API keys and secrets +.env + +# Dependency directory +node_modules + +# Editors +.idea +*.iml +.vscode/settings.json + +# OS metadata +.DS_Store +Thumbs.db + +# Ignore built ts files +dist/**/* + +# Ignore built css files +/public/css/output.css + diff --git a/apps/dev/express/.prettierignore b/apps/dev/express/.prettierignore new file mode 100644 index 0000000000..f97e266fdd --- /dev/null +++ b/apps/dev/express/.prettierignore @@ -0,0 +1,14 @@ + +.DS_Store +node_modules +/dist +/.turbo +/package +.env +.env.* +!.env.example + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/apps/dev/express/README.md b/apps/dev/express/README.md new file mode 100644 index 0000000000..caa05d73fb --- /dev/null +++ b/apps/dev/express/README.md @@ -0,0 +1,28 @@ +> The example repository is maintained from a [monorepo](https://github.com/nextauthjs/next-auth/tree/main/apps/examples/express). Pull Requests should be opened against [`nextauthjs/next-auth`](https://github.com/nextauthjs/next-auth). + +

+
+ +

Auth.js Example App with Express

+

+ Open Source. Full Stack. Own Your Data. +

+

+ + npm + + + Bundle Size + + + Downloads + + + TypeScript + +

+

+ +# Documentation + +- [express.authjs.dev](https://express.authjs.dev) diff --git a/apps/dev/express/api/index.js b/apps/dev/express/api/index.js new file mode 100644 index 0000000000..37795e6772 --- /dev/null +++ b/apps/dev/express/api/index.js @@ -0,0 +1,3 @@ +import { app } from "../src/app.js" + +export default app diff --git a/apps/dev/express/package.json b/apps/dev/express/package.json new file mode 100644 index 0000000000..23f4fce1fd --- /dev/null +++ b/apps/dev/express/package.json @@ -0,0 +1,35 @@ +{ + "name": "express-auth-app", + "description": "Express + Auth.js Developer app", + "type": "module", + "private": true, + "scripts": { + "start": "node --env-file=.env dist/server.js", + "clean": "rm -rf dist", + "build": "pnpm build:ts && pnpm build:css", + "build:ts": "tsc", + "build:css": "tailwindcss -i ./public/css/style.css -o ./public/css/output.css", + "dev": "tsx watch --env-file=.env src/server.ts & pnpm build:css -w", + "lint": "eslint src/*.ts --fix", + "prettier": "prettier src/*.ts --write" + }, + "author": "Auth.js Team (https://authjs.dev/contributors)", + "license": "MIT", + "dependencies": { + "@auth/express": "workspace:*", + "express": "^4.19.2", + "morgan": "^1.10.0", + "pug": "^3.0.2" + }, + "devDependencies": { + "@prettier/plugin-pug": "^3.0.0", + "@types/express": "^4.17.21", + "@types/morgan": "^1.9.9", + "@types/pug": "^2.0.10", + "tsx": "^4.7.3", + "typescript": "5.4.5" + }, + "engines": { + "node": ">=20.11.0" + } +} diff --git a/apps/dev/express/public/css/style.css b/apps/dev/express/public/css/style.css new file mode 100644 index 0000000000..7f393742af --- /dev/null +++ b/apps/dev/express/public/css/style.css @@ -0,0 +1,5 @@ +@tailwind base; + +@tailwind components; + +@tailwind utilities; diff --git a/apps/dev/express/src/app.ts b/apps/dev/express/src/app.ts new file mode 100644 index 0000000000..27cc8db60c --- /dev/null +++ b/apps/dev/express/src/app.ts @@ -0,0 +1,71 @@ +import express, { type Request, type Response } from "express" +import logger from "morgan" +import { join } from "node:path" + +import { + errorHandler, + errorNotFoundHandler, +} from "./middleware/error.middleware.js" + +import { + authenticatedUser, + currentSession, +} from "./middleware/auth.middleware.js" +import { ExpressAuth } from "@auth/express" +import { authConfig } from "./config/auth.config.js" +import * as pug from "pug" + +export const app = express() + +app.set("port", process.env.PORT || 3004) + +// @ts-expect-error (https://stackoverflow.com/questions/45342307/error-cannot-find-module-pug) +app.engine("pug", pug.__express) +app.set("views", join(import.meta.dirname, "..", "views")) +app.set("view engine", "pug") + +// Trust Proxy for Proxies (Heroku, Render.com, Docker behind Nginx, etc) +// https://stackoverflow.com/questions/40459511/in-express-js-req-protocol-is-not-picking-up-https-for-my-secure-link-it-alwa +app.set("trust proxy", true) + +app.use(logger("dev")) + +// Serve static files +// NB: Uncomment this out if you want Express to serve static files for you vs. using a +// hosting provider which does so for you (for example through a CDN). +// app.use(express.static(join(import.meta.dirname, "..", "public"))) + +// Parse incoming requests data +app.use(express.urlencoded({ extended: true })) +app.use(express.json()) + +// Set session in res.locals +app.use(currentSession) + +// Set up ExpressAuth to handle authentication +// IMPORTANT: It is highly encouraged set up rate limiting on this route +app.use("/api/auth/*", ExpressAuth(authConfig)) + +// Routes +app.get("/protected", async (_req: Request, res: Response) => { + res.render("protected", { session: res.locals.session }) +}) + +app.get( + "/api/protected", + authenticatedUser, + async (_req: Request, res: Response) => { + res.json(res.locals.session) + }, +) + +app.get("/", async (_req: Request, res: Response) => { + res.render("index", { + title: "Express Auth Example", + user: res.locals.session?.user, + }) +}) + +// Error handlers +app.use(errorNotFoundHandler) +app.use(errorHandler) diff --git a/apps/dev/express/src/config/auth.config.ts b/apps/dev/express/src/config/auth.config.ts new file mode 100644 index 0000000000..a85bb2d1f7 --- /dev/null +++ b/apps/dev/express/src/config/auth.config.ts @@ -0,0 +1,69 @@ +import Apple from "@auth/express/providers/apple" +import Auth0 from "@auth/express/providers/auth0" +import AzureB2C from "@auth/express/providers/azure-ad-b2c" +import BoxyHQSAML from "@auth/express/providers/boxyhq-saml" +import Cognito from "@auth/express/providers/cognito" +import Coinbase from "@auth/express/providers/coinbase" +import Discord from "@auth/express/providers/discord" +import Dropbox from "@auth/express/providers/dropbox" +import Facebook from "@auth/express/providers/facebook" +import GitHub from "@auth/express/providers/github" +import Gitlab from "@auth/express/providers/gitlab" +import Google from "@auth/express/providers/google" +import Hubspot from "@auth/express/providers/hubspot" +import Keycloak from "@auth/express/providers/keycloak" +import LinkedIn from "@auth/express/providers/linkedin" +import Netlify from "@auth/express/providers/netlify" +import Okta from "@auth/express/providers/okta" +import Passage from "@auth/express/providers/passage" +import Pinterest from "@auth/express/providers/pinterest" +import Reddit from "@auth/express/providers/reddit" +import Slack from "@auth/express/providers/slack" +import Spotify from "@auth/express/providers/spotify" +import Twitch from "@auth/express/providers/twitch" +import Twitter from "@auth/express/providers/twitter" +import WorkOS from "@auth/express/providers/workos" +import Zoom from "@auth/express/providers/zoom" + +export const authConfig = { + trustHost: true, + debug: process.env.NODE_ENV !== "production" ? true : false, + providers: [ + Apple, + Auth0, + AzureB2C({ + clientId: process.env.AUTH_AZURE_AD_B2C_ID, + clientSecret: process.env.AUTH_AZURE_AD_B2C_SECRET, + issuer: process.env.AUTH_AZURE_AD_B2C_ISSUER, + }), + BoxyHQSAML({ + clientId: "dummy", + clientSecret: "dummy", + issuer: process.env.AUTH_BOXYHQ_SAML_ISSUER, + }), + Cognito, + Coinbase, + Discord, + Dropbox, + Facebook, + GitHub, + Gitlab, + Google, + Hubspot, + Keycloak, + LinkedIn, + Netlify, + Okta, + Passage, + Pinterest, + Reddit, + Slack, + Spotify, + Twitch, + Twitter, + WorkOS({ + connection: process.env.AUTH_WORKOS_CONNECTION!, + }), + Zoom, + ], +} diff --git a/apps/dev/express/src/errors.ts b/apps/dev/express/src/errors.ts new file mode 100644 index 0000000000..43853cfe84 --- /dev/null +++ b/apps/dev/express/src/errors.ts @@ -0,0 +1,14 @@ +export class HttpError extends Error { + status: number + constructor(status: number, message: string) { + super(message) + this.status = status + } +} + +export class NotFoundError extends HttpError { + constructor(message: string, status = 404) { + super(status, message) + this.name = "NotFoundError" + } +} diff --git a/apps/dev/express/src/middleware/auth.middleware.ts b/apps/dev/express/src/middleware/auth.middleware.ts new file mode 100644 index 0000000000..3279ce41da --- /dev/null +++ b/apps/dev/express/src/middleware/auth.middleware.ts @@ -0,0 +1,29 @@ +import { getSession } from "@auth/express" +import { authConfig } from "../config/auth.config.js" +import type { NextFunction, Request, Response } from "express" + +export async function authenticatedUser( + req: Request, + res: Response, + next: NextFunction +) { + const session = res.locals.session ?? (await getSession(req, authConfig)) + + res.locals.session = session + + if (session) { + return next() + } + + res.status(400).json({ message: "Not Authenticated" }) +} + +export async function currentSession( + req: Request, + res: Response, + next: NextFunction +) { + const session = await getSession(req, authConfig) + res.locals.session = session + return next() +} diff --git a/apps/dev/express/src/middleware/error.middleware.ts b/apps/dev/express/src/middleware/error.middleware.ts new file mode 100644 index 0000000000..6a69bcf02a --- /dev/null +++ b/apps/dev/express/src/middleware/error.middleware.ts @@ -0,0 +1,24 @@ +import type { NextFunction, Request, Response } from "express" +import { HttpError, NotFoundError } from "../errors.js" + +export const errorHandler = ( + err: HttpError | Error, + _req: Request, + res: Response, + _next: NextFunction +): void => { + // Render the error page + res.status(("status" in err && err.status) || 500) + res.render("error", { + title: "status" in err ? err.status : err.name, + message: err.message, + }) +} + +export const errorNotFoundHandler = ( + _req: Request, + _res: Response, + next: NextFunction +): void => { + next(new NotFoundError("Not Found")) +} diff --git a/apps/dev/express/src/server.ts b/apps/dev/express/src/server.ts new file mode 100644 index 0000000000..98895c376c --- /dev/null +++ b/apps/dev/express/src/server.ts @@ -0,0 +1,9 @@ +import { app } from "./app.js" + +const port = app.get("port") + +const server = app.listen(port, () => { + console.log(`Listening on port ${port}`) +}) + +export default server diff --git a/apps/dev/express/tsconfig.json b/apps/dev/express/tsconfig.json new file mode 100644 index 0000000000..6b8858be5f --- /dev/null +++ b/apps/dev/express/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "module": "NodeNext", + "esModuleInterop": true, + "target": "esnext", + "noImplicitAny": true, + "moduleResolution": "NodeNext", + "sourceMap": true, + "outDir": "dist", + "baseUrl": ".", + "skipLibCheck": true, + "strict": true + }, + "include": ["src/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/apps/dev/express/views/error.pug b/apps/dev/express/views/error.pug new file mode 100644 index 0000000000..4d62885b53 --- /dev/null +++ b/apps/dev/express/views/error.pug @@ -0,0 +1,5 @@ +extends layout + +block content + h1=title + p=message diff --git a/apps/dev/express/views/index.pug b/apps/dev/express/views/index.pug new file mode 100644 index 0000000000..46708a98ee --- /dev/null +++ b/apps/dev/express/views/index.pug @@ -0,0 +1,11 @@ +extends layout + +block content + h1=title + p + | This is an example site to demonstrate how to use #{ ' ' } + a(href="https://expressjs.com/") Express + | #{ ' ' } with #{ ' ' } + a(href="https://authjs.dev/reference/express") Express Auth + | + | for authentication. diff --git a/apps/dev/express/views/layout.pug b/apps/dev/express/views/layout.pug new file mode 100644 index 0000000000..ed1bf74915 --- /dev/null +++ b/apps/dev/express/views/layout.pug @@ -0,0 +1,34 @@ +doctype html +html + head + title=title + meta(name="viewport" content="width=device-width, initial-scale=1.0") + body + div + div + if session + div + if session.user.image + img(src=`${session.user.image}` style="width:64px;border-radius:50%;") + span + | Signed in as #{ ' ' } + strong= session.user.email || session.user.name + a( + href="/api/auth/signout" + ) Sign out + else + span You are not signed in #{ ' ' } + a#sign-indiv( + href="/api/auth/signin" + ) Sign in + + nav + ul + li + a(href="/") Home + li + a(href="/protected") Protected + li + a(href="/api/protected") Protected (API) + + block content diff --git a/apps/dev/express/views/protected.pug b/apps/dev/express/views/protected.pug new file mode 100644 index 0000000000..97790e3b32 --- /dev/null +++ b/apps/dev/express/views/protected.pug @@ -0,0 +1,15 @@ +extends layout + +block content + if session + h1 Protected page + p + | This is a protected content. You can access this content because you are + | signed in. + p Session expiry: #{ session.expires ? session.expires : '' } + else + h1 Access Denied + p + | You must be #{ ' ' } + a(href="/api/auth/signin") signed in + | #{ ' ' } to view this page diff --git a/package.json b/package.json index 6d9a3e993f..8578292e71 100644 --- a/package.json +++ b/package.json @@ -11,12 +11,11 @@ "test:e2e": "turbo run test:e2e", "test:e2e:watch": "turbo run test:e2e -- --ui", "clean": "turbo run clean --no-cache", - "dev:example": "turbo run dev --parallel --continue --filter=nextjs-example-app... --filter=!./packages/adapter-*", - "dev:db": "turbo run dev --parallel --continue --filter=next-auth-app...", "dev": "turbo run dev --parallel --continue --filter=next-auth-app... --filter=@auth/core --filter=!./packages/adapter-*", - "dev-v4:db": "turbo run dev --parallel --continue --filter=next-auth-app-v4...", - "dev-v4": "turbo run dev --parallel --continue --filter=next-auth-app-v4... --filter=!./packages/adapter-*", + "dev:db": "turbo run dev --parallel --continue --filter=next-auth-app...", "dev:kit": "turbo run dev --parallel --continue --filter=sveltekit-auth-app...", + "dev:express": "turbo run dev --parallel --continue --filter=express-auth-app...", + "dev:example": "turbo run dev --parallel --continue --filter=nextjs-example-app... --filter=!./packages/adapter-*", "dev:docs": "turbo run dev --filter=docs", "dev:docs:adapters": "turbo run dev --filter=docs", "email": "fake-smtp-server", @@ -26,7 +25,6 @@ "release": "release", "peek": "pnpm release --peek", "version:pr": "node ./config/version-pr", - "e2e": "turbo run e2e --filter=next-auth-app", "setup-fw-integration": "pnpm clean --filter=@auth/frameworks-template && node packages/utils/scripts/setup-fw-integration.js" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c43790bed5..a56c6fc05b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -101,6 +101,40 @@ importers: specifier: 1.2.2 version: 1.2.2(@types/node@20.11.7)(@vitest/ui@1.2.2) + apps/dev/express: + dependencies: + '@auth/express': + specifier: workspace:* + version: link:../../../packages/frameworks-express + express: + specifier: ^4.19.2 + version: 4.19.2 + morgan: + specifier: ^1.10.0 + version: 1.10.0 + pug: + specifier: ^3.0.2 + version: 3.0.2 + devDependencies: + '@prettier/plugin-pug': + specifier: ^3.0.0 + version: 3.0.0(prettier@3.1.1) + '@types/express': + specifier: ^4.17.21 + version: 4.17.21 + '@types/morgan': + specifier: ^1.9.9 + version: 1.9.9 + '@types/pug': + specifier: ^2.0.10 + version: 2.0.10 + tsx: + specifier: ^4.7.3 + version: 4.7.3 + typescript: + specifier: 5.4.5 + version: 5.4.5 + apps/dev/nextjs: dependencies: '@auth/prisma-adapter': @@ -182,7 +216,7 @@ importers: version: 0.4.5(react-dom@18.2.0)(react@18.2.0) '@inkeep/widgets': specifier: ^0.2.272 - version: 0.2.272(@internationalized/date@3.5.2)(@types/react@18.2.78)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + version: 0.2.272(@internationalized/date@3.5.2)(@types/react@18.2.78)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5) '@next/third-parties': specifier: ^14.2.1 version: 14.2.1(next@14.2.1)(react@18.2.0) @@ -252,7 +286,7 @@ importers: version: 3.4.3 typedoc: specifier: ^0.25.13 - version: 0.25.13(typescript@5.3.3) + version: 0.25.13(typescript@5.4.5) typedoc-plugin-markdown: specifier: 4.0.0-next.54 version: 4.0.0-next.54(typedoc@0.25.13) @@ -361,7 +395,7 @@ importers: version: 1.3.1 fauna-shell: specifier: 1.2.1 - version: 1.2.1(@types/node@20.12.7)(typescript@5.3.3) + version: 1.2.1(@types/node@20.12.7)(typescript@5.4.5) packages/adapter-firebase: dependencies: @@ -592,7 +626,7 @@ importers: devDependencies: '@xata.io/client': specifier: ^0.13.0 - version: 0.13.4(typescript@5.3.3) + version: 0.13.4(typescript@5.4.5) packages/core: dependencies: @@ -647,7 +681,7 @@ importers: version: 12.0.2(postcss@8.4.19) typedoc: specifier: ^0.25.12 - version: 0.25.12(typescript@5.3.3) + version: 0.25.12(typescript@5.4.5) typedoc-plugin-markdown: specifier: 4.0.0-next.53 version: 4.0.0-next.53(typedoc@0.25.12) @@ -707,7 +741,7 @@ importers: version: 2.4.3(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.9)(vite@5.0.13) '@sveltejs/package': specifier: ^2.0.0 - version: 2.2.6(svelte@4.2.9)(typescript@5.3.3) + version: 2.2.6(svelte@4.2.9)(typescript@5.4.5) '@sveltejs/vite-plugin-svelte': specifier: ^3.0.0 version: 3.0.1(svelte@4.2.9)(vite@5.0.13) @@ -725,7 +759,7 @@ importers: version: 2.6.2 typedoc: specifier: ^0.25.12 - version: 0.25.12(typescript@5.3.3) + version: 0.25.12(typescript@5.4.5) typedoc-plugin-markdown: specifier: 4.0.0-next.53 version: 4.0.0-next.53(typedoc@0.25.12) @@ -5172,7 +5206,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@inkeep/components@0.0.23(@ark-ui/react@0.15.0)(@internationalized/date@3.5.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@inkeep/components@0.0.23(@ark-ui/react@0.15.0)(@internationalized/date@3.5.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5): resolution: {integrity: sha512-JwMdEB2JoMNQwJocYq4ontMOlatYBSkv9AIgPBnxcO9+IkguIQTE5821mrRQJsOtpS58LuFzt+fYcuGX6sqtWw==} peerDependencies: '@ark-ui/react': '>=0.15.0' @@ -5180,11 +5214,11 @@ packages: react-dom: ^18.2.0 dependencies: '@ark-ui/react': 0.15.0(@internationalized/date@3.5.2)(react-dom@18.2.0)(react@18.2.0) - '@inkeep/preset': 0.0.23(@internationalized/date@3.5.2)(typescript@5.3.3) - '@inkeep/preset-chakra': 0.0.23(@internationalized/date@3.5.2)(typescript@5.3.3) + '@inkeep/preset': 0.0.23(@internationalized/date@3.5.2)(typescript@5.4.5) + '@inkeep/preset-chakra': 0.0.23(@internationalized/date@3.5.2)(typescript@5.4.5) '@inkeep/shared': 0.0.24 '@inkeep/styled-system': 0.0.37 - '@pandacss/dev': 0.22.1(typescript@5.3.3) + '@pandacss/dev': 0.22.1(typescript@5.4.5) framer-motion: 10.18.0(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -5194,25 +5228,25 @@ packages: - typescript dev: false - /@inkeep/preset-chakra@0.0.23(@internationalized/date@3.5.2)(typescript@5.3.3): + /@inkeep/preset-chakra@0.0.23(@internationalized/date@3.5.2)(typescript@5.4.5): resolution: {integrity: sha512-3RxQPV28mqBmOJliBJAZlL3lemcIGdZvYs7a2jGESjKUfD19ARNnCXZ+NaXjvdONGB/NiwNsFtBUKEn3YixvQg==} dependencies: '@ark-ui/anatomy': 0.1.0(@internationalized/date@3.5.2) '@inkeep/shared': 0.0.24 - '@pandacss/dev': 0.22.1(typescript@5.3.3) + '@pandacss/dev': 0.22.1(typescript@5.4.5) transitivePeerDependencies: - '@internationalized/date' - jsdom - typescript dev: false - /@inkeep/preset@0.0.23(@internationalized/date@3.5.2)(typescript@5.3.3): + /@inkeep/preset@0.0.23(@internationalized/date@3.5.2)(typescript@5.4.5): resolution: {integrity: sha512-LGI6y3PZq/jJawDA8uUpudbmugKnEpJxvBwxBKpDZ1+DsqKeAx+45DUwLHv3Bd0yrPAZPqnhjumBhoD/uIjrgg==} dependencies: '@ark-ui/anatomy': 0.1.0(@internationalized/date@3.5.2) - '@inkeep/preset-chakra': 0.0.23(@internationalized/date@3.5.2)(typescript@5.3.3) + '@inkeep/preset-chakra': 0.0.23(@internationalized/date@3.5.2)(typescript@5.4.5) '@inkeep/shared': 0.0.24 - '@pandacss/dev': 0.22.1(typescript@5.3.3) + '@pandacss/dev': 0.22.1(typescript@5.4.5) colorjs.io: 0.4.5 transitivePeerDependencies: - '@internationalized/date' @@ -5232,7 +5266,7 @@ packages: resolution: {integrity: sha512-jQ8u/FMRa/7tTtF5uhKiVxSIQjLtazWFdPFr7+aI8Yj/O4ERqXaV98S7852neikQ3cxREYv5mAnaMH8bMMSqNg==} dev: false - /@inkeep/widgets@0.2.272(@internationalized/date@3.5.2)(@types/react@18.2.78)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@inkeep/widgets@0.2.272(@internationalized/date@3.5.2)(@types/react@18.2.78)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5): resolution: {integrity: sha512-4uXGVqXGxMXAAx105QOCgWuhCa0JgALQICVcEF+Q/TBulZBKGwBJKoyb9TTAGLdB/cq6+8FFif1RizBqdf3jUw==} peerDependencies: react: ^18.2.0 @@ -5241,9 +5275,9 @@ packages: '@apollo/client': 3.9.5(@types/react@18.2.78)(graphql-ws@5.14.3)(graphql@16.8.1)(react-dom@18.2.0)(react@18.2.0) '@ark-ui/react': 0.15.0(@internationalized/date@3.5.2)(react-dom@18.2.0)(react@18.2.0) '@inkeep/color-mode': 0.0.23(react-dom@18.2.0)(react@18.2.0) - '@inkeep/components': 0.0.23(@ark-ui/react@0.15.0)(@internationalized/date@3.5.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@inkeep/preset': 0.0.23(@internationalized/date@3.5.2)(typescript@5.3.3) - '@inkeep/preset-chakra': 0.0.23(@internationalized/date@3.5.2)(typescript@5.3.3) + '@inkeep/components': 0.0.23(@ark-ui/react@0.15.0)(@internationalized/date@3.5.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5) + '@inkeep/preset': 0.0.23(@internationalized/date@3.5.2)(typescript@5.4.5) + '@inkeep/preset-chakra': 0.0.23(@internationalized/date@3.5.2)(typescript@5.4.5) '@inkeep/shared': 0.0.24 '@inkeep/styled-system': 0.0.40 '@types/lodash.isequal': 4.5.8 @@ -6200,7 +6234,7 @@ packages: tslib: 2.6.2 dev: true - /@oclif/core@2.15.0(@types/node@20.12.7)(typescript@5.3.3): + /@oclif/core@2.15.0(@types/node@20.12.7)(typescript@5.4.5): resolution: {integrity: sha512-fNEMG5DzJHhYmI3MgpByTvltBOMyFcnRIUMxbiz2ai8rhaYgaTHMG3Q38HcosfIvtw9nCjxpcQtC8MN8QtVCcA==} engines: {node: '>=14.0.0'} dependencies: @@ -6227,7 +6261,7 @@ packages: strip-ansi: 6.0.1 supports-color: 8.1.1 supports-hyperlinks: 2.3.0 - ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.3.3) + ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.4.5) tslib: 2.6.2 widest-line: 3.1.0 wordwrap: 1.0.0 @@ -6255,11 +6289,11 @@ packages: resolution: {integrity: sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw==} dev: true - /@oclif/plugin-help@5.2.20(@types/node@20.12.7)(typescript@5.3.3): + /@oclif/plugin-help@5.2.20(@types/node@20.12.7)(typescript@5.4.5): resolution: {integrity: sha512-u+GXX/KAGL9S10LxAwNUaWdzbEBARJ92ogmM7g3gDVud2HioCmvWQCDohNRVZ9GYV9oKwZ/M8xwd6a1d95rEKQ==} engines: {node: '>=12.0.0'} dependencies: - '@oclif/core': 2.15.0(@types/node@20.12.7)(typescript@5.3.3) + '@oclif/core': 2.15.0(@types/node@20.12.7)(typescript@5.4.5) transitivePeerDependencies: - '@swc/core' - '@swc/wasm' @@ -6267,12 +6301,12 @@ packages: - typescript dev: true - /@oclif/plugin-plugins@2.4.7(@types/node@20.12.7)(typescript@5.3.3): + /@oclif/plugin-plugins@2.4.7(@types/node@20.12.7)(typescript@5.4.5): resolution: {integrity: sha512-6fzUDLWrSK7n6+EBrEekEEYrYTCneRoOF9TzojkjuFn1+ailvUlr98G90bblxKOyy8fqMe7QjvqwTgIDQ9ZIzg==} engines: {node: '>=12.0.0'} dependencies: '@oclif/color': 1.0.13 - '@oclif/core': 2.15.0(@types/node@20.12.7)(typescript@5.3.3) + '@oclif/core': 2.15.0(@types/node@20.12.7)(typescript@5.4.5) chalk: 4.1.2 debug: 4.3.4(supports-color@8.1.1) fs-extra: 9.1.0 @@ -6323,7 +6357,7 @@ packages: escalade: 3.1.1 jiti: 1.21.0 merge-anything: 5.1.7 - typescript: 5.3.3 + typescript: 5.4.5 dev: false /@pandacss/core@0.22.1: @@ -6348,7 +6382,7 @@ packages: ts-pattern: 5.0.5 dev: false - /@pandacss/dev@0.22.1(typescript@5.3.3): + /@pandacss/dev@0.22.1(typescript@5.4.5): resolution: {integrity: sha512-/w6OUwDeL4lM2mVYGBcX/sBcGYaPNLoakTRbLBjo/V/Kc/tTpycuGpag9wHG/ZD58upe6dl4biJ33oFW3B7X4A==} hasBin: true dependencies: @@ -6356,8 +6390,8 @@ packages: '@pandacss/config': 0.22.1 '@pandacss/error': 0.22.1 '@pandacss/logger': 0.22.1 - '@pandacss/node': 0.22.1(typescript@5.3.3) - '@pandacss/postcss': 0.22.1(typescript@5.3.3) + '@pandacss/node': 0.22.1(typescript@5.4.5) + '@pandacss/postcss': 0.22.1(typescript@5.4.5) '@pandacss/preset-panda': 0.22.1 '@pandacss/shared': 0.22.1 '@pandacss/token-dictionary': 0.22.1 @@ -6374,10 +6408,10 @@ packages: resolution: {integrity: sha512-o9vlQBvkaM+4wHhnC8qDBk0GxrCj8KIipheU8BDwLke3ZBq4neL5IMSXB+Vpl/7GFCJFZ/C7TThA1nrAmTa9hg==} dev: false - /@pandacss/extractor@0.22.1(typescript@5.3.3): + /@pandacss/extractor@0.22.1(typescript@5.4.5): resolution: {integrity: sha512-OgPJ0gtGRFExsQQWjIWpsMfMM2XzfafkYh3Q86fR0ap+M4XXcsd3pR9fuoCquZeYnCSe4vpot4TLVwqvB3Ft2Q==} dependencies: - ts-evaluator: 1.2.0(typescript@5.3.3) + ts-evaluator: 1.2.0(typescript@5.4.5) ts-morph: 19.0.0 transitivePeerDependencies: - jsdom @@ -6412,17 +6446,17 @@ packages: lil-fp: 1.4.5 dev: false - /@pandacss/node@0.22.1(typescript@5.3.3): + /@pandacss/node@0.22.1(typescript@5.4.5): resolution: {integrity: sha512-a+Lq6SXP4BLPFtE2mq8TrEA4knaPltFccs/F9oyoEBOpgLwJstKj/lqf/Q1iXVdMAAVkPGNtjfdox5kxoGGzrw==} dependencies: '@pandacss/config': 0.22.1 '@pandacss/core': 0.22.1 '@pandacss/error': 0.22.1 - '@pandacss/extractor': 0.22.1(typescript@5.3.3) + '@pandacss/extractor': 0.22.1(typescript@5.4.5) '@pandacss/generator': 0.22.1 '@pandacss/is-valid-prop': 0.22.1 '@pandacss/logger': 0.22.1 - '@pandacss/parser': 0.22.1(typescript@5.3.3) + '@pandacss/parser': 0.22.1(typescript@5.4.5) '@pandacss/shared': 0.22.1 '@pandacss/token-dictionary': 0.22.1 '@pandacss/types': 0.22.1 @@ -6447,17 +6481,17 @@ packages: prettier: 2.8.8 ts-morph: 19.0.0 ts-pattern: 5.0.5 - tsconfck: 2.1.2(typescript@5.3.3) + tsconfck: 2.1.2(typescript@5.4.5) transitivePeerDependencies: - jsdom - typescript dev: false - /@pandacss/parser@0.22.1(typescript@5.3.3): + /@pandacss/parser@0.22.1(typescript@5.4.5): resolution: {integrity: sha512-uKSpQeVDtG5uF4M1It/SOBjFmyKnDbFaJINVa/wFy5kgETn63jalOaenFTi0YEEzeaIIrElb1mIW6AlqhgYEKw==} dependencies: '@pandacss/config': 0.22.1 - '@pandacss/extractor': 0.22.1(typescript@5.3.3) + '@pandacss/extractor': 0.22.1(typescript@5.4.5) '@pandacss/is-valid-prop': 0.22.1 '@pandacss/logger': 0.22.1 '@pandacss/shared': 0.22.1 @@ -6472,10 +6506,10 @@ packages: - typescript dev: false - /@pandacss/postcss@0.22.1(typescript@5.3.3): + /@pandacss/postcss@0.22.1(typescript@5.4.5): resolution: {integrity: sha512-DzPT8zwsRrPtfzoVXkt2x576veN7bzyF3wERPIOYUtbEkd8uUCunqLoazcMyuUfOaUv9X5pqQkPqsH1glSJ6Dg==} dependencies: - '@pandacss/node': 0.22.1(typescript@5.3.3) + '@pandacss/node': 0.22.1(typescript@5.4.5) postcss: 8.4.38 transitivePeerDependencies: - jsdom @@ -7436,11 +7470,11 @@ packages: /@shikijs/core@1.3.0: resolution: {integrity: sha512-7fedsBfuILDTBmrYZNFI8B6ATTxhQAasUHllHmjvSZPnoq4bULWoTpHwmuQvZ8Aq03/tAa2IGo6RXqWtHdWaCA==} - /@shikijs/twoslash@1.2.4(typescript@5.3.3): + /@shikijs/twoslash@1.2.4(typescript@5.4.5): resolution: {integrity: sha512-4F2gNlCFN9HY0jV3J/IBfqkI7w2HBwycwUBx9fLYGYxzbfu0gYRJdQYWtvJC/sG2rYTYlJrS5BpWdXYoMHwbXw==} dependencies: '@shikijs/core': 1.2.4 - twoslash: 0.2.5(typescript@5.3.3) + twoslash: 0.2.5(typescript@5.4.5) transitivePeerDependencies: - supports-color - typescript @@ -8031,7 +8065,7 @@ packages: vite: 5.0.13(@types/node@20.11.7) dev: true - /@sveltejs/package@2.2.6(svelte@4.2.9)(typescript@5.3.3): + /@sveltejs/package@2.2.6(svelte@4.2.9)(typescript@5.4.5): resolution: {integrity: sha512-rhKL/96M7LCvFI2xN94qsqHtEWr/ypcMGiii3s6dRW7ADt3tiDm8UfExjRR8v5jW3Femz0+VJ0TNevxI4Q9Quw==} engines: {node: ^16.14 || >=18} hasBin: true @@ -8043,7 +8077,7 @@ packages: sade: 1.8.1 semver: 7.5.4 svelte: 4.2.9 - svelte2tsx: 0.7.0(svelte@4.2.9)(typescript@5.3.3) + svelte2tsx: 0.7.0(svelte@4.2.9)(typescript@5.4.5) transitivePeerDependencies: - typescript dev: true @@ -8610,6 +8644,12 @@ packages: resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} dev: true + /@types/morgan@1.9.9: + resolution: {integrity: sha512-iRYSDKVaC6FkGSpEVVIvrRGw0DfJMiQzIn3qr2G5B3C//AWkulhXgaBd7tS9/J79GWSYMTHGs7PfI5b3Y8m+RQ==} + dependencies: + '@types/node': 20.12.7 + dev: true + /@types/ms@0.7.34: resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} @@ -9388,12 +9428,12 @@ packages: tslib: 2.6.2 dev: false - /@xata.io/client@0.13.4(typescript@5.3.3): + /@xata.io/client@0.13.4(typescript@5.4.5): resolution: {integrity: sha512-eODWMjW185bPR3YcBSWOHeH5FlxsVSq8lbCoHxrjt8TZAthXb9MHwEUhgh39GrkwcQ181XRz2XwKDJAipIRg6A==} peerDependencies: typescript: '>=4.5' dependencies: - typescript: 5.3.3 + typescript: 5.4.5 dev: true /@xmldom/xmldom@0.8.10: @@ -10553,7 +10593,6 @@ packages: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} hasBin: true - dev: true /acorn@8.11.3: resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} @@ -10901,7 +10940,6 @@ packages: /asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - dev: true /asn1js@3.0.5: resolution: {integrity: sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==} @@ -10911,6 +10949,10 @@ packages: pvutils: 1.1.3 tslib: 2.6.2 + /assert-never@1.2.1: + resolution: {integrity: sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==} + dev: false + /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true @@ -11158,6 +11200,13 @@ packages: babel-plugin-jsx-dom-expressions: 0.37.16(@babel/core@7.23.9) dev: true + /babel-walk@3.0.0-canary-5: + resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} + engines: {node: '>= 10.0.0'} + dependencies: + '@babel/types': 7.23.9 + dev: false + /bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} dev: false @@ -11181,7 +11230,6 @@ packages: engines: {node: '>= 0.8'} dependencies: safe-buffer: 5.1.2 - dev: true /better-react-mathjax@2.0.3(react@18.2.0): resolution: {integrity: sha512-wfifT8GFOKb1TWm2+E50I6DJpLZ5kLbch283Lu043EJtwSv0XvZDjr4YfR4d2MjAhqP6SH4VjjrKgbX8R00oCQ==} @@ -11273,6 +11321,26 @@ packages: unpipe: 1.0.0 transitivePeerDependencies: - supports-color + dev: false + + /body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color /boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -11677,7 +11745,6 @@ packages: resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==} dependencies: is-regex: 1.1.4 - dev: true /character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} @@ -12105,6 +12172,13 @@ packages: upper-case: 2.0.2 dev: true + /constantinople@4.0.1: + resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} + dependencies: + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + dev: false + /content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} @@ -12145,6 +12219,7 @@ packages: /cookie@0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} + dev: false /cookie@0.6.0: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} @@ -12940,6 +13015,10 @@ packages: esutils: 2.0.3 dev: true + /doctypes@1.1.0: + resolution: {integrity: sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==} + dev: false + /dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} dependencies: @@ -14202,6 +14281,45 @@ packages: vary: 1.1.2 transitivePeerDependencies: - supports-color + dev: false + + /express@4.19.2: + resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.2 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.6.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color /ext@1.7.0: resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} @@ -14245,7 +14363,7 @@ packages: hasBin: true dependencies: cli: 1.0.1 - express: 4.18.2 + express: 4.19.2 express-basic-auth: 1.2.1 lodash: 4.17.21 mailparser: 3.6.6 @@ -14331,15 +14449,15 @@ packages: format: 0.2.2 dev: false - /fauna-shell@1.2.1(@types/node@20.12.7)(typescript@5.3.3): + /fauna-shell@1.2.1(@types/node@20.12.7)(typescript@5.4.5): resolution: {integrity: sha512-JY48qkliJbbrkdeUlKT8Z/NDyZCAsgsiGI+bXIy7tDwTURsNpQ4biNK2X5nqKgdNfULrRn6NkSessdcI+RnoHA==} engines: {node: '>=10.0.0'} hasBin: true dependencies: '@inquirer/prompts': 3.3.2 - '@oclif/core': 2.15.0(@types/node@20.12.7)(typescript@5.3.3) - '@oclif/plugin-help': 5.2.20(@types/node@20.12.7)(typescript@5.3.3) - '@oclif/plugin-plugins': 2.4.7(@types/node@20.12.7)(typescript@5.3.3) + '@oclif/core': 2.15.0(@types/node@20.12.7)(typescript@5.4.5) + '@oclif/plugin-help': 5.2.20(@types/node@20.12.7)(typescript@5.4.5) + '@oclif/plugin-plugins': 2.4.7(@types/node@20.12.7)(typescript@5.4.5) chalk: 4.1.2 cli-table: 0.3.11 cli-ux: 4.9.3 @@ -15226,7 +15344,6 @@ packages: engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - dev: true /has-unicode@2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} @@ -16007,7 +16124,6 @@ packages: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: hasown: 2.0.0 - dev: true /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} @@ -16036,7 +16152,6 @@ packages: dependencies: acorn: 7.4.1 object-assign: 4.1.1 - dev: true /is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} @@ -16147,7 +16262,6 @@ packages: /is-promise@2.2.2: resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} - dev: true /is-property@1.0.2: resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==} @@ -16164,7 +16278,6 @@ packages: dependencies: call-bind: 1.0.5 has-tostringtag: 1.0.0 - dev: true /is-relative@1.0.0: resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} @@ -16425,6 +16538,10 @@ packages: resolution: {integrity: sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==} dev: true + /js-stringify@1.0.2: + resolution: {integrity: sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==} + dev: false + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -16616,6 +16733,13 @@ packages: ms: 2.1.3 semver: 7.5.4 + /jstransformer@1.0.0: + resolution: {integrity: sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==} + dependencies: + is-promise: 2.2.2 + promise: 7.3.1 + dev: false + /jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} @@ -18621,6 +18745,19 @@ packages: mongodb-connection-string-url: 3.0.0 dev: true + /morgan@1.10.0: + resolution: {integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==} + engines: {node: '>= 0.8.0'} + dependencies: + basic-auth: 2.0.1 + debug: 2.6.9 + depd: 2.0.0 + on-finished: 2.3.0 + on-headers: 1.0.2 + transitivePeerDependencies: + - supports-color + dev: false + /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -18959,7 +19096,7 @@ packages: '@mdx-js/mdx': 3.0.0 '@mdx-js/react': 3.0.0(@types/react@18.2.78)(react@18.2.0) '@napi-rs/simple-git': 0.1.16 - '@shikijs/twoslash': 1.2.4(typescript@5.3.3) + '@shikijs/twoslash': 1.2.4(typescript@5.4.5) '@theguild/remark-mermaid': 0.0.5(react@18.2.0) '@theguild/remark-npm2yarn': 0.3.0 better-react-mathjax: 2.0.3(react@18.2.0) @@ -19363,7 +19500,6 @@ packages: engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 - dev: true /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} @@ -19374,7 +19510,6 @@ packages: /on-headers@1.0.2: resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} engines: {node: '>= 0.8'} - dev: true /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -19694,7 +19829,6 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true /path-root-regex@0.1.2: resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} @@ -20534,7 +20668,6 @@ packages: resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} dependencies: asap: 2.0.6 - dev: true /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -20640,9 +20773,39 @@ packages: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true + /pug-attrs@3.0.0: + resolution: {integrity: sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==} + dependencies: + constantinople: 4.0.1 + js-stringify: 1.0.2 + pug-runtime: 3.0.1 + dev: false + + /pug-code-gen@3.0.2: + resolution: {integrity: sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==} + dependencies: + constantinople: 4.0.1 + doctypes: 1.1.0 + js-stringify: 1.0.2 + pug-attrs: 3.0.0 + pug-error: 2.0.0 + pug-runtime: 3.0.1 + void-elements: 3.1.0 + with: 7.0.2 + dev: false + /pug-error@2.0.0: resolution: {integrity: sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==} - dev: true + + /pug-filters@4.0.0: + resolution: {integrity: sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==} + dependencies: + constantinople: 4.0.1 + jstransformer: 1.0.0 + pug-error: 2.0.0 + pug-walk: 2.0.0 + resolve: 1.22.8 + dev: false /pug-lexer@5.0.1: resolution: {integrity: sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==} @@ -20650,7 +20813,54 @@ packages: character-parser: 2.2.0 is-expression: 4.0.0 pug-error: 2.0.0 - dev: true + + /pug-linker@4.0.0: + resolution: {integrity: sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==} + dependencies: + pug-error: 2.0.0 + pug-walk: 2.0.0 + dev: false + + /pug-load@3.0.0: + resolution: {integrity: sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==} + dependencies: + object-assign: 4.1.1 + pug-walk: 2.0.0 + dev: false + + /pug-parser@6.0.0: + resolution: {integrity: sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==} + dependencies: + pug-error: 2.0.0 + token-stream: 1.0.0 + dev: false + + /pug-runtime@3.0.1: + resolution: {integrity: sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==} + dev: false + + /pug-strip-comments@2.0.0: + resolution: {integrity: sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==} + dependencies: + pug-error: 2.0.0 + dev: false + + /pug-walk@2.0.0: + resolution: {integrity: sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==} + dev: false + + /pug@3.0.2: + resolution: {integrity: sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==} + dependencies: + pug-code-gen: 3.0.2 + pug-filters: 4.0.0 + pug-lexer: 5.0.1 + pug-linker: 4.0.0 + pug-load: 3.0.0 + pug-parser: 6.0.0 + pug-runtime: 3.0.1 + pug-strip-comments: 2.0.0 + dev: false /pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} @@ -20726,6 +20936,16 @@ packages: http-errors: 2.0.0 iconv-lite: 0.4.24 unpipe: 1.0.0 + dev: false + + /raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 /rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} @@ -21362,7 +21582,6 @@ packages: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true /resolve@2.0.0-next.5: resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} @@ -21590,7 +21809,6 @@ packages: /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: true /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} @@ -22700,7 +22918,6 @@ packages: /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - dev: true /surrealdb.js@0.11.0: resolution: {integrity: sha512-x/Qd0UYyNilwY27JZlWgP8NsCdBzDtextRzP9oIm7xO27qsZvE5Rh4wnYN0xD68zgRAE4W8Jsufbm+hKbaGsTg==} @@ -22843,7 +23060,7 @@ packages: sorcery: 0.10.0 strip-indent: 3.0.0 svelte: 4.2.9 - typescript: 5.3.3 + typescript: 5.4.5 dev: true /svelte-preprocess@5.1.3(postcss@8.4.38)(svelte@4.2.9)(typescript@5.2.2): @@ -22891,10 +23108,10 @@ packages: sorcery: 0.11.0 strip-indent: 3.0.0 svelte: 4.2.9 - typescript: 5.2.2 + typescript: 5.4.5 dev: true - /svelte2tsx@0.7.0(svelte@4.2.9)(typescript@5.3.3): + /svelte2tsx@0.7.0(svelte@4.2.9)(typescript@5.4.5): resolution: {integrity: sha512-qAelcydnmuiDvD1HsrWi23RWx24RZTKRv6n4JaGC/pkoJfbLkJPQT2wa1qN0ZyfKTNLSyoj2FW9z62l/AUzUNA==} peerDependencies: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 @@ -22903,7 +23120,7 @@ packages: dedent-js: 1.0.1 pascal-case: 3.1.2 svelte: 4.2.9 - typescript: 5.3.3 + typescript: 5.4.5 dev: true /svelte@4.2.9: @@ -23215,6 +23432,10 @@ packages: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} + /token-stream@1.0.0: + resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==} + dev: false + /toposort-class@1.0.1: resolution: {integrity: sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==} dev: true @@ -23289,7 +23510,7 @@ packages: engines: {node: '>=6.10'} dev: false - /ts-evaluator@1.2.0(typescript@5.3.3): + /ts-evaluator@1.2.0(typescript@5.4.5): resolution: {integrity: sha512-ncSGek1p92bj2ifB7s9UBgryHCkU9vwC5d+Lplt12gT9DH+e41X8dMoHRQjIMeAvyG7j9dEnuHmwgOtuRIQL+Q==} engines: {node: '>=14.19.0'} peerDependencies: @@ -23302,7 +23523,7 @@ packages: ansi-colors: 4.1.3 crosspath: 2.0.0 object-path: 0.11.8 - typescript: 5.3.3 + typescript: 5.4.5 dev: false /ts-interface-checker@0.1.13: @@ -23327,7 +23548,7 @@ packages: code-block-writer: 12.0.0 dev: false - /ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3): + /ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -23353,7 +23574,7 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.3.3 + typescript: 5.4.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true @@ -23362,7 +23583,7 @@ packages: resolution: {integrity: sha512-tL0w8U/pgaacOmkb9fRlYzWEUDCfVjjv9dD4wHTgZ61MjhuMt46VNWTG747NqW6vRzoWIKABVhFSOJ82FvXrfA==} dev: false - /tsconfck@2.1.2(typescript@5.3.3): + /tsconfck@2.1.2(typescript@5.4.5): resolution: {integrity: sha512-ghqN1b0puy3MhhviwO2kGF8SeMDNhEbnKxjK7h6+fvY9JAxqvXi8y5NAHSQv687OVboS2uZIByzGd45/YxrRHg==} engines: {node: ^14.13.1 || ^16 || >=18} hasBin: true @@ -23372,7 +23593,7 @@ packages: typescript: optional: true dependencies: - typescript: 5.3.3 + typescript: 5.4.5 dev: false /tsconfig-paths@3.15.0: @@ -23415,6 +23636,17 @@ packages: fsevents: 2.3.3 dev: true + /tsx@4.7.3: + resolution: {integrity: sha512-+fQnMqIp/jxZEXLcj6WzYy9FhcS5/Dfk8y4AtzJ6ejKcKqmfTF8Gso/jtrzDggCF2zTU20gJa6n8XqPYwDAUYQ==} + engines: {node: '>=18.0.0'} + hasBin: true + dependencies: + esbuild: 0.19.12 + get-tsconfig: 4.7.2 + optionalDependencies: + fsevents: 2.3.3 + dev: true + /tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: @@ -23490,14 +23722,14 @@ packages: resolution: {integrity: sha512-oUr5ZAn37CgNa6p1mrCuuR/pINffsnGCee2aS170Uj1IObxCjsHzu6sgdPUdxGLLn6++gd/qjNH1/iR6RrfLeg==} dev: false - /twoslash@0.2.5(typescript@5.3.3): + /twoslash@0.2.5(typescript@5.4.5): resolution: {integrity: sha512-U8rqsfVh8jQMO1NJekUtglb52b7xD9+FrzeFrgzpHsRTKl8IQgqnZP6ld4PeKaHXhLfoZPuju9K50NXJ7wom8g==} peerDependencies: typescript: '*' dependencies: '@typescript/vfs': 1.5.0 twoslash-protocol: 0.2.5 - typescript: 5.3.3 + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: false @@ -23610,7 +23842,7 @@ packages: peerDependencies: typedoc: 0.25.x dependencies: - typedoc: 0.25.12(typescript@5.3.3) + typedoc: 0.25.12(typescript@5.4.5) dev: true /typedoc-plugin-markdown@4.0.0-next.54(typedoc@0.25.13): @@ -23618,10 +23850,10 @@ packages: peerDependencies: typedoc: 0.25.x dependencies: - typedoc: 0.25.13(typescript@5.3.3) + typedoc: 0.25.13(typescript@5.4.5) dev: true - /typedoc@0.25.12(typescript@5.3.3): + /typedoc@0.25.12(typescript@5.4.5): resolution: {integrity: sha512-F+qhkK2VoTweDXd1c42GS/By2DvI2uDF4/EpG424dTexSHdtCH52C6IcAvMA6jR3DzAWZjHpUOW+E02kyPNUNw==} engines: {node: '>= 16'} hasBin: true @@ -23632,10 +23864,10 @@ packages: marked: 4.3.0 minimatch: 9.0.3 shiki: 0.14.7 - typescript: 5.3.3 + typescript: 5.4.5 dev: true - /typedoc@0.25.13(typescript@5.3.3): + /typedoc@0.25.13(typescript@5.4.5): resolution: {integrity: sha512-pQqiwiJ+Z4pigfOnnysObszLiU3mVLWAExSPf+Mu06G/qsc3wzbuM56SZQvONhHLncLUhYzOVkjFFpFfL5AzhQ==} engines: {node: '>= 16'} hasBin: true @@ -23646,7 +23878,7 @@ packages: marked: 4.3.0 minimatch: 9.0.3 shiki: 0.14.7 - typescript: 5.3.3 + typescript: 5.4.5 dev: true /typeorm-naming-strategies@4.1.0(typeorm@0.3.17): @@ -23747,6 +23979,12 @@ packages: resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} engines: {node: '>=14.17'} hasBin: true + dev: true + + /typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} + hasBin: true /ua-parser-js@1.0.37: resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} @@ -24635,6 +24873,11 @@ packages: - terser dev: true + /void-elements@3.1.0: + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} + engines: {node: '>=0.10.0'} + dev: false + /vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} dev: true @@ -24855,6 +25098,16 @@ packages: string-width: 4.2.3 dev: true + /with@7.0.2: + resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} + engines: {node: '>= 10.0.0'} + dependencies: + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + assert-never: 1.2.1 + babel-walk: 3.0.0-canary-5 + dev: false + /wkx@0.5.0: resolution: {integrity: sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==} dependencies: