diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..bde0fda
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,48 @@
+name: CI
+on: [push, pull_request]
+
+jobs:
+ test:
+ # Prevent workflow being run twice, https://github.com/orgs/community/discussions/57827#discussioncomment-6579237
+ if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
+
+ name: ${{ matrix.cmd }} (${{ matrix.os }})
+
+ runs-on: ${{ matrix.os }}
+
+ strategy:
+ # Don't cancel other matrix operations if one fails
+ fail-fast: false
+ matrix:
+ os:
+ - ubuntu-latest
+ - windows-latest
+ cmd:
+ - pnpm run test:e2e
+ - pnpm run test:units
+ - pnpm run test:types
+ # `exclude` docs & alternatives:
+ # - https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategymatrixexclude
+ # - https://stackoverflow.com/questions/68994484/how-to-skip-a-configuration-of-a-matrix-with-github-actions/68994907#68994907
+ # - https://stackoverflow.com/questions/66025220/paired-values-in-github-actions-matrix/68940067#68940067
+ exclude:
+ - os: windows-latest
+ cmd: pnpm run test:types
+
+ steps:
+ - uses: actions/checkout@v4
+ - uses: pnpm/action-setup@v4
+ with:
+ version: 9.1.3
+ - uses: actions/setup-node@v4
+ with:
+ node-version: 20
+ # TODO/eventually: try using the cache again
+ # The cache breaks playwright https://github.com/vikejs/vike-vue/pull/119
+ # cache: "pnpm"
+
+ - run: pnpm install
+ - run: pnpm exec playwright install chromium
+ - run: pnpm run build
+
+ - run: ${{ matrix.cmd }}
diff --git a/.github/workflows/formatting.yml b/.github/workflows/formatting.yml
new file mode 100644
index 0000000..381ea5c
--- /dev/null
+++ b/.github/workflows/formatting.yml
@@ -0,0 +1,13 @@
+name: 'Check formatting'
+on:
+ push:
+jobs:
+ check_formatting:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: pnpm/action-setup@v4
+ with:
+ version: 9.1.3
+ - run: pnpm install
+ - run: pnpm run format:check
diff --git a/.gitignore b/.gitignore
index 5d091a4..b0a5c34 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,2 @@
/node_modules/
-.pnpm-debug.log
+/dist/
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 0000000..0903c3d
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,10 @@
+MIT License
+
+Copyright (c) 2024-present Horváth Dániel
+Copyright (c) 2024-present Romuald Brillout
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/README.md b/README.md
index f24ffaa..68c5d4f 120000
--- a/README.md
+++ b/README.md
@@ -1 +1 @@
-packages/vike-node/README.md
\ No newline at end of file
+./packages/vike-node/README.md
\ No newline at end of file
diff --git a/biome.json b/biome.json
new file mode 100644
index 0000000..39330f8
--- /dev/null
+++ b/biome.json
@@ -0,0 +1,25 @@
+{
+ "$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
+ "files": {
+ "ignore": ["dist/", "package.json"]
+ },
+ "formatter": {
+ "indentWidth": 2,
+ "indentStyle": "space"
+ },
+ "javascript": {
+ "formatter": {
+ "semicolons": "asNeeded",
+ "lineWidth": 120,
+ "quoteStyle": "single",
+ "trailingCommas": "none"
+ }
+ },
+ "linter": {
+ "enabled": false
+ },
+ "vcs": {
+ "enabled": true,
+ "clientKind": "git"
+ }
+}
diff --git a/examples/vike/renderer/+config.h.ts b/examples/vike/renderer/+config.h.ts
deleted file mode 100644
index 373532b..0000000
--- a/examples/vike/renderer/+config.h.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import type { Config } from 'vike/types'
-
-// https://vike.dev/config
-export default {
- clientRouting: true,
- hydrationCanBeAborted: true,
- passToClient: ['pageProps']
-} satisfies Config
diff --git a/examples/vike/server/index-hattip.ts b/examples/vike/server/index-hattip.ts
deleted file mode 100644
index 9063963..0000000
--- a/examples/vike/server/index-hattip.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import { telefunc } from 'telefunc'
-import { vike } from 'vike-node/web'
-import { init } from '../database/todoItems.js'
-import { createServer } from '@hattip/adapter-node'
-import { createRouter } from '@hattip/router'
-
-startServer()
-
-async function startServer() {
- await init()
- const app = createRouter()
-
- app.use('/_telefunc', async (ctx) => {
- const httpResponse = await telefunc({
- url: ctx.request.url,
- method: ctx.request.method,
- body: await ctx.request.text()
- })
- return new Response(httpResponse.body, {
- status: httpResponse.statusCode,
- headers: {
- 'Content-Type': httpResponse.contentType
- }
- })
- })
-
- app.use('*', async (ctx) => {
- const res = await vike({
- url: ctx.request.url,
- headers: ctx.request.headers
- })
- if (!res) return new Response('Not Found', { status: 404 })
- return new Response(res.body, {
- status: res.status,
- headers: res.headers
- })
- })
-
- const server = createServer(app.buildHandler())
- const port = process.env.PORT || 3000
- server.listen(+port)
- console.log(`Server running at http://localhost:${port}`)
-}
diff --git a/examples/vike/server/index-hono.ts b/examples/vike/server/index-hono.ts
deleted file mode 100644
index ac0de21..0000000
--- a/examples/vike/server/index-hono.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import { telefunc } from 'telefunc'
-import { vike } from 'vike-node/web'
-import { init } from '../database/todoItems.js'
-import { createAdaptorServer } from '@hono/node-server'
-import { Hono } from 'hono'
-
-startServer()
-
-async function startServer() {
- await init()
- const app = new Hono()
-
- app.use('/_telefunc', async (ctx) => {
- const httpResponse = await telefunc({
- url: ctx.req.url,
- method: ctx.req.method,
- body: await ctx.req.text()
- })
- return new Response(httpResponse.body, {
- status: httpResponse.statusCode,
- headers: {
- 'Content-Type': httpResponse.contentType
- }
- })
- })
-
- app.use('*', async (ctx) => {
- const res = await vike({
- url: ctx.req.url,
- headers: ctx.req.header()
- })
- if (!res) return new Response('Not Found', { status: 404 })
- return new Response(res.body, {
- status: res.status,
- headers: res.headers
- })
- })
-
- const server = createAdaptorServer(app)
- const port = process.env.PORT || 3000
- server.listen(+port)
- console.log(`Server running at http://localhost:${port}`)
-}
diff --git a/package.json b/package.json
index 9f035bc..38b5f26 100644
--- a/package.json
+++ b/package.json
@@ -1,32 +1,33 @@
{
- "version": "0.0.0",
- "private": true,
"scripts": {
"========= Basics": "",
"dev": "cd ./packages/vike-node/ && pnpm run dev",
"build": "pnpm --recursive --filter {packages/*} run build",
+ "========= Test": "",
+ "test": "test-e2e && test-types",
"========= Release": "",
"release": "cd ./packages/vike-node/ && pnpm run release",
"release:commit": "cd ./packages/vike-node/ && pnpm run release:commit",
"========= Clean": "",
- "clean": "git clean -Xdf",
- "reset": "pnpm run clean && pnpm install && pnpm run build",
+ "reset": "git clean -Xdf && pnpm install && pnpm run build",
"========= Formatting": "",
- "prettier": "git ls-files | egrep '\\.(json|js|jsx|css|ts|tsx|vue|mjs|cjs)$' | grep --invert-match package.json | xargs pnpm exec prettier --write",
+ "format": "pnpm run format:biome",
+ "format:prettier": "git ls-files | egrep '\\.(json|js|jsx|css|ts|tsx|vue|mjs|cjs)$' | grep --invert-match package.json | xargs pnpm exec prettier --write",
+ "format:biome": "biome format --write .",
+ "format:check": "biome format . || (echo 'Fix formatting by running `$ pnpm run -w format`.' && exit 1)",
"========= Only allow pnpm; forbid yarn & npm": "",
"preinstall": "npx only-allow pnpm"
},
- "packageManager": "pnpm@8.6.12",
"devDependencies": {
- "prettier": "^3.2.5"
+ "@biomejs/biome": "^1.5.3",
+ "prettier": "^3.3.3",
+ "@brillout/test-e2e": "^0.5.33",
+ "@brillout/test-types": "^0.1.13"
},
"pnpm": {
"overrides": {
- "vike-node": "link:./packages/vike-node/",
- "vite": "6.0.0-alpha.11"
- },
- "patchedDependencies": {
- "vike@0.4.161": "patches/vike@0.4.161.patch"
+ "vike-node": "link:./packages/vike-node/"
}
- }
-}
\ No newline at end of file
+ },
+ "packageManager": "pnpm@9.2.0"
+}
diff --git a/packages/vike-node/README.md b/packages/vike-node/README.md
index 1333ed7..ff45871 100644
--- a/packages/vike-node/README.md
+++ b/packages/vike-node/README.md
@@ -1 +1,262 @@
-TODO
+
+
+[](https://vike.dev)
+[![npm version](https://img.shields.io/npm/v/vike-node)](https://www.npmjs.com/package/vike-node)
+
+# `vike-node`
+
+Node integration for Vike.
+
+With this extension, your server-side code is transpiled with Vite.
+In development, the server process is restarted when a change is detected in some of your server files.
+
+[Installation](#installation)
+[Standalone build](#standalone-build)
+[External packages](#external-packages)
+[Caching and compression](#caching-and-compression)
+[Custom pageContext](#custom-pagecontext)
+[Framework examples](#framework-examples)
+[Migration guide](#migration-guide)
+
+
+
+## Installation
+
+1. `npm install vike-node express`
+2. Extend `vite.config.js`:
+
+ ```js
+ // vite.config.js
+
+ import vikeNode from 'vike-node/plugin'
+
+ export default {
+ // ...
+ plugins: [vikeNode('server/index.js')]
+ }
+ ```
+
+3. Create `server/index.js`:
+
+ ```js
+ // server/index.js
+
+ import express from 'express'
+ import vike from 'vike-node/connect'
+
+ startServer()
+
+ function startServer() {
+ const app = express()
+ app.use(vike())
+ const port = process.env.PORT || 3000
+ app.listen(port, () => console.log(`Server running at http://localhost:${port}`))
+ }
+ ```
+
+## Standalone build:
+
+You can enable standalone builds by setting `standalone` to `true`.
+
+After build, the output `dist` folder will contain everything for a deployment.
+
+With standalone mode, the production environment only needs the `dist` folder to be present.
+
+Example start script: `NODE_ENV=production node dist/server/index.mjs`
+
+```js
+// vite.config.js
+
+import vikeNode from 'vike-node/plugin'
+
+export default {
+ // ...
+ plugins: [
+ vikeNode({
+ entry: 'server/index.js',
+ standalone: true
+ })
+ ]
+}
+```
+
+## External packages:
+
+Packages that import native binaries/custom assets need to be added to `external`.
+When building with `standalone` enabled, `external` packages and their assets are copied to the output `dist` directory.
+By default, the `external` setting includes:
+
+- `sharp`
+- `@prisma/client`
+- `@node-rs/*`
+
+```js
+// vite.config.js
+
+import vikeNode from 'vike-node/plugin'
+
+export default {
+ // ...
+ plugins: [
+ vikeNode({
+ entry: 'server/index.js',
+ standalone: true,
+ external: ['my-rust-package']
+ })
+ ]
+}
+```
+
+## Caching and compression:
+
+In production, `vike-node`:
+
+- compresses all Vike responses
+- caches the compressed static assets(.js, .css).
+
+On a request, if the asset(.js, .css) is not in the cache, `vike-node` compresses it with a fast compression level, sends it in the response, then recompresses it with a high compression level and finally caches the compressed data.
+You can disable compression/caching:
+
+```js
+app.use(
+ vike({
+ compress: false,
+ static: {
+ cache: false
+ }
+ })
+)
+```
+
+## Custom [pageContext](https://vike.dev/pageContext):
+
+You can define custom [pageContext](https://vike.dev/pageContext) properties:
+
+```js
+app.use(
+ vike({
+ pageContext: (req) => ({
+ user: req.user
+ })
+ })
+)
+```
+
+## Framework examples:
+
+`vike-node` includes middlewares for the most popular web frameworks:
+
+- Express
+- Fastify
+- Hono
+
+Express:
+
+```js
+// server/index.js
+
+import express from 'express'
+import vike from 'vike-node/connect'
+
+startServer()
+
+function startServer() {
+ const app = express()
+ app.use(vike())
+ const port = process.env.PORT || 3000
+ app.listen(port, () => console.log(`Server running at http://localhost:${port}`))
+}
+```
+
+Fastify:
+
+```js
+// server/index.js
+
+import fastify from 'fastify'
+import vike from 'vike-node/fastify'
+
+startServer()
+
+function startServer() {
+ const app = fastify()
+ app.register(vike())
+ const port = process.env.PORT || 3000
+ app.listen({ port: +port }, () => console.log(`Server running at http://localhost:${port}`))
+}
+```
+
+Hono:
+
+```js
+// server/index.js
+
+import { serve } from '@hono/node-server'
+import { Hono } from 'hono'
+import vike from 'vike-node/hono'
+
+startServer()
+
+function startServer() {
+ const app = new Hono()
+ app.use(vike())
+ const port = +(process.env.PORT || 3000)
+ serve(
+ {
+ fetch: app.fetch,
+ port
+ },
+ () => console.log(`Server running at http://localhost:${port}`)
+ )
+}
+```
+
+## Migration guide:
+
+```diff
+// server/index.js
+
+- import { renderPage } from 'vike/server'
++ import { vike } from 'vike-node/connect'
+
+- if (isProduction) {
+- app.use(express.static(`${root}/dist/client`))
+- } else {
+- const vite = await import('vite')
+- const viteDevMiddleware = (
+- await vite.createServer({
+- root,
+- server: { middlewareMode: true }
+- })
+- ).middlewares
+- app.use(viteDevMiddleware)
+- }
+
+- app.get('*', async (req, res, next) => {
+- const pageContextInit = {
+- urlOriginal: req.originalUrl
+- }
+- const pageContext = await renderPage(pageContextInit)
+- const { httpResponse } = pageContext
+- if (!httpResponse) {
+- return next()
+- } else {
+- const { statusCode, headers } = httpResponse
+- headers.forEach(([name, value]) => res.setHeader(name, value))
+- res.status(statusCode)
+- httpResponse.pipe(res)
+- }
+- })
+
++ app.use(vike())
+
+```
+
+```diff
+// package.json
+
+"scripts": {
+- "dev": "node ./server",
++ "dev": "vite",
+}
+```
diff --git a/packages/vike-node/package.json b/packages/vike-node/package.json
index d0f3e33..927fd49 100644
--- a/packages/vike-node/package.json
+++ b/packages/vike-node/package.json
@@ -1,38 +1,39 @@
{
"name": "vike-node",
- "version": "0.0.1",
+ "version": "0.1.0",
"type": "module",
"exports": {
"./connect": "./dist/connect.js",
"./fastify": "./dist/fastify.js",
- "./web": "./dist/web.js",
+ "./hono": "./dist/hono.js",
"./plugin": "./dist/plugin/index.js"
},
"scripts": {
"dev": "tsc --watch",
"build": "rm -rf dist/ && tsc",
- "release": "release-me --git-prefix vike-node --changelog-dir packages/vike-node/ patch",
- "release:commit": "release-me --git-prefix vike-node --changelog-dir packages/vike-node/ commit"
+ "release": "release-me patch",
+ "release:minor": "release-me minor",
+ "release:commit": "release-me commit"
},
"dependencies": {
"@brillout/picocolors": "^1.0.10",
"@nitedani/shrink-ray-current": "^4.2.0",
"@vercel/nft": "^0.26.4",
- "birpc": "^0.2.15",
"esbuild": "^0.19.0",
- "sirv": "^2.0.4"
+ "sirv": "^2.0.0"
},
"peerDependencies": {
- "vike": "^0.4.161",
- "vite": "^5.1.0"
+ "vike": "^0.4.181",
+ "vite": "^5.0.10"
},
"devDependencies": {
- "@brillout/release-me": "^0.1.14",
+ "@brillout/release-me": "^0.4.0",
"@types/node": "^20.11.19",
"fastify": "^4.26.1",
- "typescript": "^5.3.3",
- "vike": "0.4.161",
- "vite": "6.0.0-alpha.11"
+ "hono": "^4.5.1",
+ "typescript": "^5.5.4",
+ "vike": "^0.4.162",
+ "vite": "^5.0.10"
},
"typesVersions": {
"*": {
@@ -42,8 +43,8 @@
"fastify": [
"./dist/fastify.d.ts"
],
- "web": [
- "./dist/web.d.ts"
+ "hono": [
+ "./dist/hono.d.ts"
],
"plugin": [
"./dist/plugin/index.d.ts"
@@ -55,4 +56,4 @@
],
"repository": "github:vikejs/vike-node",
"license": "MIT"
-}
\ No newline at end of file
+}
diff --git a/packages/vike-node/src/connect.ts b/packages/vike-node/src/connect.ts
index 8a1e021..d10bf7f 100644
--- a/packages/vike-node/src/connect.ts
+++ b/packages/vike-node/src/connect.ts
@@ -1,2 +1 @@
-export { renderAsset } from './runtime/renderAsset.js'
-export { vike } from './runtime/connect.js'
+export { vike, vike as default } from './runtime/frameworks/connect.js'
diff --git a/packages/vike-node/src/fastify.ts b/packages/vike-node/src/fastify.ts
index c25769c..924fcee 100644
--- a/packages/vike-node/src/fastify.ts
+++ b/packages/vike-node/src/fastify.ts
@@ -1,2 +1 @@
-export { renderAsset } from './runtime/renderAsset.js'
-export { vike } from './runtime/fastify.js'
+export { vike, vike as default } from './runtime/frameworks/fastify.js'
diff --git a/packages/vike-node/src/hono.ts b/packages/vike-node/src/hono.ts
new file mode 100644
index 0000000..0f46171
--- /dev/null
+++ b/packages/vike-node/src/hono.ts
@@ -0,0 +1 @@
+export { vike, vike as default } from './runtime/frameworks/hono.js'
diff --git a/packages/vike-node/src/plugin/index.ts b/packages/vike-node/src/plugin/index.ts
index 24713a6..442dd5d 100644
--- a/packages/vike-node/src/plugin/index.ts
+++ b/packages/vike-node/src/plugin/index.ts
@@ -1,13 +1,14 @@
-export { vikeNode as default, vikeNode }
+export { vikeNode, vikeNode as default }
-import { setPluginLoaded } from '../runtime/env.js'
+import { globalStore } from '../runtime/globalStore.js'
+import { ConfigVikeNodePlugin } from '../types.js'
import { commonConfig } from './plugins/commonConfig.js'
-import { devServerPlugin } from './plugins/devServer/devServerPlugin.js'
+import { devServerPlugin } from './plugins/devServerPlugin.js'
import { serverEntryPlugin } from './plugins/serverEntryPlugin.js'
import { standalonePlugin } from './plugins/standalonePlugin.js'
-setPluginLoaded()
+globalStore.isPluginLoaded = true
-function vikeNode() {
- return [commonConfig(), serverEntryPlugin(), devServerPlugin(), standalonePlugin()]
+function vikeNode(config: ConfigVikeNodePlugin) {
+ return [commonConfig(config), serverEntryPlugin(), devServerPlugin(), standalonePlugin()]
}
diff --git a/packages/vike-node/src/plugin/plugins/commonConfig.ts b/packages/vike-node/src/plugin/plugins/commonConfig.ts
index cc1f58b..8ca7b6b 100644
--- a/packages/vike-node/src/plugin/plugins/commonConfig.ts
+++ b/packages/vike-node/src/plugin/plugins/commonConfig.ts
@@ -1,31 +1,23 @@
export { commonConfig }
import type { Plugin } from 'vite'
-import { ConfigVikeNodeResolved } from '../../types.js'
+import type { ConfigVikeNodePlugin, ConfigVikeNodeResolved } from '../../types.js'
import { resolveConfig } from '../utils/resolveConfig.js'
-function commonConfig(): Plugin {
+function commonConfig(configVikeNodePlugin: ConfigVikeNodePlugin): Plugin {
return {
- name: 'vike-node:commonConfig',
enforce: 'pre',
- config(config, env) {
- const server = { entry: './server/index-hono.ts', standalone: true }
- const resolvedConfig: ConfigVikeNodeResolved = resolveConfig({ server })
+ name: 'vike-node:commonConfig',
+ configResolved(config) {
+ const resolvedConfig: ConfigVikeNodeResolved = resolveConfig({ server: configVikeNodePlugin })
;(config as Record).configVikeNode = resolvedConfig
- return {
- environments: {
- ssr: {
- resolve: { external: resolvedConfig.server.native }
- },
- client: {
- resolve: { external: resolvedConfig.server.native }
- }
- },
- optimizeDeps: {
- exclude: resolvedConfig.server.native,
- }
+ if (typeof config.ssr.external !== 'boolean') {
+ config.ssr.external ??= []
+ config.ssr.external.push(...resolvedConfig.server.external)
}
+ config.optimizeDeps.exclude ??= []
+ config.optimizeDeps.exclude.push(...resolvedConfig.server.external)
}
}
}
diff --git a/packages/vike-node/src/plugin/plugins/devServer/constants.ts b/packages/vike-node/src/plugin/plugins/devServer/constants.ts
deleted file mode 100644
index c0740fa..0000000
--- a/packages/vike-node/src/plugin/plugins/devServer/constants.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export const viteMiddlewareProxyPort = 18445
-export const viteHmrPort = 24678
diff --git a/packages/vike-node/src/plugin/plugins/devServer/devServerPlugin.ts b/packages/vike-node/src/plugin/plugins/devServer/devServerPlugin.ts
deleted file mode 100644
index f46efb2..0000000
--- a/packages/vike-node/src/plugin/plugins/devServer/devServerPlugin.ts
+++ /dev/null
@@ -1,302 +0,0 @@
-export { devServerPlugin }
-
-import pc from '@brillout/picocolors'
-import { BirpcReturn, createBirpc } from 'birpc'
-import { ChildProcess, fork } from 'child_process'
-import {
- DevEnvironment,
- EnvironmentModuleNode,
- HMRChannel,
- Plugin,
- RemoteEnvironmentTransport,
- ViteDevServer
-} from 'vite'
-import { ConfigVikeNodeResolved } from '../../../types.js'
-import { assert } from '../../../utils/assert.js'
-import { getConfigVikeNode } from '../../utils/getConfigVikeNode.js'
-import { logViteInfo } from '../../utils/logVite.js'
-import { viteHmrPort, viteMiddlewareProxyPort } from './constants.js'
-import { bindCLIShortcuts } from './shortcuts.js'
-import type { ClientFunctions, MinimalModuleNode, ServerFunctions, WorkerData } from './types.js'
-
-const workerPath = new URL('./worker.js', import.meta.url).pathname
-
-let ws: HMRChannel | undefined
-let vite: ViteDevServer
-let rpc: BirpcReturn
-let cp: ChildProcess | undefined
-let entryAbs: string
-let onMessageHandler: (data: any) => void
-let hmrHandler: ((data: any) => void) | undefined
-
-function devServerPlugin(): Plugin {
- let resolvedConfig: ConfigVikeNodeResolved
- return {
- name: 'vike-node:devserver',
- apply: 'serve',
- enforce: 'post',
- config() {
- return {
- server: {
- port: viteMiddlewareProxyPort,
- hmr: {
- // this needs to be exposed in containers
- port: viteHmrPort
- }
- },
- environments: {
- ssr: {
- dev: {
- createEnvironment(name, config) {
- const hot = createSimpleHMRChannel({
- name,
- post: (data) => rpc.onHmrReceive(data),
- on: (listener) => {
- hmrHandler = listener
- return () => {
- hmrHandler = undefined
- }
- },
- async onRestartWorker() {
- await restartWorker()
- vite.environments.client.hot.send({ type: 'full-reload' })
- }
- })
-
- return new DevEnvironment('ssr', config, {
- runner: {
- transport: new RemoteEnvironmentTransport({
- send: (data) => rpc.onViteTransportMessage(data),
- onMessage: (handler) => {
- onMessageHandler = handler
- }
- })
- },
- hot
- })
- }
- }
- }
- }
- }
- },
- configResolved(config) {
- resolvedConfig = getConfigVikeNode(config)
- assert(resolvedConfig.server)
- },
- async hotUpdate(ctx) {
- // console.log(ctx.environment.name, ctx.modules, ctx.type)
- if (ctx.environment.name !== 'ssr') {
- return
- }
-
- if (!cp) {
- await restartWorker()
- ctx.server.environments.client.hot.send({ type: 'full-reload' })
- return []
- }
- },
- // called on start & vite.config.js changes
- configureServer(vite_) {
- vite = vite_
- ws = vite.environments.client.hot
- vite.bindCLIShortcuts = () =>
- bindCLIShortcuts({
- onRestart: async () => {
- if (await restartWorker()) {
- ws?.send({
- type: 'full-reload'
- })
- }
- }
- })
-
- vite.printUrls = () => {}
- restartWorker()
- }
- }
-
- async function restartWorker() {
- if (cp) {
- await new Promise((resolve) => {
- cp!.once('exit', resolve)
- cp!.kill()
- })
- }
-
- assert(resolvedConfig.server)
- const index = resolvedConfig.server.entry.index
-
- const indexResolved = await vite.environments.ssr.pluginContainer.resolveId(index, undefined)
- assert(indexResolved?.id)
- entryAbs = indexResolved.id
-
- //@ts-ignore
- const configVikePromise = await vite.config.configVikePromise
-
- const workerData: WorkerData = {
- entry: entryAbs,
- viteConfig: { root: vite.config.root, configVikePromise }
- }
- cp = fork(workerPath, {
- env: process.env,
- stdio: ['inherit', 'inherit', 'inherit', 'ipc'],
- serialization: 'advanced'
- })
-
- rpc = createBirpc(
- {
- onViteTransportMessage(data) {
- return onMessageHandler(data)
- },
-
- // These are used by Vike on the other side
- moduleGraphResolveUrl(url: string) {
- return vite.environments.ssr.moduleGraph.resolveUrl(url)
- },
- moduleGraphGetModuleById(id: string) {
- const module = vite.environments.ssr.moduleGraph.getModuleById(id)
- if (!module) {
- return module
- }
- return convertToMinimalModuleNode(module)
- },
- transformIndexHtml(url: string, html: string, originalUrl?: string) {
- return vite.transformIndexHtml(url, html, originalUrl)
- }
- },
- {
- // lazy
- post: (data) => cp?.send(data),
- // eager
- on: (data) => cp!.on('message', data),
- timeout: 1000
- }
- )
-
- cp.once('exit', (code) => {
- if (code) {
- logViteInfo(`Server shutdown. Update a server file, or press ${pc.cyan('r + Enter')}, to restart.`)
- }
-
- cp = undefined
- })
-
- return rpc
- .start(workerData)
- .then(() => true)
- .catch(() => false)
- }
-}
-
-// This is the minimal representation the Vike runtime needs
-function convertToMinimalModuleNode(
- node: EnvironmentModuleNode,
- cache: Map = new Map()
-): MinimalModuleNode {
- // If the node is in the cache, return the cached version
- if (cache.has(node)) {
- return cache.get(node)!
- }
-
- // Create a new MinimalModuleNode object
- const minimalNode: MinimalModuleNode = {
- id: node.id,
- url: node.url,
- type: node.type,
- importedModules: new Set()
- }
-
- // Add the new node to the cache
- cache.set(node, minimalNode)
-
- // Convert each imported module to a MinimalModuleNode
- for (const importedModule of node.importedModules) {
- minimalNode.importedModules.add(convertToMinimalModuleNode(importedModule, cache))
- }
-
- return minimalNode
-}
-
-function createSimpleHMRChannel(options: {
- name: string
- post: (data: any) => any
- on: (listener: (data: any) => void) => () => void
- onRestartWorker: () => void
-}): HMRChannel {
- const listerMap = new DefaultMap>(() => new Set())
- let dispose: (() => void) | undefined
-
- return {
- name: options.name,
- listen() {
- dispose = options.on((payload) => {
- for (const f of listerMap.get(payload.event)) {
- f(payload.data)
- }
- })
- },
- close() {
- dispose?.()
- dispose = undefined
- },
- on(event: string, listener: (...args: any[]) => any) {
- listerMap.get(event).add(listener)
- },
- off(event: string, listener: (...args: any[]) => any) {
- listerMap.get(event).delete(listener)
- },
- send(...args: any[]) {
- let payload: any
- if (typeof args[0] === 'string') {
- payload = {
- type: 'custom',
- event: args[0],
- data: args[1]
- }
- } else {
- payload = args[0]
- }
-
- if (payload.triggeredBy && isImported(payload.triggeredBy)) {
- options.onRestartWorker()
- return
- }
-
- options.post(payload)
- }
- }
-}
-
-class DefaultMap extends Map {
- constructor(
- private defaultFn: (key: K) => V,
- entries?: Iterable
- ) {
- super(entries)
- }
-
- override get(key: K): V {
- if (!this.has(key)) {
- this.set(key, this.defaultFn(key))
- }
- return super.get(key)!
- }
-}
-
-function isImported(id: string) {
- const moduleNode = vite.environments.ssr.moduleGraph.getModuleById(id)
- assert(moduleNode)
- const modules = new Set([moduleNode])
- for (const module of modules) {
- if (module.file === entryAbs) {
- return true
- }
-
- for (const importerInner of module.importers) {
- modules.add(importerInner)
- }
- }
-
- return false
-}
diff --git a/packages/vike-node/src/plugin/plugins/devServer/shortcuts.ts b/packages/vike-node/src/plugin/plugins/devServer/shortcuts.ts
deleted file mode 100644
index 01f8ad7..0000000
--- a/packages/vike-node/src/plugin/plugins/devServer/shortcuts.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import readline from 'readline'
-import { isatty } from 'tty'
-
-export function bindCLIShortcuts({ onRestart }: { onRestart?: () => void }): void {
- if (!isatty(process.stdin.fd)) {
- return
- }
- const shortcuts = [
- {
- key: 'r',
- description: 'restart the server',
- async action() {
- onRestart?.()
- }
- }
- ]
-
- let actionRunning = false
-
- const onInput = async (input: string) => {
- if (actionRunning) return
-
- const shortcut = shortcuts.find((shortcut) => shortcut.key === input)
- if (!shortcut || shortcut.action == null) return
-
- actionRunning = true
- await shortcut.action()
- actionRunning = false
- }
-
- const rl = readline.createInterface({ input: process.stdin })
- rl.on('line', onInput)
-}
diff --git a/packages/vike-node/src/plugin/plugins/devServer/types.ts b/packages/vike-node/src/plugin/plugins/devServer/types.ts
deleted file mode 100644
index 2403ada..0000000
--- a/packages/vike-node/src/plugin/plugins/devServer/types.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-export type { ClientFunctions, MinimalModuleNode, ServerFunctions, WorkerData }
-
-import type { FetchResult, EnvironmentModuleNode, ResolvedUrl } from 'vite'
-
-type WorkerData = {
- entry: string
- viteConfig: {
- root: string
- configVikePromise: any
- }
-}
-
-type ClientFunctions = {
- start(workerData: WorkerData): void
- onViteTransportMessage(data: any): void
- onHmrReceive: (data: any) => void
-}
-
-type MinimalModuleNode = Pick & {
- importedModules: Set
-}
-
-type ServerFunctions = {
- moduleGraphResolveUrl(url: string): Promise
- moduleGraphGetModuleById(id: string): MinimalModuleNode | undefined
- transformIndexHtml(url: string, html: string, originalUrl?: string): Promise
- onViteTransportMessage(data: any): void
-}
diff --git a/packages/vike-node/src/plugin/plugins/devServer/worker.ts b/packages/vike-node/src/plugin/plugins/devServer/worker.ts
deleted file mode 100644
index d2974d7..0000000
--- a/packages/vike-node/src/plugin/plugins/devServer/worker.ts
+++ /dev/null
@@ -1,93 +0,0 @@
-import { createBirpc } from 'birpc'
-import { ESModulesEvaluator, ModuleRunner, RemoteRunnerTransport } from 'vite/module-runner'
-import { setIsWorkerEnv } from '../../../runtime/env.js'
-import { logViteInfo } from '../../utils/logVite.js'
-import type { ClientFunctions, ServerFunctions, WorkerData } from './types.js'
-
-let runner: ModuleRunner
-let hmrHandler: (data: any) => void
-let viteTransportHandler: (data: any) => void
-const rpc = createBirpc(
- {
- onHmrReceive(data) {
- hmrHandler(data)
- },
- onViteTransportMessage(data) {
- viteTransportHandler(data)
- },
- async start(workerData: WorkerData) {
- const { entry, viteConfig } = workerData
- // This is the minimal required object for vike + telefunc to function
- const globalObject = {
- viteConfig,
- viteDevServer: {
- config: {
- ...viteConfig,
- logger: {
- // called by telefunc
- hasErrorLogged: () => false
- }
- },
- ssrLoadModule: (id: string) => runner.import(id),
- // called by telefunc
- ssrFixStacktrace: (_err: unknown) => {},
- transformIndexHtml: rpc.transformIndexHtml,
- moduleGraph: {
- resolveUrl: rpc.moduleGraphResolveUrl,
- getModuleById: rpc.moduleGraphGetModuleById
- }
- }
- }
-
- //@ts-ignore
- global._vike ??= {}
- //@ts-ignore
- global._telefunc ??= {}
- //@ts-ignore
- global._vike['globalContext.ts'] = globalObject
- //@ts-ignore telefunc only needs viteDevServer.ssrLoadModule and viteDevServer.ssrFixStackTrace
- global._telefunc['globalContext.ts'] = {
- viteDevServer: globalObject.viteDevServer
- }
-
- runner = new ModuleRunner(
- {
- root: viteConfig.root,
- transport: new RemoteRunnerTransport({
- send(data) {
- rpc.onViteTransportMessage(data)
- },
- onMessage(handler) {
- viteTransportHandler = handler
- }
- }),
- hmr: {
- connection: {
- onUpdate(callback) {
- hmrHandler = callback
- },
- isReady() {
- return true
- },
- send(messages) {}
- }
- }
- },
- new ESModulesEvaluator()
- )
- logViteInfo('Loading server entry')
- await runner.import(entry)
- }
- },
- {
- post: (data) => {
- process.send?.(data)
- },
- on: (data) => {
- process.on('message', data)
- },
- timeout: 1000
- }
-)
-
-setIsWorkerEnv()
diff --git a/packages/vike-node/src/plugin/plugins/devServerPlugin.ts b/packages/vike-node/src/plugin/plugins/devServerPlugin.ts
new file mode 100644
index 0000000..fc090d8
--- /dev/null
+++ b/packages/vike-node/src/plugin/plugins/devServerPlugin.ts
@@ -0,0 +1,147 @@
+import { fork } from 'child_process'
+import { ServerResponse, createServer, type IncomingMessage } from 'http'
+import type { Plugin, ViteDevServer } from 'vite'
+import { globalStore } from '../../runtime/globalStore.js'
+import type { ConfigVikeNodeResolved } from '../../types.js'
+import { assert } from '../../utils/assert.js'
+import { getConfigVikeNode } from '../utils/getConfigVikeNode.js'
+import { isBun } from '../utils/isBun.js'
+import { logViteInfo } from '../utils/logVite.js'
+
+let viteDevServer: ViteDevServer
+const VITE_HMR_PATH = '/__vite_hmr'
+
+export function devServerPlugin(): Plugin {
+ let resolvedConfig: ConfigVikeNodeResolved
+ let entryAbs: string
+ let HMRServer: ReturnType | undefined
+ return {
+ name: 'vite-node:devserver',
+ apply: 'serve',
+ enforce: 'pre',
+ config: async () => {
+ await setupReloader()
+
+ if (isBun) {
+ return {
+ server: {
+ middlewareMode: true
+ }
+ }
+ }
+
+ HMRServer = createServer()
+ return {
+ server: {
+ middlewareMode: true,
+ hmr: {
+ server: HMRServer,
+ path: VITE_HMR_PATH
+ }
+ }
+ }
+ },
+
+ configResolved(config) {
+ resolvedConfig = getConfigVikeNode(config)
+ },
+
+ handleHotUpdate(ctx) {
+ if (isImported(ctx.file)) {
+ restartProcess()
+ }
+ },
+
+ configureServer(vite) {
+ if (viteDevServer) {
+ restartProcess()
+ return
+ }
+
+ viteDevServer = vite
+ globalStore.viteDevServer = vite
+ globalStore.HMRProxy = HMRProxy
+ patchViteServer(vite)
+ initializeServerEntry(vite)
+ }
+ }
+
+ function isImported(id: string): boolean {
+ const moduleNode = viteDevServer.moduleGraph.getModuleById(id)
+ if (!moduleNode) {
+ return false
+ }
+ const modules = new Set([moduleNode])
+ for (const module of modules) {
+ if (module.file === entryAbs) return true
+ module.importers.forEach((importer) => modules.add(importer))
+ }
+
+ return false
+ }
+
+ function patchViteServer(vite: ViteDevServer) {
+ vite.httpServer = { on: () => {} } as any
+ vite.listen = (() => {}) as any
+ vite.printUrls = () => {}
+ }
+
+ async function initializeServerEntry(vite: ViteDevServer) {
+ assert(resolvedConfig.server)
+ const index = resolvedConfig.server.entry.index
+ const indexResolved = await vite.pluginContainer.resolveId(index)
+ assert(indexResolved?.id)
+ entryAbs = indexResolved.id
+ vite.ssrLoadModule(entryAbs)
+ }
+
+ function HMRProxy(req: IncomingMessage, res: ServerResponse, next?: (err?: unknown) => void): boolean {
+ const canHandle = req.url === VITE_HMR_PATH && req.headers.upgrade === 'websocket'
+ if (!canHandle) {
+ next?.()
+ return false
+ }
+
+ // Pause the socket to prevent data loss
+ req.socket.pause()
+
+ // Prepare the socket for upgrade
+ res.detachSocket(req.socket)
+ req.socket.setTimeout(0)
+ req.socket.setNoDelay(true)
+ req.socket.setKeepAlive(true, 0)
+
+ // Emit the upgrade event
+ assert(HMRServer)
+ HMRServer.emit('upgrade', req, req.socket, Buffer.alloc(0))
+
+ // Resume the socket
+ req.socket.resume()
+
+ return true
+ }
+}
+
+async function setupReloader() {
+ const isReloaderSetup = process.env.VIKE_NODE_RELOADER_SETUP === 'true'
+ if (!isReloaderSetup) {
+ process.env.VIKE_NODE_RELOADER_SETUP = 'true'
+ function start() {
+ const cp = fork(process.argv[1]!, process.argv.slice(2), { stdio: 'inherit' })
+ cp.on('exit', (code) => {
+ if (code === 33) {
+ start()
+ } else {
+ process.exit(code)
+ }
+ })
+ }
+ start()
+ await new Promise(() => {})
+ }
+}
+
+function restartProcess() {
+ logViteInfo('Restarting server...')
+ process.exit(33)
+}
diff --git a/packages/vike-node/src/plugin/plugins/serverEntryPlugin.ts b/packages/vike-node/src/plugin/plugins/serverEntryPlugin.ts
index caba18f..4d75154 100644
--- a/packages/vike-node/src/plugin/plugins/serverEntryPlugin.ts
+++ b/packages/vike-node/src/plugin/plugins/serverEntryPlugin.ts
@@ -13,7 +13,6 @@ const require_ = createRequire(import.meta.url)
function serverEntryPlugin(): Plugin {
return {
- enforce: 'pre',
name: 'vike-node:serverEntry',
async configResolved(config) {
const resolvedConfig = getConfigVikeNode(config)
@@ -29,7 +28,7 @@ function serverEntryPlugin(): Plugin {
assert((err as Record).code === 'MODULE_NOT_FOUND')
assertUsage(
false,
- `No file found at ${entryFilePath}. Does the value ${pc.cyan(`'${entry}'`)} of ${pc.cyan(
+ `No file found at ${entryFilePath}. Does the value ${pc.cyan(`'${entryFilePath}'`)} of ${pc.cyan(
'server.entry'
)} point to an existing file?`
)
diff --git a/packages/vike-node/src/plugin/plugins/standalonePlugin.ts b/packages/vike-node/src/plugin/plugins/standalonePlugin.ts
index faa6dd2..7dbfee6 100644
--- a/packages/vike-node/src/plugin/plugins/standalonePlugin.ts
+++ b/packages/vike-node/src/plugin/plugins/standalonePlugin.ts
@@ -1,45 +1,39 @@
-export { standalonePlugin }
-
import esbuild from 'esbuild'
import fs from 'fs/promises'
import path from 'path'
-import { Plugin, searchForWorkspaceRoot } from 'vite'
+import { searchForWorkspaceRoot, type Plugin, type ResolvedConfig } from 'vite'
import type { ConfigVikeNodeResolved } from '../../types.js'
import { assert, assertUsage } from '../../utils/assert.js'
import { toPosixPath } from '../utils/filesystemPathHandling.js'
import { getConfigVikeNode } from '../utils/getConfigVikeNode.js'
import { pLimit } from '../utils/pLimit.js'
-import { unique } from '../utils/unique.js'
-function standalonePlugin(): Plugin {
- let resolvedConfig: ConfigVikeNodeResolved
+const OPTIONAL_NPM_IMPORTS = [
+ '@nestjs/microservices',
+ '@nestjs/websockets',
+ 'cache-manager',
+ 'class-validator',
+ 'class-transformer'
+]
+
+export function standalonePlugin(): Plugin {
+ let configResolved: ResolvedConfig
+ let configResolvedVike: ConfigVikeNodeResolved
let enabled = false
-
let root = ''
let outDir = ''
let outDirAbs = ''
let rollupEntryFilePaths: string[]
let rollupResolve: any
- // Support Nestjs
- // https://github.com/nestjs/nest-cli/blob/edbd64d1eb186c49c28b7594e5d8269a5b125385/lib/compiler/defaults/webpack-defaults.ts#L69
- const lazyNpmImports = [
- '@nestjs/microservices',
- '@nestjs/websockets',
- 'cache-manager',
- 'class-validator',
- 'class-transformer'
- ]
-
return {
name: 'vike-node:standalone',
- apply(_, env) {
- return !!env.isSsrBuild
- },
- async configResolved(config) {
- resolvedConfig = getConfigVikeNode(config)
- assert(typeof resolvedConfig.server.standalone === 'boolean')
- enabled = resolvedConfig.server.standalone
+ apply: (_, env) => !!env.isSsrBuild,
+ configResolved: async (config) => {
+ configResolved = config
+ configResolvedVike = getConfigVikeNode(config)
+ assert(typeof configResolvedVike.server.standalone === 'boolean')
+ enabled = configResolvedVike.server.standalone
if (!enabled) return
root = toPosixPath(config.root)
outDir = toPosixPath(config.build.outDir)
@@ -51,178 +45,159 @@ function standalonePlugin(): Plugin {
},
writeBundle(_, bundle) {
if (!enabled) return
- const entries = findRollupBundleEntries(bundle, resolvedConfig, root)
+ const entries = findRollupBundleEntries(bundle, configResolvedVike, root)
rollupEntryFilePaths = entries.map((e) => path.posix.join(outDirAbs, e.fileName))
},
- // closeBundle() + `enforce: 'post'` in order to start the final build step as late as possible
enforce: 'post',
- async closeBundle() {
+ closeBundle: async () => {
if (!enabled) return
const base = toPosixPath(searchForWorkspaceRoot(root))
const relativeRoot = path.posix.relative(base, root)
const relativeOutDir = path.posix.join(relativeRoot, outDir)
- const res = await esbuild.build({
- platform: 'node',
- format: 'esm',
- bundle: true,
- external: resolvedConfig.server.native,
- entryPoints: rollupEntryFilePaths,
- // .mjs set in getEntryFileName
- outExtension: { '.js': '.mjs' },
- splitting: rollupEntryFilePaths.length > 1,
- outdir: outDirAbs,
- allowOverwrite: true,
- metafile: true,
- logOverride: {
- // TODO: ignore the warning, or include the import?
- // rollup includes the import even if "sideEffects": false
- // esbuild doesn't include the import and prints a warning instead
- 'ignored-bare-import': 'silent'
- },
- banner: {
- js: [
- "import { dirname as dirname987 } from 'path';",
- "import { fileURLToPath as fileURLToPath987 } from 'url';",
- "import { createRequire as createRequire987 } from 'module';",
- 'var require = createRequire987(import.meta.url);',
- 'var __filename = fileURLToPath987(import.meta.url);',
- 'var __dirname = dirname987(__filename);'
- ].join('\n')
- },
- plugins: [
- {
- name: 'standalone-ignore',
- setup(build) {
- build.onResolve({ filter: /.*/, namespace: 'ignore' }, (args) => ({
- path: args.path,
- namespace: 'ignore'
- }))
- build.onResolve({ filter: new RegExp(`^(${lazyNpmImports.join('|')})`) }, async (args) => {
- const resolved = await rollupResolve(args.path)
- // if the package is not installed, ignore the import
- // if the package is installed, try to bundle it
- if (!resolved) {
- return {
- path: args.path,
- namespace: 'ignore'
- }
- }
- })
- build.onLoad({ filter: /.*/, namespace: 'ignore' }, () => ({
- contents: ''
- }))
- }
- }
- ]
- })
- // The inputs of the bundled files are safe to remove from the outDir folder
- const bundledFilesFromOutDir = Object.keys(res.metafile.inputs).filter(
- (relativeFile) =>
- !rollupEntryFilePaths.some((entryFilePath) => entryFilePath.endsWith(relativeFile)) &&
- relativeFile.startsWith(outDir)
- )
- for (const relativeFile of bundledFilesFromOutDir) {
+ const esbuildResult = await buildWithEsbuild()
+ await removeLeftoverFiles(esbuildResult)
+ await traceAndCopyDependencies(base, relativeRoot, relativeOutDir)
+ }
+ }
+
+ async function buildWithEsbuild() {
+ const res = await esbuild.build({
+ platform: 'node',
+ format: 'esm',
+ bundle: true,
+ external: configResolvedVike.server.external,
+ entryPoints: rollupEntryFilePaths,
+ sourcemap: configResolved.build.sourcemap === 'hidden' ? true : configResolved.build.sourcemap,
+ outExtension: { '.js': '.mjs' },
+ splitting: rollupEntryFilePaths.length > 1,
+ outdir: outDirAbs,
+ allowOverwrite: true,
+ metafile: true,
+ logOverride: { 'ignored-bare-import': 'silent' },
+ banner: { js: generateBanner() },
+ plugins: [createStandaloneIgnorePlugin(rollupResolve)]
+ })
+
+ return res
+ }
+
+ async function removeLeftoverFiles(res: Awaited>) {
+ // Remove bundled files from outDir
+ const bundledFilesFromOutDir = Object.keys(res.metafile.inputs).filter(
+ (relativeFile) =>
+ !rollupEntryFilePaths.some((entryFilePath) => entryFilePath.endsWith(relativeFile)) &&
+ relativeFile.startsWith(outDir)
+ )
+
+ await Promise.all(
+ bundledFilesFromOutDir.map(async (relativeFile) => {
await fs.rm(path.posix.join(root, relativeFile))
- }
- // Remove leftover empty dirs
- const relativeDirs = unique(bundledFilesFromOutDir.map((file) => path.dirname(file)))
- for (const relativeDir of relativeDirs) {
- const absDir = path.posix.join(root, relativeDir)
- const files = await fs.readdir(absDir)
- if (!files.length) {
- await fs.rm(absDir, { recursive: true })
+ if (![false, 'inline'].includes(configResolved.build.sourcemap)) {
+ await fs.rm(path.posix.join(root, `${relativeFile}.map`))
}
- }
- const { nodeFileTrace } = await import('@vercel/nft')
- const result = await nodeFileTrace(rollupEntryFilePaths, {
- base
})
+ )
- const tracedDeps = new Set()
- for (const file of result.fileList) {
- if (result.reasons.get(file)?.type.includes('initial')) {
- continue
+ // Remove empty directories
+ const relativeDirs = new Set(bundledFilesFromOutDir.map((file) => path.dirname(file)))
+ for (const relativeDir of relativeDirs) {
+ const absDir = path.posix.join(root, relativeDir)
+ const files = await fs.readdir(absDir)
+ if (!files.length) {
+ await fs.rm(absDir, { recursive: true })
+ if (relativeDir.startsWith(outDir)) {
+ relativeDirs.add(path.dirname(relativeDir))
}
- tracedDeps.add(toPosixPath(file))
}
+ }
+ }
+
+ async function traceAndCopyDependencies(base: string, relativeRoot: string, relativeOutDir: string) {
+ const { nodeFileTrace } = await import('@vercel/nft')
+ const result = await nodeFileTrace(rollupEntryFilePaths, { base })
- const files = [...tracedDeps].filter(
- (path) =>
- !path.startsWith(relativeOutDir) &&
- // false detection
- !path.startsWith('usr/')
+ const tracedDeps = new Set(
+ [...result.fileList].filter(
+ (file) => !result.reasons.get(file)?.type.includes('initial') && !file.startsWith('usr/')
)
+ )
- // We are done, no dependencies need to be copied
- if (!files.length) {
- return
- }
+ const filesToCopy = [...tracedDeps].map(toPosixPath).filter((path) => !path.startsWith(relativeOutDir))
- if (result.warnings.size && isYarnPnP()) {
- // TODO: assert the warning is caused by a native dependency
- assertUsage(false, 'Standalone build is not supported when using Yarn PnP and native dependencies.')
- }
+ if (!filesToCopy.length) return
- // this is only needed if searchForWorkspaceRoot doesn't find the workspace root and returns the fs root
- // this is very unlikely, but possible
- // to test this, set base to '/' and it should still work
- const commonAncestor = findCommonAncestor(files)
+ if (result.warnings.size && isYarnPnP()) {
+ assertUsage(false, 'Standalone build is not supported when using Yarn PnP and native dependencies.')
+ }
+
+ const commonAncestor = findCommonAncestor(filesToCopy)
+ const concurrencyLimit = pLimit(10)
+ const copiedFiles = new Set()
- const concurrencyLimit = pLimit(10)
- const copiedFiles = new Set()
- await Promise.all(
- files.map((relativeFile) =>
- concurrencyLimit(async () => {
- const tracedFilePath = path.posix.join(base, relativeFile)
- const isNodeModules = relativeFile.includes('node_modules')
+ await Promise.all(
+ filesToCopy.map((relativeFile) =>
+ concurrencyLimit(async () => {
+ const tracedFilePath = path.posix.join(base, relativeFile)
+ const isNodeModules = relativeFile.includes('node_modules')
- relativeFile = relativeFile.replace(relativeRoot, '').replace(commonAncestor, '')
- const relativeFileHoisted = `node_modules${relativeFile.split('node_modules').pop()}`
- const fileOutputPath = path.posix.join(outDirAbs, isNodeModules ? relativeFileHoisted : relativeFile)
- const isDir = (await fs.stat(tracedFilePath)).isDirectory()
+ relativeFile = relativeFile.replace(relativeRoot, '').replace(commonAncestor, '')
+ const relativeFileHoisted = `node_modules${relativeFile.split('node_modules').pop()}`
+ const fileOutputPath = path.posix.join(outDirAbs, isNodeModules ? relativeFileHoisted : relativeFile)
- if (!isDir && !copiedFiles.has(fileOutputPath)) {
- copiedFiles.add(fileOutputPath)
- await fs.cp(await fs.realpath(tracedFilePath), fileOutputPath, {
- recursive: true
- })
- }
- })
- )
+ if (!(await fs.stat(tracedFilePath)).isDirectory() && !copiedFiles.has(fileOutputPath)) {
+ copiedFiles.add(fileOutputPath)
+ await fs.cp(tracedFilePath, fileOutputPath, { recursive: true, dereference: true })
+ }
+ })
)
- }
+ )
}
}
-function findCommonAncestor(paths: string[]) {
- // There is no common anchestor of 0 or 1 path
- if (paths.length <= 1) {
- return ''
+function generateBanner() {
+ return [
+ "import { dirname as dirname987 } from 'path';",
+ "import { fileURLToPath as fileURLToPath987 } from 'url';",
+ "import { createRequire as createRequire987 } from 'module';",
+ 'var require = createRequire987(import.meta.url);',
+ 'var __filename = fileURLToPath987(import.meta.url);',
+ 'var __dirname = dirname987(__filename);'
+ ].join('\n')
+}
+
+function createStandaloneIgnorePlugin(rollupResolve: any): esbuild.Plugin {
+ return {
+ name: 'standalone-ignore',
+ setup(build) {
+ build.onResolve({ filter: /.*/, namespace: 'ignore' }, (args) => ({
+ path: args.path,
+ namespace: 'ignore'
+ }))
+ build.onResolve({ filter: new RegExp(`^(${OPTIONAL_NPM_IMPORTS.join('|')})`) }, async (args) => {
+ const resolved = await rollupResolve(args.path)
+ if (!resolved) {
+ return { path: args.path, namespace: 'ignore' }
+ }
+ })
+ build.onLoad({ filter: /.*/, namespace: 'ignore' }, () => ({ contents: '' }))
+ }
}
+}
- // Split each path into its components
- const pathsComponents = paths.map((path) => path.split('/'))
+function findCommonAncestor(paths: string[]): string {
+ if (paths.length <= 1) return ''
+ const pathComponents = paths.map((path) => path.split('/'))
let commonAncestor = ''
let index = 0
- assert(pathsComponents.length)
-
- // While there is a common component at the current index
- while (pathsComponents.every((components) => components[index] === pathsComponents[0]![index])) {
- // Add the common component to the common ancestor path
- commonAncestor += pathsComponents[0]![index] + '/'
+ while (pathComponents.every((components) => components[index] === pathComponents[0]![index])) {
+ commonAncestor += pathComponents[0]![index] + '/'
index++
}
- // If no common ancestor was found, return an empty string
- if (commonAncestor === '') {
- return ''
- }
-
- // Otherwise, return the common ancestor path, removing the trailing slash
- return commonAncestor.slice(0, -1)
+ return commonAncestor ? commonAncestor.slice(0, -1) : ''
}
function isYarnPnP(): boolean {
@@ -243,7 +218,6 @@ function findRollupBundleEntries e.name === 'index')
assert(serverIndex)
- // bundle the index entry first
- return entries.sort((a, b) => {
- const isIndexA = a.name === 'index'
- const isIndexB = a.name === 'index'
-
- if (isIndexA) {
- return -1
- }
-
- if (isIndexB) {
- return 1
- }
-
- return 0
- })
+ return entries.sort((a, b) => (a.name === 'index' ? -1 : b.name === 'index' ? 1 : 0))
}
diff --git a/packages/vike-node/src/plugin/utils/isBun.ts b/packages/vike-node/src/plugin/utils/isBun.ts
new file mode 100644
index 0000000..6136126
--- /dev/null
+++ b/packages/vike-node/src/plugin/utils/isBun.ts
@@ -0,0 +1,2 @@
+//@ts-ignore
+export const isBun = typeof Bun !== 'undefined'
diff --git a/packages/vike-node/src/plugin/utils/resolveConfig.ts b/packages/vike-node/src/plugin/utils/resolveConfig.ts
index 38d3d2f..dc37156 100644
--- a/packages/vike-node/src/plugin/utils/resolveConfig.ts
+++ b/packages/vike-node/src/plugin/utils/resolveConfig.ts
@@ -31,7 +31,7 @@ function resolveConfig(configVike: ConfigVikeNode): ConfigVikeNodeResolved {
server: {
entry: entriesProvided,
standalone: configVike.server.standalone ?? false,
- native: unique([...nativeDependecies, ...(configVike.server.native ?? [])])
+ external: unique([...nativeDependecies, ...(configVike.server.external ?? [])])
}
}
}
@@ -41,7 +41,7 @@ function resolveConfig(configVike: ConfigVikeNode): ConfigVikeNodeResolved {
server: {
entry: { index: configVike.server },
standalone: false,
- native: []
+ external: nativeDependecies
}
}
}
diff --git a/packages/vike-node/src/runtime/adapters/connectToWeb.ts b/packages/vike-node/src/runtime/adapters/connectToWeb.ts
new file mode 100644
index 0000000..11a77ce
--- /dev/null
+++ b/packages/vike-node/src/runtime/adapters/connectToWeb.ts
@@ -0,0 +1,92 @@
+export { connectToWeb }
+
+import type { IncomingMessage } from 'node:http'
+import { Readable } from 'node:stream'
+import type { ConnectMiddleware } from '../types.js'
+import { flattenHeaders } from '../utils/header-utils.js'
+import { createServerResponse } from './createServerResponse.js'
+
+/** Type definition for a web-compatible request handler */
+type WebHandler = (request: Request) => Response | undefined | Promise
+
+const statusCodesWithoutBody = [
+ 100, // Continue
+ 101, // Switching Protocols
+ 102, // Processing (WebDAV)
+ 103, // Early Hints
+ 204, // No Content
+ 205, // Reset Content
+ 304 // Not Modified
+]
+
+/**
+ * Converts a Connect-style middleware to a web-compatible request handler.
+ *
+ * @param {ConnectMiddleware} handler - The Connect-style middleware function to be converted.
+ * @returns {WebHandler} A function that handles web requests and returns a Response or undefined.
+ */
+function connectToWeb(handler: ConnectMiddleware): WebHandler {
+ return async (request: Request): Promise => {
+ const req = createIncomingMessage(request)
+ const { res, onReadable } = createServerResponse(req)
+
+ return new Promise((resolve, reject) => {
+ ;(async () => {
+ try {
+ const { readable, headers, statusCode } = await onReadable
+ const responseBody = statusCodesWithoutBody.includes(statusCode)
+ ? null
+ : (Readable.toWeb(readable) as ReadableStream)
+ resolve(
+ new Response(responseBody, {
+ status: statusCode,
+ headers: flattenHeaders(headers)
+ })
+ )
+ } catch (error) {
+ reject(error instanceof Error ? error : new Error('Error creating response'))
+ }
+ })()
+
+ const next = (error?: unknown) => {
+ if (error) {
+ reject(error instanceof Error ? error : new Error(String(error)))
+ } else {
+ resolve(undefined)
+ }
+ }
+
+ try {
+ handler(req, res, next)
+ } catch (error) {
+ reject(error instanceof Error ? error : new Error(String(error)))
+ }
+
+ request.signal.addEventListener(
+ 'abort',
+ () => {
+ resolve(undefined)
+ },
+ { once: true }
+ )
+ })
+ }
+}
+
+/**
+ * Creates an IncomingMessage object from a web Request.
+ *
+ * @param {Request} request - The web Request object.
+ * @returns {IncomingMessage} An IncomingMessage-like object compatible with Node.js HTTP module.
+ */
+function createIncomingMessage(request: Request): IncomingMessage {
+ const parsedUrl = new URL(request.url)
+ const pathnameAndQuery = (parsedUrl.pathname || '') + (parsedUrl.search || '')
+
+ const body = request.body ? Readable.fromWeb(request.body as any) : Readable.from([])
+ return Object.assign(body, {
+ url: pathnameAndQuery,
+ method: request.method,
+ headers: Object.fromEntries(request.headers)
+ }) as IncomingMessage
+}
diff --git a/packages/vike-node/src/runtime/adapters/createServerResponse.ts b/packages/vike-node/src/runtime/adapters/createServerResponse.ts
new file mode 100644
index 0000000..46799ca
--- /dev/null
+++ b/packages/vike-node/src/runtime/adapters/createServerResponse.ts
@@ -0,0 +1,69 @@
+export { createServerResponse }
+
+import { ServerResponse, type IncomingMessage, type OutgoingHttpHeader, type OutgoingHttpHeaders } from 'http'
+import { PassThrough, Readable } from 'stream'
+
+/**
+ * Creates a custom ServerResponse object that allows for intercepting and streaming the response.
+ *
+ * @param {IncomingMessage} incomingMessage - The incoming HTTP request message.
+ * @returns {{ res: ServerResponse; onReadable: Promise<{ readable: Readable; headers: OutgoingHttpHeaders; statusCode: number }> }}
+ * An object containing:
+ * - res: The custom ServerResponse object.
+ * - onReadable: A promise that resolves when the response is readable, providing the readable stream, headers, and status code.
+ */
+function createServerResponse(incomingMessage: IncomingMessage) {
+ const res = new ServerResponse(incomingMessage)
+ const passThrough = new PassThrough()
+ const onReadable = new Promise<{ readable: Readable; headers: OutgoingHttpHeaders; statusCode: number }>(
+ (resolve, reject) => {
+ passThrough.once('readable', () => {
+ resolve({ readable: Readable.from(passThrough), headers: res.getHeaders(), statusCode: res.statusCode })
+ })
+ passThrough.once('error', (err) => {
+ reject(err)
+ })
+ }
+ )
+
+ res.once('finish', () => {
+ passThrough.end()
+ })
+
+ passThrough.on('drain', () => {
+ res.emit('drain')
+ })
+
+ res.write = passThrough.write.bind(passThrough)
+ res.end = (passThrough as any).end.bind(passThrough)
+
+ let headersSet = false
+ res.writeHead = function writeHead(
+ statusCode: number,
+ statusMessage?: string | OutgoingHttpHeaders | OutgoingHttpHeader[],
+ headers?: OutgoingHttpHeaders | OutgoingHttpHeader[]
+ ): ServerResponse {
+ if (headersSet) {
+ return res
+ }
+ headersSet = true
+ res.statusCode = statusCode
+ if (typeof statusMessage === 'object') {
+ headers = statusMessage
+ statusMessage = undefined
+ }
+ if (headers) {
+ Object.entries(headers).forEach(([key, value]) => {
+ if (value !== undefined) {
+ res.setHeader(key, value)
+ }
+ })
+ }
+ return res
+ }
+
+ return {
+ res,
+ onReadable
+ }
+}
diff --git a/packages/vike-node/src/runtime/connect.ts b/packages/vike-node/src/runtime/connect.ts
deleted file mode 100644
index 2762232..0000000
--- a/packages/vike-node/src/runtime/connect.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-export { vike }
-
-import type { IncomingMessage, ServerResponse } from 'http'
-import { createHandler } from './handler.js'
-import type { NextFunction, VikeOptions } from './types.js'
-
-function vike(
- options?: VikeOptions
-): (req: PlatformRequest, res: PlatformResponse, next?: NextFunction) => void {
- const handler = createHandler(options)
- return function middleware(req, res, next): void {
- handler({
- req,
- res,
- next,
- platformRequest: req
- })
- }
-}
diff --git a/packages/vike-node/src/runtime/env.ts b/packages/vike-node/src/runtime/env.ts
deleted file mode 100644
index d2b1c46..0000000
--- a/packages/vike-node/src/runtime/env.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-export { getIsDevEnv, getIsWorkerEnv, setIsWorkerEnv, setPluginLoaded }
-//TODO: global object
-declare global {
- var isWorkerEnv: boolean
- var isPluginLoaded: boolean
-}
-
-globalThis.isWorkerEnv ??= false
-function setIsWorkerEnv() {
- globalThis.isWorkerEnv = true
-}
-
-function getIsWorkerEnv() {
- return globalThis.isWorkerEnv
-}
-
-function setPluginLoaded() {
- globalThis.isPluginLoaded = true
-}
-
-function getPluginLoaded() {
- return globalThis.isPluginLoaded
-}
-
-function getIsDevEnv() {
- return getIsWorkerEnv() || getPluginLoaded() || process.env.NODE_ENV === 'development'
-}
diff --git a/packages/vike-node/src/runtime/fastify.ts b/packages/vike-node/src/runtime/fastify.ts
deleted file mode 100644
index 073f9a0..0000000
--- a/packages/vike-node/src/runtime/fastify.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-export { vike }
-
-import type { FastifyPluginCallback, FastifyRequest } from 'fastify'
-import { createHandler } from './handler.js'
-import type { VikeOptions } from './types.js'
-
-function vike(options?: VikeOptions): FastifyPluginCallback {
- const handler = createHandler(options)
- return function plugin(instance, _options, done) {
- instance.get('*', (req, reply) =>
- handler({
- req: req.raw,
- res: reply.raw,
- platformRequest: req
- })
- )
- done()
- }
-}
diff --git a/packages/vike-node/src/runtime/frameworks/connect.ts b/packages/vike-node/src/runtime/frameworks/connect.ts
new file mode 100644
index 0000000..7965288
--- /dev/null
+++ b/packages/vike-node/src/runtime/frameworks/connect.ts
@@ -0,0 +1,50 @@
+export { vike }
+
+import type { IncomingMessage, ServerResponse } from 'http'
+import { createHandler } from '../handler.js'
+import type { NextFunction, VikeOptions } from '../types.js'
+import { globalStore } from '../globalStore.js'
+
+/**
+ * Creates middleware for Express-like frameworks to handle Vike requests.
+ *
+ * @template PlatformRequest - The type of the request object, extending IncomingMessage.
+ * @template PlatformResponse - The type of the response object, extending ServerResponse.
+ *
+ * @param {VikeOptions} [options] - Configuration options for Vike.
+ *
+ * @returns {(req: PlatformRequest, res: PlatformResponse, next?: NextFunction) => void}
+ * A single middleware function that handles Vike requests. This function:
+ * 1. Checks for and handles HMR WebSocket upgrade requests.
+ * 2. Processes regular requests using Vike's handler.
+ * 3. Calls the next middleware if the request is not handled by Vike.
+ *
+ * @example
+ * ```js
+ * import express from 'express'
+ * import { vike } from 'vike-node/connect'
+ *
+ * const app = express()
+ * app.use(vike())
+ * ```
+ *
+ */
+function vike(
+ options?: VikeOptions
+): (req: PlatformRequest, res: PlatformResponse, next?: NextFunction) => void {
+ const handler = createHandler(options)
+ return (req, res, next) => {
+ const handled = globalStore.HMRProxy(req, res)
+ if (handled) {
+ next?.()
+ return
+ }
+
+ handler({
+ req,
+ res,
+ next,
+ platformRequest: req
+ })
+ }
+}
diff --git a/packages/vike-node/src/runtime/frameworks/fastify.ts b/packages/vike-node/src/runtime/frameworks/fastify.ts
new file mode 100644
index 0000000..a8a7d47
--- /dev/null
+++ b/packages/vike-node/src/runtime/frameworks/fastify.ts
@@ -0,0 +1,60 @@
+export { vike }
+
+import type { FastifyPluginCallback, FastifyRequest } from 'fastify'
+import { createServerResponse } from '../adapters/createServerResponse.js'
+import { createHandler } from '../handler.js'
+import type { VikeOptions } from '../types.js'
+import { globalStore } from '../globalStore.js'
+
+/**
+ * Creates a Fastify plugin to handle Vike requests and Hot Module Replacement (HMR).
+ *
+ * @param {VikeOptions} [options] - Configuration options for Vike.
+ *
+ * @returns {FastifyPluginCallback} A Fastify plugin that handles all GET requests and processes them with Vike.
+ *
+ * @description
+ * This function creates a Fastify plugin that integrates Vike's server-side rendering capabilities
+ * and handles Hot Module Replacement (HMR) for development environments. The plugin:
+ * 1. Checks for and handles HMR WebSocket upgrade requests.
+ * 2. Processes regular requests using Vike's handler.
+ * 3. If Vike doesn't handle the request, it calls Fastify's `reply.callNotFound()`.
+ *
+ * @example
+ * ```js
+ * import fastify from 'fastify'
+ * import { vike } from 'vike-node/fastify'
+ *
+ * const app = fastify()
+ * app.register(vike())
+ * ```
+ *
+ */
+function vike(options?: VikeOptions): FastifyPluginCallback {
+ const handler = createHandler(options)
+ return function plugin(instance, _options, done) {
+ instance.get('*', async (req, reply) => {
+ const handled = globalStore.HMRProxy(req.raw, reply.raw)
+ if (handled) {
+ return
+ }
+ const { res, onReadable } = createServerResponse(req.raw)
+ ;(async () => {
+ const { readable, headers, statusCode } = await onReadable
+ reply.code(statusCode)
+ reply.headers(headers)
+ reply.send(readable)
+ })()
+ await handler({
+ req: req.raw,
+ res,
+ platformRequest: req,
+ next() {
+ reply.callNotFound()
+ }
+ })
+ })
+
+ done()
+ }
+}
diff --git a/packages/vike-node/src/runtime/frameworks/hono.ts b/packages/vike-node/src/runtime/frameworks/hono.ts
new file mode 100644
index 0000000..e189008
--- /dev/null
+++ b/packages/vike-node/src/runtime/frameworks/hono.ts
@@ -0,0 +1,64 @@
+export { vike }
+
+import type { HonoRequest, MiddlewareHandler } from 'hono'
+import type { IncomingMessage, ServerResponse } from 'http'
+import { connectToWeb } from '../adapters/connectToWeb.js'
+import { globalStore } from '../globalStore.js'
+import { createHandler } from '../handler.js'
+import type { VikeOptions } from '../types.js'
+
+/**
+ * Creates a Hono middleware to handle Vike requests and HMR (Hot Module Replacement).
+ *
+ * @param {VikeOptions} [options] - Configuration options for Vike.
+ *
+ * @returns {MiddlewareHandler} A Hono middleware function that processes requests with Vike.
+ *
+ * @description
+ * This function creates a Hono middleware that integrates Vike's server-side rendering capabilities
+ * and handles Hot Module Replacement (HMR) for development environments. The middleware:
+ *
+ * 1. Checks for and handles HMR WebSocket upgrade requests.
+ * 2. Processes regular requests using Vike's handler.
+ * 3. Adapts Node.js-style request handling to work with Web standard Response objects.
+ * 4. Allows pass-through to next middleware if Vike doesn't handle the request.
+ *
+ * @example
+ * ```js
+ * import { Hono } from 'hono'
+ * import { vike } from 'vike-node/hono'
+ *
+ * const app = new Hono()
+ * app.use('*', vike())
+ * ```
+ *
+ */
+function vike(options?: VikeOptions): MiddlewareHandler {
+ const handler = createHandler(options)
+ return async function middleware(ctx, next) {
+ const req = ctx.env.incoming as IncomingMessage
+ const res = ctx.env.outgoing as ServerResponse
+ const handled = globalStore.HMRProxy(req, res)
+
+ if (handled) {
+ res.writeHead = () => res
+ return new Response()
+ }
+
+ const response = await connectToWeb((req, res, next) =>
+ handler({
+ req,
+ res,
+ next,
+ platformRequest: ctx.req
+ })
+ )(ctx.req.raw)
+
+ if (response) {
+ return response
+ }
+
+ // If not handled by Vike, continue to next middleware
+ await next()
+ }
+}
diff --git a/packages/vike-node/src/runtime/globalStore.ts b/packages/vike-node/src/runtime/globalStore.ts
new file mode 100644
index 0000000..1c209dc
--- /dev/null
+++ b/packages/vike-node/src/runtime/globalStore.ts
@@ -0,0 +1,17 @@
+import type { IncomingMessage, ServerResponse } from 'http'
+import type { ViteDevServer } from 'vite'
+import { NextFunction } from './types.js'
+
+// @ts-expect-error
+export const globalStore = (globalThis.__vikeNode ||= {
+ isPluginLoaded: false,
+ // This is overridden in devServerPlugin
+ HMRProxy: (req: IncomingMessage, res: ServerResponse, next?: NextFunction) => {
+ next?.()
+ return false
+ }
+}) as {
+ isPluginLoaded: boolean
+ viteDevServer?: ViteDevServer
+ HMRProxy: (req: IncomingMessage, res: ServerResponse, next?: NextFunction) => boolean
+}
diff --git a/packages/vike-node/src/runtime/handler.ts b/packages/vike-node/src/runtime/handler.ts
index 1d970c9..5dd1274 100644
--- a/packages/vike-node/src/runtime/handler.ts
+++ b/packages/vike-node/src/runtime/handler.ts
@@ -1,35 +1,24 @@
-export { createHandler }
-
import type { IncomingMessage, ServerResponse } from 'http'
-import { dirname, join } from 'path'
+import { dirname, isAbsolute, join } from 'path'
import { fileURLToPath } from 'url'
import { renderPage } from 'vike/server'
import { assert } from '../utils/assert.js'
-import { getIsDevEnv } from './env.js'
-import { RenderAssetHttpResponse, renderAsset } from './renderAsset.js'
-import type { NextFunction, VikeHttpResponse, VikeOptions } from './types.js'
-
-const dirname_ = dirname(fileURLToPath(import.meta.url))
-
-function createHandler(options: VikeOptions = {}) {
- let staticHandler: ((req: IncomingMessage, res: ServerResponse, next: () => void) => void) | undefined
- let compressHandler: ((req: IncomingMessage, res: ServerResponse, next: () => void) => void) | undefined
-
- function getPageContext(platformRequest: PlatformRequest): Record | Promise> {
- if (typeof options?.pageContext === 'function') {
- return options.pageContext(platformRequest)
- }
- return options.pageContext ?? {}
- }
-
- const serveAssets =
- options.serveAssets === true || options.serveAssets === undefined
- ? {
- root: join(dirname_, '..', 'client'),
- compress: true,
- cache: true
- }
- : false
+import { globalStore } from './globalStore.js'
+import type { ConnectMiddleware, VikeOptions } from './types.js'
+import { writeHttpResponse } from './utils/writeHttpResponse.js'
+
+const argv1 = process.argv[1]
+const entrypointDirAbs = argv1
+ ? dirname(isAbsolute(argv1) ? argv1 : join(process.cwd(), argv1))
+ : dirname(fileURLToPath(import.meta.url))
+const defaultStaticDir = join(entrypointDirAbs, '..', 'client')
+
+export function createHandler(options: VikeOptions = {}) {
+ const staticConfig = resolveStaticConfig(options.static)
+ const shouldCache = staticConfig && staticConfig.cache
+ const compressionType = options.compress ?? true
+ let staticMiddleware: ConnectMiddleware | undefined
+ let compressMiddleware: ConnectMiddleware | undefined
return async function handler({
req,
@@ -39,104 +28,106 @@ function createHandler(options: VikeOptions =
}: {
req: IncomingMessage
res: ServerResponse
- next?: NextFunction
+ next?: (err?: unknown) => void
platformRequest: PlatformRequest
- }) {
+ }): Promise {
if (req.method !== 'GET') {
- return next?.()
+ next?.()
+ return false
}
- const urlOriginal = req.url ?? ''
-
- if (getIsDevEnv()) {
- const httpResponse = await renderAsset(urlOriginal, req.headers)
- if (httpResponse) {
- await writeHttpResponse(httpResponse, res)
- return
- }
- } else if (serveAssets) {
- const { root, compress, cache } = serveAssets
- if (compress) {
- if (!compressHandler) {
- const { default: shrinkRay } = await import('@nitedani/shrink-ray-current')
- //@ts-ignore
- compressHandler = shrinkRay({
- cacheSize: cache ? '128mB' : false
- })
- }
-
- assert(compressHandler)
- compressHandler(req, res, () => {})
+ if (globalStore.isPluginLoaded) {
+ const handled = await handleViteDevServer(req, res)
+ if (handled) return true
+ } else {
+ const isAsset = req.url?.startsWith('/assets/')
+ const shouldCompressResponse = compressionType === true || (compressionType === 'static' && isAsset)
+ if (shouldCompressResponse) {
+ await applyCompression(req, res, shouldCache)
}
- if (!staticHandler) {
- const { default: sirv } = await import('sirv')
- staticHandler = sirv(root, {
- etag: true
- })
+ if (staticConfig) {
+ const handled = await serveStaticFiles(req, res, staticConfig)
+ if (handled) return true
}
+ }
- const handled = await new Promise((resolve) => {
- res.once('finish', () => resolve(true))
- assert(staticHandler)
- staticHandler(req, res, () => {
- resolve(false)
- })
- })
- if (handled) {
- return
- }
+ const handled = await renderPageAndRespond(req, res, platformRequest)
+ if (handled) return true
+ next?.()
+ return false
+ }
+
+ async function applyCompression(req: IncomingMessage, res: ServerResponse, shouldCache: boolean) {
+ if (!compressMiddleware) {
+ const { default: shrinkRay } = await import('@nitedani/shrink-ray-current')
+ compressMiddleware = shrinkRay({ cacheSize: shouldCache ? '128mB' : false }) as ConnectMiddleware
}
+ compressMiddleware(req, res, () => {})
+ }
- const pageContextInit = {
- urlOriginal,
- userAgent: req.headers['user-agent']
+ async function serveStaticFiles(
+ req: IncomingMessage,
+ res: ServerResponse,
+ config: { root: string; cache: boolean }
+ ): Promise {
+ if (!staticMiddleware) {
+ const { default: sirv } = await import('sirv')
+ staticMiddleware = sirv(config.root, { etag: true })
}
- const mergedPageContextInit = {
- ...pageContextInit,
- ...(getPageContext && (await getPageContext(platformRequest)))
+ return new Promise((resolve) => {
+ res.once('finish', () => resolve(true))
+ staticMiddleware!(req, res, () => resolve(false))
+ })
+ }
+
+ async function renderPageAndRespond(
+ req: IncomingMessage,
+ res: ServerResponse,
+ platformRequest: PlatformRequest
+ ): Promise {
+ const pageContext = await renderPage({
+ urlOriginal: req.url ?? '',
+ userAgent: req.headers['user-agent'],
+ ...(await getPageContext(platformRequest))
+ })
+
+ if (pageContext.errorWhileRendering) {
+ options.onError?.(pageContext.errorWhileRendering)
}
- const pageContext = await renderPage(mergedPageContextInit)
- const { httpResponse, errorWhileRendering } = pageContext
- if (errorWhileRendering) {
- options.onError?.(errorWhileRendering)
+ if (!pageContext.httpResponse) {
+ return false
}
- if (!httpResponse) return next?.()
- await writeHttpResponse(httpResponse, res)
+
+ await writeHttpResponse(pageContext.httpResponse, res)
+ return true
}
-}
-async function writeHttpResponse(httpResponse: VikeHttpResponse | RenderAssetHttpResponse, res: ServerResponse) {
- assert(httpResponse)
- const { statusCode, headers } = httpResponse
- const groupedHeaders = groupHeaders(headers)
- groupedHeaders.forEach(([name, value]) => res.setHeader(name, value))
- res.statusCode = statusCode
- httpResponse.pipe(res)
- await new Promise((resolve) => {
- res.once('finish', resolve)
- })
+ function getPageContext(platformRequest: PlatformRequest) {
+ return typeof options.pageContext === 'function' ? options.pageContext(platformRequest) : options.pageContext ?? {}
+ }
}
-function groupHeaders(headers: [string, string][]) {
- const grouped: { [key: string]: string | string[] } = {}
-
- headers.forEach(([key, value]) => {
- if (grouped[key]) {
- // If the key already exists, append the new value
- if (Array.isArray(grouped[key])) {
- ;(grouped[key] as string[]).push(value)
- } else {
- grouped[key] = [grouped[key] as string, value]
- }
- } else {
- // If the key doesn't exist, add it to the object
- grouped[key] = value
- }
+function handleViteDevServer(req: IncomingMessage, res: ServerResponse): Promise {
+ return new Promise((resolve) => {
+ res.once('finish', () => resolve(true))
+ assert(globalStore.viteDevServer)
+ globalStore.viteDevServer.middlewares(req, res, () => resolve(false))
})
+}
- // Convert the object back to an array
- return Object.entries(grouped)
+function resolveStaticConfig(static_: VikeOptions['static']): false | { root: string; cache: boolean } {
+ if (static_ === false) return false
+ if (static_ === true || static_ === undefined) {
+ return { root: defaultStaticDir, cache: true }
+ }
+ if (typeof static_ === 'string') {
+ return { root: static_, cache: true }
+ }
+ return {
+ root: static_.root ?? defaultStaticDir,
+ cache: static_.cache ?? true
+ }
}
diff --git a/packages/vike-node/src/runtime/renderAsset.ts b/packages/vike-node/src/runtime/renderAsset.ts
deleted file mode 100644
index 4f1ff27..0000000
--- a/packages/vike-node/src/runtime/renderAsset.ts
+++ /dev/null
@@ -1,98 +0,0 @@
-export { renderAsset }
-export type { RenderAssetHttpResponse }
-
-import pc from '@brillout/picocolors'
-import { request } from 'http'
-import type { Writable } from 'stream'
-import { viteMiddlewareProxyPort } from '../plugin/plugins/devServer/constants.js'
-import { assertUsage } from '../utils/assert.js'
-import { getIsWorkerEnv } from './env.js'
-import type { HeadersProvided } from './types.js'
-
-type RenderAssetHttpResponse = {
- statusCode: number
- headers: [string, string][]
- pipe(writable: Writable): void
-} | null
-
-function renderAsset(url: string, headers: HeadersProvided): Promise {
- assertUsage(getIsWorkerEnv(), `${pc.cyan('renderAsset')} should only be called in development mode`)
-
- const parsedHeaders = parseHeaders(headers)
- const isUpgradeRequest = parsedHeaders.some(([key]) => key.toLowerCase() === 'upgrade')
- if (isUpgradeRequest) {
- return Promise.resolve(null)
- }
-
- const assetRequest = request({
- host: '127.0.0.1',
- port: viteMiddlewareProxyPort,
- headers: convertToHttpHeaders(parsedHeaders),
- path: url
- })
-
- assetRequest.end()
-
- return new Promise((resolve) => {
- assetRequest.once('error', () => {
- resolve(null)
- })
-
- assetRequest.once('response', (fromVite) => {
- const ok =
- 'statusCode' in fromVite &&
- fromVite.statusCode &&
- ((200 <= fromVite.statusCode && fromVite.statusCode <= 299) || fromVite.statusCode === 304)
-
- if (!ok) {
- resolve(null)
- return
- }
-
- resolve({
- headers: parseHeaders(fromVite.headers),
- statusCode: fromVite.statusCode!,
- pipe: fromVite.pipe.bind(fromVite)
- })
- })
- })
-}
-
-export const parseHeaders = (headers: HeadersProvided): [string, string][] => {
- const result: [string, string][] = []
- if (typeof headers.forEach === 'function') {
- headers.forEach((value, key) => {
- if (Array.isArray(value)) {
- value.forEach((value_) => {
- result.push([key, value_])
- })
- } else {
- result.push([key, value])
- }
- })
- } else {
- for (const [key, value] of Object.entries(headers)) {
- if (Array.isArray(value)) {
- value.forEach((value_) => {
- result.push([key, value_])
- })
- } else {
- result.push([key, value])
- }
- }
- }
-
- return result
-}
-
-export function convertToHttpHeaders(headers: [string, string | string[]][]): Record {
- const result: Record = {}
- for (const [key, value] of headers) {
- if (result[key]) {
- result[key] = [result[key], value].flat() as string[]
- } else {
- result[key] = value
- }
- }
- return result
-}
diff --git a/packages/vike-node/src/runtime/types.ts b/packages/vike-node/src/runtime/types.ts
index 803ca3d..f4f7425 100644
--- a/packages/vike-node/src/runtime/types.ts
+++ b/packages/vike-node/src/runtime/types.ts
@@ -1,8 +1,15 @@
+import type { IncomingMessage, ServerResponse } from 'http'
+
export type HeadersProvided = Record | Headers
export type VikeHttpResponse = Awaited>['httpResponse']
-export type NextFunction = (err?: Error) => void
+export type NextFunction = (err?: unknown) => void
export type VikeOptions = {
pageContext?: ((req: PlatformRequest) => Record | Promise>) | Record
- serveAssets?: boolean | { root?: string; compress?: boolean; cache?: boolean }
+ compress?: boolean | 'static'
+ static?: boolean | string | { root?: string; cache?: boolean }
onError?: (err: unknown) => void
}
+export type ConnectMiddleware<
+ PlatformRequest extends IncomingMessage = IncomingMessage,
+ PlatformResponse extends ServerResponse = ServerResponse
+> = (req: PlatformRequest, res: PlatformResponse, next: NextFunction) => void
diff --git a/packages/vike-node/src/runtime/utils/header-utils.ts b/packages/vike-node/src/runtime/utils/header-utils.ts
new file mode 100644
index 0000000..295c7c1
--- /dev/null
+++ b/packages/vike-node/src/runtime/utils/header-utils.ts
@@ -0,0 +1,46 @@
+export { flattenHeaders, groupHeaders }
+
+import type { OutgoingHttpHeaders } from 'http'
+
+function groupHeaders(headers: [string, string][]): [string, string | string[]][] {
+ const grouped: { [key: string]: string | string[] } = {}
+
+ headers.forEach(([key, value]) => {
+ if (grouped[key]) {
+ // If the key already exists, append the new value
+ if (Array.isArray(grouped[key])) {
+ ;(grouped[key] as string[]).push(value)
+ } else {
+ grouped[key] = [grouped[key] as string, value]
+ }
+ } else {
+ // If the key doesn't exist, add it to the object
+ grouped[key] = value
+ }
+ })
+
+ // Convert the object back to an array
+ return Object.entries(grouped)
+}
+
+function flattenHeaders(headers: OutgoingHttpHeaders): [string, string][] {
+ const flatHeaders: [string, string][] = []
+
+ for (const [key, value] of Object.entries(headers)) {
+ if (value === undefined || value === null) {
+ continue
+ }
+
+ if (Array.isArray(value)) {
+ value.forEach((v) => {
+ if (v != null) {
+ flatHeaders.push([key, String(v)])
+ }
+ })
+ } else {
+ flatHeaders.push([key, String(value)])
+ }
+ }
+
+ return flatHeaders
+}
diff --git a/packages/vike-node/src/runtime/utils/writeHttpResponse.ts b/packages/vike-node/src/runtime/utils/writeHttpResponse.ts
new file mode 100644
index 0000000..f89f8e7
--- /dev/null
+++ b/packages/vike-node/src/runtime/utils/writeHttpResponse.ts
@@ -0,0 +1,18 @@
+export { writeHttpResponse }
+
+import type { ServerResponse } from 'http'
+import { assert } from '../../utils/assert.js'
+import type { VikeHttpResponse } from '../types.js'
+import { groupHeaders } from './header-utils.js'
+
+async function writeHttpResponse(httpResponse: VikeHttpResponse, res: ServerResponse) {
+ assert(httpResponse)
+ const { statusCode, headers } = httpResponse
+ const groupedHeaders = groupHeaders(headers)
+ groupedHeaders.forEach(([name, value]) => res.setHeader(name, value))
+ res.statusCode = statusCode
+ httpResponse.pipe(res)
+ await new Promise((resolve) => {
+ res.once('finish', resolve)
+ })
+}
diff --git a/packages/vike-node/src/runtime/web.ts b/packages/vike-node/src/runtime/web.ts
deleted file mode 100644
index b7458b9..0000000
--- a/packages/vike-node/src/runtime/web.ts
+++ /dev/null
@@ -1,106 +0,0 @@
-export { vike }
-
-import { PassThrough, Readable } from 'stream'
-import { parse } from 'url'
-import { createHandler } from './handler.js'
-import { convertToHttpHeaders, parseHeaders } from './renderAsset.js'
-import type { HeadersProvided, VikeOptions } from './types.js'
-
-function vike(
- {
- url,
- headers
- }: {
- url: string
- headers: HeadersProvided
- },
- options?: VikeOptions
-) {
- const requestHeaders = convertToHttpHeaders(parseHeaders(headers))
- const handler = createHandler(options)
- const responseHeaders: Record = {}
- let responseStatus = 200
- const res = new Proxy(new PassThrough(), {
- get(target, prop) {
- if (prop === 'headers') {
- return responseHeaders
- }
- if (prop === 'statusCode') {
- return responseStatus
- }
- return Reflect.get(target, prop)
- },
- set(target, p, newValue, receiver) {
- if (p === 'statusCode') {
- responseStatus = newValue
- } else {
- return Reflect.set(target, p, newValue, receiver)
- }
- return true
- }
- })
- // @ts-ignore
- res.setHeader = (key: string, value: string) => {
- responseHeaders[key] = value
- }
- // @ts-ignore
- res.getHeader = (key: string) => responseHeaders[key]
- // @ts-ignore
- res.removeHeader = (key: string) => delete responseHeaders[key]
- // @ts-ignore
- res.writeHead = (status_: number, headersOrMessage?: Record | string) => {
- responseStatus = status_
- if (typeof headersOrMessage === 'object') {
- Object.assign(responseHeaders, headersOrMessage)
- }
- }
-
- return new Promise<{ body: ReadableStream | null; status: number; headers: Record } | null>(
- (resolve) => {
- let resolved = false
- function resolveResponse() {
- if (resolved) return
- resolved = true
- resolve({
- body: responseStatus === 304 ? null : (Readable.toWeb(res) as ReadableStream),
- status: responseStatus,
- headers: responseHeaders
- })
- }
-
- const originalWrite = res.write.bind(res)
- res.write = (...args) => {
- resolveResponse()
- // @ts-ignore
- return originalWrite(...args)
- }
- const originalEnd = res.end.bind(res)
- res.end = (...args) => {
- resolveResponse()
- // @ts-ignore
- return originalEnd(...args)
- }
- // @ts-ignore
- res._header = () => {}
-
- const parsedUrl = parse(url)
- const pathnameAndQuery = (parsedUrl.pathname || '') + (parsedUrl.search || '')
- const req = {
- url: pathnameAndQuery,
- headers: requestHeaders,
- method: 'GET'
- }
-
- handler({
- // @ts-ignore
- req,
- // @ts-ignore
- res,
- platformRequest: null,
- next: () => {
- resolve(null)
- }
- })
- }
- )
-}
diff --git a/packages/vike-node/src/types.ts b/packages/vike-node/src/types.ts
index e94645e..969ded7 100644
--- a/packages/vike-node/src/types.ts
+++ b/packages/vike-node/src/types.ts
@@ -1,10 +1,10 @@
-export type { ConfigVikeNode, ConfigVikeNodeResolved }
+export type { ConfigVikeNode, ConfigVikeNodeResolved, ConfigVikeNodePlugin }
type ConfigVikeNode = {
/** Server entry path.
*
*/
- server?:
+ server:
| string
| {
entry: string | { index: string; [name: string]: string }
@@ -14,13 +14,15 @@ type ConfigVikeNode = {
*/
standalone?: boolean
- /** List of native dependencies.
+ /** List of external/native dependencies.
*
*/
- native?: string[]
+ external?: string[]
}
}
type ConfigVikeNodeResolved = {
- server: { entry: { index: string; [name: string]: string }; native: string[]; standalone: boolean }
+ server: { entry: { index: string; [name: string]: string }; external: string[]; standalone: boolean }
}
+
+type ConfigVikeNodePlugin = ConfigVikeNode['server']
diff --git a/packages/vike-node/src/web.ts b/packages/vike-node/src/web.ts
deleted file mode 100644
index dbe9e96..0000000
--- a/packages/vike-node/src/web.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export { renderAsset } from './runtime/renderAsset.js'
-export { vike } from './runtime/web.js'
diff --git a/patches/vike@0.4.161.patch b/patches/vike@0.4.161.patch
deleted file mode 100644
index dae969a..0000000
--- a/patches/vike@0.4.161.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-diff --git a/dist/esm/node/plugin/plugins/devConfig/index.js b/dist/esm/node/plugin/plugins/devConfig/index.js
-index c5c10c82335216a90e21cf57bcc54f30fc83357d..4616c38cc7cd94f76fb83c9b8ac8652333e78819 100644
---- a/dist/esm/node/plugin/plugins/devConfig/index.js
-+++ b/dist/esm/node/plugin/plugins/devConfig/index.js
-@@ -75,11 +75,11 @@ function devConfig() {
- configureServer: {
- order: 'post',
- handler(server) {
-- if (config.server.middlewareMode)
-- return;
-- return () => {
-- addSsrMiddleware(server.middlewares);
-- };
-+ // if (config.server.middlewareMode)
-+ // return;
-+ // return () => {
-+ // addSsrMiddleware(server.middlewares);
-+ // };
- }
- },
- // Setting `configResolved.clearScreen = false` doesn't work
-diff --git a/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js b/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js
-index 0639ba92628c4cda6195b4dc6816f043b5523130..f2da977ae4480a5b3b02fbf92dc0168f63511e90 100644
---- a/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js
-+++ b/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js
-@@ -10,7 +10,7 @@ async function retrieveAssetsDev(clientDependencies, viteDevServer) {
- const { moduleGraph } = viteDevServer;
- const [_, graphId] = await moduleGraph.resolveUrl(id);
- assert(graphId, { id });
-- const mod = moduleGraph.getModuleById(graphId);
-+ const mod = await moduleGraph.getModuleById(graphId);
- if (!mod) {
- /* Not sure when the assertion fails. So let's just remove it for now.
- * - https://github.com/vikejs/vike/issues/391
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4ede049..cb41450 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,4 +1,4 @@
-lockfileVersion: '6.0'
+lockfileVersion: '9.0'
settings:
autoInstallPeers: true
@@ -6,53 +6,87 @@ settings:
overrides:
vike-node: link:./packages/vike-node/
- vite: 6.0.0-alpha.11
-
-patchedDependencies:
- vike@0.4.161:
- hash: 4x6h4gn45u3smxaalew7bffdpm
- path: patches/vike@0.4.161.patch
importers:
.:
devDependencies:
+ '@biomejs/biome':
+ specifier: ^1.5.3
+ version: 1.8.3
+ '@brillout/test-e2e':
+ specifier: ^0.5.33
+ version: 0.5.33
+ '@brillout/test-types':
+ specifier: ^0.1.13
+ version: 0.1.15(typescript@5.5.4)
prettier:
- specifier: ^3.2.5
- version: 3.2.5
-
- examples/vike:
- dependencies:
- '@brillout/json-serializer':
- specifier: ^0.5.8
- version: 0.5.8
- '@hattip/adapter-node':
- specifier: ^0.0.45
- version: 0.0.45
- '@hattip/router':
- specifier: ^0.0.45
- version: 0.0.45
+ specifier: ^3.3.3
+ version: 3.3.3
+
+ packages/vike-node:
+ dependencies:
+ '@brillout/picocolors':
+ specifier: ^1.0.10
+ version: 1.0.14
+ '@nitedani/shrink-ray-current':
+ specifier: ^4.2.0
+ version: 4.2.0
+ '@vercel/nft':
+ specifier: ^0.26.4
+ version: 0.26.5
+ esbuild:
+ specifier: ^0.19.0
+ version: 0.19.12
+ sirv:
+ specifier: ^2.0.0
+ version: 2.0.4
+ devDependencies:
+ '@brillout/release-me':
+ specifier: ^0.4.0
+ version: 0.4.0
+ '@types/node':
+ specifier: ^20.11.19
+ version: 20.14.12
+ fastify:
+ specifier: ^4.26.1
+ version: 4.28.1
+ hono:
+ specifier: ^4.5.1
+ version: 4.5.1
+ typescript:
+ specifier: ^5.5.4
+ version: 5.5.4
+ vike:
+ specifier: ^0.4.162
+ version: 0.4.181(vite@5.3.5(@types/node@20.14.12))
+ vite:
+ specifier: ^5.0.10
+ version: 5.3.5(@types/node@20.14.12)
+
+ test/vike-node:
+ dependencies:
'@hono/node-server':
- specifier: ^1.9.0
- version: 1.9.0
+ specifier: ^1.12.0
+ version: 1.12.0
'@node-rs/argon2':
specifier: ^1.7.2
- version: 1.8.0
+ version: 1.8.3
'@prisma/client':
specifier: ^5.9.1
- version: 5.11.0(prisma@5.11.0)
+ version: 5.17.0(prisma@5.17.0)
'@types/express':
specifier: ^4.17.21
version: 4.17.21
'@types/react':
specifier: ^18.2.55
- version: 18.2.73
+ version: 18.3.3
'@types/react-dom':
specifier: ^18.2.19
- version: 18.2.22
+ version: 18.3.0
'@vitejs/plugin-react':
specifier: ^4.2.1
- version: 4.2.1(vite@6.0.0-alpha.11)
+ version: 4.3.1(vite@5.3.5(@types/node@20.14.12))
cross-env:
specifier: ^7.0.3
version: 7.0.3
@@ -61,1731 +95,3452 @@ importers:
version: 4.19.2
fastify:
specifier: ^4.26.1
- version: 4.26.2
+ version: 4.28.1
hono:
- specifier: ^4.1.5
- version: 4.1.5
+ specifier: ^4.5.1
+ version: 4.5.1
prisma:
specifier: ^5.9.1
- version: 5.11.0
+ version: 5.17.0
react:
specifier: ^18.2.0
- version: 18.2.0
+ version: 18.3.1
react-dom:
specifier: ^18.2.0
- version: 18.2.0(react@18.2.0)
+ version: 18.3.1(react@18.3.1)
sharp:
specifier: ^0.33.2
- version: 0.33.3
+ version: 0.33.4
telefunc:
specifier: ^0.1.71
- version: 0.1.71(@babel/core@7.24.3)(react@18.2.0)
+ version: 0.1.76(@babel/core@7.24.9)(@babel/parser@7.24.8)(@babel/types@7.24.9)(react@18.3.1)
typescript:
- specifier: ^5.3.3
- version: 5.4.3
+ specifier: ^5.5.4
+ version: 5.5.4
vike:
- specifier: 0.4.161
- version: 0.4.161(patch_hash=4x6h4gn45u3smxaalew7bffdpm)(vite@6.0.0-alpha.11)
+ specifier: ^0.4.161
+ version: 0.4.181(vite@5.3.5(@types/node@20.14.12))
vike-node:
specifier: link:../../packages/vike-node
version: link:../../packages/vike-node
vite:
- specifier: 6.0.0-alpha.11
- version: 6.0.0-alpha.11(@types/node@20.11.30)
-
- packages/vike-node:
- dependencies:
- '@brillout/picocolors':
- specifier: ^1.0.10
- version: 1.0.10
- '@nitedani/shrink-ray-current':
- specifier: ^4.2.0
- version: 4.2.0
- '@vercel/nft':
- specifier: ^0.26.4
- version: 0.26.4
- birpc:
- specifier: ^0.2.15
- version: 0.2.17
- esbuild:
- specifier: ^0.19.0
- version: 0.19.12
- sirv:
- specifier: ^2.0.4
- version: 2.0.4
- devDependencies:
- '@brillout/release-me':
- specifier: ^0.1.14
- version: 0.1.14
- '@types/node':
- specifier: ^20.11.19
- version: 20.11.30
- fastify:
- specifier: ^4.26.1
- version: 4.26.2
- typescript:
- specifier: ^5.3.3
- version: 5.4.3
- vike:
- specifier: 0.4.161
- version: 0.4.161(patch_hash=4x6h4gn45u3smxaalew7bffdpm)(vite@6.0.0-alpha.11)
- vite:
- specifier: 6.0.0-alpha.11
- version: 6.0.0-alpha.11(@types/node@20.11.30)
+ specifier: ^5.0.10
+ version: 5.3.5(@types/node@20.14.12)
packages:
- /@ampproject/remapping@2.3.0:
+ '@ampproject/remapping@2.3.0':
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'}
- dependencies:
- '@jridgewell/gen-mapping': 0.3.5
- '@jridgewell/trace-mapping': 0.3.25
- dev: false
- /@babel/code-frame@7.24.2:
- resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==}
+ '@babel/code-frame@7.24.7':
+ resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==}
engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/highlight': 7.24.2
- picocolors: 1.0.0
- /@babel/compat-data@7.24.1:
- resolution: {integrity: sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==}
+ '@babel/compat-data@7.24.9':
+ resolution: {integrity: sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==}
engines: {node: '>=6.9.0'}
- dev: false
- /@babel/core@7.24.3:
- resolution: {integrity: sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==}
+ '@babel/core@7.24.9':
+ resolution: {integrity: sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==}
engines: {node: '>=6.9.0'}
- dependencies:
- '@ampproject/remapping': 2.3.0
- '@babel/code-frame': 7.24.2
- '@babel/generator': 7.24.1
- '@babel/helper-compilation-targets': 7.23.6
- '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3)
- '@babel/helpers': 7.24.1
- '@babel/parser': 7.24.1
- '@babel/template': 7.24.0
- '@babel/traverse': 7.24.1
- '@babel/types': 7.24.0
- convert-source-map: 2.0.0
- debug: 4.3.4
- gensync: 1.0.0-beta.2
- json5: 2.2.3
- semver: 6.3.1
- transitivePeerDependencies:
- - supports-color
- dev: false
- /@babel/generator@7.24.1:
- resolution: {integrity: sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==}
+ '@babel/generator@7.24.10':
+ resolution: {integrity: sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==}
engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/types': 7.24.0
- '@jridgewell/gen-mapping': 0.3.5
- '@jridgewell/trace-mapping': 0.3.25
- jsesc: 2.5.2
- dev: false
- /@babel/helper-compilation-targets@7.23.6:
- resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==}
+ '@babel/helper-compilation-targets@7.24.8':
+ resolution: {integrity: sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==}
engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/compat-data': 7.24.1
- '@babel/helper-validator-option': 7.23.5
- browserslist: 4.23.0
- lru-cache: 5.1.1
- semver: 6.3.1
- dev: false
- /@babel/helper-environment-visitor@7.22.20:
- resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==}
+ '@babel/helper-environment-visitor@7.24.7':
+ resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==}
engines: {node: '>=6.9.0'}
- dev: false
- /@babel/helper-function-name@7.23.0:
- resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==}
+ '@babel/helper-function-name@7.24.7':
+ resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==}
engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/template': 7.24.0
- '@babel/types': 7.24.0
- dev: false
- /@babel/helper-hoist-variables@7.22.5:
- resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
+ '@babel/helper-hoist-variables@7.24.7':
+ resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==}
engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/types': 7.24.0
- dev: false
- /@babel/helper-module-imports@7.24.3:
- resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==}
+ '@babel/helper-module-imports@7.24.7':
+ resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==}
engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/types': 7.24.0
- dev: false
- /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.3):
- resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==}
+ '@babel/helper-module-transforms@7.24.9':
+ resolution: {integrity: sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
- dependencies:
- '@babel/core': 7.24.3
- '@babel/helper-environment-visitor': 7.22.20
- '@babel/helper-module-imports': 7.24.3
- '@babel/helper-simple-access': 7.22.5
- '@babel/helper-split-export-declaration': 7.22.6
- '@babel/helper-validator-identifier': 7.22.20
- dev: false
- /@babel/helper-plugin-utils@7.24.0:
- resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==}
+ '@babel/helper-plugin-utils@7.24.8':
+ resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==}
engines: {node: '>=6.9.0'}
- dev: false
- /@babel/helper-simple-access@7.22.5:
- resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==}
+ '@babel/helper-simple-access@7.24.7':
+ resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==}
engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/types': 7.24.0
- dev: false
- /@babel/helper-split-export-declaration@7.22.6:
- resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
+ '@babel/helper-split-export-declaration@7.24.7':
+ resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==}
engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/types': 7.24.0
- dev: false
- /@babel/helper-string-parser@7.24.1:
- resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==}
+ '@babel/helper-string-parser@7.24.8':
+ resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==}
engines: {node: '>=6.9.0'}
- dev: false
- /@babel/helper-validator-identifier@7.22.20:
- resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
+ '@babel/helper-validator-identifier@7.24.7':
+ resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==}
engines: {node: '>=6.9.0'}
- /@babel/helper-validator-option@7.23.5:
- resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==}
+ '@babel/helper-validator-option@7.24.8':
+ resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==}
engines: {node: '>=6.9.0'}
- dev: false
- /@babel/helpers@7.24.1:
- resolution: {integrity: sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==}
+ '@babel/helpers@7.24.8':
+ resolution: {integrity: sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==}
engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/template': 7.24.0
- '@babel/traverse': 7.24.1
- '@babel/types': 7.24.0
- transitivePeerDependencies:
- - supports-color
- dev: false
- /@babel/highlight@7.24.2:
- resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==}
+ '@babel/highlight@7.24.7':
+ resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==}
engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/helper-validator-identifier': 7.22.20
- chalk: 2.4.2
- js-tokens: 4.0.0
- picocolors: 1.0.0
- /@babel/parser@7.24.1:
- resolution: {integrity: sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==}
+ '@babel/parser@7.24.8':
+ resolution: {integrity: sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==}
engines: {node: '>=6.0.0'}
hasBin: true
- dependencies:
- '@babel/types': 7.24.0
- dev: false
- /@babel/plugin-transform-react-jsx-self@7.24.1(@babel/core@7.24.3):
- resolution: {integrity: sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w==}
+ '@babel/plugin-transform-react-jsx-self@7.24.7':
+ resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.24.3
- '@babel/helper-plugin-utils': 7.24.0
- dev: false
- /@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.3):
- resolution: {integrity: sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==}
+ '@babel/plugin-transform-react-jsx-source@7.24.7':
+ resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.24.3
- '@babel/helper-plugin-utils': 7.24.0
- dev: false
- /@babel/template@7.24.0:
- resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==}
+ '@babel/template@7.24.7':
+ resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==}
engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/code-frame': 7.24.2
- '@babel/parser': 7.24.1
- '@babel/types': 7.24.0
- dev: false
- /@babel/traverse@7.24.1:
- resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==}
+ '@babel/traverse@7.24.8':
+ resolution: {integrity: sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==}
engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/code-frame': 7.24.2
- '@babel/generator': 7.24.1
- '@babel/helper-environment-visitor': 7.22.20
- '@babel/helper-function-name': 7.23.0
- '@babel/helper-hoist-variables': 7.22.5
- '@babel/helper-split-export-declaration': 7.22.6
- '@babel/parser': 7.24.1
- '@babel/types': 7.24.0
- debug: 4.3.4
- globals: 11.12.0
- transitivePeerDependencies:
- - supports-color
- dev: false
- /@babel/types@7.24.0:
- resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==}
+ '@babel/types@7.24.9':
+ resolution: {integrity: sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==}
engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/helper-string-parser': 7.24.1
- '@babel/helper-validator-identifier': 7.22.20
- to-fast-properties: 2.0.0
- dev: false
- /@brillout/import@0.2.3:
+ '@biomejs/biome@1.8.3':
+ resolution: {integrity: sha512-/uUV3MV+vyAczO+vKrPdOW0Iaet7UnJMU4bNMinggGJTAnBPjCoLEYcyYtYHNnUNYlv4xZMH6hVIQCAozq8d5w==}
+ engines: {node: '>=14.21.3'}
+ hasBin: true
+
+ '@biomejs/cli-darwin-arm64@1.8.3':
+ resolution: {integrity: sha512-9DYOjclFpKrH/m1Oz75SSExR8VKvNSSsLnVIqdnKexj6NwmiMlKk94Wa1kZEdv6MCOHGHgyyoV57Cw8WzL5n3A==}
+ engines: {node: '>=14.21.3'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@biomejs/cli-darwin-x64@1.8.3':
+ resolution: {integrity: sha512-UeW44L/AtbmOF7KXLCoM+9PSgPo0IDcyEUfIoOXYeANaNXXf9mLUwV1GeF2OWjyic5zj6CnAJ9uzk2LT3v/wAw==}
+ engines: {node: '>=14.21.3'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@biomejs/cli-linux-arm64-musl@1.8.3':
+ resolution: {integrity: sha512-9yjUfOFN7wrYsXt/T/gEWfvVxKlnh3yBpnScw98IF+oOeCYb5/b/+K7YNqKROV2i1DlMjg9g/EcN9wvj+NkMuQ==}
+ engines: {node: '>=14.21.3'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@biomejs/cli-linux-arm64@1.8.3':
+ resolution: {integrity: sha512-fed2ji8s+I/m8upWpTJGanqiJ0rnlHOK3DdxsyVLZQ8ClY6qLuPc9uehCREBifRJLl/iJyQpHIRufLDeotsPtw==}
+ engines: {node: '>=14.21.3'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@biomejs/cli-linux-x64-musl@1.8.3':
+ resolution: {integrity: sha512-UHrGJX7PrKMKzPGoEsooKC9jXJMa28TUSMjcIlbDnIO4EAavCoVmNQaIuUSH0Ls2mpGMwUIf+aZJv657zfWWjA==}
+ engines: {node: '>=14.21.3'}
+ cpu: [x64]
+ os: [linux]
+
+ '@biomejs/cli-linux-x64@1.8.3':
+ resolution: {integrity: sha512-I8G2QmuE1teISyT8ie1HXsjFRz9L1m5n83U1O6m30Kw+kPMPSKjag6QGUn+sXT8V+XWIZxFFBoTDEDZW2KPDDw==}
+ engines: {node: '>=14.21.3'}
+ cpu: [x64]
+ os: [linux]
+
+ '@biomejs/cli-win32-arm64@1.8.3':
+ resolution: {integrity: sha512-J+Hu9WvrBevfy06eU1Na0lpc7uR9tibm9maHynLIoAjLZpQU3IW+OKHUtyL8p6/3pT2Ju5t5emReeIS2SAxhkQ==}
+ engines: {node: '>=14.21.3'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@biomejs/cli-win32-x64@1.8.3':
+ resolution: {integrity: sha512-/PJ59vA1pnQeKahemaQf4Nyj7IKUvGQSc3Ze1uIGi+Wvr1xF7rGobSrAAG01T/gUDG21vkDsZYM03NAmPiVkqg==}
+ engines: {node: '>=14.21.3'}
+ cpu: [x64]
+ os: [win32]
+
+ '@brillout/import@0.2.3':
resolution: {integrity: sha512-1T8WlD75eeFSMrptGy8jiLHmfHgMmSjWvLOIUvHmSVZt+6k0eQqYUoK4KbmE4T9pVLIfxvZSOm2D68VEqKRHRw==}
- /@brillout/json-serializer@0.5.8:
- resolution: {integrity: sha512-vEuXw30ok+mJfJutOxXKBb4lBJ0HymA7lev9PcYK6W/hzjhCTPk9Bdk85HrcNcKZWRQiwoWtw0F2Di4TRJ7ssQ==}
+ '@brillout/json-serializer@0.5.13':
+ resolution: {integrity: sha512-9FpmgpuoSISw6fAPVB2qwW1dGAADN28YbWpfwOErfcZxpBH4lsnejuY89qcivInnWXYJvyyPwghCuOTbtuaYFg==}
+
+ '@brillout/part-regex@0.1.3':
+ resolution: {integrity: sha512-ZyqtOYHvQs3Ca0xt9fb2OlGzCrKwXtMcAATDObkFmI4jKuObEORjWrqAslWTelquXlyEYLz7h1nt6jp50LDyJA==}
- /@brillout/picocolors@1.0.10:
- resolution: {integrity: sha512-dh+JJlsBf3QYX+91Ezma8RLKNOjGDoBBmORv/NzRpQuasdyzwQCMXGGjsDu12ZhGz92TqQbL9pv79rvbheI21A==}
+ '@brillout/picocolors@1.0.14':
+ resolution: {integrity: sha512-XhyZY3/FUh56mDuLIjv5kN9qy+oQj7A/d2uQ6cJJ4uVv55+velua3abcrM5WIvs2RHZGA3EE7S9FWo+TjF10ew==}
- /@brillout/release-me@0.1.14:
- resolution: {integrity: sha512-9EmAC+Oe7799CFu01OXHS/vTIpGQ1hfIDr/f8WbvOVnJ3XMmyqcP1u8aGxVrKjgbu69u+16vlx8KT9TUsvm6zw==}
+ '@brillout/release-me@0.4.0':
+ resolution: {integrity: sha512-V4YwITguHK3zOy9B4606lc9PQiFDp3p3Ifeq4KF7V8o9fs7OmcrfTWBE0EWFtiLhG2JeKb2RzM0t6Y4tLgXd6w==}
hasBin: true
- dependencies:
- commander: 11.1.0
- conventional-changelog: 5.1.0
- execa: 5.1.1
- js-yaml: 4.1.0
- picocolors: 1.0.0
- semver: 7.6.0
- dev: true
- /@brillout/require-shim@0.1.2:
+ '@brillout/require-shim@0.1.2':
resolution: {integrity: sha512-3I4LRHnVZXoSAsEoni5mosq9l6eiJED58d9V954W4CIZ88AUfYBanWGBGbJG3NztaRTpFHEA6wB3Hn93BmmJdg==}
- /@brillout/vite-plugin-server-entry@0.4.4:
- resolution: {integrity: sha512-jS2CX4qcYdim09/kR83I+6HDA2JGrhP1HtX1hqPnDXna44aqsgRIxOzjoah6widA8XAykAWBwljynwK5nwQuGA==}
- dependencies:
- '@brillout/import': 0.2.3
+ '@brillout/test-e2e@0.5.33':
+ resolution: {integrity: sha512-CAhZQSGYVeMelcxbjFHZwZDT1Jk2BnNVS8JYYKkizin3ZoxQDdMYWskjO7jU+XN9xrjkvEUMlnXGXSO4E8/WjA==}
+ hasBin: true
- /@emnapi/core@1.1.0:
- resolution: {integrity: sha512-gNEVZo0HhUfVjhr6rFG//HZXbauclxueiDxaKGBZHcK5h8i9pslABNPfG8kMwYTubAn3mV7AyOZN8gfPRgbU8A==}
- requiresBuild: true
- dependencies:
- tslib: 2.6.2
- dev: false
- optional: true
+ '@brillout/test-types@0.1.15':
+ resolution: {integrity: sha512-3akYLhRnuZoK0GLoLzFG1CJb7PMixIgdXnYEABlsOMfQDPEOmXwI6FGoQ6PwgVWc/J9HS8iY7bhED53T26qplw==}
+ hasBin: true
+ peerDependencies:
+ typescript: '>=4.0.0'
- /@emnapi/runtime@1.1.0:
- resolution: {integrity: sha512-gCGlE0fJGWalfy+wbFApjhKn6uoSVvopru77IPyxNKkjkaiSx2HxDS7eOYSmo9dcMIhmmIvoxiC3N9TM1c3EaA==}
- requiresBuild: true
- dependencies:
- tslib: 2.6.2
- dev: false
- optional: true
+ '@brillout/vite-plugin-server-entry@0.4.7':
+ resolution: {integrity: sha512-G/wHFx/JdFUA9kPSPDT0nIJH1wmgIwUIY27RL4N6EaHeaXgN4zSCBZTNvvKHyojvMxMw825m4vE0VksHXLyOng==}
+
+ '@emnapi/core@1.2.0':
+ resolution: {integrity: sha512-E7Vgw78I93we4ZWdYCb4DGAwRROGkMIXk7/y87UmANR+J6qsWusmC3gLt0H+O0KOt5e6O38U8oJamgbudrES/w==}
+
+ '@emnapi/runtime@1.2.0':
+ resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==}
+
+ '@emnapi/wasi-threads@1.0.1':
+ resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==}
- /@esbuild/aix-ppc64@0.19.12:
+ '@esbuild/aix-ppc64@0.19.12':
resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [aix]
- requiresBuild: true
- optional: true
- /@esbuild/aix-ppc64@0.20.2:
- resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==}
+ '@esbuild/aix-ppc64@0.21.5':
+ resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [aix]
- requiresBuild: true
- optional: true
- /@esbuild/android-arm64@0.19.12:
+ '@esbuild/android-arm64@0.16.17':
+ resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm64@0.19.12':
resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==}
engines: {node: '>=12'}
cpu: [arm64]
os: [android]
- requiresBuild: true
- optional: true
- /@esbuild/android-arm64@0.20.2:
- resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==}
+ '@esbuild/android-arm64@0.21.5':
+ resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
engines: {node: '>=12'}
cpu: [arm64]
os: [android]
- requiresBuild: true
- optional: true
- /@esbuild/android-arm@0.19.12:
+ '@esbuild/android-arm@0.16.17':
+ resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-arm@0.19.12':
resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==}
engines: {node: '>=12'}
cpu: [arm]
os: [android]
- requiresBuild: true
- optional: true
- /@esbuild/android-arm@0.20.2:
- resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==}
+ '@esbuild/android-arm@0.21.5':
+ resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
engines: {node: '>=12'}
cpu: [arm]
os: [android]
- requiresBuild: true
- optional: true
- /@esbuild/android-x64@0.19.12:
+ '@esbuild/android-x64@0.16.17':
+ resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+
+ '@esbuild/android-x64@0.19.12':
resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==}
engines: {node: '>=12'}
cpu: [x64]
os: [android]
- requiresBuild: true
- optional: true
- /@esbuild/android-x64@0.20.2:
- resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==}
+ '@esbuild/android-x64@0.21.5':
+ resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
engines: {node: '>=12'}
cpu: [x64]
os: [android]
- requiresBuild: true
- optional: true
- /@esbuild/darwin-arm64@0.19.12:
+ '@esbuild/darwin-arm64@0.16.17':
+ resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@esbuild/darwin-arm64@0.19.12':
resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==}
engines: {node: '>=12'}
cpu: [arm64]
os: [darwin]
- requiresBuild: true
- optional: true
- /@esbuild/darwin-arm64@0.20.2:
- resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==}
+ '@esbuild/darwin-arm64@0.21.5':
+ resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
engines: {node: '>=12'}
cpu: [arm64]
os: [darwin]
- requiresBuild: true
- optional: true
- /@esbuild/darwin-x64@0.19.12:
+ '@esbuild/darwin-x64@0.16.17':
+ resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@esbuild/darwin-x64@0.19.12':
resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==}
engines: {node: '>=12'}
cpu: [x64]
os: [darwin]
- requiresBuild: true
- optional: true
- /@esbuild/darwin-x64@0.20.2:
- resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==}
+ '@esbuild/darwin-x64@0.21.5':
+ resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
engines: {node: '>=12'}
cpu: [x64]
os: [darwin]
- requiresBuild: true
- optional: true
- /@esbuild/freebsd-arm64@0.19.12:
+ '@esbuild/freebsd-arm64@0.16.17':
+ resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-arm64@0.19.12':
resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==}
engines: {node: '>=12'}
cpu: [arm64]
os: [freebsd]
- requiresBuild: true
- optional: true
- /@esbuild/freebsd-arm64@0.20.2:
- resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==}
+ '@esbuild/freebsd-arm64@0.21.5':
+ resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
engines: {node: '>=12'}
cpu: [arm64]
os: [freebsd]
- requiresBuild: true
- optional: true
- /@esbuild/freebsd-x64@0.19.12:
+ '@esbuild/freebsd-x64@0.16.17':
+ resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-x64@0.19.12':
resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==}
engines: {node: '>=12'}
cpu: [x64]
os: [freebsd]
- requiresBuild: true
- optional: true
- /@esbuild/freebsd-x64@0.20.2:
- resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==}
+ '@esbuild/freebsd-x64@0.21.5':
+ resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [freebsd]
- requiresBuild: true
- optional: true
- /@esbuild/linux-arm64@0.19.12:
+ '@esbuild/linux-arm64@0.16.17':
+ resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@esbuild/linux-arm64@0.19.12':
resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==}
engines: {node: '>=12'}
cpu: [arm64]
os: [linux]
- requiresBuild: true
- optional: true
- /@esbuild/linux-arm64@0.20.2:
- resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==}
+ '@esbuild/linux-arm64@0.21.5':
+ resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
engines: {node: '>=12'}
cpu: [arm64]
os: [linux]
- requiresBuild: true
- optional: true
- /@esbuild/linux-arm@0.19.12:
+ '@esbuild/linux-arm@0.16.17':
+ resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-arm@0.19.12':
resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==}
engines: {node: '>=12'}
cpu: [arm]
os: [linux]
- requiresBuild: true
- optional: true
- /@esbuild/linux-arm@0.20.2:
- resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==}
+ '@esbuild/linux-arm@0.21.5':
+ resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
engines: {node: '>=12'}
cpu: [arm]
os: [linux]
- requiresBuild: true
- optional: true
- /@esbuild/linux-ia32@0.19.12:
+ '@esbuild/linux-ia32@0.16.17':
+ resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.19.12':
resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==}
engines: {node: '>=12'}
cpu: [ia32]
os: [linux]
- requiresBuild: true
- optional: true
- /@esbuild/linux-ia32@0.20.2:
- resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==}
+ '@esbuild/linux-ia32@0.21.5':
+ resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
engines: {node: '>=12'}
cpu: [ia32]
os: [linux]
- requiresBuild: true
- optional: true
- /@esbuild/linux-loong64@0.19.12:
+ '@esbuild/linux-loong64@0.16.17':
+ resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.19.12':
resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==}
engines: {node: '>=12'}
cpu: [loong64]
os: [linux]
- requiresBuild: true
- optional: true
- /@esbuild/linux-loong64@0.20.2:
- resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==}
+ '@esbuild/linux-loong64@0.21.5':
+ resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
engines: {node: '>=12'}
cpu: [loong64]
os: [linux]
- requiresBuild: true
- optional: true
- /@esbuild/linux-mips64el@0.19.12:
+ '@esbuild/linux-mips64el@0.16.17':
+ resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@esbuild/linux-mips64el@0.19.12':
resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==}
engines: {node: '>=12'}
cpu: [mips64el]
os: [linux]
- requiresBuild: true
- optional: true
- /@esbuild/linux-mips64el@0.20.2:
- resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==}
+ '@esbuild/linux-mips64el@0.21.5':
+ resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
engines: {node: '>=12'}
cpu: [mips64el]
os: [linux]
- requiresBuild: true
- optional: true
- /@esbuild/linux-ppc64@0.19.12:
+ '@esbuild/linux-ppc64@0.16.17':
+ resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@esbuild/linux-ppc64@0.19.12':
resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [linux]
- requiresBuild: true
- optional: true
- /@esbuild/linux-ppc64@0.20.2:
- resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==}
+ '@esbuild/linux-ppc64@0.21.5':
+ resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [linux]
- requiresBuild: true
- optional: true
- /@esbuild/linux-riscv64@0.19.12:
+ '@esbuild/linux-riscv64@0.16.17':
+ resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-riscv64@0.19.12':
resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==}
engines: {node: '>=12'}
cpu: [riscv64]
os: [linux]
- requiresBuild: true
- optional: true
- /@esbuild/linux-riscv64@0.20.2:
- resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==}
+ '@esbuild/linux-riscv64@0.21.5':
+ resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
engines: {node: '>=12'}
cpu: [riscv64]
os: [linux]
- requiresBuild: true
- optional: true
- /@esbuild/linux-s390x@0.19.12:
+ '@esbuild/linux-s390x@0.16.17':
+ resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.19.12':
resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==}
engines: {node: '>=12'}
cpu: [s390x]
os: [linux]
- requiresBuild: true
- optional: true
- /@esbuild/linux-s390x@0.20.2:
- resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==}
+ '@esbuild/linux-s390x@0.21.5':
+ resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
engines: {node: '>=12'}
cpu: [s390x]
os: [linux]
- requiresBuild: true
- optional: true
- /@esbuild/linux-x64@0.19.12:
+ '@esbuild/linux-x64@0.16.17':
+ resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.19.12':
resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==}
engines: {node: '>=12'}
cpu: [x64]
os: [linux]
- requiresBuild: true
- optional: true
- /@esbuild/linux-x64@0.20.2:
- resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==}
+ '@esbuild/linux-x64@0.21.5':
+ resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [linux]
- requiresBuild: true
- optional: true
- /@esbuild/netbsd-x64@0.19.12:
+ '@esbuild/netbsd-x64@0.16.17':
+ resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/netbsd-x64@0.19.12':
resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==}
engines: {node: '>=12'}
cpu: [x64]
os: [netbsd]
- requiresBuild: true
- optional: true
- /@esbuild/netbsd-x64@0.20.2:
- resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==}
+ '@esbuild/netbsd-x64@0.21.5':
+ resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
engines: {node: '>=12'}
cpu: [x64]
os: [netbsd]
- requiresBuild: true
- optional: true
- /@esbuild/openbsd-x64@0.19.12:
+ '@esbuild/openbsd-x64@0.16.17':
+ resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/openbsd-x64@0.19.12':
resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==}
engines: {node: '>=12'}
cpu: [x64]
os: [openbsd]
- requiresBuild: true
- optional: true
- /@esbuild/openbsd-x64@0.20.2:
- resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==}
+ '@esbuild/openbsd-x64@0.21.5':
+ resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
engines: {node: '>=12'}
cpu: [x64]
os: [openbsd]
- requiresBuild: true
- optional: true
- /@esbuild/sunos-x64@0.19.12:
+ '@esbuild/sunos-x64@0.16.17':
+ resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@esbuild/sunos-x64@0.19.12':
resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==}
engines: {node: '>=12'}
cpu: [x64]
os: [sunos]
- requiresBuild: true
- optional: true
- /@esbuild/sunos-x64@0.20.2:
- resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==}
+ '@esbuild/sunos-x64@0.21.5':
+ resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
engines: {node: '>=12'}
cpu: [x64]
os: [sunos]
- requiresBuild: true
- optional: true
- /@esbuild/win32-arm64@0.19.12:
- resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==}
+ '@esbuild/win32-arm64@0.16.17':
+ resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==}
engines: {node: '>=12'}
cpu: [arm64]
os: [win32]
- requiresBuild: true
- optional: true
- /@esbuild/win32-arm64@0.20.2:
- resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==}
+ '@esbuild/win32-arm64@0.19.12':
+ resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==}
engines: {node: '>=12'}
cpu: [arm64]
os: [win32]
- requiresBuild: true
- optional: true
- /@esbuild/win32-ia32@0.19.12:
+ '@esbuild/win32-arm64@0.21.5':
+ resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.16.17':
+ resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.19.12':
resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==}
engines: {node: '>=12'}
cpu: [ia32]
os: [win32]
- requiresBuild: true
- optional: true
- /@esbuild/win32-ia32@0.20.2:
- resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==}
+ '@esbuild/win32-ia32@0.21.5':
+ resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
engines: {node: '>=12'}
cpu: [ia32]
os: [win32]
- requiresBuild: true
- optional: true
- /@esbuild/win32-x64@0.19.12:
+ '@esbuild/win32-x64@0.16.17':
+ resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+
+ '@esbuild/win32-x64@0.19.12':
resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==}
engines: {node: '>=12'}
cpu: [x64]
os: [win32]
- requiresBuild: true
- optional: true
- /@esbuild/win32-x64@0.20.2:
- resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==}
+ '@esbuild/win32-x64@0.21.5':
+ resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
engines: {node: '>=12'}
cpu: [x64]
os: [win32]
- requiresBuild: true
- optional: true
- /@fastify/ajv-compiler@3.5.0:
- resolution: {integrity: sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==}
- dependencies:
- ajv: 8.12.0
- ajv-formats: 2.1.1(ajv@8.12.0)
- fast-uri: 2.3.0
+ '@fastify/ajv-compiler@3.6.0':
+ resolution: {integrity: sha512-LwdXQJjmMD+GwLOkP7TVC68qa+pSSogeWWmznRJ/coyTcfe9qA05AHFSe1eZFwK6q+xVRpChnvFUkf1iYaSZsQ==}
- /@fastify/error@3.4.1:
+ '@fastify/error@3.4.1':
resolution: {integrity: sha512-wWSvph+29GR783IhmvdwWnN4bUxTD01Vm5Xad4i7i1VuAOItLvbPAb69sb0IQ2N57yprvhNIwAP5B6xfKTmjmQ==}
- /@fastify/fast-json-stringify-compiler@4.3.0:
+ '@fastify/fast-json-stringify-compiler@4.3.0':
resolution: {integrity: sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==}
- dependencies:
- fast-json-stringify: 5.13.0
- /@fastify/merge-json-schemas@0.1.1:
+ '@fastify/merge-json-schemas@0.1.1':
resolution: {integrity: sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==}
- dependencies:
- fast-deep-equal: 3.1.3
-
- /@hattip/adapter-node@0.0.45:
- resolution: {integrity: sha512-doZZbmI4y3AQ1nObGNIHTD+5+u0KjfEvpnpwgxVzyh6/SLC3w+G2Za9lNtv9PXiwHMXWFph942aXnZFOx7M4YQ==}
- dependencies:
- '@hattip/core': 0.0.45
- '@hattip/polyfills': 0.0.45
- '@hattip/walk': 0.0.45
- dev: false
-
- /@hattip/compose@0.0.45:
- resolution: {integrity: sha512-Xrxk2kx6htAoR/fBQEnhhqfjBdHFBi2UtiFuhD6qSSwEaD2jTGkyDzYAmVqPIO0ZSvIlIBBpGKdXip4JhdBMww==}
- dependencies:
- '@hattip/core': 0.0.45
- dev: false
-
- /@hattip/core@0.0.45:
- resolution: {integrity: sha512-4BK9dPU7sLvmP9sUq048uSaKFvQY2Qa6D0xQteQBIiDYuTdbopcUQLETM1sdkUeUtFxHPwPu/NclfJAC5INarw==}
- dev: false
-
- /@hattip/headers@0.0.45:
- resolution: {integrity: sha512-owgxAt1jdhEcAdDfnlpPa8iQx/swItReYUlo8UFZ0GUCMiWJvnpl6rTdUsS6bCwMK9IJOliivN4dHEY8VKdGQw==}
- dependencies:
- '@hattip/core': 0.0.45
- dev: false
-
- /@hattip/polyfills@0.0.45:
- resolution: {integrity: sha512-H8a+NVu/rAspycnkLSLVvWu3ei/ndFhA+3KQS1p2YjCcuf4Wuj4EWfScrwgL4d6CR0J+FxqX1P9NDGa4tdJQmQ==}
- dependencies:
- '@hattip/core': 0.0.45
- '@whatwg-node/fetch': 0.9.17
- node-fetch-native: 1.6.4
- dev: false
-
- /@hattip/router@0.0.45:
- resolution: {integrity: sha512-tMfLFTwhZuLbUcqQwGmeh4vgGN/F8GdIVcPcWbDguQErqhxVLvvfKvrxzwBzYGOFJD8IC2KvyRGu//8eTDhRfw==}
- dependencies:
- '@hattip/compose': 0.0.45
- '@hattip/core': 0.0.45
- dev: false
-
- /@hattip/walk@0.0.45:
- resolution: {integrity: sha512-GYEQN5n2JUzjLl9hdMJ+0mbsfwvldRKMBdxx+l29SxmRhOwyWURDyaSfX7UEkEmmxjbg4YqEoWyYgaAtxeW7Jw==}
- hasBin: true
- dependencies:
- '@hattip/headers': 0.0.45
- cac: 6.7.14
- mime-types: 2.1.35
- dev: false
- /@hono/node-server@1.9.0:
- resolution: {integrity: sha512-oJjk7WXBlENeHhWiMqSyxPIZ3Kmf5ZYxqdlcSIXyN8Rn50bNJsPl99G4POBS03Jxh56FdfRJ0SEnC8mAVIiavQ==}
+ '@hono/node-server@1.12.0':
+ resolution: {integrity: sha512-e6oHjNiErRxsZRZBmc2KucuvY3btlO/XPncIpP2X75bRdTilF9GLjm3NHvKKunpJbbJJj31/FoPTksTf8djAVw==}
engines: {node: '>=18.14.1'}
- dev: false
- /@hutson/parse-repository-url@5.0.0:
+ '@hutson/parse-repository-url@5.0.0':
resolution: {integrity: sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==}
engines: {node: '>=10.13.0'}
- dev: true
- /@img/sharp-darwin-arm64@0.33.3:
- resolution: {integrity: sha512-FaNiGX1MrOuJ3hxuNzWgsT/mg5OHG/Izh59WW2mk1UwYHUwtfbhk5QNKYZgxf0pLOhx9ctGiGa2OykD71vOnSw==}
+ '@img/sharp-darwin-arm64@0.33.4':
+ resolution: {integrity: sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==}
engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [arm64]
os: [darwin]
- requiresBuild: true
- optionalDependencies:
- '@img/sharp-libvips-darwin-arm64': 1.0.2
- dev: false
- optional: true
- /@img/sharp-darwin-x64@0.33.3:
- resolution: {integrity: sha512-2QeSl7QDK9ru//YBT4sQkoq7L0EAJZA3rtV+v9p8xTKl4U1bUqTIaCnoC7Ctx2kCjQgwFXDasOtPTCT8eCTXvw==}
+ '@img/sharp-darwin-x64@0.33.4':
+ resolution: {integrity: sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==}
engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [x64]
os: [darwin]
- requiresBuild: true
- optionalDependencies:
- '@img/sharp-libvips-darwin-x64': 1.0.2
- dev: false
- optional: true
- /@img/sharp-libvips-darwin-arm64@1.0.2:
+ '@img/sharp-libvips-darwin-arm64@1.0.2':
resolution: {integrity: sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==}
engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [arm64]
os: [darwin]
- requiresBuild: true
- dev: false
- optional: true
- /@img/sharp-libvips-darwin-x64@1.0.2:
+ '@img/sharp-libvips-darwin-x64@1.0.2':
resolution: {integrity: sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==}
engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [x64]
os: [darwin]
- requiresBuild: true
- dev: false
- optional: true
- /@img/sharp-libvips-linux-arm64@1.0.2:
+ '@img/sharp-libvips-linux-arm64@1.0.2':
resolution: {integrity: sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==}
engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [arm64]
os: [linux]
- requiresBuild: true
- dev: false
- optional: true
- /@img/sharp-libvips-linux-arm@1.0.2:
+ '@img/sharp-libvips-linux-arm@1.0.2':
resolution: {integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==}
engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [arm]
os: [linux]
- requiresBuild: true
- dev: false
- optional: true
- /@img/sharp-libvips-linux-s390x@1.0.2:
+ '@img/sharp-libvips-linux-s390x@1.0.2':
resolution: {integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==}
engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [s390x]
os: [linux]
- requiresBuild: true
- dev: false
- optional: true
- /@img/sharp-libvips-linux-x64@1.0.2:
+ '@img/sharp-libvips-linux-x64@1.0.2':
resolution: {integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==}
engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [x64]
os: [linux]
- requiresBuild: true
- dev: false
- optional: true
- /@img/sharp-libvips-linuxmusl-arm64@1.0.2:
+ '@img/sharp-libvips-linuxmusl-arm64@1.0.2':
resolution: {integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==}
engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [arm64]
os: [linux]
- requiresBuild: true
- dev: false
- optional: true
- /@img/sharp-libvips-linuxmusl-x64@1.0.2:
+ '@img/sharp-libvips-linuxmusl-x64@1.0.2':
resolution: {integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==}
engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [x64]
os: [linux]
- requiresBuild: true
- dev: false
- optional: true
- /@img/sharp-linux-arm64@0.33.3:
- resolution: {integrity: sha512-Zf+sF1jHZJKA6Gor9hoYG2ljr4wo9cY4twaxgFDvlG0Xz9V7sinsPp8pFd1XtlhTzYo0IhDbl3rK7P6MzHpnYA==}
+ '@img/sharp-linux-arm64@0.33.4':
+ resolution: {integrity: sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==}
engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [arm64]
os: [linux]
- requiresBuild: true
- optionalDependencies:
- '@img/sharp-libvips-linux-arm64': 1.0.2
- dev: false
- optional: true
- /@img/sharp-linux-arm@0.33.3:
- resolution: {integrity: sha512-Q7Ee3fFSC9P7vUSqVEF0zccJsZ8GiiCJYGWDdhEjdlOeS9/jdkyJ6sUSPj+bL8VuOYFSbofrW0t/86ceVhx32w==}
+ '@img/sharp-linux-arm@0.33.4':
+ resolution: {integrity: sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==}
engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [arm]
os: [linux]
- requiresBuild: true
- optionalDependencies:
- '@img/sharp-libvips-linux-arm': 1.0.2
- dev: false
- optional: true
- /@img/sharp-linux-s390x@0.33.3:
- resolution: {integrity: sha512-vFk441DKRFepjhTEH20oBlFrHcLjPfI8B0pMIxGm3+yilKyYeHEVvrZhYFdqIseSclIqbQ3SnZMwEMWonY5XFA==}
- engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-linux-s390x@0.33.4':
+ resolution: {integrity: sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==}
+ engines: {glibc: '>=2.31', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [s390x]
os: [linux]
- requiresBuild: true
- optionalDependencies:
- '@img/sharp-libvips-linux-s390x': 1.0.2
- dev: false
- optional: true
- /@img/sharp-linux-x64@0.33.3:
- resolution: {integrity: sha512-Q4I++herIJxJi+qmbySd072oDPRkCg/SClLEIDh5IL9h1zjhqjv82H0Seupd+q2m0yOfD+/fJnjSoDFtKiHu2g==}
+ '@img/sharp-linux-x64@0.33.4':
+ resolution: {integrity: sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==}
engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [x64]
os: [linux]
- requiresBuild: true
- optionalDependencies:
- '@img/sharp-libvips-linux-x64': 1.0.2
- dev: false
- optional: true
- /@img/sharp-linuxmusl-arm64@0.33.3:
- resolution: {integrity: sha512-qnDccehRDXadhM9PM5hLvcPRYqyFCBN31kq+ErBSZtZlsAc1U4Z85xf/RXv1qolkdu+ibw64fUDaRdktxTNP9A==}
+ '@img/sharp-linuxmusl-arm64@0.33.4':
+ resolution: {integrity: sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==}
engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [arm64]
os: [linux]
- requiresBuild: true
- optionalDependencies:
- '@img/sharp-libvips-linuxmusl-arm64': 1.0.2
- dev: false
- optional: true
- /@img/sharp-linuxmusl-x64@0.33.3:
- resolution: {integrity: sha512-Jhchim8kHWIU/GZ+9poHMWRcefeaxFIs9EBqf9KtcC14Ojk6qua7ghKiPs0sbeLbLj/2IGBtDcxHyjCdYWkk2w==}
+ '@img/sharp-linuxmusl-x64@0.33.4':
+ resolution: {integrity: sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==}
engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [x64]
os: [linux]
- requiresBuild: true
- optionalDependencies:
- '@img/sharp-libvips-linuxmusl-x64': 1.0.2
- dev: false
- optional: true
- /@img/sharp-wasm32@0.33.3:
- resolution: {integrity: sha512-68zivsdJ0koE96stdUfM+gmyaK/NcoSZK5dV5CAjES0FUXS9lchYt8LAB5rTbM7nlWtxaU/2GON0HVN6/ZYJAQ==}
+ '@img/sharp-wasm32@0.33.4':
+ resolution: {integrity: sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [wasm32]
- requiresBuild: true
- dependencies:
- '@emnapi/runtime': 1.1.0
- dev: false
- optional: true
- /@img/sharp-win32-ia32@0.33.3:
- resolution: {integrity: sha512-CyimAduT2whQD8ER4Ux7exKrtfoaUiVr7HG0zZvO0XTFn2idUWljjxv58GxNTkFb8/J9Ub9AqITGkJD6ZginxQ==}
+ '@img/sharp-win32-ia32@0.33.4':
+ resolution: {integrity: sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [ia32]
os: [win32]
- requiresBuild: true
- dev: false
- optional: true
- /@img/sharp-win32-x64@0.33.3:
- resolution: {integrity: sha512-viT4fUIDKnli3IfOephGnolMzhz5VaTvDRkYqtZxOMIoMQ4MrAziO7pT1nVnOt2FAm7qW5aa+CCc13aEY6Le0g==}
+ '@img/sharp-win32-x64@0.33.4':
+ resolution: {integrity: sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [x64]
os: [win32]
- requiresBuild: true
- dev: false
- optional: true
- /@jridgewell/gen-mapping@0.3.5:
+ '@jridgewell/gen-mapping@0.3.5':
resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
engines: {node: '>=6.0.0'}
- dependencies:
- '@jridgewell/set-array': 1.2.1
- '@jridgewell/sourcemap-codec': 1.4.15
- '@jridgewell/trace-mapping': 0.3.25
- dev: false
- /@jridgewell/resolve-uri@3.1.2:
+ '@jridgewell/resolve-uri@3.1.2':
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
engines: {node: '>=6.0.0'}
- dev: false
- /@jridgewell/set-array@1.2.1:
+ '@jridgewell/set-array@1.2.1':
resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
engines: {node: '>=6.0.0'}
- dev: false
- /@jridgewell/sourcemap-codec@1.4.15:
- resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
- dev: false
+ '@jridgewell/sourcemap-codec@1.5.0':
+ resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
- /@jridgewell/trace-mapping@0.3.25:
+ '@jridgewell/trace-mapping@0.3.25':
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
- dependencies:
- '@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.4.15
- dev: false
- /@kamilkisiela/fast-url-parser@1.1.4:
- resolution: {integrity: sha512-gbkePEBupNydxCelHCESvFSFM8XPh1Zs/OAVRW/rKpEqPAl5PbOM90Si8mv9bvnR53uPD2s/FiRxdvSejpRJew==}
- dev: false
-
- /@mapbox/node-pre-gyp@1.0.11:
+ '@mapbox/node-pre-gyp@1.0.11':
resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==}
hasBin: true
- dependencies:
- detect-libc: 2.0.3
- https-proxy-agent: 5.0.1
- make-dir: 3.1.0
- node-fetch: 2.7.0
- nopt: 5.0.0
- npmlog: 5.0.1
- rimraf: 3.0.2
- semver: 7.6.0
- tar: 6.2.1
- transitivePeerDependencies:
- - encoding
- - supports-color
- dev: false
- /@napi-rs/wasm-runtime@0.1.2:
- resolution: {integrity: sha512-8JuczewTFIZ/XIjHQ+YlQUydHvlKx2hkcxtuGwh+t/t5zWyZct6YG4+xjHcq8xyc/e7FmFwf42Zj2YgICwmlvA==}
- requiresBuild: true
- dependencies:
- '@emnapi/core': 1.1.0
- '@emnapi/runtime': 1.1.0
- '@tybys/wasm-util': 0.8.1
- dev: false
- optional: true
+ '@napi-rs/wasm-runtime@0.2.4':
+ resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==}
- /@nitedani/shrink-ray-current@4.2.0:
+ '@nitedani/shrink-ray-current@4.2.0':
resolution: {integrity: sha512-ltIQurbwv7Hk579seW8HGH+ay42+FUEPi0OChmSB5qCrnXFa5Ecd4zxVCbn2JjTHJj4R5M5YW4fYN0SOqlAiUQ==}
engines: {node: '>=14.0'}
- dependencies:
- accepts: 1.3.8
- bytes: 3.1.2
- compressible: 2.0.18
- debug: 4.3.4
- lru-cache: 8.0.5
- multipipe: 4.0.0
- on-headers: 1.0.2
- stream-buffers: 3.0.2
- vary: 1.1.2
- transitivePeerDependencies:
- - supports-color
- dev: false
- /@node-rs/argon2-android-arm-eabi@1.8.0:
- resolution: {integrity: sha512-v1q5NrYkfuB8gPGbSpV19x2GGl+JAELHoBB86Dq4USFcVGgo1mi3sWUK5rok0fpY9MYbxKCipAJUrIfqIZc2tg==}
+ '@node-rs/argon2-android-arm-eabi@1.8.3':
+ resolution: {integrity: sha512-JFZPlNM0A8Og+Tncb8UZsQrhEMlbHBXPsT3hRoKImzVmTmq28Os0ucFWow0AACp2coLHBSydXH3Dh0lZup3rWw==}
engines: {node: '>= 10'}
cpu: [arm]
os: [android]
- requiresBuild: true
- dev: false
- optional: true
- /@node-rs/argon2-android-arm64@1.8.0:
- resolution: {integrity: sha512-qEzDrl09Lf5inulgMyQ6FKHAznCC9ZNAWkl0hIDfOAM4+X8NfcNkQBS8RRSyVHu6gnatJeIVeN7hiBQ8yQQwEQ==}
+ '@node-rs/argon2-android-arm64@1.8.3':
+ resolution: {integrity: sha512-zaf8P3T92caeW2xnMA7P1QvRA4pIt/04oilYP44XlTCtMye//vwXDMeK53sl7dvYiJKnzAWDRx41k8vZvpZazg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [android]
- requiresBuild: true
- dev: false
- optional: true
- /@node-rs/argon2-darwin-arm64@1.8.0:
- resolution: {integrity: sha512-PsyJoXKTthIRqzQt+CV3HlerHLrd8RpcQ0d3IXjiqr3vJZTdOD9djxsbP800bfUFns0+1tpGtGyLm0f5ona/dQ==}
+ '@node-rs/argon2-darwin-arm64@1.8.3':
+ resolution: {integrity: sha512-DV/IbmLGdNXBtXb5o2UI5ba6kvqXqPAJgmMOTUCuHeBSp992GlLHdfU4rzGu0dNrxudBnunNZv+crd0YdEQSUA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
- requiresBuild: true
- dev: false
- optional: true
- /@node-rs/argon2-darwin-x64@1.8.0:
- resolution: {integrity: sha512-pVkaimcCvNNhCAZWIboBv+AaFx0nsCrviGV0ApNmGrOwbLzdysGHRBV/S513nKpdiuDZ9E3OuZ3pgXWKsJwjWA==}
+ '@node-rs/argon2-darwin-x64@1.8.3':
+ resolution: {integrity: sha512-YMjmBGFZhLfYjfQ2gll9A+BZu/zAMV7lWZIbKxb7ZgEofILQwuGmExjDtY3Jplido/6leCEdpmlk2oIsME00LA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@node-rs/argon2-freebsd-x64@1.8.3':
+ resolution: {integrity: sha512-Hq3Rj5Yb2RolTG/luRPnv+XiGCbi5nAK25Pc8ou/tVapwX+iktEm/NXbxc5zsMxraYVkCvfdwBjweC5O+KqCGw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@node-rs/argon2-linux-arm-gnueabihf@1.8.3':
+ resolution: {integrity: sha512-x49l8RgzKoG0/V0IXa5rrEl1TcJEc936ctlYFvqcunSOyowZ6kiWtrp1qrbOR8gbaNILl11KTF52vF6+h8UlEQ==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [linux]
+
+ '@node-rs/argon2-linux-arm64-gnu@1.8.3':
+ resolution: {integrity: sha512-gJesam/qA63reGkb9qJ2TjFSLBtY41zQh2oei7nfnYsmVQPuHHWItJxEa1Bm21SPW53gZex4jFJbDIgj0+PxIw==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@node-rs/argon2-linux-arm64-musl@1.8.3':
+ resolution: {integrity: sha512-7O6kQdSKzB4Tjx/EBa8zKIxnmLkQE8VdJgPm6Ksrpn+ueo0mx2xf76fIDnbbTCtm3UbB+y+FkTo2wLA7tOqIKg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@node-rs/argon2-linux-x64-gnu@1.8.3':
+ resolution: {integrity: sha512-OBH+EFG7BGjFyldaao2H2gSCLmjtrrwf420B1L+lFn7JLW9UAjsIPFKAcWsYwPa/PwYzIge9Y7SGcpqlsSEX0w==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+
+ '@node-rs/argon2-linux-x64-musl@1.8.3':
+ resolution: {integrity: sha512-bDbMuyekIxZaN7NaX+gHVkOyABB8bcMEJYeRPW1vCXKHj3brJns1wiUFSxqeUXreupifNVJlQfPt1Y5B/vFXgQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+
+ '@node-rs/argon2-wasm32-wasi@1.8.3':
+ resolution: {integrity: sha512-NBf2cMCDbNKMzp13Pog8ZPmI0M9U4Ak5b95EUjkp17kdKZFds12dwW67EMnj7Zy+pRqby2QLECaWebDYfNENTg==}
+ engines: {node: '>=14.0.0'}
+ cpu: [wasm32]
+
+ '@node-rs/argon2-win32-arm64-msvc@1.8.3':
+ resolution: {integrity: sha512-AHpPo7UbdW5WWjwreVpgFSY0o1RY4A7cUFaqDXZB2OqEuyrhMxBdZct9PX7PQKI18D85pLsODnR+gvVuTwJ6rQ==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@node-rs/argon2-win32-ia32-msvc@1.8.3':
+ resolution: {integrity: sha512-bqzn2rcQkEwCINefhm69ttBVVkgHJb/V03DdBKsPFtiX6H47axXKz62d1imi26zFXhOEYxhKbu3js03GobJOLw==}
+ engines: {node: '>= 10'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@node-rs/argon2-win32-x64-msvc@1.8.3':
+ resolution: {integrity: sha512-ILlrRThdbp5xNR5gwYM2ic1n/vG5rJ8dQZ+YMRqksl+lnTJ/6FDe5BOyIhiPtiDwlCiCtUA+1NxpDB9KlUCAIA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+
+ '@node-rs/argon2@1.8.3':
+ resolution: {integrity: sha512-sf/QAEI59hsMEEE2J8vO4hKrXrv4Oplte3KI2N4MhMDYpytH0drkVfErmHBfWFZxxIEK03fX1WsBNswS2nIZKg==}
engines: {node: '>= 10'}
+
+ '@nodelib/fs.scandir@2.1.5':
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.stat@2.0.5':
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.walk@1.2.8':
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+
+ '@polka/url@1.0.0-next.25':
+ resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==}
+
+ '@prisma/client@5.17.0':
+ resolution: {integrity: sha512-N2tnyKayT0Zf7mHjwEyE8iG7FwTmXDHFZ1GnNhQp0pJUObsuel4ZZ1XwfuAYkq5mRIiC/Kot0kt0tGCfLJ70Jw==}
+ engines: {node: '>=16.13'}
+ peerDependencies:
+ prisma: '*'
+ peerDependenciesMeta:
+ prisma:
+ optional: true
+
+ '@prisma/debug@5.17.0':
+ resolution: {integrity: sha512-l7+AteR3P8FXiYyo496zkuoiJ5r9jLQEdUuxIxNCN1ud8rdbH3GTxm+f+dCyaSv9l9WY+29L9czaVRXz9mULfg==}
+
+ '@prisma/engines-version@5.17.0-31.393aa359c9ad4a4bb28630fb5613f9c281cde053':
+ resolution: {integrity: sha512-tUuxZZysZDcrk5oaNOdrBnnkoTtmNQPkzINFDjz7eG6vcs9AVDmA/F6K5Plsb2aQc/l5M2EnFqn3htng9FA4hg==}
+
+ '@prisma/engines@5.17.0':
+ resolution: {integrity: sha512-+r+Nf+JP210Jur+/X8SIPLtz+uW9YA4QO5IXA+KcSOBe/shT47bCcRMTYCbOESw3FFYFTwe7vU6KTWHKPiwvtg==}
+
+ '@prisma/fetch-engine@5.17.0':
+ resolution: {integrity: sha512-ESxiOaHuC488ilLPnrv/tM2KrPhQB5TRris/IeIV4ZvUuKeaicCl4Xj/JCQeG9IlxqOgf1cCg5h5vAzlewN91Q==}
+
+ '@prisma/get-platform@5.17.0':
+ resolution: {integrity: sha512-UlDgbRozCP1rfJ5Tlkf3Cnftb6srGrEQ4Nm3og+1Se2gWmCZ0hmPIi+tQikGDUVLlvOWx3Gyi9LzgRP+HTXV9w==}
+
+ '@rollup/pluginutils@4.2.1':
+ resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==}
+ engines: {node: '>= 8.0.0'}
+
+ '@rollup/rollup-android-arm-eabi@4.19.0':
+ resolution: {integrity: sha512-JlPfZ/C7yn5S5p0yKk7uhHTTnFlvTgLetl2VxqE518QgyM7C9bSfFTYvB/Q/ftkq0RIPY4ySxTz+/wKJ/dXC0w==}
+ cpu: [arm]
+ os: [android]
+
+ '@rollup/rollup-android-arm64@4.19.0':
+ resolution: {integrity: sha512-RDxUSY8D1tWYfn00DDi5myxKgOk6RvWPxhmWexcICt/MEC6yEMr4HNCu1sXXYLw8iAsg0D44NuU+qNq7zVWCrw==}
+ cpu: [arm64]
+ os: [android]
+
+ '@rollup/rollup-darwin-arm64@4.19.0':
+ resolution: {integrity: sha512-emvKHL4B15x6nlNTBMtIaC9tLPRpeA5jMvRLXVbl/W9Ie7HhkrE7KQjvgS9uxgatL1HmHWDXk5TTS4IaNJxbAA==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rollup/rollup-darwin-x64@4.19.0':
+ resolution: {integrity: sha512-fO28cWA1dC57qCd+D0rfLC4VPbh6EOJXrreBmFLWPGI9dpMlER2YwSPZzSGfq11XgcEpPukPTfEVFtw2q2nYJg==}
cpu: [x64]
os: [darwin]
- requiresBuild: true
- dev: false
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.19.0':
+ resolution: {integrity: sha512-2Rn36Ubxdv32NUcfm0wB1tgKqkQuft00PtM23VqLuCUR4N5jcNWDoV5iBC9jeGdgS38WK66ElncprqgMUOyomw==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm-musleabihf@4.19.0':
+ resolution: {integrity: sha512-gJuzIVdq/X1ZA2bHeCGCISe0VWqCoNT8BvkQ+BfsixXwTOndhtLUpOg0A1Fcx/+eA6ei6rMBzlOz4JzmiDw7JQ==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm64-gnu@4.19.0':
+ resolution: {integrity: sha512-0EkX2HYPkSADo9cfeGFoQ7R0/wTKb7q6DdwI4Yn/ULFE1wuRRCHybxpl2goQrx4c/yzK3I8OlgtBu4xvted0ug==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm64-musl@4.19.0':
+ resolution: {integrity: sha512-GlIQRj9px52ISomIOEUq/IojLZqzkvRpdP3cLgIE1wUWaiU5Takwlzpz002q0Nxxr1y2ZgxC2obWxjr13lvxNQ==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rollup/rollup-linux-powerpc64le-gnu@4.19.0':
+ resolution: {integrity: sha512-N6cFJzssruDLUOKfEKeovCKiHcdwVYOT1Hs6dovDQ61+Y9n3Ek4zXvtghPPelt6U0AH4aDGnDLb83uiJMkWYzQ==}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@rollup/rollup-linux-riscv64-gnu@4.19.0':
+ resolution: {integrity: sha512-2DnD3mkS2uuam/alF+I7M84koGwvn3ZVD7uG+LEWpyzo/bq8+kKnus2EVCkcvh6PlNB8QPNFOz6fWd5N8o1CYg==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@rollup/rollup-linux-s390x-gnu@4.19.0':
+ resolution: {integrity: sha512-D6pkaF7OpE7lzlTOFCB2m3Ngzu2ykw40Nka9WmKGUOTS3xcIieHe82slQlNq69sVB04ch73thKYIWz/Ian8DUA==}
+ cpu: [s390x]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-gnu@4.19.0':
+ resolution: {integrity: sha512-HBndjQLP8OsdJNSxpNIN0einbDmRFg9+UQeZV1eiYupIRuZsDEoeGU43NQsS34Pp166DtwQOnpcbV/zQxM+rWA==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-musl@4.19.0':
+ resolution: {integrity: sha512-HxfbvfCKJe/RMYJJn0a12eiOI9OOtAUF4G6ozrFUK95BNyoJaSiBjIOHjZskTUffUrB84IPKkFG9H9nEvJGW6A==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-win32-arm64-msvc@4.19.0':
+ resolution: {integrity: sha512-HxDMKIhmcguGTiP5TsLNolwBUK3nGGUEoV/BO9ldUBoMLBssvh4J0X8pf11i1fTV7WShWItB1bKAKjX4RQeYmg==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rollup/rollup-win32-ia32-msvc@4.19.0':
+ resolution: {integrity: sha512-xItlIAZZaiG/u0wooGzRsx11rokP4qyc/79LkAOdznGRAbOFc+SfEdfUOszG1odsHNgwippUJavag/+W/Etc6Q==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-msvc@4.19.0':
+ resolution: {integrity: sha512-xNo5fV5ycvCCKqiZcpB65VMR11NJB+StnxHz20jdqRAktfdfzhgjTiJ2doTDQE/7dqGaV5I7ZGqKpgph6lCIag==}
+ cpu: [x64]
+ os: [win32]
+
+ '@ts-morph/common@0.20.0':
+ resolution: {integrity: sha512-7uKjByfbPpwuzkstL3L5MQyuXPSKdoNG93Fmi2JoDcTf3pEP731JdRFAduRVkOs8oqxPsXKA+ScrWkdQ8t/I+Q==}
+
+ '@tybys/wasm-util@0.9.0':
+ resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==}
+
+ '@types/babel__core@7.20.5':
+ resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
+
+ '@types/babel__generator@7.6.8':
+ resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==}
+
+ '@types/babel__template@7.4.4':
+ resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
+
+ '@types/babel__traverse@7.20.6':
+ resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==}
+
+ '@types/body-parser@1.19.5':
+ resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==}
+
+ '@types/connect@3.4.38':
+ resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==}
+
+ '@types/estree@1.0.5':
+ resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
+
+ '@types/express-serve-static-core@4.19.5':
+ resolution: {integrity: sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==}
+
+ '@types/express@4.17.21':
+ resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==}
+
+ '@types/http-errors@2.0.4':
+ resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==}
+
+ '@types/mime@1.3.5':
+ resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==}
+
+ '@types/node@20.14.12':
+ resolution: {integrity: sha512-r7wNXakLeSsGT0H1AU863vS2wa5wBOK4bWMjZz2wj+8nBx+m5PeIn0k8AloSLpRuiwdRQZwarZqHE4FNArPuJQ==}
+
+ '@types/normalize-package-data@2.4.4':
+ resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
+
+ '@types/prop-types@15.7.12':
+ resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==}
+
+ '@types/qs@6.9.15':
+ resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==}
+
+ '@types/range-parser@1.2.7':
+ resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==}
+
+ '@types/react-dom@18.3.0':
+ resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==}
+
+ '@types/react@18.3.3':
+ resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==}
+
+ '@types/send@0.17.4':
+ resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==}
+
+ '@types/serve-static@1.15.7':
+ resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==}
+
+ '@vercel/nft@0.26.5':
+ resolution: {integrity: sha512-NHxohEqad6Ra/r4lGknO52uc/GrWILXAMs1BB4401GTqww0fw1bAqzpG1XHuDO+dprg4GvsD9ZLLSsdo78p9hQ==}
+ engines: {node: '>=16'}
+ hasBin: true
+
+ '@vitejs/plugin-react@4.3.1':
+ resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ vite: ^4.2.0 || ^5.0.0
+
+ JSONStream@1.3.5:
+ resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
+ hasBin: true
+
+ abbrev@1.1.1:
+ resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
+
+ abort-controller@3.0.0:
+ resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
+ engines: {node: '>=6.5'}
+
+ abstract-logging@2.0.1:
+ resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==}
+
+ accepts@1.3.8:
+ resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
+ engines: {node: '>= 0.6'}
+
+ acorn-import-attributes@1.9.5:
+ resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==}
+ peerDependencies:
+ acorn: ^8
+
+ acorn@8.12.1:
+ resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ add-stream@1.0.0:
+ resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==}
+
+ agent-base@6.0.2:
+ resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
+ engines: {node: '>= 6.0.0'}
+
+ ajv-formats@2.1.1:
+ resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==}
+ peerDependencies:
+ ajv: ^8.0.0
+ peerDependenciesMeta:
+ ajv:
+ optional: true
+
+ ajv-formats@3.0.1:
+ resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==}
+ peerDependencies:
+ ajv: ^8.0.0
+ peerDependenciesMeta:
+ ajv:
+ optional: true
+
+ ajv@8.17.1:
+ resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
+
+ ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+
+ ansi-styles@3.2.1:
+ resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
+ engines: {node: '>=4'}
+
+ aproba@2.0.0:
+ resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==}
+
+ are-we-there-yet@2.0.0:
+ resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==}
+ engines: {node: '>=10'}
+ deprecated: This package is no longer supported.
+
+ array-flatten@1.1.1:
+ resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
+
+ array-ify@1.0.0:
+ resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==}
+
+ assertion-error@1.1.0:
+ resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
+
+ async-sema@3.1.1:
+ resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==}
+
+ atomic-sleep@1.0.0:
+ resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==}
+ engines: {node: '>=8.0.0'}
+
+ avvio@8.3.2:
+ resolution: {integrity: sha512-st8e519GWHa/azv8S87mcJvZs4WsgTBjOw/Ih1CP6u+8SZvcOeAYNG6JbsIrAUUJJ7JfmrnOkR8ipDS+u9SIRQ==}
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ base64-js@1.5.1:
+ resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+
+ bindings@1.5.0:
+ resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
+
+ body-parser@1.20.2:
+ resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+
+ brace-expansion@1.1.11:
+ resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+
+ brace-expansion@2.0.1:
+ resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+
+ braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
+
+ browserslist@4.23.2:
+ resolution: {integrity: sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+
+ buffer-from@1.1.2:
+ resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+
+ buffer@6.0.3:
+ resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
+
+ bytes@3.1.2:
+ resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
+ engines: {node: '>= 0.8'}
+
+ cac@6.7.14:
+ resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
+ engines: {node: '>=8'}
+
+ call-bind@1.0.7:
+ resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
+ engines: {node: '>= 0.4'}
+
+ caniuse-lite@1.0.30001643:
+ resolution: {integrity: sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==}
+
+ chai@4.5.0:
+ resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==}
+ engines: {node: '>=4'}
+
+ chalk@2.4.2:
+ resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
+ engines: {node: '>=4'}
+
+ check-error@1.0.3:
+ resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
+
+ chownr@2.0.0:
+ resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
+ engines: {node: '>=10'}
+
+ code-block-writer@12.0.0:
+ resolution: {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==}
+
+ color-convert@1.9.3:
+ resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
+
+ color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+
+ color-name@1.1.3:
+ resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
+
+ color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+
+ color-string@1.9.1:
+ resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
+
+ color-support@1.1.3:
+ resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==}
+ hasBin: true
+
+ color@4.2.3:
+ resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
+ engines: {node: '>=12.5.0'}
+
+ commander@11.1.0:
+ resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==}
+ engines: {node: '>=16'}
+
+ compare-func@2.0.0:
+ resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==}
+
+ compressible@2.0.18:
+ resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==}
+ engines: {node: '>= 0.6'}
+
+ concat-map@0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+
+ console-control-strings@1.1.0:
+ resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
+
+ content-disposition@0.5.4:
+ resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
+ engines: {node: '>= 0.6'}
+
+ content-type@1.0.5:
+ resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
+ engines: {node: '>= 0.6'}
+
+ conventional-changelog-angular@7.0.0:
+ resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==}
+ engines: {node: '>=16'}
+
+ conventional-changelog-atom@4.0.0:
+ resolution: {integrity: sha512-q2YtiN7rnT1TGwPTwjjBSIPIzDJCRE+XAUahWxnh+buKK99Kks4WLMHoexw38GXx9OUxAsrp44f9qXe5VEMYhw==}
+ engines: {node: '>=16'}
+
+ conventional-changelog-codemirror@4.0.0:
+ resolution: {integrity: sha512-hQSojc/5imn1GJK3A75m9hEZZhc3urojA5gMpnar4JHmgLnuM3CUIARPpEk86glEKr3c54Po3WV/vCaO/U8g3Q==}
+ engines: {node: '>=16'}
+
+ conventional-changelog-conventionalcommits@7.0.2:
+ resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==}
+ engines: {node: '>=16'}
+
+ conventional-changelog-core@7.0.0:
+ resolution: {integrity: sha512-UYgaB1F/COt7VFjlYKVE/9tTzfU3VUq47r6iWf6lM5T7TlOxr0thI63ojQueRLIpVbrtHK4Ffw+yQGduw2Bhdg==}
+ engines: {node: '>=16'}
+
+ conventional-changelog-ember@4.0.0:
+ resolution: {integrity: sha512-D0IMhwcJUg1Y8FSry6XAplEJcljkHVlvAZddhhsdbL1rbsqRsMfGx/PIkPYq0ru5aDgn+OxhQ5N5yR7P9mfsvA==}
+ engines: {node: '>=16'}
+
+ conventional-changelog-eslint@5.0.0:
+ resolution: {integrity: sha512-6JtLWqAQIeJLn/OzUlYmzd9fKeNSWmQVim9kql+v4GrZwLx807kAJl3IJVc3jTYfVKWLxhC3BGUxYiuVEcVjgA==}
+ engines: {node: '>=16'}
+
+ conventional-changelog-express@4.0.0:
+ resolution: {integrity: sha512-yWyy5c7raP9v7aTvPAWzqrztACNO9+FEI1FSYh7UP7YT1AkWgv5UspUeB5v3Ibv4/o60zj2o9GF2tqKQ99lIsw==}
+ engines: {node: '>=16'}
+
+ conventional-changelog-jquery@5.0.0:
+ resolution: {integrity: sha512-slLjlXLRNa/icMI3+uGLQbtrgEny3RgITeCxevJB+p05ExiTgHACP5p3XiMKzjBn80n+Rzr83XMYfRInEtCPPw==}
+ engines: {node: '>=16'}
+
+ conventional-changelog-jshint@4.0.0:
+ resolution: {integrity: sha512-LyXq1bbl0yG0Ai1SbLxIk8ZxUOe3AjnlwE6sVRQmMgetBk+4gY9EO3d00zlEt8Y8gwsITytDnPORl8al7InTjg==}
+ engines: {node: '>=16'}
+
+ conventional-changelog-preset-loader@4.1.0:
+ resolution: {integrity: sha512-HozQjJicZTuRhCRTq4rZbefaiCzRM2pr6u2NL3XhrmQm4RMnDXfESU6JKu/pnKwx5xtdkYfNCsbhN5exhiKGJA==}
+ engines: {node: '>=16'}
+
+ conventional-changelog-writer@7.0.1:
+ resolution: {integrity: sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==}
+ engines: {node: '>=16'}
+ hasBin: true
+
+ conventional-changelog@5.1.0:
+ resolution: {integrity: sha512-aWyE/P39wGYRPllcCEZDxTVEmhyLzTc9XA6z6rVfkuCD2UBnhV/sgSOKbQrEG5z9mEZJjnopjgQooTKxEg8mAg==}
+ engines: {node: '>=16'}
+
+ conventional-commits-filter@4.0.0:
+ resolution: {integrity: sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==}
+ engines: {node: '>=16'}
+
+ conventional-commits-parser@5.0.0:
+ resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==}
+ engines: {node: '>=16'}
+ hasBin: true
+
+ convert-source-map@2.0.0:
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+
+ cookie-signature@1.0.6:
+ resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==}
+
+ cookie@0.6.0:
+ resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
+ engines: {node: '>= 0.6'}
+
+ core-util-is@1.0.3:
+ resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+
+ cross-env@7.0.3:
+ resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
+ engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
+ hasBin: true
+
+ cross-spawn@7.0.3:
+ resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
+ engines: {node: '>= 8'}
+
+ csstype@3.1.3:
+ resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+
+ dargs@8.1.0:
+ resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==}
+ engines: {node: '>=12'}
+
+ debug@2.6.9:
+ resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ debug@4.3.5:
+ resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ deep-eql@4.1.4:
+ resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==}
+ engines: {node: '>=6'}
+
+ define-data-property@1.1.4:
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+ engines: {node: '>= 0.4'}
+
+ delegates@1.0.0:
+ resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
+
+ depd@2.0.0:
+ resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
+ engines: {node: '>= 0.8'}
+
+ destroy@1.2.0:
+ resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+
+ detect-libc@2.0.3:
+ resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
+ engines: {node: '>=8'}
+
+ dot-prop@5.3.0:
+ resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==}
+ engines: {node: '>=8'}
+
+ duplexer2@0.1.4:
+ resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==}
+
+ ee-first@1.1.1:
+ resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
+
+ electron-to-chromium@1.5.2:
+ resolution: {integrity: sha512-kc4r3U3V3WLaaZqThjYz/Y6z8tJe+7K0bbjUVo3i+LWIypVdMx5nXCkwRe6SWbY6ILqLdc1rKcKmr3HoH7wjSQ==}
+
+ emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+
+ encodeurl@1.0.2:
+ resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
+ engines: {node: '>= 0.8'}
+
+ error-ex@1.3.2:
+ resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
+
+ es-define-property@1.0.0:
+ resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
+ engines: {node: '>= 0.4'}
+
+ es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+
+ es-module-lexer@0.7.1:
+ resolution: {integrity: sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==}
+
+ es-module-lexer@1.5.4:
+ resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==}
+
+ esbuild@0.16.17:
+ resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==}
+ engines: {node: '>=12'}
+ hasBin: true
+
+ esbuild@0.19.12:
+ resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==}
+ engines: {node: '>=12'}
+ hasBin: true
+
+ esbuild@0.21.5:
+ resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
+ engines: {node: '>=12'}
+ hasBin: true
+
+ escalade@3.1.2:
+ resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
+ engines: {node: '>=6'}
+
+ escape-html@1.0.3:
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+
+ escape-string-regexp@1.0.5:
+ resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
+ engines: {node: '>=0.8.0'}
+
+ estree-walker@2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+
+ etag@1.8.1:
+ resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+ engines: {node: '>= 0.6'}
+
+ event-target-shim@5.0.1:
+ resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
+ engines: {node: '>=6'}
+
+ events@3.3.0:
+ resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
+ engines: {node: '>=0.8.x'}
+
+ execa@5.1.1:
+ resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
+ engines: {node: '>=10'}
+
+ express@4.19.2:
+ resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==}
+ engines: {node: '>= 0.10.0'}
+
+ fast-content-type-parse@1.1.0:
+ resolution: {integrity: sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==}
+
+ fast-decode-uri-component@1.0.1:
+ resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==}
+
+ fast-deep-equal@3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+
+ fast-glob@3.3.2:
+ resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
+ engines: {node: '>=8.6.0'}
+
+ fast-json-stringify@5.16.1:
+ resolution: {integrity: sha512-KAdnLvy1yu/XrRtP+LJnxbBGrhN+xXu+gt3EUvZhYGKCr3lFHq/7UFJHHFgmJKoqlh6B40bZLEv7w46B0mqn1g==}
+
+ fast-querystring@1.1.2:
+ resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==}
+
+ fast-redact@3.5.0:
+ resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==}
+ engines: {node: '>=6'}
+
+ fast-uri@2.4.0:
+ resolution: {integrity: sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==}
+
+ fast-uri@3.0.1:
+ resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==}
+
+ fastify@4.28.1:
+ resolution: {integrity: sha512-kFWUtpNr4i7t5vY2EJPCN2KgMVpuqfU4NjnJNCgiNB900oiDeYqaNDRcAfeBbOF5hGixixxcKnOU4KN9z6QncQ==}
+
+ fastq@1.17.1:
+ resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
+
+ file-uri-to-path@1.0.0:
+ resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
+
+ fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
+
+ finalhandler@1.2.0:
+ resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==}
+ engines: {node: '>= 0.8'}
+
+ find-my-way@8.2.0:
+ resolution: {integrity: sha512-HdWXgFYc6b1BJcOBDBwjqWuHJj1WYiqrxSh25qtU4DabpMFdj/gSunNBQb83t+8Zt67D7CXEzJWTkxaShMTMOA==}
+ engines: {node: '>=14'}
+
+ find-up@6.3.0:
+ resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ forwarded@0.2.0:
+ resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
+ engines: {node: '>= 0.6'}
+
+ fresh@0.5.2:
+ resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
+ engines: {node: '>= 0.6'}
+
+ fs-minipass@2.1.0:
+ resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==}
+ engines: {node: '>= 8'}
+
+ fs.realpath@1.0.0:
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+
+ gauge@3.0.2:
+ resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==}
+ engines: {node: '>=10'}
+ deprecated: This package is no longer supported.
+
+ gensync@1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+
+ get-func-name@2.0.2:
+ resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
+
+ get-intrinsic@1.2.4:
+ resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
+ engines: {node: '>= 0.4'}
+
+ get-stream@6.0.1:
+ resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
+ engines: {node: '>=10'}
+
+ git-raw-commits@4.0.0:
+ resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==}
+ engines: {node: '>=16'}
+ hasBin: true
+
+ git-semver-tags@7.0.1:
+ resolution: {integrity: sha512-NY0ZHjJzyyNXHTDZmj+GG7PyuAKtMsyWSwh07CR2hOZFa+/yoTsXci/nF2obzL8UDhakFNkD9gNdt/Ed+cxh2Q==}
+ engines: {node: '>=16'}
+ hasBin: true
+
+ glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+
+ glob@7.2.3:
+ resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ deprecated: Glob versions prior to v9 are no longer supported
+
+ globals@11.12.0:
+ resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
+ engines: {node: '>=4'}
+
+ gopd@1.0.1:
+ resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
+
+ graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+
+ handlebars@4.7.8:
+ resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==}
+ engines: {node: '>=0.4.7'}
+ hasBin: true
+
+ has-flag@3.0.0:
+ resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
+ engines: {node: '>=4'}
+
+ has-property-descriptors@1.0.2:
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
+
+ has-proto@1.0.3:
+ resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
+ engines: {node: '>= 0.4'}
+
+ has-symbols@1.0.3:
+ resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
+ engines: {node: '>= 0.4'}
+
+ has-unicode@2.0.1:
+ resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==}
+
+ hasown@2.0.2:
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
+
+ hono@4.5.1:
+ resolution: {integrity: sha512-6q8AugoWG5wlrjdGG8OFFiqEsPlPGjODjUik48sEJeko4Tae1UsLS2vUiYHLEJx1gJvOZa4BWkQC+urwDmkEvQ==}
+ engines: {node: '>=16.0.0'}
+
+ hosted-git-info@7.0.2:
+ resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==}
+ engines: {node: ^16.14.0 || >=18.0.0}
+
+ http-errors@2.0.0:
+ resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
+ engines: {node: '>= 0.8'}
+
+ https-proxy-agent@5.0.1:
+ resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
+ engines: {node: '>= 6'}
+
+ human-signals@2.1.0:
+ resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
+ engines: {node: '>=10.17.0'}
+
+ iconv-lite@0.4.24:
+ resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
+ engines: {node: '>=0.10.0'}
+
+ ieee754@1.2.1:
+ resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
+
+ inflight@1.0.6:
+ resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
+
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ ipaddr.js@1.9.1:
+ resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
+ engines: {node: '>= 0.10'}
+
+ is-arrayish@0.2.1:
+ resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
+
+ is-arrayish@0.3.2:
+ resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
+
+ is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+
+ is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+
+ is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+
+ is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+
+ is-obj@2.0.0:
+ resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
+ engines: {node: '>=8'}
+
+ is-stream@2.0.1:
+ resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
+ engines: {node: '>=8'}
+
+ is-text-path@2.0.0:
+ resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==}
+ engines: {node: '>=8'}
+
+ isarray@1.0.0:
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
+
+ isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ jsesc@2.5.2:
+ resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ json-parse-even-better-errors@3.0.2:
+ resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ json-schema-ref-resolver@1.0.1:
+ resolution: {integrity: sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==}
+
+ json-schema-traverse@1.0.0:
+ resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
+
+ json-stringify-safe@5.0.1:
+ resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
+
+ json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ jsonparse@1.3.1:
+ resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==}
+ engines: {'0': node >= 0.2.0}
+
+ light-my-request@5.13.0:
+ resolution: {integrity: sha512-9IjUN9ZyCS9pTG+KqTDEQo68Sui2lHsYBrfMyVUTTZ3XhH8PMZq7xO94Kr+eP9dhi/kcKsx4N41p2IXEBil1pQ==}
+
+ lines-and-columns@2.0.4:
+ resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ locate-path@7.2.0:
+ resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ loose-envify@1.4.0:
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
+
+ loupe@2.3.7:
+ resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
+
+ lru-cache@10.4.3:
+ resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
+
+ lru-cache@5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+
+ lru-cache@8.0.5:
+ resolution: {integrity: sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==}
+ engines: {node: '>=16.14'}
+
+ make-dir@3.1.0:
+ resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
+ engines: {node: '>=8'}
+
+ media-typer@0.3.0:
+ resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
+ engines: {node: '>= 0.6'}
+
+ meow@12.1.1:
+ resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==}
+ engines: {node: '>=16.10'}
+
+ merge-descriptors@1.0.1:
+ resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==}
+
+ merge-stream@2.0.0:
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+
+ merge2@1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+
+ methods@1.1.2:
+ resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
+ engines: {node: '>= 0.6'}
+
+ micromatch@4.0.7:
+ resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==}
+ engines: {node: '>=8.6'}
+
+ mime-db@1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+
+ mime-db@1.53.0:
+ resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==}
+ engines: {node: '>= 0.6'}
+
+ mime-types@2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+
+ mime@1.6.0:
+ resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ mimic-fn@2.1.0:
+ resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+ engines: {node: '>=6'}
+
+ minimatch@3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+
+ minimatch@7.4.6:
+ resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==}
+ engines: {node: '>=10'}
+
+ minimist@1.2.8:
+ resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+
+ minipass@3.3.6:
+ resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==}
+ engines: {node: '>=8'}
+
+ minipass@5.0.0:
+ resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
+ engines: {node: '>=8'}
+
+ minizlib@2.1.2:
+ resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
+ engines: {node: '>= 8'}
+
+ mkdirp@1.0.4:
+ resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ mkdirp@2.1.6:
+ resolution: {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ mrmime@2.0.0:
+ resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==}
+ engines: {node: '>=10'}
+
+ ms@2.0.0:
+ resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
+
+ ms@2.1.2:
+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ multipipe@4.0.0:
+ resolution: {integrity: sha512-jzcEAzFXoWwWwUbvHCNPwBlTz3WCWe/jPcXSmTfbo/VjRwRTfvLZ/bdvtiTdqCe8d4otCSsPCbhGYcX+eggpKQ==}
+
+ nanoid@3.3.7:
+ resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
+ negotiator@0.6.3:
+ resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
+ engines: {node: '>= 0.6'}
+
+ neo-async@2.6.2:
+ resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
+
+ node-fetch@2.7.0:
+ resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
+ engines: {node: 4.x || >=6.0.0}
+ peerDependencies:
+ encoding: ^0.1.0
+ peerDependenciesMeta:
+ encoding:
+ optional: true
+
+ node-gyp-build@4.8.1:
+ resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==}
+ hasBin: true
+
+ node-releases@2.0.18:
+ resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
+
+ nopt@5.0.0:
+ resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ normalize-package-data@6.0.2:
+ resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==}
+ engines: {node: ^16.14.0 || >=18.0.0}
+
+ npm-run-path@4.0.1:
+ resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
+ engines: {node: '>=8'}
+
+ npmlog@5.0.1:
+ resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==}
+ deprecated: This package is no longer supported.
+
+ object-assign@4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+
+ object-inspect@1.13.2:
+ resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==}
+ engines: {node: '>= 0.4'}
+
+ on-exit-leak-free@2.1.2:
+ resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==}
+ engines: {node: '>=14.0.0'}
+
+ on-finished@2.4.1:
+ resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
+ engines: {node: '>= 0.8'}
+
+ on-headers@1.0.2:
+ resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==}
+ engines: {node: '>= 0.8'}
+
+ once@1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+
+ onetime@5.1.2:
+ resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
+
+ p-limit@4.0.0:
+ resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ p-locate@6.0.0:
+ resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ parse-json@7.1.1:
+ resolution: {integrity: sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==}
+ engines: {node: '>=16'}
+
+ parseurl@1.3.3:
+ resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
+ engines: {node: '>= 0.8'}
+
+ path-browserify@1.0.1:
+ resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
+
+ path-exists@5.0.0:
+ resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ path-is-absolute@1.0.1:
+ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+ engines: {node: '>=0.10.0'}
+
+ path-key@3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+
+ path-to-regexp@0.1.7:
+ resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
+
+ pathval@1.1.1:
+ resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
+
+ picocolors@1.0.1:
+ resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
+
+ picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+
+ pino-abstract-transport@1.2.0:
+ resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==}
+
+ pino-std-serializers@7.0.0:
+ resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==}
+
+ pino@9.3.2:
+ resolution: {integrity: sha512-WtARBjgZ7LNEkrGWxMBN/jvlFiE17LTbBoH0konmBU684Kd0uIiDwBXlcTCW7iJnA6HfIKwUssS/2AC6cDEanw==}
+ hasBin: true
+
+ pixelmatch@5.3.0:
+ resolution: {integrity: sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==}
+ hasBin: true
+
+ playwright-chromium@1.45.3:
+ resolution: {integrity: sha512-GXY/+1HScU5soR06lu8sc7cnXWBnfWDGH2JV+D3wqxApb9qJbSxDK40H8loOok+naxMO7x6yhgPHwpRSCV9dug==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ playwright-core@1.45.3:
+ resolution: {integrity: sha512-+ym0jNbcjikaOwwSZycFbwkWgfruWvYlJfThKYAlImbxUgdWFO2oW70ojPm4OpE4t6TAo2FY/smM+hpVTtkhDA==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ pngjs@6.0.0:
+ resolution: {integrity: sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==}
+ engines: {node: '>=12.13.0'}
+
+ postcss@8.4.40:
+ resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==}
+ engines: {node: ^10 || ^12 || >=14}
+
+ prettier@3.3.3:
+ resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==}
+ engines: {node: '>=14'}
+ hasBin: true
+
+ prisma@5.17.0:
+ resolution: {integrity: sha512-m4UWkN5lBE6yevqeOxEvmepnL5cNPEjzMw2IqDB59AcEV6w7D8vGljDLd1gPFH+W6gUxw9x7/RmN5dCS/WTPxA==}
+ engines: {node: '>=16.13'}
+ hasBin: true
+
+ process-nextick-args@2.0.1:
+ resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+
+ process-warning@3.0.0:
+ resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==}
+
+ process-warning@4.0.0:
+ resolution: {integrity: sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==}
+
+ process@0.11.10:
+ resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
+ engines: {node: '>= 0.6.0'}
+
+ proxy-addr@2.0.7:
+ resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
+ engines: {node: '>= 0.10'}
+
+ qs@6.11.0:
+ resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==}
+ engines: {node: '>=0.6'}
+
+ queue-microtask@1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+
+ quick-format-unescaped@4.0.4:
+ resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
+
+ range-parser@1.2.1:
+ resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
+ engines: {node: '>= 0.6'}
+
+ raw-body@2.5.2:
+ resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
+ engines: {node: '>= 0.8'}
+
+ react-dom@18.3.1:
+ resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
+ peerDependencies:
+ react: ^18.3.1
+
+ react-refresh@0.14.2:
+ resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==}
+ engines: {node: '>=0.10.0'}
+
+ react@18.3.1:
+ resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
+ engines: {node: '>=0.10.0'}
+
+ read-pkg-up@10.1.0:
+ resolution: {integrity: sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==}
+ engines: {node: '>=16'}
+
+ read-pkg@8.1.0:
+ resolution: {integrity: sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==}
+ engines: {node: '>=16'}
+
+ readable-stream@2.3.8:
+ resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
+
+ readable-stream@3.6.2:
+ resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
+ engines: {node: '>= 6'}
+
+ readable-stream@4.5.2:
+ resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ real-require@0.2.0:
+ resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==}
+ engines: {node: '>= 12.13.0'}
+
+ require-from-string@2.0.2:
+ resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
+ engines: {node: '>=0.10.0'}
+
+ resolve-from@5.0.0:
+ resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
+ engines: {node: '>=8'}
+
+ ret@0.4.3:
+ resolution: {integrity: sha512-0f4Memo5QP7WQyUEAYUO3esD/XjOc3Zjjg5CPsAq1p8sIu0XPeMbHJemKA0BO7tV0X7+A0FoEpbmHXWxPyD3wQ==}
+ engines: {node: '>=10'}
+
+ reusify@1.0.4:
+ resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+
+ rfdc@1.4.1:
+ resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
+
+ rimraf@3.0.2:
+ resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
+ deprecated: Rimraf versions prior to v4 are no longer supported
+ hasBin: true
+
+ rollup@4.19.0:
+ resolution: {integrity: sha512-5r7EYSQIowHsK4eTZ0Y81qpZuJz+MUuYeqmmYmRMl1nwhdmbiYqt5jwzf6u7wyOzJgYqtCRMtVRKOtHANBz7rA==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ hasBin: true
+
+ run-parallel@1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+
+ safe-buffer@5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+
+ safe-buffer@5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+
+ safe-regex2@3.1.0:
+ resolution: {integrity: sha512-RAAZAGbap2kBfbVhvmnTFv73NWLMvDGOITFYTZBAaY8eR+Ir4ef7Up/e7amo+y1+AH+3PtLkrt9mvcTsG9LXug==}
+
+ safe-stable-stringify@2.4.3:
+ resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==}
+ engines: {node: '>=10'}
+
+ safer-buffer@2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+
+ scheduler@0.23.2:
+ resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
+
+ secure-json-parse@2.7.0:
+ resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==}
+
+ semver@6.3.1:
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+ hasBin: true
+
+ semver@7.6.3:
+ resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ send@0.18.0:
+ resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==}
+ engines: {node: '>= 0.8.0'}
+
+ serve-static@1.15.0:
+ resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==}
+ engines: {node: '>= 0.8.0'}
+
+ set-blocking@2.0.0:
+ resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
+
+ set-cookie-parser@2.6.0:
+ resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==}
+
+ set-function-length@1.2.2:
+ resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
+ engines: {node: '>= 0.4'}
+
+ setprototypeof@1.2.0:
+ resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
+
+ sharp@0.33.4:
+ resolution: {integrity: sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==}
+ engines: {libvips: '>=8.15.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+
+ shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+
+ shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+
+ side-channel@1.0.6:
+ resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
+ engines: {node: '>= 0.4'}
+
+ signal-exit@3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+
+ simple-swizzle@0.2.2:
+ resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
+
+ sirv@2.0.4:
+ resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==}
+ engines: {node: '>= 10'}
+
+ sonic-boom@4.0.1:
+ resolution: {integrity: sha512-hTSD/6JMLyT4r9zeof6UtuBDpjJ9sO08/nmS5djaA9eozT9oOlNdpXSnzcgj4FTqpk3nkLrs61l4gip9r1HCrQ==}
+
+ source-map-js@1.2.0:
+ resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
+ engines: {node: '>=0.10.0'}
+
+ source-map-support@0.5.21:
+ resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
+
+ source-map@0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+
+ spdx-correct@3.2.0:
+ resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
+
+ spdx-exceptions@2.5.0:
+ resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==}
+
+ spdx-expression-parse@3.0.1:
+ resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
+
+ spdx-license-ids@3.0.18:
+ resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==}
+
+ split2@4.2.0:
+ resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
+ engines: {node: '>= 10.x'}
+
+ statuses@2.0.1:
+ resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
+ engines: {node: '>= 0.8'}
+
+ stream-buffers@3.0.3:
+ resolution: {integrity: sha512-pqMqwQCso0PBJt2PQmDO0cFj0lyqmiwOMiMSkVtRokl7e+ZTRYgDHKnuZNbqjiJXgsg4nuqtD/zxuo9KqTp0Yw==}
+ engines: {node: '>= 0.10.0'}
+
+ string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+
+ string_decoder@1.1.1:
+ resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
+
+ string_decoder@1.3.0:
+ resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
+
+ strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+
+ strip-final-newline@2.0.0:
+ resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
+ engines: {node: '>=6'}
+
+ supports-color@5.5.0:
+ resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+ engines: {node: '>=4'}
+
+ tar@6.2.1:
+ resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==}
+ engines: {node: '>=10'}
+
+ telefunc@0.1.76:
+ resolution: {integrity: sha512-rBoFLUJuuIXQPF5hydxLEg8TNa44fFVdWVO6gMVu19AgOsRFkSXRcL0W82mw4iv6SGiCilqOoSNgGrqmV0FT9g==}
+ engines: {node: '>=12.19.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ '@babel/parser': ^7.0.0
+ '@babel/types': ^7.0.0
+ react: ^18.0.0
+ react-streaming: ^0.3.3
+ peerDependenciesMeta:
+ '@babel/core':
+ optional: true
+ '@babel/parser':
+ optional: true
+ '@babel/types':
+ optional: true
+ react:
+ optional: true
+ react-streaming:
+ optional: true
+
+ text-extensions@2.4.0:
+ resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==}
+ engines: {node: '>=8'}
+
+ thread-stream@3.1.0:
+ resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==}
+
+ through@2.3.8:
+ resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
+
+ to-fast-properties@2.0.0:
+ resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
+ engines: {node: '>=4'}
+
+ to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+
+ toad-cache@3.7.0:
+ resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==}
+ engines: {node: '>=12'}
+
+ toidentifier@1.0.1:
+ resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
+ engines: {node: '>=0.6'}
+
+ totalist@3.0.1:
+ resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
+ engines: {node: '>=6'}
+
+ tr46@0.0.3:
+ resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
+
+ ts-morph@19.0.0:
+ resolution: {integrity: sha512-D6qcpiJdn46tUqV45vr5UGM2dnIEuTGNxVhg0sk5NX11orcouwj6i1bMqZIz2mZTZB1Hcgy7C3oEVhAT+f6mbQ==}
+
+ tslib@2.6.3:
+ resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==}
+
+ type-detect@4.1.0:
+ resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==}
+ engines: {node: '>=4'}
+
+ type-fest@3.13.1:
+ resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==}
+ engines: {node: '>=14.16'}
+
+ type-fest@4.23.0:
+ resolution: {integrity: sha512-ZiBujro2ohr5+Z/hZWHESLz3g08BBdrdLMieYFULJO+tWc437sn8kQsWLJoZErY8alNhxre9K4p3GURAG11n+w==}
+ engines: {node: '>=16'}
+
+ type-is@1.6.18:
+ resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
+ engines: {node: '>= 0.6'}
+
+ typescript@5.5.4:
+ resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
+ uglify-js@3.19.0:
+ resolution: {integrity: sha512-wNKHUY2hYYkf6oSFfhwwiHo4WCHzHmzcXsqXYTN9ja3iApYIFbb2U6ics9hBcYLHcYGQoAlwnZlTrf3oF+BL/Q==}
+ engines: {node: '>=0.8.0'}
+ hasBin: true
+
+ undici-types@5.26.5:
+ resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+
+ unpipe@1.0.0:
+ resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
+ engines: {node: '>= 0.8'}
+
+ update-browserslist-db@1.1.0:
+ resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+
+ util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+ utils-merge@1.0.1:
+ resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
+ engines: {node: '>= 0.4.0'}
+
+ validate-npm-package-license@3.0.4:
+ resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
+
+ vary@1.1.2:
+ resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
+ engines: {node: '>= 0.8'}
+
+ vike@0.4.181:
+ resolution: {integrity: sha512-pGhTonZ67yx3t4isx2UEKqx+ZhKJk1ZrwXBHfmy0Rs8T/u4JOIB58OahNDbVu1k4cvFeNzSqxcpI1BBVfaF5ZA==}
+ engines: {node: '>=18.0.0'}
+ hasBin: true
+ peerDependencies:
+ react-streaming: '>=0.3.42'
+ vite: '>=4.4.0'
+ peerDependenciesMeta:
+ react-streaming:
+ optional: true
+
+ vite@5.3.5:
+ resolution: {integrity: sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^18.0.0 || >=20.0.0
+ less: '*'
+ lightningcss: ^1.21.0
+ sass: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+
+ webidl-conversions@3.0.1:
+ resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
+
+ whatwg-url@5.0.0:
+ resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
+
+ which@2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+
+ wide-align@1.1.5:
+ resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
+
+ wordwrap@1.0.0:
+ resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}
+
+ wrappy@1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+
+ yallist@3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+
+ yallist@4.0.0:
+ resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+
+ yocto-queue@1.1.1:
+ resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==}
+ engines: {node: '>=12.20'}
+
+snapshots:
+
+ '@ampproject/remapping@2.3.0':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
+
+ '@babel/code-frame@7.24.7':
+ dependencies:
+ '@babel/highlight': 7.24.7
+ picocolors: 1.0.1
+
+ '@babel/compat-data@7.24.9': {}
+
+ '@babel/core@7.24.9':
+ dependencies:
+ '@ampproject/remapping': 2.3.0
+ '@babel/code-frame': 7.24.7
+ '@babel/generator': 7.24.10
+ '@babel/helper-compilation-targets': 7.24.8
+ '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9)
+ '@babel/helpers': 7.24.8
+ '@babel/parser': 7.24.8
+ '@babel/template': 7.24.7
+ '@babel/traverse': 7.24.8
+ '@babel/types': 7.24.9
+ convert-source-map: 2.0.0
+ debug: 4.3.5
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/generator@7.24.10':
+ dependencies:
+ '@babel/types': 7.24.9
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
+ jsesc: 2.5.2
+
+ '@babel/helper-compilation-targets@7.24.8':
+ dependencies:
+ '@babel/compat-data': 7.24.9
+ '@babel/helper-validator-option': 7.24.8
+ browserslist: 4.23.2
+ lru-cache: 5.1.1
+ semver: 6.3.1
+
+ '@babel/helper-environment-visitor@7.24.7':
+ dependencies:
+ '@babel/types': 7.24.9
+
+ '@babel/helper-function-name@7.24.7':
+ dependencies:
+ '@babel/template': 7.24.7
+ '@babel/types': 7.24.9
+
+ '@babel/helper-hoist-variables@7.24.7':
+ dependencies:
+ '@babel/types': 7.24.9
+
+ '@babel/helper-module-imports@7.24.7':
+ dependencies:
+ '@babel/traverse': 7.24.8
+ '@babel/types': 7.24.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-module-transforms@7.24.9(@babel/core@7.24.9)':
+ dependencies:
+ '@babel/core': 7.24.9
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-module-imports': 7.24.7
+ '@babel/helper-simple-access': 7.24.7
+ '@babel/helper-split-export-declaration': 7.24.7
+ '@babel/helper-validator-identifier': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-plugin-utils@7.24.8': {}
+
+ '@babel/helper-simple-access@7.24.7':
+ dependencies:
+ '@babel/traverse': 7.24.8
+ '@babel/types': 7.24.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-split-export-declaration@7.24.7':
+ dependencies:
+ '@babel/types': 7.24.9
+
+ '@babel/helper-string-parser@7.24.8': {}
+
+ '@babel/helper-validator-identifier@7.24.7': {}
+
+ '@babel/helper-validator-option@7.24.8': {}
+
+ '@babel/helpers@7.24.8':
+ dependencies:
+ '@babel/template': 7.24.7
+ '@babel/types': 7.24.9
+
+ '@babel/highlight@7.24.7':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.24.7
+ chalk: 2.4.2
+ js-tokens: 4.0.0
+ picocolors: 1.0.1
+
+ '@babel/parser@7.24.8':
+ dependencies:
+ '@babel/types': 7.24.9
+
+ '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.24.9)':
+ dependencies:
+ '@babel/core': 7.24.9
+ '@babel/helper-plugin-utils': 7.24.8
+
+ '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.24.9)':
+ dependencies:
+ '@babel/core': 7.24.9
+ '@babel/helper-plugin-utils': 7.24.8
+
+ '@babel/template@7.24.7':
+ dependencies:
+ '@babel/code-frame': 7.24.7
+ '@babel/parser': 7.24.8
+ '@babel/types': 7.24.9
+
+ '@babel/traverse@7.24.8':
+ dependencies:
+ '@babel/code-frame': 7.24.7
+ '@babel/generator': 7.24.10
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-function-name': 7.24.7
+ '@babel/helper-hoist-variables': 7.24.7
+ '@babel/helper-split-export-declaration': 7.24.7
+ '@babel/parser': 7.24.8
+ '@babel/types': 7.24.9
+ debug: 4.3.5
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/types@7.24.9':
+ dependencies:
+ '@babel/helper-string-parser': 7.24.8
+ '@babel/helper-validator-identifier': 7.24.7
+ to-fast-properties: 2.0.0
+
+ '@biomejs/biome@1.8.3':
+ optionalDependencies:
+ '@biomejs/cli-darwin-arm64': 1.8.3
+ '@biomejs/cli-darwin-x64': 1.8.3
+ '@biomejs/cli-linux-arm64': 1.8.3
+ '@biomejs/cli-linux-arm64-musl': 1.8.3
+ '@biomejs/cli-linux-x64': 1.8.3
+ '@biomejs/cli-linux-x64-musl': 1.8.3
+ '@biomejs/cli-win32-arm64': 1.8.3
+ '@biomejs/cli-win32-x64': 1.8.3
+
+ '@biomejs/cli-darwin-arm64@1.8.3':
+ optional: true
+
+ '@biomejs/cli-darwin-x64@1.8.3':
+ optional: true
+
+ '@biomejs/cli-linux-arm64-musl@1.8.3':
+ optional: true
+
+ '@biomejs/cli-linux-arm64@1.8.3':
+ optional: true
+
+ '@biomejs/cli-linux-x64-musl@1.8.3':
+ optional: true
+
+ '@biomejs/cli-linux-x64@1.8.3':
+ optional: true
+
+ '@biomejs/cli-win32-arm64@1.8.3':
+ optional: true
+
+ '@biomejs/cli-win32-x64@1.8.3':
+ optional: true
+
+ '@brillout/import@0.2.3': {}
+
+ '@brillout/json-serializer@0.5.13': {}
+
+ '@brillout/part-regex@0.1.3': {}
+
+ '@brillout/picocolors@1.0.14': {}
+
+ '@brillout/release-me@0.4.0':
+ dependencies:
+ '@brillout/picocolors': 1.0.14
+ commander: 11.1.0
+ conventional-changelog: 5.1.0
+ execa: 5.1.1
+ semver: 7.6.3
+
+ '@brillout/require-shim@0.1.2': {}
+
+ '@brillout/test-e2e@0.5.33':
+ dependencies:
+ '@brillout/part-regex': 0.1.3
+ '@brillout/picocolors': 1.0.14
+ chai: 4.5.0
+ esbuild: 0.16.17
+ fast-glob: 3.3.2
+ node-fetch: 2.7.0
+ pixelmatch: 5.3.0
+ playwright-chromium: 1.45.3
+ pngjs: 6.0.0
+ source-map-support: 0.5.21
+ strip-ansi: 6.0.1
+ transitivePeerDependencies:
+ - encoding
+
+ '@brillout/test-types@0.1.15(typescript@5.5.4)':
+ dependencies:
+ '@brillout/picocolors': 1.0.14
+ fast-glob: 3.3.2
+ source-map-support: 0.5.21
+ typescript: 5.5.4
+
+ '@brillout/vite-plugin-server-entry@0.4.7':
+ dependencies:
+ '@brillout/import': 0.2.3
+
+ '@emnapi/core@1.2.0':
+ dependencies:
+ '@emnapi/wasi-threads': 1.0.1
+ tslib: 2.6.3
+ optional: true
+
+ '@emnapi/runtime@1.2.0':
+ dependencies:
+ tslib: 2.6.3
+ optional: true
+
+ '@emnapi/wasi-threads@1.0.1':
+ dependencies:
+ tslib: 2.6.3
+ optional: true
+
+ '@esbuild/aix-ppc64@0.19.12':
+ optional: true
+
+ '@esbuild/aix-ppc64@0.21.5':
+ optional: true
+
+ '@esbuild/android-arm64@0.16.17':
+ optional: true
+
+ '@esbuild/android-arm64@0.19.12':
+ optional: true
+
+ '@esbuild/android-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/android-arm@0.16.17':
+ optional: true
+
+ '@esbuild/android-arm@0.19.12':
+ optional: true
+
+ '@esbuild/android-arm@0.21.5':
+ optional: true
+
+ '@esbuild/android-x64@0.16.17':
+ optional: true
+
+ '@esbuild/android-x64@0.19.12':
+ optional: true
+
+ '@esbuild/android-x64@0.21.5':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.16.17':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.19.12':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/darwin-x64@0.16.17':
+ optional: true
+
+ '@esbuild/darwin-x64@0.19.12':
+ optional: true
+
+ '@esbuild/darwin-x64@0.21.5':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.16.17':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.19.12':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.16.17':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.19.12':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-arm64@0.16.17':
+ optional: true
+
+ '@esbuild/linux-arm64@0.19.12':
+ optional: true
+
+ '@esbuild/linux-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-arm@0.16.17':
+ optional: true
+
+ '@esbuild/linux-arm@0.19.12':
+ optional: true
+
+ '@esbuild/linux-arm@0.21.5':
+ optional: true
+
+ '@esbuild/linux-ia32@0.16.17':
+ optional: true
+
+ '@esbuild/linux-ia32@0.19.12':
+ optional: true
+
+ '@esbuild/linux-ia32@0.21.5':
+ optional: true
+
+ '@esbuild/linux-loong64@0.16.17':
+ optional: true
+
+ '@esbuild/linux-loong64@0.19.12':
+ optional: true
+
+ '@esbuild/linux-loong64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.16.17':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.19.12':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.21.5':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.16.17':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.19.12':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.16.17':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.19.12':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-s390x@0.16.17':
+ optional: true
+
+ '@esbuild/linux-s390x@0.19.12':
+ optional: true
+
+ '@esbuild/linux-s390x@0.21.5':
+ optional: true
+
+ '@esbuild/linux-x64@0.16.17':
+ optional: true
+
+ '@esbuild/linux-x64@0.19.12':
+ optional: true
+
+ '@esbuild/linux-x64@0.21.5':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.16.17':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.19.12':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.21.5':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.16.17':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.19.12':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.21.5':
+ optional: true
+
+ '@esbuild/sunos-x64@0.16.17':
+ optional: true
+
+ '@esbuild/sunos-x64@0.19.12':
+ optional: true
+
+ '@esbuild/sunos-x64@0.21.5':
+ optional: true
+
+ '@esbuild/win32-arm64@0.16.17':
+ optional: true
+
+ '@esbuild/win32-arm64@0.19.12':
+ optional: true
+
+ '@esbuild/win32-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/win32-ia32@0.16.17':
+ optional: true
+
+ '@esbuild/win32-ia32@0.19.12':
+ optional: true
+
+ '@esbuild/win32-ia32@0.21.5':
+ optional: true
+
+ '@esbuild/win32-x64@0.16.17':
+ optional: true
+
+ '@esbuild/win32-x64@0.19.12':
+ optional: true
+
+ '@esbuild/win32-x64@0.21.5':
+ optional: true
+
+ '@fastify/ajv-compiler@3.6.0':
+ dependencies:
+ ajv: 8.17.1
+ ajv-formats: 2.1.1(ajv@8.17.1)
+ fast-uri: 2.4.0
+
+ '@fastify/error@3.4.1': {}
+
+ '@fastify/fast-json-stringify-compiler@4.3.0':
+ dependencies:
+ fast-json-stringify: 5.16.1
+
+ '@fastify/merge-json-schemas@0.1.1':
+ dependencies:
+ fast-deep-equal: 3.1.3
+
+ '@hono/node-server@1.12.0': {}
+
+ '@hutson/parse-repository-url@5.0.0': {}
+
+ '@img/sharp-darwin-arm64@0.33.4':
+ optionalDependencies:
+ '@img/sharp-libvips-darwin-arm64': 1.0.2
+ optional: true
+
+ '@img/sharp-darwin-x64@0.33.4':
+ optionalDependencies:
+ '@img/sharp-libvips-darwin-x64': 1.0.2
+ optional: true
+
+ '@img/sharp-libvips-darwin-arm64@1.0.2':
+ optional: true
+
+ '@img/sharp-libvips-darwin-x64@1.0.2':
+ optional: true
+
+ '@img/sharp-libvips-linux-arm64@1.0.2':
+ optional: true
+
+ '@img/sharp-libvips-linux-arm@1.0.2':
+ optional: true
+
+ '@img/sharp-libvips-linux-s390x@1.0.2':
+ optional: true
+
+ '@img/sharp-libvips-linux-x64@1.0.2':
+ optional: true
+
+ '@img/sharp-libvips-linuxmusl-arm64@1.0.2':
+ optional: true
+
+ '@img/sharp-libvips-linuxmusl-x64@1.0.2':
+ optional: true
+
+ '@img/sharp-linux-arm64@0.33.4':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-arm64': 1.0.2
+ optional: true
+
+ '@img/sharp-linux-arm@0.33.4':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-arm': 1.0.2
+ optional: true
+
+ '@img/sharp-linux-s390x@0.33.4':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-s390x': 1.0.2
+ optional: true
+
+ '@img/sharp-linux-x64@0.33.4':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-x64': 1.0.2
+ optional: true
+
+ '@img/sharp-linuxmusl-arm64@0.33.4':
+ optionalDependencies:
+ '@img/sharp-libvips-linuxmusl-arm64': 1.0.2
+ optional: true
+
+ '@img/sharp-linuxmusl-x64@0.33.4':
+ optionalDependencies:
+ '@img/sharp-libvips-linuxmusl-x64': 1.0.2
+ optional: true
+
+ '@img/sharp-wasm32@0.33.4':
+ dependencies:
+ '@emnapi/runtime': 1.2.0
+ optional: true
+
+ '@img/sharp-win32-ia32@0.33.4':
+ optional: true
+
+ '@img/sharp-win32-x64@0.33.4':
+ optional: true
+
+ '@jridgewell/gen-mapping@0.3.5':
+ dependencies:
+ '@jridgewell/set-array': 1.2.1
+ '@jridgewell/sourcemap-codec': 1.5.0
+ '@jridgewell/trace-mapping': 0.3.25
+
+ '@jridgewell/resolve-uri@3.1.2': {}
+
+ '@jridgewell/set-array@1.2.1': {}
+
+ '@jridgewell/sourcemap-codec@1.5.0': {}
+
+ '@jridgewell/trace-mapping@0.3.25':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.0
+
+ '@mapbox/node-pre-gyp@1.0.11':
+ dependencies:
+ detect-libc: 2.0.3
+ https-proxy-agent: 5.0.1
+ make-dir: 3.1.0
+ node-fetch: 2.7.0
+ nopt: 5.0.0
+ npmlog: 5.0.1
+ rimraf: 3.0.2
+ semver: 7.6.3
+ tar: 6.2.1
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+
+ '@napi-rs/wasm-runtime@0.2.4':
+ dependencies:
+ '@emnapi/core': 1.2.0
+ '@emnapi/runtime': 1.2.0
+ '@tybys/wasm-util': 0.9.0
+ optional: true
+
+ '@nitedani/shrink-ray-current@4.2.0':
+ dependencies:
+ accepts: 1.3.8
+ bytes: 3.1.2
+ compressible: 2.0.18
+ debug: 4.3.5
+ lru-cache: 8.0.5
+ multipipe: 4.0.0
+ on-headers: 1.0.2
+ stream-buffers: 3.0.3
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@node-rs/argon2-android-arm-eabi@1.8.3':
+ optional: true
+
+ '@node-rs/argon2-android-arm64@1.8.3':
+ optional: true
+
+ '@node-rs/argon2-darwin-arm64@1.8.3':
+ optional: true
+
+ '@node-rs/argon2-darwin-x64@1.8.3':
optional: true
- /@node-rs/argon2-freebsd-x64@1.8.0:
- resolution: {integrity: sha512-Do23O4WdZNx4/AapEHwJOeVC9YDYLgfu7HLHJ1+KUBEXTO+do92Gxxq+94bNB++gi01kiV53Es0+gMeLll8pzg==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [freebsd]
- requiresBuild: true
- dev: false
+ '@node-rs/argon2-freebsd-x64@1.8.3':
optional: true
- /@node-rs/argon2-linux-arm-gnueabihf@1.8.0:
- resolution: {integrity: sha512-6VZUl32udwmQrF9k3Bb0HQkMmygpffNnILV+DoS6W7hLDKa3RLA2W7jfLhnmnBIdv5yuGdHh7BEKmwga4Qn1+w==}
- engines: {node: '>= 10'}
- cpu: [arm]
- os: [linux]
- requiresBuild: true
- dev: false
+ '@node-rs/argon2-linux-arm-gnueabihf@1.8.3':
optional: true
- /@node-rs/argon2-linux-arm64-gnu@1.8.0:
- resolution: {integrity: sha512-5VdIp/tf0JanRuUBASKA0BisLnNgaLmb/445H1tOfwOaT7i3FbdHqK3abGdnn7YBk/D1qwJW30LfA+1IlqlaeA==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [linux]
- requiresBuild: true
- dev: false
+ '@node-rs/argon2-linux-arm64-gnu@1.8.3':
optional: true
- /@node-rs/argon2-linux-arm64-musl@1.8.0:
- resolution: {integrity: sha512-oC+EkUwz9hBtNTrTytmS9DpJMY91OCqb1f64PMkOOTIRr7l/KJ58SdeODbjuJwLrmzL9TeZueEkwcHsAfyKuBQ==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [linux]
- requiresBuild: true
- dev: false
+ '@node-rs/argon2-linux-arm64-musl@1.8.3':
optional: true
- /@node-rs/argon2-linux-x64-gnu@1.8.0:
- resolution: {integrity: sha512-eg+njxflQ7vi+4tmyt824jH7CKWJ5rfOUJi3UPnSDc0pUREi6jO4WvtG0GF2mSrqTYzxG7nHB97QRaivigq5vw==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [linux]
- requiresBuild: true
- dev: false
+ '@node-rs/argon2-linux-x64-gnu@1.8.3':
optional: true
- /@node-rs/argon2-linux-x64-musl@1.8.0:
- resolution: {integrity: sha512-sG7HYPv1xd/hdwKilL7W7Q3J4xK30PUZHxGnCGXMJDLS9JcFc9J+ZXjws9w1zpOWbPwvBUTi+vUPX04l1Wfycg==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [linux]
- requiresBuild: true
- dev: false
+ '@node-rs/argon2-linux-x64-musl@1.8.3':
optional: true
- /@node-rs/argon2-wasm32-wasi@1.8.0:
- resolution: {integrity: sha512-HOGJggYbvzW7sXIASO0jWBrNFxYVTL52+LY3tFFInjLmt0cP0s+gPCFq0/qwA+2lpAMkz8TdAIhwVo0A/A6g0A==}
- engines: {node: '>=14.0.0'}
- cpu: [wasm32]
- requiresBuild: true
+ '@node-rs/argon2-wasm32-wasi@1.8.3':
dependencies:
- '@napi-rs/wasm-runtime': 0.1.2
- dev: false
+ '@napi-rs/wasm-runtime': 0.2.4
optional: true
- /@node-rs/argon2-win32-arm64-msvc@1.8.0:
- resolution: {integrity: sha512-L6bUNT+CBAuvRnDU1j8hi0lrgWVYIjeFFI9B5E3OVdgnuk+i6F8VmifgMfXm2JDCPstW8HN6WjLg7twGSkSUuA==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [win32]
- requiresBuild: true
- dev: false
+ '@node-rs/argon2-win32-arm64-msvc@1.8.3':
optional: true
- /@node-rs/argon2-win32-ia32-msvc@1.8.0:
- resolution: {integrity: sha512-oLKs8wFoHG49W2Nnhuvy297MRwdEYplqdJQuOPrscl87SiYeHe3EeA7E4sZcRtFUnEjd7FqR+lc81TZcLuVcFQ==}
- engines: {node: '>= 10'}
- cpu: [ia32]
- os: [win32]
- requiresBuild: true
- dev: false
+ '@node-rs/argon2-win32-ia32-msvc@1.8.3':
optional: true
- /@node-rs/argon2-win32-x64-msvc@1.8.0:
- resolution: {integrity: sha512-iwcfTlZQF988F+3QHcd/Ad13TmPmQDEzY4yd7QxzvUysex+O+6MMtKzTZH1K96TF/y7Dft7PfJudBgACYKCv9A==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [win32]
- requiresBuild: true
- dev: false
+ '@node-rs/argon2-win32-x64-msvc@1.8.3':
optional: true
- /@node-rs/argon2@1.8.0:
- resolution: {integrity: sha512-dCllr5+l+a2GWfCfUmWKUBSQbgDg5N2BoB5iXu29gXtSLRNm5tkpVKV4w/cU8C3FSGLHCJapzHOnsgm1oxsxrg==}
- engines: {node: '>= 10'}
+ '@node-rs/argon2@1.8.3':
optionalDependencies:
- '@node-rs/argon2-android-arm-eabi': 1.8.0
- '@node-rs/argon2-android-arm64': 1.8.0
- '@node-rs/argon2-darwin-arm64': 1.8.0
- '@node-rs/argon2-darwin-x64': 1.8.0
- '@node-rs/argon2-freebsd-x64': 1.8.0
- '@node-rs/argon2-linux-arm-gnueabihf': 1.8.0
- '@node-rs/argon2-linux-arm64-gnu': 1.8.0
- '@node-rs/argon2-linux-arm64-musl': 1.8.0
- '@node-rs/argon2-linux-x64-gnu': 1.8.0
- '@node-rs/argon2-linux-x64-musl': 1.8.0
- '@node-rs/argon2-wasm32-wasi': 1.8.0
- '@node-rs/argon2-win32-arm64-msvc': 1.8.0
- '@node-rs/argon2-win32-ia32-msvc': 1.8.0
- '@node-rs/argon2-win32-x64-msvc': 1.8.0
- dev: false
-
- /@nodelib/fs.scandir@2.1.5:
- resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
- engines: {node: '>= 8'}
+ '@node-rs/argon2-android-arm-eabi': 1.8.3
+ '@node-rs/argon2-android-arm64': 1.8.3
+ '@node-rs/argon2-darwin-arm64': 1.8.3
+ '@node-rs/argon2-darwin-x64': 1.8.3
+ '@node-rs/argon2-freebsd-x64': 1.8.3
+ '@node-rs/argon2-linux-arm-gnueabihf': 1.8.3
+ '@node-rs/argon2-linux-arm64-gnu': 1.8.3
+ '@node-rs/argon2-linux-arm64-musl': 1.8.3
+ '@node-rs/argon2-linux-x64-gnu': 1.8.3
+ '@node-rs/argon2-linux-x64-musl': 1.8.3
+ '@node-rs/argon2-wasm32-wasi': 1.8.3
+ '@node-rs/argon2-win32-arm64-msvc': 1.8.3
+ '@node-rs/argon2-win32-ia32-msvc': 1.8.3
+ '@node-rs/argon2-win32-x64-msvc': 1.8.3
+
+ '@nodelib/fs.scandir@2.1.5':
dependencies:
'@nodelib/fs.stat': 2.0.5
run-parallel: 1.2.0
- /@nodelib/fs.stat@2.0.5:
- resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
- engines: {node: '>= 8'}
+ '@nodelib/fs.stat@2.0.5': {}
- /@nodelib/fs.walk@1.2.8:
- resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
- engines: {node: '>= 8'}
+ '@nodelib/fs.walk@1.2.8':
dependencies:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.17.1
- /@polka/url@1.0.0-next.25:
- resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==}
+ '@polka/url@1.0.0-next.25': {}
- /@prisma/client@5.11.0(prisma@5.11.0):
- resolution: {integrity: sha512-SWshvS5FDXvgJKM/a0y9nDC1rqd7KG0Q6ZVzd+U7ZXK5soe73DJxJJgbNBt2GNXOa+ysWB4suTpdK5zfFPhwiw==}
- engines: {node: '>=16.13'}
- requiresBuild: true
- peerDependencies:
- prisma: '*'
- peerDependenciesMeta:
- prisma:
- optional: true
- dependencies:
- prisma: 5.11.0
- dev: false
+ '@prisma/client@5.17.0(prisma@5.17.0)':
+ optionalDependencies:
+ prisma: 5.17.0
- /@prisma/debug@5.11.0:
- resolution: {integrity: sha512-N6yYr3AbQqaiUg+OgjkdPp3KPW1vMTAgtKX6+BiB/qB2i1TjLYCrweKcUjzOoRM5BriA4idrkTej9A9QqTfl3A==}
- dev: false
+ '@prisma/debug@5.17.0': {}
- /@prisma/engines-version@5.11.0-15.efd2449663b3d73d637ea1fd226bafbcf45b3102:
- resolution: {integrity: sha512-WXCuyoymvrS4zLz4wQagSsc3/nE6CHy8znyiMv8RKazKymOMd5o9FP5RGwGHAtgoxd+aB/BWqxuP/Ckfu7/3MA==}
- dev: false
+ '@prisma/engines-version@5.17.0-31.393aa359c9ad4a4bb28630fb5613f9c281cde053': {}
- /@prisma/engines@5.11.0:
- resolution: {integrity: sha512-gbrpQoBTYWXDRqD+iTYMirDlF9MMlQdxskQXbhARhG6A/uFQjB7DZMYocMQLoiZXO/IskfDOZpPoZE8TBQKtEw==}
- requiresBuild: true
+ '@prisma/engines@5.17.0':
dependencies:
- '@prisma/debug': 5.11.0
- '@prisma/engines-version': 5.11.0-15.efd2449663b3d73d637ea1fd226bafbcf45b3102
- '@prisma/fetch-engine': 5.11.0
- '@prisma/get-platform': 5.11.0
- dev: false
+ '@prisma/debug': 5.17.0
+ '@prisma/engines-version': 5.17.0-31.393aa359c9ad4a4bb28630fb5613f9c281cde053
+ '@prisma/fetch-engine': 5.17.0
+ '@prisma/get-platform': 5.17.0
- /@prisma/fetch-engine@5.11.0:
- resolution: {integrity: sha512-994viazmHTJ1ymzvWugXod7dZ42T2ROeFuH6zHPcUfp/69+6cl5r9u3NFb6bW8lLdNjwLYEVPeu3hWzxpZeC0w==}
+ '@prisma/fetch-engine@5.17.0':
dependencies:
- '@prisma/debug': 5.11.0
- '@prisma/engines-version': 5.11.0-15.efd2449663b3d73d637ea1fd226bafbcf45b3102
- '@prisma/get-platform': 5.11.0
- dev: false
+ '@prisma/debug': 5.17.0
+ '@prisma/engines-version': 5.17.0-31.393aa359c9ad4a4bb28630fb5613f9c281cde053
+ '@prisma/get-platform': 5.17.0
- /@prisma/get-platform@5.11.0:
- resolution: {integrity: sha512-rxtHpMLxNTHxqWuGOLzR2QOyQi79rK1u1XYAVLZxDGTLz/A+uoDnjz9veBFlicrpWjwuieM4N6jcnjj/DDoidw==}
+ '@prisma/get-platform@5.17.0':
dependencies:
- '@prisma/debug': 5.11.0
- dev: false
+ '@prisma/debug': 5.17.0
- /@rollup/pluginutils@4.2.1:
- resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==}
- engines: {node: '>= 8.0.0'}
+ '@rollup/pluginutils@4.2.1':
dependencies:
estree-walker: 2.0.2
picomatch: 2.3.1
- dev: false
- /@rollup/rollup-android-arm-eabi@4.13.1:
- resolution: {integrity: sha512-4C4UERETjXpC4WpBXDbkgNVgHyWfG3B/NKY46e7w5H134UDOFqUJKpsLm0UYmuupW+aJmRgeScrDNfvZ5WV80A==}
- cpu: [arm]
- os: [android]
- requiresBuild: true
+ '@rollup/rollup-android-arm-eabi@4.19.0':
optional: true
- /@rollup/rollup-android-arm64@4.13.1:
- resolution: {integrity: sha512-TrTaFJ9pXgfXEiJKQ3yQRelpQFqgRzVR9it8DbeRzG0RX7mKUy0bqhCFsgevwXLJepQKTnLl95TnPGf9T9AMOA==}
- cpu: [arm64]
- os: [android]
- requiresBuild: true
+ '@rollup/rollup-android-arm64@4.19.0':
optional: true
- /@rollup/rollup-darwin-arm64@4.13.1:
- resolution: {integrity: sha512-fz7jN6ahTI3cKzDO2otQuybts5cyu0feymg0bjvYCBrZQ8tSgE8pc0sSNEuGvifrQJWiwx9F05BowihmLxeQKw==}
- cpu: [arm64]
- os: [darwin]
- requiresBuild: true
+ '@rollup/rollup-darwin-arm64@4.19.0':
optional: true
- /@rollup/rollup-darwin-x64@4.13.1:
- resolution: {integrity: sha512-WTvdz7SLMlJpektdrnWRUN9C0N2qNHwNbWpNo0a3Tod3gb9leX+yrYdCeB7VV36OtoyiPAivl7/xZ3G1z5h20g==}
- cpu: [x64]
- os: [darwin]
- requiresBuild: true
+ '@rollup/rollup-darwin-x64@4.19.0':
optional: true
- /@rollup/rollup-linux-arm-gnueabihf@4.13.1:
- resolution: {integrity: sha512-dBHQl+7wZzBYcIF6o4k2XkAfwP2ks1mYW2q/Gzv9n39uDcDiAGDqEyml08OdY0BIct0yLSPkDTqn4i6czpBLLw==}
- cpu: [arm]
- os: [linux]
- requiresBuild: true
+ '@rollup/rollup-linux-arm-gnueabihf@4.19.0':
optional: true
- /@rollup/rollup-linux-arm64-gnu@4.13.1:
- resolution: {integrity: sha512-bur4JOxvYxfrAmocRJIW0SADs3QdEYK6TQ7dTNz6Z4/lySeu3Z1H/+tl0a4qDYv0bCdBpUYM0sYa/X+9ZqgfSQ==}
- cpu: [arm64]
- os: [linux]
- requiresBuild: true
+ '@rollup/rollup-linux-arm-musleabihf@4.19.0':
optional: true
- /@rollup/rollup-linux-arm64-musl@4.13.1:
- resolution: {integrity: sha512-ssp77SjcDIUSoUyj7DU7/5iwM4ZEluY+N8umtCT9nBRs3u045t0KkW02LTyHouHDomnMXaXSZcCSr2bdMK63kA==}
- cpu: [arm64]
- os: [linux]
- requiresBuild: true
+ '@rollup/rollup-linux-arm64-gnu@4.19.0':
optional: true
- /@rollup/rollup-linux-riscv64-gnu@4.13.1:
- resolution: {integrity: sha512-Jv1DkIvwEPAb+v25/Unrnnq9BO3F5cbFPT821n3S5litkz+O5NuXuNhqtPx5KtcwOTtaqkTsO+IVzJOsxd11aQ==}
- cpu: [riscv64]
- os: [linux]
- requiresBuild: true
+ '@rollup/rollup-linux-arm64-musl@4.19.0':
optional: true
- /@rollup/rollup-linux-s390x-gnu@4.13.1:
- resolution: {integrity: sha512-U564BrhEfaNChdATQaEODtquCC7Ez+8Hxz1h5MAdMYj0AqD0GA9rHCpElajb/sQcaFL6NXmHc5O+7FXpWMa73Q==}
- cpu: [s390x]
- os: [linux]
- requiresBuild: true
+ '@rollup/rollup-linux-powerpc64le-gnu@4.19.0':
optional: true
- /@rollup/rollup-linux-x64-gnu@4.13.1:
- resolution: {integrity: sha512-zGRDulLTeDemR8DFYyFIQ8kMP02xpUsX4IBikc7lwL9PrwR3gWmX2NopqiGlI2ZVWMl15qZeUjumTwpv18N7sQ==}
- cpu: [x64]
- os: [linux]
- requiresBuild: true
+ '@rollup/rollup-linux-riscv64-gnu@4.19.0':
optional: true
- /@rollup/rollup-linux-x64-musl@4.13.1:
- resolution: {integrity: sha512-VTk/MveyPdMFkYJJPCkYBw07KcTkGU2hLEyqYMsU4NjiOfzoaDTW9PWGRsNwiOA3qI0k/JQPjkl/4FCK1smskQ==}
- cpu: [x64]
- os: [linux]
- requiresBuild: true
+ '@rollup/rollup-linux-s390x-gnu@4.19.0':
optional: true
- /@rollup/rollup-win32-arm64-msvc@4.13.1:
- resolution: {integrity: sha512-L+hX8Dtibb02r/OYCsp4sQQIi3ldZkFI0EUkMTDwRfFykXBPptoz/tuuGqEd3bThBSLRWPR6wsixDSgOx/U3Zw==}
- cpu: [arm64]
- os: [win32]
- requiresBuild: true
+ '@rollup/rollup-linux-x64-gnu@4.19.0':
optional: true
- /@rollup/rollup-win32-ia32-msvc@4.13.1:
- resolution: {integrity: sha512-+dI2jVPfM5A8zme8riEoNC7UKk0Lzc7jCj/U89cQIrOjrZTCWZl/+IXUeRT2rEZ5j25lnSA9G9H1Ob9azaF/KQ==}
- cpu: [ia32]
- os: [win32]
- requiresBuild: true
+ '@rollup/rollup-linux-x64-musl@4.19.0':
optional: true
- /@rollup/rollup-win32-x64-msvc@4.13.1:
- resolution: {integrity: sha512-YY1Exxo2viZ/O2dMHuwQvimJ0SqvL+OAWQLLY6rvXavgQKjhQUzn7nc1Dd29gjB5Fqi00nrBWctJBOyfVMIVxw==}
- cpu: [x64]
- os: [win32]
- requiresBuild: true
+ '@rollup/rollup-win32-arm64-msvc@4.19.0':
optional: true
- /@ts-morph/common@0.20.0:
- resolution: {integrity: sha512-7uKjByfbPpwuzkstL3L5MQyuXPSKdoNG93Fmi2JoDcTf3pEP731JdRFAduRVkOs8oqxPsXKA+ScrWkdQ8t/I+Q==}
+ '@rollup/rollup-win32-ia32-msvc@4.19.0':
+ optional: true
+
+ '@rollup/rollup-win32-x64-msvc@4.19.0':
+ optional: true
+
+ '@ts-morph/common@0.20.0':
dependencies:
fast-glob: 3.3.2
minimatch: 7.4.6
mkdirp: 2.1.6
path-browserify: 1.0.1
- dev: false
- /@tybys/wasm-util@0.8.1:
- resolution: {integrity: sha512-GSsTwyBl4pIzsxAY5wroZdyQKyhXk0d8PCRZtrSZ2WEB1cBdrp2EgGBwHOGCZtIIPun/DL3+AykCv+J6fyRH4Q==}
- requiresBuild: true
+ '@tybys/wasm-util@0.9.0':
dependencies:
- tslib: 2.6.2
- dev: false
+ tslib: 2.6.3
optional: true
- /@types/babel__core@7.20.5:
- resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
+ '@types/babel__core@7.20.5':
dependencies:
- '@babel/parser': 7.24.1
- '@babel/types': 7.24.0
+ '@babel/parser': 7.24.8
+ '@babel/types': 7.24.9
'@types/babel__generator': 7.6.8
'@types/babel__template': 7.4.4
- '@types/babel__traverse': 7.20.5
- dev: false
+ '@types/babel__traverse': 7.20.6
- /@types/babel__generator@7.6.8:
- resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==}
+ '@types/babel__generator@7.6.8':
dependencies:
- '@babel/types': 7.24.0
- dev: false
+ '@babel/types': 7.24.9
- /@types/babel__template@7.4.4:
- resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
+ '@types/babel__template@7.4.4':
dependencies:
- '@babel/parser': 7.24.1
- '@babel/types': 7.24.0
- dev: false
+ '@babel/parser': 7.24.8
+ '@babel/types': 7.24.9
- /@types/babel__traverse@7.20.5:
- resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==}
+ '@types/babel__traverse@7.20.6':
dependencies:
- '@babel/types': 7.24.0
- dev: false
+ '@babel/types': 7.24.9
- /@types/body-parser@1.19.5:
- resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==}
+ '@types/body-parser@1.19.5':
dependencies:
'@types/connect': 3.4.38
- '@types/node': 20.11.30
- dev: false
+ '@types/node': 20.14.12
- /@types/connect@3.4.38:
- resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==}
+ '@types/connect@3.4.38':
dependencies:
- '@types/node': 20.11.30
- dev: false
+ '@types/node': 20.14.12
- /@types/estree@1.0.5:
- resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
+ '@types/estree@1.0.5': {}
- /@types/express-serve-static-core@4.17.43:
- resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==}
+ '@types/express-serve-static-core@4.19.5':
dependencies:
- '@types/node': 20.11.30
- '@types/qs': 6.9.14
+ '@types/node': 20.14.12
+ '@types/qs': 6.9.15
'@types/range-parser': 1.2.7
'@types/send': 0.17.4
- dev: false
- /@types/express@4.17.21:
- resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==}
+ '@types/express@4.17.21':
dependencies:
'@types/body-parser': 1.19.5
- '@types/express-serve-static-core': 4.17.43
- '@types/qs': 6.9.14
- '@types/serve-static': 1.15.5
- dev: false
-
- /@types/http-errors@2.0.4:
- resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==}
- dev: false
+ '@types/express-serve-static-core': 4.19.5
+ '@types/qs': 6.9.15
+ '@types/serve-static': 1.15.7
- /@types/mime@1.3.5:
- resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==}
- dev: false
+ '@types/http-errors@2.0.4': {}
- /@types/mime@3.0.4:
- resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==}
- dev: false
+ '@types/mime@1.3.5': {}
- /@types/node@20.11.30:
- resolution: {integrity: sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==}
+ '@types/node@20.14.12':
dependencies:
undici-types: 5.26.5
- /@types/normalize-package-data@2.4.4:
- resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
- dev: true
+ '@types/normalize-package-data@2.4.4': {}
- /@types/prop-types@15.7.12:
- resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==}
- dev: false
+ '@types/prop-types@15.7.12': {}
- /@types/qs@6.9.14:
- resolution: {integrity: sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA==}
- dev: false
+ '@types/qs@6.9.15': {}
- /@types/range-parser@1.2.7:
- resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==}
- dev: false
+ '@types/range-parser@1.2.7': {}
- /@types/react-dom@18.2.22:
- resolution: {integrity: sha512-fHkBXPeNtfvri6gdsMYyW+dW7RXFo6Ad09nLFK0VQWR7yGLai/Cyvyj696gbwYvBnhGtevUG9cET0pmUbMtoPQ==}
+ '@types/react-dom@18.3.0':
dependencies:
- '@types/react': 18.2.73
- dev: false
+ '@types/react': 18.3.3
- /@types/react@18.2.73:
- resolution: {integrity: sha512-XcGdod0Jjv84HOC7N5ziY3x+qL0AfmubvKOZ9hJjJ2yd5EE+KYjWhdOjt387e9HPheHkdggF9atTifMRtyAaRA==}
+ '@types/react@18.3.3':
dependencies:
'@types/prop-types': 15.7.12
csstype: 3.1.3
- dev: false
- /@types/send@0.17.4:
- resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==}
+ '@types/send@0.17.4':
dependencies:
'@types/mime': 1.3.5
- '@types/node': 20.11.30
- dev: false
+ '@types/node': 20.14.12
- /@types/serve-static@1.15.5:
- resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==}
+ '@types/serve-static@1.15.7':
dependencies:
'@types/http-errors': 2.0.4
- '@types/mime': 3.0.4
- '@types/node': 20.11.30
- dev: false
+ '@types/node': 20.14.12
+ '@types/send': 0.17.4
- /@vercel/nft@0.26.4:
- resolution: {integrity: sha512-j4jCOOXke2t8cHZCIxu1dzKLHLcFmYzC3yqAK6MfZznOL1QIJKd0xcFsXK3zcqzU7ScsE2zWkiMMNHGMHgp+FA==}
- engines: {node: '>=16'}
- hasBin: true
+ '@vercel/nft@0.26.5':
dependencies:
'@mapbox/node-pre-gyp': 1.0.11
'@rollup/pluginutils': 4.2.1
- acorn: 8.11.3
- acorn-import-attributes: 1.9.4(acorn@8.11.3)
+ acorn: 8.12.1
+ acorn-import-attributes: 1.9.5(acorn@8.12.1)
async-sema: 3.1.1
bindings: 1.5.0
estree-walker: 2.0.2
glob: 7.2.3
graceful-fs: 4.2.11
- micromatch: 4.0.5
- node-gyp-build: 4.8.0
+ micromatch: 4.0.7
+ node-gyp-build: 4.8.1
resolve-from: 5.0.0
transitivePeerDependencies:
- encoding
- supports-color
- dev: false
- /@vitejs/plugin-react@4.2.1(vite@6.0.0-alpha.11):
- resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==}
- engines: {node: ^14.18.0 || >=16.0.0}
- peerDependencies:
- vite: 6.0.0-alpha.11
+ '@vitejs/plugin-react@4.3.1(vite@5.3.5(@types/node@20.14.12))':
dependencies:
- '@babel/core': 7.24.3
- '@babel/plugin-transform-react-jsx-self': 7.24.1(@babel/core@7.24.3)
- '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.3)
+ '@babel/core': 7.24.9
+ '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.24.9)
+ '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.24.9)
'@types/babel__core': 7.20.5
- react-refresh: 0.14.0
- vite: 6.0.0-alpha.11(@types/node@20.11.30)
+ react-refresh: 0.14.2
+ vite: 5.3.5(@types/node@20.14.12)
transitivePeerDependencies:
- supports-color
- dev: false
-
- /@whatwg-node/events@0.1.1:
- resolution: {integrity: sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==}
- engines: {node: '>=16.0.0'}
- dev: false
-
- /@whatwg-node/fetch@0.9.17:
- resolution: {integrity: sha512-TDYP3CpCrxwxpiNY0UMNf096H5Ihf67BK1iKGegQl5u9SlpEDYrvnV71gWBGJm+Xm31qOy8ATgma9rm8Pe7/5Q==}
- engines: {node: '>=16.0.0'}
- dependencies:
- '@whatwg-node/node-fetch': 0.5.10
- urlpattern-polyfill: 10.0.0
- dev: false
- /@whatwg-node/node-fetch@0.5.10:
- resolution: {integrity: sha512-KIAHepie/T1PRkUfze4t+bPlyvpxlWiXTPtcGlbIZ0vWkBJMdRmCg4ZrJ2y4XaO1eTPo1HlWYUuj1WvoIpumqg==}
- engines: {node: '>=16.0.0'}
- dependencies:
- '@kamilkisiela/fast-url-parser': 1.1.4
- '@whatwg-node/events': 0.1.1
- busboy: 1.6.0
- fast-querystring: 1.1.2
- tslib: 2.6.2
- dev: false
-
- /JSONStream@1.3.5:
- resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
- hasBin: true
+ JSONStream@1.3.5:
dependencies:
jsonparse: 1.3.1
through: 2.3.8
- dev: true
- /abbrev@1.1.1:
- resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
- dev: false
+ abbrev@1.1.1: {}
- /abort-controller@3.0.0:
- resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
- engines: {node: '>=6.5'}
+ abort-controller@3.0.0:
dependencies:
event-target-shim: 5.0.1
- /abstract-logging@2.0.1:
- resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==}
+ abstract-logging@2.0.1: {}
- /accepts@1.3.8:
- resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
- engines: {node: '>= 0.6'}
+ accepts@1.3.8:
dependencies:
mime-types: 2.1.35
negotiator: 0.6.3
- dev: false
- /acorn-import-attributes@1.9.4(acorn@8.11.3):
- resolution: {integrity: sha512-dNIX/5UEnZvVL94dV2scl4VIooK36D8AteP4xiz7cPKhDbhLhSuWkzG580g+Q7TXJklp+Z21SiaK7/HpLO84Qg==}
- peerDependencies:
- acorn: ^8
+ acorn-import-attributes@1.9.5(acorn@8.12.1):
dependencies:
- acorn: 8.11.3
- dev: false
+ acorn: 8.12.1
- /acorn@8.11.3:
- resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
- engines: {node: '>=0.4.0'}
- hasBin: true
+ acorn@8.12.1: {}
- /add-stream@1.0.0:
- resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==}
- dev: true
+ add-stream@1.0.0: {}
- /agent-base@6.0.2:
- resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
- engines: {node: '>= 6.0.0'}
+ agent-base@6.0.2:
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
transitivePeerDependencies:
- supports-color
- dev: false
- /ajv-formats@2.1.1(ajv@8.12.0):
- resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==}
- peerDependencies:
- ajv: ^8.0.0
- peerDependenciesMeta:
- ajv:
- optional: true
- dependencies:
- ajv: 8.12.0
+ ajv-formats@2.1.1(ajv@8.17.1):
+ optionalDependencies:
+ ajv: 8.17.1
+
+ ajv-formats@3.0.1(ajv@8.17.1):
+ optionalDependencies:
+ ajv: 8.17.1
- /ajv@8.12.0:
- resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==}
+ ajv@8.17.1:
dependencies:
fast-deep-equal: 3.1.3
+ fast-uri: 3.0.1
json-schema-traverse: 1.0.0
require-from-string: 2.0.2
- uri-js: 4.4.1
- /ansi-regex@5.0.1:
- resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
- engines: {node: '>=8'}
- dev: false
+ ansi-regex@5.0.1: {}
- /ansi-styles@3.2.1:
- resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
- engines: {node: '>=4'}
+ ansi-styles@3.2.1:
dependencies:
color-convert: 1.9.3
- /aproba@2.0.0:
- resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==}
- dev: false
-
- /archy@1.0.0:
- resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==}
+ aproba@2.0.0: {}
- /are-we-there-yet@2.0.0:
- resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==}
- engines: {node: '>=10'}
+ are-we-there-yet@2.0.0:
dependencies:
delegates: 1.0.0
readable-stream: 3.6.2
- dev: false
- /argparse@2.0.1:
- resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
- dev: true
+ array-flatten@1.1.1: {}
- /array-flatten@1.1.1:
- resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
- dev: false
+ array-ify@1.0.0: {}
- /array-ify@1.0.0:
- resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==}
- dev: true
+ assertion-error@1.1.0: {}
- /async-sema@3.1.1:
- resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==}
- dev: false
+ async-sema@3.1.1: {}
- /atomic-sleep@1.0.0:
- resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==}
- engines: {node: '>=8.0.0'}
+ atomic-sleep@1.0.0: {}
- /avvio@8.3.0:
- resolution: {integrity: sha512-VBVH0jubFr9LdFASy/vNtm5giTrnbVquWBhT0fyizuNK2rQ7e7ONU2plZQWUNqtE1EmxFEb+kbSkFRkstiaS9Q==}
+ avvio@8.3.2:
dependencies:
'@fastify/error': 3.4.1
- archy: 1.0.0
- debug: 4.3.4
fastq: 1.17.1
- transitivePeerDependencies:
- - supports-color
- /balanced-match@1.0.2:
- resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
- dev: false
+ balanced-match@1.0.2: {}
- /base64-js@1.5.1:
- resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+ base64-js@1.5.1: {}
- /bindings@1.5.0:
- resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
+ bindings@1.5.0:
dependencies:
file-uri-to-path: 1.0.0
- dev: false
-
- /birpc@0.2.17:
- resolution: {integrity: sha512-+hkTxhot+dWsLpp3gia5AkVHIsKlZybNT5gIYiDlNzJrmYPcTM9k5/w2uaj3IPpd7LlEYpmCj4Jj1nC41VhDFg==}
- dev: false
- /body-parser@1.20.2:
- resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==}
- engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+ body-parser@1.20.2:
dependencies:
bytes: 3.1.2
content-type: 1.0.5
@@ -1801,200 +3556,130 @@ packages:
unpipe: 1.0.0
transitivePeerDependencies:
- supports-color
- dev: false
- /brace-expansion@1.1.11:
- resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+ brace-expansion@1.1.11:
dependencies:
balanced-match: 1.0.2
concat-map: 0.0.1
- dev: false
- /brace-expansion@2.0.1:
- resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+ brace-expansion@2.0.1:
dependencies:
balanced-match: 1.0.2
- dev: false
- /braces@3.0.2:
- resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
- engines: {node: '>=8'}
+ braces@3.0.3:
dependencies:
- fill-range: 7.0.1
+ fill-range: 7.1.1
- /browserslist@4.23.0:
- resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==}
- engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
- hasBin: true
+ browserslist@4.23.2:
dependencies:
- caniuse-lite: 1.0.30001600
- electron-to-chromium: 1.4.718
- node-releases: 2.0.14
- update-browserslist-db: 1.0.13(browserslist@4.23.0)
- dev: false
+ caniuse-lite: 1.0.30001643
+ electron-to-chromium: 1.5.2
+ node-releases: 2.0.18
+ update-browserslist-db: 1.1.0(browserslist@4.23.2)
- /buffer-from@1.1.2:
- resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+ buffer-from@1.1.2: {}
- /buffer@6.0.3:
- resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
+ buffer@6.0.3:
dependencies:
base64-js: 1.5.1
ieee754: 1.2.1
- /busboy@1.6.0:
- resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
- engines: {node: '>=10.16.0'}
- dependencies:
- streamsearch: 1.1.0
- dev: false
-
- /bytes@3.1.2:
- resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
- engines: {node: '>= 0.8'}
- dev: false
+ bytes@3.1.2: {}
- /cac@6.7.14:
- resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
- engines: {node: '>=8'}
+ cac@6.7.14: {}
- /call-bind@1.0.7:
- resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
- engines: {node: '>= 0.4'}
+ call-bind@1.0.7:
dependencies:
es-define-property: 1.0.0
es-errors: 1.3.0
function-bind: 1.1.2
get-intrinsic: 1.2.4
set-function-length: 1.2.2
- dev: false
- /caniuse-lite@1.0.30001600:
- resolution: {integrity: sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==}
- dev: false
+ caniuse-lite@1.0.30001643: {}
- /chalk@2.4.2:
- resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
- engines: {node: '>=4'}
+ chai@4.5.0:
+ dependencies:
+ assertion-error: 1.1.0
+ check-error: 1.0.3
+ deep-eql: 4.1.4
+ get-func-name: 2.0.2
+ loupe: 2.3.7
+ pathval: 1.1.1
+ type-detect: 4.1.0
+
+ chalk@2.4.2:
dependencies:
ansi-styles: 3.2.1
escape-string-regexp: 1.0.5
supports-color: 5.5.0
- /chownr@2.0.0:
- resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
- engines: {node: '>=10'}
- dev: false
+ check-error@1.0.3:
+ dependencies:
+ get-func-name: 2.0.2
- /code-block-writer@12.0.0:
- resolution: {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==}
- dev: false
+ chownr@2.0.0: {}
- /color-convert@1.9.3:
- resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
+ code-block-writer@12.0.0: {}
+
+ color-convert@1.9.3:
dependencies:
color-name: 1.1.3
- /color-convert@2.0.1:
- resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
- engines: {node: '>=7.0.0'}
+ color-convert@2.0.1:
dependencies:
color-name: 1.1.4
- dev: false
- /color-name@1.1.3:
- resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
+ color-name@1.1.3: {}
- /color-name@1.1.4:
- resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
- dev: false
+ color-name@1.1.4: {}
- /color-string@1.9.1:
- resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
+ color-string@1.9.1:
dependencies:
- color-name: 1.1.4
+ color-name: 1.1.3
simple-swizzle: 0.2.2
- dev: false
- /color-support@1.1.3:
- resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==}
- hasBin: true
- dev: false
+ color-support@1.1.3: {}
- /color@4.2.3:
- resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
- engines: {node: '>=12.5.0'}
+ color@4.2.3:
dependencies:
color-convert: 2.0.1
color-string: 1.9.1
- dev: false
- /commander@11.1.0:
- resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==}
- engines: {node: '>=16'}
- dev: true
+ commander@11.1.0: {}
- /compare-func@2.0.0:
- resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==}
+ compare-func@2.0.0:
dependencies:
array-ify: 1.0.0
dot-prop: 5.3.0
- dev: true
- /compressible@2.0.18:
- resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==}
- engines: {node: '>= 0.6'}
+ compressible@2.0.18:
dependencies:
- mime-db: 1.52.0
- dev: false
+ mime-db: 1.53.0
- /concat-map@0.0.1:
- resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
- dev: false
+ concat-map@0.0.1: {}
- /console-control-strings@1.1.0:
- resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
- dev: false
+ console-control-strings@1.1.0: {}
- /content-disposition@0.5.4:
- resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
- engines: {node: '>= 0.6'}
+ content-disposition@0.5.4:
dependencies:
safe-buffer: 5.2.1
- dev: false
- /content-type@1.0.5:
- resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
- engines: {node: '>= 0.6'}
- dev: false
+ content-type@1.0.5: {}
- /conventional-changelog-angular@7.0.0:
- resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==}
- engines: {node: '>=16'}
+ conventional-changelog-angular@7.0.0:
dependencies:
compare-func: 2.0.0
- dev: true
- /conventional-changelog-atom@4.0.0:
- resolution: {integrity: sha512-q2YtiN7rnT1TGwPTwjjBSIPIzDJCRE+XAUahWxnh+buKK99Kks4WLMHoexw38GXx9OUxAsrp44f9qXe5VEMYhw==}
- engines: {node: '>=16'}
- dev: true
+ conventional-changelog-atom@4.0.0: {}
- /conventional-changelog-codemirror@4.0.0:
- resolution: {integrity: sha512-hQSojc/5imn1GJK3A75m9hEZZhc3urojA5gMpnar4JHmgLnuM3CUIARPpEk86glEKr3c54Po3WV/vCaO/U8g3Q==}
- engines: {node: '>=16'}
- dev: true
+ conventional-changelog-codemirror@4.0.0: {}
- /conventional-changelog-conventionalcommits@7.0.2:
- resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==}
- engines: {node: '>=16'}
+ conventional-changelog-conventionalcommits@7.0.2:
dependencies:
compare-func: 2.0.0
- dev: true
- /conventional-changelog-core@7.0.0:
- resolution: {integrity: sha512-UYgaB1F/COt7VFjlYKVE/9tTzfU3VUq47r6iWf6lM5T7TlOxr0thI63ojQueRLIpVbrtHK4Ffw+yQGduw2Bhdg==}
- engines: {node: '>=16'}
+ conventional-changelog-core@7.0.0:
dependencies:
'@hutson/parse-repository-url': 5.0.0
add-stream: 1.0.0
@@ -2002,60 +3687,35 @@ packages:
conventional-commits-parser: 5.0.0
git-raw-commits: 4.0.0
git-semver-tags: 7.0.1
- hosted-git-info: 7.0.1
- normalize-package-data: 6.0.0
+ hosted-git-info: 7.0.2
+ normalize-package-data: 6.0.2
read-pkg: 8.1.0
read-pkg-up: 10.1.0
- dev: true
- /conventional-changelog-ember@4.0.0:
- resolution: {integrity: sha512-D0IMhwcJUg1Y8FSry6XAplEJcljkHVlvAZddhhsdbL1rbsqRsMfGx/PIkPYq0ru5aDgn+OxhQ5N5yR7P9mfsvA==}
- engines: {node: '>=16'}
- dev: true
+ conventional-changelog-ember@4.0.0: {}
- /conventional-changelog-eslint@5.0.0:
- resolution: {integrity: sha512-6JtLWqAQIeJLn/OzUlYmzd9fKeNSWmQVim9kql+v4GrZwLx807kAJl3IJVc3jTYfVKWLxhC3BGUxYiuVEcVjgA==}
- engines: {node: '>=16'}
- dev: true
+ conventional-changelog-eslint@5.0.0: {}
- /conventional-changelog-express@4.0.0:
- resolution: {integrity: sha512-yWyy5c7raP9v7aTvPAWzqrztACNO9+FEI1FSYh7UP7YT1AkWgv5UspUeB5v3Ibv4/o60zj2o9GF2tqKQ99lIsw==}
- engines: {node: '>=16'}
- dev: true
+ conventional-changelog-express@4.0.0: {}
- /conventional-changelog-jquery@5.0.0:
- resolution: {integrity: sha512-slLjlXLRNa/icMI3+uGLQbtrgEny3RgITeCxevJB+p05ExiTgHACP5p3XiMKzjBn80n+Rzr83XMYfRInEtCPPw==}
- engines: {node: '>=16'}
- dev: true
+ conventional-changelog-jquery@5.0.0: {}
- /conventional-changelog-jshint@4.0.0:
- resolution: {integrity: sha512-LyXq1bbl0yG0Ai1SbLxIk8ZxUOe3AjnlwE6sVRQmMgetBk+4gY9EO3d00zlEt8Y8gwsITytDnPORl8al7InTjg==}
- engines: {node: '>=16'}
+ conventional-changelog-jshint@4.0.0:
dependencies:
compare-func: 2.0.0
- dev: true
- /conventional-changelog-preset-loader@4.1.0:
- resolution: {integrity: sha512-HozQjJicZTuRhCRTq4rZbefaiCzRM2pr6u2NL3XhrmQm4RMnDXfESU6JKu/pnKwx5xtdkYfNCsbhN5exhiKGJA==}
- engines: {node: '>=16'}
- dev: true
+ conventional-changelog-preset-loader@4.1.0: {}
- /conventional-changelog-writer@7.0.1:
- resolution: {integrity: sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==}
- engines: {node: '>=16'}
- hasBin: true
+ conventional-changelog-writer@7.0.1:
dependencies:
conventional-commits-filter: 4.0.0
handlebars: 4.7.8
json-stringify-safe: 5.0.1
meow: 12.1.1
- semver: 7.6.0
+ semver: 7.6.3
split2: 4.2.0
- dev: true
- /conventional-changelog@5.1.0:
- resolution: {integrity: sha512-aWyE/P39wGYRPllcCEZDxTVEmhyLzTc9XA6z6rVfkuCD2UBnhV/sgSOKbQrEG5z9mEZJjnopjgQooTKxEg8mAg==}
- engines: {node: '>=16'}
+ conventional-changelog@5.1.0:
dependencies:
conventional-changelog-angular: 7.0.0
conventional-changelog-atom: 4.0.0
@@ -2068,175 +3728,120 @@ packages:
conventional-changelog-jquery: 5.0.0
conventional-changelog-jshint: 4.0.0
conventional-changelog-preset-loader: 4.1.0
- dev: true
- /conventional-commits-filter@4.0.0:
- resolution: {integrity: sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==}
- engines: {node: '>=16'}
- dev: true
+ conventional-commits-filter@4.0.0: {}
- /conventional-commits-parser@5.0.0:
- resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==}
- engines: {node: '>=16'}
- hasBin: true
+ conventional-commits-parser@5.0.0:
dependencies:
JSONStream: 1.3.5
is-text-path: 2.0.0
meow: 12.1.1
split2: 4.2.0
- dev: true
- /convert-source-map@2.0.0:
- resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
- dev: false
+ convert-source-map@2.0.0: {}
- /cookie-signature@1.0.6:
- resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==}
- dev: false
+ cookie-signature@1.0.6: {}
- /cookie@0.6.0:
- resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
- engines: {node: '>= 0.6'}
+ cookie@0.6.0: {}
- /core-util-is@1.0.3:
- resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
- dev: false
+ core-util-is@1.0.3: {}
- /cross-env@7.0.3:
- resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
- engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
- hasBin: true
+ cross-env@7.0.3:
dependencies:
cross-spawn: 7.0.3
- dev: false
- /cross-spawn@7.0.3:
- resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
- engines: {node: '>= 8'}
+ cross-spawn@7.0.3:
dependencies:
path-key: 3.1.1
shebang-command: 2.0.0
which: 2.0.2
-
- /csstype@3.1.3:
- resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
- dev: false
-
- /dargs@8.1.0:
- resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==}
- engines: {node: '>=12'}
- dev: true
-
- /debug@2.6.9:
- resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
+
+ csstype@3.1.3: {}
+
+ dargs@8.1.0: {}
+
+ debug@2.6.9:
dependencies:
ms: 2.0.0
- dev: false
- /debug@4.3.4:
- resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
+ debug@4.3.5:
dependencies:
ms: 2.1.2
- /define-data-property@1.1.4:
- resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
- engines: {node: '>= 0.4'}
+ deep-eql@4.1.4:
+ dependencies:
+ type-detect: 4.1.0
+
+ define-data-property@1.1.4:
dependencies:
es-define-property: 1.0.0
es-errors: 1.3.0
gopd: 1.0.1
- dev: false
- /delegates@1.0.0:
- resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
- dev: false
+ delegates@1.0.0: {}
- /depd@2.0.0:
- resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
- engines: {node: '>= 0.8'}
- dev: false
+ depd@2.0.0: {}
- /destroy@1.2.0:
- resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
- engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
- dev: false
+ destroy@1.2.0: {}
- /detect-libc@2.0.3:
- resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
- engines: {node: '>=8'}
- dev: false
+ detect-libc@2.0.3: {}
- /dot-prop@5.3.0:
- resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==}
- engines: {node: '>=8'}
+ dot-prop@5.3.0:
dependencies:
is-obj: 2.0.0
- dev: true
- /duplexer2@0.1.4:
- resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==}
+ duplexer2@0.1.4:
dependencies:
readable-stream: 2.3.8
- dev: false
- /ee-first@1.1.1:
- resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
- dev: false
+ ee-first@1.1.1: {}
- /electron-to-chromium@1.4.718:
- resolution: {integrity: sha512-6FpOapKxHuRNUoNQEP54sAacMod/XX68/Oaau+UoTEC8yxy5lR8jAvTlyrb60oZ9OtuUuAEtKvCQOJm6S4MtBQ==}
- dev: false
+ electron-to-chromium@1.5.2: {}
- /emoji-regex@8.0.0:
- resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
- dev: false
+ emoji-regex@8.0.0: {}
- /encodeurl@1.0.2:
- resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
- engines: {node: '>= 0.8'}
- dev: false
+ encodeurl@1.0.2: {}
- /error-ex@1.3.2:
- resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
+ error-ex@1.3.2:
dependencies:
is-arrayish: 0.2.1
- dev: true
- /es-define-property@1.0.0:
- resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
- engines: {node: '>= 0.4'}
+ es-define-property@1.0.0:
dependencies:
get-intrinsic: 1.2.4
- dev: false
- /es-errors@1.3.0:
- resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
- engines: {node: '>= 0.4'}
- dev: false
+ es-errors@1.3.0: {}
- /es-module-lexer@0.7.1:
- resolution: {integrity: sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==}
- dev: false
+ es-module-lexer@0.7.1: {}
- /es-module-lexer@1.5.0:
- resolution: {integrity: sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==}
+ es-module-lexer@1.5.4: {}
- /esbuild@0.19.12:
- resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==}
- engines: {node: '>=12'}
- hasBin: true
- requiresBuild: true
+ esbuild@0.16.17:
+ optionalDependencies:
+ '@esbuild/android-arm': 0.16.17
+ '@esbuild/android-arm64': 0.16.17
+ '@esbuild/android-x64': 0.16.17
+ '@esbuild/darwin-arm64': 0.16.17
+ '@esbuild/darwin-x64': 0.16.17
+ '@esbuild/freebsd-arm64': 0.16.17
+ '@esbuild/freebsd-x64': 0.16.17
+ '@esbuild/linux-arm': 0.16.17
+ '@esbuild/linux-arm64': 0.16.17
+ '@esbuild/linux-ia32': 0.16.17
+ '@esbuild/linux-loong64': 0.16.17
+ '@esbuild/linux-mips64el': 0.16.17
+ '@esbuild/linux-ppc64': 0.16.17
+ '@esbuild/linux-riscv64': 0.16.17
+ '@esbuild/linux-s390x': 0.16.17
+ '@esbuild/linux-x64': 0.16.17
+ '@esbuild/netbsd-x64': 0.16.17
+ '@esbuild/openbsd-x64': 0.16.17
+ '@esbuild/sunos-x64': 0.16.17
+ '@esbuild/win32-arm64': 0.16.17
+ '@esbuild/win32-ia32': 0.16.17
+ '@esbuild/win32-x64': 0.16.17
+
+ esbuild@0.19.12:
optionalDependencies:
'@esbuild/aix-ppc64': 0.19.12
'@esbuild/android-arm': 0.19.12
@@ -2262,69 +3867,47 @@ packages:
'@esbuild/win32-ia32': 0.19.12
'@esbuild/win32-x64': 0.19.12
- /esbuild@0.20.2:
- resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==}
- engines: {node: '>=12'}
- hasBin: true
- requiresBuild: true
+ esbuild@0.21.5:
optionalDependencies:
- '@esbuild/aix-ppc64': 0.20.2
- '@esbuild/android-arm': 0.20.2
- '@esbuild/android-arm64': 0.20.2
- '@esbuild/android-x64': 0.20.2
- '@esbuild/darwin-arm64': 0.20.2
- '@esbuild/darwin-x64': 0.20.2
- '@esbuild/freebsd-arm64': 0.20.2
- '@esbuild/freebsd-x64': 0.20.2
- '@esbuild/linux-arm': 0.20.2
- '@esbuild/linux-arm64': 0.20.2
- '@esbuild/linux-ia32': 0.20.2
- '@esbuild/linux-loong64': 0.20.2
- '@esbuild/linux-mips64el': 0.20.2
- '@esbuild/linux-ppc64': 0.20.2
- '@esbuild/linux-riscv64': 0.20.2
- '@esbuild/linux-s390x': 0.20.2
- '@esbuild/linux-x64': 0.20.2
- '@esbuild/netbsd-x64': 0.20.2
- '@esbuild/openbsd-x64': 0.20.2
- '@esbuild/sunos-x64': 0.20.2
- '@esbuild/win32-arm64': 0.20.2
- '@esbuild/win32-ia32': 0.20.2
- '@esbuild/win32-x64': 0.20.2
-
- /escalade@3.1.2:
- resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
- engines: {node: '>=6'}
- dev: false
-
- /escape-html@1.0.3:
- resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
- dev: false
-
- /escape-string-regexp@1.0.5:
- resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
- engines: {node: '>=0.8.0'}
-
- /estree-walker@2.0.2:
- resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
- dev: false
-
- /etag@1.8.1:
- resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
- engines: {node: '>= 0.6'}
- dev: false
-
- /event-target-shim@5.0.1:
- resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
- engines: {node: '>=6'}
-
- /events@3.3.0:
- resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
- engines: {node: '>=0.8.x'}
-
- /execa@5.1.1:
- resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
- engines: {node: '>=10'}
+ '@esbuild/aix-ppc64': 0.21.5
+ '@esbuild/android-arm': 0.21.5
+ '@esbuild/android-arm64': 0.21.5
+ '@esbuild/android-x64': 0.21.5
+ '@esbuild/darwin-arm64': 0.21.5
+ '@esbuild/darwin-x64': 0.21.5
+ '@esbuild/freebsd-arm64': 0.21.5
+ '@esbuild/freebsd-x64': 0.21.5
+ '@esbuild/linux-arm': 0.21.5
+ '@esbuild/linux-arm64': 0.21.5
+ '@esbuild/linux-ia32': 0.21.5
+ '@esbuild/linux-loong64': 0.21.5
+ '@esbuild/linux-mips64el': 0.21.5
+ '@esbuild/linux-ppc64': 0.21.5
+ '@esbuild/linux-riscv64': 0.21.5
+ '@esbuild/linux-s390x': 0.21.5
+ '@esbuild/linux-x64': 0.21.5
+ '@esbuild/netbsd-x64': 0.21.5
+ '@esbuild/openbsd-x64': 0.21.5
+ '@esbuild/sunos-x64': 0.21.5
+ '@esbuild/win32-arm64': 0.21.5
+ '@esbuild/win32-ia32': 0.21.5
+ '@esbuild/win32-x64': 0.21.5
+
+ escalade@3.1.2: {}
+
+ escape-html@1.0.3: {}
+
+ escape-string-regexp@1.0.5: {}
+
+ estree-walker@2.0.2: {}
+
+ etag@1.8.1: {}
+
+ event-target-shim@5.0.1: {}
+
+ events@3.3.0: {}
+
+ execa@5.1.1:
dependencies:
cross-spawn: 7.0.3
get-stream: 6.0.1
@@ -2335,11 +3918,8 @@ packages:
onetime: 5.1.2
signal-exit: 3.0.7
strip-final-newline: 2.0.0
- dev: true
- /express@4.19.2:
- resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==}
- engines: {node: '>= 0.10.0'}
+ express@4.19.2:
dependencies:
accepts: 1.3.8
array-flatten: 1.1.1
@@ -2374,90 +3954,71 @@ packages:
vary: 1.1.2
transitivePeerDependencies:
- supports-color
- dev: false
- /fast-content-type-parse@1.1.0:
- resolution: {integrity: sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==}
+ fast-content-type-parse@1.1.0: {}
- /fast-decode-uri-component@1.0.1:
- resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==}
+ fast-decode-uri-component@1.0.1: {}
- /fast-deep-equal@3.1.3:
- resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+ fast-deep-equal@3.1.3: {}
- /fast-glob@3.3.2:
- resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
- engines: {node: '>=8.6.0'}
+ fast-glob@3.3.2:
dependencies:
'@nodelib/fs.stat': 2.0.5
'@nodelib/fs.walk': 1.2.8
glob-parent: 5.1.2
merge2: 1.4.1
- micromatch: 4.0.5
+ micromatch: 4.0.7
- /fast-json-stringify@5.13.0:
- resolution: {integrity: sha512-XjTDWKHP3GoMQUOfnjYUbqeHeEt+PvYgvBdG2fRSmYaORILbSr8xTJvZX+w1YSAP5pw2NwKrGRmQleYueZEoxw==}
+ fast-json-stringify@5.16.1:
dependencies:
'@fastify/merge-json-schemas': 0.1.1
- ajv: 8.12.0
- ajv-formats: 2.1.1(ajv@8.12.0)
+ ajv: 8.17.1
+ ajv-formats: 3.0.1(ajv@8.17.1)
fast-deep-equal: 3.1.3
- fast-uri: 2.3.0
+ fast-uri: 2.4.0
json-schema-ref-resolver: 1.0.1
- rfdc: 1.3.1
+ rfdc: 1.4.1
- /fast-querystring@1.1.2:
- resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==}
+ fast-querystring@1.1.2:
dependencies:
fast-decode-uri-component: 1.0.1
- /fast-redact@3.5.0:
- resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==}
- engines: {node: '>=6'}
+ fast-redact@3.5.0: {}
- /fast-uri@2.3.0:
- resolution: {integrity: sha512-eel5UKGn369gGEWOqBShmFJWfq/xSJvsgDzgLYC845GneayWvXBf0lJCBn5qTABfewy1ZDPoaR5OZCP+kssfuw==}
+ fast-uri@2.4.0: {}
- /fastify@4.26.2:
- resolution: {integrity: sha512-90pjTuPGrfVKtdpLeLzND5nyC4woXZN5VadiNQCicj/iJU4viNHKhsAnb7jmv1vu2IzkLXyBiCzdWuzeXgQ5Ug==}
+ fast-uri@3.0.1: {}
+
+ fastify@4.28.1:
dependencies:
- '@fastify/ajv-compiler': 3.5.0
+ '@fastify/ajv-compiler': 3.6.0
'@fastify/error': 3.4.1
'@fastify/fast-json-stringify-compiler': 4.3.0
abstract-logging: 2.0.1
- avvio: 8.3.0
+ avvio: 8.3.2
fast-content-type-parse: 1.1.0
- fast-json-stringify: 5.13.0
- find-my-way: 8.1.0
- light-my-request: 5.12.0
- pino: 8.19.0
+ fast-json-stringify: 5.16.1
+ find-my-way: 8.2.0
+ light-my-request: 5.13.0
+ pino: 9.3.2
process-warning: 3.0.0
proxy-addr: 2.0.7
- rfdc: 1.3.1
+ rfdc: 1.4.1
secure-json-parse: 2.7.0
- semver: 7.6.0
+ semver: 7.6.3
toad-cache: 3.7.0
- transitivePeerDependencies:
- - supports-color
- /fastq@1.17.1:
- resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
+ fastq@1.17.1:
dependencies:
reusify: 1.0.4
- /file-uri-to-path@1.0.0:
- resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
- dev: false
+ file-uri-to-path@1.0.0: {}
- /fill-range@7.0.1:
- resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
- engines: {node: '>=8'}
+ fill-range@7.1.1:
dependencies:
to-regex-range: 5.0.1
- /finalhandler@1.2.0:
- resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==}
- engines: {node: '>= 0.8'}
+ finalhandler@1.2.0:
dependencies:
debug: 2.6.9
encodeurl: 1.0.2
@@ -2468,57 +4029,34 @@ packages:
unpipe: 1.0.0
transitivePeerDependencies:
- supports-color
- dev: false
- /find-my-way@8.1.0:
- resolution: {integrity: sha512-41QwjCGcVTODUmLLqTMeoHeiozbMXYMAE1CKFiDyi9zVZ2Vjh0yz3MF0WQZoIb+cmzP/XlbFjlF2NtJmvZHznA==}
- engines: {node: '>=14'}
+ find-my-way@8.2.0:
dependencies:
fast-deep-equal: 3.1.3
fast-querystring: 1.1.2
- safe-regex2: 2.0.0
+ safe-regex2: 3.1.0
- /find-up@6.3.0:
- resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ find-up@6.3.0:
dependencies:
locate-path: 7.2.0
path-exists: 5.0.0
- dev: true
- /forwarded@0.2.0:
- resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
- engines: {node: '>= 0.6'}
+ forwarded@0.2.0: {}
- /fresh@0.5.2:
- resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
- engines: {node: '>= 0.6'}
- dev: false
+ fresh@0.5.2: {}
- /fs-minipass@2.1.0:
- resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==}
- engines: {node: '>= 8'}
+ fs-minipass@2.1.0:
dependencies:
minipass: 3.3.6
- dev: false
- /fs.realpath@1.0.0:
- resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
- dev: false
+ fs.realpath@1.0.0: {}
- /fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
- requiresBuild: true
+ fsevents@2.3.3:
optional: true
- /function-bind@1.1.2:
- resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+ function-bind@1.1.2: {}
- /gauge@3.0.2:
- resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==}
- engines: {node: '>=10'}
+ gauge@3.0.2:
dependencies:
aproba: 2.0.0
color-support: 1.1.3
@@ -2529,56 +4067,37 @@ packages:
string-width: 4.2.3
strip-ansi: 6.0.1
wide-align: 1.1.5
- dev: false
- /gensync@1.0.0-beta.2:
- resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
- engines: {node: '>=6.9.0'}
- dev: false
+ gensync@1.0.0-beta.2: {}
- /get-intrinsic@1.2.4:
- resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
- engines: {node: '>= 0.4'}
+ get-func-name@2.0.2: {}
+
+ get-intrinsic@1.2.4:
dependencies:
es-errors: 1.3.0
function-bind: 1.1.2
has-proto: 1.0.3
has-symbols: 1.0.3
hasown: 2.0.2
- dev: false
- /get-stream@6.0.1:
- resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
- engines: {node: '>=10'}
- dev: true
+ get-stream@6.0.1: {}
- /git-raw-commits@4.0.0:
- resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==}
- engines: {node: '>=16'}
- hasBin: true
+ git-raw-commits@4.0.0:
dependencies:
dargs: 8.1.0
meow: 12.1.1
split2: 4.2.0
- dev: true
- /git-semver-tags@7.0.1:
- resolution: {integrity: sha512-NY0ZHjJzyyNXHTDZmj+GG7PyuAKtMsyWSwh07CR2hOZFa+/yoTsXci/nF2obzL8UDhakFNkD9gNdt/Ed+cxh2Q==}
- engines: {node: '>=16'}
- hasBin: true
+ git-semver-tags@7.0.1:
dependencies:
meow: 12.1.1
- semver: 7.6.0
- dev: true
+ semver: 7.6.3
- /glob-parent@5.1.2:
- resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
- engines: {node: '>= 6'}
+ glob-parent@5.1.2:
dependencies:
is-glob: 4.0.3
- /glob@7.2.3:
- resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ glob@7.2.3:
dependencies:
fs.realpath: 1.0.0
inflight: 1.0.6
@@ -2586,724 +4105,411 @@ packages:
minimatch: 3.1.2
once: 1.4.0
path-is-absolute: 1.0.1
- dev: false
- /globals@11.12.0:
- resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
- engines: {node: '>=4'}
- dev: false
+ globals@11.12.0: {}
- /gopd@1.0.1:
- resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
+ gopd@1.0.1:
dependencies:
get-intrinsic: 1.2.4
- dev: false
- /graceful-fs@4.2.11:
- resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
- dev: false
+ graceful-fs@4.2.11: {}
- /handlebars@4.7.8:
- resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==}
- engines: {node: '>=0.4.7'}
- hasBin: true
+ handlebars@4.7.8:
dependencies:
minimist: 1.2.8
neo-async: 2.6.2
source-map: 0.6.1
wordwrap: 1.0.0
optionalDependencies:
- uglify-js: 3.17.4
- dev: true
+ uglify-js: 3.19.0
- /has-flag@3.0.0:
- resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
- engines: {node: '>=4'}
+ has-flag@3.0.0: {}
- /has-property-descriptors@1.0.2:
- resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
+ has-property-descriptors@1.0.2:
dependencies:
es-define-property: 1.0.0
- dev: false
- /has-proto@1.0.3:
- resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
- engines: {node: '>= 0.4'}
- dev: false
+ has-proto@1.0.3: {}
- /has-symbols@1.0.3:
- resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
- engines: {node: '>= 0.4'}
- dev: false
+ has-symbols@1.0.3: {}
- /has-unicode@2.0.1:
- resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==}
- dev: false
+ has-unicode@2.0.1: {}
- /hasown@2.0.2:
- resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
- engines: {node: '>= 0.4'}
+ hasown@2.0.2:
dependencies:
function-bind: 1.1.2
- /hono@4.1.5:
- resolution: {integrity: sha512-3ChJiIoeCxvkt6vnkxJagplrt1YZg3NyNob7ssVeK2PUqEINp4q1F94HzFnvY9QE8asVmbW5kkTDlyWylfg2vg==}
- engines: {node: '>=16.0.0'}
- dev: false
+ hono@4.5.1: {}
- /hosted-git-info@7.0.1:
- resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==}
- engines: {node: ^16.14.0 || >=18.0.0}
+ hosted-git-info@7.0.2:
dependencies:
- lru-cache: 10.2.0
- dev: true
+ lru-cache: 10.4.3
- /http-errors@2.0.0:
- resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
- engines: {node: '>= 0.8'}
+ http-errors@2.0.0:
dependencies:
depd: 2.0.0
inherits: 2.0.4
setprototypeof: 1.2.0
statuses: 2.0.1
toidentifier: 1.0.1
- dev: false
- /https-proxy-agent@5.0.1:
- resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
- engines: {node: '>= 6'}
+ https-proxy-agent@5.0.1:
dependencies:
agent-base: 6.0.2
- debug: 4.3.4
+ debug: 4.3.5
transitivePeerDependencies:
- supports-color
- dev: false
- /human-signals@2.1.0:
- resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
- engines: {node: '>=10.17.0'}
- dev: true
+ human-signals@2.1.0: {}
- /iconv-lite@0.4.24:
- resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
- engines: {node: '>=0.10.0'}
+ iconv-lite@0.4.24:
dependencies:
safer-buffer: 2.1.2
- dev: false
- /ieee754@1.2.1:
- resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
+ ieee754@1.2.1: {}
- /inflight@1.0.6:
- resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ inflight@1.0.6:
dependencies:
once: 1.4.0
wrappy: 1.0.2
- dev: false
-
- /inherits@2.0.4:
- resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
- dev: false
- /ipaddr.js@1.9.1:
- resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
- engines: {node: '>= 0.10'}
+ inherits@2.0.4: {}
- /is-arrayish@0.2.1:
- resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
- dev: true
+ ipaddr.js@1.9.1: {}
- /is-arrayish@0.3.2:
- resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
- dev: false
+ is-arrayish@0.2.1: {}
- /is-core-module@2.13.1:
- resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
- dependencies:
- hasown: 2.0.2
- dev: true
+ is-arrayish@0.3.2: {}
- /is-extglob@2.1.1:
- resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
- engines: {node: '>=0.10.0'}
+ is-extglob@2.1.1: {}
- /is-fullwidth-code-point@3.0.0:
- resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
- engines: {node: '>=8'}
- dev: false
+ is-fullwidth-code-point@3.0.0: {}
- /is-glob@4.0.3:
- resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
- engines: {node: '>=0.10.0'}
+ is-glob@4.0.3:
dependencies:
is-extglob: 2.1.1
- /is-number@7.0.0:
- resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
- engines: {node: '>=0.12.0'}
+ is-number@7.0.0: {}
- /is-obj@2.0.0:
- resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
- engines: {node: '>=8'}
- dev: true
+ is-obj@2.0.0: {}
- /is-stream@2.0.1:
- resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
- engines: {node: '>=8'}
- dev: true
+ is-stream@2.0.1: {}
- /is-text-path@2.0.0:
- resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==}
- engines: {node: '>=8'}
+ is-text-path@2.0.0:
dependencies:
text-extensions: 2.4.0
- dev: true
-
- /isarray@1.0.0:
- resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
- dev: false
- /isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+ isarray@1.0.0: {}
- /js-tokens@4.0.0:
- resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+ isexe@2.0.0: {}
- /js-yaml@4.1.0:
- resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
- hasBin: true
- dependencies:
- argparse: 2.0.1
- dev: true
+ js-tokens@4.0.0: {}
- /jsesc@2.5.2:
- resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
- engines: {node: '>=4'}
- hasBin: true
- dev: false
+ jsesc@2.5.2: {}
- /json-parse-even-better-errors@3.0.1:
- resolution: {integrity: sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==}
- engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
- dev: true
+ json-parse-even-better-errors@3.0.2: {}
- /json-schema-ref-resolver@1.0.1:
- resolution: {integrity: sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==}
+ json-schema-ref-resolver@1.0.1:
dependencies:
fast-deep-equal: 3.1.3
- /json-schema-traverse@1.0.0:
- resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
+ json-schema-traverse@1.0.0: {}
- /json-stringify-safe@5.0.1:
- resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
- dev: true
+ json-stringify-safe@5.0.1: {}
- /json5@2.2.3:
- resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
- engines: {node: '>=6'}
- hasBin: true
- dev: false
+ json5@2.2.3: {}
- /jsonparse@1.3.1:
- resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==}
- engines: {'0': node >= 0.2.0}
- dev: true
+ jsonparse@1.3.1: {}
- /light-my-request@5.12.0:
- resolution: {integrity: sha512-P526OX6E7aeCIfw/9UyJNsAISfcFETghysaWHQAlQYayynShT08MOj4c6fBCvTWBrHXSvqBAKDp3amUPSCQI4w==}
+ light-my-request@5.13.0:
dependencies:
cookie: 0.6.0
process-warning: 3.0.0
set-cookie-parser: 2.6.0
- /lines-and-columns@2.0.4:
- resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dev: true
+ lines-and-columns@2.0.4: {}
- /locate-path@7.2.0:
- resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ locate-path@7.2.0:
dependencies:
p-locate: 6.0.0
- dev: true
- /loose-envify@1.4.0:
- resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
- hasBin: true
+ loose-envify@1.4.0:
dependencies:
js-tokens: 4.0.0
- dev: false
-
- /lru-cache@10.2.0:
- resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==}
- engines: {node: 14 || >=16.14}
- dev: true
- /lru-cache@5.1.1:
- resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+ loupe@2.3.7:
dependencies:
- yallist: 3.1.1
- dev: false
+ get-func-name: 2.0.2
- /lru-cache@6.0.0:
- resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
- engines: {node: '>=10'}
+ lru-cache@10.4.3: {}
+
+ lru-cache@5.1.1:
dependencies:
- yallist: 4.0.0
+ yallist: 3.1.1
- /lru-cache@8.0.5:
- resolution: {integrity: sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==}
- engines: {node: '>=16.14'}
- dev: false
+ lru-cache@8.0.5: {}
- /make-dir@3.1.0:
- resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
- engines: {node: '>=8'}
+ make-dir@3.1.0:
dependencies:
semver: 6.3.1
- dev: false
- /media-typer@0.3.0:
- resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
- engines: {node: '>= 0.6'}
- dev: false
+ media-typer@0.3.0: {}
- /meow@12.1.1:
- resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==}
- engines: {node: '>=16.10'}
- dev: true
+ meow@12.1.1: {}
- /merge-descriptors@1.0.1:
- resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==}
- dev: false
+ merge-descriptors@1.0.1: {}
- /merge-stream@2.0.0:
- resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
- dev: true
+ merge-stream@2.0.0: {}
- /merge2@1.4.1:
- resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
- engines: {node: '>= 8'}
+ merge2@1.4.1: {}
- /methods@1.1.2:
- resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
- engines: {node: '>= 0.6'}
- dev: false
+ methods@1.1.2: {}
- /micromatch@4.0.5:
- resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
- engines: {node: '>=8.6'}
+ micromatch@4.0.7:
dependencies:
- braces: 3.0.2
+ braces: 3.0.3
picomatch: 2.3.1
- /mime-db@1.52.0:
- resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
- engines: {node: '>= 0.6'}
- dev: false
+ mime-db@1.52.0: {}
- /mime-types@2.1.35:
- resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
- engines: {node: '>= 0.6'}
+ mime-db@1.53.0: {}
+
+ mime-types@2.1.35:
dependencies:
mime-db: 1.52.0
- dev: false
- /mime@1.6.0:
- resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
- engines: {node: '>=4'}
- hasBin: true
- dev: false
+ mime@1.6.0: {}
- /mimic-fn@2.1.0:
- resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
- engines: {node: '>=6'}
- dev: true
+ mimic-fn@2.1.0: {}
- /minimatch@3.1.2:
- resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+ minimatch@3.1.2:
dependencies:
brace-expansion: 1.1.11
- dev: false
- /minimatch@7.4.6:
- resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==}
- engines: {node: '>=10'}
+ minimatch@7.4.6:
dependencies:
brace-expansion: 2.0.1
- dev: false
- /minimist@1.2.8:
- resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
- dev: true
+ minimist@1.2.8: {}
- /minipass@3.3.6:
- resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==}
- engines: {node: '>=8'}
+ minipass@3.3.6:
dependencies:
yallist: 4.0.0
- dev: false
- /minipass@5.0.0:
- resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
- engines: {node: '>=8'}
- dev: false
+ minipass@5.0.0: {}
- /minizlib@2.1.2:
- resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
- engines: {node: '>= 8'}
+ minizlib@2.1.2:
dependencies:
minipass: 3.3.6
yallist: 4.0.0
- dev: false
- /mkdirp@1.0.4:
- resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
- engines: {node: '>=10'}
- hasBin: true
- dev: false
+ mkdirp@1.0.4: {}
- /mkdirp@2.1.6:
- resolution: {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==}
- engines: {node: '>=10'}
- hasBin: true
- dev: false
+ mkdirp@2.1.6: {}
- /mrmime@2.0.0:
- resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==}
- engines: {node: '>=10'}
+ mrmime@2.0.0: {}
- /ms@2.0.0:
- resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
- dev: false
+ ms@2.0.0: {}
- /ms@2.1.2:
- resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+ ms@2.1.2: {}
- /ms@2.1.3:
- resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
- dev: false
+ ms@2.1.3: {}
- /multipipe@4.0.0:
- resolution: {integrity: sha512-jzcEAzFXoWwWwUbvHCNPwBlTz3WCWe/jPcXSmTfbo/VjRwRTfvLZ/bdvtiTdqCe8d4otCSsPCbhGYcX+eggpKQ==}
+ multipipe@4.0.0:
dependencies:
duplexer2: 0.1.4
object-assign: 4.1.1
- dev: false
-
- /nanoid@3.3.7:
- resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
-
- /negotiator@0.6.3:
- resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
- engines: {node: '>= 0.6'}
- dev: false
-
- /neo-async@2.6.2:
- resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
- dev: true
- /node-fetch-native@1.6.4:
- resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==}
- dev: false
-
- /node-fetch@2.7.0:
- resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
- engines: {node: 4.x || >=6.0.0}
- peerDependencies:
- encoding: ^0.1.0
- peerDependenciesMeta:
- encoding:
- optional: true
+ nanoid@3.3.7: {}
+
+ negotiator@0.6.3: {}
+
+ neo-async@2.6.2: {}
+
+ node-fetch@2.7.0:
dependencies:
whatwg-url: 5.0.0
- dev: false
- /node-gyp-build@4.8.0:
- resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==}
- hasBin: true
- dev: false
+ node-gyp-build@4.8.1: {}
- /node-releases@2.0.14:
- resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
- dev: false
+ node-releases@2.0.18: {}
- /nopt@5.0.0:
- resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==}
- engines: {node: '>=6'}
- hasBin: true
+ nopt@5.0.0:
dependencies:
abbrev: 1.1.1
- dev: false
- /normalize-package-data@6.0.0:
- resolution: {integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==}
- engines: {node: ^16.14.0 || >=18.0.0}
+ normalize-package-data@6.0.2:
dependencies:
- hosted-git-info: 7.0.1
- is-core-module: 2.13.1
- semver: 7.6.0
+ hosted-git-info: 7.0.2
+ semver: 7.6.3
validate-npm-package-license: 3.0.4
- dev: true
- /npm-run-path@4.0.1:
- resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
- engines: {node: '>=8'}
+ npm-run-path@4.0.1:
dependencies:
path-key: 3.1.1
- dev: true
- /npmlog@5.0.1:
- resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==}
+ npmlog@5.0.1:
dependencies:
are-we-there-yet: 2.0.0
console-control-strings: 1.1.0
gauge: 3.0.2
set-blocking: 2.0.0
- dev: false
- /object-assign@4.1.1:
- resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
- engines: {node: '>=0.10.0'}
- dev: false
+ object-assign@4.1.1: {}
- /object-inspect@1.13.1:
- resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
- dev: false
+ object-inspect@1.13.2: {}
- /on-exit-leak-free@2.1.2:
- resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==}
- engines: {node: '>=14.0.0'}
+ on-exit-leak-free@2.1.2: {}
- /on-finished@2.4.1:
- resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
- engines: {node: '>= 0.8'}
+ on-finished@2.4.1:
dependencies:
ee-first: 1.1.1
- dev: false
- /on-headers@1.0.2:
- resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==}
- engines: {node: '>= 0.8'}
- dev: false
+ on-headers@1.0.2: {}
- /once@1.4.0:
- resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+ once@1.4.0:
dependencies:
wrappy: 1.0.2
- dev: false
- /onetime@5.1.2:
- resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
- engines: {node: '>=6'}
+ onetime@5.1.2:
dependencies:
mimic-fn: 2.1.0
- dev: true
- /p-limit@4.0.0:
- resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ p-limit@4.0.0:
dependencies:
- yocto-queue: 1.0.0
- dev: true
+ yocto-queue: 1.1.1
- /p-locate@6.0.0:
- resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ p-locate@6.0.0:
dependencies:
p-limit: 4.0.0
- dev: true
- /parse-json@7.1.1:
- resolution: {integrity: sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==}
- engines: {node: '>=16'}
+ parse-json@7.1.1:
dependencies:
- '@babel/code-frame': 7.24.2
+ '@babel/code-frame': 7.24.7
error-ex: 1.3.2
- json-parse-even-better-errors: 3.0.1
+ json-parse-even-better-errors: 3.0.2
lines-and-columns: 2.0.4
type-fest: 3.13.1
- dev: true
- /parseurl@1.3.3:
- resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
- engines: {node: '>= 0.8'}
- dev: false
+ parseurl@1.3.3: {}
- /path-browserify@1.0.1:
- resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
- dev: false
+ path-browserify@1.0.1: {}
- /path-exists@5.0.0:
- resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dev: true
+ path-exists@5.0.0: {}
- /path-is-absolute@1.0.1:
- resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
- engines: {node: '>=0.10.0'}
- dev: false
+ path-is-absolute@1.0.1: {}
- /path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
+ path-key@3.1.1: {}
- /path-to-regexp@0.1.7:
- resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
- dev: false
+ path-to-regexp@0.1.7: {}
- /picocolors@1.0.0:
- resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
+ pathval@1.1.1: {}
- /picomatch@2.3.1:
- resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
- engines: {node: '>=8.6'}
+ picocolors@1.0.1: {}
- /pino-abstract-transport@1.1.0:
- resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==}
+ picomatch@2.3.1: {}
+
+ pino-abstract-transport@1.2.0:
dependencies:
readable-stream: 4.5.2
split2: 4.2.0
- /pino-std-serializers@6.2.2:
- resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==}
+ pino-std-serializers@7.0.0: {}
- /pino@8.19.0:
- resolution: {integrity: sha512-oswmokxkav9bADfJ2ifrvfHUwad6MLp73Uat0IkQWY3iAw5xTRoznXbXksZs8oaOUMpmhVWD+PZogNzllWpJaA==}
- hasBin: true
+ pino@9.3.2:
dependencies:
atomic-sleep: 1.0.0
fast-redact: 3.5.0
on-exit-leak-free: 2.1.2
- pino-abstract-transport: 1.1.0
- pino-std-serializers: 6.2.2
- process-warning: 3.0.0
+ pino-abstract-transport: 1.2.0
+ pino-std-serializers: 7.0.0
+ process-warning: 4.0.0
quick-format-unescaped: 4.0.4
real-require: 0.2.0
safe-stable-stringify: 2.4.3
- sonic-boom: 3.8.0
- thread-stream: 2.4.1
+ sonic-boom: 4.0.1
+ thread-stream: 3.1.0
- /postcss@8.4.38:
- resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
- engines: {node: ^10 || ^12 || >=14}
+ pixelmatch@5.3.0:
+ dependencies:
+ pngjs: 6.0.0
+
+ playwright-chromium@1.45.3:
+ dependencies:
+ playwright-core: 1.45.3
+
+ playwright-core@1.45.3: {}
+
+ pngjs@6.0.0: {}
+
+ postcss@8.4.40:
dependencies:
nanoid: 3.3.7
- picocolors: 1.0.0
+ picocolors: 1.0.1
source-map-js: 1.2.0
- /prettier@3.2.5:
- resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==}
- engines: {node: '>=14'}
- hasBin: true
- dev: true
+ prettier@3.3.3: {}
- /prisma@5.11.0:
- resolution: {integrity: sha512-KCLiug2cs0Je7kGkQBN9jDWoZ90ogE/kvZTUTgz2h94FEo8pczCkPH7fPNXkD1sGU7Yh65risGGD1HQ5DF3r3g==}
- engines: {node: '>=16.13'}
- hasBin: true
- requiresBuild: true
+ prisma@5.17.0:
dependencies:
- '@prisma/engines': 5.11.0
- dev: false
+ '@prisma/engines': 5.17.0
- /process-nextick-args@2.0.1:
- resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
- dev: false
+ process-nextick-args@2.0.1: {}
- /process-warning@3.0.0:
- resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==}
+ process-warning@3.0.0: {}
- /process@0.11.10:
- resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
- engines: {node: '>= 0.6.0'}
+ process-warning@4.0.0: {}
- /proxy-addr@2.0.7:
- resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
- engines: {node: '>= 0.10'}
+ process@0.11.10: {}
+
+ proxy-addr@2.0.7:
dependencies:
forwarded: 0.2.0
ipaddr.js: 1.9.1
- /punycode@2.3.1:
- resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
- engines: {node: '>=6'}
-
- /qs@6.11.0:
- resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==}
- engines: {node: '>=0.6'}
+ qs@6.11.0:
dependencies:
side-channel: 1.0.6
- dev: false
- /queue-microtask@1.2.3:
- resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+ queue-microtask@1.2.3: {}
- /quick-format-unescaped@4.0.4:
- resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
+ quick-format-unescaped@4.0.4: {}
- /range-parser@1.2.1:
- resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
- engines: {node: '>= 0.6'}
- dev: false
+ range-parser@1.2.1: {}
- /raw-body@2.5.2:
- resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
- engines: {node: '>= 0.8'}
+ raw-body@2.5.2:
dependencies:
bytes: 3.1.2
http-errors: 2.0.0
iconv-lite: 0.4.24
unpipe: 1.0.0
- dev: false
- /react-dom@18.2.0(react@18.2.0):
- resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
- peerDependencies:
- react: ^18.2.0
+ react-dom@18.3.1(react@18.3.1):
dependencies:
loose-envify: 1.4.0
- react: 18.2.0
- scheduler: 0.23.0
- dev: false
+ react: 18.3.1
+ scheduler: 0.23.2
- /react-refresh@0.14.0:
- resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==}
- engines: {node: '>=0.10.0'}
- dev: false
+ react-refresh@0.14.2: {}
- /react@18.2.0:
- resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
- engines: {node: '>=0.10.0'}
+ react@18.3.1:
dependencies:
loose-envify: 1.4.0
- dev: false
- /read-pkg-up@10.1.0:
- resolution: {integrity: sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==}
- engines: {node: '>=16'}
+ read-pkg-up@10.1.0:
dependencies:
find-up: 6.3.0
read-pkg: 8.1.0
- type-fest: 4.14.0
- dev: true
+ type-fest: 4.23.0
- /read-pkg@8.1.0:
- resolution: {integrity: sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==}
- engines: {node: '>=16'}
+ read-pkg@8.1.0:
dependencies:
'@types/normalize-package-data': 2.4.4
- normalize-package-data: 6.0.0
+ normalize-package-data: 6.0.2
parse-json: 7.1.1
- type-fest: 4.14.0
- dev: true
+ type-fest: 4.23.0
- /readable-stream@2.3.8:
- resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
+ readable-stream@2.3.8:
dependencies:
core-util-is: 1.0.3
inherits: 2.0.4
@@ -3312,20 +4518,14 @@ packages:
safe-buffer: 5.1.2
string_decoder: 1.1.1
util-deprecate: 1.0.2
- dev: false
- /readable-stream@3.6.2:
- resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
- engines: {node: '>= 6'}
+ readable-stream@3.6.2:
dependencies:
inherits: 2.0.4
string_decoder: 1.3.0
util-deprecate: 1.0.2
- dev: false
- /readable-stream@4.5.2:
- resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ readable-stream@4.5.2:
dependencies:
abort-controller: 3.0.0
buffer: 6.0.3
@@ -3333,109 +4533,71 @@ packages:
process: 0.11.10
string_decoder: 1.3.0
- /real-require@0.2.0:
- resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==}
- engines: {node: '>= 12.13.0'}
+ real-require@0.2.0: {}
- /require-from-string@2.0.2:
- resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
- engines: {node: '>=0.10.0'}
+ require-from-string@2.0.2: {}
- /resolve-from@5.0.0:
- resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
- engines: {node: '>=8'}
- dev: false
+ resolve-from@5.0.0: {}
- /ret@0.2.2:
- resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==}
- engines: {node: '>=4'}
+ ret@0.4.3: {}
- /reusify@1.0.4:
- resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
- engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+ reusify@1.0.4: {}
- /rfdc@1.3.1:
- resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==}
+ rfdc@1.4.1: {}
- /rimraf@3.0.2:
- resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
- hasBin: true
+ rimraf@3.0.2:
dependencies:
glob: 7.2.3
- dev: false
- /rollup@4.13.1:
- resolution: {integrity: sha512-hFi+fU132IvJ2ZuihN56dwgpltpmLZHZWsx27rMCTZ2sYwrqlgL5sECGy1eeV2lAihD8EzChBVVhsXci0wD4Tg==}
- engines: {node: '>=18.0.0', npm: '>=8.0.0'}
- hasBin: true
+ rollup@4.19.0:
dependencies:
'@types/estree': 1.0.5
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.13.1
- '@rollup/rollup-android-arm64': 4.13.1
- '@rollup/rollup-darwin-arm64': 4.13.1
- '@rollup/rollup-darwin-x64': 4.13.1
- '@rollup/rollup-linux-arm-gnueabihf': 4.13.1
- '@rollup/rollup-linux-arm64-gnu': 4.13.1
- '@rollup/rollup-linux-arm64-musl': 4.13.1
- '@rollup/rollup-linux-riscv64-gnu': 4.13.1
- '@rollup/rollup-linux-s390x-gnu': 4.13.1
- '@rollup/rollup-linux-x64-gnu': 4.13.1
- '@rollup/rollup-linux-x64-musl': 4.13.1
- '@rollup/rollup-win32-arm64-msvc': 4.13.1
- '@rollup/rollup-win32-ia32-msvc': 4.13.1
- '@rollup/rollup-win32-x64-msvc': 4.13.1
+ '@rollup/rollup-android-arm-eabi': 4.19.0
+ '@rollup/rollup-android-arm64': 4.19.0
+ '@rollup/rollup-darwin-arm64': 4.19.0
+ '@rollup/rollup-darwin-x64': 4.19.0
+ '@rollup/rollup-linux-arm-gnueabihf': 4.19.0
+ '@rollup/rollup-linux-arm-musleabihf': 4.19.0
+ '@rollup/rollup-linux-arm64-gnu': 4.19.0
+ '@rollup/rollup-linux-arm64-musl': 4.19.0
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.19.0
+ '@rollup/rollup-linux-riscv64-gnu': 4.19.0
+ '@rollup/rollup-linux-s390x-gnu': 4.19.0
+ '@rollup/rollup-linux-x64-gnu': 4.19.0
+ '@rollup/rollup-linux-x64-musl': 4.19.0
+ '@rollup/rollup-win32-arm64-msvc': 4.19.0
+ '@rollup/rollup-win32-ia32-msvc': 4.19.0
+ '@rollup/rollup-win32-x64-msvc': 4.19.0
fsevents: 2.3.3
- /run-parallel@1.2.0:
- resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+ run-parallel@1.2.0:
dependencies:
queue-microtask: 1.2.3
- /safe-buffer@5.1.2:
- resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
- dev: false
+ safe-buffer@5.1.2: {}
- /safe-buffer@5.2.1:
- resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+ safe-buffer@5.2.1: {}
- /safe-regex2@2.0.0:
- resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==}
+ safe-regex2@3.1.0:
dependencies:
- ret: 0.2.2
+ ret: 0.4.3
- /safe-stable-stringify@2.4.3:
- resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==}
- engines: {node: '>=10'}
+ safe-stable-stringify@2.4.3: {}
- /safer-buffer@2.1.2:
- resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
- dev: false
+ safer-buffer@2.1.2: {}
- /scheduler@0.23.0:
- resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
+ scheduler@0.23.2:
dependencies:
loose-envify: 1.4.0
- dev: false
- /secure-json-parse@2.7.0:
- resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==}
+ secure-json-parse@2.7.0: {}
- /semver@6.3.1:
- resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
- hasBin: true
- dev: false
+ semver@6.3.1: {}
- /semver@7.6.0:
- resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==}
- engines: {node: '>=10'}
- hasBin: true
- dependencies:
- lru-cache: 6.0.0
+ semver@7.6.3: {}
- /send@0.18.0:
- resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==}
- engines: {node: '>= 0.8.0'}
+ send@0.18.0:
dependencies:
debug: 2.6.9
depd: 2.0.0
@@ -3452,11 +4614,8 @@ packages:
statuses: 2.0.1
transitivePeerDependencies:
- supports-color
- dev: false
- /serve-static@1.15.0:
- resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==}
- engines: {node: '>= 0.8.0'}
+ serve-static@1.15.0:
dependencies:
encodeurl: 1.0.2
escape-html: 1.0.3
@@ -3464,18 +4623,12 @@ packages:
send: 0.18.0
transitivePeerDependencies:
- supports-color
- dev: false
- /set-blocking@2.0.0:
- resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
- dev: false
+ set-blocking@2.0.0: {}
- /set-cookie-parser@2.6.0:
- resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==}
+ set-cookie-parser@2.6.0: {}
- /set-function-length@1.2.2:
- resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
- engines: {node: '>= 0.4'}
+ set-function-length@1.2.2:
dependencies:
define-data-property: 1.1.4
es-errors: 1.3.0
@@ -3483,23 +4636,17 @@ packages:
get-intrinsic: 1.2.4
gopd: 1.0.1
has-property-descriptors: 1.0.2
- dev: false
- /setprototypeof@1.2.0:
- resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
- dev: false
+ setprototypeof@1.2.0: {}
- /sharp@0.33.3:
- resolution: {integrity: sha512-vHUeXJU1UvlO/BNwTpT0x/r53WkLUVxrmb5JTgW92fdFCFk0ispLMAeu/jPO2vjkXM1fYUi3K7/qcLF47pwM1A==}
- engines: {libvips: '>=8.15.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- requiresBuild: true
+ sharp@0.33.4:
dependencies:
color: 4.2.3
detect-libc: 2.0.3
- semver: 7.6.0
+ semver: 7.6.3
optionalDependencies:
- '@img/sharp-darwin-arm64': 0.33.3
- '@img/sharp-darwin-x64': 0.33.3
+ '@img/sharp-darwin-arm64': 0.33.4
+ '@img/sharp-darwin-x64': 0.33.4
'@img/sharp-libvips-darwin-arm64': 1.0.2
'@img/sharp-libvips-darwin-x64': 1.0.2
'@img/sharp-libvips-linux-arm': 1.0.2
@@ -3508,155 +4655,99 @@ packages:
'@img/sharp-libvips-linux-x64': 1.0.2
'@img/sharp-libvips-linuxmusl-arm64': 1.0.2
'@img/sharp-libvips-linuxmusl-x64': 1.0.2
- '@img/sharp-linux-arm': 0.33.3
- '@img/sharp-linux-arm64': 0.33.3
- '@img/sharp-linux-s390x': 0.33.3
- '@img/sharp-linux-x64': 0.33.3
- '@img/sharp-linuxmusl-arm64': 0.33.3
- '@img/sharp-linuxmusl-x64': 0.33.3
- '@img/sharp-wasm32': 0.33.3
- '@img/sharp-win32-ia32': 0.33.3
- '@img/sharp-win32-x64': 0.33.3
- dev: false
-
- /shebang-command@2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
+ '@img/sharp-linux-arm': 0.33.4
+ '@img/sharp-linux-arm64': 0.33.4
+ '@img/sharp-linux-s390x': 0.33.4
+ '@img/sharp-linux-x64': 0.33.4
+ '@img/sharp-linuxmusl-arm64': 0.33.4
+ '@img/sharp-linuxmusl-x64': 0.33.4
+ '@img/sharp-wasm32': 0.33.4
+ '@img/sharp-win32-ia32': 0.33.4
+ '@img/sharp-win32-x64': 0.33.4
+
+ shebang-command@2.0.0:
dependencies:
shebang-regex: 3.0.0
- /shebang-regex@3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
+ shebang-regex@3.0.0: {}
- /side-channel@1.0.6:
- resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
- engines: {node: '>= 0.4'}
+ side-channel@1.0.6:
dependencies:
call-bind: 1.0.7
es-errors: 1.3.0
get-intrinsic: 1.2.4
- object-inspect: 1.13.1
- dev: false
+ object-inspect: 1.13.2
- /signal-exit@3.0.7:
- resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+ signal-exit@3.0.7: {}
- /simple-swizzle@0.2.2:
- resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
+ simple-swizzle@0.2.2:
dependencies:
is-arrayish: 0.3.2
- dev: false
- /sirv@2.0.4:
- resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==}
- engines: {node: '>= 10'}
+ sirv@2.0.4:
dependencies:
'@polka/url': 1.0.0-next.25
mrmime: 2.0.0
totalist: 3.0.1
- /sonic-boom@3.8.0:
- resolution: {integrity: sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA==}
+ sonic-boom@4.0.1:
dependencies:
atomic-sleep: 1.0.0
- /source-map-js@1.2.0:
- resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
- engines: {node: '>=0.10.0'}
+ source-map-js@1.2.0: {}
- /source-map-support@0.5.21:
- resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
+ source-map-support@0.5.21:
dependencies:
buffer-from: 1.1.2
source-map: 0.6.1
- /source-map@0.6.1:
- resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
- engines: {node: '>=0.10.0'}
+ source-map@0.6.1: {}
- /spdx-correct@3.2.0:
- resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
+ spdx-correct@3.2.0:
dependencies:
spdx-expression-parse: 3.0.1
- spdx-license-ids: 3.0.17
- dev: true
+ spdx-license-ids: 3.0.18
- /spdx-exceptions@2.5.0:
- resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==}
- dev: true
+ spdx-exceptions@2.5.0: {}
- /spdx-expression-parse@3.0.1:
- resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
+ spdx-expression-parse@3.0.1:
dependencies:
spdx-exceptions: 2.5.0
- spdx-license-ids: 3.0.17
- dev: true
+ spdx-license-ids: 3.0.18
- /spdx-license-ids@3.0.17:
- resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==}
- dev: true
+ spdx-license-ids@3.0.18: {}
- /split2@4.2.0:
- resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
- engines: {node: '>= 10.x'}
-
- /statuses@2.0.1:
- resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
- engines: {node: '>= 0.8'}
- dev: false
+ split2@4.2.0: {}
- /stream-buffers@3.0.2:
- resolution: {integrity: sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ==}
- engines: {node: '>= 0.10.0'}
- dev: false
+ statuses@2.0.1: {}
- /streamsearch@1.1.0:
- resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
- engines: {node: '>=10.0.0'}
- dev: false
+ stream-buffers@3.0.3: {}
- /string-width@4.2.3:
- resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
- engines: {node: '>=8'}
+ string-width@4.2.3:
dependencies:
emoji-regex: 8.0.0
is-fullwidth-code-point: 3.0.0
strip-ansi: 6.0.1
- dev: false
- /string_decoder@1.1.1:
- resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
+ string_decoder@1.1.1:
dependencies:
safe-buffer: 5.1.2
- dev: false
- /string_decoder@1.3.0:
- resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
+ string_decoder@1.3.0:
dependencies:
safe-buffer: 5.2.1
- /strip-ansi@6.0.1:
- resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
- engines: {node: '>=8'}
+ strip-ansi@6.0.1:
dependencies:
ansi-regex: 5.0.1
- dev: false
- /strip-final-newline@2.0.0:
- resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
- engines: {node: '>=6'}
- dev: true
+ strip-final-newline@2.0.0: {}
- /supports-color@5.5.0:
- resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
- engines: {node: '>=4'}
+ supports-color@5.5.0:
dependencies:
has-flag: 3.0.0
- /tar@6.2.1:
- resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==}
- engines: {node: '>=10'}
+ tar@6.2.1:
dependencies:
chownr: 2.0.0
fs-minipass: 2.1.0
@@ -3664,274 +4755,136 @@ packages:
minizlib: 2.1.2
mkdirp: 1.0.4
yallist: 4.0.0
- dev: false
- /telefunc@0.1.71(@babel/core@7.24.3)(react@18.2.0):
- resolution: {integrity: sha512-1AV4At59PiQmrzBEfx8hoboOAyya2xWYKzwWCrFFaPmkwkm5yCEPrH9iWtCvPNBOk7f8VQGF14bmtXczm6tIKg==}
- engines: {node: '>=12.19.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
- '@babel/parser': ^7.0.0
- '@babel/types': ^7.0.0
- react: ^18.0.0
- react-streaming: ^0.3.3
- peerDependenciesMeta:
- '@babel/core':
- optional: true
- '@babel/parser':
- optional: true
- '@babel/types':
- optional: true
- react:
- optional: true
- react-streaming:
- optional: true
+ telefunc@0.1.76(@babel/core@7.24.9)(@babel/parser@7.24.8)(@babel/types@7.24.9)(react@18.3.1):
dependencies:
- '@babel/core': 7.24.3
'@brillout/import': 0.2.3
- '@brillout/json-serializer': 0.5.8
- '@brillout/picocolors': 1.0.10
- '@brillout/vite-plugin-server-entry': 0.4.4
+ '@brillout/json-serializer': 0.5.13
+ '@brillout/picocolors': 1.0.14
+ '@brillout/vite-plugin-server-entry': 0.4.7
es-module-lexer: 0.7.1
- picocolors: 1.0.0
- react: 18.2.0
+ picocolors: 1.0.1
ts-morph: 19.0.0
- dev: false
+ optionalDependencies:
+ '@babel/core': 7.24.9
+ '@babel/parser': 7.24.8
+ '@babel/types': 7.24.9
+ react: 18.3.1
- /text-extensions@2.4.0:
- resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==}
- engines: {node: '>=8'}
- dev: true
+ text-extensions@2.4.0: {}
- /thread-stream@2.4.1:
- resolution: {integrity: sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==}
+ thread-stream@3.1.0:
dependencies:
real-require: 0.2.0
- /through@2.3.8:
- resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
- dev: true
+ through@2.3.8: {}
- /to-fast-properties@2.0.0:
- resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
- engines: {node: '>=4'}
- dev: false
+ to-fast-properties@2.0.0: {}
- /to-regex-range@5.0.1:
- resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
- engines: {node: '>=8.0'}
+ to-regex-range@5.0.1:
dependencies:
is-number: 7.0.0
- /toad-cache@3.7.0:
- resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==}
- engines: {node: '>=12'}
+ toad-cache@3.7.0: {}
- /toidentifier@1.0.1:
- resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
- engines: {node: '>=0.6'}
- dev: false
+ toidentifier@1.0.1: {}
- /totalist@3.0.1:
- resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
- engines: {node: '>=6'}
+ totalist@3.0.1: {}
- /tr46@0.0.3:
- resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
- dev: false
+ tr46@0.0.3: {}
- /ts-morph@19.0.0:
- resolution: {integrity: sha512-D6qcpiJdn46tUqV45vr5UGM2dnIEuTGNxVhg0sk5NX11orcouwj6i1bMqZIz2mZTZB1Hcgy7C3oEVhAT+f6mbQ==}
+ ts-morph@19.0.0:
dependencies:
'@ts-morph/common': 0.20.0
code-block-writer: 12.0.0
- dev: false
- /tslib@2.6.2:
- resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
- dev: false
+ tslib@2.6.3:
+ optional: true
- /type-fest@3.13.1:
- resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==}
- engines: {node: '>=14.16'}
- dev: true
+ type-detect@4.1.0: {}
- /type-fest@4.14.0:
- resolution: {integrity: sha512-on5/Cw89wwqGZQu+yWO0gGMGu8VNxsaW9SB2HE8yJjllEk7IDTwnSN1dUVldYILhYPN5HzD7WAaw2cc/jBfn0Q==}
- engines: {node: '>=16'}
- dev: true
+ type-fest@3.13.1: {}
- /type-is@1.6.18:
- resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
- engines: {node: '>= 0.6'}
+ type-fest@4.23.0: {}
+
+ type-is@1.6.18:
dependencies:
media-typer: 0.3.0
mime-types: 2.1.35
- dev: false
- /typescript@5.4.3:
- resolution: {integrity: sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==}
- engines: {node: '>=14.17'}
- hasBin: true
+ typescript@5.5.4: {}
- /uglify-js@3.17.4:
- resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==}
- engines: {node: '>=0.8.0'}
- hasBin: true
- requiresBuild: true
- dev: true
+ uglify-js@3.19.0:
optional: true
- /undici-types@5.26.5:
- resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+ undici-types@5.26.5: {}
- /unpipe@1.0.0:
- resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
- engines: {node: '>= 0.8'}
- dev: false
+ unpipe@1.0.0: {}
- /update-browserslist-db@1.0.13(browserslist@4.23.0):
- resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
- hasBin: true
- peerDependencies:
- browserslist: '>= 4.21.0'
+ update-browserslist-db@1.1.0(browserslist@4.23.2):
dependencies:
- browserslist: 4.23.0
+ browserslist: 4.23.2
escalade: 3.1.2
- picocolors: 1.0.0
- dev: false
-
- /uri-js@4.4.1:
- resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
- dependencies:
- punycode: 2.3.1
-
- /urlpattern-polyfill@10.0.0:
- resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==}
- dev: false
+ picocolors: 1.0.1
- /util-deprecate@1.0.2:
- resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
- dev: false
+ util-deprecate@1.0.2: {}
- /utils-merge@1.0.1:
- resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
- engines: {node: '>= 0.4.0'}
- dev: false
+ utils-merge@1.0.1: {}
- /validate-npm-package-license@3.0.4:
- resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
+ validate-npm-package-license@3.0.4:
dependencies:
spdx-correct: 3.2.0
spdx-expression-parse: 3.0.1
- dev: true
- /vary@1.1.2:
- resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
- engines: {node: '>= 0.8'}
- dev: false
+ vary@1.1.2: {}
- /vike@0.4.161(patch_hash=4x6h4gn45u3smxaalew7bffdpm)(vite@6.0.0-alpha.11):
- resolution: {integrity: sha512-APiNZS9AuK9JpoJNvxXFxQ6arj3frJzx1kp+gzmXztq8QHa1Sbl5EDUqEGEz3waqO/Q4H0ebRx/W+/UwDk38iQ==}
- engines: {node: '>=16.0.0'}
- hasBin: true
- peerDependencies:
- react-streaming: '>=0.3.5'
- vite: 6.0.0-alpha.11
- peerDependenciesMeta:
- react-streaming:
- optional: true
+ vike@0.4.181(vite@5.3.5(@types/node@20.14.12)):
dependencies:
'@brillout/import': 0.2.3
- '@brillout/json-serializer': 0.5.8
- '@brillout/picocolors': 1.0.10
+ '@brillout/json-serializer': 0.5.13
+ '@brillout/picocolors': 1.0.14
'@brillout/require-shim': 0.1.2
- '@brillout/vite-plugin-server-entry': 0.4.4
- acorn: 8.11.3
+ '@brillout/vite-plugin-server-entry': 0.4.7
+ acorn: 8.12.1
cac: 6.7.14
- es-module-lexer: 1.5.0
+ es-module-lexer: 1.5.4
esbuild: 0.19.12
fast-glob: 3.3.2
+ semver: 7.6.3
sirv: 2.0.4
source-map-support: 0.5.21
- vite: 6.0.0-alpha.11(@types/node@20.11.30)
- patched: true
+ vite: 5.3.5(@types/node@20.14.12)
- /vite@6.0.0-alpha.11(@types/node@20.11.30):
- resolution: {integrity: sha512-Pc0tgTWqdO4HzHpfnHxhVPj85gjrmoC+hEMLvI9vA8jTdSnjm4p6WUmvVfDYguBMCfnNXf1ThnxzS9GUwKxqpg==}
- engines: {node: ^18.0.0 || >=20.0.0}
- hasBin: true
- peerDependencies:
- '@types/node': ^18.0.0 || >=20.0.0
- less: '*'
- lightningcss: ^1.21.0
- sass: '*'
- stylus: '*'
- sugarss: '*'
- terser: ^5.4.0
- peerDependenciesMeta:
- '@types/node':
- optional: true
- less:
- optional: true
- lightningcss:
- optional: true
- sass:
- optional: true
- stylus:
- optional: true
- sugarss:
- optional: true
- terser:
- optional: true
+ vite@5.3.5(@types/node@20.14.12):
dependencies:
- '@types/node': 20.11.30
- esbuild: 0.20.2
- postcss: 8.4.38
- rollup: 4.13.1
+ esbuild: 0.21.5
+ postcss: 8.4.40
+ rollup: 4.19.0
optionalDependencies:
+ '@types/node': 20.14.12
fsevents: 2.3.3
- /webidl-conversions@3.0.1:
- resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
- dev: false
+ webidl-conversions@3.0.1: {}
- /whatwg-url@5.0.0:
- resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
+ whatwg-url@5.0.0:
dependencies:
tr46: 0.0.3
webidl-conversions: 3.0.1
- dev: false
- /which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
- hasBin: true
+ which@2.0.2:
dependencies:
isexe: 2.0.0
- /wide-align@1.1.5:
- resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
+ wide-align@1.1.5:
dependencies:
string-width: 4.2.3
- dev: false
- /wordwrap@1.0.0:
- resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}
- dev: true
+ wordwrap@1.0.0: {}
- /wrappy@1.0.2:
- resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
- dev: false
+ wrappy@1.0.2: {}
- /yallist@3.1.1:
- resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
- dev: false
+ yallist@3.1.1: {}
- /yallist@4.0.0:
- resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+ yallist@4.0.0: {}
- /yocto-queue@1.0.0:
- resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}
- engines: {node: '>=12.20'}
- dev: true
+ yocto-queue@1.1.1: {}
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 1598933..92a5978 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -1,3 +1,3 @@
packages:
+ - 'test/*'
- 'packages/*'
- - 'examples/*'
diff --git a/remove_all_deps.sh b/remove_all_deps.sh
deleted file mode 100755
index b0b9206..0000000
--- a/remove_all_deps.sh
+++ /dev/null
@@ -1 +0,0 @@
-find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +
\ No newline at end of file
diff --git a/test/vike-node/.dev-express.test.ts b/test/vike-node/.dev-express.test.ts
new file mode 100644
index 0000000..474b92e
--- /dev/null
+++ b/test/vike-node/.dev-express.test.ts
@@ -0,0 +1,4 @@
+process.env.VIKE_NODE_FRAMEWORK = 'express'
+
+import { testRun } from './.testRun'
+testRun('npm run dev')
diff --git a/test/vike-node/.dev-fastify.test.ts b/test/vike-node/.dev-fastify.test.ts
new file mode 100644
index 0000000..d0db908
--- /dev/null
+++ b/test/vike-node/.dev-fastify.test.ts
@@ -0,0 +1,4 @@
+process.env.VIKE_NODE_FRAMEWORK = 'fastify'
+
+import { testRun } from './.testRun'
+testRun('npm run dev')
diff --git a/test/vike-node/.dev-hono.test.ts b/test/vike-node/.dev-hono.test.ts
new file mode 100644
index 0000000..21e6b14
--- /dev/null
+++ b/test/vike-node/.dev-hono.test.ts
@@ -0,0 +1,4 @@
+process.env.VIKE_NODE_FRAMEWORK = 'hono'
+
+import { testRun } from './.testRun'
+testRun('npm run dev')
diff --git a/examples/vike/.gitignore b/test/vike-node/.gitignore
similarity index 100%
rename from examples/vike/.gitignore
rename to test/vike-node/.gitignore
diff --git a/test/vike-node/.prod-express.test.ts b/test/vike-node/.prod-express.test.ts
new file mode 100644
index 0000000..fbcfbcd
--- /dev/null
+++ b/test/vike-node/.prod-express.test.ts
@@ -0,0 +1,4 @@
+process.env.VIKE_NODE_FRAMEWORK = 'express'
+
+import { testRun } from './.testRun'
+testRun('npm run prod')
diff --git a/test/vike-node/.prod-fastify.test.ts b/test/vike-node/.prod-fastify.test.ts
new file mode 100644
index 0000000..2e9f9fa
--- /dev/null
+++ b/test/vike-node/.prod-fastify.test.ts
@@ -0,0 +1,4 @@
+process.env.VIKE_NODE_FRAMEWORK = 'fastify'
+
+import { testRun } from './.testRun'
+testRun('npm run prod')
diff --git a/test/vike-node/.prod-hono.test.ts b/test/vike-node/.prod-hono.test.ts
new file mode 100644
index 0000000..fdc5814
--- /dev/null
+++ b/test/vike-node/.prod-hono.test.ts
@@ -0,0 +1,4 @@
+process.env.VIKE_NODE_FRAMEWORK = 'hono'
+
+import { testRun } from './.testRun'
+testRun('npm run prod')
diff --git a/test/vike-node/.testCiJob.json b/test/vike-node/.testCiJob.json
new file mode 100644
index 0000000..84628df
--- /dev/null
+++ b/test/vike-node/.testCiJob.json
@@ -0,0 +1 @@
+{ "name": "Unit Tests E2E" }
diff --git a/test/vike-node/.testRun.ts b/test/vike-node/.testRun.ts
new file mode 100644
index 0000000..8748340
--- /dev/null
+++ b/test/vike-node/.testRun.ts
@@ -0,0 +1,100 @@
+export { testRun }
+
+import { page, test, expect, run, getServerUrl, autoRetry, fetchHtml, isCI } from '@brillout/test-e2e'
+
+function testRun(cmd: 'npm run dev' | 'npm run prod') {
+ run(cmd, { serverUrl: 'http://127.0.0.1:3000' })
+ const isProd = cmd === 'npm run prod'
+
+ test('HTML', async () => {
+ const html = await fetchHtml('/')
+ expect(html).toContain('To-do List
')
+ expect(html).toContain('Buy milk')
+ expect(html).toContain('Buy strawberries')
+ })
+
+ test('Add to-do item', async () => {
+ await page.goto(`${getServerUrl()}/`)
+ {
+ const text = await page.textContent('body')
+ expect(text).toContain('To-do List')
+ expect(text).toContain('Buy milk')
+ expect(text).toContain('Buy strawberries')
+ }
+
+ // Await hydration
+ expect(await page.textContent('button[type="button"]')).toBe('Counter 0')
+ await autoRetry(async () => {
+ await page.click('button[type="button"]')
+ expect(await page.textContent('button[type="button"]')).toContain('Counter 1')
+ })
+
+ // Await suspense boundary (for examples/react-streaming)
+ await autoRetry(async () => {
+ expect(await page.textContent('body')).toContain('Buy milk')
+ })
+ await page.fill('input[type="text"]', 'Buy bananas')
+ await page.click('button[type="submit"]')
+ await autoRetry(async () => {
+ expect(await getNumberOfItems()).toBe(4)
+ })
+ expect(await page.textContent('body')).toContain('Buy bananas')
+ })
+
+ test('New to-do item is persisted & rendered to HTML', async () => {
+ const html = await fetchHtml('/')
+ expect(html).toContain('Buy bananas')
+ })
+
+ test('argon2', async () => {
+ await page.goto(`${getServerUrl()}/argon2`)
+ await page.fill('input[type="text"]', 'correct-password')
+ await autoRetry(async () => {
+ await page.click('button[type="submit"]')
+ expect(await page.textContent('body')).toContain('Valid password')
+ })
+ })
+
+ test('sharp', async () => {
+ await page.goto(`${getServerUrl()}/sharp`)
+ await autoRetry(async () => {
+ await page.click('button[type="button"]')
+ expect(await page.textContent('body')).toContain('240000 bytes')
+ })
+ })
+
+ test('x-test header is present', async () => {
+ const response = await page.goto(`${getServerUrl()}/`)
+ const xTestHeader = await response.headerValue('x-test')
+ expect(xTestHeader).toBe('test')
+ })
+
+ // fastify should work but broken on ci
+ // let's leave it out for now
+ if (!isProd && !(isCI && process.env.VIKE_NODE_FRAMEWORK === 'fastify'))
+ test('vite hmr websocket', async () => {
+ const logs = []
+ page.on('console', (msg) => logs.push(msg.text()))
+
+ await page.goto(`${getServerUrl()}/`)
+
+ // Wait for the connection message
+ await autoRetry(async () => {
+ const connected = logs.some((log) => log.includes('[vite] connected.'))
+ expect(connected).toBe(true)
+ })
+ })
+
+ if (isProd)
+ test('Brotli compression and headers in production', async () => {
+ const response = await page.goto(`${getServerUrl()}/`)
+ const contentEncoding = await response.headerValue('content-encoding')
+ expect(contentEncoding).toBe('br')
+ const varyHeader = await response.headerValue('vary')
+ expect(varyHeader).toContain('Accept-Encoding')
+ })
+}
+
+async function getNumberOfItems() {
+ return await page.evaluate(() => document.querySelectorAll('li').length)
+}
diff --git a/examples/vike/database/todoItems.ts b/test/vike-node/database/todoItems.ts
similarity index 100%
rename from examples/vike/database/todoItems.ts
rename to test/vike-node/database/todoItems.ts
diff --git a/examples/vike/package.json b/test/vike-node/package.json
similarity index 67%
rename from examples/vike/package.json
rename to test/vike-node/package.json
index 2eb0111..c722701 100644
--- a/examples/vike/package.json
+++ b/test/vike-node/package.json
@@ -1,15 +1,13 @@
{
"scripts": {
- "dev": "node --trace-warnings node_modules/vite/bin/vite",
+ "dev": "vite",
"build": "vite build",
"prepare": "pnpm prisma generate && pnpm prisma db push",
"prod": "pnpm run build && cp ./prisma/test.db ./dist/server/node_modules/.prisma/client && cross-env NODE_ENV=production node dist/server/index.mjs"
},
"dependencies": {
- "@brillout/json-serializer": "^0.5.8",
- "@hattip/adapter-node": "^0.0.45",
- "@hattip/router": "^0.0.45",
- "@hono/node-server": "^1.9.0",
+ "@hono/node-server": "^1.12.0",
+ "hono": "^4.5.1",
"@node-rs/argon2": "^1.7.2",
"@prisma/client": "^5.9.1",
"@types/express": "^4.17.21",
@@ -19,16 +17,15 @@
"cross-env": "^7.0.3",
"express": "^4.18.2",
"fastify": "^4.26.1",
- "hono": "^4.1.5",
"prisma": "^5.9.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"sharp": "^0.33.2",
"telefunc": "^0.1.71",
- "typescript": "^5.3.3",
- "vike": "0.4.161",
- "vike-node": "^0.0.1",
- "vite": "6.0.0-alpha.11"
+ "typescript": "^5.5.4",
+ "vike": "^0.4.161",
+ "vike-node": "^0.1.0",
+ "vite": "^5.0.10"
},
"type": "module"
-}
\ No newline at end of file
+}
diff --git a/test/vike-node/pages/+config.ts b/test/vike-node/pages/+config.ts
new file mode 100644
index 0000000..8236377
--- /dev/null
+++ b/test/vike-node/pages/+config.ts
@@ -0,0 +1,5 @@
+export default {
+ passToClient: ['pageProps'],
+ clientRouting: true,
+ hydrationCanBeAborted: true
+}
diff --git a/examples/vike/pages/about/+Page.tsx b/test/vike-node/pages/about/+Page.tsx
similarity index 100%
rename from examples/vike/pages/about/+Page.tsx
rename to test/vike-node/pages/about/+Page.tsx
diff --git a/examples/vike/pages/argon2/+Page.tsx b/test/vike-node/pages/argon2/+Page.tsx
similarity index 100%
rename from examples/vike/pages/argon2/+Page.tsx
rename to test/vike-node/pages/argon2/+Page.tsx
diff --git a/examples/vike/pages/argon2/Page.telefunc.ts b/test/vike-node/pages/argon2/Page.telefunc.ts
similarity index 100%
rename from examples/vike/pages/argon2/Page.telefunc.ts
rename to test/vike-node/pages/argon2/Page.telefunc.ts
diff --git a/examples/vike/pages/index/+Page.tsx b/test/vike-node/pages/index/+Page.tsx
similarity index 100%
rename from examples/vike/pages/index/+Page.tsx
rename to test/vike-node/pages/index/+Page.tsx
diff --git a/examples/vike/pages/index/+onBeforeRender.ts b/test/vike-node/pages/index/+onBeforeRender.ts
similarity index 100%
rename from examples/vike/pages/index/+onBeforeRender.ts
rename to test/vike-node/pages/index/+onBeforeRender.ts
diff --git a/examples/vike/pages/index/TodoList.telefunc.ts b/test/vike-node/pages/index/TodoList.telefunc.ts
similarity index 100%
rename from examples/vike/pages/index/TodoList.telefunc.ts
rename to test/vike-node/pages/index/TodoList.telefunc.ts
diff --git a/examples/vike/pages/index/TodoList.tsx b/test/vike-node/pages/index/TodoList.tsx
similarity index 100%
rename from examples/vike/pages/index/TodoList.tsx
rename to test/vike-node/pages/index/TodoList.tsx
diff --git a/examples/vike/pages/sharp/+Page.tsx b/test/vike-node/pages/sharp/+Page.tsx
similarity index 56%
rename from examples/vike/pages/sharp/+Page.tsx
rename to test/vike-node/pages/sharp/+Page.tsx
index 6a7a250..729334c 100644
--- a/examples/vike/pages/sharp/+Page.tsx
+++ b/test/vike-node/pages/sharp/+Page.tsx
@@ -1,18 +1,21 @@
export default Page
-import React from 'react'
+import React, { useState } from 'react'
import { onCreateImage } from './Page.telefunc'
function Page() {
+ const [byteLength, setByteLength] = useState(0)
return (
<>
Example of sharp
+ {byteLength} bytes
>
)
}
diff --git a/examples/vike/pages/sharp/Page.telefunc.ts b/test/vike-node/pages/sharp/Page.telefunc.ts
similarity index 84%
rename from examples/vike/pages/sharp/Page.telefunc.ts
rename to test/vike-node/pages/sharp/Page.telefunc.ts
index 99aa0d1..ed8d011 100644
--- a/examples/vike/pages/sharp/Page.telefunc.ts
+++ b/test/vike-node/pages/sharp/Page.telefunc.ts
@@ -13,7 +13,5 @@ async function onCreateImage() {
.raw()
.toBuffer()
- console.log(imageData.byteLength)
-
- return true
+ return imageData.byteLength
}
diff --git a/examples/vike/prisma/schema.prisma b/test/vike-node/prisma/schema.prisma
similarity index 100%
rename from examples/vike/prisma/schema.prisma
rename to test/vike-node/prisma/schema.prisma
diff --git a/examples/vike/readme.md b/test/vike-node/readme.md
similarity index 100%
rename from examples/vike/readme.md
rename to test/vike-node/readme.md
diff --git a/examples/vike/renderer/+onRenderClient.tsx b/test/vike-node/renderer/+onRenderClient.tsx
similarity index 100%
rename from examples/vike/renderer/+onRenderClient.tsx
rename to test/vike-node/renderer/+onRenderClient.tsx
diff --git a/examples/vike/renderer/+onRenderHtml.tsx b/test/vike-node/renderer/+onRenderHtml.tsx
similarity index 100%
rename from examples/vike/renderer/+onRenderHtml.tsx
rename to test/vike-node/renderer/+onRenderHtml.tsx
diff --git a/examples/vike/renderer/PageLayout.css b/test/vike-node/renderer/PageLayout.css
similarity index 100%
rename from examples/vike/renderer/PageLayout.css
rename to test/vike-node/renderer/PageLayout.css
diff --git a/examples/vike/renderer/PageLayout.tsx b/test/vike-node/renderer/PageLayout.tsx
similarity index 100%
rename from examples/vike/renderer/PageLayout.tsx
rename to test/vike-node/renderer/PageLayout.tsx
diff --git a/examples/vike/renderer/types.ts b/test/vike-node/renderer/types.ts
similarity index 88%
rename from examples/vike/renderer/types.ts
rename to test/vike-node/renderer/types.ts
index bd0ce0b..0e31985 100644
--- a/examples/vike/renderer/types.ts
+++ b/test/vike-node/renderer/types.ts
@@ -1,7 +1,5 @@
export type { PageProps }
-import type fetch from 'node-fetch'
-
type Page = (pageProps: PageProps) => React.ReactElement
type PageProps = Record
diff --git a/examples/vike/server/index-express.ts b/test/vike-node/server/index-express.ts
similarity index 92%
rename from examples/vike/server/index-express.ts
rename to test/vike-node/server/index-express.ts
index 0e5079d..0ae46a4 100644
--- a/examples/vike/server/index-express.ts
+++ b/test/vike-node/server/index-express.ts
@@ -8,7 +8,6 @@ import { two } from './shared-chunk.js'
if (two() !== 2) {
throw new Error()
}
-
startServer()
new Worker(new URL('./worker.mjs', import.meta.url))
@@ -22,7 +21,10 @@ async function startServer() {
const { body, statusCode, contentType } = httpResponse
res.status(statusCode).type(contentType).send(body)
})
-
+ app.use((req, res, next) => {
+ res.set('x-test', 'test')
+ next()
+ })
app.use(vike())
const port = process.env.PORT || 3000
app.listen(port)
diff --git a/examples/vike/server/index-fastify.ts b/test/vike-node/server/index-fastify.ts
similarity index 85%
rename from examples/vike/server/index-fastify.ts
rename to test/vike-node/server/index-fastify.ts
index 4396ad1..d895704 100644
--- a/examples/vike/server/index-fastify.ts
+++ b/test/vike-node/server/index-fastify.ts
@@ -1,3 +1,4 @@
+Error.stackTraceLimit = Infinity
import fastify from 'fastify'
import { telefunc } from 'telefunc'
import { vike } from 'vike-node/fastify'
@@ -21,6 +22,11 @@ async function startServer() {
res.status(statusCode).type(contentType).send(body)
})
+ app.addHook('onSend', (request, reply, payload, done) => {
+ reply.header('x-test', 'test')
+ done()
+ })
+
app.register(vike())
const port = process.env.PORT || 3000
app.listen({ port: +port })
diff --git a/test/vike-node/server/index-hono.ts b/test/vike-node/server/index-hono.ts
new file mode 100644
index 0000000..343b2e4
--- /dev/null
+++ b/test/vike-node/server/index-hono.ts
@@ -0,0 +1,41 @@
+import { serve } from '@hono/node-server'
+import { Hono } from 'hono'
+import { telefunc } from 'telefunc'
+import vike from 'vike-node/hono'
+import { init } from '../database/todoItems'
+
+startServer()
+
+async function startServer() {
+ await init()
+ const app = new Hono()
+ const port = process.env.PORT || 3000
+ app.post('/_telefunc', async (ctx) => {
+ const context = {}
+ const httpResponse = await telefunc({
+ url: ctx.req.url,
+ method: ctx.req.method,
+ body: await ctx.req.text(),
+ context
+ })
+ const { body, statusCode, contentType } = httpResponse
+ return new Response(body, { headers: { 'content-type': contentType }, status: statusCode })
+ })
+
+ app.use('*', async (ctx, next) => {
+ await next()
+ ctx.header('x-test', 'test')
+ })
+
+ app.use(vike())
+
+ serve(
+ {
+ fetch: app.fetch,
+ port: +port,
+ // Needed for Bun
+ overrideGlobalObjects: false
+ },
+ () => console.log(`Server running at http://localhost:${port}`)
+ )
+}
diff --git a/examples/vike/server/shared-chunk.js b/test/vike-node/server/shared-chunk.js
similarity index 100%
rename from examples/vike/server/shared-chunk.js
rename to test/vike-node/server/shared-chunk.js
diff --git a/examples/vike/server/worker.mjs b/test/vike-node/server/worker.mjs
similarity index 99%
rename from examples/vike/server/worker.mjs
rename to test/vike-node/server/worker.mjs
index 6463337..42b40c9 100644
--- a/examples/vike/server/worker.mjs
+++ b/test/vike-node/server/worker.mjs
@@ -9,7 +9,6 @@ const argon2Opts = {
salt_length: 16,
key_length: 32
}
-
;(async () => {
const hashed = await hash('password', argon2Opts)
if (typeof hashed !== 'string') {
diff --git a/examples/vike/tsconfig.json b/test/vike-node/tsconfig.json
similarity index 61%
rename from examples/vike/tsconfig.json
rename to test/vike-node/tsconfig.json
index 3f45f06..ba03275 100644
--- a/examples/vike/tsconfig.json
+++ b/test/vike-node/tsconfig.json
@@ -1,14 +1,16 @@
{
"compilerOptions": {
- "strict": true,
- "module": "ES2020",
- "moduleResolution": "Node",
+ "module": "ESNext",
+ "moduleResolution": "Bundler",
"target": "ES2020",
"lib": ["DOM", "DOM.Iterable", "ESNext"],
"types": ["vite/client"],
"jsx": "react",
- "skipLibCheck": true,
"esModuleInterop": true,
- "allowJs": true
+ "skipLibCheck": true,
+ "noUncheckedIndexedAccess": true,
+ "strict": true,
+ "allowJs": true,
+ "outDir": "./dist/"
}
}
diff --git a/examples/vike/vite.config.ts b/test/vike-node/vite.config.ts
similarity index 55%
rename from examples/vike/vite.config.ts
rename to test/vike-node/vite.config.ts
index 6e1c891..955a02f 100644
--- a/examples/vike/vite.config.ts
+++ b/test/vike-node/vite.config.ts
@@ -1,13 +1,15 @@
import react from '@vitejs/plugin-react'
import { telefunc } from 'telefunc/vite'
-import vikeNode from 'vike-node/plugin'
import vike from 'vike/plugin'
+import vikeNode from 'vike-node/plugin'
+
+const FRAMEWORK = process.env.VIKE_NODE_FRAMEWORK || 'fastify'
export default {
plugins: [
react(),
vike(),
- vikeNode(),
+ vikeNode({ entry: { index: `./server/index-${FRAMEWORK}.ts`, worker: './server/worker.mjs' }, standalone: true }),
telefunc()
]
}