@orieljs/framework 0.1.0-alpha.10 → 0.1.0-alpha.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,6 +8,7 @@ var ExceptionHandler = token("Foundation.ExceptionHandler");
8
8
  var RoutingPaths = token("Foundation.RoutingPaths");
9
9
  var MiddlewareCallbacks = token("Foundation.MiddlewareCallbacks");
10
10
  var ExceptionCallbacks = token("Foundation.ExceptionCallbacks");
11
+ var ClassNames = token("Foundation.ClassNames");
11
12
  var ConfigRepository = token("Config.Repository");
12
13
  var ClassRegistry = token("Support.ClassRegistry");
13
14
  var PipelineFactory = token("Pipeline.Factory");
@@ -55,6 +56,7 @@ export {
55
56
  RoutingPaths,
56
57
  MiddlewareCallbacks,
57
58
  ExceptionCallbacks,
59
+ ClassNames,
58
60
  ConfigRepository,
59
61
  ClassRegistry,
60
62
  PipelineFactory,
@@ -94,4 +96,4 @@ export {
94
96
  InertiaFactory,
95
97
  LiveManager
96
98
  };
97
- //# sourceMappingURL=chunk-GVNLZZTN.js.map
99
+ //# sourceMappingURL=chunk-HTJKT2R2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../Contracts/Container.ts","../../Contracts/Foundation.ts","../../Contracts/Config.ts","../../Contracts/Support.ts","../../Contracts/Pipeline.ts","../../Contracts/Http.ts","../../Contracts/Routing.ts","../../Contracts/Session.ts","../../Contracts/Cookie.ts","../../Contracts/Encryption.ts","../../Contracts/Hashing.ts","../../Contracts/View.ts","../../Contracts/Log.ts","../../Contracts/Database.ts","../../Contracts/Validation.ts","../../Contracts/Auth.ts","../../Contracts/Queue.ts","../../Contracts/Bus.ts","../../Contracts/Console.ts","../../Contracts/Mail.ts","../../Contracts/Notifications.ts","../../Contracts/Cache.ts","../../Contracts/Events.ts","../../Contracts/Filesystem.ts","../../Contracts/Inertia.ts","../../Contracts/Live.ts"],"sourcesContent":["/** A typed, runtime-unique key for container bindings. */\nexport interface Token<T> {\n readonly id: symbol\n readonly description: string\n /** Phantom field: only carries T at the type level. Never set at runtime. */\n readonly __type?: T\n}\n\nexport function token<T>(description: string): Token<T> {\n return Object.freeze({ id: Symbol.for(`oriel:${description}`), description })\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Class<T> = abstract new (...args: any[]) => T\nexport type Abstract<T> = Token<T> | Class<T>\nexport type Factory<T> = (container: Container) => T\nexport type Concrete<T> = Factory<T> | (new () => T)\n\nexport interface Container {\n /** New instance on every make(). A class with no concrete binds to itself (constructed with no args). Root only; throws on a scope. */\n bind<T>(abstract: Abstract<T>, concrete?: Concrete<T>): void\n /** One instance for the life of this container and its scopes. Root only; throws on a scope. */\n singleton<T>(abstract: Abstract<T>, concrete?: Concrete<T>): void\n /** One instance per scope (e.g. per HTTP request or queue job). Root only; throws on a scope. */\n scoped<T>(abstract: Abstract<T>, concrete?: Concrete<T>): void\n /** Register an existing object as a shared instance. Returns it. On a scope it stays local to that scope. */\n instance<T>(abstract: Abstract<T>, instance: T): T\n /** Resolve. Unbound classes are constructed with `new Class()`. Unbound tokens throw BindingResolutionError. */\n make<T>(abstract: Abstract<T>): T\n bound(abstract: Abstract<unknown>): boolean\n resolved(abstract: Abstract<unknown>): boolean\n /** Decorate or replace an instance each time it's resolved (applied before resolving callbacks). Root only; throws on a scope. */\n extend<T>(abstract: Abstract<T>, extender: (instance: T, container: Container) => T): void\n /** Called after each resolution of the abstract. Root only; throws on a scope. */\n resolving<T>(abstract: Abstract<T>, callback: (instance: T, container: Container) => void): void\n forgetInstance(abstract: Abstract<unknown>): void\n /** A child container: shares bindings and singletons with its parent, and has its own scoped instances. Bindings can't be registered on it. */\n createScope(): Container\n /** Run fn with this container as the \"current\" one for inject(), helpers and facades (AsyncLocalStorage). */\n run<R>(fn: () => R): R\n}\nexport const Container = token<Container>('Container.Container')\n","import { token, type Container } from './Container'\nimport type { HttpRequest } from './Http'\n\nexport interface ServiceProvider {\n /** Bind things into the container. Synchronous. Don't resolve other services here. */\n register?(): void\n /** Runs after every provider is registered. May be async (e.g. importing route files). */\n boot?(): void | Promise<void>\n}\nexport type ServiceProviderClass = new (app: Application) => ServiceProvider\n\nexport interface Application extends Container {\n readonly version: string\n basePath(path?: string): string\n appPath(path?: string): string\n bootstrapPath(path?: string): string\n configPath(path?: string): string\n databasePath(path?: string): string\n publicPath(path?: string): string\n resourcePath(path?: string): string\n storagePath(path?: string): string\n /** With no args returns the environment name. With args returns whether it matches any of them. */\n environment(): string\n environment(...environments: string[]): boolean\n isProduction(): boolean\n isLocal(): boolean\n runningInConsole(): boolean\n /** Mark the app as running in the console (the CLI entry point calls this). Defaults to true. */\n setRunningInConsole(value?: boolean): void\n runningUnitTests(): boolean\n /** Registers the provider. If the app is already booted, the provider is booted immediately. */\n register(provider: ServiceProvider | ServiceProviderClass): Promise<ServiceProvider>\n getProviders(): ServiceProvider[]\n boot(): Promise<void>\n isBooted(): boolean\n booting(callback: (app: Application) => void | Promise<void>): void\n booted(callback: (app: Application) => void | Promise<void>): void\n /** Handle one HTTP request in a fresh request scope via the bound HttpKernel. */\n handle(request: Request): Promise<Response>\n /** Register a callback that terminate() runs, in registration order. */\n terminating(callback: () => void | Promise<void>): void\n terminate(): Promise<void>\n /**\n * Register a callback that shutdown() runs once, before the process exits: close pools and clients, write out\n * files. terminating() callbacks run after every request; these run once, at the end.\n */\n onShutdown(callback: () => void | Promise<void>): void\n /** Runs the shutdown callbacks once, newest first; a failing one is printed and the rest still run. Never rejects. */\n shutdown(): Promise<void>\n}\nexport const Application = token<Application>('Foundation.Application')\n\nexport interface ExceptionHandler {\n report(error: unknown): Promise<void>\n shouldReport(error: unknown): boolean\n /** `request` is the scoped HttpRequest (Contracts/Http) when available, else the raw Request. */\n render(request: unknown, error: unknown): Promise<Response>\n}\nexport const ExceptionHandler = token<ExceptionHandler>('Foundation.ExceptionHandler')\n\n/** Paths passed to Application.configure().withRouting(). Routing (Wave 1) loads them. */\nexport interface RoutingPaths {\n /** One route file or several, loaded in order (Laravel's `withRouting(web: [...])`). */\n web?: string | string[]\n api?: string | string[]\n console?: string\n health?: string\n apiPrefix: string\n}\nexport const RoutingPaths = token<RoutingPaths>('Foundation.RoutingPaths')\n\n/** The object passed to Application.configure().withExceptions(e => …), like Laravel's Exceptions class. */\nexport interface ExceptionsConfigurator {\n /** Custom reporting. Return false to stop the default logging. */\n report(callback: (error: unknown) => void | boolean | Promise<void | boolean>): this\n /** Custom rendering. Return undefined to fall through to the default rendering. */\n render(callback: (error: unknown, request: unknown) => Response | undefined | Promise<Response | undefined>): this\n /** Never report errors of these classes. */\n dontReport(...classes: Array<abstract new (...args: never[]) => Error>): this\n /** Render errors as JSON when the callback returns true, whatever the Accept header. */\n shouldRenderJsonWhen(callback: (request: HttpRequest, error: unknown) => boolean): this\n}\n\n/** Callbacks collected by withMiddleware()/withExceptions(); invoked by Http / the exception handler (Wave 1). */\nexport type ConfigCallbacks<T> = Array<(configurator: T) => void>\n/** Typed as unknown here because MiddlewareConfigurator lives in Contracts/Http; Http casts on use. */\nexport const MiddlewareCallbacks = token<ConfigCallbacks<unknown>>('Foundation.MiddlewareCallbacks')\nexport const ExceptionCallbacks = token<ConfigCallbacks<ExceptionsConfigurator>>('Foundation.ExceptionCallbacks')\n\n/**\n * The class names of a scrambled production build (`bootstrap/cache/classes.json`, written by `@orieljs/vite`'s\n * `obfuscate` option): `html()` renames the classes in HTML as the build renamed them in its CSS, and returns the\n * HTML as it was when there is no such build, while the Vite dev server runs, or while the app runs its tests.\n */\nexport interface ClassNames {\n /** Whether there's a map to apply now: a scrambled build, and no dev server. */\n readonly active: boolean\n html(html: string): string\n}\nexport const ClassNames = token<ClassNames>('Foundation.ClassNames')\n","import { token } from './Container'\n\nexport interface ConfigRepository {\n has(key: string): boolean\n /** Dot notation: get('database.connections.sqlite.database'). */\n get<T = unknown>(key: string, defaultValue?: T): T\n set(key: string, value: unknown): void\n set(values: Record<string, unknown>): void\n push(key: string, value: unknown): void\n all(): Record<string, unknown>\n}\nexport const ConfigRepository = token<ConfigRepository>('Config.Repository')\n","import { token, type Class } from './Container'\n\nexport interface Arrayable<T = unknown> {\n toArray(): T\n}\nexport interface Jsonable {\n toJson(): string\n}\nexport interface Htmlable {\n toHtml(): string\n}\n/** Anything a controller can return that knows how to become a Response. */\nexport interface Responsable {\n toResponse(request: unknown): Response | Promise<Response>\n}\n/** The minimal collection surface contracts rely on (implemented by @orieljs/collections). */\nexport interface Enumerable<T> extends Iterable<T>, Arrayable<unknown[]> {\n all(): T[]\n count(): number\n isEmpty(): boolean\n}\n\nexport interface ClassRegistry {\n /** Registers under `name` (default: cls.name). Throws if the name is already taken by a different class. */\n register(cls: Class<unknown>, name?: string): string\n nameOf(cls: Class<unknown>): string | undefined\n resolve<T = unknown>(name: string): Class<T>\n has(name: string): boolean\n}\nexport const ClassRegistry = token<ClassRegistry>('Support.ClassRegistry')\n","import { token, type Class } from './Container'\n\nexport type PipeNext<T> = (passable: T) => Promise<unknown>\nexport type PipeClosure<T> = (passable: T, next: PipeNext<T>) => Promise<unknown> | unknown\n/** A class resolved from the container whose `via` method (default 'handle') is called; or a string alias 'name:param1,param2'. */\nexport type Pipe<T> = PipeClosure<T> | Class<object> | string\n\nexport interface Pipeline<T = unknown> {\n send(passable: T): this\n through(pipes: ReadonlyArray<Pipe<T>>): this\n pipe(...pipes: Array<Pipe<T>>): this\n /** Method called on class pipes. Default 'handle'. */\n via(method: string): this\n then<R>(destination: (passable: T) => R | Promise<R>): Promise<R>\n thenReturn(): Promise<T>\n}\n\nexport interface PipelineFactory {\n make<T>(): Pipeline<T>\n}\nexport const PipelineFactory = token<PipelineFactory>('Pipeline.Factory')\n","import { token } from './Container'\nimport type { Session } from './Session'\nimport type { Rules } from './Validation'\nimport type { InferValidatedType } from './ValidationTypes'\n\n/** Web-standard body/headers init types, derived from the runtime's global Response/Headers (no DOM lib needed). */\nexport type BodyInit = ConstructorParameters<typeof Response>[0]\nexport type HeadersInit = ConstructorParameters<typeof Headers>[0]\n\nexport interface UploadedFile {\n readonly clientName: string\n readonly mimeType: string\n readonly size: number\n extension(): string\n /** The extension of the name the browser gave the file, lower-cased ('' without one). */\n clientExtension(): string\n /** A random 40-character name with extension(): the name store() gives the file. */\n hashName(): string\n arrayBuffer(): Promise<ArrayBuffer>\n text(): Promise<string>\n stream(): ReadableStream<Uint8Array>\n /** Stores on a Filesystem disk. Returns the stored path. */\n store(directory: string, disk?: string): Promise<string>\n storeAs(directory: string, name: string, disk?: string): Promise<string>\n}\n\n/**\n * Oriel's request wrapper (one per request, scoped).\n * The Http kernel awaits `load()` before any middleware runs, so every input accessor below is synchronous.\n */\nexport interface HttpRequest {\n readonly raw: Request\n load(): Promise<this>\n method(): string\n isMethod(method: string): boolean\n url(): string\n fullUrl(): string\n path(): string\n is(...patterns: string[]): boolean\n routeIs(...names: string[]): boolean\n header(name: string): string | undefined\n header(name: string, defaultValue: string): string\n bearerToken(): string | undefined\n ip(): string | undefined\n /** The raw body as text (Laravel's getContent()); '' when there is none. */\n content(): string\n expectsJson(): boolean\n ajax(): boolean\n query<T = unknown>(key?: string, defaultValue?: T): T\n input<T = unknown>(key?: string, defaultValue?: T): T\n all(): Record<string, unknown>\n only(...keys: string[]): Record<string, unknown>\n except(...keys: string[]): Record<string, unknown>\n has(...keys: string[]): boolean\n filled(key: string): boolean\n boolean(key: string, defaultValue?: boolean): boolean\n integer(key: string, defaultValue?: number): number\n merge(values: Record<string, unknown>): this\n file(key: string): UploadedFile | undefined\n cookie(name: string): string | undefined\n /** Replace the parsed request cookies (EncryptCookies calls this after decrypting). */\n setCookies(cookies: Record<string, string>): void\n /** Route parameter (after model binding), or every parameter when called with no key. */\n route<T = unknown>(key?: string): T\n session(): Session\n /**\n * The signed-in user, found through the request's guard (the default one, or the one named) the first time it is\n * asked for, then the same instance for the rest of the request. Undefined for a guest.\n */\n user<T = unknown>(guard?: string): Promise<T | undefined>\n /** How user() finds the user (Auth sets it). The resolver may return a promise. */\n setUserResolver(resolver: (guard?: string) => unknown): void\n /**\n * Validates this request's input via the ValidationFactory; throws a Validation OrielError (422) on failure. The\n * validated data is typed from the rules: `validate({ title: 'required|string' })` is `{ title: string }`.\n */\n validate<const R extends Rules>(\n rules: R,\n messages?: Record<string, string>,\n attributes?: Record<string, string>,\n ): Promise<InferValidatedType<R>>\n}\nexport const HttpRequest = token<HttpRequest>('Http.Request')\n\nexport type Next = (request: HttpRequest) => Promise<Response>\nexport interface Middleware {\n handle(request: HttpRequest, next: Next, ...parameters: string[]): Promise<Response>\n terminate?(request: HttpRequest, response: Response): Promise<void>\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type MiddlewareClass = new (...args: any[]) => Middleware\n\n/** The object passed to Application.configure().withMiddleware(m => …), like Laravel's Middleware class. */\nexport interface MiddlewareConfigurator {\n append(...middleware: MiddlewareClass[]): this\n prepend(...middleware: MiddlewareClass[]): this\n web(options: { append?: MiddlewareClass[]; prepend?: MiddlewareClass[]; remove?: MiddlewareClass[] }): this\n api(options: { append?: MiddlewareClass[]; prepend?: MiddlewareClass[]; remove?: MiddlewareClass[] }): this\n alias(aliases: Record<string, MiddlewareClass>): this\n group(name: string, middleware: Array<MiddlewareClass | string>): this\n validateCsrfTokens(options: { except: string[] }): this\n redirectGuestsTo(url: string | ((request: HttpRequest) => string)): this\n /** Where the `guest` middleware sends a signed-in user. */\n redirectUsersTo(url: string | ((request: HttpRequest) => string)): this\n}\n\nexport interface HttpKernel {\n handle(request: Request): Promise<Response>\n terminate?(request: Request, response: Response): Promise<void>\n}\nexport const HttpKernel = token<HttpKernel>('Http.Kernel')\n\nexport interface ResponseFactory {\n make(content?: BodyInit | null, status?: number, headers?: HeadersInit): Response\n json(data: unknown, status?: number, headers?: HeadersInit): Response\n noContent(status?: number): Response\n /** Renders the view into an HTML response. */\n view(name: string, data?: Record<string, unknown>, status?: number, headers?: HeadersInit): Promise<Response>\n download(path: string, name?: string, headers?: HeadersInit): Promise<Response>\n /** Sends the file inline, for the browser to show (download() sends it as an attachment). */\n file(path: string, headers?: HeadersInit): Promise<Response>\n stream(body: ReadableStream, status?: number, headers?: HeadersInit): Response\n}\nexport const ResponseFactory = token<ResponseFactory>('Http.ResponseFactory')\n","import { token, type Class } from './Container'\nimport type { Responsable } from './Support'\nimport type { HttpRequest, Middleware, MiddlewareClass } from './Http'\nimport type { MessageBag } from './Validation'\n\n/** Public method names of a controller (excludes non-function members). */\nexport type ActionMethods<C> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [K in keyof C]: C[K] extends (...args: any[]) => unknown ? K : never\n}[keyof C] &\n string\n\nexport type ControllerAction<C> = readonly [Class<C>, ActionMethods<C>]\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type RouteClosure = (...args: any[]) => unknown\n/** A class with __invoke(): Route.get('/counter', Counter) (single-action controllers, full-page Live components). */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type InvokableClass = Class<{ __invoke(...args: any[]): unknown }>\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type RouteAction = RouteClosure | ControllerAction<any> | InvokableClass\nexport type MiddlewareReference = string | MiddlewareClass\n\nexport interface Route {\n readonly methods: readonly string[]\n readonly uri: string\n getName(): string | undefined\n name(name: string): this\n middleware(...middleware: Array<MiddlewareReference | readonly MiddlewareReference[]>): this\n withoutMiddleware(...middleware: MiddlewareReference[]): this\n where(parameter: string, pattern: string): this\n where(patterns: Record<string, string>): this\n}\n\nexport interface RouteRegistrar {\n prefix(prefix: string): RouteRegistrar\n name(prefix: string): RouteRegistrar\n middleware(...middleware: Array<MiddlewareReference | readonly MiddlewareReference[]>): RouteRegistrar\n controller(controller: Class<unknown>): RouteRegistrar\n group(routes: () => void | Promise<void>): Promise<void>\n}\n\nexport interface ResourceOptions {\n only?: string[]\n except?: string[]\n parameters?: Record<string, string>\n names?: Record<string, string>\n}\n\nexport interface Router {\n get<C>(uri: string, action: ControllerAction<C> | RouteClosure | InvokableClass | string): Route\n post<C>(uri: string, action: ControllerAction<C> | RouteClosure | InvokableClass | string): Route\n put<C>(uri: string, action: ControllerAction<C> | RouteClosure | InvokableClass | string): Route\n patch<C>(uri: string, action: ControllerAction<C> | RouteClosure | InvokableClass | string): Route\n delete<C>(uri: string, action: ControllerAction<C> | RouteClosure | InvokableClass | string): Route\n options<C>(uri: string, action: ControllerAction<C> | RouteClosure | InvokableClass | string): Route\n any<C>(uri: string, action: ControllerAction<C> | RouteClosure | InvokableClass | string): Route\n match<C>(methods: string[], uri: string, action: ControllerAction<C> | RouteClosure | InvokableClass | string): Route\n redirect(from: string, to: string, status?: number): Route\n view(uri: string, view: string, data?: Record<string, unknown>): Route\n /** Route.inertia('/about', 'About', props): a GET route that renders an Inertia page (Laravel's Route::inertia). */\n inertia(uri: string, component: string, props?: Record<string, unknown>): Route\n resource(name: string, controller: Class<unknown>, options?: ResourceOptions): void\n apiResource(name: string, controller: Class<unknown>, options?: ResourceOptions): void\n fallback(action: RouteAction): Route\n prefix(prefix: string): RouteRegistrar\n name(prefix: string): RouteRegistrar\n middleware(...middleware: Array<MiddlewareReference | readonly MiddlewareReference[]>): RouteRegistrar\n controller(controller: Class<unknown>): RouteRegistrar\n /** Explicit model binding: Route.model('author', User). */\n model(parameter: string, model: Class<unknown>): void\n /** Custom binding resolver. */\n bind(parameter: string, resolver: (value: string) => unknown | Promise<unknown>): void\n pattern(parameter: string, pattern: string): void\n /** Name a middleware class, e.g. aliasMiddleware('auth', Authenticate). */\n aliasMiddleware(name: string, middleware: MiddlewareClass): this\n /** Define (or replace) a middleware group such as 'web' or 'api'. */\n middlewareGroup(name: string, middleware: MiddlewareReference[]): this\n /** Append to a group unless it is already present. */\n pushMiddlewareToGroup(group: string, middleware: MiddlewareReference): this\n getMiddlewareGroups(): Record<string, MiddlewareReference[]>\n getRoutes(): readonly Route[]\n current(): Route | undefined\n /** Match the request, bind parameters, run the route middleware and the action. Called by the Http kernel. */\n dispatch(request: HttpRequest): Promise<Response>\n}\n\n/** The route matched for the current request (scope-local; set by the router before route middleware runs). */\nexport interface CurrentRoute {\n readonly route: Route\n /** Route parameters after model binding, in URI order. */\n readonly parameters: Record<string, unknown>\n /** Resolved route middleware instances, for HttpKernel.terminate(). */\n readonly middleware: Middleware[]\n}\nexport const CurrentRoute = token<CurrentRoute>('Routing.CurrentRoute')\nexport const Router = token<Router>('Routing.Router')\n\n/**\n * Resolves implicit route-model bindings by naming convention ({post} → Post).\n * Bound by Database (Wave 1) so that Routing never imports Database.\n * Returns undefined when no model matches the parameter name. Throws ModelNotFound when the model exists but the row doesn't.\n */\nexport interface RouteModelResolver {\n resolve(parameter: string, value: string, field?: string): Promise<unknown | undefined>\n resolveExplicit(model: Class<unknown>, value: string, field?: string): Promise<unknown>\n}\nexport const RouteModelResolver = token<RouteModelResolver>('Routing.ModelResolver')\n\n/**\n * Route name → parameters, for the typed route() and redirect().route() helpers. Empty until `oriel route:types`\n * augments it (types/routes.d.ts); while it is empty any string is accepted. The contracts themselves keep taking\n * strings: the framework builds route names at run time.\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface RouteList {}\n\n/** A route name: the generated ones, or any string before `oriel route:types` has run. */\nexport type RouteName = [keyof RouteList] extends [never] ? string : Extract<keyof RouteList, string>\n\n/** A route parameter's value: a scalar, or a model (its route key, or the `{post:slug}` column, goes in the URL). */\nexport type RouteParameter = string | number | bigint | boolean | { getRouteKey(): unknown }\n\ntype GeneratedParameters<N extends keyof RouteList> = { [K in keyof RouteList[N]]: RouteParameter }\ntype RequiredParameters<P> = { [K in keyof P]-?: Record<never, never> extends Pick<P, K> ? never : K }[keyof P]\n\n/**\n * A named route's parameters: named (`{ post }`, extra keys become the query string), one value (it fills the first\n * parameter), or values in URI order (`[post, comment]`).\n */\nexport type RouteParameters<N extends string> = N extends keyof RouteList\n ? (GeneratedParameters<N> & Record<string, unknown>) | RouteParameter | readonly RouteParameter[]\n : unknown\n\n/**\n * The arguments after a route name in route() and redirect().route(): the parameters, required when the route has a\n * required one, then `Rest` (route()'s `absolute`, redirect().route()'s `status`). Before `oriel route:types` has\n * named the route, anything is accepted.\n */\nexport type RouteArguments<N extends string, Rest extends unknown[] = [absolute?: boolean]> = N extends keyof RouteList\n ? [RequiredParameters<RouteList[N]>] extends [never]\n ? [parameters?: RouteParameters<N>, ...rest: Rest]\n : [parameters: RouteParameters<N>, ...rest: Rest]\n : [parameters?: unknown, ...rest: Rest]\n\nexport interface UrlGenerator {\n to(path: string, query?: Record<string, unknown>, absolute?: boolean): string\n route(name: string, parameters?: unknown, absolute?: boolean): string\n asset(path: string): string\n current(): string\n previous(fallback?: string): string\n hasRoute(name: string): boolean\n /** A URL to a named route with a `signature` query (HMAC-SHA256 keyed by APP_KEY); `expiration` adds `expires`. */\n signedRoute(name: string, parameters?: unknown, expiration?: Date | number, absolute?: boolean): string\n /** signedRoute() that expires: a Date, or seconds from now. */\n temporarySignedRoute(name: string, expiration: Date | number, parameters?: unknown, absolute?: boolean): string\n /** Whether the request URL carries a valid, unexpired signature (`absolute: false` signs the path only). */\n hasValidSignature(request: HttpRequest, absolute?: boolean): boolean\n}\nexport const UrlGenerator = token<UrlGenerator>('Routing.UrlGenerator')\n\nexport interface RedirectResponse extends Responsable {\n readonly targetUrl: string\n with(key: string | Record<string, unknown>, value?: unknown): this\n /** Flashes the errors (a record, or a validator's `errors()`) into the bag, `default` unless named. */\n withErrors(errors: Record<string, string | string[]> | MessageBag, bag?: string): this\n withInput(input?: Record<string, unknown>): this\n withCookie(name: string, value: string, minutes?: number): this\n header(name: string, value: string): this\n}\n\nexport interface Redirector {\n to(path: string, status?: number): RedirectResponse\n route(name: string, parameters?: unknown, status?: number): RedirectResponse\n back(fallback?: string, status?: number): RedirectResponse\n intended(fallback?: string, status?: number): RedirectResponse\n away(url: string, status?: number): RedirectResponse\n /** Remembers the URL a guest was going to (for intended()), then redirects to `path`. */\n guest(path: string, status?: number): RedirectResponse\n /** Redirects to the current URL. */\n refresh(status?: number): RedirectResponse\n setIntendedUrl(url: string): void\n}\nexport const Redirector = token<Redirector>('Routing.Redirector')\n","import { token } from './Container'\n\n/** The session of the current request (scoped). Loaded and saved by the StartSession middleware. */\nexport interface Session {\n getId(): string\n start(): Promise<void>\n save(): Promise<void>\n all(): Record<string, unknown>\n only(keys: string[]): Record<string, unknown>\n except(keys: string[]): Record<string, unknown>\n /** Whether every key is present, even with a null value. */\n exists(...keys: string[]): boolean\n missing(...keys: string[]): boolean\n /** Whether the key is present and not null. */\n has(key: string): boolean\n get<T = unknown>(key: string, defaultValue?: T): T\n put(key: string | Record<string, unknown>, value?: unknown): void\n push(key: string, value: unknown): void\n /** Adds `amount` (default 1) to the number under the key and returns the new value. */\n increment(key: string, amount?: number): number\n decrement(key: string, amount?: number): number\n pull<T = unknown>(key: string, defaultValue?: T): T\n /** Forgets the key and returns its value. */\n remove<T = unknown>(key: string): T\n forget(...keys: string[]): void\n flush(): void\n /** Puts the value (true when omitted) for the next request only. */\n flash(key: string, value?: unknown): void\n now(key: string, value: unknown): void\n reflash(): void\n keep(...keys: string[]): void\n getOldInput<T = unknown>(key?: string, defaultValue?: T): T\n flashInput(input: Record<string, unknown>): void\n token(): string\n regenerateToken(): void\n regenerate(destroy?: boolean): Promise<void>\n invalidate(): Promise<void>\n previousUrl(): string | undefined\n setPreviousUrl(url: string): void\n}\nexport const Session = token<Session>('Session.Store')\n\n/** Storage driver (file, cookie, database, redis). */\nexport interface SessionHandler {\n read(id: string): Promise<string>\n write(id: string, data: string): Promise<void>\n destroy(id: string): Promise<void>\n gc(maxLifetimeSeconds: number): Promise<void>\n}\n","import { token } from './Container'\n\nexport interface Cookie {\n name: string\n value: string\n /** Minutes until expiry. 0 = session cookie, negative = delete. */\n minutes: number\n path: string\n domain?: string\n secure: boolean\n httpOnly: boolean\n sameSite: 'lax' | 'strict' | 'none'\n}\n\nexport interface CookieJar {\n make(name: string, value: string, minutes?: number, options?: Partial<Omit<Cookie, 'name' | 'value' | 'minutes'>>): Cookie\n forever(name: string, value: string): Cookie\n forget(name: string): Cookie\n /** Queue a cookie to attach to the outgoing response (scoped per request). */\n queue(cookie: Cookie): void\n queued(): Cookie[]\n}\nexport const CookieJar = token<CookieJar>('Cookie.Jar')\n","import { token } from './Container'\n\nexport interface Encrypter {\n /** JSON-serializes unless serialize=false (then value must be a string). AES-256-GCM, keyed by APP_KEY. */\n encrypt(value: unknown, serialize?: boolean): string\n decrypt<T = unknown>(payload: string, unserialize?: boolean): T\n encryptString(value: string): string\n decryptString(payload: string): string\n getKey(): Uint8Array\n}\nexport const Encrypter = token<Encrypter>('Encryption.Encrypter')\n","import { token } from './Container'\n\nexport interface Hasher {\n make(value: string): Promise<string>\n check(value: string, hashed: string): Promise<boolean>\n needsRehash(hashed: string): boolean\n info(hashed: string): { algorithm: string; options: Record<string, unknown> }\n}\nexport const Hasher = token<Hasher>('Hashing.Hasher')\n","import { token } from './Container'\nimport type { Htmlable } from './Support'\n\nexport interface View extends Htmlable {\n readonly name: string\n with(key: string | Record<string, unknown>, value?: unknown): this\n render(): Promise<string>\n}\n\n/** Resolves 'posts.index' → resources/views/posts/index.tsx and renders it to HTML on the server. */\nexport interface ViewFactory {\n make(name: string, data?: Record<string, unknown>): View\n exists(name: string): boolean\n share(key: string | Record<string, unknown>, value?: unknown): void\n composer(views: string | string[], composer: (view: View) => void | Promise<void>): void\n /** Renders TSX (an element, a string, an Htmlable, a View, promises of them) to HTML, like Blade::render(). */\n renderToString(node: unknown): Promise<string>\n}\nexport const ViewFactory = token<ViewFactory>('View.Factory')\n","import { token } from './Container'\n\nexport type LogLevel = 'emergency' | 'alert' | 'critical' | 'error' | 'warning' | 'notice' | 'info' | 'debug'\n\nexport interface Logger {\n log(level: LogLevel, message: string, context?: Record<string, unknown>): void\n emergency(message: string, context?: Record<string, unknown>): void\n alert(message: string, context?: Record<string, unknown>): void\n critical(message: string, context?: Record<string, unknown>): void\n error(message: string, context?: Record<string, unknown>): void\n warning(message: string, context?: Record<string, unknown>): void\n notice(message: string, context?: Record<string, unknown>): void\n info(message: string, context?: Record<string, unknown>): void\n debug(message: string, context?: Record<string, unknown>): void\n /** Adds context to every later log entry in the current scope (request or job). */\n withContext(context: Record<string, unknown>): this\n}\n\nexport interface LogManager extends Logger {\n channel(name?: string): Logger\n stack(channels: string[]): Logger\n /** Writes out and closes the channels opened so far (log files are written asynchronously); a script awaits it last. */\n flush(): Promise<void>\n}\nexport const LogManager = token<LogManager>('Log.Manager')\n","import { token } from './Container'\nimport type { Enumerable } from './Support'\n\nexport type Operator = '=' | '!=' | '<>' | '<' | '<=' | '>' | '>=' | 'like' | 'not like' | 'ilike' | 'in' | 'not in'\nexport type Row = Record<string, unknown>\n\n/** The minimal query surface other components rely on (Queue, Cache, Session, Validation, Notifications). */\nexport interface QueryBuilder<T = Row> {\n select(...columns: string[]): this\n where(column: string, value: unknown): this\n where(column: string, operator: Operator, value: unknown): this\n where(conditions: Row): this\n orWhere(column: string, value: unknown): this\n orWhere(column: string, operator: Operator, value: unknown): this\n whereIn(column: string, values: readonly unknown[]): this\n whereNotIn(column: string, values: readonly unknown[]): this\n whereNull(column: string): this\n whereNotNull(column: string): this\n orderBy(column: string, direction?: 'asc' | 'desc'): this\n limit(count: number): this\n offset(count: number): this\n lockForUpdate(): this\n get(): Promise<Enumerable<T>>\n first(): Promise<T | undefined>\n find(id: unknown): Promise<T | undefined>\n value<V = unknown>(column: string): Promise<V | undefined>\n pluck<V = unknown>(column: string): Promise<Enumerable<V>>\n count(): Promise<number>\n exists(): Promise<boolean>\n insert(values: Row | Row[]): Promise<void>\n /**\n * Inserts rows, skipping any that violate a unique key instead of failing (Laravel's insertOrIgnore). Returns the\n * number of rows inserted. Nothing is thrown for a duplicate, so a caller's transaction stays usable on Postgres.\n */\n insertOrIgnore(values: Row | Row[]): Promise<number>\n insertGetId(values: Row, keyName?: string): Promise<number | string>\n update(values: Row): Promise<number>\n upsert(values: Row | Row[], uniqueBy: string[], update?: string[]): Promise<number>\n increment(column: string, amount?: number, extra?: Row): Promise<number>\n decrement(column: string, amount?: number, extra?: Row): Promise<number>\n delete(): Promise<number>\n}\n\nexport type DriverName = 'pgsql' | 'mysql' | 'sqlite'\n\nexport interface DatabaseConnection {\n getName(): string\n getDriverName(): DriverName\n table<T = Row>(table: string): QueryBuilder<T>\n select<T = Row>(sql: string, bindings?: readonly unknown[]): Promise<T[]>\n statement(sql: string, bindings?: readonly unknown[]): Promise<void>\n /** Nested calls use savepoints. Rolls back if fn throws. */\n transaction<R>(fn: (connection: DatabaseConnection) => Promise<R>): Promise<R>\n /**\n * Start a transaction that stays open, for every caller of this connection, until commit()/rollBack().\n * Nested calls use savepoints. Meant for test isolation (RefreshDatabase); app code uses transaction(fn).\n */\n beginTransaction(): Promise<void>\n commit(): Promise<void>\n /** Rolls back the innermost level opened by beginTransaction(). Does nothing when none is open. */\n rollBack(): Promise<void>\n /** 0 outside a transaction. */\n transactionLevel(): number\n}\n\nexport interface DatabaseManager extends DatabaseConnection {\n connection(name?: string): DatabaseConnection\n disconnect(name?: string): Promise<void>\n /** Closes every open connection and forgets them (the application's shutdown, the end of a test). */\n disconnectAll(): Promise<void>\n}\nexport const DatabaseManager = token<DatabaseManager>('Database.Manager')\n\n/** What non-Database components may rely on from a model instance. */\nexport interface ModelInstance {\n exists: boolean\n getKey(): unknown\n getKeyName(): string\n getTable(): string\n getRouteKey(): unknown\n getRouteKeyName(): string\n /** The value stored in a polymorphic `*_type` column for this model: its morph map alias, else its class name. */\n getMorphClass(): string\n getAttribute<T = unknown>(key: string): T\n setAttribute(key: string, value: unknown): this\n fill(attributes: Row): this\n save(): Promise<boolean>\n delete(): Promise<boolean>\n refresh(): Promise<this>\n toArray(): Row\n toJSON(): Row\n}\n\nexport interface ModelStatic<M extends ModelInstance = ModelInstance> {\n new (): M\n query(): QueryBuilder<M>\n find(id: unknown): Promise<M | undefined>\n findOrFail(id: unknown): Promise<M>\n}\n\n/**\n * What decides a paginator's page and the path of its links when the request doesn't (Laravel's\n * Paginator::currentPageResolver and currentPathResolver, which Livewire's WithPagination replaces). Live binds one for\n * the application, which answers while a WithPagination component mounts, runs an update's hooks and actions, or\n * renders. Unbound, or `undefined` from a method, the paginators read the request (`?page=` and its URL).\n */\nexport interface PaginationState {\n /** The page to show for `pageName` ('page' by default). */\n currentPage(pageName: string): number | undefined\n /** The base path of the page links. */\n currentPath(): string | undefined\n}\nexport const PaginationState = token<PaginationState>('Database.PaginationState')\n","import { token } from './Container'\nimport type { InferValidatedType } from './ValidationTypes'\n\n/** A rule object (Laravel's ValidationRule). Call fail() to reject the value. */\nexport interface ValidationRule {\n validate(\n attribute: string,\n value: unknown,\n fail: (message: string) => void,\n data: Record<string, unknown>,\n ): void | Promise<void>\n}\n\n/** 'required|string|max:255', or an array mixing strings and rule objects. Keys support dot + `*` wildcards. */\nexport type Rules = Record<string, string | ReadonlyArray<string | ValidationRule>>\n\nexport interface MessageBag {\n add(key: string, message: string): void\n has(key: string): boolean\n first(key?: string): string | undefined\n get(key: string): string[]\n all(): string[]\n isEmpty(): boolean\n count(): number\n toObject(): Record<string, string[]>\n}\n\n/** `R` is the rules' type: `validated()` is typed from them, as `request().validate()` is. */\nexport interface Validator<R extends Rules = Rules> {\n passes(): Promise<boolean>\n fails(): Promise<boolean>\n /** Only the keys that have rules. Throws ValidationError (Exceptions.ts) on failure. */\n validated<T = InferValidatedType<R>>(): Promise<T>\n /** Valid only after passes()/fails()/validated() has run. */\n errors(): MessageBag\n after(callback: (validator: Validator) => void | Promise<void>): this\n /** Adds a failure message for `field` (from an after() hook). */\n fail(field: string, message: string): void\n}\n\nexport type RuleCallback = (\n attribute: string,\n value: unknown,\n parameters: string[],\n data: Record<string, unknown>,\n) => boolean | Promise<boolean>\n\nexport interface ValidationFactory {\n make<const R extends Rules>(\n data: Record<string, unknown>,\n rules: R,\n messages?: Record<string, string>,\n attributes?: Record<string, string>,\n ): Validator<R>\n /** Registers a string rule, e.g. extend('uppercase', fn, ':attribute must be uppercase'). */\n extend(name: string, callback: RuleCallback, message?: string): void\n}\nexport const ValidationFactory = token<ValidationFactory>('Validation.Factory')\n","import { token, type Class } from './Container'\n\nexport interface Authenticatable {\n getAuthIdentifierName(): string\n getAuthIdentifier(): unknown\n getAuthPassword(): string\n getRememberToken(): string | undefined\n setRememberToken(value: string): void\n getRememberTokenName(): string\n}\n\nexport type Credentials = Record<string, unknown>\n\nexport interface UserProvider {\n retrieveById(id: unknown): Promise<Authenticatable | undefined>\n retrieveByToken(id: unknown, token: string): Promise<Authenticatable | undefined>\n updateRememberToken(user: Authenticatable, token: string): Promise<void>\n retrieveByCredentials(credentials: Credentials): Promise<Authenticatable | undefined>\n validateCredentials(user: Authenticatable, credentials: Credentials): Promise<boolean>\n}\n\nexport interface Guard {\n check(): Promise<boolean>\n guest(): Promise<boolean>\n user<T extends Authenticatable = Authenticatable>(): Promise<T | undefined>\n id(): Promise<unknown>\n validate(credentials: Credentials): Promise<boolean>\n hasUser(): boolean\n setUser(user: Authenticatable): void\n}\n\nexport interface StatefulGuard extends Guard {\n attempt(credentials: Credentials, remember?: boolean): Promise<boolean>\n once(credentials: Credentials): Promise<boolean>\n login(user: Authenticatable, remember?: boolean): Promise<void>\n loginUsingId(id: unknown, remember?: boolean): Promise<Authenticatable | false>\n logout(): Promise<void>\n}\n\nexport interface AuthFactory {\n guard(name?: string): StatefulGuard | Guard\n shouldUse(name: string): void\n extend(driver: string, factory: (name: string, config: Record<string, unknown>) => Guard): void\n provider(driver: string, factory: (config: Record<string, unknown>) => UserProvider): void\n}\nexport const AuthFactory = token<AuthFactory>('Auth.Factory')\n\nexport type AbilityCallback = (user: Authenticatable | undefined, ...args: unknown[]) => boolean | Promise<boolean>\n\nexport interface Gate {\n define(ability: string, callback: AbilityCallback): this\n policy(model: Class<unknown>, policy: Class<unknown>): this\n before(callback: (user: Authenticatable | undefined, ability: string) => boolean | undefined | Promise<boolean | undefined>): this\n allows(ability: string, ...args: unknown[]): Promise<boolean>\n denies(ability: string, ...args: unknown[]): Promise<boolean>\n /** Throws an Authorization OrielError (403) when denied. */\n authorize(ability: string, ...args: unknown[]): Promise<void>\n any(abilities: string[], ...args: unknown[]): Promise<boolean>\n forUser(user: Authenticatable | undefined): Gate\n}\nexport const Gate = token<Gate>('Auth.Gate')\n\nexport type PasswordStatus = 'passwords.sent' | 'passwords.reset' | 'passwords.user' | 'passwords.token' | 'passwords.throttled'\n\nexport interface PasswordBroker {\n sendResetLink(credentials: Credentials): Promise<PasswordStatus>\n reset(credentials: Credentials, callback: (user: Authenticatable, password: string) => Promise<void>): Promise<PasswordStatus>\n}\nexport const PasswordBroker = token<PasswordBroker>('Auth.PasswordBroker')\n\nexport interface MustVerifyEmail {\n hasVerifiedEmail(): boolean\n markEmailAsVerified(): Promise<boolean>\n sendEmailVerificationNotification(): Promise<void>\n getEmailForVerification(): string\n}\n","import { token } from './Container'\n\n/** Options a job class may declare as public fields. Their presence (or implementing ShouldQueue) makes things queueable. */\nexport interface ShouldQueue {\n /**\n * Marks the class as queued at run time: `implements ShouldQueue` leaves no trace once compiled, so the interface\n * asks for `readonly shouldQueue = true`. Jobs, listeners, mailables and notifications carrying it are queued.\n */\n readonly shouldQueue: true\n connection?: string\n queue?: string\n /** Seconds. */\n delay?: number\n tries?: number\n /** Seconds, or a per-attempt list. */\n backoff?: number | number[]\n /** Seconds. */\n timeout?: number\n /**\n * Laravel's ShouldBeUnique: while a job with this id is pending, another one is dropped. A queued listener's\n * receives the event (Laravel 13); a number is used as its string.\n */\n uniqueId?(...args: never[]): string | number\n}\n\n/** A job: public fields are its serialized data; handle() runs on the worker (inject() works inside it). */\nexport interface Job extends Partial<ShouldQueue> {\n handle(): unknown | Promise<unknown>\n failed?(error: unknown): void | Promise<void>\n}\n\nexport interface QueuePayload {\n uuid: string\n /** ClassRegistry name. */\n job: string\n displayName: string\n data: Record<string, unknown>\n attempts: number\n maxTries?: number\n backoff?: number[]\n timeout?: number\n /** Unix ms. */\n pushedAt: number\n batchId?: string\n chain?: QueuePayload[]\n /** Unix ms after which the job fails instead of retrying. */\n retryUntil?: number\n /** Mark the job failed (instead of releasing it) when it times out. */\n failOnTimeout?: boolean\n}\n\nexport interface QueueJob {\n getJobId(): string\n getQueue(): string\n payload(): QueuePayload\n attempts(): number\n delete(): Promise<void>\n release(delaySeconds?: number): Promise<void>\n /** Marks as failed: stores it via FailedJobProvider and calls job.failed(). */\n fail(error: unknown): Promise<void>\n isDeleted(): boolean\n isReleased(): boolean\n}\n\nexport interface Queue {\n push(job: Job, queue?: string): Promise<string>\n later(delaySeconds: number, job: Job, queue?: string): Promise<string>\n pushRaw(payload: QueuePayload, queue?: string, delaySeconds?: number): Promise<string>\n pop(queue?: string): Promise<QueueJob | undefined>\n size(queue?: string): Promise<number>\n clear(queue?: string): Promise<number>\n}\n\nexport interface QueueManager extends Queue {\n connection(name?: string): Queue\n extend(driver: string, factory: (config: Record<string, unknown>) => Queue): void\n}\nexport const QueueManager = token<QueueManager>('Queue.Manager')\n\nexport interface FailedJob {\n id: string\n connection: string\n queue: string\n payload: QueuePayload\n exception: string\n failedAt: Date\n}\n\nexport interface FailedJobProvider {\n log(connection: string, queue: string, payload: QueuePayload, error: unknown): Promise<string>\n all(): Promise<FailedJob[]>\n find(id: string): Promise<FailedJob | undefined>\n forget(id: string): Promise<boolean>\n flush(): Promise<void>\n}\nexport const FailedJobProvider = token<FailedJobProvider>('Queue.FailedJobProvider')\n","import { token } from './Container'\nimport type { Job } from './Queue'\n\nexport interface Batch {\n readonly id: string\n readonly name: string\n readonly totalJobs: number\n readonly pendingJobs: number\n readonly failedJobs: number\n progress(): number\n finished(): boolean\n cancelled(): boolean\n cancel(): Promise<void>\n}\n\nexport interface PendingChain {\n onConnection(connection: string): this\n onQueue(queue: string): this\n /** Runs as a job if any job in the chain fails. Callbacks are jobs, because closures can't be serialized. */\n catch(job: Job): this\n dispatch(): Promise<void>\n}\n\nexport interface PendingBatch {\n name(name: string): this\n onConnection(connection: string): this\n onQueue(queue: string): this\n allowFailures(allow?: boolean): this\n then(job: Job): this\n catch(job: Job): this\n finally(job: Job): this\n dispatch(): Promise<Batch>\n}\n\nexport interface BusDispatcher {\n /** Queues it when the job is queueable (implements ShouldQueue / declares queue options), otherwise runs it now. */\n dispatch(job: Job): Promise<unknown>\n dispatchSync(job: Job): Promise<unknown>\n /** Runs after the current response is sent (or the current job finishes). */\n dispatchAfterResponse(job: Job): void\n chain(jobs: Job[]): PendingChain\n batch(jobs: Job[]): PendingBatch\n findBatch(id: string): Promise<Batch | undefined>\n}\nexport const BusDispatcher = token<BusDispatcher>('Bus.Dispatcher')\n\n/** What PendingBatch hands to the repository. Callbacks are jobs, because closures can't be serialized. */\nexport interface PendingBatchOptions {\n name: string\n then: Job[]\n catch: Job[]\n finally: Job[]\n allowFailures: boolean\n connection?: string\n queue?: string\n}\n\n/** Stores batches and runs their bookkeeping (Laravel's BatchRepository). Bound by the Queue component. */\nexport interface BatchRepository {\n store(options: PendingBatchOptions): Promise<Batch>\n find(id: string): Promise<Batch | undefined>\n /** Adds `amount` to both total and pending jobs, before the jobs are pushed. */\n incrementTotalJobs(id: string, amount: number): Promise<void>\n /** A batched job succeeded: decrement pending, then run then/finally callbacks when due. */\n recordSuccessfulJob(id: string, jobUuid: string): Promise<void>\n /** A batched job failed for good: count it, cancel unless failures are allowed, run catch/finally when due. */\n recordFailedJob(id: string, jobUuid: string, error: unknown): Promise<void>\n markAsFinished(id: string): Promise<void>\n cancel(id: string): Promise<void>\n delete(id: string): Promise<void>\n}\nexport const BatchRepository = token<BatchRepository>('Queue.BatchRepository')\n","import { token } from './Container'\nimport type { Job } from './Queue'\n\n/** A CLI command. Signature uses Laravel syntax: 'mail:send {user} {--queue=default}'. */\nexport interface Command {\n readonly signature: string\n readonly description: string\n handle(): number | void | Promise<number | void>\n}\n\nexport type OptionValue = string | boolean | string[] | undefined\n\n/** `this` inside a closure command (Laravel's Command API). */\nexport interface CommandContext extends Command {\n argument(name: string): string | string[] | undefined\n arguments(): Record<string, string | string[]>\n option(name: string): OptionValue\n options(): Record<string, OptionValue>\n info(message: string): void\n line(message?: string): void\n comment(message: string): void\n warn(message: string): void\n error(message: string): void\n newLine(count?: number): void\n table(headers: string[], rows: string[][]): void\n ask(question: string, defaultValue?: string): Promise<string>\n secret(question: string): Promise<string>\n confirm(question: string, defaultValue?: boolean): Promise<boolean>\n choice(question: string, choices: string[], defaultIndex?: number): Promise<string>\n}\n\n/** What ConsoleKernel.command() returns. */\nexport interface ClosureCommand extends CommandContext {\n purpose(description: string): this\n}\n\nexport interface ConsoleKernel {\n /** Returns the exit code. */\n handle(argv: string[]): Promise<number>\n call(command: string, parameters?: Record<string, unknown>): Promise<number>\n /** Output buffered from the last call(). */\n output(): string\n all(): Record<string, Command>\n /** Register command classes or instances (components call this from their provider's boot()). */\n register(...commands: Array<Command | (new () => Command)>): void\n /** Closure command, like Artisan::command() in routes/console.ts. `this` is the command (argument(), info(), …). */\n command(signature: string, handler: (this: CommandContext, ...args: unknown[]) => number | void | Promise<number | void>): ClosureCommand\n}\nexport const ConsoleKernel = token<ConsoleKernel>('Console.Kernel')\n\n/** A callback a scheduled event runs before or after itself (before(), after(), onSuccess(), onFailure()). */\nexport type ScheduleHook = () => unknown\n\nexport interface ScheduledEvent {\n readonly expression: string\n /**\n * What a Schedule.command() event runs: the command and its parameters ('posts:announce --force'), without the\n * runtime and `oriel` in front. Undefined for call() and job() events. Laravel's `$event->command`.\n */\n readonly command: string | undefined\n /** Whether withoutOverlapping() was called. Laravel's `$event->withoutOverlapping`, a method's name here. */\n readonly preventsOverlapping: boolean\n /** Minutes the withoutOverlapping() lock is kept at most (1440 unless withoutOverlapping() says). Laravel's `$event->expiresAt`. */\n readonly expiresAt: number\n cron(expression: string): this\n /**\n * Runs every N seconds: the event is due every minute, and schedule:run (or schedule:work) keeps running it until\n * the minute ends. N divides 60.\n */\n everySecond(): this\n everyTwoSeconds(): this\n everyFiveSeconds(): this\n everyTenSeconds(): this\n everyFifteenSeconds(): this\n everyTwentySeconds(): this\n everyThirtySeconds(): this\n everyMinute(): this\n everyTwoMinutes(): this\n everyThreeMinutes(): this\n everyFourMinutes(): this\n everyFiveMinutes(): this\n everyTenMinutes(): this\n everyFifteenMinutes(): this\n everyThirtyMinutes(): this\n hourly(): this\n /** At these minutes past every hour. */\n hourlyAt(minute: number | readonly number[]): this\n /** Every odd hour (1, 3, … 23), at `minute` past (0 by default). */\n everyOddHour(minute?: number | readonly number[]): this\n everyTwoHours(minute?: number | readonly number[]): this\n everyThreeHours(minute?: number | readonly number[]): this\n everyFourHours(minute?: number | readonly number[]): this\n everySixHours(minute?: number | readonly number[]): this\n daily(): this\n /** The same as dailyAt(). */\n at(time: string): this\n dailyAt(time: string): this\n twiceDaily(first?: number, second?: number): this\n /** At hours `first` and `second`, `minute` past. */\n twiceDailyAt(first?: number, second?: number, minute?: number): this\n weekdays(): this\n weekends(): this\n mondays(): this\n tuesdays(): this\n wednesdays(): this\n thursdays(): this\n fridays(): this\n saturdays(): this\n sundays(): this\n weekly(): this\n /** On these days of the week (0 = Sunday … 6 = Saturday), at `time` ('0:0' by default). */\n weeklyOn(day: number | readonly number[], time?: string): this\n monthly(): this\n monthlyOn(day?: number, time?: string): this\n twiceMonthly(first?: number, second?: number, time?: string): this\n /** On the last day of every month, at `time`. */\n lastDayOfMonth(time?: string): this\n quarterly(): this\n /** On day `day` of the first month of each quarter, at `time`. */\n quarterlyOn(day?: number, time?: string): this\n yearly(): this\n yearlyOn(month?: number, day?: number, time?: string): this\n /** On these days of the week (0 = Sunday … 6 = Saturday): `days([1, 3])` or `days(1, 3)`. */\n days(days: number | readonly number[], ...more: number[]): this\n timezone(timezone: string): this\n between(start: string, end: string): this\n /** Skips the event between these times (a window may cross midnight: '23:00', '4:00'). */\n unlessBetween(start: string, end: string): this\n when(callback: () => boolean | Promise<boolean>): this\n skip(callback: () => boolean | Promise<boolean>): this\n /** Uses a cache lock (default 1440 minutes). */\n withoutOverlapping(expiresAtMinutes?: number): this\n /** Uses a cache lock so only one server runs it. */\n onOneServer(): this\n runInBackground(): this\n name(name: string): this\n description(description: string): this\n /** Runs before the event, once its filters and locks let it run. */\n before(callback: ScheduleHook): this\n /** Runs after the event, whether it succeeded or failed (also then()). */\n after(callback: ScheduleHook): this\n then(callback: ScheduleHook): this\n /** Runs after the event when it succeeded: a command exited 0, a closure neither threw nor returned false. */\n onSuccess(callback: ScheduleHook): this\n /** Runs after the event when it failed: a command exited non-zero, a closure threw or returned false. */\n onFailure(callback: ScheduleHook): this\n /** The name, else the description: the command, the job's class, or 'Closure'. schedule:list shows it. */\n getSummaryForDisplay(): string\n /**\n * The cache lock withoutOverlapping() holds: `framework/schedule-` and the sha1 of the expression and the command,\n * or of the name for call() and job() events (Laravel's mutexName()). schedule:clear-cache deletes it.\n */\n mutexName(): string\n isDue(now: Date): boolean\n run(): Promise<void>\n}\n\nexport interface Schedule {\n command(command: string, parameters?: string[]): ScheduledEvent\n job(job: Job, queue?: string, connection?: string): ScheduledEvent\n call(callback: () => unknown | Promise<unknown>): ScheduledEvent\n events(): ScheduledEvent[]\n dueEvents(now: Date): ScheduledEvent[]\n}\nexport const Schedule = token<Schedule>('Console.Schedule')\n","import { token } from './Container'\n\nexport interface Address {\n address: string\n name?: string\n}\n/** A plain email string, an Address, or anything with email (+ optional name), such as a User model. */\nexport type MailRecipient = string | Address | { email: string; name?: string }\n\nexport interface Envelope {\n from?: MailRecipient\n to?: MailRecipient[]\n cc?: MailRecipient[]\n bcc?: MailRecipient[]\n replyTo?: MailRecipient[]\n subject?: string\n tags?: string[]\n metadata?: Record<string, string>\n}\n\nexport interface Content {\n /** A View name, rendered by ViewFactory (TSX). */\n view?: string\n /** A plain-text view name. */\n text?: string\n /** Raw HTML (used when no view is given). */\n htmlString?: string\n /** Raw plain-text body (used when no text view is given). */\n textString?: string\n with?: Record<string, unknown>\n}\n\nexport interface Attachment {\n name: string\n path?: string\n data?: Uint8Array | string\n mime?: string\n}\n\n/** Laravel 10+ style mailable: envelope() + content() + attachments(). */\nexport interface Mailable {\n envelope(): Envelope | Promise<Envelope>\n content(): Content | Promise<Content>\n attachments?(): Attachment[] | Promise<Attachment[]>\n}\n\n/** Fully rendered message handed to a transport. */\nexport interface OutgoingMessage {\n from: Address\n to: Address[]\n cc: Address[]\n bcc: Address[]\n replyTo: Address[]\n subject: string\n html?: string\n text?: string\n attachments: Attachment[]\n headers: Record<string, string>\n}\n\nexport interface SentMessage {\n messageId: string\n message: OutgoingMessage\n}\n\nexport interface MailTransport {\n send(message: OutgoingMessage): Promise<SentMessage>\n}\n\nexport interface PendingMail {\n cc(recipients: MailRecipient | MailRecipient[]): this\n bcc(recipients: MailRecipient | MailRecipient[]): this\n send(mailable: Mailable): Promise<SentMessage | undefined>\n /** Sends at once, even when the mailable is queueable (Laravel's sendNow()). A fake resolves undefined. */\n sendNow(mailable: Mailable): Promise<SentMessage | undefined>\n queue(mailable: Mailable): Promise<void>\n later(delaySeconds: number, mailable: Mailable): Promise<void>\n}\n\nexport interface Mailer {\n to(recipients: MailRecipient | MailRecipient[]): PendingMail\n /** Sends to the recipients given in the mailable's envelope. Queues it if the mailable is queueable. */\n send(mailable: Mailable): Promise<SentMessage | undefined>\n /** Sends to the envelope's recipients at once, even when the mailable is queueable (Laravel's sendNow()). */\n sendNow(mailable: Mailable): Promise<SentMessage | undefined>\n queue(mailable: Mailable): Promise<void>\n}\n\nexport interface MailManager extends Mailer {\n mailer(name?: string): Mailer\n extend(transport: string, factory: (config: Record<string, unknown>) => MailTransport): void\n}\nexport const MailManager = token<MailManager>('Mail.Manager')\n","import { token } from './Container'\nimport type { ModelInstance } from './Database'\n\nexport interface Notifiable {\n /** e.g. 'mail' → email address, 'database' → the model itself. */\n routeNotificationFor(channel: string, notification: Notification): unknown\n}\n\nexport interface Notification {\n /** Optional id; set by the dispatcher when missing. */\n id?: string\n via(notifiable: Notifiable): string[]\n /** Returns a Mailable (Contracts/Mail) or the Notifications MailMessage builder. */\n toMail?(notifiable: Notifiable): unknown\n toDatabase?(notifiable: Notifiable): Record<string, unknown>\n toArray?(notifiable: Notifiable): Record<string, unknown>\n}\n\nexport interface NotificationChannel {\n send(notifiable: Notifiable, notification: Notification): Promise<void>\n}\n\nexport interface NotificationDispatcher {\n /** Queues it when the notification is queueable, otherwise sends immediately. */\n send(notifiables: Notifiable | Notifiable[], notification: Notification): Promise<void>\n sendNow(notifiables: Notifiable | Notifiable[], notification: Notification, channels?: string[]): Promise<void>\n /** On-demand: Notification.route('mail', 'a@b.c').notify(n). */\n route(channel: string, route: unknown): Notifiable & { notify(notification: Notification): Promise<void> }\n extend(channel: string, factory: () => NotificationChannel): void\n}\nexport const NotificationDispatcher = token<NotificationDispatcher>('Notifications.Dispatcher')\n\n/**\n * A stored database notification (Laravel's DatabaseNotification model): one row of the `notifications` table, with\n * its snake_case columns. `user.notifications()`, `unreadNotifications()` and `readNotifications()` query these,\n * newest first.\n */\nexport interface DatabaseNotification extends ModelInstance {\n /** A UUID. */\n readonly id: string\n /** The notification's class name. */\n readonly type: string\n /** What the notification's toDatabase() (or toArray()) returned. */\n readonly data: Record<string, unknown>\n read_at: Date | null\n readonly created_at: Date | null\n readonly updated_at: Date | null\n /** Sets read_at to now and saves, unless it is already read. */\n markAsRead(): Promise<void>\n /** Clears read_at and saves, unless it is already unread. */\n markAsUnread(): Promise<void>\n read(): boolean\n unread(): boolean\n}\n","import { token } from './Container'\n\nexport interface Lock {\n /** Tries once. Returns whether it was acquired. */\n get(): Promise<boolean>\n /** Tries once. Runs the callback and releases if acquired, else returns false. */\n get<T>(callback: () => T | Promise<T>): Promise<T | false>\n /** Waits up to `seconds` to acquire. Throws LockTimeoutError (an OrielError, kind 'Server', status 500) on timeout. */\n block<T>(seconds: number, callback?: () => T | Promise<T>): Promise<T | true>\n release(): Promise<boolean>\n forceRelease(): Promise<void>\n owner(): string\n}\n\nexport interface CacheRepository {\n get<T = unknown>(key: string): Promise<T | undefined>\n get<T>(key: string, defaultValue: T | (() => T)): Promise<T>\n many<T = unknown>(keys: string[]): Promise<Record<string, T | undefined>>\n has(key: string): Promise<boolean>\n missing(key: string): Promise<boolean>\n /** ttl in seconds; undefined = forever. */\n put(key: string, value: unknown, ttlSeconds?: number): Promise<boolean>\n /** Only stores if the key is missing. Atomic in every driver. */\n add(key: string, value: unknown, ttlSeconds?: number): Promise<boolean>\n increment(key: string, by?: number): Promise<number>\n decrement(key: string, by?: number): Promise<number>\n forever(key: string, value: unknown): Promise<boolean>\n pull<T = unknown>(key: string, defaultValue?: T): Promise<T | undefined>\n forget(key: string): Promise<boolean>\n flush(): Promise<boolean>\n remember<T>(key: string, ttlSeconds: number, callback: () => T | Promise<T>): Promise<T>\n rememberForever<T>(key: string, callback: () => T | Promise<T>): Promise<T>\n lock(name: string, seconds?: number, owner?: string): Lock\n /** Only supported by the redis store. Others throw. */\n tags(names: string | string[]): CacheRepository\n}\n\nexport interface CacheManager extends CacheRepository {\n store(name?: string): CacheRepository\n extend(driver: string, factory: (config: Record<string, unknown>) => CacheRepository): void\n}\nexport const CacheManager = token<CacheManager>('Cache.Manager')\n\n/** Laravel's RateLimiter: hits per key, kept in the default cache store. */\nexport interface RateLimiter {\n tooManyAttempts(key: string, maxAttempts: number): Promise<boolean>\n /** Adds a hit; the window starts at the first hit and lasts `decaySeconds` (default 60). Returns the hit count. */\n hit(key: string, decaySeconds?: number): Promise<number>\n attempts(key: string): Promise<number>\n remaining(key: string, maxAttempts: number): Promise<number>\n /** Seconds until the key's window resets. */\n availableIn(key: string): Promise<number>\n clear(key: string): Promise<void>\n}\nexport const RateLimiter = token<RateLimiter>('Cache.RateLimiter')\n","import { token, type Class } from './Container'\n\nexport type ListenerClass<E> = Class<{ handle(event: E): unknown }>\nexport type Listener<E> = ((event: E) => unknown) | ListenerClass<E>\n\nexport interface EventDispatcher {\n /** Class events (recommended) or string events like 'eloquent.created: Post'. */\n listen<E>(events: Class<E> | string | Array<Class<E> | string>, listener: Listener<E>): void\n hasListeners(event: Class<unknown> | string): boolean\n /** Runs listeners in registration order. Listener classes that are queueable are queued. Returns results. */\n dispatch(event: object | string, payload?: unknown[]): Promise<unknown[]>\n /** Stops at the first listener that returns something other than undefined. Returns that value. */\n until(event: object | string, payload?: unknown[]): Promise<unknown>\n subscribe(subscriber: Class<{ subscribe(events: EventDispatcher): void }>): void\n forget(event: Class<unknown> | string): void\n}\nexport const EventDispatcher = token<EventDispatcher>('Events.Dispatcher')\n","import { token } from './Container'\nimport type { UploadedFile } from './Http'\n\nexport interface PutOptions {\n visibility?: 'public' | 'private'\n mimeType?: string\n}\n\n/** Paths are relative to the disk root. Throws on paths that escape it ('../'). */\nexport interface Filesystem {\n exists(path: string): Promise<boolean>\n missing(path: string): Promise<boolean>\n get(path: string): Promise<string>\n getBytes(path: string): Promise<Uint8Array>\n readStream(path: string): Promise<ReadableStream<Uint8Array>>\n put(path: string, contents: string | Uint8Array | ReadableStream<Uint8Array>, options?: PutOptions): Promise<boolean>\n /** Stores under a generated unique name. Returns the stored path. */\n putFile(directory: string, file: UploadedFile, options?: PutOptions): Promise<string>\n putFileAs(directory: string, file: UploadedFile, name: string, options?: PutOptions): Promise<string>\n delete(paths: string | string[]): Promise<boolean>\n copy(from: string, to: string): Promise<boolean>\n move(from: string, to: string): Promise<boolean>\n size(path: string): Promise<number>\n lastModified(path: string): Promise<Date>\n mimeType(path: string): Promise<string | undefined>\n url(path: string): string\n temporaryUrl(path: string, expiresAt: Date): Promise<string>\n files(directory?: string, recursive?: boolean): Promise<string[]>\n directories(directory?: string, recursive?: boolean): Promise<string[]>\n makeDirectory(path: string): Promise<boolean>\n deleteDirectory(path: string): Promise<boolean>\n /** Absolute local path (local disks only). */\n path(path: string): string\n}\n\nexport interface FilesystemManager extends Filesystem {\n disk(name?: string): Filesystem\n extend(driver: string, factory: (config: Record<string, unknown>) => Filesystem): void\n}\nexport const FilesystemManager = token<FilesystemManager>('Filesystem.Manager')\n","import { token } from './Container'\nimport type { RedirectResponse } from './Routing'\nimport type { Responsable } from './Support'\n\n/** Infinite-scroll metadata for one prop (page.scrollProps[path]). */\nexport interface InertiaScrollProp {\n pageName: string\n previousPage: string | number | null\n nextPage: string | number | null\n currentPage: string | number | null\n reset: boolean\n}\n\n/** A once prop the client keeps between visits (page.onceProps[key]). `expiresAt` is epoch milliseconds. */\nexport interface InertiaOnceProp {\n prop: string\n expiresAt: number | null\n}\n\n/**\n * The Inertia page object (protocol v3, @inertiajs/core 3.x). Only component, props, url and version are always\n * present; the other fields are left out when empty or false.\n */\nexport interface InertiaPage {\n component: string\n props: Record<string, unknown>\n /** Path and query, never absolute: '/posts?page=2'. */\n url: string\n /** '' when the app has no asset version. */\n version: string\n sharedProps?: string[]\n mergeProps?: string[]\n prependProps?: string[]\n deepMergeProps?: string[]\n /** '<prop path>.<key field>', e.g. 'posts.data.id'. */\n matchPropsOn?: string[]\n /** Group name → prop paths loaded after the first render. */\n deferredProps?: Record<string, string[]>\n rescuedProps?: string[]\n scrollProps?: Record<string, InertiaScrollProp>\n onceProps?: Record<string, InertiaOnceProp>\n clearHistory?: true\n encryptHistory?: true\n flash?: Record<string, unknown>\n preserveFragment?: true\n}\n\nexport interface InertiaResponse extends Responsable {\n with(key: string | Record<string, unknown>, value?: unknown): this\n withViewData(key: string | Record<string, unknown>, value?: unknown): this\n rootView(view: string): this\n /** Flash data for the next page (page.flash), stored in the session. */\n flash(key: string | Record<string, unknown>, value?: unknown): this\n}\n\nexport type PropCallback<T = unknown> = () => T | Promise<T>\n\n/** The SSR result spliced into the root view: the `head` tags and the rendered `body`. */\nexport interface InertiaSsrResponse {\n head: string\n body: string\n}\n\n/** Sends a page to the SSR server. Resolves to undefined when SSR is off, unreachable or failing. */\nexport interface InertiaSsrGateway {\n dispatch(page: InertiaPage): Promise<InertiaSsrResponse | undefined>\n}\nexport const InertiaSsrGateway = token<InertiaSsrGateway>('Inertia.SsrGateway')\n\nexport interface InertiaFactory {\n render(component: string, props?: Record<string, unknown>): InertiaResponse\n share(key: string | Record<string, unknown>, value?: unknown): void\n /** A shared once prop: sent on the first visit, then kept by the client. */\n shareOnce(key: string, callback: PropCallback): void\n getShared(key?: string): unknown\n flushShared(): void\n version(version: string | null | (() => string | null | Promise<string | null>)): void\n getVersion(): Promise<string>\n setRootView(view: string): void\n /** Only evaluated on partial reloads that ask for it. */\n optional<T>(callback: PropCallback<T>): unknown\n /** Loaded in a follow-up request after the first render. */\n defer<T>(callback: PropCallback<T>, group?: string): unknown\n /** Always included, even in partial reloads. */\n always<T>(value: T | PropCallback<T>): unknown\n /** Appended to the existing client-side value instead of replacing it. */\n merge<T>(value: T | PropCallback<T>): unknown\n /** Deep-merged with the existing client-side value. */\n deepMerge<T>(value: T | PropCallback<T>): unknown\n /** Resolved once, then remembered by the client. */\n once<T>(callback: PropCallback<T>): unknown\n /** Infinite scroll over a paginator: merged page by page, with scroll metadata. */\n scroll<T>(value: T | PropCallback<T>, wrapper?: string): unknown\n /** Flash data for the next page (page.flash), stored in the session. */\n flash(key: string | Record<string, unknown>, value?: unknown): this\n encryptHistory(encrypt?: boolean): void\n /** The next page tells the client to clear its encrypted history. */\n clearHistory(): void\n /** The next page keeps the URL fragment of the request that redirected to it. */\n preserveFragment(): void\n /** 409 + X-Inertia-Location for Inertia requests, a plain 302 otherwise. */\n location(url: string): Response\n /** Redirect back (Inertia.flash('saved', true).back()). */\n back(fallback?: string, status?: number): RedirectResponse\n}\nexport const InertiaFactory = token<InertiaFactory>('Inertia.Factory')\n","import { token, type Class } from './Container'\nimport type { HttpRequest } from './Http'\n\nexport interface LiveSnapshot {\n data: Record<string, unknown>\n memo: {\n id: string\n /** ClassRegistry name of the component. */\n name: string\n path: string\n method: string\n children: Record<string, [tag: string, id: string]>\n errors: Record<string, string[]>\n }\n /** HMAC-SHA256 of JSON(data + memo), keyed by APP_KEY. */\n checksum: string\n}\n\nexport interface LiveEffects {\n html?: string\n /** Browser events from this.dispatch(); `self` keeps one on this component, `to` sends it to one component name. */\n dispatches?: Array<{ name: string; params: Record<string, unknown>; self?: true; to?: string }>\n /** Events this component listens to (@On, static listeners); sent with the first render. */\n listeners?: string[]\n redirect?: string\n /** Follow `redirect` with o:navigate instead of a full page load. */\n redirectUsingNavigate?: true\n returns?: unknown[]\n}\n\nexport interface LiveUpdateRequest {\n components: Array<{\n /** JSON-encoded LiveSnapshot. */\n snapshot: string\n updates: Record<string, unknown>\n calls: Array<{ method: string; params: unknown[] }>\n }>\n}\n\nexport interface LiveUpdateResponse {\n components: Array<{ snapshot: string; effects: LiveEffects }>\n}\n\nexport interface LiveManager {\n register(component: Class<unknown>, name?: string): void\n /** Server-renders the first HTML (snapshot embedded). `key` identifies a child inside its parent (o:key). */\n mount(component: string | Class<unknown>, params?: Record<string, unknown>, key?: string): Promise<string>\n /** Checks checksums and CSRF, then applies updates and calls, re-renders and returns new snapshots. */\n update(request: LiveUpdateRequest): Promise<LiveUpdateResponse>\n /**\n * A full-page component (Route.get('/counter', Counter)): mounts `component` (a component instance) with the current route's parameters and\n * returns the response, its layout view or a redirect.\n */\n page(component: object): Promise<unknown>\n isLiveRequest(request: HttpRequest): boolean\n}\nexport const LiveManager = token<LiveManager>('Live.Manager')\n"],"mappings":";AAQO,SAAS,MAAS,aAA+B;AACtD,SAAO,OAAO,OAAO,EAAE,IAAI,uBAAO,IAAI,SAAS,WAAW,EAAE,GAAG,YAAY,CAAC;AAC9E;AA+BO,IAAM,YAAY,MAAiB,qBAAqB;ACSxD,IAAM,cAAc,MAAmB,wBAAwB;AAQ/D,IAAM,mBAAmB,MAAwB,6BAA6B;AAW9E,IAAM,eAAe,MAAoB,yBAAyB;AAiBlE,IAAM,sBAAsB,MAAgC,gCAAgC;AAC5F,IAAM,qBAAqB,MAA+C,+BAA+B;AAYzG,IAAM,aAAa,MAAkB,uBAAuB;ACxF5D,IAAM,mBAAmB,MAAwB,mBAAmB;ACkBpE,IAAM,gBAAgB,MAAqB,uBAAuB;ACTlE,IAAM,kBAAkB,MAAuB,kBAAkB;AC8DjE,IAAM,cAAc,MAAmB,cAAc;AA4BrD,IAAM,aAAa,MAAkB,aAAa;AAalD,IAAM,kBAAkB,MAAuB,sBAAsB;AC7BrE,IAAM,eAAe,MAAoB,sBAAsB;AAC/D,IAAM,SAAS,MAAc,gBAAgB;AAW7C,IAAM,qBAAqB,MAA0B,uBAAuB;AAoD5E,IAAM,eAAe,MAAoB,sBAAsB;AAwB/D,IAAM,aAAa,MAAkB,oBAAoB;AC9IzD,IAAM,UAAU,MAAe,eAAe;AClB9C,IAAM,YAAY,MAAiB,YAAY;ACZ/C,IAAM,YAAY,MAAiB,sBAAsB;ACFzD,IAAM,SAAS,MAAc,gBAAgB;ACU7C,IAAM,cAAc,MAAmB,cAAc;ACMrD,IAAM,aAAa,MAAkB,aAAa;AC+ClD,IAAM,kBAAkB,MAAuB,kBAAkB;AAyCjE,IAAM,kBAAkB,MAAuB,0BAA0B;ACvDzE,IAAM,oBAAoB,MAAyB,oBAAoB;ACZvE,IAAM,cAAc,MAAmB,cAAc;AAerD,IAAM,OAAO,MAAY,WAAW;AAQpC,IAAM,iBAAiB,MAAsB,qBAAqB;ACSlE,IAAM,eAAe,MAAoB,eAAe;AAkBxD,IAAM,oBAAoB,MAAyB,yBAAyB;ACnD5E,IAAM,gBAAgB,MAAqB,gBAAgB;AA2B3D,IAAM,kBAAkB,MAAuB,uBAAuB;ACvBtE,IAAM,gBAAgB,MAAqB,gBAAgB;AAoH3D,IAAM,WAAW,MAAgB,kBAAkB;ACxEnD,IAAM,cAAc,MAAmB,cAAc;AC9DrD,IAAM,yBAAyB,MAA8B,0BAA0B;ACWvF,IAAM,eAAe,MAAoB,eAAe;AAaxD,IAAM,cAAc,MAAmB,mBAAmB;ACtC1D,IAAM,kBAAkB,MAAuB,mBAAmB;ACuBlE,IAAM,oBAAoB,MAAyB,oBAAoB;AC4BvE,IAAM,oBAAoB,MAAyB,oBAAoB;AAsCvE,IAAM,iBAAiB,MAAsB,iBAAiB;ACjD9D,IAAM,cAAc,MAAmB,cAAc;","names":[]}
@@ -2,7 +2,7 @@ import {
2
2
  Application,
3
3
  ConfigRepository,
4
4
  Container
5
- } from "./chunk-GVNLZZTN.js";
5
+ } from "./chunk-HTJKT2R2.js";
6
6
 
7
7
  // ../Container/dist/index.js
8
8
  import { AsyncLocalStorage } from "async_hooks";
@@ -3250,4 +3250,4 @@ export {
3250
3250
  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
3251
3251
  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
3252
3252
  */
3253
- //# sourceMappingURL=chunk-7ZQZYDOC.js.map
3253
+ //# sourceMappingURL=chunk-MURTCTRH.js.map
@@ -681,6 +681,17 @@ type ConfigCallbacks<T> = Array<(configurator: T) => void>;
681
681
  /** Typed as unknown here because MiddlewareConfigurator lives in Contracts/Http; Http casts on use. */
682
682
  declare const MiddlewareCallbacks: Token<ConfigCallbacks<unknown>>;
683
683
  declare const ExceptionCallbacks: Token<ConfigCallbacks<ExceptionsConfigurator>>;
684
+ /**
685
+ * The class names of a scrambled production build (`bootstrap/cache/classes.json`, written by `@orieljs/vite`'s
686
+ * `obfuscate` option): `html()` renames the classes in HTML as the build renamed them in its CSS, and returns the
687
+ * HTML as it was when there is no such build, while the Vite dev server runs, or while the app runs its tests.
688
+ */
689
+ interface ClassNames {
690
+ /** Whether there's a map to apply now: a scrambled build, and no dev server. */
691
+ readonly active: boolean;
692
+ html(html: string): string;
693
+ }
694
+ declare const ClassNames: Token<ClassNames>;
684
695
 
685
696
  interface ConfigRepository {
686
697
  has(key: string): boolean;
@@ -1882,4 +1893,4 @@ interface LiveManager {
1882
1893
  }
1883
1894
  declare const LiveManager: Token<LiveManager>;
1884
1895
 
1885
- export { type AbilityCallback, type Abstract, type ActionMethods, type Address, Application, type Arrayable, type Attachment, AuthFactory, type Authenticatable, type AuthenticationError, type Batch, BatchRepository, type BodyInit, BusDispatcher, CacheManager, type CacheRepository, type Class, ClassRegistry, type ClosureCommand, type Command, type CommandContext, type Concrete, type ConfigCallbacks, ConfigRepository, ConsoleKernel, Container, type Content, type ControllerAction, type Cookie, CookieJar, type Credentials, CurrentRoute, type DatabaseConnection, DatabaseManager, type DatabaseNotification, type DriverName, Encrypter, type Enumerable, type Envelope, type ErrorKind, EventDispatcher, ExceptionCallbacks, ExceptionHandler, type ExceptionsConfigurator, type Factory, type FailedJob, FailedJobProvider, type Filesystem, FilesystemManager, Gate, type Guard, Hasher, type HeadersInit, type Htmlable, HttpKernel, HttpRequest, type InValue, InertiaFactory, type InertiaOnceProp, type InertiaPage, type InertiaResponse, type InertiaScrollProp, InertiaSsrGateway, type InertiaSsrResponse, type InferRuleType, type InferValidatedType, type InvokableClass, type Job, type Jsonable, type Listener, type ListenerClass, type LiveEffects, LiveManager, type LiveSnapshot, type LiveUpdateRequest, type LiveUpdateResponse, type Lock, type LogLevel, LogManager, type Logger, MailManager, type MailRecipient, type MailTransport, type Mailable, type Mailer, type MessageBag, type Middleware, MiddlewareCallbacks, type MiddlewareClass, type MiddlewareConfigurator, type MiddlewareReference, type ModelInstance, type ModelNotFoundError, type ModelStatic, type MustVerifyEmail, type Next, type Notifiable, type Notification, type NotificationChannel, NotificationDispatcher, type NumericValue, type Operator, type OptionValue, type OrielError, type OutgoingMessage, PaginationState, PasswordBroker, type PasswordStatus, type PendingBatch, type PendingBatchOptions, type PendingChain, type PendingMail, type Pipe, type PipeClosure, type PipeNext, type Pipeline, PipelineFactory, type PropCallback, type PutOptions, type QueryBuilder, type Queue, type QueueJob, QueueManager, type QueuePayload, RateLimiter, type RedirectResponse, Redirector, type ResourceOptions, type Responsable, ResponseFactory, type Route, type RouteAction, type RouteArguments, type RouteClosure, type RouteList, RouteModelResolver, type RouteName, type RouteParameter, type RouteParameters, type RouteRegistrar, Router, RoutingPaths, type Row, type RuleCallback, type RuleParameterList, type RuleTyping, type Rules, Schedule, type ScheduleHook, type ScheduledEvent, type SentMessage, type ServiceProvider, type ServiceProviderClass, Session, type SessionHandler, type ShouldQueue, type StatefulGuard, type Token, type TypedValidationRule, type UploadedFile, UrlGenerator, type UserProvider, type ValidationError, ValidationFactory, type ValidationRule, type ValidationRuleTypes, type Validator, type View, ViewFactory, token };
1896
+ export { type AbilityCallback, type Abstract, type ActionMethods, type Address, Application, type Arrayable, type Attachment, AuthFactory, type Authenticatable, type AuthenticationError, type Batch, BatchRepository, type BodyInit, BusDispatcher, CacheManager, type CacheRepository, type Class, ClassNames, ClassRegistry, type ClosureCommand, type Command, type CommandContext, type Concrete, type ConfigCallbacks, ConfigRepository, ConsoleKernel, Container, type Content, type ControllerAction, type Cookie, CookieJar, type Credentials, CurrentRoute, type DatabaseConnection, DatabaseManager, type DatabaseNotification, type DriverName, Encrypter, type Enumerable, type Envelope, type ErrorKind, EventDispatcher, ExceptionCallbacks, ExceptionHandler, type ExceptionsConfigurator, type Factory, type FailedJob, FailedJobProvider, type Filesystem, FilesystemManager, Gate, type Guard, Hasher, type HeadersInit, type Htmlable, HttpKernel, HttpRequest, type InValue, InertiaFactory, type InertiaOnceProp, type InertiaPage, type InertiaResponse, type InertiaScrollProp, InertiaSsrGateway, type InertiaSsrResponse, type InferRuleType, type InferValidatedType, type InvokableClass, type Job, type Jsonable, type Listener, type ListenerClass, type LiveEffects, LiveManager, type LiveSnapshot, type LiveUpdateRequest, type LiveUpdateResponse, type Lock, type LogLevel, LogManager, type Logger, MailManager, type MailRecipient, type MailTransport, type Mailable, type Mailer, type MessageBag, type Middleware, MiddlewareCallbacks, type MiddlewareClass, type MiddlewareConfigurator, type MiddlewareReference, type ModelInstance, type ModelNotFoundError, type ModelStatic, type MustVerifyEmail, type Next, type Notifiable, type Notification, type NotificationChannel, NotificationDispatcher, type NumericValue, type Operator, type OptionValue, type OrielError, type OutgoingMessage, PaginationState, PasswordBroker, type PasswordStatus, type PendingBatch, type PendingBatchOptions, type PendingChain, type PendingMail, type Pipe, type PipeClosure, type PipeNext, type Pipeline, PipelineFactory, type PropCallback, type PutOptions, type QueryBuilder, type Queue, type QueueJob, QueueManager, type QueuePayload, RateLimiter, type RedirectResponse, Redirector, type ResourceOptions, type Responsable, ResponseFactory, type Route, type RouteAction, type RouteArguments, type RouteClosure, type RouteList, RouteModelResolver, type RouteName, type RouteParameter, type RouteParameters, type RouteRegistrar, Router, RoutingPaths, type Row, type RuleCallback, type RuleParameterList, type RuleTyping, type Rules, Schedule, type ScheduleHook, type ScheduledEvent, type SentMessage, type ServiceProvider, type ServiceProviderClass, Session, type SessionHandler, type ShouldQueue, type StatefulGuard, type Token, type TypedValidationRule, type UploadedFile, UrlGenerator, type UserProvider, type ValidationError, ValidationFactory, type ValidationRule, type ValidationRuleTypes, type Validator, type View, ViewFactory, token };
package/dist/contracts.js CHANGED
@@ -4,6 +4,7 @@ import {
4
4
  BatchRepository,
5
5
  BusDispatcher,
6
6
  CacheManager,
7
+ ClassNames,
7
8
  ClassRegistry,
8
9
  ConfigRepository,
9
10
  ConsoleKernel,
@@ -44,13 +45,14 @@ import {
44
45
  ValidationFactory,
45
46
  ViewFactory,
46
47
  token
47
- } from "./chunk-GVNLZZTN.js";
48
+ } from "./chunk-HTJKT2R2.js";
48
49
  export {
49
50
  Application,
50
51
  AuthFactory,
51
52
  BatchRepository,
52
53
  BusDispatcher,
53
54
  CacheManager,
55
+ ClassNames,
54
56
  ClassRegistry,
55
57
  ConfigRepository,
56
58
  ConsoleKernel,
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Container as Container$1, Factory as Factory$1, Abstract, Concrete, OrielError, ConfigRepository, Application as Application$2, ServiceProvider, ServiceProviderClass, MiddlewareConfigurator, ExceptionsConfigurator, HttpKernel, Htmlable, Notifiable as Notifiable$1, Notification as Notification$2, NotificationChannel, MailRecipient, Attachment, NotificationDispatcher, Job, BusDispatcher, EventDispatcher, MailManager as MailManager$1, QueueManager as QueueManager$1, FilesystemManager as FilesystemManager$1, Pipeline, Class, PipeClosure, Pipe, PipelineFactory, Router, ControllerAction, RouteClosure, InvokableClass, Route as Route$1, RouteAction, MiddlewareReference, ResourceOptions, RouteRegistrar, MiddlewareClass, HttpRequest, UrlGenerator, ModelNotFoundError as ModelNotFoundError$1, Middleware, Next as Next$1, ExceptionHandler, UploadedFile, RedirectResponse, HeadersInit, MessageBag, Redirector, ResponseFactory as ResponseFactory$1, BodyInit, Session, Rules, InferValidatedType, RouteName, RouteArguments, CookieJar as CookieJar$1, ConsoleKernel, CommandContext, OptionValue, ClosureCommand as ClosureCommand$1, Command as Command$1, Schedule as Schedule$1, ScheduledEvent, ScheduleHook, Row, ModelInstance, QueryBuilder, DatabaseConnection, DriverName, Operator, DatabaseManager, DatabaseNotification as DatabaseNotification$1, RouteModelResolver, Token, RuleTyping, TypedValidationRule, ValidationRule, InValue, ValidationError, ValidationFactory, Validator as Validator$1, RuleCallback, Encrypter as Encrypter$1, Hasher, Cookie as Cookie$1, SessionHandler, Gate as Gate$1, Authenticatable, AbilityCallback, Credentials, AuthFactory, StatefulGuard, Guard, UserProvider, ModelStatic, AuthenticationError as AuthenticationError$1, PasswordBroker as PasswordBroker$1, PasswordStatus, MustVerifyEmail, Logger, LogLevel, ErrorKind, LogManager as LogManager$1, ListenerClass, Listener as Listener$1, ClassRegistry, CacheManager as CacheManager$1, CacheRepository, Lock, RateLimiter as RateLimiter$1, Filesystem, PutOptions, QueueJob, QueuePayload, Batch as Batch$1, BatchRepository, PendingBatchOptions, FailedJobProvider, FailedJob, Queue as Queue$1, PendingChain as PendingChain$1, PendingBatch as PendingBatch$1, ShouldQueue, MailTransport, OutgoingMessage, SentMessage, Mailer, Address, Mailable as Mailable$1, PendingMail, Envelope, Content, PropCallback, InertiaFactory, InertiaResponse, InertiaPage, InertiaScrollProp, InertiaOnceProp, InertiaSsrGateway, InertiaSsrResponse } from './contracts.js';
1
+ import { Container as Container$1, Factory as Factory$1, Abstract, Concrete, OrielError, ConfigRepository, Application as Application$2, ServiceProvider, ServiceProviderClass, MiddlewareConfigurator, ExceptionsConfigurator, ClassNames, HttpKernel, Middleware, HttpRequest, Next as Next$1, Htmlable, Notifiable as Notifiable$1, Notification as Notification$2, NotificationChannel, MailRecipient, Attachment, NotificationDispatcher, Job, BusDispatcher, EventDispatcher, MailManager as MailManager$1, QueueManager as QueueManager$1, FilesystemManager as FilesystemManager$1, Pipeline, Class, PipeClosure, Pipe, PipelineFactory, Router, ControllerAction, RouteClosure, InvokableClass, Route as Route$1, RouteAction, MiddlewareReference, ResourceOptions, RouteRegistrar, MiddlewareClass, UrlGenerator, ModelNotFoundError as ModelNotFoundError$1, ExceptionHandler, UploadedFile, RedirectResponse, HeadersInit, MessageBag, Redirector, ResponseFactory as ResponseFactory$1, BodyInit, Session, Rules, InferValidatedType, RouteName, RouteArguments, CookieJar as CookieJar$1, ConsoleKernel, CommandContext, OptionValue, ClosureCommand as ClosureCommand$1, Command as Command$1, Schedule as Schedule$1, ScheduledEvent, ScheduleHook, Row, ModelInstance, QueryBuilder, DatabaseConnection, DriverName, Operator, DatabaseManager, DatabaseNotification as DatabaseNotification$1, RouteModelResolver, Token, RuleTyping, TypedValidationRule, ValidationRule, InValue, ValidationError, ValidationFactory, Validator as Validator$1, RuleCallback, Encrypter as Encrypter$1, Hasher, Cookie as Cookie$1, SessionHandler, Gate as Gate$1, Authenticatable, AbilityCallback, Credentials, AuthFactory, StatefulGuard, Guard, UserProvider, ModelStatic, AuthenticationError as AuthenticationError$1, PasswordBroker as PasswordBroker$1, PasswordStatus, MustVerifyEmail, Logger, LogLevel, ErrorKind, LogManager as LogManager$1, ListenerClass, Listener as Listener$1, ClassRegistry, CacheManager as CacheManager$1, CacheRepository, Lock, RateLimiter as RateLimiter$1, Filesystem, PutOptions, QueueJob, QueuePayload, Batch as Batch$1, BatchRepository, PendingBatchOptions, FailedJobProvider, FailedJob, Queue as Queue$1, PendingChain as PendingChain$1, PendingBatch as PendingBatch$1, ShouldQueue, MailTransport, OutgoingMessage, SentMessage, Mailer, Address, Mailable as Mailable$1, PendingMail, Envelope, Content, PropCallback, InertiaFactory, InertiaResponse, InertiaPage, InertiaScrollProp, InertiaOnceProp, InertiaSsrGateway, InertiaSsrResponse } from './contracts.js';
2
2
  export { InferRuleType, RouteList, RouteParameter, RouteParameters } from './contracts.js';
3
3
  import { F as Facade, S as ServiceProvider$1, f as fileType, a as Stringable, C as Collection, L as LazyCollection, O as Operator$1 } from './index.d-WQpfdIbG.js';
4
4
  export { A as Arr, b as ClassRegistry, c as FacadeStatics, I as ItemNotFoundError, M as MultipleItemsFoundError, d as Str, _ as __, e as app, g as collect, h as config, i as facade, n as now, r as retry, t as tap, v as value } from './index.d-WQpfdIbG.js';
@@ -130,7 +130,7 @@ declare class ApplicationBuilder {
130
130
  type LifecycleCallback = (app: Application$2) => void | Promise<void>;
131
131
  declare class Application$1 extends Container implements Application$2 {
132
132
  private readonly base;
133
- readonly version = "0.1.0-alpha.10";
133
+ readonly version = "0.1.0-alpha.12";
134
134
  private readonly providers;
135
135
  private readonly bootingCallbacks;
136
136
  private readonly bootedCallbacks;
@@ -188,6 +188,21 @@ declare class Application$1 extends Container implements Application$2 {
188
188
  private bootProvider;
189
189
  }
190
190
 
191
+ /**
192
+ * The class names of a scrambled production build, read from `bootstrap/cache/classes.json`. The file is read again when
193
+ * a new build replaces it, and ignored while `public/hot` exists (the Vite dev server's CSS keeps the names as written)
194
+ * and while the app runs its tests, which check the HTML its views write.
195
+ */
196
+ declare class ClassNameMap implements ClassNames {
197
+ #private;
198
+ private readonly app;
199
+ constructor(app: Application$2);
200
+ /** The map, or undefined: no scrambled build, the dev server is running, or the app is running its tests. */
201
+ classes(): Record<string, string> | undefined;
202
+ get active(): boolean;
203
+ html(html: string): string;
204
+ }
205
+
191
206
  type Handler$1 = (request: Request) => unknown;
192
207
  /** Wave 0 stand-in for the Http kernel: exact "METHOD /path" matching only. Replaced by Wave 1's router. */
193
208
  declare class ClosureKernel implements HttpKernel {
@@ -196,6 +211,16 @@ declare class ClosureKernel implements HttpKernel {
196
211
  handle(request: Request): Promise<Response>;
197
212
  }
198
213
 
214
+ /**
215
+ * Renames the classes in the HTML pages the app sends, as a scrambled production build renamed them in its CSS
216
+ * (`ClassNames`). JSON, files and every other response are left alone, and so is every page when there's no
217
+ * scrambled build. A streamed page is renamed chunk by chunk, each chunk cut after its last whole tag.
218
+ */
219
+ declare class RenameClasses implements Middleware {
220
+ #private;
221
+ handle(request: HttpRequest, next: Next$1): Promise<Response>;
222
+ }
223
+
199
224
  declare class ProviderBootError extends Error {
200
225
  readonly provider: string;
201
226
  readonly name = "ProviderBootError";
@@ -1068,6 +1093,16 @@ declare class ThrottleRequests implements Middleware {
1068
1093
  protected resolveRequestSignature(request: HttpRequest): Promise<string>;
1069
1094
  }
1070
1095
 
1096
+ /**
1097
+ * Laravel's SetCacheHeaders (`cache.headers:public;max_age=3600;s_maxage=86400;etag`): a GET or HEAD response gets
1098
+ * the Cache-Control directives, and with `etag` an ETag from the body's MD5, answering 304 to a matching
1099
+ * If-None-Match. A response that sets a cookie, or already says `no-store`, is left alone, so a CDN never stores a
1100
+ * page made for one visitor.
1101
+ */
1102
+ declare class SetCacheHeaders implements Middleware {
1103
+ handle(request: HttpRequest, next: Next$1, ...parameters: string[]): Promise<Response>;
1104
+ }
1105
+
1071
1106
  /**
1072
1107
  * Laravel's ValidateSignature (`signed`, `signed:relative`): the request URL must carry a valid, unexpired
1073
1108
  * signature from URL.signedRoute()/temporarySignedRoute(), else 403. `relative` checks a path-only signature.
@@ -1480,6 +1515,47 @@ declare function stackFrames(error: Error): StackFrame[];
1480
1515
  /** The APP_DEBUG page: class, message, request, a source excerpt of the first app frame, the stack and causes. */
1481
1516
  declare function debugPage(error: unknown, method: string, url: string): Promise<string>;
1482
1517
 
1518
+ interface ExportOptions {
1519
+ /** The folder the site is written to. */
1520
+ output: string;
1521
+ /** The URL the pages are requested at (the app's `app.url`); only its origin's links are followed. */
1522
+ baseUrl: string;
1523
+ /** Follow every same-site link from `/` (and from `paths`). */
1524
+ crawl: boolean;
1525
+ /** Paths exported besides `/` (pages nothing links to, a feed, …). */
1526
+ paths: string[];
1527
+ /** Paths left out; `*` matches anything (`/drafts/*`). */
1528
+ exclude: string[];
1529
+ /** `/docs/routing` → `docs/routing.html` (`'html'`) or `docs/routing/index.html` (`'directory'`). */
1530
+ fileNames: 'html' | 'directory';
1531
+ /** Copied into the output first (the built assets, images); false copies nothing. */
1532
+ publicPath: string | false;
1533
+ }
1534
+ interface ExportResult {
1535
+ /** The paths written, in the order they were found. */
1536
+ pages: string[];
1537
+ /** Redirects met while following links: listed, not written. */
1538
+ redirects: Array<{
1539
+ path: string;
1540
+ location: string;
1541
+ }>;
1542
+ /** Whether the app's 404 page was written as `404.html`. */
1543
+ notFoundPage: boolean;
1544
+ }
1545
+ /** A page answered with an error: the export stops, and the last export stays as it was. */
1546
+ declare class ExportError extends Error {
1547
+ readonly path: string;
1548
+ readonly status: number;
1549
+ readonly name = "ExportError";
1550
+ constructor(path: string, status: number);
1551
+ }
1552
+ /**
1553
+ * Exports an app's pages as files: requests `/` and `paths` inside the process (as `serve` handles a request),
1554
+ * follows same-site links, and writes every page into `output`, after a copy of `publicPath`. The site is written
1555
+ * into a temporary folder beside `output` and swapped in at the end, so a failed export leaves the last one intact.
1556
+ */
1557
+ declare function exportSite(app: Application$2, options: ExportOptions): Promise<ExportResult>;
1558
+
1483
1559
  type Runtime = 'node' | 'bun';
1484
1560
  interface ServeOptions {
1485
1561
  /** Default: PORT, then SERVER_PORT, then 8000 (Laravel's serve). 0 picks a free port. */
@@ -1540,6 +1616,15 @@ declare function serveBun(app: Application$2, options: ResolvedServeOptions): Pr
1540
1616
  declare function toWebRequest(req: IncomingMessage, res: ServerResponse, fallbackHost: string): Request;
1541
1617
  /** Web Response → ServerResponse, streaming the body with backpressure. Several Set-Cookie headers stay separate. */
1542
1618
  declare function writeResponse(res: ServerResponse, response: Response): Promise<void>;
1619
+ /**
1620
+ * A node:http request listener for the app: a public file when one matches, else the app's answer, then the
1621
+ * terminable middleware. `serve` uses it, and so does any host that hands Oriel Node's request and response (Vercel's
1622
+ * functions). `fallbackHost` is the Host used when a request has none.
1623
+ */
1624
+ declare function nodeRequestHandler(app: Application$2, options: {
1625
+ publicPath?: string;
1626
+ fallbackHost: string;
1627
+ }): (req: IncomingMessage, res: ServerResponse) => Promise<void>;
1543
1628
  declare function serveNode(app: Application$2, options: ResolvedServeOptions): Promise<RunningServer>;
1544
1629
 
1545
1630
  declare function detectRuntime(): Runtime;
@@ -1617,7 +1702,7 @@ interface HttpCommandOptions {
1617
1702
  /** Replaces `serve --watch`'s restarting server (tests). Resolves the command's exit code. */
1618
1703
  watch?: (options: WatchedServerOptions) => Promise<number>;
1619
1704
  }
1620
- /** Registers `serve`, `route:list` and `install:api` as closure commands (PC1). */
1705
+ /** Registers `serve`, `route:list`, `export` and `install:api` as closure commands (PC1). */
1621
1706
  declare function registerHttpCommands(kernel: ConsoleKernel, app: Application$2, options?: HttpCommandOptions): void;
1622
1707
 
1623
1708
  /**
@@ -9512,4 +9597,36 @@ type SharedPropsFrom<M> = M extends {
9512
9597
  share(...args: never[]): infer R;
9513
9598
  } ? SerializedObject<Awaited<R>> : Record<never, never>;
9514
9599
 
9515
- export { API_ROUTES_STUB, AboutCommand, AbstractPaginator, AccessGate, AddQueuedCookiesToResponse, type AfterCallback, AllMailersFailedError, AlwaysProp, AnonymousNotifiable, Application, ApplicationBuilder, ArgonHasher, type ArgonOptions, type ArgumentDefinition, ArraySessionHandler, ArrayTransport, Artisan, Attempting, type Attributes$1 as Attributes, type AttributesResolver, Auth, AuthManager, type AuthModel, type AuthModelBase, type AuthModelConstructor, AuthServiceProvider, AuthenticatableModel, Authenticate, AuthenticationError, Authorizable, type AuthorizableConstructor, AuthorizationError, AuthorizationErrorImpl, Authorize, BaseJob, BaseLogger, BasePipeline, BaseRouter, BaseUrlGenerator, Batch, type BatchAttributes, BatchingUnavailableError, BcryptHasher, type BcryptOptions, type BeforeCallback, BelongsTo, BelongsToMany, BindingResolutionError, Blueprint, type BlueprintCommand, BufferedConsoleOutput, Builder, type BuiltInCast, type BuiltinRule, BuiltinRuleObject, type BunDatabase, BunSqliteDatabase, type BunStatement, Bus, Dispatcher as BusDispatcherImpl, BusError, BusServiceProvider, CACHE_TABLE_MIGRATION, CHAIN, Cache, CacheManager, CacheRateLimiter, Repository as CacheRepositoryImpl, CacheServiceProvider, type Store as CacheStore, CallQueuedHandler, CallQueuedListener, type CanResetPassword, type CanResetPasswordUser, type CastDefinition, type CastsAttributes, type ChainSpec, type CipherName, CircularDependencyError, ClosureCommand, ClosureKernel, Collection, type Column, type ColumnAttributes, ColumnDefinition, type ColumnInfo, type ColumnRef, type ColumnType, Command, CommandNotFoundError, ComponentNotFoundError, Config, Connection, type ConsoleInput, type ConsoleIo, Kernel as ConsoleKernelImpl, type ConsoleOutput, ConsoleServiceProvider, Container, ContainerNotAvailableError, Controller, ControllerMethodNotFoundError, ConvertEmptyStringsToNull, Cookie, type CookieDefaults, CookieJar, CookieServiceProvider, CookieSessionHandler, CookieValuePrefix, type CreateMigrationOptions, Crypt, Cursor, type CursorPage, CursorPaginator, type CursorPaginatorOptions, DB, DEFAULT_MESSAGES, DailyRotatingStream, DatabaseBatchRepository, type DatabaseCommandContext, type DatabaseConfig, DatabaseConfigError, DatabaseError, DatabaseFailedJobProvider, DatabaseJob, type DatabaseJobRecord, DatabaseLock, DatabaseManagerImpl, DatabaseNotification, DatabaseNotificationChannel, DatabaseNotificationCollection, DatabaseNotificationsRelation, DatabaseQueue, type DatabaseQueueOptions, DatabaseServiceProvider, DatabaseSessionHandler, DatabaseStore, DatabaseTokenRepository, DatabaseUnavailableError, type DatePart, type DateWhereArgs, type DateWhereValue, DecryptError, DeferProp, DiagnosingHealth, type Direction, Dispatchable, type EagerLoadSpec, EloquentCollection, EloquentUserProvider, EmailVerificationRequest, type Encoded, EncryptCookies, EncryptError, EncryptHistory, Encrypter, EncryptionServiceProvider, EnsureEmailIsVerified, type EnumLike$1 as EnumLike, type ErrorClass, ErrorHandler, Event, Dispatcher$1 as EventDispatcherImpl, type EventKey, type EventListenMap, EventServiceProvider, EventsNeedBusDispatcherError, EventsNeedClassRegistryError, ExceptionsConfiguration, type ExpandingRule, Expression, Facade, Factory, type FactoryResult, Failed, FailoverTransport, Faker, FakerOverflowError, FileNotFoundError, FileSessionHandler, FileStore, FilesystemManager, FilesystemServiceProvider, ForeignIdColumnDefinition, ForeignKeyDefinition, type ForeignKeyInfo, FormRequest, FormUploadedFile, Gate, type GateAbility, GateResponse, GeneratorCommand, GenericLock, type GlobalScope, Grammar, type GroupAttributes, type GroupHost, GroupRegistrar, type GuardFactory, HandlePrecognitiveRequests, HasApiTokens, HasDatabaseNotifications, type HasDatabaseNotificationsModel, type HasFactory, HasMany, HasManyThrough, HasOne, HasOneOrMany, HasUlids, HasUuids, Hash, HashAlgorithmError, type HashInfo, HashManager, type HasherFactory, type HashingConfig, HashingServiceProvider, type Having, type HealthPage, HelpCommand, type HttpCommandOptions, HttpException, Kernel$1 as HttpKernelImpl, HttpRedirectResponse, HttpRedirector, HttpResponseException, HttpResponseFactory, HttpServerError, HttpServiceProvider, Hub, IncomingRequest, type IncomingRequestOptions, type IndexInfo, type IndexType, Inertia, InertiaError, InertiaHtml, InertiaMiddleware, InertiaPage, Response$1 as InertiaPageResponse, ResponseFactory as InertiaResponseFactory, InertiaServiceProvider, type ValidationErrors as InertiaValidationErrors, InferValidatedType, InvalidCacheConfigError, InvalidCastError, InvalidListenerError, InvalidLogLevelError, InvalidRuleParameterError, InvalidSignatureError, InvalidUrlSignatureError, JOBS_TABLE_MIGRATION, JobClassNotFoundError, type JobContext, type JobMiddleware, JobSerializationError, JoinClause, type JoinType, type JsonWhenCallback, KEY_GENERATE_SIGNATURE, type KernelApp, type KeyGenerateIO, LEVEL_SEVERITY, LazyCollection, type LengthAwarePage, LengthAwarePaginator, ListCommand, type ListenerTuple, type LocalDiskConfig, LocalFilesystem, type LockFactory, LockTimeoutError, Lockout, Log, LogChannelCycleError, LogManager, LogServiceProvider, LogTransport, type LoggedQuery, LogicError, Login, Logout, MIGRATION_CREATE_STUB, MIGRATION_STUB, MIGRATION_UPDATE_STUB, MODEL_EVENTS, Mail, type MailLevel, MailManager, MailMessage, type MailMessageAction, MailNotificationChannel, MailQueueUnavailableError, MailServiceProvider, type MailTransporter, MailUnavailableError, Mailable, MailerImpl, MakeCastCommand, MakeCommandCommand, MakeControllerCommand, MakeEventCommand, MakeFactoryCommand, MakeJobCommand, MakeListenerCommand, MakeMailCommand, MakeMiddlewareCommand, MakeModelCommand, MakeNotificationCommand, MakeObserverCommand, MakePolicyCommand, MakeProviderCommand, MakeRequestCommand, MakeResourceCommand, MakeRuleCommand, MakeSeederCommand, MakeTestCommand, type Manifest, type ManifestChunk, ManuallyFailedError, type Many, MassAssignmentError, MaxAttemptsExceededError, MemoryStore, MergeProp, MessageBagImpl, MethodNotAllowedHttpError, MiddlewareConfiguration, MiddlewareNotFoundError, Migration, MigrationCreator, type MigrationRecord, MigrationRepository, type MigrationStatus, Migrator, type MigratorOptions, MissingAppKeyError, MissingModelError, MissingRecipientError, Model, type ModelBuilder, type ModelClass, type ModelConstructor, type ModelEvent, type ModelListener, ModelNotFoundError, ModelRegistry, type MorphConstraint, MorphMany, MorphOne, MorphTo, MySqlSchemaGrammar, NOTIFICATIONS_TABLE, NOTIFICATIONS_TABLE_MIGRATION, type NewAccessToken, NodeConsoleInput, NodeConsoleOutput, NotDatabaseNotifiableError, NotFoundHttpError, Notifiable, type NotifiableConstructor, Notification, Dispatcher$2 as NotificationDispatcherImpl, NotificationDispatcherUnavailableError, NotificationFacade, NotificationQueueUnavailableError, NotificationsServiceProvider, NullFailedJobProvider, NullLogger, NullQueue, OPERATORS, OnceProp, type OptionDefinition, OptionValue, OptionalProp, type Order, PERSONAL_ACCESS_TOKENS_MIGRATION, type PagePropsFrom, type PaginationLink, Paginator, type PaginatorOptions, type ParsedInput, type ParsedRule, type ParsedSetCookie, type ParsedSignature, Password, PasswordBroker, PasswordBrokerManager, PasswordReset, PasswordRule, PathTraversalError, PendingBatch, PendingChain, PendingDispatch, PersonalAccessToken, PinoLogger, PipelineError, PipelineServiceProvider, Pivot, type PivotIds, type PlainNotificationMail, type PolicyClass, PostgresSchemaGrammar, type PreloadAttributesResolver, PropsResolver, ProviderBootError, ProviderRegisterError, QUEUE_JOB, Builder$1 as QueryBuilder, QueryError, Queue, QueueBase, type QueueCommandContext, QueueError, type QueueJobPayload, Listener as QueueListener, type ListenerConfig as QueueListenerConfig, type ListenerOptions as QueueListenerOptions, type ListenerOutput as QueueListenerOutput, QueueManager, QueueServiceProvider, QueueUnavailableError, Queueable, QueuedConsoleInput, QueuedMailSender, type QueuedMailableFactory, RESTART_CACHE_KEY, RateLimiter, type RawResult, type RecipientOverrides, RedirectIfAuthenticated, RedisJob, RedisLock, RedisQueue, type RedisQueueOptions, RedisRepository, type RedisSessionClient, RedisSessionHandler, RedisStore, RedisTaggedStore, type ReferentialAction, Registered, type RegisteredModel, Relation, type RelationConstraint, type RelationNames, RelationNotFoundError, RelationNotLoadedError, type RelationValue, type RenderCallback, type RenderedContent, type ReplStarter, type ReportCallback, Repository$1 as Repository, ResetPassword, type ResetPasswordMail, type ResolvedMiddleware, type ResolvedServeOptions, type ResourceMethod, type ResourceRoute, type RollbackOptions, Route, RouteArguments, type RouteAttributes, type RouteBinder, RouteDefinition, type RouteFileCallback, type RouteHandler, type RouteListFilters, type RouteListRow, RouteModelNotFoundError, RouteModelResolverImpl, RouteName, RouteNotDefinedError, type RouteStage, RoutesNotifications, RoutingError, type RoutingOptions, RoutingServiceProvider, Rule, type RuleContext, type RunningServer, type Runtime, type S3ClientLike, type S3DiskConfig, S3Filesystem, SCHEDULE_INTERRUPT_KEY, SSR_RENDER_FAILED, STORAGE_LINK_SIGNATURE, Schedule, ScheduleClearCacheCommand, type ScheduleClock, ScheduleImpl, ScheduleInterruptCommand, ScheduleListCommand, ScheduleNameRequiredError, ScheduleRunCommand, ScheduleWorkCommand, type ScheduleWorkOptions, ScheduledEventImpl, Schema, SchemaBuilder, SchemaBuilderToken, SchemaGrammar, type SchemaStep, type Scope, type ScopeCallback, type ScopeStatic, type Scopes, type ScrollMetadata, ScrollProp, Seeder, type SeederClass, type SelectColumn, SendEmailVerificationNotification, SendQueuedMailable, SendQueuedNotifications, type Serialized, type SerializedObject, type ServeOptions, ServiceProvider$1 as ServiceProvider, SessionFacade as Session, type SessionConfig, SessionGuard, type SessionGuardOptions, type SessionHandlerFactory, SessionManager, SessionMessageBag, SessionServiceProvider, Store$1 as SessionStore, type SharedPropsFrom, type SimplePage, type SmtpConfig, SmtpTransport, SoftDeletingScope, type SpawnResult, type SpawnWorker, type Spawner, SqliteSchemaGrammar, SsrError, type SsrFailure, HttpGateway as SsrHttpGateway, type StackFrame, StackLogger, StartSession, type State, type StateContext, Storage, type StoredBatchOptions, type StringPipeResolver, Stringable, type SyncChanges, SyncJob, SyncQueue, type TableRebuild, type TagAttributes, TagsNotSupportedError, TestCommand, ThrottleRequests, ThrottleRequestsError, TimeoutExceededError, TinkerCommand, type TinkerOptions, type TinkerRepl, TokenGuard, type TokenGuardOptions, TokenMismatchError, TokenRepository, type TransporterFactory, TrimStrings, TypeGenerator, type TypeGeneratorOptions, type TypedRedirector, UNIQUE, UNIQUE_LOCK, USERS_TABLE_MIGRATION, UniqueJobsNeedCacheError, UniqueLock, type UniqueLockSpec, type UniqueSpec, UnknownCacheDriverError, UnknownCacheStoreError, UnknownDiskError, UnknownFilesystemDriverError, UnknownLogChannelError, UnknownLogDriverError, UnknownMailTransportError, UnknownMailerError, UnknownNotificationChannelError, UnknownQueueConnectionError, UnknownQueueDriverError, UnknownValidationRuleError, UnrenderableNotificationDataError, UnrenderableNotificationMailError, UnsupportedCipherError, UnsupportedOperationError, type UriParameter, UrlGenerationError, type UrlResolver, type UserProviderFactory, ValidateSignature, Validated, ValidationErrorImpl, ValidationException, ValidationFactoryImpl, ValidationServiceProvider, Validator, ValidatorImpl, type VerifiableUser, Verified, VerifyCsrfToken, VerifyEmail, type VerifyEmailMail, ViewFactoryUnavailableError, Vite, ViteError, ViteHtml, WORKER_DISCOVERY_DIRECTORIES, type Where, type WhereArgs, type WhereBoolean, WithoutOverlapping, Worker, type WorkerListener, type WorkerOptions, abort, abortIf, abortUnless, addApiRouting, allowGuests, applyExceptionCallbacks, applyMiddlewareCallbacks, applyReplacements, auth, back, bcrypt, builtinRules, bunRuntime, cache, castGet, castSet, classNameOf, clientAddress, columnKey, compareRoutes, contentDisposition, cookie, createDailyChannel, createDialect, createPayload, createSingleChannel, createStderrChannel, createToken, csrfToken, currentContainer, currentLogContext, currentRequest, currentVite, databaseConfigDefaults, debugPage, decodePayload, decrypt, defaultAttributeName, defaultListenerOptions, defaultLockFactory, defaultProviders, defaultWorkerOptions, delaySeconds, describeError, deserialize, detectRuntime, discoverClasses, discoverFactories, discoverJobs, discoverListeners, discoverPolicies, dispatch, dispatchRoute, dispatchSync, encodePayload, encrypt, enumValues, env, errorBagFrom, errors, escapeHtml, event, exceedsJsonDepth, expandWildcardKeys, extensionFromMime, fake, filterRouteList, formatAddress, formatDate, formatDateTime, formatRouteList, formatTimestamp, fromEntries, generateAppKey, generateModelTypes, getMorphAlias, getMorphedModel, guessTable, hashInfo, healthResponse, inertia, inertiaBody, inertiaHead, inject, ipMatches, isBlank, isBun, isDateCast, isEmptyValue, isEquivalent, isJsonCast, isListenerClass, isListenerTuple, isModel, isPrecognitive, isQueueable, isQueueableListener, isTableRebuild, isUnique, isUploadedFileLike, joinDiskPath, keyGenerateHandler, listenerOptionsFrom, loadRelations, loadRoutesFrom, logger, makeFailedJobProvider, meetsLevel, mergeGroup, mergeLogContext, mergeRecursive, migrationDatePrefix, minimalPage, modelEventName, morphMap, normalizeAddress, normalizeAddresses, normalizeBackoff, normalizeLists, normalizePath, normalizeUri, old, openSqlite, optionalCookieJar, optionalSession, orderForBindings, parseArgv, parseBracketKey, parseCookieHeader, parseDateTime, parseKey, parseParameters, parseRuleSpec, parseSignature, passwordVerify, prepareValue, queueConfigDefaults, queueOptionsOf, raw as rawSql, rawWithBindings, redirect, registerHttpCommands, registerKeyGenerateCommand, registerMigrationCommands, registerModelTypesCommand, registerQueueCommands, registerStorageLinkCommand, renderContent, renderError, request, requestScope, resolveArguments, resolveDiskPath, resolveMiddleware, resolveMorphClass, resolveOptions, resourceRoutes, response, restoreJob, restoreValue, roundTrip, route, routeListRows, runConsole, runConsoleAndExit, runMiddleware, runSeeder, sanitize, sendEmailVerificationUsing, sendNotification, serialize, serializeContext, serializeCookie, serializeDate, serializeValue, serve, serveBun, serveNode, servePublicFile, session, setClientAddress, stackFrames, statusFor, statusText, storageLinkHandler, substituteBindings, suggest, summarizeValidation, toNotifiableList, toResponse, toWebRequest, tokenableType, transformLeaves, url, usePaginationResolvers, validateRequiredArguments, vite, viteReactRefresh, withHeaders, workerOptionsFrom, writeResponse };
9600
+ interface VercelBuildOptions {
9601
+ /** Where the build output goes, relative to the app. Default: `.vercel/output` (where Vercel looks for it). */
9602
+ output?: string;
9603
+ /** The function's Node runtime. Default: `nodejs22.x`. */
9604
+ runtime?: string;
9605
+ /** The largest function Vercel accepts, unzipped. Default: 250 MB. */
9606
+ maxFunctionBytes?: number;
9607
+ /** The machine the build runs on, which decides the native packages copied. Default: `process.platform`. */
9608
+ platform?: string;
9609
+ }
9610
+ interface VercelBuildResult {
9611
+ /** The function's size, unzipped. */
9612
+ functionBytes: number;
9613
+ /** The files Vercel serves without the function. */
9614
+ staticFiles: number;
9615
+ /** What the build got right but the deploy may not: a build off Linux. */
9616
+ warnings: string[];
9617
+ }
9618
+ /** Vercel's limit on a function's unzipped size. */
9619
+ declare const VERCEL_FUNCTION_LIMIT: number;
9620
+ /**
9621
+ * Writes Vercel's Build Output API v3 folder for an app: `static/` from `public/`, and one Node function holding the
9622
+ * app's code, the build files it reads at run time, its production dependencies and the launcher. `.env` files are
9623
+ * never copied: the secrets come from Vercel's environment variables.
9624
+ */
9625
+ declare function buildVercelOutput(app: Application$2, options?: VercelBuildOptions): Promise<VercelBuildResult>;
9626
+
9627
+ /** Registers `oriel vercel:build`, which writes Vercel's build output for the app. */
9628
+ declare class VercelServiceProvider extends ServiceProvider$1 {
9629
+ boot(): void;
9630
+ }
9631
+
9632
+ export { API_ROUTES_STUB, AboutCommand, AbstractPaginator, AccessGate, AddQueuedCookiesToResponse, type AfterCallback, AllMailersFailedError, AlwaysProp, AnonymousNotifiable, Application, ApplicationBuilder, ArgonHasher, type ArgonOptions, type ArgumentDefinition, ArraySessionHandler, ArrayTransport, Artisan, Attempting, type Attributes$1 as Attributes, type AttributesResolver, Auth, AuthManager, type AuthModel, type AuthModelBase, type AuthModelConstructor, AuthServiceProvider, AuthenticatableModel, Authenticate, AuthenticationError, Authorizable, type AuthorizableConstructor, AuthorizationError, AuthorizationErrorImpl, Authorize, BaseJob, BaseLogger, BasePipeline, BaseRouter, BaseUrlGenerator, Batch, type BatchAttributes, BatchingUnavailableError, BcryptHasher, type BcryptOptions, type BeforeCallback, BelongsTo, BelongsToMany, BindingResolutionError, Blueprint, type BlueprintCommand, BufferedConsoleOutput, Builder, type BuiltInCast, type BuiltinRule, BuiltinRuleObject, type BunDatabase, BunSqliteDatabase, type BunStatement, Bus, Dispatcher as BusDispatcherImpl, BusError, BusServiceProvider, CACHE_TABLE_MIGRATION, CHAIN, Cache, CacheManager, CacheRateLimiter, Repository as CacheRepositoryImpl, CacheServiceProvider, type Store as CacheStore, CallQueuedHandler, CallQueuedListener, type CanResetPassword, type CanResetPasswordUser, type CastDefinition, type CastsAttributes, type ChainSpec, type CipherName, CircularDependencyError, ClassNameMap, ClosureCommand, ClosureKernel, Collection, type Column, type ColumnAttributes, ColumnDefinition, type ColumnInfo, type ColumnRef, type ColumnType, Command, CommandNotFoundError, ComponentNotFoundError, Config, Connection, type ConsoleInput, type ConsoleIo, Kernel as ConsoleKernelImpl, type ConsoleOutput, ConsoleServiceProvider, Container, ContainerNotAvailableError, Controller, ControllerMethodNotFoundError, ConvertEmptyStringsToNull, Cookie, type CookieDefaults, CookieJar, CookieServiceProvider, CookieSessionHandler, CookieValuePrefix, type CreateMigrationOptions, Crypt, Cursor, type CursorPage, CursorPaginator, type CursorPaginatorOptions, DB, DEFAULT_MESSAGES, DailyRotatingStream, DatabaseBatchRepository, type DatabaseCommandContext, type DatabaseConfig, DatabaseConfigError, DatabaseError, DatabaseFailedJobProvider, DatabaseJob, type DatabaseJobRecord, DatabaseLock, DatabaseManagerImpl, DatabaseNotification, DatabaseNotificationChannel, DatabaseNotificationCollection, DatabaseNotificationsRelation, DatabaseQueue, type DatabaseQueueOptions, DatabaseServiceProvider, DatabaseSessionHandler, DatabaseStore, DatabaseTokenRepository, DatabaseUnavailableError, type DatePart, type DateWhereArgs, type DateWhereValue, DecryptError, DeferProp, DiagnosingHealth, type Direction, Dispatchable, type EagerLoadSpec, EloquentCollection, EloquentUserProvider, EmailVerificationRequest, type Encoded, EncryptCookies, EncryptError, EncryptHistory, Encrypter, EncryptionServiceProvider, EnsureEmailIsVerified, type EnumLike$1 as EnumLike, type ErrorClass, ErrorHandler, Event, Dispatcher$1 as EventDispatcherImpl, type EventKey, type EventListenMap, EventServiceProvider, EventsNeedBusDispatcherError, EventsNeedClassRegistryError, ExceptionsConfiguration, type ExpandingRule, ExportError, type ExportOptions, type ExportResult, Expression, Facade, Factory, type FactoryResult, Failed, FailoverTransport, Faker, FakerOverflowError, FileNotFoundError, FileSessionHandler, FileStore, FilesystemManager, FilesystemServiceProvider, ForeignIdColumnDefinition, ForeignKeyDefinition, type ForeignKeyInfo, FormRequest, FormUploadedFile, Gate, type GateAbility, GateResponse, GeneratorCommand, GenericLock, type GlobalScope, Grammar, type GroupAttributes, type GroupHost, GroupRegistrar, type GuardFactory, HandlePrecognitiveRequests, HasApiTokens, HasDatabaseNotifications, type HasDatabaseNotificationsModel, type HasFactory, HasMany, HasManyThrough, HasOne, HasOneOrMany, HasUlids, HasUuids, Hash, HashAlgorithmError, type HashInfo, HashManager, type HasherFactory, type HashingConfig, HashingServiceProvider, type Having, type HealthPage, HelpCommand, type HttpCommandOptions, HttpException, Kernel$1 as HttpKernelImpl, HttpRedirectResponse, HttpRedirector, HttpResponseException, HttpResponseFactory, HttpServerError, HttpServiceProvider, Hub, IncomingRequest, type IncomingRequestOptions, type IndexInfo, type IndexType, Inertia, InertiaError, InertiaHtml, InertiaMiddleware, InertiaPage, Response$1 as InertiaPageResponse, ResponseFactory as InertiaResponseFactory, InertiaServiceProvider, type ValidationErrors as InertiaValidationErrors, InferValidatedType, InvalidCacheConfigError, InvalidCastError, InvalidListenerError, InvalidLogLevelError, InvalidRuleParameterError, InvalidSignatureError, InvalidUrlSignatureError, JOBS_TABLE_MIGRATION, JobClassNotFoundError, type JobContext, type JobMiddleware, JobSerializationError, JoinClause, type JoinType, type JsonWhenCallback, KEY_GENERATE_SIGNATURE, type KernelApp, type KeyGenerateIO, LEVEL_SEVERITY, LazyCollection, type LengthAwarePage, LengthAwarePaginator, ListCommand, type ListenerTuple, type LocalDiskConfig, LocalFilesystem, type LockFactory, LockTimeoutError, Lockout, Log, LogChannelCycleError, LogManager, LogServiceProvider, LogTransport, type LoggedQuery, LogicError, Login, Logout, MIGRATION_CREATE_STUB, MIGRATION_STUB, MIGRATION_UPDATE_STUB, MODEL_EVENTS, Mail, type MailLevel, MailManager, MailMessage, type MailMessageAction, MailNotificationChannel, MailQueueUnavailableError, MailServiceProvider, type MailTransporter, MailUnavailableError, Mailable, MailerImpl, MakeCastCommand, MakeCommandCommand, MakeControllerCommand, MakeEventCommand, MakeFactoryCommand, MakeJobCommand, MakeListenerCommand, MakeMailCommand, MakeMiddlewareCommand, MakeModelCommand, MakeNotificationCommand, MakeObserverCommand, MakePolicyCommand, MakeProviderCommand, MakeRequestCommand, MakeResourceCommand, MakeRuleCommand, MakeSeederCommand, MakeTestCommand, type Manifest, type ManifestChunk, ManuallyFailedError, type Many, MassAssignmentError, MaxAttemptsExceededError, MemoryStore, MergeProp, MessageBagImpl, MethodNotAllowedHttpError, MiddlewareConfiguration, MiddlewareNotFoundError, Migration, MigrationCreator, type MigrationRecord, MigrationRepository, type MigrationStatus, Migrator, type MigratorOptions, MissingAppKeyError, MissingModelError, MissingRecipientError, Model, type ModelBuilder, type ModelClass, type ModelConstructor, type ModelEvent, type ModelListener, ModelNotFoundError, ModelRegistry, type MorphConstraint, MorphMany, MorphOne, MorphTo, MySqlSchemaGrammar, NOTIFICATIONS_TABLE, NOTIFICATIONS_TABLE_MIGRATION, type NewAccessToken, NodeConsoleInput, NodeConsoleOutput, NotDatabaseNotifiableError, NotFoundHttpError, Notifiable, type NotifiableConstructor, Notification, Dispatcher$2 as NotificationDispatcherImpl, NotificationDispatcherUnavailableError, NotificationFacade, NotificationQueueUnavailableError, NotificationsServiceProvider, NullFailedJobProvider, NullLogger, NullQueue, OPERATORS, OnceProp, type OptionDefinition, OptionValue, OptionalProp, type Order, PERSONAL_ACCESS_TOKENS_MIGRATION, type PagePropsFrom, type PaginationLink, Paginator, type PaginatorOptions, type ParsedInput, type ParsedRule, type ParsedSetCookie, type ParsedSignature, Password, PasswordBroker, PasswordBrokerManager, PasswordReset, PasswordRule, PathTraversalError, PendingBatch, PendingChain, PendingDispatch, PersonalAccessToken, PinoLogger, PipelineError, PipelineServiceProvider, Pivot, type PivotIds, type PlainNotificationMail, type PolicyClass, PostgresSchemaGrammar, type PreloadAttributesResolver, PropsResolver, ProviderBootError, ProviderRegisterError, QUEUE_JOB, Builder$1 as QueryBuilder, QueryError, Queue, QueueBase, type QueueCommandContext, QueueError, type QueueJobPayload, Listener as QueueListener, type ListenerConfig as QueueListenerConfig, type ListenerOptions as QueueListenerOptions, type ListenerOutput as QueueListenerOutput, QueueManager, QueueServiceProvider, QueueUnavailableError, Queueable, QueuedConsoleInput, QueuedMailSender, type QueuedMailableFactory, RESTART_CACHE_KEY, RateLimiter, type RawResult, type RecipientOverrides, RedirectIfAuthenticated, RedisJob, RedisLock, RedisQueue, type RedisQueueOptions, RedisRepository, type RedisSessionClient, RedisSessionHandler, RedisStore, RedisTaggedStore, type ReferentialAction, Registered, type RegisteredModel, Relation, type RelationConstraint, type RelationNames, RelationNotFoundError, RelationNotLoadedError, type RelationValue, RenameClasses, type RenderCallback, type RenderedContent, type ReplStarter, type ReportCallback, Repository$1 as Repository, ResetPassword, type ResetPasswordMail, type ResolvedMiddleware, type ResolvedServeOptions, type ResourceMethod, type ResourceRoute, type RollbackOptions, Route, RouteArguments, type RouteAttributes, type RouteBinder, RouteDefinition, type RouteFileCallback, type RouteHandler, type RouteListFilters, type RouteListRow, RouteModelNotFoundError, RouteModelResolverImpl, RouteName, RouteNotDefinedError, type RouteStage, RoutesNotifications, RoutingError, type RoutingOptions, RoutingServiceProvider, Rule, type RuleContext, type RunningServer, type Runtime, type S3ClientLike, type S3DiskConfig, S3Filesystem, SCHEDULE_INTERRUPT_KEY, SSR_RENDER_FAILED, STORAGE_LINK_SIGNATURE, Schedule, ScheduleClearCacheCommand, type ScheduleClock, ScheduleImpl, ScheduleInterruptCommand, ScheduleListCommand, ScheduleNameRequiredError, ScheduleRunCommand, ScheduleWorkCommand, type ScheduleWorkOptions, ScheduledEventImpl, Schema, SchemaBuilder, SchemaBuilderToken, SchemaGrammar, type SchemaStep, type Scope, type ScopeCallback, type ScopeStatic, type Scopes, type ScrollMetadata, ScrollProp, Seeder, type SeederClass, type SelectColumn, SendEmailVerificationNotification, SendQueuedMailable, SendQueuedNotifications, type Serialized, type SerializedObject, type ServeOptions, ServiceProvider$1 as ServiceProvider, SessionFacade as Session, type SessionConfig, SessionGuard, type SessionGuardOptions, type SessionHandlerFactory, SessionManager, SessionMessageBag, SessionServiceProvider, Store$1 as SessionStore, SetCacheHeaders, type SharedPropsFrom, type SimplePage, type SmtpConfig, SmtpTransport, SoftDeletingScope, type SpawnResult, type SpawnWorker, type Spawner, SqliteSchemaGrammar, SsrError, type SsrFailure, HttpGateway as SsrHttpGateway, type StackFrame, StackLogger, StartSession, type State, type StateContext, Storage, type StoredBatchOptions, type StringPipeResolver, Stringable, type SyncChanges, SyncJob, SyncQueue, type TableRebuild, type TagAttributes, TagsNotSupportedError, TestCommand, ThrottleRequests, ThrottleRequestsError, TimeoutExceededError, TinkerCommand, type TinkerOptions, type TinkerRepl, TokenGuard, type TokenGuardOptions, TokenMismatchError, TokenRepository, type TransporterFactory, TrimStrings, TypeGenerator, type TypeGeneratorOptions, type TypedRedirector, UNIQUE, UNIQUE_LOCK, USERS_TABLE_MIGRATION, UniqueJobsNeedCacheError, UniqueLock, type UniqueLockSpec, type UniqueSpec, UnknownCacheDriverError, UnknownCacheStoreError, UnknownDiskError, UnknownFilesystemDriverError, UnknownLogChannelError, UnknownLogDriverError, UnknownMailTransportError, UnknownMailerError, UnknownNotificationChannelError, UnknownQueueConnectionError, UnknownQueueDriverError, UnknownValidationRuleError, UnrenderableNotificationDataError, UnrenderableNotificationMailError, UnsupportedCipherError, UnsupportedOperationError, type UriParameter, UrlGenerationError, type UrlResolver, type UserProviderFactory, VERCEL_FUNCTION_LIMIT, ValidateSignature, Validated, ValidationErrorImpl, ValidationException, ValidationFactoryImpl, ValidationServiceProvider, Validator, ValidatorImpl, type VercelBuildOptions, type VercelBuildResult, VercelServiceProvider, type VerifiableUser, Verified, VerifyCsrfToken, VerifyEmail, type VerifyEmailMail, ViewFactoryUnavailableError, Vite, ViteError, ViteHtml, WORKER_DISCOVERY_DIRECTORIES, type Where, type WhereArgs, type WhereBoolean, WithoutOverlapping, Worker, type WorkerListener, type WorkerOptions, abort, abortIf, abortUnless, addApiRouting, allowGuests, applyExceptionCallbacks, applyMiddlewareCallbacks, applyReplacements, auth, back, bcrypt, buildVercelOutput, builtinRules, bunRuntime, cache, castGet, castSet, classNameOf, clientAddress, columnKey, compareRoutes, contentDisposition, cookie, createDailyChannel, createDialect, createPayload, createSingleChannel, createStderrChannel, createToken, csrfToken, currentContainer, currentLogContext, currentRequest, currentVite, databaseConfigDefaults, debugPage, decodePayload, decrypt, defaultAttributeName, defaultListenerOptions, defaultLockFactory, defaultProviders, defaultWorkerOptions, delaySeconds, describeError, deserialize, detectRuntime, discoverClasses, discoverFactories, discoverJobs, discoverListeners, discoverPolicies, dispatch, dispatchRoute, dispatchSync, encodePayload, encrypt, enumValues, env, errorBagFrom, errors, escapeHtml, event, exceedsJsonDepth, expandWildcardKeys, exportSite, extensionFromMime, fake, filterRouteList, formatAddress, formatDate, formatDateTime, formatRouteList, formatTimestamp, fromEntries, generateAppKey, generateModelTypes, getMorphAlias, getMorphedModel, guessTable, hashInfo, healthResponse, inertia, inertiaBody, inertiaHead, inject, ipMatches, isBlank, isBun, isDateCast, isEmptyValue, isEquivalent, isJsonCast, isListenerClass, isListenerTuple, isModel, isPrecognitive, isQueueable, isQueueableListener, isTableRebuild, isUnique, isUploadedFileLike, joinDiskPath, keyGenerateHandler, listenerOptionsFrom, loadRelations, loadRoutesFrom, logger, makeFailedJobProvider, meetsLevel, mergeGroup, mergeLogContext, mergeRecursive, migrationDatePrefix, minimalPage, modelEventName, morphMap, nodeRequestHandler, normalizeAddress, normalizeAddresses, normalizeBackoff, normalizeLists, normalizePath, normalizeUri, old, openSqlite, optionalCookieJar, optionalSession, orderForBindings, parseArgv, parseBracketKey, parseCookieHeader, parseDateTime, parseKey, parseParameters, parseRuleSpec, parseSignature, passwordVerify, prepareValue, queueConfigDefaults, queueOptionsOf, raw as rawSql, rawWithBindings, redirect, registerHttpCommands, registerKeyGenerateCommand, registerMigrationCommands, registerModelTypesCommand, registerQueueCommands, registerStorageLinkCommand, renderContent, renderError, request, requestScope, resolveArguments, resolveDiskPath, resolveMiddleware, resolveMorphClass, resolveOptions, resourceRoutes, response, restoreJob, restoreValue, roundTrip, route, routeListRows, runConsole, runConsoleAndExit, runMiddleware, runSeeder, sanitize, sendEmailVerificationUsing, sendNotification, serialize, serializeContext, serializeCookie, serializeDate, serializeValue, serve, serveBun, serveNode, servePublicFile, session, setClientAddress, stackFrames, statusFor, statusText, storageLinkHandler, substituteBindings, suggest, summarizeValidation, toNotifiableList, toResponse, toWebRequest, tokenableType, transformLeaves, url, usePaginationResolvers, validateRequiredArguments, vite, viteReactRefresh, withHeaders, workerOptionsFrom, writeResponse };