kopia lustrzana https://github.com/transitive-bullshit/chatgpt-api
feat: WIP initial work on API gateway
rodzic
0f8af8173c
commit
3abdae9cd6
|
@ -2,7 +2,8 @@ import {
|
||||||
agenticProjectConfigSchema,
|
agenticProjectConfigSchema,
|
||||||
type OriginAdapter,
|
type OriginAdapter,
|
||||||
type PricingPlanList,
|
type PricingPlanList,
|
||||||
type Tool
|
type Tool,
|
||||||
|
type ToolConfig
|
||||||
} from '@agentic/platform-schemas'
|
} from '@agentic/platform-schemas'
|
||||||
import { validators } from '@agentic/platform-validators'
|
import { validators } from '@agentic/platform-validators'
|
||||||
import { relations } from '@fisch0920/drizzle-orm'
|
import { relations } from '@fisch0920/drizzle-orm'
|
||||||
|
@ -74,23 +75,16 @@ export const deployments = pgTable(
|
||||||
onDelete: 'cascade'
|
onDelete: 'cascade'
|
||||||
}),
|
}),
|
||||||
|
|
||||||
// TODO: Tool definitions
|
// Tool definitions exposed by the origin server
|
||||||
// tools: jsonb().$type<Tool[]>().default([]),
|
|
||||||
|
|
||||||
// TODO: metadata config (logo, keywords, examples, etc)
|
|
||||||
// TODO: webhooks
|
|
||||||
// TODO: third-party auth provider config
|
|
||||||
// NOTE: will need consumer.authProviders as well as user.authProviders for
|
|
||||||
// this because custom oauth credentials that are deployment-specific. will
|
|
||||||
// prolly also need to hash the individual AuthProviders in
|
|
||||||
// deployment.authProviders to compare across deployments.
|
|
||||||
|
|
||||||
tools: jsonb().$type<Tool[]>().notNull(),
|
tools: jsonb().$type<Tool[]>().notNull(),
|
||||||
|
|
||||||
|
// Tool configs customize the behavior of tools for different pricing plans
|
||||||
|
toolConfigs: jsonb().$type<ToolConfig[]>().default([]).notNull(),
|
||||||
|
|
||||||
// Origin API URL
|
// Origin API URL
|
||||||
originUrl: text().notNull(),
|
originUrl: text().notNull(),
|
||||||
|
|
||||||
// Origin API adapter config (openapi, mcp, hosted externally or internally, etc)
|
// Origin API adapter config (openapi, mcp, raw, hosting considerations, etc)
|
||||||
originAdapter: jsonb().$type<OriginAdapter>().notNull(),
|
originAdapter: jsonb().$type<OriginAdapter>().notNull(),
|
||||||
|
|
||||||
// Array<PricingPlan>
|
// Array<PricingPlan>
|
||||||
|
@ -99,7 +93,14 @@ export const deployments = pgTable(
|
||||||
// Which pricing intervals are supported for subscriptions to this project
|
// Which pricing intervals are supported for subscriptions to this project
|
||||||
pricingIntervals: pricingIntervalEnum().array().default(['month']).notNull()
|
pricingIntervals: pricingIntervalEnum().array().default(['month']).notNull()
|
||||||
|
|
||||||
// coupons: jsonb().$type<Coupon[]>().default([]).notNull()
|
// TODO: metadata config (logo, keywords, examples, etc)
|
||||||
|
// TODO: webhooks
|
||||||
|
// TODO: coupons
|
||||||
|
// TODO: third-party auth provider config
|
||||||
|
// NOTE: will need consumer.authProviders as well as user.authProviders for
|
||||||
|
// this because custom oauth credentials that are deployment-specific. will
|
||||||
|
// prolly also need to hash the individual AuthProviders in
|
||||||
|
// deployment.authProviders to compare across deployments.
|
||||||
},
|
},
|
||||||
(table) => [
|
(table) => [
|
||||||
uniqueIndex('deployment_identifier_idx').on(table.identifier),
|
uniqueIndex('deployment_identifier_idx').on(table.identifier),
|
||||||
|
@ -155,7 +156,9 @@ export const deploymentSelectSchema = createSelectSchema(deployments, {
|
||||||
sourceUrl: agenticProjectConfigSchema.shape.sourceUrl,
|
sourceUrl: agenticProjectConfigSchema.shape.sourceUrl,
|
||||||
originAdapter: agenticProjectConfigSchema.shape.originAdapter,
|
originAdapter: agenticProjectConfigSchema.shape.originAdapter,
|
||||||
pricingPlans: agenticProjectConfigSchema.shape.pricingPlans,
|
pricingPlans: agenticProjectConfigSchema.shape.pricingPlans,
|
||||||
pricingIntervals: agenticProjectConfigSchema.shape.pricingIntervals
|
pricingIntervals: agenticProjectConfigSchema.shape.pricingIntervals,
|
||||||
|
tools: agenticProjectConfigSchema.shape.toolConfigs,
|
||||||
|
toolConfigs: agenticProjectConfigSchema.shape.toolConfigs
|
||||||
})
|
})
|
||||||
.omit({
|
.omit({
|
||||||
originUrl: true
|
originUrl: true
|
||||||
|
|
|
@ -19,10 +19,13 @@ export async function resolveDeployment({
|
||||||
if (!deploymentIdentifier) {
|
if (!deploymentIdentifier) {
|
||||||
const config = await loadAgenticConfig({ cwd })
|
const config = await loadAgenticConfig({ cwd })
|
||||||
|
|
||||||
// TODO: team support
|
// TODO: re-add team support
|
||||||
const auth = AuthStore.getAuth()
|
const auth = AuthStore.getAuth()
|
||||||
const namespace = auth.user.username
|
const namespace = auth.user.username
|
||||||
|
|
||||||
|
// TODO: resolve deploymentIdentifier; config name may include namespace?
|
||||||
|
// TODO: rename parseFaasIdentifier; movingn away from FaaS terminology
|
||||||
|
|
||||||
deploymentIdentifier = `${namespace}/${config.name}@${fuzzyDeploymentIdentifierVersion}`
|
deploymentIdentifier = `${namespace}/${config.name}@${fuzzyDeploymentIdentifierVersion}`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
"@agentic/platform-openapi": "workspace:*",
|
"@agentic/platform-openapi": "workspace:*",
|
||||||
"@agentic/platform-validators": "workspace:*",
|
"@agentic/platform-validators": "workspace:*",
|
||||||
"@hono/zod-openapi": "catalog:",
|
"@hono/zod-openapi": "catalog:",
|
||||||
|
"@modelcontextprotocol/sdk": "catalog:",
|
||||||
"ms": "catalog:",
|
"ms": "catalog:",
|
||||||
"semver": "catalog:",
|
"semver": "catalog:",
|
||||||
"zod": "catalog:"
|
"zod": "catalog:"
|
||||||
|
|
|
@ -1,12 +1,15 @@
|
||||||
import { z } from '@hono/zod-openapi'
|
import { z } from '@hono/zod-openapi'
|
||||||
|
|
||||||
import { originAdapterSchema } from './origin-adapter'
|
import {
|
||||||
|
originAdapterConfigSchema,
|
||||||
|
originAdapterSchema
|
||||||
|
} from './origin-adapter'
|
||||||
import {
|
import {
|
||||||
pricingIntervalListSchema,
|
pricingIntervalListSchema,
|
||||||
type PricingPlan,
|
type PricingPlan,
|
||||||
pricingPlanListSchema
|
pricingPlanListSchema
|
||||||
} from './pricing'
|
} from './pricing'
|
||||||
import { toolConfigSchema } from './tools'
|
import { toolConfigSchema, toolSchema } from './tools'
|
||||||
|
|
||||||
// TODO:
|
// TODO:
|
||||||
// - **service / tool definitions**
|
// - **service / tool definitions**
|
||||||
|
@ -101,7 +104,7 @@ NOTE: Agentic currently only supports \`external\` API servers. If you'd like to
|
||||||
* for how origin tools / services are defined: either as an OpenAPI spec,
|
* for how origin tools / services are defined: either as an OpenAPI spec,
|
||||||
* an MCP server, or as a raw HTTP REST API.
|
* an MCP server, or as a raw HTTP REST API.
|
||||||
*/
|
*/
|
||||||
originAdapter: originAdapterSchema.optional().default({
|
originAdapter: originAdapterConfigSchema.optional().default({
|
||||||
location: 'external',
|
location: 'external',
|
||||||
type: 'raw'
|
type: 'raw'
|
||||||
}),
|
}),
|
||||||
|
@ -115,7 +118,7 @@ NOTE: Agentic currently only supports \`external\` API servers. If you'd like to
|
||||||
.default([defaultFreePricingPlan]),
|
.default([defaultFreePricingPlan]),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Optional list of billing intervals to enable in the pricingPlans.
|
* Optional list of billing intervals to enable in pricing plans.
|
||||||
*
|
*
|
||||||
* Defaults to a single monthly interval `['month']`.
|
* Defaults to a single monthly interval `['month']`.
|
||||||
*
|
*
|
||||||
|
@ -163,7 +166,7 @@ To add support for annual pricing plans, for example, you can use: \`['month', '
|
||||||
* `toolConfigs`, it will use the default behavior of the Agentic API
|
* `toolConfigs`, it will use the default behavior of the Agentic API
|
||||||
* gateway.
|
* gateway.
|
||||||
*/
|
*/
|
||||||
toolConfigs: z.array(toolConfigSchema).optional()
|
toolConfigs: z.array(toolConfigSchema).default([]).optional()
|
||||||
})
|
})
|
||||||
.strip()
|
.strip()
|
||||||
|
|
||||||
|
@ -171,3 +174,12 @@ export type AgenticProjectConfigInput = z.input<
|
||||||
typeof agenticProjectConfigSchema
|
typeof agenticProjectConfigSchema
|
||||||
>
|
>
|
||||||
export type AgenticProjectConfig = z.output<typeof agenticProjectConfigSchema>
|
export type AgenticProjectConfig = z.output<typeof agenticProjectConfigSchema>
|
||||||
|
|
||||||
|
export const resolvedAgenticProjectConfigSchema =
|
||||||
|
agenticProjectConfigSchema.extend({
|
||||||
|
originAdapter: originAdapterSchema,
|
||||||
|
tools: z.array(toolSchema).default([])
|
||||||
|
})
|
||||||
|
export type ResolvedAgenticProjectConfig = z.output<
|
||||||
|
typeof resolvedAgenticProjectConfigSchema
|
||||||
|
>
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
export * from './agentic-project-config'
|
export * from './agentic-project-config'
|
||||||
export * from './define-config'
|
export * from './define-config'
|
||||||
|
export * from './mcp'
|
||||||
export * from './origin-adapter'
|
export * from './origin-adapter'
|
||||||
export * from './pricing'
|
export * from './pricing'
|
||||||
export * from './rate-limit'
|
export * from './rate-limit'
|
||||||
|
|
|
@ -0,0 +1,106 @@
|
||||||
|
import { z } from '@hono/zod-openapi'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Capabilities that a server may support.
|
||||||
|
*
|
||||||
|
* Known capabilities are defined here, in this schema, but this is not a
|
||||||
|
* closed set: any server can define its own, additional capabilities.
|
||||||
|
*/
|
||||||
|
export const mcpServerCapabilitiesSchema = z
|
||||||
|
.object({
|
||||||
|
/**
|
||||||
|
* Experimental, non-standard capabilities that the server supports.
|
||||||
|
*/
|
||||||
|
experimental: z.optional(z.object({}).passthrough()),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Present if the server supports sending log messages to the client.
|
||||||
|
*/
|
||||||
|
logging: z.optional(z.object({}).passthrough()),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Present if the server supports sending completions to the client.
|
||||||
|
*/
|
||||||
|
completions: z.optional(z.object({}).passthrough()),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Present if the server offers any prompt templates.
|
||||||
|
*/
|
||||||
|
prompts: z.optional(
|
||||||
|
z
|
||||||
|
.object({
|
||||||
|
/**
|
||||||
|
* Whether this server supports issuing notifications for changes to
|
||||||
|
* the prompt list.
|
||||||
|
*/
|
||||||
|
listChanged: z.optional(z.boolean())
|
||||||
|
})
|
||||||
|
.passthrough()
|
||||||
|
),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Present if the server offers any resources to read.
|
||||||
|
*/
|
||||||
|
resources: z.optional(
|
||||||
|
z
|
||||||
|
.object({
|
||||||
|
/**
|
||||||
|
* Whether this server supports clients subscribing to resource updates.
|
||||||
|
*/
|
||||||
|
subscribe: z.optional(z.boolean()),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether this server supports issuing notifications for changes to
|
||||||
|
* the resource list.
|
||||||
|
*/
|
||||||
|
listChanged: z.optional(z.boolean())
|
||||||
|
})
|
||||||
|
.passthrough()
|
||||||
|
),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Present if the server offers any tools to call.
|
||||||
|
*/
|
||||||
|
tools: z.optional(
|
||||||
|
z
|
||||||
|
.object({
|
||||||
|
/**
|
||||||
|
* Whether this server supports issuing notifications for changes to
|
||||||
|
* the tool list.
|
||||||
|
*/
|
||||||
|
listChanged: z.optional(z.boolean())
|
||||||
|
})
|
||||||
|
.passthrough()
|
||||||
|
)
|
||||||
|
})
|
||||||
|
.passthrough()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* After receiving an initialize request from the client, the server sends
|
||||||
|
* this response.
|
||||||
|
*/
|
||||||
|
export const mcpServerInfoSchema = z.object({
|
||||||
|
/**
|
||||||
|
* The name of the MCP server.
|
||||||
|
*/
|
||||||
|
name: z.string(),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The version of the MCP server.
|
||||||
|
*/
|
||||||
|
version: z.string(),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The advertised capabilities of the MCP server.
|
||||||
|
*/
|
||||||
|
capabilities: mcpServerCapabilitiesSchema.optional(),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instructions describing how to use the server and its features.
|
||||||
|
*
|
||||||
|
* This can be used by clients to improve the LLM's understanding of
|
||||||
|
* available tools, resources, etc. It can be thought of like a "hint" to the
|
||||||
|
* model. For example, this information MAY be added to the system prompt.
|
||||||
|
*/
|
||||||
|
instructions: z.string().optional()
|
||||||
|
})
|
|
@ -1,5 +1,7 @@
|
||||||
import { z } from '@hono/zod-openapi'
|
import { z } from '@hono/zod-openapi'
|
||||||
|
|
||||||
|
import { mcpServerInfoSchema } from './mcp'
|
||||||
|
|
||||||
export const originAdapterLocationSchema = z.literal('external')
|
export const originAdapterLocationSchema = z.literal('external')
|
||||||
// z.union([
|
// z.union([
|
||||||
// z.literal('external'),
|
// z.literal('external'),
|
||||||
|
@ -31,59 +33,146 @@ export const commonOriginAdapterSchema = z.object({
|
||||||
// - internal http
|
// - internal http
|
||||||
// - etc
|
// - etc
|
||||||
|
|
||||||
|
export const openapiOriginAdapterConfigSchema = commonOriginAdapterSchema.merge(
|
||||||
|
z.object({
|
||||||
|
/**
|
||||||
|
* OpenAPI 3.x spec describing the origin API server.
|
||||||
|
*/
|
||||||
|
type: z.literal('openapi'),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Local file path, URL, or JSON stringified OpenAPI spec describing the
|
||||||
|
* origin API server.
|
||||||
|
*
|
||||||
|
* Must be a 3.x OpenAPI spec (older versions are not supported).
|
||||||
|
*/
|
||||||
|
spec: z
|
||||||
|
.string()
|
||||||
|
.describe(
|
||||||
|
'Local file path, URL, or JSON stringified OpenAPI spec describing the origin API server.'
|
||||||
|
)
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
|
export const mcpOriginAdapterConfigSchema = commonOriginAdapterSchema.merge(
|
||||||
|
z.object({
|
||||||
|
/**
|
||||||
|
* MCP server.
|
||||||
|
*/
|
||||||
|
type: z.literal('mcp')
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
|
export const rawOriginAdapterConfigSchema = commonOriginAdapterSchema.merge(
|
||||||
|
z.object({
|
||||||
|
/**
|
||||||
|
* Marks the origin server as a raw HTTP REST API without any additional
|
||||||
|
* tool or service definitions.
|
||||||
|
*
|
||||||
|
* In this mode, Agentic's API gateway acts as a simple reverse-proxy
|
||||||
|
* to the origin server, without validating tools.
|
||||||
|
*/
|
||||||
|
type: z.literal('raw')
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Origin API adapter is used to configure the origin API server downstream
|
* Origin adapter is used to configure the origin API server downstream from
|
||||||
* from Agentic's API gateway. It specifies whether the origin API server
|
* Agentic's API gateway. It specifies whether the origin API server denoted
|
||||||
* denoted by `originUrl` is hosted externally or deployed internally to
|
* by `originUrl` is hosted externally or deployed internally to Agentic's
|
||||||
* Agentic's infrastructure. It also specifies the format for how origin tools
|
* infrastructure. It also specifies the format for how origin tools are
|
||||||
* are defined: either as an OpenAPI spec, an MCP server, or as a raw HTTP
|
* defined: either an OpenAPI spec, an MCP server, or as a raw HTTP REST API.
|
||||||
* REST API.
|
|
||||||
*
|
*
|
||||||
* NOTE: Agentic currently only supports `external` API servers. If you'd like
|
* NOTE: Agentic currently only supports `external` API servers. If you'd like
|
||||||
* to host your API or MCP server on Agentic's infrastructure, please reach out
|
* to host your API or MCP server on Agentic's infrastructure, please reach out
|
||||||
* to support@agentic.so.
|
* to support@agentic.so.
|
||||||
*/
|
*/
|
||||||
export const originAdapterSchema = z
|
export const originAdapterConfigSchema = z
|
||||||
.discriminatedUnion('type', [
|
.discriminatedUnion('type', [
|
||||||
z
|
openapiOriginAdapterConfigSchema,
|
||||||
.object({
|
|
||||||
/**
|
|
||||||
* OpenAPI 3.x spec describing the origin API server.
|
|
||||||
*/
|
|
||||||
type: z.literal('openapi'),
|
|
||||||
|
|
||||||
/**
|
mcpOriginAdapterConfigSchema,
|
||||||
* JSON stringified OpenAPI spec describing the origin API server.
|
|
||||||
*
|
|
||||||
* The origin API servers are be hidden in the embedded OpenAPI spec,
|
|
||||||
* because clients should only be aware of the upstream Agentic API
|
|
||||||
* gateway.
|
|
||||||
*/
|
|
||||||
spec: z
|
|
||||||
.string()
|
|
||||||
.describe(
|
|
||||||
'JSON stringified OpenAPI spec describing the origin API server.'
|
|
||||||
)
|
|
||||||
})
|
|
||||||
.merge(commonOriginAdapterSchema),
|
|
||||||
|
|
||||||
z
|
rawOriginAdapterConfigSchema
|
||||||
.object({
|
|
||||||
/**
|
|
||||||
* Marks the origin server as a raw HTTP REST API without any additional
|
|
||||||
* tool or service definitions.
|
|
||||||
*
|
|
||||||
* In this mode, Agentic's API gateway acts as a simple reverse-proxy
|
|
||||||
* to the origin server, without validating tools or services.
|
|
||||||
*/
|
|
||||||
type: z.literal('raw')
|
|
||||||
})
|
|
||||||
.merge(commonOriginAdapterSchema)
|
|
||||||
])
|
])
|
||||||
.describe(
|
.describe(
|
||||||
`Deployment origin API adapter is used to configure the origin API server downstream from Agentic's API gateway. It specifies whether the origin API server denoted by \`originUrl\` is hosted externally or deployed internally to Agentic's infrastructure. It also specifies the format for how origin tools / services are defined: either as an OpenAPI spec, an MCP server, or as a raw HTTP REST API.
|
`Origin adapter is used to configure the origin API server downstream from Agentic's API gateway. It specifies whether the origin API server denoted by \`originUrl\` is hosted externally or deployed internally to Agentic's infrastructure. It also specifies the format for how origin tools are defined: either an OpenAPI spec, an MCP server, or a raw HTTP REST API.
|
||||||
|
|
||||||
NOTE: Agentic currently only supports \`external\` API servers. If you'd like to host your API or MCP server on Agentic's infrastructure, please reach out to support@agentic.so.`
|
NOTE: Agentic currently only supports \`external\` API servers. If you'd like to host your API or MCP server on Agentic's infrastructure, please reach out to support@agentic.so.`
|
||||||
)
|
)
|
||||||
|
.openapi('OriginAdapterConfig')
|
||||||
|
export type OriginAdapterConfig = z.infer<typeof originAdapterConfigSchema>
|
||||||
|
|
||||||
|
export const openapiOriginAdapterSchema = commonOriginAdapterSchema.merge(
|
||||||
|
z.object({
|
||||||
|
/**
|
||||||
|
* OpenAPI 3.x spec describing the origin API server.
|
||||||
|
*/
|
||||||
|
type: z.literal('openapi'),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* JSON stringified OpenAPI spec describing the origin API server.
|
||||||
|
*
|
||||||
|
* The origin API servers are be hidden in the embedded OpenAPI spec,
|
||||||
|
* because clients should only be aware of the upstream Agentic API
|
||||||
|
* gateway.
|
||||||
|
*/
|
||||||
|
spec: z
|
||||||
|
.string()
|
||||||
|
.describe(
|
||||||
|
'JSON stringified OpenAPI spec describing the origin API server.'
|
||||||
|
)
|
||||||
|
|
||||||
|
// TODO: Mapping from tool names to OpenAPI operations, with all the info
|
||||||
|
// the Agentic API gateway needs to know at runtime (HTTP method, path,
|
||||||
|
// params, etc).
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
|
export const mcpOriginAdapterSchema = commonOriginAdapterSchema.merge(
|
||||||
|
z.object({
|
||||||
|
/**
|
||||||
|
* MCP server.
|
||||||
|
*/
|
||||||
|
type: z.literal('mcp'),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MCP server info: name, version, capabilities, instructions, etc.
|
||||||
|
*/
|
||||||
|
serverInfo: mcpServerInfoSchema
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
|
export const rawOriginAdapterSchema = commonOriginAdapterSchema.merge(
|
||||||
|
z.object({
|
||||||
|
/**
|
||||||
|
* Marks the origin server as a raw HTTP REST API without any additional
|
||||||
|
* tool or service definitions.
|
||||||
|
*
|
||||||
|
* In this mode, Agentic's API gateway acts as a simple reverse-proxy
|
||||||
|
* to the origin server, without validating tools.
|
||||||
|
*/
|
||||||
|
type: z.literal('raw')
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Origin adapter is used to configure the origin API server downstream from
|
||||||
|
* Agentic's API gateway. It specifies whether the origin API server denoted
|
||||||
|
* by `originUrl` is hosted externally or deployed internally to Agentic's
|
||||||
|
* infrastructure. It also specifies the format for how origin tools are
|
||||||
|
* defined: either an OpenAPI spec, an MCP server, or as a raw HTTP REST API.
|
||||||
|
*/
|
||||||
|
export const originAdapterSchema = z
|
||||||
|
.discriminatedUnion('type', [
|
||||||
|
openapiOriginAdapterSchema,
|
||||||
|
|
||||||
|
mcpOriginAdapterSchema,
|
||||||
|
|
||||||
|
rawOriginAdapterSchema
|
||||||
|
])
|
||||||
|
.describe(
|
||||||
|
`Origin adapter is used to configure the origin API server downstream from Agentic's API gateway. It specifies whether the origin API server denoted by \`originUrl\` is hosted externally or deployed internally to Agentic's infrastructure. It also specifies the format for how origin tools are defined: either an OpenAPI spec, an MCP server, or a raw HTTP REST API.`
|
||||||
|
)
|
||||||
.openapi('OriginAdapter')
|
.openapi('OriginAdapter')
|
||||||
export type OriginAdapter = z.infer<typeof originAdapterSchema>
|
export type OriginAdapter = z.infer<typeof originAdapterSchema>
|
||||||
|
|
|
@ -9,115 +9,14 @@ export const toolNameSchema = z
|
||||||
.regex(/^[a-zA-Z0-9_]+$/)
|
.regex(/^[a-zA-Z0-9_]+$/)
|
||||||
.nonempty()
|
.nonempty()
|
||||||
|
|
||||||
/**
|
export const jsonSchemaObjectSchema = z
|
||||||
* Additional properties describing a Tool to clients.
|
|
||||||
*
|
|
||||||
* NOTE: All properties in ToolAnnotations are **hints**.
|
|
||||||
*
|
|
||||||
* They are not guaranteed to provide a faithful description of tool behavior
|
|
||||||
* (including descriptive properties like `title`).
|
|
||||||
*
|
|
||||||
* Clients should never make tool use decisions based on ToolAnnotations
|
|
||||||
* received from untrusted servers.
|
|
||||||
*/
|
|
||||||
export const toolAnnotationsSchema = z
|
|
||||||
.object({
|
.object({
|
||||||
/**
|
type: z.literal('object'),
|
||||||
* A human-readable title for the tool.
|
properties: z.object({}).passthrough().optional(),
|
||||||
*/
|
required: z.array(z.string()).optional()
|
||||||
title: z.string().optional(),
|
|
||||||
|
|
||||||
/**
|
|
||||||
* If true, the tool does not modify its environment.
|
|
||||||
*
|
|
||||||
* Default: false
|
|
||||||
*/
|
|
||||||
readOnlyHint: z.boolean().optional(),
|
|
||||||
|
|
||||||
/**
|
|
||||||
* If true, the tool may perform destructive updates to its environment.
|
|
||||||
* If false, the tool performs only additive updates.
|
|
||||||
*
|
|
||||||
* (This property is meaningful only when `readOnlyHint == false`)
|
|
||||||
*
|
|
||||||
* Default: true
|
|
||||||
*/
|
|
||||||
destructiveHint: z.boolean().optional(),
|
|
||||||
|
|
||||||
/**
|
|
||||||
* If true, calling the tool repeatedly with the same arguments
|
|
||||||
* will have no additional effect on the its environment.
|
|
||||||
*
|
|
||||||
* (This property is meaningful only when `readOnlyHint == false`)
|
|
||||||
*
|
|
||||||
* Default: false
|
|
||||||
*/
|
|
||||||
idempotentHint: z.boolean().optional(),
|
|
||||||
|
|
||||||
/**
|
|
||||||
* If true, this tool may interact with an "open world" of external
|
|
||||||
* entities. If false, the tool's domain of interaction is closed.
|
|
||||||
* For example, the world of a web search tool is open, whereas that
|
|
||||||
* of a memory tool is not.
|
|
||||||
*
|
|
||||||
* Default: true
|
|
||||||
*/
|
|
||||||
openWorldHint: z.boolean().optional()
|
|
||||||
})
|
})
|
||||||
.passthrough()
|
.passthrough()
|
||||||
|
.openapi('JsonSchemaObject')
|
||||||
/**
|
|
||||||
* Definition for an Agentic tool.
|
|
||||||
*/
|
|
||||||
export const toolSchema = z
|
|
||||||
.object({
|
|
||||||
/**
|
|
||||||
* The name of the tool, which acts as a unique, stable identifier for the
|
|
||||||
* tool across deployments.
|
|
||||||
*
|
|
||||||
* @example `"get_weather"`
|
|
||||||
* @example `"google_search"`
|
|
||||||
*/
|
|
||||||
name: toolNameSchema,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A description of the tool intended to be used in prompts for LLMs to
|
|
||||||
* understand when and how to use the tool.
|
|
||||||
*/
|
|
||||||
description: z.string().optional(),
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A JSON Schema object defining the expected parameters for the tool.
|
|
||||||
*/
|
|
||||||
inputSchema: z
|
|
||||||
.object({
|
|
||||||
type: z.literal('object'),
|
|
||||||
properties: z.object({}).passthrough().optional(),
|
|
||||||
required: z.array(z.string()).optional()
|
|
||||||
})
|
|
||||||
.passthrough(),
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An optional JSON Schema object defining the structure of the tool's
|
|
||||||
* output.
|
|
||||||
*/
|
|
||||||
outputSchema: z
|
|
||||||
.object({
|
|
||||||
type: z.literal('object'),
|
|
||||||
properties: z.object({}).passthrough().optional(),
|
|
||||||
required: z.array(z.string()).optional()
|
|
||||||
})
|
|
||||||
.passthrough()
|
|
||||||
.optional(),
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Optional additional tool information.
|
|
||||||
*/
|
|
||||||
annotations: toolAnnotationsSchema.optional()
|
|
||||||
})
|
|
||||||
.passthrough()
|
|
||||||
.openapi('Tool')
|
|
||||||
export type Tool = z.infer<typeof toolSchema>
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Customizes a tool's behavior for a given pricing plan.
|
* Customizes a tool's behavior for a given pricing plan.
|
||||||
|
@ -245,5 +144,104 @@ export const toolConfigSchema = z
|
||||||
.openapi('ToolConfig')
|
.openapi('ToolConfig')
|
||||||
export type ToolConfig = z.infer<typeof toolConfigSchema>
|
export type ToolConfig = z.infer<typeof toolConfigSchema>
|
||||||
|
|
||||||
export const toolMapSchema = z.record(toolNameSchema, toolSchema)
|
/**
|
||||||
export type ToolMap = z.infer<typeof toolMapSchema>
|
* Additional properties describing a Tool to clients.
|
||||||
|
*
|
||||||
|
* NOTE: All properties in ToolAnnotations are **hints**.
|
||||||
|
*
|
||||||
|
* They are not guaranteed to provide a faithful description of tool behavior
|
||||||
|
* (including descriptive properties like `title`).
|
||||||
|
*
|
||||||
|
* Clients should never make tool use decisions based on ToolAnnotations
|
||||||
|
* received from untrusted servers.
|
||||||
|
*/
|
||||||
|
export const toolAnnotationsSchema = z
|
||||||
|
.object({
|
||||||
|
/**
|
||||||
|
* A human-readable title for the tool.
|
||||||
|
*/
|
||||||
|
title: z.string().optional(),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If true, the tool does not modify its environment.
|
||||||
|
*
|
||||||
|
* Default: false
|
||||||
|
*/
|
||||||
|
readOnlyHint: z.boolean().optional(),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If true, the tool may perform destructive updates to its environment.
|
||||||
|
* If false, the tool performs only additive updates.
|
||||||
|
*
|
||||||
|
* (This property is meaningful only when `readOnlyHint == false`)
|
||||||
|
*
|
||||||
|
* Default: true
|
||||||
|
*/
|
||||||
|
destructiveHint: z.boolean().optional(),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If true, calling the tool repeatedly with the same arguments
|
||||||
|
* will have no additional effect on the its environment.
|
||||||
|
*
|
||||||
|
* (This property is meaningful only when `readOnlyHint == false`)
|
||||||
|
*
|
||||||
|
* Default: false
|
||||||
|
*/
|
||||||
|
idempotentHint: z.boolean().optional(),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If true, this tool may interact with an "open world" of external
|
||||||
|
* entities. If false, the tool's domain of interaction is closed.
|
||||||
|
* For example, the world of a web search tool is open, whereas that
|
||||||
|
* of a memory tool is not.
|
||||||
|
*
|
||||||
|
* Default: true
|
||||||
|
*/
|
||||||
|
openWorldHint: z.boolean().optional()
|
||||||
|
})
|
||||||
|
.passthrough()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Definition for an Agentic tool.
|
||||||
|
*/
|
||||||
|
export const toolSchema = z
|
||||||
|
.object({
|
||||||
|
/**
|
||||||
|
* The name of the tool, which acts as a unique, stable identifier for the
|
||||||
|
* tool across deployments.
|
||||||
|
*
|
||||||
|
* @example `"get_weather"`
|
||||||
|
* @example `"google_search"`
|
||||||
|
*/
|
||||||
|
name: toolNameSchema,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A description of the tool intended to be used in prompts for LLMs to
|
||||||
|
* understand when and how to use the tool.
|
||||||
|
*/
|
||||||
|
description: z.string().optional(),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A JSON Schema object defining the expected parameters for the tool.
|
||||||
|
*/
|
||||||
|
inputSchema: jsonSchemaObjectSchema,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An optional JSON Schema object defining the structure of the tool's
|
||||||
|
* output.
|
||||||
|
*/
|
||||||
|
outputSchema: jsonSchemaObjectSchema.optional(),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Optional additional tool information.
|
||||||
|
*
|
||||||
|
* Used by MCP servers.
|
||||||
|
*/
|
||||||
|
annotations: toolAnnotationsSchema.optional()
|
||||||
|
})
|
||||||
|
.passthrough()
|
||||||
|
.openapi('Tool')
|
||||||
|
export type Tool = z.infer<typeof toolSchema>
|
||||||
|
|
||||||
|
// export const toolMapSchema = z.record(toolNameSchema, toolSchema)
|
||||||
|
// export type ToolMap = z.infer<typeof toolMapSchema>
|
||||||
|
|
|
@ -7,7 +7,9 @@ import type { PricingPlanLineItem } from './pricing'
|
||||||
import {
|
import {
|
||||||
type AgenticProjectConfig,
|
type AgenticProjectConfig,
|
||||||
type AgenticProjectConfigInput,
|
type AgenticProjectConfigInput,
|
||||||
agenticProjectConfigSchema
|
agenticProjectConfigSchema,
|
||||||
|
type ResolvedAgenticProjectConfig,
|
||||||
|
resolvedAgenticProjectConfigSchema
|
||||||
} from './agentic-project-config'
|
} from './agentic-project-config'
|
||||||
import { getPricingPlansByInterval } from './utils'
|
import { getPricingPlansByInterval } from './utils'
|
||||||
import { validateOriginAdapter } from './validate-origin-adapter'
|
import { validateOriginAdapter } from './validate-origin-adapter'
|
||||||
|
@ -18,7 +20,7 @@ export async function validateAgenticProjectConfig(
|
||||||
strip = false,
|
strip = false,
|
||||||
...opts
|
...opts
|
||||||
}: { logger?: Logger; cwd?: URL; strip?: boolean; label?: string } = {}
|
}: { logger?: Logger; cwd?: URL; strip?: boolean; label?: string } = {}
|
||||||
): Promise<AgenticProjectConfig> {
|
): Promise<ResolvedAgenticProjectConfig> {
|
||||||
const config = parseZodSchema<
|
const config = parseZodSchema<
|
||||||
AgenticProjectConfig,
|
AgenticProjectConfig,
|
||||||
ZodTypeDef,
|
ZodTypeDef,
|
||||||
|
@ -240,12 +242,18 @@ export async function validateAgenticProjectConfig(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
await validateOriginAdapter({
|
const { originAdapter, tools } = await validateOriginAdapter({
|
||||||
|
name,
|
||||||
|
version: config.version,
|
||||||
label: `project "${name}"`,
|
label: `project "${name}"`,
|
||||||
...opts,
|
...opts,
|
||||||
originUrl,
|
originUrl,
|
||||||
originAdapter: config.originAdapter
|
originAdapter: config.originAdapter
|
||||||
})
|
})
|
||||||
|
|
||||||
return config
|
return parseZodSchema(resolvedAgenticProjectConfigSchema, {
|
||||||
|
...config,
|
||||||
|
originAdapter,
|
||||||
|
tools
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,25 +1,35 @@
|
||||||
import type { OriginAdapter } from '@agentic/platform-schemas'
|
import type {
|
||||||
|
OriginAdapter,
|
||||||
|
OriginAdapterConfig,
|
||||||
|
Tool
|
||||||
|
} from '@agentic/platform-schemas'
|
||||||
import { assert, type Logger } from '@agentic/platform-core'
|
import { assert, type Logger } from '@agentic/platform-core'
|
||||||
import { validateOpenAPISpec } from '@agentic/platform-openapi'
|
import { validateOpenAPISpec } from '@agentic/platform-openapi'
|
||||||
|
import { Client as McpClient } from '@modelcontextprotocol/sdk/client/index.js'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validates and normalizes the origin adapter config for a project.
|
* Validates and normalizes the origin adapter config for a project.
|
||||||
*
|
|
||||||
* NOTE: This method may mutate `originAdapter.spec`.
|
|
||||||
*/
|
*/
|
||||||
export async function validateOriginAdapter({
|
export async function validateOriginAdapter({
|
||||||
|
name,
|
||||||
|
version = '0.0.0',
|
||||||
originUrl,
|
originUrl,
|
||||||
originAdapter,
|
originAdapter,
|
||||||
label,
|
label,
|
||||||
cwd,
|
cwd,
|
||||||
logger
|
logger
|
||||||
}: {
|
}: {
|
||||||
|
name: string
|
||||||
originUrl: string
|
originUrl: string
|
||||||
originAdapter: OriginAdapter
|
originAdapter: OriginAdapterConfig
|
||||||
label: string
|
label: string
|
||||||
|
version?: string
|
||||||
cwd?: URL
|
cwd?: URL
|
||||||
logger?: Logger
|
logger?: Logger
|
||||||
}): Promise<void> {
|
}): Promise<{
|
||||||
|
originAdapter: OriginAdapter
|
||||||
|
tools?: Tool[]
|
||||||
|
}> {
|
||||||
assert(originUrl, 400, `Origin URL is required for ${label}`)
|
assert(originUrl, 400, `Origin URL is required for ${label}`)
|
||||||
|
|
||||||
if (originAdapter.type === 'openapi') {
|
if (originAdapter.type === 'openapi') {
|
||||||
|
@ -40,18 +50,59 @@ export async function validateOriginAdapter({
|
||||||
delete openapiSpec.servers
|
delete openapiSpec.servers
|
||||||
|
|
||||||
// TODO: Additional, agentic-specific validation of the OpenAPI spec's
|
// TODO: Additional, agentic-specific validation of the OpenAPI spec's
|
||||||
// operations to ensure they are valid AI functions.
|
// operations to ensure they are valid tools.
|
||||||
|
|
||||||
// TODO: Simplify OpenAPI spec by removing any query params and headers
|
// TODO: Simplify OpenAPI spec by removing any query params and headers
|
||||||
// specific to the Agentic API gateway.
|
// specific to the Agentic API gateway.
|
||||||
|
|
||||||
// Update the openapi spec with the normalized version
|
// TODO: Extract tool definitions from OpenAPI operationIds
|
||||||
originAdapter.spec = JSON.stringify(openapiSpec)
|
|
||||||
|
return {
|
||||||
|
originAdapter: {
|
||||||
|
...originAdapter,
|
||||||
|
// Update the openapi spec with the normalized version
|
||||||
|
spec: JSON.stringify(openapiSpec)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (originAdapter.type === 'mcp') {
|
||||||
|
// TODO: Validate MCP server info and tools
|
||||||
|
|
||||||
|
const { SSEClientTransport } = await import(
|
||||||
|
'@modelcontextprotocol/sdk/client/sse.js'
|
||||||
|
)
|
||||||
|
const transport = new SSEClientTransport(new URL(originUrl))
|
||||||
|
const client = new McpClient({ name, version })
|
||||||
|
await client.connect(transport)
|
||||||
|
|
||||||
|
const serverInfo = {
|
||||||
|
name,
|
||||||
|
version,
|
||||||
|
...client.getServerVersion(),
|
||||||
|
capabilities: client.getServerCapabilities(),
|
||||||
|
instructions: client.getInstructions()
|
||||||
|
}
|
||||||
|
|
||||||
|
const listToolsResponse = await client.listTools()
|
||||||
|
|
||||||
|
// TODO: Validate MCP tools
|
||||||
|
const tools = listToolsResponse.tools
|
||||||
|
|
||||||
|
return {
|
||||||
|
originAdapter: {
|
||||||
|
...originAdapter,
|
||||||
|
serverInfo
|
||||||
|
},
|
||||||
|
tools
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
assert(
|
assert(
|
||||||
originAdapter.type === 'raw',
|
originAdapter.type === 'raw',
|
||||||
400,
|
400,
|
||||||
`Invalid origin adapter type "${originAdapter.type}" for ${label}`
|
`Invalid origin adapter type "${originAdapter.type}" for ${label}`
|
||||||
)
|
)
|
||||||
|
|
||||||
|
return {
|
||||||
|
originAdapter
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
431
pnpm-lock.yaml
431
pnpm-lock.yaml
|
@ -30,6 +30,9 @@ catalogs:
|
||||||
'@hono/zod-openapi':
|
'@hono/zod-openapi':
|
||||||
specifier: ^0.19.6
|
specifier: ^0.19.6
|
||||||
version: 0.19.6
|
version: 0.19.6
|
||||||
|
'@modelcontextprotocol/sdk':
|
||||||
|
specifier: ^1.11.2
|
||||||
|
version: 1.12.0
|
||||||
'@openauthjs/openauth':
|
'@openauthjs/openauth':
|
||||||
specifier: ^0.4.3
|
specifier: ^0.4.3
|
||||||
version: 0.4.3
|
version: 0.4.3
|
||||||
|
@ -494,6 +497,9 @@ importers:
|
||||||
'@hono/zod-openapi':
|
'@hono/zod-openapi':
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 0.19.6(hono@4.7.10)(zod@3.25.30)
|
version: 0.19.6(hono@4.7.10)(zod@3.25.30)
|
||||||
|
'@modelcontextprotocol/sdk':
|
||||||
|
specifier: 'catalog:'
|
||||||
|
version: 1.12.0
|
||||||
ms:
|
ms:
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 2.1.3
|
version: 2.1.3
|
||||||
|
@ -1245,6 +1251,10 @@ packages:
|
||||||
'@jridgewell/trace-mapping@0.3.9':
|
'@jridgewell/trace-mapping@0.3.9':
|
||||||
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
|
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
|
||||||
|
|
||||||
|
'@modelcontextprotocol/sdk@1.12.0':
|
||||||
|
resolution: {integrity: sha512-m//7RlINx1F3sz3KqwY1WWzVgTcYX52HYk4bJ1hkBXV3zccAEth+jRvG8DBRrdaQuRsPAJOx2MH3zaHNCKL7Zg==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
'@napi-rs/wasm-runtime@0.2.10':
|
'@napi-rs/wasm-runtime@0.2.10':
|
||||||
resolution: {integrity: sha512-bCsCyeZEwVErsGmyPNSzwfwFn4OdxBj0mmv6hOFucB/k81Ojdu68RbZdxYsRQUPc9l6SU5F/cG+bXgWs3oUgsQ==}
|
resolution: {integrity: sha512-bCsCyeZEwVErsGmyPNSzwfwFn4OdxBj0mmv6hOFucB/k81Ojdu68RbZdxYsRQUPc9l6SU5F/cG+bXgWs3oUgsQ==}
|
||||||
|
|
||||||
|
@ -1955,6 +1965,10 @@ packages:
|
||||||
'@vitest/utils@3.1.4':
|
'@vitest/utils@3.1.4':
|
||||||
resolution: {integrity: sha512-yriMuO1cfFhmiGc8ataN51+9ooHRuURdfAZfwFd3usWynjzpLslZdYnRegTv32qdgtJTsj15FoeZe2g15fY1gg==}
|
resolution: {integrity: sha512-yriMuO1cfFhmiGc8ataN51+9ooHRuURdfAZfwFd3usWynjzpLslZdYnRegTv32qdgtJTsj15FoeZe2g15fY1gg==}
|
||||||
|
|
||||||
|
accepts@2.0.0:
|
||||||
|
resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
|
||||||
|
engines: {node: '>= 0.6'}
|
||||||
|
|
||||||
acorn-import-attributes@1.9.5:
|
acorn-import-attributes@1.9.5:
|
||||||
resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==}
|
resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
@ -2107,6 +2121,10 @@ packages:
|
||||||
blake3-wasm@2.1.5:
|
blake3-wasm@2.1.5:
|
||||||
resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==}
|
resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==}
|
||||||
|
|
||||||
|
body-parser@2.2.0:
|
||||||
|
resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
bottleneck@2.19.5:
|
bottleneck@2.19.5:
|
||||||
resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==}
|
resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==}
|
||||||
|
|
||||||
|
@ -2142,6 +2160,10 @@ packages:
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
esbuild: '>=0.18'
|
esbuild: '>=0.18'
|
||||||
|
|
||||||
|
bytes@3.1.2:
|
||||||
|
resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
|
||||||
|
engines: {node: '>= 0.8'}
|
||||||
|
|
||||||
cac@6.7.14:
|
cac@6.7.14:
|
||||||
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
|
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
@ -2257,6 +2279,18 @@ packages:
|
||||||
resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==}
|
resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==}
|
||||||
engines: {node: ^14.18.0 || >=16.10.0}
|
engines: {node: ^14.18.0 || >=16.10.0}
|
||||||
|
|
||||||
|
content-disposition@1.0.0:
|
||||||
|
resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==}
|
||||||
|
engines: {node: '>= 0.6'}
|
||||||
|
|
||||||
|
content-type@1.0.5:
|
||||||
|
resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
|
||||||
|
engines: {node: '>= 0.6'}
|
||||||
|
|
||||||
|
cookie-signature@1.2.2:
|
||||||
|
resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==}
|
||||||
|
engines: {node: '>=6.6.0'}
|
||||||
|
|
||||||
cookie@0.7.2:
|
cookie@0.7.2:
|
||||||
resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
|
resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
|
||||||
engines: {node: '>= 0.6'}
|
engines: {node: '>= 0.6'}
|
||||||
|
@ -2264,6 +2298,10 @@ packages:
|
||||||
core-js-compat@3.41.0:
|
core-js-compat@3.41.0:
|
||||||
resolution: {integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==}
|
resolution: {integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==}
|
||||||
|
|
||||||
|
cors@2.8.5:
|
||||||
|
resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
|
||||||
|
engines: {node: '>= 0.10'}
|
||||||
|
|
||||||
cross-spawn@7.0.6:
|
cross-spawn@7.0.6:
|
||||||
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
|
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
|
||||||
engines: {node: '>= 8'}
|
engines: {node: '>= 8'}
|
||||||
|
@ -2350,6 +2388,10 @@ packages:
|
||||||
resolution: {integrity: sha512-R6ep6JJ+eOBZsBr9esiNN1gxFbZE4Q2cULkUSFumGYecAiS6qodDvcPx/sFuWHMNul7DWmrtoEOpYSm7o6tbSA==}
|
resolution: {integrity: sha512-R6ep6JJ+eOBZsBr9esiNN1gxFbZE4Q2cULkUSFumGYecAiS6qodDvcPx/sFuWHMNul7DWmrtoEOpYSm7o6tbSA==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
|
depd@2.0.0:
|
||||||
|
resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
|
||||||
|
engines: {node: '>= 0.8'}
|
||||||
|
|
||||||
detect-libc@2.0.4:
|
detect-libc@2.0.4:
|
||||||
resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
|
resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
@ -2466,6 +2508,9 @@ packages:
|
||||||
eastasianwidth@0.2.0:
|
eastasianwidth@0.2.0:
|
||||||
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
|
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
|
||||||
|
|
||||||
|
ee-first@1.1.1:
|
||||||
|
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
|
||||||
|
|
||||||
electron-to-chromium@1.5.143:
|
electron-to-chromium@1.5.143:
|
||||||
resolution: {integrity: sha512-QqklJMOFBMqe46k8iIOwA9l2hz57V2OKMmP5eSWcUvwx+mASAsbU+wkF1pHjn9ZVSBPrsYWr4/W/95y5SwYg2g==}
|
resolution: {integrity: sha512-QqklJMOFBMqe46k8iIOwA9l2hz57V2OKMmP5eSWcUvwx+mASAsbU+wkF1pHjn9ZVSBPrsYWr4/W/95y5SwYg2g==}
|
||||||
|
|
||||||
|
@ -2482,6 +2527,10 @@ packages:
|
||||||
emoji-regex@9.2.2:
|
emoji-regex@9.2.2:
|
||||||
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
|
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
|
||||||
|
|
||||||
|
encodeurl@2.0.0:
|
||||||
|
resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
|
||||||
|
engines: {node: '>= 0.8'}
|
||||||
|
|
||||||
env-paths@3.0.0:
|
env-paths@3.0.0:
|
||||||
resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==}
|
resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==}
|
||||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||||
|
@ -2544,6 +2593,9 @@ packages:
|
||||||
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
|
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
|
escape-html@1.0.3:
|
||||||
|
resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
|
||||||
|
|
||||||
escape-string-regexp@1.0.5:
|
escape-string-regexp@1.0.5:
|
||||||
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
|
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
|
||||||
engines: {node: '>=0.8.0'}
|
engines: {node: '>=0.8.0'}
|
||||||
|
@ -2691,6 +2743,10 @@ packages:
|
||||||
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
|
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
|
|
||||||
|
etag@1.8.1:
|
||||||
|
resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
|
||||||
|
engines: {node: '>= 0.6'}
|
||||||
|
|
||||||
eventemitter3@5.0.1:
|
eventemitter3@5.0.1:
|
||||||
resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
|
resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
|
||||||
|
|
||||||
|
@ -2698,6 +2754,14 @@ packages:
|
||||||
resolution: {integrity: sha512-sPNTqiMokAvV048P2c9+foqVJzk49o6d4e0D/sq5jog3pw+4kBgyR0gaM1FM7Mx6Kzd9dztesh9oYz1LWWOpzw==}
|
resolution: {integrity: sha512-sPNTqiMokAvV048P2c9+foqVJzk49o6d4e0D/sq5jog3pw+4kBgyR0gaM1FM7Mx6Kzd9dztesh9oYz1LWWOpzw==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
|
eventsource-parser@3.0.2:
|
||||||
|
resolution: {integrity: sha512-6RxOBZ/cYgd8usLwsEl+EC09Au/9BcmCKYF2/xbml6DNczf7nv0MQb+7BA2F+li6//I+28VNlQR37XfQtcAJuA==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
|
||||||
|
eventsource@3.0.7:
|
||||||
|
resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
|
||||||
exit-hook@2.2.1:
|
exit-hook@2.2.1:
|
||||||
resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==}
|
resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
@ -2710,6 +2774,16 @@ packages:
|
||||||
resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==}
|
resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==}
|
||||||
engines: {node: '>=12.0.0'}
|
engines: {node: '>=12.0.0'}
|
||||||
|
|
||||||
|
express-rate-limit@7.5.0:
|
||||||
|
resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==}
|
||||||
|
engines: {node: '>= 16'}
|
||||||
|
peerDependencies:
|
||||||
|
express: ^4.11 || 5 || ^5.0.0-beta.1
|
||||||
|
|
||||||
|
express@5.1.0:
|
||||||
|
resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==}
|
||||||
|
engines: {node: '>= 18'}
|
||||||
|
|
||||||
exsolve@1.0.5:
|
exsolve@1.0.5:
|
||||||
resolution: {integrity: sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==}
|
resolution: {integrity: sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==}
|
||||||
|
|
||||||
|
@ -2754,6 +2828,10 @@ packages:
|
||||||
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
|
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
|
finalhandler@2.1.0:
|
||||||
|
resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==}
|
||||||
|
engines: {node: '>= 0.8'}
|
||||||
|
|
||||||
find-up-simple@1.0.1:
|
find-up-simple@1.0.1:
|
||||||
resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==}
|
resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
@ -2788,6 +2866,14 @@ packages:
|
||||||
forwarded-parse@2.1.2:
|
forwarded-parse@2.1.2:
|
||||||
resolution: {integrity: sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==}
|
resolution: {integrity: sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==}
|
||||||
|
|
||||||
|
forwarded@0.2.0:
|
||||||
|
resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
|
||||||
|
engines: {node: '>= 0.6'}
|
||||||
|
|
||||||
|
fresh@2.0.0:
|
||||||
|
resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==}
|
||||||
|
engines: {node: '>= 0.8'}
|
||||||
|
|
||||||
fsevents@2.3.3:
|
fsevents@2.3.3:
|
||||||
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
|
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
|
||||||
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
||||||
|
@ -2909,10 +2995,18 @@ packages:
|
||||||
resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==}
|
resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==}
|
||||||
engines: {node: ^16.14.0 || >=18.0.0}
|
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@7.0.6:
|
https-proxy-agent@7.0.6:
|
||||||
resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==}
|
resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==}
|
||||||
engines: {node: '>= 14'}
|
engines: {node: '>= 14'}
|
||||||
|
|
||||||
|
iconv-lite@0.6.3:
|
||||||
|
resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
|
||||||
|
engines: {node: '>=0.10.0'}
|
||||||
|
|
||||||
ignore@5.3.2:
|
ignore@5.3.2:
|
||||||
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
|
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
|
||||||
engines: {node: '>= 4'}
|
engines: {node: '>= 4'}
|
||||||
|
@ -2940,10 +3034,17 @@ packages:
|
||||||
resolution: {integrity: sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==}
|
resolution: {integrity: sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
|
inherits@2.0.4:
|
||||||
|
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
|
||||||
|
|
||||||
internal-slot@1.1.0:
|
internal-slot@1.1.0:
|
||||||
resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
|
resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
|
ipaddr.js@1.9.1:
|
||||||
|
resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
|
||||||
|
engines: {node: '>= 0.10'}
|
||||||
|
|
||||||
is-absolute-url@4.0.1:
|
is-absolute-url@4.0.1:
|
||||||
resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==}
|
resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==}
|
||||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||||
|
@ -3057,6 +3158,9 @@ packages:
|
||||||
resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
|
resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
|
is-promise@4.0.0:
|
||||||
|
resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==}
|
||||||
|
|
||||||
is-regex@1.2.1:
|
is-regex@1.2.1:
|
||||||
resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
|
resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
@ -3270,6 +3374,10 @@ packages:
|
||||||
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
|
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
|
media-typer@1.1.0:
|
||||||
|
resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==}
|
||||||
|
engines: {node: '>= 0.8'}
|
||||||
|
|
||||||
memorystream@0.3.1:
|
memorystream@0.3.1:
|
||||||
resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==}
|
resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==}
|
||||||
engines: {node: '>= 0.10.0'}
|
engines: {node: '>= 0.10.0'}
|
||||||
|
@ -3278,6 +3386,10 @@ packages:
|
||||||
resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==}
|
resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
|
merge-descriptors@2.0.0:
|
||||||
|
resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
merge2@1.4.1:
|
merge2@1.4.1:
|
||||||
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
|
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
|
||||||
engines: {node: '>= 8'}
|
engines: {node: '>= 8'}
|
||||||
|
@ -3286,6 +3398,14 @@ packages:
|
||||||
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
|
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
|
||||||
engines: {node: '>=8.6'}
|
engines: {node: '>=8.6'}
|
||||||
|
|
||||||
|
mime-db@1.54.0:
|
||||||
|
resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==}
|
||||||
|
engines: {node: '>= 0.6'}
|
||||||
|
|
||||||
|
mime-types@3.0.1:
|
||||||
|
resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==}
|
||||||
|
engines: {node: '>= 0.6'}
|
||||||
|
|
||||||
mime@3.0.0:
|
mime@3.0.0:
|
||||||
resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==}
|
resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==}
|
||||||
engines: {node: '>=10.0.0'}
|
engines: {node: '>=10.0.0'}
|
||||||
|
@ -3350,6 +3470,10 @@ packages:
|
||||||
natural-compare@1.4.0:
|
natural-compare@1.4.0:
|
||||||
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
|
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
|
||||||
|
|
||||||
|
negotiator@1.0.0:
|
||||||
|
resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==}
|
||||||
|
engines: {node: '>= 0.6'}
|
||||||
|
|
||||||
node-releases@2.0.19:
|
node-releases@2.0.19:
|
||||||
resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}
|
resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}
|
||||||
|
|
||||||
|
@ -3405,6 +3529,13 @@ packages:
|
||||||
ohash@2.0.11:
|
ohash@2.0.11:
|
||||||
resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==}
|
resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==}
|
||||||
|
|
||||||
|
on-finished@2.4.1:
|
||||||
|
resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
|
||||||
|
engines: {node: '>= 0.8'}
|
||||||
|
|
||||||
|
once@1.4.0:
|
||||||
|
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
|
||||||
|
|
||||||
onetime@7.0.0:
|
onetime@7.0.0:
|
||||||
resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==}
|
resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
@ -3472,6 +3603,10 @@ packages:
|
||||||
resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==}
|
resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
|
parseurl@1.3.3:
|
||||||
|
resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
|
||||||
|
engines: {node: '>= 0.8'}
|
||||||
|
|
||||||
path-exists@4.0.0:
|
path-exists@4.0.0:
|
||||||
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
|
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
@ -3490,6 +3625,10 @@ packages:
|
||||||
path-to-regexp@6.3.0:
|
path-to-regexp@6.3.0:
|
||||||
resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==}
|
resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==}
|
||||||
|
|
||||||
|
path-to-regexp@8.2.0:
|
||||||
|
resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==}
|
||||||
|
engines: {node: '>=16'}
|
||||||
|
|
||||||
path-type@6.0.0:
|
path-type@6.0.0:
|
||||||
resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==}
|
resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
@ -3532,6 +3671,10 @@ packages:
|
||||||
resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==}
|
resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==}
|
||||||
engines: {node: '>= 6'}
|
engines: {node: '>= 6'}
|
||||||
|
|
||||||
|
pkce-challenge@5.0.0:
|
||||||
|
resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==}
|
||||||
|
engines: {node: '>=16.20.0'}
|
||||||
|
|
||||||
pkg-types@1.3.1:
|
pkg-types@1.3.1:
|
||||||
resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
|
resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
|
||||||
|
|
||||||
|
@ -3600,6 +3743,10 @@ packages:
|
||||||
prop-types@15.8.1:
|
prop-types@15.8.1:
|
||||||
resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
|
resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
|
||||||
|
|
||||||
|
proxy-addr@2.0.7:
|
||||||
|
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
|
||||||
|
engines: {node: '>= 0.10'}
|
||||||
|
|
||||||
punycode@2.3.1:
|
punycode@2.3.1:
|
||||||
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
|
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
@ -3614,6 +3761,14 @@ packages:
|
||||||
queue-microtask@1.2.3:
|
queue-microtask@1.2.3:
|
||||||
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
|
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
|
||||||
|
|
||||||
|
range-parser@1.2.1:
|
||||||
|
resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
|
||||||
|
engines: {node: '>= 0.6'}
|
||||||
|
|
||||||
|
raw-body@3.0.0:
|
||||||
|
resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==}
|
||||||
|
engines: {node: '>= 0.8'}
|
||||||
|
|
||||||
react-is@16.13.1:
|
react-is@16.13.1:
|
||||||
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
|
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
|
||||||
|
|
||||||
|
@ -3700,6 +3855,10 @@ packages:
|
||||||
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
|
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
router@2.2.0:
|
||||||
|
resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==}
|
||||||
|
engines: {node: '>= 18'}
|
||||||
|
|
||||||
run-applescript@7.0.0:
|
run-applescript@7.0.0:
|
||||||
resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==}
|
resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
@ -3711,6 +3870,9 @@ packages:
|
||||||
resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
|
resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
|
||||||
engines: {node: '>=0.4'}
|
engines: {node: '>=0.4'}
|
||||||
|
|
||||||
|
safe-buffer@5.2.1:
|
||||||
|
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
|
||||||
|
|
||||||
safe-push-apply@1.0.0:
|
safe-push-apply@1.0.0:
|
||||||
resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
|
resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
@ -3722,6 +3884,9 @@ packages:
|
||||||
safe-regex@2.1.1:
|
safe-regex@2.1.1:
|
||||||
resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==}
|
resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==}
|
||||||
|
|
||||||
|
safer-buffer@2.1.2:
|
||||||
|
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
|
||||||
|
|
||||||
semver@6.3.1:
|
semver@6.3.1:
|
||||||
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
|
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
@ -3731,6 +3896,14 @@ packages:
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
send@1.2.0:
|
||||||
|
resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==}
|
||||||
|
engines: {node: '>= 18'}
|
||||||
|
|
||||||
|
serve-static@2.2.0:
|
||||||
|
resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==}
|
||||||
|
engines: {node: '>= 18'}
|
||||||
|
|
||||||
set-function-length@1.2.2:
|
set-function-length@1.2.2:
|
||||||
resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
|
resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
@ -3743,6 +3916,9 @@ packages:
|
||||||
resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
|
resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
|
setprototypeof@1.2.0:
|
||||||
|
resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
|
||||||
|
|
||||||
sharp@0.33.5:
|
sharp@0.33.5:
|
||||||
resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==}
|
resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==}
|
||||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||||
|
@ -3848,6 +4024,10 @@ packages:
|
||||||
stacktracey@2.1.8:
|
stacktracey@2.1.8:
|
||||||
resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==}
|
resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==}
|
||||||
|
|
||||||
|
statuses@2.0.1:
|
||||||
|
resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
|
||||||
|
engines: {node: '>= 0.8'}
|
||||||
|
|
||||||
std-env@3.9.0:
|
std-env@3.9.0:
|
||||||
resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==}
|
resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==}
|
||||||
|
|
||||||
|
@ -3988,6 +4168,10 @@ packages:
|
||||||
resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==}
|
resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
|
toidentifier@1.0.1:
|
||||||
|
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
|
||||||
|
engines: {node: '>=0.6'}
|
||||||
|
|
||||||
toucan-js@4.1.1:
|
toucan-js@4.1.1:
|
||||||
resolution: {integrity: sha512-GTPwEaCRN8IbYe5/VeGiwxYvMO0dKaC16fTeLbF+QGswjkLZ9JUqAfDhLMyH2SWukYhmetH+uxWa1Bhluv/evQ==}
|
resolution: {integrity: sha512-GTPwEaCRN8IbYe5/VeGiwxYvMO0dKaC16fTeLbF+QGswjkLZ9JUqAfDhLMyH2SWukYhmetH+uxWa1Bhluv/evQ==}
|
||||||
|
|
||||||
|
@ -4089,6 +4273,10 @@ packages:
|
||||||
resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
|
resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
|
||||||
engines: {node: '>=16'}
|
engines: {node: '>=16'}
|
||||||
|
|
||||||
|
type-is@2.0.1:
|
||||||
|
resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==}
|
||||||
|
engines: {node: '>= 0.6'}
|
||||||
|
|
||||||
typed-array-buffer@1.0.3:
|
typed-array-buffer@1.0.3:
|
||||||
resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
|
resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
@ -4155,6 +4343,10 @@ packages:
|
||||||
universal-user-agent@7.0.3:
|
universal-user-agent@7.0.3:
|
||||||
resolution: {integrity: sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==}
|
resolution: {integrity: sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==}
|
||||||
|
|
||||||
|
unpipe@1.0.0:
|
||||||
|
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
|
||||||
|
engines: {node: '>= 0.8'}
|
||||||
|
|
||||||
update-browserslist-db@1.1.3:
|
update-browserslist-db@1.1.3:
|
||||||
resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==}
|
resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
@ -4174,6 +4366,10 @@ packages:
|
||||||
validate-npm-package-license@3.0.4:
|
validate-npm-package-license@3.0.4:
|
||||||
resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
|
resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
|
||||||
|
|
||||||
|
vary@1.1.2:
|
||||||
|
resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
|
||||||
|
engines: {node: '>= 0.8'}
|
||||||
|
|
||||||
vite-node@3.1.4:
|
vite-node@3.1.4:
|
||||||
resolution: {integrity: sha512-6enNwYnpyDo4hEgytbmc6mYWHXDHYEn0D1/rw4Q+tnHUGtKTJsn8T1YkX6Q18wI5LCrS8CTYlBaiCqxOy2kvUA==}
|
resolution: {integrity: sha512-6enNwYnpyDo4hEgytbmc6mYWHXDHYEn0D1/rw4Q+tnHUGtKTJsn8T1YkX6Q18wI5LCrS8CTYlBaiCqxOy2kvUA==}
|
||||||
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
|
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
|
||||||
|
@ -4333,6 +4529,9 @@ packages:
|
||||||
resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==}
|
resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
|
wrappy@1.0.2:
|
||||||
|
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
|
||||||
|
|
||||||
ws@8.18.0:
|
ws@8.18.0:
|
||||||
resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==}
|
resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==}
|
||||||
engines: {node: '>=10.0.0'}
|
engines: {node: '>=10.0.0'}
|
||||||
|
@ -4860,6 +5059,22 @@ snapshots:
|
||||||
'@jridgewell/resolve-uri': 3.1.2
|
'@jridgewell/resolve-uri': 3.1.2
|
||||||
'@jridgewell/sourcemap-codec': 1.5.0
|
'@jridgewell/sourcemap-codec': 1.5.0
|
||||||
|
|
||||||
|
'@modelcontextprotocol/sdk@1.12.0':
|
||||||
|
dependencies:
|
||||||
|
ajv: 6.12.6
|
||||||
|
content-type: 1.0.5
|
||||||
|
cors: 2.8.5
|
||||||
|
cross-spawn: 7.0.6
|
||||||
|
eventsource: 3.0.7
|
||||||
|
express: 5.1.0
|
||||||
|
express-rate-limit: 7.5.0(express@5.1.0)
|
||||||
|
pkce-challenge: 5.0.0
|
||||||
|
raw-body: 3.0.0
|
||||||
|
zod: 3.25.30
|
||||||
|
zod-to-json-schema: 3.24.5(zod@3.25.30)
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
'@napi-rs/wasm-runtime@0.2.10':
|
'@napi-rs/wasm-runtime@0.2.10':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@emnapi/core': 1.4.3
|
'@emnapi/core': 1.4.3
|
||||||
|
@ -5685,6 +5900,11 @@ snapshots:
|
||||||
loupe: 3.1.3
|
loupe: 3.1.3
|
||||||
tinyrainbow: 2.0.0
|
tinyrainbow: 2.0.0
|
||||||
|
|
||||||
|
accepts@2.0.0:
|
||||||
|
dependencies:
|
||||||
|
mime-types: 3.0.1
|
||||||
|
negotiator: 1.0.0
|
||||||
|
|
||||||
acorn-import-attributes@1.9.5(acorn@8.14.1):
|
acorn-import-attributes@1.9.5(acorn@8.14.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
acorn: 8.14.1
|
acorn: 8.14.1
|
||||||
|
@ -5843,6 +6063,20 @@ snapshots:
|
||||||
|
|
||||||
blake3-wasm@2.1.5: {}
|
blake3-wasm@2.1.5: {}
|
||||||
|
|
||||||
|
body-parser@2.2.0:
|
||||||
|
dependencies:
|
||||||
|
bytes: 3.1.2
|
||||||
|
content-type: 1.0.5
|
||||||
|
debug: 4.4.1(supports-color@10.0.0)
|
||||||
|
http-errors: 2.0.0
|
||||||
|
iconv-lite: 0.6.3
|
||||||
|
on-finished: 2.4.1
|
||||||
|
qs: 6.14.0
|
||||||
|
raw-body: 3.0.0
|
||||||
|
type-is: 2.0.1
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
bottleneck@2.19.5: {}
|
bottleneck@2.19.5: {}
|
||||||
|
|
||||||
brace-expansion@1.1.11:
|
brace-expansion@1.1.11:
|
||||||
|
@ -5878,6 +6112,8 @@ snapshots:
|
||||||
esbuild: 0.25.4
|
esbuild: 0.25.4
|
||||||
load-tsconfig: 0.2.5
|
load-tsconfig: 0.2.5
|
||||||
|
|
||||||
|
bytes@3.1.2: {}
|
||||||
|
|
||||||
cac@6.7.14: {}
|
cac@6.7.14: {}
|
||||||
|
|
||||||
call-bind-apply-helpers@1.0.2:
|
call-bind-apply-helpers@1.0.2:
|
||||||
|
@ -5987,12 +6223,25 @@ snapshots:
|
||||||
|
|
||||||
consola@3.4.2: {}
|
consola@3.4.2: {}
|
||||||
|
|
||||||
|
content-disposition@1.0.0:
|
||||||
|
dependencies:
|
||||||
|
safe-buffer: 5.2.1
|
||||||
|
|
||||||
|
content-type@1.0.5: {}
|
||||||
|
|
||||||
|
cookie-signature@1.2.2: {}
|
||||||
|
|
||||||
cookie@0.7.2: {}
|
cookie@0.7.2: {}
|
||||||
|
|
||||||
core-js-compat@3.41.0:
|
core-js-compat@3.41.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
browserslist: 4.24.4
|
browserslist: 4.24.4
|
||||||
|
|
||||||
|
cors@2.8.5:
|
||||||
|
dependencies:
|
||||||
|
object-assign: 4.1.1
|
||||||
|
vary: 1.1.2
|
||||||
|
|
||||||
cross-spawn@7.0.6:
|
cross-spawn@7.0.6:
|
||||||
dependencies:
|
dependencies:
|
||||||
path-key: 3.1.1
|
path-key: 3.1.1
|
||||||
|
@ -6078,6 +6327,8 @@ snapshots:
|
||||||
p-map: 7.0.3
|
p-map: 7.0.3
|
||||||
slash: 5.1.0
|
slash: 5.1.0
|
||||||
|
|
||||||
|
depd@2.0.0: {}
|
||||||
|
|
||||||
detect-libc@2.0.4: {}
|
detect-libc@2.0.4: {}
|
||||||
|
|
||||||
doctrine@2.1.0:
|
doctrine@2.1.0:
|
||||||
|
@ -6114,6 +6365,8 @@ snapshots:
|
||||||
|
|
||||||
eastasianwidth@0.2.0: {}
|
eastasianwidth@0.2.0: {}
|
||||||
|
|
||||||
|
ee-first@1.1.1: {}
|
||||||
|
|
||||||
electron-to-chromium@1.5.143: {}
|
electron-to-chromium@1.5.143: {}
|
||||||
|
|
||||||
email-validator@2.0.4: {}
|
email-validator@2.0.4: {}
|
||||||
|
@ -6124,6 +6377,8 @@ snapshots:
|
||||||
|
|
||||||
emoji-regex@9.2.2: {}
|
emoji-regex@9.2.2: {}
|
||||||
|
|
||||||
|
encodeurl@2.0.0: {}
|
||||||
|
|
||||||
env-paths@3.0.0: {}
|
env-paths@3.0.0: {}
|
||||||
|
|
||||||
environment@1.1.0: {}
|
environment@1.1.0: {}
|
||||||
|
@ -6290,6 +6545,8 @@ snapshots:
|
||||||
|
|
||||||
escalade@3.2.0: {}
|
escalade@3.2.0: {}
|
||||||
|
|
||||||
|
escape-html@1.0.3: {}
|
||||||
|
|
||||||
escape-string-regexp@1.0.5: {}
|
escape-string-regexp@1.0.5: {}
|
||||||
|
|
||||||
escape-string-regexp@4.0.0: {}
|
escape-string-regexp@4.0.0: {}
|
||||||
|
@ -6511,18 +6768,62 @@ snapshots:
|
||||||
|
|
||||||
esutils@2.0.3: {}
|
esutils@2.0.3: {}
|
||||||
|
|
||||||
|
etag@1.8.1: {}
|
||||||
|
|
||||||
eventemitter3@5.0.1: {}
|
eventemitter3@5.0.1: {}
|
||||||
|
|
||||||
eventid@2.0.1:
|
eventid@2.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
uuid: 8.3.2
|
uuid: 8.3.2
|
||||||
|
|
||||||
|
eventsource-parser@3.0.2: {}
|
||||||
|
|
||||||
|
eventsource@3.0.7:
|
||||||
|
dependencies:
|
||||||
|
eventsource-parser: 3.0.2
|
||||||
|
|
||||||
exit-hook@2.2.1: {}
|
exit-hook@2.2.1: {}
|
||||||
|
|
||||||
exit-hook@4.0.0: {}
|
exit-hook@4.0.0: {}
|
||||||
|
|
||||||
expect-type@1.2.1: {}
|
expect-type@1.2.1: {}
|
||||||
|
|
||||||
|
express-rate-limit@7.5.0(express@5.1.0):
|
||||||
|
dependencies:
|
||||||
|
express: 5.1.0
|
||||||
|
|
||||||
|
express@5.1.0:
|
||||||
|
dependencies:
|
||||||
|
accepts: 2.0.0
|
||||||
|
body-parser: 2.2.0
|
||||||
|
content-disposition: 1.0.0
|
||||||
|
content-type: 1.0.5
|
||||||
|
cookie: 0.7.2
|
||||||
|
cookie-signature: 1.2.2
|
||||||
|
debug: 4.4.1(supports-color@10.0.0)
|
||||||
|
encodeurl: 2.0.0
|
||||||
|
escape-html: 1.0.3
|
||||||
|
etag: 1.8.1
|
||||||
|
finalhandler: 2.1.0
|
||||||
|
fresh: 2.0.0
|
||||||
|
http-errors: 2.0.0
|
||||||
|
merge-descriptors: 2.0.0
|
||||||
|
mime-types: 3.0.1
|
||||||
|
on-finished: 2.4.1
|
||||||
|
once: 1.4.0
|
||||||
|
parseurl: 1.3.3
|
||||||
|
proxy-addr: 2.0.7
|
||||||
|
qs: 6.14.0
|
||||||
|
range-parser: 1.2.1
|
||||||
|
router: 2.2.0
|
||||||
|
send: 1.2.0
|
||||||
|
serve-static: 2.2.0
|
||||||
|
statuses: 2.0.1
|
||||||
|
type-is: 2.0.1
|
||||||
|
vary: 1.1.2
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
exsolve@1.0.5: {}
|
exsolve@1.0.5: {}
|
||||||
|
|
||||||
fast-content-type-parse@3.0.0: {}
|
fast-content-type-parse@3.0.0: {}
|
||||||
|
@ -6563,6 +6864,17 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
to-regex-range: 5.0.1
|
to-regex-range: 5.0.1
|
||||||
|
|
||||||
|
finalhandler@2.1.0:
|
||||||
|
dependencies:
|
||||||
|
debug: 4.4.1(supports-color@10.0.0)
|
||||||
|
encodeurl: 2.0.0
|
||||||
|
escape-html: 1.0.3
|
||||||
|
on-finished: 2.4.1
|
||||||
|
parseurl: 1.3.3
|
||||||
|
statuses: 2.0.1
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
find-up-simple@1.0.1: {}
|
find-up-simple@1.0.1: {}
|
||||||
|
|
||||||
find-up@5.0.0:
|
find-up@5.0.0:
|
||||||
|
@ -6598,6 +6910,10 @@ snapshots:
|
||||||
|
|
||||||
forwarded-parse@2.1.2: {}
|
forwarded-parse@2.1.2: {}
|
||||||
|
|
||||||
|
forwarded@0.2.0: {}
|
||||||
|
|
||||||
|
fresh@2.0.0: {}
|
||||||
|
|
||||||
fsevents@2.3.3:
|
fsevents@2.3.3:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
@ -6729,6 +7045,14 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
lru-cache: 10.4.3
|
lru-cache: 10.4.3
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
https-proxy-agent@7.0.6(supports-color@10.0.0):
|
https-proxy-agent@7.0.6(supports-color@10.0.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
agent-base: 7.1.3
|
agent-base: 7.1.3
|
||||||
|
@ -6736,6 +7060,10 @@ snapshots:
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
iconv-lite@0.6.3:
|
||||||
|
dependencies:
|
||||||
|
safer-buffer: 2.1.2
|
||||||
|
|
||||||
ignore@5.3.2: {}
|
ignore@5.3.2: {}
|
||||||
|
|
||||||
ignore@7.0.4: {}
|
ignore@7.0.4: {}
|
||||||
|
@ -6758,12 +7086,16 @@ snapshots:
|
||||||
|
|
||||||
index-to-position@1.1.0: {}
|
index-to-position@1.1.0: {}
|
||||||
|
|
||||||
|
inherits@2.0.4: {}
|
||||||
|
|
||||||
internal-slot@1.1.0:
|
internal-slot@1.1.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
es-errors: 1.3.0
|
es-errors: 1.3.0
|
||||||
hasown: 2.0.2
|
hasown: 2.0.2
|
||||||
side-channel: 1.1.0
|
side-channel: 1.1.0
|
||||||
|
|
||||||
|
ipaddr.js@1.9.1: {}
|
||||||
|
|
||||||
is-absolute-url@4.0.1: {}
|
is-absolute-url@4.0.1: {}
|
||||||
|
|
||||||
is-array-buffer@3.0.5:
|
is-array-buffer@3.0.5:
|
||||||
|
@ -6862,6 +7194,8 @@ snapshots:
|
||||||
|
|
||||||
is-plain-obj@4.1.0: {}
|
is-plain-obj@4.1.0: {}
|
||||||
|
|
||||||
|
is-promise@4.0.0: {}
|
||||||
|
|
||||||
is-regex@1.2.1:
|
is-regex@1.2.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
call-bound: 1.0.4
|
call-bound: 1.0.4
|
||||||
|
@ -7078,10 +7412,14 @@ snapshots:
|
||||||
|
|
||||||
math-intrinsics@1.1.0: {}
|
math-intrinsics@1.1.0: {}
|
||||||
|
|
||||||
|
media-typer@1.1.0: {}
|
||||||
|
|
||||||
memorystream@0.3.1: {}
|
memorystream@0.3.1: {}
|
||||||
|
|
||||||
meow@13.2.0: {}
|
meow@13.2.0: {}
|
||||||
|
|
||||||
|
merge-descriptors@2.0.0: {}
|
||||||
|
|
||||||
merge2@1.4.1: {}
|
merge2@1.4.1: {}
|
||||||
|
|
||||||
micromatch@4.0.8:
|
micromatch@4.0.8:
|
||||||
|
@ -7089,6 +7427,12 @@ snapshots:
|
||||||
braces: 3.0.3
|
braces: 3.0.3
|
||||||
picomatch: 2.3.1
|
picomatch: 2.3.1
|
||||||
|
|
||||||
|
mime-db@1.54.0: {}
|
||||||
|
|
||||||
|
mime-types@3.0.1:
|
||||||
|
dependencies:
|
||||||
|
mime-db: 1.54.0
|
||||||
|
|
||||||
mime@3.0.0: {}
|
mime@3.0.0: {}
|
||||||
|
|
||||||
mimic-function@5.0.1: {}
|
mimic-function@5.0.1: {}
|
||||||
|
@ -7154,6 +7498,8 @@ snapshots:
|
||||||
|
|
||||||
natural-compare@1.4.0: {}
|
natural-compare@1.4.0: {}
|
||||||
|
|
||||||
|
negotiator@1.0.0: {}
|
||||||
|
|
||||||
node-releases@2.0.19: {}
|
node-releases@2.0.19: {}
|
||||||
|
|
||||||
normalize-package-data@6.0.2:
|
normalize-package-data@6.0.2:
|
||||||
|
@ -7233,6 +7579,14 @@ snapshots:
|
||||||
|
|
||||||
ohash@2.0.11: {}
|
ohash@2.0.11: {}
|
||||||
|
|
||||||
|
on-finished@2.4.1:
|
||||||
|
dependencies:
|
||||||
|
ee-first: 1.1.1
|
||||||
|
|
||||||
|
once@1.4.0:
|
||||||
|
dependencies:
|
||||||
|
wrappy: 1.0.2
|
||||||
|
|
||||||
onetime@7.0.0:
|
onetime@7.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
mimic-function: 5.0.1
|
mimic-function: 5.0.1
|
||||||
|
@ -7333,6 +7687,8 @@ snapshots:
|
||||||
index-to-position: 1.1.0
|
index-to-position: 1.1.0
|
||||||
type-fest: 4.41.0
|
type-fest: 4.41.0
|
||||||
|
|
||||||
|
parseurl@1.3.3: {}
|
||||||
|
|
||||||
path-exists@4.0.0: {}
|
path-exists@4.0.0: {}
|
||||||
|
|
||||||
path-key@3.1.1: {}
|
path-key@3.1.1: {}
|
||||||
|
@ -7346,6 +7702,8 @@ snapshots:
|
||||||
|
|
||||||
path-to-regexp@6.3.0: {}
|
path-to-regexp@6.3.0: {}
|
||||||
|
|
||||||
|
path-to-regexp@8.2.0: {}
|
||||||
|
|
||||||
path-type@6.0.0: {}
|
path-type@6.0.0: {}
|
||||||
|
|
||||||
pathe@2.0.3: {}
|
pathe@2.0.3: {}
|
||||||
|
@ -7374,6 +7732,8 @@ snapshots:
|
||||||
|
|
||||||
pirates@4.0.7: {}
|
pirates@4.0.7: {}
|
||||||
|
|
||||||
|
pkce-challenge@5.0.0: {}
|
||||||
|
|
||||||
pkg-types@1.3.1:
|
pkg-types@1.3.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
confbox: 0.1.8
|
confbox: 0.1.8
|
||||||
|
@ -7423,6 +7783,11 @@ snapshots:
|
||||||
object-assign: 4.1.1
|
object-assign: 4.1.1
|
||||||
react-is: 16.13.1
|
react-is: 16.13.1
|
||||||
|
|
||||||
|
proxy-addr@2.0.7:
|
||||||
|
dependencies:
|
||||||
|
forwarded: 0.2.0
|
||||||
|
ipaddr.js: 1.9.1
|
||||||
|
|
||||||
punycode@2.3.1: {}
|
punycode@2.3.1: {}
|
||||||
|
|
||||||
qs@6.14.0:
|
qs@6.14.0:
|
||||||
|
@ -7433,6 +7798,15 @@ snapshots:
|
||||||
|
|
||||||
queue-microtask@1.2.3: {}
|
queue-microtask@1.2.3: {}
|
||||||
|
|
||||||
|
range-parser@1.2.1: {}
|
||||||
|
|
||||||
|
raw-body@3.0.0:
|
||||||
|
dependencies:
|
||||||
|
bytes: 3.1.2
|
||||||
|
http-errors: 2.0.0
|
||||||
|
iconv-lite: 0.6.3
|
||||||
|
unpipe: 1.0.0
|
||||||
|
|
||||||
react-is@16.13.1: {}
|
react-is@16.13.1: {}
|
||||||
|
|
||||||
read-package-json-fast@4.0.0:
|
read-package-json-fast@4.0.0:
|
||||||
|
@ -7549,6 +7923,16 @@ snapshots:
|
||||||
'@rollup/rollup-win32-x64-msvc': 4.40.0
|
'@rollup/rollup-win32-x64-msvc': 4.40.0
|
||||||
fsevents: 2.3.3
|
fsevents: 2.3.3
|
||||||
|
|
||||||
|
router@2.2.0:
|
||||||
|
dependencies:
|
||||||
|
debug: 4.4.1(supports-color@10.0.0)
|
||||||
|
depd: 2.0.0
|
||||||
|
is-promise: 4.0.0
|
||||||
|
parseurl: 1.3.3
|
||||||
|
path-to-regexp: 8.2.0
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
run-applescript@7.0.0: {}
|
run-applescript@7.0.0: {}
|
||||||
|
|
||||||
run-parallel@1.2.0:
|
run-parallel@1.2.0:
|
||||||
|
@ -7563,6 +7947,8 @@ snapshots:
|
||||||
has-symbols: 1.1.0
|
has-symbols: 1.1.0
|
||||||
isarray: 2.0.5
|
isarray: 2.0.5
|
||||||
|
|
||||||
|
safe-buffer@5.2.1: {}
|
||||||
|
|
||||||
safe-push-apply@1.0.0:
|
safe-push-apply@1.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
es-errors: 1.3.0
|
es-errors: 1.3.0
|
||||||
|
@ -7578,10 +7964,37 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
regexp-tree: 0.1.27
|
regexp-tree: 0.1.27
|
||||||
|
|
||||||
|
safer-buffer@2.1.2: {}
|
||||||
|
|
||||||
semver@6.3.1: {}
|
semver@6.3.1: {}
|
||||||
|
|
||||||
semver@7.7.2: {}
|
semver@7.7.2: {}
|
||||||
|
|
||||||
|
send@1.2.0:
|
||||||
|
dependencies:
|
||||||
|
debug: 4.4.1(supports-color@10.0.0)
|
||||||
|
encodeurl: 2.0.0
|
||||||
|
escape-html: 1.0.3
|
||||||
|
etag: 1.8.1
|
||||||
|
fresh: 2.0.0
|
||||||
|
http-errors: 2.0.0
|
||||||
|
mime-types: 3.0.1
|
||||||
|
ms: 2.1.3
|
||||||
|
on-finished: 2.4.1
|
||||||
|
range-parser: 1.2.1
|
||||||
|
statuses: 2.0.1
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
|
serve-static@2.2.0:
|
||||||
|
dependencies:
|
||||||
|
encodeurl: 2.0.0
|
||||||
|
escape-html: 1.0.3
|
||||||
|
parseurl: 1.3.3
|
||||||
|
send: 1.2.0
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
set-function-length@1.2.2:
|
set-function-length@1.2.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
define-data-property: 1.1.4
|
define-data-property: 1.1.4
|
||||||
|
@ -7604,6 +8017,8 @@ snapshots:
|
||||||
es-errors: 1.3.0
|
es-errors: 1.3.0
|
||||||
es-object-atoms: 1.1.1
|
es-object-atoms: 1.1.1
|
||||||
|
|
||||||
|
setprototypeof@1.2.0: {}
|
||||||
|
|
||||||
sharp@0.33.5:
|
sharp@0.33.5:
|
||||||
dependencies:
|
dependencies:
|
||||||
color: 4.2.3
|
color: 4.2.3
|
||||||
|
@ -7732,6 +8147,8 @@ snapshots:
|
||||||
as-table: 1.0.55
|
as-table: 1.0.55
|
||||||
get-source: 2.0.12
|
get-source: 2.0.12
|
||||||
|
|
||||||
|
statuses@2.0.1: {}
|
||||||
|
|
||||||
std-env@3.9.0: {}
|
std-env@3.9.0: {}
|
||||||
|
|
||||||
stdin-discarder@0.2.2: {}
|
stdin-discarder@0.2.2: {}
|
||||||
|
@ -7881,6 +8298,8 @@ snapshots:
|
||||||
|
|
||||||
toad-cache@3.7.0: {}
|
toad-cache@3.7.0: {}
|
||||||
|
|
||||||
|
toidentifier@1.0.1: {}
|
||||||
|
|
||||||
toucan-js@4.1.1:
|
toucan-js@4.1.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@sentry/core': 8.9.2
|
'@sentry/core': 8.9.2
|
||||||
|
@ -7981,6 +8400,12 @@ snapshots:
|
||||||
|
|
||||||
type-fest@4.41.0: {}
|
type-fest@4.41.0: {}
|
||||||
|
|
||||||
|
type-is@2.0.1:
|
||||||
|
dependencies:
|
||||||
|
content-type: 1.0.5
|
||||||
|
media-typer: 1.1.0
|
||||||
|
mime-types: 3.0.1
|
||||||
|
|
||||||
typed-array-buffer@1.0.3:
|
typed-array-buffer@1.0.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
call-bound: 1.0.4
|
call-bound: 1.0.4
|
||||||
|
@ -8066,6 +8491,8 @@ snapshots:
|
||||||
|
|
||||||
universal-user-agent@7.0.3: {}
|
universal-user-agent@7.0.3: {}
|
||||||
|
|
||||||
|
unpipe@1.0.0: {}
|
||||||
|
|
||||||
update-browserslist-db@1.1.3(browserslist@4.24.4):
|
update-browserslist-db@1.1.3(browserslist@4.24.4):
|
||||||
dependencies:
|
dependencies:
|
||||||
browserslist: 4.24.4
|
browserslist: 4.24.4
|
||||||
|
@ -8085,6 +8512,8 @@ snapshots:
|
||||||
spdx-correct: 3.2.0
|
spdx-correct: 3.2.0
|
||||||
spdx-expression-parse: 3.0.1
|
spdx-expression-parse: 3.0.1
|
||||||
|
|
||||||
|
vary@1.1.2: {}
|
||||||
|
|
||||||
vite-node@3.1.4(@types/node@22.15.21)(jiti@2.4.2)(tsx@4.19.4)(yaml@2.7.1):
|
vite-node@3.1.4(@types/node@22.15.21)(jiti@2.4.2)(tsx@4.19.4)(yaml@2.7.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
cac: 6.7.14
|
cac: 6.7.14
|
||||||
|
@ -8284,6 +8713,8 @@ snapshots:
|
||||||
string-width: 7.2.0
|
string-width: 7.2.0
|
||||||
strip-ansi: 7.1.0
|
strip-ansi: 7.1.0
|
||||||
|
|
||||||
|
wrappy@1.0.2: {}
|
||||||
|
|
||||||
ws@8.18.0: {}
|
ws@8.18.0: {}
|
||||||
|
|
||||||
xtend@4.0.2: {}
|
xtend@4.0.2: {}
|
||||||
|
|
Ładowanie…
Reference in New Issue