feat: class validator middleware for Hono (#788)

* setup middleware package

* add implementation middleware

* add documentation + updae tsconfig for decorator handling

* add tests

* fix format class-validator middleware

* Add Readme

* Update changelog & changeset

* update changelog 2

* update changelog 2

* fix working directory ci

* rm jest dependencies

change to tsup for build

fix ci name

* revert changes not related to class-validator

* remove the changeset since Changesets will add a changeset automatically

* package description
pull/816/head
Pr0m3th3us 2024-11-08 04:08:18 +01:00 committed by GitHub
parent 28ca0f3284
commit a5c20b3428
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 1212 additions and 1 deletions

View File

@ -0,0 +1,5 @@
---
'@hono/class-validator': major
---
First release

View File

@ -0,0 +1,25 @@
name: ci-class-validator
on:
push:
branches: [main]
paths:
- 'packages/class-validator/**'
pull_request:
branches: ['*']
paths:
- 'packages/class-validator/**'
jobs:
ci:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./packages/class-validator
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20.x
- run: yarn install --frozen-lockfile
- run: yarn build
- run: yarn test

View File

@ -10,6 +10,7 @@
"scripts": {
"build:hello": "yarn workspace @hono/hello build",
"build:zod-validator": "yarn workspace @hono/zod-validator build",
"build:class-validator": "yarn workspace @hono/class-validator build",
"build:arktype-validator": "yarn workspace @hono/arktype-validator build",
"build:qwik-city": "yarn workspace @hono/qwik-city build",
"build:graphql-server": "yarn workspace @hono/graphql-server build",

View File

@ -0,0 +1,56 @@
# Class-validator middleware for Hono
The validator middleware using [class-validator](https://github.com/typestack/class-validator) for [Hono](https://github.com/honojs/hono) applications.
## Usage
```ts
import { classValidator } from '@hono/class-validator'
import { IsInt, IsString } from 'class-validator'
class CreateUserDto {
@IsString()
name!: string;
@IsInt()
age!: number;
}
const route = app.post('/user', classValidator('json', CreateUserDto), (c) => {
const user = c.req.valid('json')
return c.json({ success: true, message: `${user.name} is ${user.age}` })
})
```
With hook:
```ts
import { classValidator } from '@hono/class-validator'
import { IsInt, IsString } from 'class-validator'
class CreateUserDto {
@IsString()
name!: string;
@IsInt()
age!: number;
}
app.post(
'/user', classValidator('json', CreateUserDto, (result, c) => {
if (!result.success) {
return c.text('Invalid!', 400)
}
})
//...
)
```
## Author
**Pr0m3ht3us** - https://github.com/pr0m3th3usex
## License
MIT

View File

@ -0,0 +1,47 @@
{
"name": "@hono/class-validator",
"packageManager": "yarn@4.0.2",
"description": "Validator middleware using class-validator",
"version": "0.1.0",
"type": "module",
"main": "dist/index.js",
"module": "dist/index.js",
"types": "dist/index.d.ts",
"exports": {
".": {
"import": "./dist/index.js",
"types": "./dist/index.d.ts"
}
},
"scripts": {
"test": "vitest --run",
"build": "rimraf dist && tsup ./src/index.ts --format esm,cjs --dts",
"prerelease": "yarn build && yarn test",
"release": "yarn publish"
},
"license": "MIT",
"publishConfig": {
"registry": "https://registry.npmjs.org",
"access": "public"
},
"repository": {
"type": "git",
"url": "https://github.com/honojs/middleware.git"
},
"homepage": "https://github.com/honojs/middleware",
"peerDependencies": {
"hono": ">=3.9.0"
},
"devDependencies": {
"hono": "^4.0.10",
"rimraf": "^5.0.5",
"tsup": "^8.3.5",
"typescript": "^5.3.3",
"vitest": "^1.4.0"
},
"dependencies": {
"class-transformer": "^0.5.1",
"class-validator": "^0.14.1",
"reflect-metadata": "^0.2.2"
}
}

View File

@ -0,0 +1,158 @@
import 'reflect-metadata'
import { validator } from 'hono/validator'
import { ClassConstructor, ClassTransformOptions, plainToClass } from 'class-transformer'
import { Context, Env, Input, MiddlewareHandler, TypedResponse, ValidationTargets } from 'hono'
import { ValidationError, validate } from 'class-validator'
/**
* Hono middleware that validates incoming data using class-validator(https://github.com/typestack/class-validator).
*
* ---
*
* No Hook
*
* ```ts
* import { classValidator } from '@hono/class-validator'
* import { IsInt, IsString } from 'class-validator'
*
* class CreateUserDto {
* @IsString()
* name!: string;
*
* @IsInt()
* age!: number;
* }
*
*
* const route = app.post('/user', classValidator('json', CreateUserDto), (c) => {
* const user = c.req.valid('json')
* return c.json({ success: true, message: `${user.name} is ${user.age}` })
* })
* ```
*
* ---
* Hook
*
* ```ts
* import { classValidator } from '@hono/class-validator'
* import { IsInt, IsString } from 'class-validator'
*
* class CreateUserDto {
* @IsString()
* name!: string;
*
* @IsInt()
* age!: number;
* }
*
* app.post(
* '/user',
* classValidator('json', CreateUserDto, (result, c) => {
* if (!result.success) {
* return c.text('Invalid!', 400)
* }
* })
* //...
* )
* ```
*/
type Hook<
T,
E extends Env,
P extends string,
Target extends keyof ValidationTargets = keyof ValidationTargets,
O = object
> = (
result: ({ success: true } | { success: false; errors: ValidationError[] }) & {
data: T
target: Target
},
c: Context<E, P>
) => Response | void | TypedResponse<O> | Promise<Response | void | TypedResponse<O>>
type HasUndefined<T> = undefined extends T ? true : false
type HasClassConstructor<T> = ClassConstructor<any> extends T ? true : false
export type StaticObject<T extends ClassConstructor<any>> = {
[K in keyof InstanceType<T>]: HasClassConstructor<InstanceType<T>[K]> extends true
? StaticObject<InstanceType<T>[K]>
: InstanceType<T>[K]
}
const parseAndValidate = async <T extends ClassConstructor<any>>(
dto: T,
obj: object,
options: ClassTransformOptions
): Promise<
{ success: false; errors: ValidationError[] } | { success: true; output: InstanceType<T> }
> => {
// tranform the literal object to class object
const objInstance = plainToClass(dto, obj, options)
// validating and check the errors, throw the errors if exist
const errors = await validate(objInstance)
// errors is an array of validation errors
if (errors.length > 0) {
return {
success: false,
errors,
}
}
return { success: true, output: objInstance as InstanceType<T> }
}
export const classValidator = <
T extends ClassConstructor<any>,
Output extends InstanceType<T> = InstanceType<T>,
Target extends keyof ValidationTargets = keyof ValidationTargets,
E extends Env = Env,
P extends string = string,
In = StaticObject<T>,
I extends Input = {
in: HasUndefined<In> extends true
? {
[K in Target]?: K extends 'json'
? In
: HasUndefined<keyof ValidationTargets[K]> extends true
? { [K2 in keyof In]?: ValidationTargets[K][K2] }
: { [K2 in keyof In]: ValidationTargets[K][K2] }
}
: {
[K in Target]: K extends 'json'
? In
: HasUndefined<keyof ValidationTargets[K]> extends true
? { [K2 in keyof In]?: ValidationTargets[K][K2] }
: { [K2 in keyof In]: ValidationTargets[K][K2] }
}
out: { [K in Target]: Output }
},
V extends I = I
>(
target: Target,
dataType: T,
hook?: Hook<Output, E, P, Target>,
options: ClassTransformOptions = { enableImplicitConversion: false }
): MiddlewareHandler<E, P, V> =>
// @ts-expect-error not typed well
validator(target, async (data, c) => {
const result = await parseAndValidate(dataType, data, options)
if (hook) {
const hookResult = hook({ ...result, data, target }, c)
if (hookResult instanceof Response || hookResult instanceof Promise) {
if ('response' in hookResult) {
return hookResult.response
}
return hookResult
}
}
if (!result.success) {
return c.json({ errors: result.errors }, 400)
}
return result.output
})

View File

@ -0,0 +1,262 @@
import { Hono } from 'hono'
import { classValidator } from '../src'
import type { Equal, Expect } from 'hono/utils/types'
import { IsInt, IsString, ValidateNested, ValidationError } from 'class-validator'
import { ExtractSchema } from 'hono/types'
import { Type } from 'class-transformer'
describe('Basic', () => {
const app = new Hono()
class UserDto {
@IsString()
name!: string
@IsInt()
age!: number
}
const route = app.post('/author', classValidator('json', UserDto), (c) => {
const data = c.req.valid('json')
return c.json({
success: true,
message: `${data.name} is ${data.age}`,
})
})
type Actual = ExtractSchema<typeof route>
type Expected = {
'/author': {
$post: {
input: {
json: {
name: string
age: number
}
}
output: {
success: boolean
message: string
}
}
}
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
type verify = Expect<Equal<Expected, Actual>>
it('Should return 200 response', async () => {
const req = new Request('http://localhost/author', {
body: JSON.stringify({
name: 'Superman',
age: 20,
}),
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
})
const res = await app.request(req)
expect(res).not.toBeNull()
expect(res.status).toBe(200)
expect(await res.json()).toEqual({
success: true,
message: 'Superman is 20',
})
})
it('Should return 400 response', async () => {
const req = new Request('http://localhost/author', {
body: JSON.stringify({
name: 'Superman',
age: '20',
}),
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
})
const res = await app.request(req)
expect(res).not.toBeNull()
expect(res.status).toBe(400)
const data = (await res.json()) as { errors: ValidationError[] }
expect(data.errors.length).toBe(1)
})
})
describe('With Hook', () => {
const app = new Hono()
class PostDto {
@IsInt()
id!: number
@IsString()
title!: string
}
app
.post(
'/post',
classValidator('json', PostDto, (result, c) => {
if (!result.success) {
return c.text('Invalid!', 400)
}
const data = result.data
return c.text(`${data.id} is valid!`)
}),
(c) => {
const data = c.req.valid('json')
return c.json({
success: true,
message: `${data.id} is ${data.title}`,
})
}
)
.post(
'/errorTest',
classValidator('json', PostDto, (result, c) => {
return c.json(result, 400)
}),
(c) => {
const data = c.req.valid('json')
return c.json({
success: true,
message: `${data.id} is ${data.title}`,
})
}
)
it('Should return 200 response', async () => {
const req = new Request('http://localhost/post', {
body: JSON.stringify({
id: 123,
title: 'Hello',
}),
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
})
const res = await app.request(req)
expect(res).not.toBeNull()
expect(res.status).toBe(200)
expect(await res.text()).toBe('123 is valid!')
})
it('Should return 400 response', async () => {
const req = new Request('http://localhost/post', {
body: JSON.stringify({
id: '123',
title: 'Hello',
}),
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
})
const res = await app.request(req)
expect(res).not.toBeNull()
expect(res.status).toBe(400)
})
it('Should return 400 response and error array', async () => {
const req = new Request('http://localhost/errorTest', {
body: JSON.stringify({
id: 123,
}),
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
})
const res = await app.request(req)
expect(res).not.toBeNull()
expect(res.status).toBe(400)
const { errors, success } = (await res.json()) as {
success: boolean
errors: ValidationError[]
}
expect(success).toBe(false)
expect(Array.isArray(errors)).toBe(true)
})
})
describe('Nested DTO', () => {
const app = new Hono()
class AuthorDto {
@IsString()
name!: string
@ValidateNested({ each: true })
@Type(() => PostDto)
posts!: PostDto[]
}
class PostDto {
@IsInt()
id!: number
@IsString()
title!: string
}
app.post('/author', classValidator('json', AuthorDto), (c) => {
const data = c.req.valid('json')
return c.json({
success: true,
message: `Posts sent: ${data.posts.length}`,
})
})
it('Should return 200 response', async () => {
const req = new Request('http://localhost/author', {
body: JSON.stringify({
name: 'Superman',
posts: [
{
id: 1,
title: 'Volume 1',
},
],
}),
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
})
const res = await app.request(req)
expect(res).not.toBeNull()
expect(res.status).toBe(200)
expect(await res.json()).toEqual({
success: true,
message: 'Posts sent: 1',
})
})
it('Should return 400 response', async () => {
const req = new Request('http://localhost/author', {
body: JSON.stringify({
name: 'Superman',
posts: [
{
id: '1223',
name: 'Error id',
},
],
}),
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
})
const res = await app.request(req)
expect(res).not.toBeNull()
expect(res.status).toBe(400)
const data = (await res.json()) as { errors: ValidationError[] }
expect(data.errors.length).toBe(1)
})
})

View File

@ -0,0 +1,12 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"rootDir": "./src",
"outDir": "./dist",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
},
"include": [
"src/**/*.ts"
],
}

View File

@ -0,0 +1,14 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"types": [
"vitest/globals",
],
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
},
"include": [
"src/",
"test/"
],
}

View File

@ -0,0 +1,10 @@
import { defineConfig } from 'vitest/config'
export default defineConfig({
test: {
globals: true,
typecheck: {
tsconfig: './tsconfig.vitest.json',
},
},
})

623
yarn.lock
View File

@ -1103,6 +1103,13 @@ __metadata:
languageName: node
linkType: hard
"@esbuild/aix-ppc64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/aix-ppc64@npm:0.24.0"
conditions: os=aix & cpu=ppc64
languageName: node
linkType: hard
"@esbuild/android-arm64@npm:0.17.19":
version: 0.17.19
resolution: "@esbuild/android-arm64@npm:0.17.19"
@ -1145,6 +1152,13 @@ __metadata:
languageName: node
linkType: hard
"@esbuild/android-arm64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/android-arm64@npm:0.24.0"
conditions: os=android & cpu=arm64
languageName: node
linkType: hard
"@esbuild/android-arm@npm:0.17.19":
version: 0.17.19
resolution: "@esbuild/android-arm@npm:0.17.19"
@ -1187,6 +1201,13 @@ __metadata:
languageName: node
linkType: hard
"@esbuild/android-arm@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/android-arm@npm:0.24.0"
conditions: os=android & cpu=arm
languageName: node
linkType: hard
"@esbuild/android-x64@npm:0.17.19":
version: 0.17.19
resolution: "@esbuild/android-x64@npm:0.17.19"
@ -1229,6 +1250,13 @@ __metadata:
languageName: node
linkType: hard
"@esbuild/android-x64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/android-x64@npm:0.24.0"
conditions: os=android & cpu=x64
languageName: node
linkType: hard
"@esbuild/darwin-arm64@npm:0.17.19":
version: 0.17.19
resolution: "@esbuild/darwin-arm64@npm:0.17.19"
@ -1271,6 +1299,13 @@ __metadata:
languageName: node
linkType: hard
"@esbuild/darwin-arm64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/darwin-arm64@npm:0.24.0"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
"@esbuild/darwin-x64@npm:0.17.19":
version: 0.17.19
resolution: "@esbuild/darwin-x64@npm:0.17.19"
@ -1313,6 +1348,13 @@ __metadata:
languageName: node
linkType: hard
"@esbuild/darwin-x64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/darwin-x64@npm:0.24.0"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
"@esbuild/freebsd-arm64@npm:0.17.19":
version: 0.17.19
resolution: "@esbuild/freebsd-arm64@npm:0.17.19"
@ -1355,6 +1397,13 @@ __metadata:
languageName: node
linkType: hard
"@esbuild/freebsd-arm64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/freebsd-arm64@npm:0.24.0"
conditions: os=freebsd & cpu=arm64
languageName: node
linkType: hard
"@esbuild/freebsd-x64@npm:0.17.19":
version: 0.17.19
resolution: "@esbuild/freebsd-x64@npm:0.17.19"
@ -1397,6 +1446,13 @@ __metadata:
languageName: node
linkType: hard
"@esbuild/freebsd-x64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/freebsd-x64@npm:0.24.0"
conditions: os=freebsd & cpu=x64
languageName: node
linkType: hard
"@esbuild/linux-arm64@npm:0.17.19":
version: 0.17.19
resolution: "@esbuild/linux-arm64@npm:0.17.19"
@ -1439,6 +1495,13 @@ __metadata:
languageName: node
linkType: hard
"@esbuild/linux-arm64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/linux-arm64@npm:0.24.0"
conditions: os=linux & cpu=arm64
languageName: node
linkType: hard
"@esbuild/linux-arm@npm:0.17.19":
version: 0.17.19
resolution: "@esbuild/linux-arm@npm:0.17.19"
@ -1481,6 +1544,13 @@ __metadata:
languageName: node
linkType: hard
"@esbuild/linux-arm@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/linux-arm@npm:0.24.0"
conditions: os=linux & cpu=arm
languageName: node
linkType: hard
"@esbuild/linux-ia32@npm:0.17.19":
version: 0.17.19
resolution: "@esbuild/linux-ia32@npm:0.17.19"
@ -1523,6 +1593,13 @@ __metadata:
languageName: node
linkType: hard
"@esbuild/linux-ia32@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/linux-ia32@npm:0.24.0"
conditions: os=linux & cpu=ia32
languageName: node
linkType: hard
"@esbuild/linux-loong64@npm:0.17.19":
version: 0.17.19
resolution: "@esbuild/linux-loong64@npm:0.17.19"
@ -1565,6 +1642,13 @@ __metadata:
languageName: node
linkType: hard
"@esbuild/linux-loong64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/linux-loong64@npm:0.24.0"
conditions: os=linux & cpu=loong64
languageName: node
linkType: hard
"@esbuild/linux-mips64el@npm:0.17.19":
version: 0.17.19
resolution: "@esbuild/linux-mips64el@npm:0.17.19"
@ -1607,6 +1691,13 @@ __metadata:
languageName: node
linkType: hard
"@esbuild/linux-mips64el@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/linux-mips64el@npm:0.24.0"
conditions: os=linux & cpu=mips64el
languageName: node
linkType: hard
"@esbuild/linux-ppc64@npm:0.17.19":
version: 0.17.19
resolution: "@esbuild/linux-ppc64@npm:0.17.19"
@ -1649,6 +1740,13 @@ __metadata:
languageName: node
linkType: hard
"@esbuild/linux-ppc64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/linux-ppc64@npm:0.24.0"
conditions: os=linux & cpu=ppc64
languageName: node
linkType: hard
"@esbuild/linux-riscv64@npm:0.17.19":
version: 0.17.19
resolution: "@esbuild/linux-riscv64@npm:0.17.19"
@ -1691,6 +1789,13 @@ __metadata:
languageName: node
linkType: hard
"@esbuild/linux-riscv64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/linux-riscv64@npm:0.24.0"
conditions: os=linux & cpu=riscv64
languageName: node
linkType: hard
"@esbuild/linux-s390x@npm:0.17.19":
version: 0.17.19
resolution: "@esbuild/linux-s390x@npm:0.17.19"
@ -1733,6 +1838,13 @@ __metadata:
languageName: node
linkType: hard
"@esbuild/linux-s390x@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/linux-s390x@npm:0.24.0"
conditions: os=linux & cpu=s390x
languageName: node
linkType: hard
"@esbuild/linux-x64@npm:0.17.19":
version: 0.17.19
resolution: "@esbuild/linux-x64@npm:0.17.19"
@ -1775,6 +1887,13 @@ __metadata:
languageName: node
linkType: hard
"@esbuild/linux-x64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/linux-x64@npm:0.24.0"
conditions: os=linux & cpu=x64
languageName: node
linkType: hard
"@esbuild/netbsd-x64@npm:0.17.19":
version: 0.17.19
resolution: "@esbuild/netbsd-x64@npm:0.17.19"
@ -1817,6 +1936,13 @@ __metadata:
languageName: node
linkType: hard
"@esbuild/netbsd-x64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/netbsd-x64@npm:0.24.0"
conditions: os=netbsd & cpu=x64
languageName: node
linkType: hard
"@esbuild/openbsd-arm64@npm:0.23.0":
version: 0.23.0
resolution: "@esbuild/openbsd-arm64@npm:0.23.0"
@ -1824,6 +1950,13 @@ __metadata:
languageName: node
linkType: hard
"@esbuild/openbsd-arm64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/openbsd-arm64@npm:0.24.0"
conditions: os=openbsd & cpu=arm64
languageName: node
linkType: hard
"@esbuild/openbsd-x64@npm:0.17.19":
version: 0.17.19
resolution: "@esbuild/openbsd-x64@npm:0.17.19"
@ -1866,6 +1999,13 @@ __metadata:
languageName: node
linkType: hard
"@esbuild/openbsd-x64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/openbsd-x64@npm:0.24.0"
conditions: os=openbsd & cpu=x64
languageName: node
linkType: hard
"@esbuild/sunos-x64@npm:0.17.19":
version: 0.17.19
resolution: "@esbuild/sunos-x64@npm:0.17.19"
@ -1908,6 +2048,13 @@ __metadata:
languageName: node
linkType: hard
"@esbuild/sunos-x64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/sunos-x64@npm:0.24.0"
conditions: os=sunos & cpu=x64
languageName: node
linkType: hard
"@esbuild/win32-arm64@npm:0.17.19":
version: 0.17.19
resolution: "@esbuild/win32-arm64@npm:0.17.19"
@ -1950,6 +2097,13 @@ __metadata:
languageName: node
linkType: hard
"@esbuild/win32-arm64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/win32-arm64@npm:0.24.0"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
"@esbuild/win32-ia32@npm:0.17.19":
version: 0.17.19
resolution: "@esbuild/win32-ia32@npm:0.17.19"
@ -1992,6 +2146,13 @@ __metadata:
languageName: node
linkType: hard
"@esbuild/win32-ia32@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/win32-ia32@npm:0.24.0"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
"@esbuild/win32-x64@npm:0.17.19":
version: 0.17.19
resolution: "@esbuild/win32-x64@npm:0.17.19"
@ -2034,6 +2195,13 @@ __metadata:
languageName: node
linkType: hard
"@esbuild/win32-x64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/win32-x64@npm:0.24.0"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
"@eslint-community/eslint-plugin-eslint-comments@npm:^4.4.0":
version: 4.4.0
resolution: "@eslint-community/eslint-plugin-eslint-comments@npm:4.4.0"
@ -2300,6 +2468,23 @@ __metadata:
languageName: unknown
linkType: soft
"@hono/class-validator@workspace:packages/class-validator":
version: 0.0.0-use.local
resolution: "@hono/class-validator@workspace:packages/class-validator"
dependencies:
class-transformer: "npm:^0.5.1"
class-validator: "npm:^0.14.1"
hono: "npm:^4.0.10"
reflect-metadata: "npm:^0.2.2"
rimraf: "npm:^5.0.5"
tsup: "npm:^8.3.5"
typescript: "npm:^5.3.3"
vitest: "npm:^1.4.0"
peerDependencies:
hono: ">=3.9.0"
languageName: unknown
linkType: soft
"@hono/clerk-auth@workspace:packages/clerk-auth":
version: 0.0.0-use.local
resolution: "@hono/clerk-auth@workspace:packages/clerk-auth"
@ -4062,6 +4247,13 @@ __metadata:
languageName: node
linkType: hard
"@rollup/rollup-android-arm-eabi@npm:4.24.4":
version: 4.24.4
resolution: "@rollup/rollup-android-arm-eabi@npm:4.24.4"
conditions: os=android & cpu=arm
languageName: node
linkType: hard
"@rollup/rollup-android-arm-eabi@npm:4.9.0":
version: 4.9.0
resolution: "@rollup/rollup-android-arm-eabi@npm:4.9.0"
@ -4076,6 +4268,13 @@ __metadata:
languageName: node
linkType: hard
"@rollup/rollup-android-arm64@npm:4.24.4":
version: 4.24.4
resolution: "@rollup/rollup-android-arm64@npm:4.24.4"
conditions: os=android & cpu=arm64
languageName: node
linkType: hard
"@rollup/rollup-android-arm64@npm:4.9.0":
version: 4.9.0
resolution: "@rollup/rollup-android-arm64@npm:4.9.0"
@ -4090,6 +4289,13 @@ __metadata:
languageName: node
linkType: hard
"@rollup/rollup-darwin-arm64@npm:4.24.4":
version: 4.24.4
resolution: "@rollup/rollup-darwin-arm64@npm:4.24.4"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
"@rollup/rollup-darwin-arm64@npm:4.9.0":
version: 4.9.0
resolution: "@rollup/rollup-darwin-arm64@npm:4.9.0"
@ -4104,6 +4310,13 @@ __metadata:
languageName: node
linkType: hard
"@rollup/rollup-darwin-x64@npm:4.24.4":
version: 4.24.4
resolution: "@rollup/rollup-darwin-x64@npm:4.24.4"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
"@rollup/rollup-darwin-x64@npm:4.9.0":
version: 4.9.0
resolution: "@rollup/rollup-darwin-x64@npm:4.9.0"
@ -4111,6 +4324,20 @@ __metadata:
languageName: node
linkType: hard
"@rollup/rollup-freebsd-arm64@npm:4.24.4":
version: 4.24.4
resolution: "@rollup/rollup-freebsd-arm64@npm:4.24.4"
conditions: os=freebsd & cpu=arm64
languageName: node
linkType: hard
"@rollup/rollup-freebsd-x64@npm:4.24.4":
version: 4.24.4
resolution: "@rollup/rollup-freebsd-x64@npm:4.24.4"
conditions: os=freebsd & cpu=x64
languageName: node
linkType: hard
"@rollup/rollup-linux-arm-gnueabihf@npm:4.19.1":
version: 4.19.1
resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.19.1"
@ -4118,6 +4345,13 @@ __metadata:
languageName: node
linkType: hard
"@rollup/rollup-linux-arm-gnueabihf@npm:4.24.4":
version: 4.24.4
resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.24.4"
conditions: os=linux & cpu=arm & libc=glibc
languageName: node
linkType: hard
"@rollup/rollup-linux-arm-gnueabihf@npm:4.9.0":
version: 4.9.0
resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.9.0"
@ -4132,6 +4366,13 @@ __metadata:
languageName: node
linkType: hard
"@rollup/rollup-linux-arm-musleabihf@npm:4.24.4":
version: 4.24.4
resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.24.4"
conditions: os=linux & cpu=arm & libc=musl
languageName: node
linkType: hard
"@rollup/rollup-linux-arm64-gnu@npm:4.19.1":
version: 4.19.1
resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.19.1"
@ -4139,6 +4380,13 @@ __metadata:
languageName: node
linkType: hard
"@rollup/rollup-linux-arm64-gnu@npm:4.24.4":
version: 4.24.4
resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.24.4"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
"@rollup/rollup-linux-arm64-gnu@npm:4.9.0":
version: 4.9.0
resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.9.0"
@ -4153,6 +4401,13 @@ __metadata:
languageName: node
linkType: hard
"@rollup/rollup-linux-arm64-musl@npm:4.24.4":
version: 4.24.4
resolution: "@rollup/rollup-linux-arm64-musl@npm:4.24.4"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
"@rollup/rollup-linux-arm64-musl@npm:4.9.0":
version: 4.9.0
resolution: "@rollup/rollup-linux-arm64-musl@npm:4.9.0"
@ -4167,6 +4422,13 @@ __metadata:
languageName: node
linkType: hard
"@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.4":
version: 4.24.4
resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.4"
conditions: os=linux & cpu=ppc64 & libc=glibc
languageName: node
linkType: hard
"@rollup/rollup-linux-riscv64-gnu@npm:4.19.1":
version: 4.19.1
resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.19.1"
@ -4174,6 +4436,13 @@ __metadata:
languageName: node
linkType: hard
"@rollup/rollup-linux-riscv64-gnu@npm:4.24.4":
version: 4.24.4
resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.24.4"
conditions: os=linux & cpu=riscv64 & libc=glibc
languageName: node
linkType: hard
"@rollup/rollup-linux-riscv64-gnu@npm:4.9.0":
version: 4.9.0
resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.9.0"
@ -4188,6 +4457,13 @@ __metadata:
languageName: node
linkType: hard
"@rollup/rollup-linux-s390x-gnu@npm:4.24.4":
version: 4.24.4
resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.24.4"
conditions: os=linux & cpu=s390x & libc=glibc
languageName: node
linkType: hard
"@rollup/rollup-linux-x64-gnu@npm:4.19.1":
version: 4.19.1
resolution: "@rollup/rollup-linux-x64-gnu@npm:4.19.1"
@ -4195,6 +4471,13 @@ __metadata:
languageName: node
linkType: hard
"@rollup/rollup-linux-x64-gnu@npm:4.24.4":
version: 4.24.4
resolution: "@rollup/rollup-linux-x64-gnu@npm:4.24.4"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
"@rollup/rollup-linux-x64-gnu@npm:4.9.0":
version: 4.9.0
resolution: "@rollup/rollup-linux-x64-gnu@npm:4.9.0"
@ -4209,6 +4492,13 @@ __metadata:
languageName: node
linkType: hard
"@rollup/rollup-linux-x64-musl@npm:4.24.4":
version: 4.24.4
resolution: "@rollup/rollup-linux-x64-musl@npm:4.24.4"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
"@rollup/rollup-linux-x64-musl@npm:4.9.0":
version: 4.9.0
resolution: "@rollup/rollup-linux-x64-musl@npm:4.9.0"
@ -4223,6 +4513,13 @@ __metadata:
languageName: node
linkType: hard
"@rollup/rollup-win32-arm64-msvc@npm:4.24.4":
version: 4.24.4
resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.24.4"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
"@rollup/rollup-win32-arm64-msvc@npm:4.9.0":
version: 4.9.0
resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.9.0"
@ -4237,6 +4534,13 @@ __metadata:
languageName: node
linkType: hard
"@rollup/rollup-win32-ia32-msvc@npm:4.24.4":
version: 4.24.4
resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.24.4"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
"@rollup/rollup-win32-ia32-msvc@npm:4.9.0":
version: 4.9.0
resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.9.0"
@ -4251,6 +4555,13 @@ __metadata:
languageName: node
linkType: hard
"@rollup/rollup-win32-x64-msvc@npm:4.24.4":
version: 4.24.4
resolution: "@rollup/rollup-win32-x64-msvc@npm:4.24.4"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
"@rollup/rollup-win32-x64-msvc@npm:4.9.0":
version: 4.9.0
resolution: "@rollup/rollup-win32-x64-msvc@npm:4.9.0"
@ -4569,6 +4880,13 @@ __metadata:
languageName: node
linkType: hard
"@types/estree@npm:1.0.6":
version: 1.0.6
resolution: "@types/estree@npm:1.0.6"
checksum: cdfd751f6f9065442cd40957c07fd80361c962869aa853c1c2fd03e101af8b9389d8ff4955a43a6fcfa223dd387a089937f95be0f3eec21ca527039fd2d9859a
languageName: node
linkType: hard
"@types/glob@npm:*":
version: 8.1.0
resolution: "@types/glob@npm:8.1.0"
@ -4911,6 +5229,13 @@ __metadata:
languageName: node
linkType: hard
"@types/validator@npm:^13.11.8":
version: 13.12.2
resolution: "@types/validator@npm:13.12.2"
checksum: 64f1326c768947d756ab5bcd73f3f11a6f07dc76292aea83890d0390a9b9acb374f8df6b24af2c783271f276d3d613b78fc79491fe87edee62108d54be2e3c31
languageName: node
linkType: hard
"@types/ws@npm:^8":
version: 8.5.10
resolution: "@types/ws@npm:8.5.10"
@ -7042,6 +7367,15 @@ __metadata:
languageName: node
linkType: hard
"chokidar@npm:^4.0.1":
version: 4.0.1
resolution: "chokidar@npm:4.0.1"
dependencies:
readdirp: "npm:^4.0.1"
checksum: 4bb7a3adc304059810bb6c420c43261a15bb44f610d77c35547addc84faa0374265c3adc67f25d06f363d9a4571962b02679268c40de07676d260de1986efea9
languageName: node
linkType: hard
"chownr@npm:^2.0.0":
version: 2.0.0
resolution: "chownr@npm:2.0.0"
@ -7079,6 +7413,24 @@ __metadata:
languageName: node
linkType: hard
"class-transformer@npm:^0.5.1":
version: 0.5.1
resolution: "class-transformer@npm:0.5.1"
checksum: 19809914e51c6db42c036166839906420bb60367df14e15f49c45c8c1231bf25ae661ebe94736ee29cc688b77101ef851a8acca299375cc52fc141b64acde18a
languageName: node
linkType: hard
"class-validator@npm:^0.14.1":
version: 0.14.1
resolution: "class-validator@npm:0.14.1"
dependencies:
"@types/validator": "npm:^13.11.8"
libphonenumber-js: "npm:^1.10.53"
validator: "npm:^13.9.0"
checksum: 946e914e47548b5081449c720ea6a4877bac63dc960e14fca4b990b56e64efe3802d12f07ec22d6420c290245b72ea2d646939239f2a3b597794e6c4c2a4f2ae
languageName: node
linkType: hard
"clean-stack@npm:^2.0.0":
version: 2.2.0
resolution: "clean-stack@npm:2.2.0"
@ -7811,6 +8163,18 @@ __metadata:
languageName: node
linkType: hard
"debug@npm:^4.3.7":
version: 4.3.7
resolution: "debug@npm:4.3.7"
dependencies:
ms: "npm:^2.1.3"
peerDependenciesMeta:
supports-color:
optional: true
checksum: 1471db19c3b06d485a622d62f65947a19a23fbd0dd73f7fd3eafb697eec5360cde447fb075919987899b1a2096e85d35d4eb5a4de09a57600ac9cf7e6c8e768b
languageName: node
linkType: hard
"decamelize-keys@npm:^1.1.0":
version: 1.1.1
resolution: "decamelize-keys@npm:1.1.1"
@ -8913,6 +9277,89 @@ __metadata:
languageName: node
linkType: hard
"esbuild@npm:^0.24.0":
version: 0.24.0
resolution: "esbuild@npm:0.24.0"
dependencies:
"@esbuild/aix-ppc64": "npm:0.24.0"
"@esbuild/android-arm": "npm:0.24.0"
"@esbuild/android-arm64": "npm:0.24.0"
"@esbuild/android-x64": "npm:0.24.0"
"@esbuild/darwin-arm64": "npm:0.24.0"
"@esbuild/darwin-x64": "npm:0.24.0"
"@esbuild/freebsd-arm64": "npm:0.24.0"
"@esbuild/freebsd-x64": "npm:0.24.0"
"@esbuild/linux-arm": "npm:0.24.0"
"@esbuild/linux-arm64": "npm:0.24.0"
"@esbuild/linux-ia32": "npm:0.24.0"
"@esbuild/linux-loong64": "npm:0.24.0"
"@esbuild/linux-mips64el": "npm:0.24.0"
"@esbuild/linux-ppc64": "npm:0.24.0"
"@esbuild/linux-riscv64": "npm:0.24.0"
"@esbuild/linux-s390x": "npm:0.24.0"
"@esbuild/linux-x64": "npm:0.24.0"
"@esbuild/netbsd-x64": "npm:0.24.0"
"@esbuild/openbsd-arm64": "npm:0.24.0"
"@esbuild/openbsd-x64": "npm:0.24.0"
"@esbuild/sunos-x64": "npm:0.24.0"
"@esbuild/win32-arm64": "npm:0.24.0"
"@esbuild/win32-ia32": "npm:0.24.0"
"@esbuild/win32-x64": "npm:0.24.0"
dependenciesMeta:
"@esbuild/aix-ppc64":
optional: true
"@esbuild/android-arm":
optional: true
"@esbuild/android-arm64":
optional: true
"@esbuild/android-x64":
optional: true
"@esbuild/darwin-arm64":
optional: true
"@esbuild/darwin-x64":
optional: true
"@esbuild/freebsd-arm64":
optional: true
"@esbuild/freebsd-x64":
optional: true
"@esbuild/linux-arm":
optional: true
"@esbuild/linux-arm64":
optional: true
"@esbuild/linux-ia32":
optional: true
"@esbuild/linux-loong64":
optional: true
"@esbuild/linux-mips64el":
optional: true
"@esbuild/linux-ppc64":
optional: true
"@esbuild/linux-riscv64":
optional: true
"@esbuild/linux-s390x":
optional: true
"@esbuild/linux-x64":
optional: true
"@esbuild/netbsd-x64":
optional: true
"@esbuild/openbsd-arm64":
optional: true
"@esbuild/openbsd-x64":
optional: true
"@esbuild/sunos-x64":
optional: true
"@esbuild/win32-arm64":
optional: true
"@esbuild/win32-ia32":
optional: true
"@esbuild/win32-x64":
optional: true
bin:
esbuild: bin/esbuild
checksum: 9f1aadd8d64f3bff422ae78387e66e51a5e09de6935a6f987b6e4e189ed00fdc2d1bc03d2e33633b094008529c8b6e06c7ad1a9782fb09fec223bf95998c0683
languageName: node
linkType: hard
"escalade@npm:^3.1.1":
version: 3.1.1
resolution: "escalade@npm:3.1.1"
@ -9783,6 +10230,18 @@ __metadata:
languageName: node
linkType: hard
"fdir@npm:^6.4.2":
version: 6.4.2
resolution: "fdir@npm:6.4.2"
peerDependencies:
picomatch: ^3 || ^4
peerDependenciesMeta:
picomatch:
optional: true
checksum: 34829886f34a3ca4170eca7c7180ec4de51a3abb4d380344063c0ae2e289b11d2ba8b724afee974598c83027fea363ff598caf2b51bc4e6b1e0d8b80cc530573
languageName: node
linkType: hard
"fecha@npm:^4.2.0":
version: 4.2.3
resolution: "fecha@npm:4.2.3"
@ -13392,6 +13851,13 @@ __metadata:
languageName: node
linkType: hard
"libphonenumber-js@npm:^1.10.53":
version: 1.11.12
resolution: "libphonenumber-js@npm:1.11.12"
checksum: 56fdf7ce107bd9d0329c47392d21649ee61b5ef210fa5926cb839506195d8482760982c9f75c207e97cf070be8ef2edc5a81db7cc3623f46990222945f4e0f65
languageName: node
linkType: hard
"libsodium-wrappers@npm:^0.7.10":
version: 0.7.13
resolution: "libsodium-wrappers@npm:0.7.13"
@ -14987,7 +15453,7 @@ __metadata:
languageName: node
linkType: hard
"ms@npm:2.1.3, ms@npm:^2.1.1":
"ms@npm:2.1.3, ms@npm:^2.1.1, ms@npm:^2.1.3":
version: 2.1.3
resolution: "ms@npm:2.1.3"
checksum: d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48
@ -16119,6 +16585,13 @@ __metadata:
languageName: node
linkType: hard
"picocolors@npm:^1.1.1":
version: 1.1.1
resolution: "picocolors@npm:1.1.1"
checksum: e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58
languageName: node
linkType: hard
"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1":
version: 2.3.1
resolution: "picomatch@npm:2.3.1"
@ -16824,6 +17297,13 @@ __metadata:
languageName: node
linkType: hard
"readdirp@npm:^4.0.1":
version: 4.0.2
resolution: "readdirp@npm:4.0.2"
checksum: a16ecd8ef3286dcd90648c3b103e3826db2b766cdb4a988752c43a83f683d01c7059158d623cbcd8bdfb39e65d302d285be2d208e7d9f34d022d912b929217dd
languageName: node
linkType: hard
"readdirp@npm:~3.6.0":
version: 3.6.0
resolution: "readdirp@npm:3.6.0"
@ -16852,6 +17332,13 @@ __metadata:
languageName: node
linkType: hard
"reflect-metadata@npm:^0.2.2":
version: 0.2.2
resolution: "reflect-metadata@npm:0.2.2"
checksum: 1cd93a15ea291e420204955544637c264c216e7aac527470e393d54b4bb075f10a17e60d8168ec96600c7e0b9fcc0cb0bb6e91c3fbf5b0d8c9056f04e6ac1ec2
languageName: node
linkType: hard
"regenerator-runtime@npm:^0.14.0":
version: 0.14.1
resolution: "regenerator-runtime@npm:0.14.1"
@ -17305,6 +17792,75 @@ __metadata:
languageName: node
linkType: hard
"rollup@npm:^4.24.0":
version: 4.24.4
resolution: "rollup@npm:4.24.4"
dependencies:
"@rollup/rollup-android-arm-eabi": "npm:4.24.4"
"@rollup/rollup-android-arm64": "npm:4.24.4"
"@rollup/rollup-darwin-arm64": "npm:4.24.4"
"@rollup/rollup-darwin-x64": "npm:4.24.4"
"@rollup/rollup-freebsd-arm64": "npm:4.24.4"
"@rollup/rollup-freebsd-x64": "npm:4.24.4"
"@rollup/rollup-linux-arm-gnueabihf": "npm:4.24.4"
"@rollup/rollup-linux-arm-musleabihf": "npm:4.24.4"
"@rollup/rollup-linux-arm64-gnu": "npm:4.24.4"
"@rollup/rollup-linux-arm64-musl": "npm:4.24.4"
"@rollup/rollup-linux-powerpc64le-gnu": "npm:4.24.4"
"@rollup/rollup-linux-riscv64-gnu": "npm:4.24.4"
"@rollup/rollup-linux-s390x-gnu": "npm:4.24.4"
"@rollup/rollup-linux-x64-gnu": "npm:4.24.4"
"@rollup/rollup-linux-x64-musl": "npm:4.24.4"
"@rollup/rollup-win32-arm64-msvc": "npm:4.24.4"
"@rollup/rollup-win32-ia32-msvc": "npm:4.24.4"
"@rollup/rollup-win32-x64-msvc": "npm:4.24.4"
"@types/estree": "npm:1.0.6"
fsevents: "npm:~2.3.2"
dependenciesMeta:
"@rollup/rollup-android-arm-eabi":
optional: true
"@rollup/rollup-android-arm64":
optional: true
"@rollup/rollup-darwin-arm64":
optional: true
"@rollup/rollup-darwin-x64":
optional: true
"@rollup/rollup-freebsd-arm64":
optional: true
"@rollup/rollup-freebsd-x64":
optional: true
"@rollup/rollup-linux-arm-gnueabihf":
optional: true
"@rollup/rollup-linux-arm-musleabihf":
optional: true
"@rollup/rollup-linux-arm64-gnu":
optional: true
"@rollup/rollup-linux-arm64-musl":
optional: true
"@rollup/rollup-linux-powerpc64le-gnu":
optional: true
"@rollup/rollup-linux-riscv64-gnu":
optional: true
"@rollup/rollup-linux-s390x-gnu":
optional: true
"@rollup/rollup-linux-x64-gnu":
optional: true
"@rollup/rollup-linux-x64-musl":
optional: true
"@rollup/rollup-win32-arm64-msvc":
optional: true
"@rollup/rollup-win32-ia32-msvc":
optional: true
"@rollup/rollup-win32-x64-msvc":
optional: true
fsevents:
optional: true
bin:
rollup: dist/bin/rollup
checksum: 8e9e9ce4dc8cc48acf258a26519ed1bbbbdac99fd701e89d11c31271e01b4663fe61d839f7906a49c0983b1a49e2acc622948d7665ff0f57ecc48d872835d1ce
languageName: node
linkType: hard
"router@npm:^1.3.1":
version: 1.3.8
resolution: "router@npm:1.3.8"
@ -18607,6 +19163,13 @@ __metadata:
languageName: node
linkType: hard
"tinyexec@npm:^0.3.1":
version: 0.3.1
resolution: "tinyexec@npm:0.3.1"
checksum: 11e7a7c5d8b3bddf8b5cbe82a9290d70a6fad84d528421d5d18297f165723cb53d2e737d8f58dcce5ca56f2e4aa2d060f02510b1f8971784f97eb3e9aec28f09
languageName: node
linkType: hard
"tinyglobby@npm:^0.2.1":
version: 0.2.6
resolution: "tinyglobby@npm:0.2.6"
@ -18617,6 +19180,16 @@ __metadata:
languageName: node
linkType: hard
"tinyglobby@npm:^0.2.9":
version: 0.2.10
resolution: "tinyglobby@npm:0.2.10"
dependencies:
fdir: "npm:^6.4.2"
picomatch: "npm:^4.0.2"
checksum: ce946135d39b8c0e394e488ad59f4092e8c4ecd675ef1bcd4585c47de1b325e61ec6adfbfbe20c3c2bfa6fd674c5b06de2a2e65c433f752ae170aff11793e5ef
languageName: node
linkType: hard
"tinypool@npm:^0.7.0":
version: 0.7.0
resolution: "tinypool@npm:0.7.0"
@ -19172,6 +19745,47 @@ __metadata:
languageName: node
linkType: hard
"tsup@npm:^8.3.5":
version: 8.3.5
resolution: "tsup@npm:8.3.5"
dependencies:
bundle-require: "npm:^5.0.0"
cac: "npm:^6.7.14"
chokidar: "npm:^4.0.1"
consola: "npm:^3.2.3"
debug: "npm:^4.3.7"
esbuild: "npm:^0.24.0"
joycon: "npm:^3.1.1"
picocolors: "npm:^1.1.1"
postcss-load-config: "npm:^6.0.1"
resolve-from: "npm:^5.0.0"
rollup: "npm:^4.24.0"
source-map: "npm:0.8.0-beta.0"
sucrase: "npm:^3.35.0"
tinyexec: "npm:^0.3.1"
tinyglobby: "npm:^0.2.9"
tree-kill: "npm:^1.2.2"
peerDependencies:
"@microsoft/api-extractor": ^7.36.0
"@swc/core": ^1
postcss: ^8.4.12
typescript: ">=4.5.0"
peerDependenciesMeta:
"@microsoft/api-extractor":
optional: true
"@swc/core":
optional: true
postcss:
optional: true
typescript:
optional: true
bin:
tsup: dist/cli-default.js
tsup-node: dist/cli-node.js
checksum: 7794953cbc784b7c8f14c4898d36a293b815b528d3098c2416aeaa2b4775dc477132cd12f75f6d32737dfd15ba10139c73f7039045352f2ba1ea7e5fe6fe3773
languageName: node
linkType: hard
"tsutils@npm:^3.21.0":
version: 3.21.0
resolution: "tsutils@npm:3.21.0"
@ -19899,6 +20513,13 @@ __metadata:
languageName: node
linkType: hard
"validator@npm:^13.9.0":
version: 13.12.0
resolution: "validator@npm:13.12.0"
checksum: 21d48a7947c9e8498790550f56cd7971e0e3d724c73388226b109c1bac2728f4f88caddfc2f7ed4b076f9b0d004316263ac786a17e9c4edf075741200718cd32
languageName: node
linkType: hard
"vary@npm:^1, vary@npm:~1.1.2":
version: 1.1.2
resolution: "vary@npm:1.1.2"