arri 0.0.38 → 0.0.40

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.
package/dist/index.d.cts CHANGED
@@ -1,11 +1,111 @@
1
- import { R as RpcHandlerContext, a as RouteHandlerContext, A as ArriOptions, C as ClientGenerator } from './shared/arri.a8159363.cjs';
2
- export { c as Arri, f as ArriProcedure, e as ArriProcedureBase, j as ArriProcedureHandler, k as ArriProcedurePostHandler, t as ArriRoute, x as ArriRouteHandler, z as ArriRoutePostHandler, b as DEV_DEFINITION_ENDPOINT, D as DEV_ENDPOINT_ROOT, E as ExtractParam, w as ExtractParams, g as HandlerContext, d as HttpMethod, H as HttpMethodValues, M as Middleware, y as RoutePostHandlerContext, h as RpcPostHandlerContext, n as createRpcDefinition, v as defineMiddleware, u as defineRoute, m as defineRpc, q as getRpcParamDefinition, p as getRpcParamName, o as getRpcPath, r as getRpcResponseName, i as isHttpMethod, l as isRpc, B as registerRoute, s as registerRpc } from './shared/arri.a8159363.cjs';
3
1
  import * as _sinclair_typebox from '@sinclair/typebox';
4
- import { Static } from '@sinclair/typebox';
2
+ import { TObject, TSchema, Static } from '@sinclair/typebox';
3
+ import { H3Event, Router, App, H3Error } from 'h3';
4
+ import { H as HttpMethod, P as ProcedureDef, A as ApplicationDef, a as ClientGenerator } from './shared/arri.4536bc49.cjs';
5
5
  import { ValueError } from '@sinclair/typebox/errors';
6
- import { H3Error, H3Event } from 'h3';
7
6
  import { BuildOptions } from 'esbuild';
8
7
 
8
+ interface ArriRoute<TPath extends string, TMethod extends HttpMethod, TQuery extends TObject | undefined = undefined, TBody extends TSchema | undefined = undefined, TResponse extends TSchema | undefined = undefined, TFallbackResponse = any> {
9
+ path: TPath;
10
+ method: TMethod;
11
+ query?: TQuery;
12
+ body?: TBody;
13
+ response?: TResponse;
14
+ handler: ArriRouteHandler<TPath, TQuery extends TObject ? Static<TQuery> : undefined, TBody extends TSchema ? Static<TBody> : undefined, TResponse extends TSchema ? Static<TResponse> : TFallbackResponse>;
15
+ postHandler?: ArriRoutePostHandler<TPath, TQuery extends TObject ? Static<TQuery> : undefined, TBody extends TObject ? Static<TObject> : undefined, TResponse extends TSchema ? Static<TResponse> : TFallbackResponse>;
16
+ }
17
+ declare function defineRoute<TPath extends string, TMethod extends HttpMethod, TQuery extends TObject | undefined = any, TBody extends TSchema | undefined = any, TResponse extends TSchema | undefined = undefined, TFallbackResponse = any>(config: ArriRoute<TPath, TMethod, TQuery, TBody, TResponse, TFallbackResponse>): ArriRoute<TPath, TMethod, TQuery, TBody, TResponse, TFallbackResponse>;
18
+ type Middleware = (context: HandlerContext, event: H3Event) => void | Promise<void>;
19
+ declare const defineMiddleware: (middleware: Middleware) => Middleware;
20
+ type ExtractParam<Path, NextPart> = Path extends `:${infer Param}` ? Record<Param, string> & NextPart : NextPart;
21
+ type ExtractParams<Path> = Path extends `${infer Segment}/${infer Rest}` ? ExtractParam<Segment, ExtractParams<Rest>> : ExtractParam<Path, {}>;
22
+ type ArriRouteHandler<TPath extends string, TQuery = undefined, TBody = undefined, TResponse = any> = (context: RouteHandlerContext<ExtractParams<TPath>, TQuery, TBody>, event: H3Event) => TResponse extends undefined ? void | Promise<void> : TResponse | Promise<TResponse>;
23
+ interface RouteHandlerContext<TParams extends Record<string, string>, TQuery = undefined, TBody = undefined> extends HandlerContext {
24
+ type: "route";
25
+ params: TParams;
26
+ query: TQuery;
27
+ body: TBody;
28
+ }
29
+ interface RoutePostHandlerContext<TParams extends Record<string, string>, TQuery = undefined, TBody = undefined, TResponse = undefined> extends RouteHandlerContext<TParams, TQuery, TBody> {
30
+ response: TResponse;
31
+ }
32
+ type ArriRoutePostHandler<TPath extends string, TQuery = undefined, TBody = undefined, TResponse = undefined> = (context: RoutePostHandlerContext<ExtractParams<TPath>, TQuery, TBody, TResponse>, event: H3Event) => any;
33
+ declare function registerRoute<TPath extends string>(router: Router, route: ArriRoute<TPath, HttpMethod, any, any, any>, middleware: Middleware[], prefix?: string, opts?: ArriOptions): void;
34
+
35
+ interface ArriProcedureBase {
36
+ method: HttpMethod;
37
+ params?: any;
38
+ response?: any;
39
+ handler: (context: any) => any;
40
+ postHandler?: (context: any) => any;
41
+ }
42
+ interface ArriProcedure<TParams extends TObject | undefined, TResponse extends TObject | undefined> {
43
+ description?: string;
44
+ method?: HttpMethod;
45
+ params: TParams;
46
+ response: TResponse;
47
+ handler: ArriProcedureHandler<TParams extends TObject ? Static<TParams> : undefined, TResponse extends TObject ? Static<TResponse> : void>;
48
+ postHandler?: ArriProcedurePostHandler<TParams extends TObject ? Static<TParams> : undefined, TResponse extends TObject ? Static<TResponse> : undefined>;
49
+ }
50
+ type HandlerContext = Record<string, any>;
51
+ interface RpcHandlerContext<TParams = undefined> extends HandlerContext {
52
+ type: "procedure";
53
+ params: TParams;
54
+ }
55
+ interface RpcPostHandlerContext<TParams = undefined, TResponse = undefined> extends RpcHandlerContext<TParams> {
56
+ response: TResponse;
57
+ }
58
+ type ArriProcedureHandler<TParams, TResponse> = (context: RpcHandlerContext<TParams>, event: H3Event) => TResponse | Promise<TResponse>;
59
+ type ArriProcedurePostHandler<TParams, TResponse> = (context: RpcPostHandlerContext<TParams, TResponse>, event: H3Event) => any;
60
+ declare function isRpc(input: any): input is ArriProcedure<any, any>;
61
+ declare function defineRpc<TParams extends TObject | undefined = undefined, TResponse extends TObject | undefined | never = undefined>(config: ArriProcedure<TParams, TResponse>): ArriProcedure<TParams, TResponse>;
62
+ declare function createRpcDefinition(rpcName: string, httpPath: string, procedure: ArriProcedure<any, any>): ProcedureDef;
63
+ declare function getRpcPath(rpcName: string, prefix?: string): string;
64
+ declare function getRpcParamName(rpcName: string, procedure: ArriProcedure<any, any>): string | null;
65
+ declare function getRpcParamDefinition(rpcName: string, procedure: ArriProcedure<any, any>): ProcedureDef["params"];
66
+ declare function getRpcResponseName(rpcName: string, procedure: ArriProcedure<any, any>): string | null;
67
+ declare function registerRpc(router: Router, path: string, procedure: ArriProcedure<any, any>, middleware: Middleware[], opts: ArriOptions): void;
68
+
69
+ declare const DEV_ENDPOINT_ROOT = "/__arri_dev__";
70
+ declare const DEV_DEFINITION_ENDPOINT = "/__arri_dev__/definition";
71
+ declare class Arri {
72
+ __isArri__: boolean;
73
+ private readonly h3App;
74
+ private readonly h3Router;
75
+ private readonly rpcDefinitionPath;
76
+ private readonly rpcRoutePrefix;
77
+ appInfo: ApplicationDef["info"];
78
+ private procedures;
79
+ private models;
80
+ private readonly middlewares;
81
+ private readonly onAfterResponse;
82
+ private readonly onBeforeResponse;
83
+ private readonly onError;
84
+ constructor(opts?: ArriOptions);
85
+ registerMiddleware(middleware: Middleware): void;
86
+ registerRpc<TParams extends TObject | undefined, TResponse extends TObject | undefined>(name: string, procedure: ArriProcedure<TParams, TResponse>): void;
87
+ registerRoute<TPath extends string, TMethod extends HttpMethod = HttpMethod, TQuery extends TObject | undefined = undefined, TBody extends TSchema | undefined = undefined, TResponse extends TSchema | undefined = undefined, TFallbackResponse = any>(route: ArriRoute<TPath, TMethod, TQuery, TBody, TResponse, TFallbackResponse>): void;
88
+ getAppDefinition(): ApplicationDef;
89
+ getH3Instance(): App;
90
+ }
91
+ interface ArriOptions {
92
+ debug?: boolean;
93
+ /**
94
+ * Metadata to display in the __definition.json file
95
+ */
96
+ appInfo?: ApplicationDef["info"];
97
+ rpcRoutePrefix?: string;
98
+ /**
99
+ * Defaults to /__definitions
100
+ * This parameters also takes the rpcRoutePrefix option into account
101
+ */
102
+ rpcDefinitionPath?: string;
103
+ onRequest?: (event: H3Event) => void | Promise<void>;
104
+ onAfterResponse?: (context: RpcPostHandlerContext | RoutePostHandlerContext<any>, event: H3Event) => void | Promise<void>;
105
+ onBeforeResponse?: (context: RpcPostHandlerContext | RoutePostHandlerContext<any>, event: H3Event) => void | Promise<void>;
106
+ onError?: (error: H3Error, context: RpcHandlerContext | RouteHandlerContext<any>, event: H3Event) => void | Promise<void>;
107
+ }
108
+
9
109
  declare const ErrorResponse: _sinclair_typebox.TObject<{
10
110
  statusCode: _sinclair_typebox.TInteger;
11
111
  statusMessage: _sinclair_typebox.TString;
@@ -38,4 +138,4 @@ type ResolvedArriConfig = Required<ArriConfig>;
38
138
  declare const defaultConfig: Required<ArriConfig>;
39
139
  declare function defineConfig(config: ArriConfig): ResolvedArriConfig;
40
140
 
41
- export { type ArriConfig, ArriOptions, ErrorResponse, type ResolvedArriConfig, RouteHandlerContext, RpcHandlerContext, type StatusCode, defaultConfig, defineConfig, defineError, errorResponseFromValidationErrors, handleH3Error };
141
+ export { Arri, type ArriConfig, type ArriOptions, type ArriProcedure, type ArriProcedureBase, type ArriProcedureHandler, type ArriProcedurePostHandler, type ArriRoute, type ArriRouteHandler, type ArriRoutePostHandler, DEV_DEFINITION_ENDPOINT, DEV_ENDPOINT_ROOT, ErrorResponse, type ExtractParam, type ExtractParams, type HandlerContext, type Middleware, type ResolvedArriConfig, type RouteHandlerContext, type RoutePostHandlerContext, type RpcHandlerContext, type RpcPostHandlerContext, type StatusCode, createRpcDefinition, defaultConfig, defineConfig, defineError, defineMiddleware, defineRoute, defineRpc, errorResponseFromValidationErrors, getRpcParamDefinition, getRpcParamName, getRpcPath, getRpcResponseName, handleH3Error, isRpc, registerRoute, registerRpc };
package/dist/index.d.mts CHANGED
@@ -1,11 +1,111 @@
1
- import { R as RpcHandlerContext, a as RouteHandlerContext, A as ArriOptions, C as ClientGenerator } from './shared/arri.a8159363.mjs';
2
- export { c as Arri, f as ArriProcedure, e as ArriProcedureBase, j as ArriProcedureHandler, k as ArriProcedurePostHandler, t as ArriRoute, x as ArriRouteHandler, z as ArriRoutePostHandler, b as DEV_DEFINITION_ENDPOINT, D as DEV_ENDPOINT_ROOT, E as ExtractParam, w as ExtractParams, g as HandlerContext, d as HttpMethod, H as HttpMethodValues, M as Middleware, y as RoutePostHandlerContext, h as RpcPostHandlerContext, n as createRpcDefinition, v as defineMiddleware, u as defineRoute, m as defineRpc, q as getRpcParamDefinition, p as getRpcParamName, o as getRpcPath, r as getRpcResponseName, i as isHttpMethod, l as isRpc, B as registerRoute, s as registerRpc } from './shared/arri.a8159363.mjs';
3
1
  import * as _sinclair_typebox from '@sinclair/typebox';
4
- import { Static } from '@sinclair/typebox';
2
+ import { TObject, TSchema, Static } from '@sinclair/typebox';
3
+ import { H3Event, Router, App, H3Error } from 'h3';
4
+ import { H as HttpMethod, P as ProcedureDef, A as ApplicationDef, a as ClientGenerator } from './shared/arri.4536bc49.mjs';
5
5
  import { ValueError } from '@sinclair/typebox/errors';
6
- import { H3Error, H3Event } from 'h3';
7
6
  import { BuildOptions } from 'esbuild';
8
7
 
8
+ interface ArriRoute<TPath extends string, TMethod extends HttpMethod, TQuery extends TObject | undefined = undefined, TBody extends TSchema | undefined = undefined, TResponse extends TSchema | undefined = undefined, TFallbackResponse = any> {
9
+ path: TPath;
10
+ method: TMethod;
11
+ query?: TQuery;
12
+ body?: TBody;
13
+ response?: TResponse;
14
+ handler: ArriRouteHandler<TPath, TQuery extends TObject ? Static<TQuery> : undefined, TBody extends TSchema ? Static<TBody> : undefined, TResponse extends TSchema ? Static<TResponse> : TFallbackResponse>;
15
+ postHandler?: ArriRoutePostHandler<TPath, TQuery extends TObject ? Static<TQuery> : undefined, TBody extends TObject ? Static<TObject> : undefined, TResponse extends TSchema ? Static<TResponse> : TFallbackResponse>;
16
+ }
17
+ declare function defineRoute<TPath extends string, TMethod extends HttpMethod, TQuery extends TObject | undefined = any, TBody extends TSchema | undefined = any, TResponse extends TSchema | undefined = undefined, TFallbackResponse = any>(config: ArriRoute<TPath, TMethod, TQuery, TBody, TResponse, TFallbackResponse>): ArriRoute<TPath, TMethod, TQuery, TBody, TResponse, TFallbackResponse>;
18
+ type Middleware = (context: HandlerContext, event: H3Event) => void | Promise<void>;
19
+ declare const defineMiddleware: (middleware: Middleware) => Middleware;
20
+ type ExtractParam<Path, NextPart> = Path extends `:${infer Param}` ? Record<Param, string> & NextPart : NextPart;
21
+ type ExtractParams<Path> = Path extends `${infer Segment}/${infer Rest}` ? ExtractParam<Segment, ExtractParams<Rest>> : ExtractParam<Path, {}>;
22
+ type ArriRouteHandler<TPath extends string, TQuery = undefined, TBody = undefined, TResponse = any> = (context: RouteHandlerContext<ExtractParams<TPath>, TQuery, TBody>, event: H3Event) => TResponse extends undefined ? void | Promise<void> : TResponse | Promise<TResponse>;
23
+ interface RouteHandlerContext<TParams extends Record<string, string>, TQuery = undefined, TBody = undefined> extends HandlerContext {
24
+ type: "route";
25
+ params: TParams;
26
+ query: TQuery;
27
+ body: TBody;
28
+ }
29
+ interface RoutePostHandlerContext<TParams extends Record<string, string>, TQuery = undefined, TBody = undefined, TResponse = undefined> extends RouteHandlerContext<TParams, TQuery, TBody> {
30
+ response: TResponse;
31
+ }
32
+ type ArriRoutePostHandler<TPath extends string, TQuery = undefined, TBody = undefined, TResponse = undefined> = (context: RoutePostHandlerContext<ExtractParams<TPath>, TQuery, TBody, TResponse>, event: H3Event) => any;
33
+ declare function registerRoute<TPath extends string>(router: Router, route: ArriRoute<TPath, HttpMethod, any, any, any>, middleware: Middleware[], prefix?: string, opts?: ArriOptions): void;
34
+
35
+ interface ArriProcedureBase {
36
+ method: HttpMethod;
37
+ params?: any;
38
+ response?: any;
39
+ handler: (context: any) => any;
40
+ postHandler?: (context: any) => any;
41
+ }
42
+ interface ArriProcedure<TParams extends TObject | undefined, TResponse extends TObject | undefined> {
43
+ description?: string;
44
+ method?: HttpMethod;
45
+ params: TParams;
46
+ response: TResponse;
47
+ handler: ArriProcedureHandler<TParams extends TObject ? Static<TParams> : undefined, TResponse extends TObject ? Static<TResponse> : void>;
48
+ postHandler?: ArriProcedurePostHandler<TParams extends TObject ? Static<TParams> : undefined, TResponse extends TObject ? Static<TResponse> : undefined>;
49
+ }
50
+ type HandlerContext = Record<string, any>;
51
+ interface RpcHandlerContext<TParams = undefined> extends HandlerContext {
52
+ type: "procedure";
53
+ params: TParams;
54
+ }
55
+ interface RpcPostHandlerContext<TParams = undefined, TResponse = undefined> extends RpcHandlerContext<TParams> {
56
+ response: TResponse;
57
+ }
58
+ type ArriProcedureHandler<TParams, TResponse> = (context: RpcHandlerContext<TParams>, event: H3Event) => TResponse | Promise<TResponse>;
59
+ type ArriProcedurePostHandler<TParams, TResponse> = (context: RpcPostHandlerContext<TParams, TResponse>, event: H3Event) => any;
60
+ declare function isRpc(input: any): input is ArriProcedure<any, any>;
61
+ declare function defineRpc<TParams extends TObject | undefined = undefined, TResponse extends TObject | undefined | never = undefined>(config: ArriProcedure<TParams, TResponse>): ArriProcedure<TParams, TResponse>;
62
+ declare function createRpcDefinition(rpcName: string, httpPath: string, procedure: ArriProcedure<any, any>): ProcedureDef;
63
+ declare function getRpcPath(rpcName: string, prefix?: string): string;
64
+ declare function getRpcParamName(rpcName: string, procedure: ArriProcedure<any, any>): string | null;
65
+ declare function getRpcParamDefinition(rpcName: string, procedure: ArriProcedure<any, any>): ProcedureDef["params"];
66
+ declare function getRpcResponseName(rpcName: string, procedure: ArriProcedure<any, any>): string | null;
67
+ declare function registerRpc(router: Router, path: string, procedure: ArriProcedure<any, any>, middleware: Middleware[], opts: ArriOptions): void;
68
+
69
+ declare const DEV_ENDPOINT_ROOT = "/__arri_dev__";
70
+ declare const DEV_DEFINITION_ENDPOINT = "/__arri_dev__/definition";
71
+ declare class Arri {
72
+ __isArri__: boolean;
73
+ private readonly h3App;
74
+ private readonly h3Router;
75
+ private readonly rpcDefinitionPath;
76
+ private readonly rpcRoutePrefix;
77
+ appInfo: ApplicationDef["info"];
78
+ private procedures;
79
+ private models;
80
+ private readonly middlewares;
81
+ private readonly onAfterResponse;
82
+ private readonly onBeforeResponse;
83
+ private readonly onError;
84
+ constructor(opts?: ArriOptions);
85
+ registerMiddleware(middleware: Middleware): void;
86
+ registerRpc<TParams extends TObject | undefined, TResponse extends TObject | undefined>(name: string, procedure: ArriProcedure<TParams, TResponse>): void;
87
+ registerRoute<TPath extends string, TMethod extends HttpMethod = HttpMethod, TQuery extends TObject | undefined = undefined, TBody extends TSchema | undefined = undefined, TResponse extends TSchema | undefined = undefined, TFallbackResponse = any>(route: ArriRoute<TPath, TMethod, TQuery, TBody, TResponse, TFallbackResponse>): void;
88
+ getAppDefinition(): ApplicationDef;
89
+ getH3Instance(): App;
90
+ }
91
+ interface ArriOptions {
92
+ debug?: boolean;
93
+ /**
94
+ * Metadata to display in the __definition.json file
95
+ */
96
+ appInfo?: ApplicationDef["info"];
97
+ rpcRoutePrefix?: string;
98
+ /**
99
+ * Defaults to /__definitions
100
+ * This parameters also takes the rpcRoutePrefix option into account
101
+ */
102
+ rpcDefinitionPath?: string;
103
+ onRequest?: (event: H3Event) => void | Promise<void>;
104
+ onAfterResponse?: (context: RpcPostHandlerContext | RoutePostHandlerContext<any>, event: H3Event) => void | Promise<void>;
105
+ onBeforeResponse?: (context: RpcPostHandlerContext | RoutePostHandlerContext<any>, event: H3Event) => void | Promise<void>;
106
+ onError?: (error: H3Error, context: RpcHandlerContext | RouteHandlerContext<any>, event: H3Event) => void | Promise<void>;
107
+ }
108
+
9
109
  declare const ErrorResponse: _sinclair_typebox.TObject<{
10
110
  statusCode: _sinclair_typebox.TInteger;
11
111
  statusMessage: _sinclair_typebox.TString;
@@ -38,4 +138,4 @@ type ResolvedArriConfig = Required<ArriConfig>;
38
138
  declare const defaultConfig: Required<ArriConfig>;
39
139
  declare function defineConfig(config: ArriConfig): ResolvedArriConfig;
40
140
 
41
- export { type ArriConfig, ArriOptions, ErrorResponse, type ResolvedArriConfig, RouteHandlerContext, RpcHandlerContext, type StatusCode, defaultConfig, defineConfig, defineError, errorResponseFromValidationErrors, handleH3Error };
141
+ export { Arri, type ArriConfig, type ArriOptions, type ArriProcedure, type ArriProcedureBase, type ArriProcedureHandler, type ArriProcedurePostHandler, type ArriRoute, type ArriRouteHandler, type ArriRoutePostHandler, DEV_DEFINITION_ENDPOINT, DEV_ENDPOINT_ROOT, ErrorResponse, type ExtractParam, type ExtractParams, type HandlerContext, type Middleware, type ResolvedArriConfig, type RouteHandlerContext, type RoutePostHandlerContext, type RpcHandlerContext, type RpcPostHandlerContext, type StatusCode, createRpcDefinition, defaultConfig, defineConfig, defineError, defineMiddleware, defineRoute, defineRpc, errorResponseFromValidationErrors, getRpcParamDefinition, getRpcParamName, getRpcPath, getRpcResponseName, handleH3Error, isRpc, registerRoute, registerRpc };
package/dist/index.d.ts CHANGED
@@ -1,11 +1,111 @@
1
- import { R as RpcHandlerContext, a as RouteHandlerContext, A as ArriOptions, C as ClientGenerator } from './shared/arri.a8159363.js';
2
- export { c as Arri, f as ArriProcedure, e as ArriProcedureBase, j as ArriProcedureHandler, k as ArriProcedurePostHandler, t as ArriRoute, x as ArriRouteHandler, z as ArriRoutePostHandler, b as DEV_DEFINITION_ENDPOINT, D as DEV_ENDPOINT_ROOT, E as ExtractParam, w as ExtractParams, g as HandlerContext, d as HttpMethod, H as HttpMethodValues, M as Middleware, y as RoutePostHandlerContext, h as RpcPostHandlerContext, n as createRpcDefinition, v as defineMiddleware, u as defineRoute, m as defineRpc, q as getRpcParamDefinition, p as getRpcParamName, o as getRpcPath, r as getRpcResponseName, i as isHttpMethod, l as isRpc, B as registerRoute, s as registerRpc } from './shared/arri.a8159363.js';
3
1
  import * as _sinclair_typebox from '@sinclair/typebox';
4
- import { Static } from '@sinclair/typebox';
2
+ import { TObject, TSchema, Static } from '@sinclair/typebox';
3
+ import { H3Event, Router, App, H3Error } from 'h3';
4
+ import { H as HttpMethod, P as ProcedureDef, A as ApplicationDef, a as ClientGenerator } from './shared/arri.4536bc49.js';
5
5
  import { ValueError } from '@sinclair/typebox/errors';
6
- import { H3Error, H3Event } from 'h3';
7
6
  import { BuildOptions } from 'esbuild';
8
7
 
8
+ interface ArriRoute<TPath extends string, TMethod extends HttpMethod, TQuery extends TObject | undefined = undefined, TBody extends TSchema | undefined = undefined, TResponse extends TSchema | undefined = undefined, TFallbackResponse = any> {
9
+ path: TPath;
10
+ method: TMethod;
11
+ query?: TQuery;
12
+ body?: TBody;
13
+ response?: TResponse;
14
+ handler: ArriRouteHandler<TPath, TQuery extends TObject ? Static<TQuery> : undefined, TBody extends TSchema ? Static<TBody> : undefined, TResponse extends TSchema ? Static<TResponse> : TFallbackResponse>;
15
+ postHandler?: ArriRoutePostHandler<TPath, TQuery extends TObject ? Static<TQuery> : undefined, TBody extends TObject ? Static<TObject> : undefined, TResponse extends TSchema ? Static<TResponse> : TFallbackResponse>;
16
+ }
17
+ declare function defineRoute<TPath extends string, TMethod extends HttpMethod, TQuery extends TObject | undefined = any, TBody extends TSchema | undefined = any, TResponse extends TSchema | undefined = undefined, TFallbackResponse = any>(config: ArriRoute<TPath, TMethod, TQuery, TBody, TResponse, TFallbackResponse>): ArriRoute<TPath, TMethod, TQuery, TBody, TResponse, TFallbackResponse>;
18
+ type Middleware = (context: HandlerContext, event: H3Event) => void | Promise<void>;
19
+ declare const defineMiddleware: (middleware: Middleware) => Middleware;
20
+ type ExtractParam<Path, NextPart> = Path extends `:${infer Param}` ? Record<Param, string> & NextPart : NextPart;
21
+ type ExtractParams<Path> = Path extends `${infer Segment}/${infer Rest}` ? ExtractParam<Segment, ExtractParams<Rest>> : ExtractParam<Path, {}>;
22
+ type ArriRouteHandler<TPath extends string, TQuery = undefined, TBody = undefined, TResponse = any> = (context: RouteHandlerContext<ExtractParams<TPath>, TQuery, TBody>, event: H3Event) => TResponse extends undefined ? void | Promise<void> : TResponse | Promise<TResponse>;
23
+ interface RouteHandlerContext<TParams extends Record<string, string>, TQuery = undefined, TBody = undefined> extends HandlerContext {
24
+ type: "route";
25
+ params: TParams;
26
+ query: TQuery;
27
+ body: TBody;
28
+ }
29
+ interface RoutePostHandlerContext<TParams extends Record<string, string>, TQuery = undefined, TBody = undefined, TResponse = undefined> extends RouteHandlerContext<TParams, TQuery, TBody> {
30
+ response: TResponse;
31
+ }
32
+ type ArriRoutePostHandler<TPath extends string, TQuery = undefined, TBody = undefined, TResponse = undefined> = (context: RoutePostHandlerContext<ExtractParams<TPath>, TQuery, TBody, TResponse>, event: H3Event) => any;
33
+ declare function registerRoute<TPath extends string>(router: Router, route: ArriRoute<TPath, HttpMethod, any, any, any>, middleware: Middleware[], prefix?: string, opts?: ArriOptions): void;
34
+
35
+ interface ArriProcedureBase {
36
+ method: HttpMethod;
37
+ params?: any;
38
+ response?: any;
39
+ handler: (context: any) => any;
40
+ postHandler?: (context: any) => any;
41
+ }
42
+ interface ArriProcedure<TParams extends TObject | undefined, TResponse extends TObject | undefined> {
43
+ description?: string;
44
+ method?: HttpMethod;
45
+ params: TParams;
46
+ response: TResponse;
47
+ handler: ArriProcedureHandler<TParams extends TObject ? Static<TParams> : undefined, TResponse extends TObject ? Static<TResponse> : void>;
48
+ postHandler?: ArriProcedurePostHandler<TParams extends TObject ? Static<TParams> : undefined, TResponse extends TObject ? Static<TResponse> : undefined>;
49
+ }
50
+ type HandlerContext = Record<string, any>;
51
+ interface RpcHandlerContext<TParams = undefined> extends HandlerContext {
52
+ type: "procedure";
53
+ params: TParams;
54
+ }
55
+ interface RpcPostHandlerContext<TParams = undefined, TResponse = undefined> extends RpcHandlerContext<TParams> {
56
+ response: TResponse;
57
+ }
58
+ type ArriProcedureHandler<TParams, TResponse> = (context: RpcHandlerContext<TParams>, event: H3Event) => TResponse | Promise<TResponse>;
59
+ type ArriProcedurePostHandler<TParams, TResponse> = (context: RpcPostHandlerContext<TParams, TResponse>, event: H3Event) => any;
60
+ declare function isRpc(input: any): input is ArriProcedure<any, any>;
61
+ declare function defineRpc<TParams extends TObject | undefined = undefined, TResponse extends TObject | undefined | never = undefined>(config: ArriProcedure<TParams, TResponse>): ArriProcedure<TParams, TResponse>;
62
+ declare function createRpcDefinition(rpcName: string, httpPath: string, procedure: ArriProcedure<any, any>): ProcedureDef;
63
+ declare function getRpcPath(rpcName: string, prefix?: string): string;
64
+ declare function getRpcParamName(rpcName: string, procedure: ArriProcedure<any, any>): string | null;
65
+ declare function getRpcParamDefinition(rpcName: string, procedure: ArriProcedure<any, any>): ProcedureDef["params"];
66
+ declare function getRpcResponseName(rpcName: string, procedure: ArriProcedure<any, any>): string | null;
67
+ declare function registerRpc(router: Router, path: string, procedure: ArriProcedure<any, any>, middleware: Middleware[], opts: ArriOptions): void;
68
+
69
+ declare const DEV_ENDPOINT_ROOT = "/__arri_dev__";
70
+ declare const DEV_DEFINITION_ENDPOINT = "/__arri_dev__/definition";
71
+ declare class Arri {
72
+ __isArri__: boolean;
73
+ private readonly h3App;
74
+ private readonly h3Router;
75
+ private readonly rpcDefinitionPath;
76
+ private readonly rpcRoutePrefix;
77
+ appInfo: ApplicationDef["info"];
78
+ private procedures;
79
+ private models;
80
+ private readonly middlewares;
81
+ private readonly onAfterResponse;
82
+ private readonly onBeforeResponse;
83
+ private readonly onError;
84
+ constructor(opts?: ArriOptions);
85
+ registerMiddleware(middleware: Middleware): void;
86
+ registerRpc<TParams extends TObject | undefined, TResponse extends TObject | undefined>(name: string, procedure: ArriProcedure<TParams, TResponse>): void;
87
+ registerRoute<TPath extends string, TMethod extends HttpMethod = HttpMethod, TQuery extends TObject | undefined = undefined, TBody extends TSchema | undefined = undefined, TResponse extends TSchema | undefined = undefined, TFallbackResponse = any>(route: ArriRoute<TPath, TMethod, TQuery, TBody, TResponse, TFallbackResponse>): void;
88
+ getAppDefinition(): ApplicationDef;
89
+ getH3Instance(): App;
90
+ }
91
+ interface ArriOptions {
92
+ debug?: boolean;
93
+ /**
94
+ * Metadata to display in the __definition.json file
95
+ */
96
+ appInfo?: ApplicationDef["info"];
97
+ rpcRoutePrefix?: string;
98
+ /**
99
+ * Defaults to /__definitions
100
+ * This parameters also takes the rpcRoutePrefix option into account
101
+ */
102
+ rpcDefinitionPath?: string;
103
+ onRequest?: (event: H3Event) => void | Promise<void>;
104
+ onAfterResponse?: (context: RpcPostHandlerContext | RoutePostHandlerContext<any>, event: H3Event) => void | Promise<void>;
105
+ onBeforeResponse?: (context: RpcPostHandlerContext | RoutePostHandlerContext<any>, event: H3Event) => void | Promise<void>;
106
+ onError?: (error: H3Error, context: RpcHandlerContext | RouteHandlerContext<any>, event: H3Event) => void | Promise<void>;
107
+ }
108
+
9
109
  declare const ErrorResponse: _sinclair_typebox.TObject<{
10
110
  statusCode: _sinclair_typebox.TInteger;
11
111
  statusMessage: _sinclair_typebox.TString;
@@ -38,4 +138,4 @@ type ResolvedArriConfig = Required<ArriConfig>;
38
138
  declare const defaultConfig: Required<ArriConfig>;
39
139
  declare function defineConfig(config: ArriConfig): ResolvedArriConfig;
40
140
 
41
- export { type ArriConfig, ArriOptions, ErrorResponse, type ResolvedArriConfig, RouteHandlerContext, RpcHandlerContext, type StatusCode, defaultConfig, defineConfig, defineError, errorResponseFromValidationErrors, handleH3Error };
141
+ export { Arri, type ArriConfig, type ArriOptions, type ArriProcedure, type ArriProcedureBase, type ArriProcedureHandler, type ArriProcedurePostHandler, type ArriRoute, type ArriRouteHandler, type ArriRoutePostHandler, DEV_DEFINITION_ENDPOINT, DEV_ENDPOINT_ROOT, ErrorResponse, type ExtractParam, type ExtractParams, type HandlerContext, type Middleware, type ResolvedArriConfig, type RouteHandlerContext, type RoutePostHandlerContext, type RpcHandlerContext, type RpcPostHandlerContext, type StatusCode, createRpcDefinition, defaultConfig, defineConfig, defineError, defineMiddleware, defineRoute, defineRpc, errorResponseFromValidationErrors, getRpcParamDefinition, getRpcParamName, getRpcPath, getRpcResponseName, handleH3Error, isRpc, registerRoute, registerRpc };