pull/715/head
Travis Fischer 2025-04-23 06:57:59 +07:00
rodzic adea07a890
commit 2477b0488d
17 zmienionych plików z 389 dodań i 17 usunięć

Wyświetl plik

@ -34,9 +34,12 @@
"test:unit": "vitest run"
},
"dependencies": {
"@hono/zod-validator": "^0.4.3",
"@paralleldrive/cuid2": "^2.2.2",
"@workos-inc/node": "^7.47.0",
"drizzle-orm": "^0.42.0",
"drizzle-zod": "^0.7.1",
"hono": "^4.7.7",
"jsonwebtoken": "^9.0.2",
"postgres": "^3.4.5",
"type-fest": "catalog:",

Wyświetl plik

@ -10,3 +10,5 @@ const postgresClient =
_postgresClient ?? (_postgresClient = postgres(env.DATABASE_URL))
export const db = drizzle({ client: postgresClient, schema })
export type * from './types'

Wyświetl plik

@ -90,8 +90,6 @@ export const deploymentsRelations = relations(deployments, ({ one }) => ({
// TODO: virtual authProviders?
// TODO: virtual openapi spec? (hide openapi.servers)
export type Deployment = typeof deployments.$inferSelect
// TODO: narrow
export const deploymentInsertSchema = createInsertSchema(deployments, {
// TODO: validate deployment id

Wyświetl plik

@ -1,7 +1,7 @@
export * from './deployment'
export * from './project'
export * from './team'
export * from './team-members'
export * from './team-member'
export type * from './types'
export * from './user'
export * from './utils'

Wyświetl plik

@ -123,8 +123,6 @@ export const projectsRelations = relations(projects, ({ one, many }) => ({
})
}))
export type Project = typeof projects.$inferSelect
export const projectInsertSchema = createInsertSchema(projects, {
// TODO: validate project id
// id: (schema) =>

Wyświetl plik

@ -37,5 +37,3 @@ export const teamMembersRelations = relations(teamMembers, ({ one }) => ({
references: [teams.id]
})
}))
export type TeamMember = typeof teamMembers.$inferSelect

Wyświetl plik

@ -1,7 +1,7 @@
import { relations } from 'drizzle-orm'
import { index, pgTable, text, uniqueIndex } from 'drizzle-orm/pg-core'
import { teamMembers } from './team-members'
import { teamMembers } from './team-member'
import { users } from './user'
import {
createInsertSchema,
@ -38,8 +38,6 @@ export const teamsRelations = relations(teams, ({ one, many }) => ({
members: many(teamMembers)
}))
export type Team = typeof teams.$inferSelect
export const teamInsertSchema = createInsertSchema(teams, {
slug: (schema) => schema.min(3).max(20) // TODO
})

Wyświetl plik

@ -68,8 +68,6 @@ export const usersRelations = relations(users, ({ many }) => ({
// TODO: team memberships
}))
export type User = typeof users.$inferSelect
export const userInsertSchema = createInsertSchema(users, {
// TODO: username validation
// username: (schema) => schema.min(3).max(20)

Wyświetl plik

@ -4,14 +4,11 @@ import {
pgEnum,
type PgVarcharBuilderInitial,
type PgVarcharConfig,
text,
timestamp,
varchar
} from 'drizzle-orm/pg-core'
import { createSchemaFactory } from 'drizzle-zod'
export const id = text('id').primaryKey().$defaultFn(createId)
export function cuid<U extends string, T extends Readonly<[U, ...U[]]>>(
config?: PgVarcharConfig<T | Writable<T>, never>
): PgVarcharBuilderInitial<'', Writable<T>, 24> {
@ -24,6 +21,10 @@ export function stripeId<U extends string, T extends Readonly<[U, ...U[]]>>(
return varchar({ length: 255, ...config })
}
export const id = varchar('id', { length: 24 })
.primaryKey()
.$defaultFn(createId)
export const timestamps = {
createdAt: timestamp('createdAt').notNull().defaultNow(),
updatedAt: timestamp('updatedAt')

Wyświetl plik

@ -0,0 +1,35 @@
import type { BuildQueryResult, ExtractTablesWithRelations } from 'drizzle-orm'
import type * as schema from './schema'
export type Tables = ExtractTablesWithRelations<typeof schema>
export type User = typeof schema.users.$inferInsert
export type Team = typeof schema.teams.$inferInsert
export type TeamWithMembers = BuildQueryResult<
Tables,
Tables['teams'],
{ with: { members: true } }
>
export type TeamMember = typeof schema.teamMembers.$inferInsert
export type TeamMemberWithTeam = BuildQueryResult<
Tables,
Tables['teamMembers'],
{ with: { team: true } }
>
export type Project = typeof schema.projects.$inferInsert
export type ProjectWithLastPublishedDeployment = BuildQueryResult<
Tables,
Tables['projects'],
{ with: { lastPublishedDeployment: true } }
>
export type Deployment = typeof schema.deployments.$inferInsert
export type DeploymentWithProject = BuildQueryResult<
Tables,
Tables['deployments'],
{ with: { project: true } }
>

Wyświetl plik

@ -0,0 +1,6 @@
import { createMiddleware } from 'hono/factory'
export const authenticate = createMiddleware(async (c, next) => {
console.log(`[${c.req.method}] ${c.req.url}`)
await next()
})

Wyświetl plik

@ -0,0 +1 @@
export * from './authenticate'

Wyświetl plik

@ -0,0 +1,6 @@
import { createMiddleware } from 'hono/factory'
export const authenticate = createMiddleware(async (c, next) => {
console.log(`[${c.req.method}] ${c.req.url}`)
await next()
})

Wyświetl plik

@ -1 +1,8 @@
export type Operation = 'create' | 'read' | 'update' | 'delete' | 'debug'
// import type { Context } from 'hono'
import type { TeamMemberWithTeam, User } from '@/db'
export type AuthenticatedContext = {
user: User
teamMember?: TeamMemberWithTeam
}

Wyświetl plik

@ -0,0 +1,11 @@
import { Hono } from 'hono'
import * as middleware from '@/lib/middleware'
export const app = new Hono()
const pri = new Hono()
// const pub = new Hono()
app.route('/', pri)
app.use('*', middleware.authenticate)

Wyświetl plik

@ -7,7 +7,7 @@
"type": "git",
"url": "git+https://github.com/transitive-bullshit/agentic-platform.git"
},
"packageManager": "pnpm@10.7.0",
"packageManager": "pnpm@10.9.0",
"engines": {
"node": ">=18"
},

Wyświetl plik

@ -116,15 +116,24 @@ importers:
apps/api:
dependencies:
'@hono/zod-validator':
specifier: ^0.4.3
version: 0.4.3(hono@4.7.7)(zod@3.24.3)
'@paralleldrive/cuid2':
specifier: ^2.2.2
version: 2.2.2
'@workos-inc/node':
specifier: ^7.47.0
version: 7.47.0
drizzle-orm:
specifier: ^0.42.0
version: 0.42.0(postgres@3.4.5)
drizzle-zod:
specifier: ^0.7.1
version: 0.7.1(drizzle-orm@0.42.0(postgres@3.4.5))(zod@3.24.3)
hono:
specifier: ^4.7.7
version: 4.7.7
jsonwebtoken:
specifier: ^9.0.2
version: 9.0.2
@ -502,6 +511,12 @@ packages:
prettier: '>= 3'
typescript: '>= 5'
'@hono/zod-validator@0.4.3':
resolution: {integrity: sha512-xIgMYXDyJ4Hj6ekm9T9Y27s080Nl9NXHcJkOvkXPhubOLj8hZkOL8pDnnXfvCf5xEE8Q4oMFenQUZZREUY2gqQ==}
peerDependencies:
hono: '>=3.9.0'
zod: ^3.19.1
'@humanfs/core@0.19.1':
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
engines: {node: '>=18.18.0'}
@ -563,6 +578,17 @@ packages:
'@paralleldrive/cuid2@2.2.2':
resolution: {integrity: sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==}
'@peculiar/asn1-schema@2.3.15':
resolution: {integrity: sha512-QPeD8UA8axQREpgR5UTAfu2mqQmm97oUqahDtNdBcfj3qAnoXzFdQW+aNf/tD2WVXF8Fhmftxoj0eMIT++gX2w==}
'@peculiar/json-schema@1.1.12':
resolution: {integrity: sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==}
engines: {node: '>=8.0.0'}
'@peculiar/webcrypto@1.5.0':
resolution: {integrity: sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg==}
engines: {node: '>=10.12.0'}
'@pkgjs/parseargs@0.11.0':
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
@ -677,9 +703,39 @@ packages:
'@total-typescript/ts-reset@0.6.1':
resolution: {integrity: sha512-cka47fVSo6lfQDIATYqb/vO1nvFfbPw7uWLayIXIhGETj0wcOOlrlkobOMDNQOFr9QOafegUPq13V2+6vtD7yg==}
'@types/accepts@1.3.7':
resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==}
'@types/body-parser@1.19.5':
resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==}
'@types/connect@3.4.38':
resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==}
'@types/content-disposition@0.5.8':
resolution: {integrity: sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==}
'@types/cookie@0.5.4':
resolution: {integrity: sha512-7z/eR6O859gyWIAjuvBWFzNURmf2oPBmJlfVWkwehU5nzIyjwBsTh7WMmEEV4JFnHuQ3ex4oyTvfKzcyJVDBNA==}
'@types/cookies@0.9.0':
resolution: {integrity: sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==}
'@types/estree@1.0.7':
resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==}
'@types/express-serve-static-core@4.19.6':
resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==}
'@types/express@4.17.21':
resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==}
'@types/http-assert@1.5.6':
resolution: {integrity: sha512-TTEwmtjgVbYAzZYWyeHPrrtWnfVkm8tQkP8P21uQifPgMRgjrow3XDEYqucuC8SKZJT7pUnhU/JymvjggxO9vw==}
'@types/http-errors@2.0.4':
resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==}
'@types/json-schema@7.0.15':
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
@ -689,15 +745,42 @@ packages:
'@types/jsonwebtoken@9.0.9':
resolution: {integrity: sha512-uoe+GxEuHbvy12OUQct2X9JenKM3qAscquYymuQN4fMWG9DBQtykrQEFcAbVACF7qaLw9BePSodUL0kquqBJpQ==}
'@types/keygrip@1.0.6':
resolution: {integrity: sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==}
'@types/koa-compose@3.2.8':
resolution: {integrity: sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==}
'@types/koa@2.15.0':
resolution: {integrity: sha512-7QFsywoE5URbuVnG3loe03QXuGajrnotr3gQkXcEBShORai23MePfFYdhz90FEtBBpkyIYQbVD+evKtloCgX3g==}
'@types/mime@1.3.5':
resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==}
'@types/ms@2.1.0':
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
'@types/node@17.0.45':
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
'@types/node@22.14.1':
resolution: {integrity: sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==}
'@types/normalize-package-data@2.4.4':
resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
'@types/qs@6.9.18':
resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==}
'@types/range-parser@1.2.7':
resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==}
'@types/send@0.17.4':
resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==}
'@types/serve-static@1.15.7':
resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==}
'@typescript-eslint/eslint-plugin@8.29.0':
resolution: {integrity: sha512-PAIpk/U7NIS6H7TEtN45SPGLQaHNgB7wSjsQV/8+KYokAb2T/gloOA/Bee2yd4/yKVhPKe5LlaUGhAZk5zmSaQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@ -787,6 +870,10 @@ packages:
'@vitest/utils@3.1.1':
resolution: {integrity: sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg==}
'@workos-inc/node@7.47.0':
resolution: {integrity: sha512-A7K6uIIGmD5qbrLxoXah2BcOzbxyxnrhps+crZ/CFImrkq4CdVAm6BV/wvRaTeAinRF+Ea9cIFFeEAvJ++RaSw==}
engines: {node: '>=16'}
acorn-jsx@5.3.2:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
@ -862,6 +949,10 @@ packages:
resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
engines: {node: '>= 0.4'}
asn1js@3.0.6:
resolution: {integrity: sha512-UOCGPYbl0tv8+006qks/dTgV9ajs97X2p0FAbyS2iyCRrmLSRolDaHdp+v/CLgnzHc3fVB+CwYiUmei7ndFcgA==}
engines: {node: '>=12.0.0'}
assertion-error@2.0.1:
resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
engines: {node: '>=12'}
@ -888,6 +979,9 @@ packages:
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
brace-expansion@1.1.11:
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
@ -909,6 +1003,9 @@ packages:
buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
buffer@6.0.3:
resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
builtin-modules@5.0.0:
resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==}
engines: {node: '>=18.20'}
@ -1003,6 +1100,10 @@ packages:
resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==}
engines: {node: ^14.18.0 || >=16.10.0}
cookie@0.5.0:
resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
engines: {node: '>= 0.6'}
core-js-compat@3.41.0:
resolution: {integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==}
@ -1572,6 +1673,10 @@ packages:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
hono@4.7.7:
resolution: {integrity: sha512-2PCpQRbN87Crty8/L/7akZN3UyZIAopSoRxCwRbJgUuV1+MHNFHzYFxZTg4v/03cXUm+jce/qa2VSBZpKBm3Qw==}
engines: {node: '>=16.9.0'}
hosted-git-info@7.0.2:
resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==}
engines: {node: ^16.14.0 || >=18.0.0}
@ -1580,6 +1685,9 @@ packages:
resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
engines: {node: '>=16.17.0'}
ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
ignore@5.3.2:
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
engines: {node: '>= 4'}
@ -1608,6 +1716,24 @@ packages:
resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
engines: {node: '>= 0.4'}
iron-session@6.3.1:
resolution: {integrity: sha512-3UJ7y2vk/WomAtEySmPgM6qtYF1cZ3tXuWX5GsVX4PJXAcs5y/sV9HuSfpjKS6HkTL/OhZcTDWJNLZ7w+Erx3A==}
engines: {node: '>=12'}
peerDependencies:
express: '>=4'
koa: '>=2'
next: '>=10'
peerDependenciesMeta:
express:
optional: true
koa:
optional: true
next:
optional: true
iron-webcrypto@0.2.8:
resolution: {integrity: sha512-YPdCvjFMOBjXaYuDj5tiHst5CEk6Xw84Jo8Y2+jzhMceclAnb3+vNPP/CTtb5fO2ZEuXEaO4N+w62Vfko757KA==}
is-array-buffer@3.0.5:
resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
engines: {node: '>= 0.4'}
@ -1749,6 +1875,9 @@ packages:
jackspeak@3.4.3:
resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
jose@5.6.3:
resolution: {integrity: sha512-1Jh//hEEwMhNYPDDLwXHa2ePWgWiFNNUadVmguAAw2IJ6sj9mNxV5tGXJNqlMkJAybF6Lgw1mISDxTePP/187g==}
joycon@3.1.1:
resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
engines: {node: '>=10'}
@ -1811,6 +1940,9 @@ packages:
resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==}
engines: {node: '>=0.10'}
leb@1.0.0:
resolution: {integrity: sha512-Y3c3QZfvKWHX60BVOQPhLCvVGmDYWyJEiINE3drOog6KCyN2AOwvuQQzlS3uJg1J85kzpILXIUwRXULWavir+w==}
levn@0.4.1:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'}
@ -2145,6 +2277,13 @@ packages:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
pvtsutils@1.3.6:
resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==}
pvutils@1.1.3:
resolution: {integrity: sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==}
engines: {node: '>=6.0.0'}
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
@ -2480,6 +2619,9 @@ packages:
tsconfig-paths@3.15.0:
resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
tsup@8.4.0:
resolution: {integrity: sha512-b+eZbPCjz10fRryaAA7C8xlIHnf8VnsaRqydheLIqwG/Mcpfk8Z5zp3HayX7GaTygkigHl5cBUs+IhcySiIexQ==}
engines: {node: '>=18'}
@ -2674,6 +2816,9 @@ packages:
jsdom:
optional: true
webcrypto-core@1.8.1:
resolution: {integrity: sha512-P+x1MvlNCXlKbLSOY4cYrdreqPG5hbzkmawbcXLKN/mf6DZW0SdNNkZ+sjwsqVkI4A4Ko2sPZmkZtCKY58w83A==}
webidl-conversions@4.0.2:
resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
@ -2986,6 +3131,11 @@ snapshots:
- supports-color
- vitest
'@hono/zod-validator@0.4.3(hono@4.7.7)(zod@3.24.3)':
dependencies:
hono: 4.7.7
zod: 3.24.3
'@humanfs/core@0.19.1': {}
'@humanfs/node@0.16.6':
@ -3043,6 +3193,24 @@ snapshots:
dependencies:
'@noble/hashes': 1.7.2
'@peculiar/asn1-schema@2.3.15':
dependencies:
asn1js: 3.0.6
pvtsutils: 1.3.6
tslib: 2.8.1
'@peculiar/json-schema@1.1.12':
dependencies:
tslib: 2.8.1
'@peculiar/webcrypto@1.5.0':
dependencies:
'@peculiar/asn1-schema': 2.3.15
'@peculiar/json-schema': 1.1.12
pvtsutils: 1.3.6
tslib: 2.8.1
webcrypto-core: 1.8.1
'@pkgjs/parseargs@0.11.0':
optional: true
@ -3112,8 +3280,50 @@ snapshots:
'@total-typescript/ts-reset@0.6.1': {}
'@types/accepts@1.3.7':
dependencies:
'@types/node': 22.14.1
'@types/body-parser@1.19.5':
dependencies:
'@types/connect': 3.4.38
'@types/node': 22.14.1
'@types/connect@3.4.38':
dependencies:
'@types/node': 22.14.1
'@types/content-disposition@0.5.8': {}
'@types/cookie@0.5.4': {}
'@types/cookies@0.9.0':
dependencies:
'@types/connect': 3.4.38
'@types/express': 4.17.21
'@types/keygrip': 1.0.6
'@types/node': 22.14.1
'@types/estree@1.0.7': {}
'@types/express-serve-static-core@4.19.6':
dependencies:
'@types/node': 22.14.1
'@types/qs': 6.9.18
'@types/range-parser': 1.2.7
'@types/send': 0.17.4
'@types/express@4.17.21':
dependencies:
'@types/body-parser': 1.19.5
'@types/express-serve-static-core': 4.19.6
'@types/qs': 6.9.18
'@types/serve-static': 1.15.7
'@types/http-assert@1.5.6': {}
'@types/http-errors@2.0.4': {}
'@types/json-schema@7.0.15': {}
'@types/json5@0.0.29': {}
@ -3123,14 +3333,50 @@ snapshots:
'@types/ms': 2.1.0
'@types/node': 22.14.1
'@types/keygrip@1.0.6': {}
'@types/koa-compose@3.2.8':
dependencies:
'@types/koa': 2.15.0
'@types/koa@2.15.0':
dependencies:
'@types/accepts': 1.3.7
'@types/content-disposition': 0.5.8
'@types/cookies': 0.9.0
'@types/http-assert': 1.5.6
'@types/http-errors': 2.0.4
'@types/keygrip': 1.0.6
'@types/koa-compose': 3.2.8
'@types/node': 22.14.1
'@types/mime@1.3.5': {}
'@types/ms@2.1.0': {}
'@types/node@17.0.45': {}
'@types/node@22.14.1':
dependencies:
undici-types: 6.21.0
'@types/normalize-package-data@2.4.4': {}
'@types/qs@6.9.18': {}
'@types/range-parser@1.2.7': {}
'@types/send@0.17.4':
dependencies:
'@types/mime': 1.3.5
'@types/node': 22.14.1
'@types/serve-static@1.15.7':
dependencies:
'@types/http-errors': 2.0.4
'@types/node': 22.14.1
'@types/send': 0.17.4
'@typescript-eslint/eslint-plugin@8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.25.0)(typescript@5.8.3))(eslint@9.25.0)(typescript@5.8.3)':
dependencies:
'@eslint-community/regexpp': 4.12.1
@ -3256,6 +3502,17 @@ snapshots:
loupe: 3.1.3
tinyrainbow: 2.0.0
'@workos-inc/node@7.47.0':
dependencies:
iron-session: 6.3.1
jose: 5.6.3
leb: 1.0.0
pluralize: 8.0.0
transitivePeerDependencies:
- express
- koa
- next
acorn-jsx@5.3.2(acorn@8.14.1):
dependencies:
acorn: 8.14.1
@ -3354,6 +3611,12 @@ snapshots:
get-intrinsic: 1.3.0
is-array-buffer: 3.0.5
asn1js@3.0.6:
dependencies:
pvtsutils: 1.3.6
pvutils: 1.1.3
tslib: 2.8.1
assertion-error@2.0.1: {}
ast-types-flow@0.0.8: {}
@ -3370,6 +3633,8 @@ snapshots:
balanced-match@1.0.2: {}
base64-js@1.5.1: {}
brace-expansion@1.1.11:
dependencies:
balanced-match: 1.0.2
@ -3394,6 +3659,11 @@ snapshots:
buffer-from@1.1.2: {}
buffer@6.0.3:
dependencies:
base64-js: 1.5.1
ieee754: 1.2.1
builtin-modules@5.0.0: {}
bundle-require@5.1.0(esbuild@0.25.2):
@ -3476,6 +3746,8 @@ snapshots:
consola@3.4.2: {}
cookie@0.5.0: {}
core-js-compat@3.41.0:
dependencies:
browserslist: 4.24.4
@ -4159,12 +4431,16 @@ snapshots:
dependencies:
function-bind: 1.1.2
hono@4.7.7: {}
hosted-git-info@7.0.2:
dependencies:
lru-cache: 10.4.3
human-signals@5.0.0: {}
ieee754@1.2.1: {}
ignore@5.3.2: {}
ignore@7.0.3: {}
@ -4186,6 +4462,20 @@ snapshots:
hasown: 2.0.2
side-channel: 1.1.0
iron-session@6.3.1:
dependencies:
'@peculiar/webcrypto': 1.5.0
'@types/cookie': 0.5.4
'@types/express': 4.17.21
'@types/koa': 2.15.0
'@types/node': 17.0.45
cookie: 0.5.0
iron-webcrypto: 0.2.8
iron-webcrypto@0.2.8:
dependencies:
buffer: 6.0.3
is-array-buffer@3.0.5:
dependencies:
call-bind: 1.0.8
@ -4330,6 +4620,8 @@ snapshots:
optionalDependencies:
'@pkgjs/parseargs': 0.11.0
jose@5.6.3: {}
joycon@3.1.1: {}
js-tokens@4.0.0: {}
@ -4395,6 +4687,8 @@ snapshots:
dependencies:
language-subtag-registry: 0.3.23
leb@1.0.0: {}
levn@0.4.1:
dependencies:
prelude-ls: 1.2.1
@ -4696,6 +4990,12 @@ snapshots:
punycode@2.3.1: {}
pvtsutils@1.3.6:
dependencies:
tslib: 2.8.1
pvutils@1.1.3: {}
queue-microtask@1.2.3: {}
react-is@16.13.1: {}
@ -5094,6 +5394,8 @@ snapshots:
minimist: 1.2.8
strip-bom: 3.0.0
tslib@2.8.1: {}
tsup@8.4.0(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1):
dependencies:
bundle-require: 5.1.0(esbuild@0.25.2)
@ -5304,6 +5606,14 @@ snapshots:
- tsx
- yaml
webcrypto-core@1.8.1:
dependencies:
'@peculiar/asn1-schema': 2.3.15
'@peculiar/json-schema': 1.1.12
asn1js: 3.0.6
pvtsutils: 1.3.6
tslib: 2.8.1
webidl-conversions@4.0.2: {}
whatwg-url@7.1.0: