@orpc/server 0.0.0-next.22ccd98 → 0.0.0-next.23aa4be

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.
Files changed (41) hide show
  1. package/dist/{chunk-B2EZJB7X.js → chunk-5IM453DN.js} +16 -18
  2. package/dist/chunk-WUOGVGWG.js +1 -0
  3. package/dist/{chunk-6A7XHEBH.js → chunk-ZBJYYEII.js} +70 -32
  4. package/dist/fetch.js +3 -20
  5. package/dist/hono.js +30 -0
  6. package/dist/index.js +135 -106
  7. package/dist/next.js +36 -0
  8. package/dist/node.js +66 -24
  9. package/dist/src/adapters/fetch/index.d.ts +0 -1
  10. package/dist/src/adapters/fetch/orpc-handler.d.ts +8 -8
  11. package/dist/src/adapters/fetch/orpc-payload-codec.d.ts +1 -1
  12. package/dist/src/adapters/fetch/types.d.ts +11 -6
  13. package/dist/src/adapters/hono/index.d.ts +3 -0
  14. package/dist/src/adapters/hono/middleware.d.ts +12 -0
  15. package/dist/src/adapters/next/index.d.ts +3 -0
  16. package/dist/src/adapters/next/serve.d.ts +19 -0
  17. package/dist/src/adapters/node/index.d.ts +1 -1
  18. package/dist/src/adapters/node/orpc-handler.d.ts +5 -5
  19. package/dist/src/adapters/node/request-listener.d.ts +28 -0
  20. package/dist/src/adapters/node/types.d.ts +10 -9
  21. package/dist/src/builder.d.ts +11 -10
  22. package/dist/src/error.d.ts +10 -0
  23. package/dist/src/implementer-chainable.d.ts +2 -2
  24. package/dist/src/index.d.ts +3 -2
  25. package/dist/src/lazy-decorated.d.ts +3 -6
  26. package/dist/src/middleware-decorated.d.ts +6 -5
  27. package/dist/src/middleware.d.ts +20 -8
  28. package/dist/src/procedure-builder.d.ts +17 -15
  29. package/dist/src/procedure-client.d.ts +8 -20
  30. package/dist/src/procedure-decorated.d.ts +22 -10
  31. package/dist/src/procedure-implementer.d.ts +13 -12
  32. package/dist/src/procedure-utils.d.ts +17 -0
  33. package/dist/src/procedure.d.ts +33 -13
  34. package/dist/src/router-builder.d.ts +4 -4
  35. package/dist/src/router-client.d.ts +7 -5
  36. package/dist/src/router-implementer.d.ts +2 -2
  37. package/dist/src/router.d.ts +4 -4
  38. package/dist/src/types.d.ts +2 -0
  39. package/package.json +18 -8
  40. package/dist/src/adapters/fetch/composite-handler.d.ts +0 -8
  41. package/dist/src/adapters/node/composite-handler.d.ts +0 -9
@@ -1,15 +1,17 @@
1
- import type { ContractProcedure, ContractRouter, SchemaInput, SchemaOutput } from '@orpc/contract';
1
+ import type { ContractProcedure, ContractRouter, ErrorFromErrorMap, SchemaInput, SchemaOutput } from '@orpc/contract';
2
2
  import type { Hooks, Value } from '@orpc/shared';
3
3
  import type { Lazy } from './lazy';
4
4
  import type { Procedure } from './procedure';
5
- import type { ProcedureClient } from './procedure-client';
5
+ import type { CreateProcedureClientRest, ProcedureClient } from './procedure-client';
6
6
  import type { Meta } from './types';
7
7
  import { type ANY_ROUTER, type Router } from './router';
8
- export type RouterClient<TRouter extends ANY_ROUTER | ContractRouter, TClientContext> = TRouter extends Lazy<infer U extends ANY_ROUTER | ContractRouter> ? RouterClient<U, TClientContext> : TRouter extends ContractProcedure<infer UInputSchema, infer UOutputSchema> | Procedure<any, any, infer UInputSchema, infer UOutputSchema, infer UFuncOutput> ? ProcedureClient<SchemaInput<UInputSchema>, SchemaOutput<UOutputSchema, UFuncOutput>, TClientContext> : {
8
+ /**
9
+ * FIXME: separate RouterClient and ContractRouterClient, don't mix them
10
+ */
11
+ export type RouterClient<TRouter extends ANY_ROUTER | ContractRouter, TClientContext> = TRouter extends Lazy<infer U extends ANY_ROUTER | ContractRouter> ? RouterClient<U, TClientContext> : TRouter extends ContractProcedure<infer UInputSchema, infer UOutputSchema, infer UErrorMap> | Procedure<any, any, infer UInputSchema, infer UOutputSchema, infer UFuncOutput, infer UErrorMap> ? ProcedureClient<TClientContext, SchemaInput<UInputSchema>, SchemaOutput<UOutputSchema, UFuncOutput>, ErrorFromErrorMap<UErrorMap>> : {
9
12
  [K in keyof TRouter]: TRouter[K] extends ANY_ROUTER | ContractRouter ? RouterClient<TRouter[K], TClientContext> : never;
10
13
  };
11
14
  export type CreateRouterClientOptions<TRouter extends ANY_ROUTER> = {
12
- router: TRouter | Lazy<undefined>;
13
15
  /**
14
16
  * This is helpful for logging and analytics.
15
17
  *
@@ -21,5 +23,5 @@ export type CreateRouterClientOptions<TRouter extends ANY_ROUTER> = {
21
23
  } : {
22
24
  context: Value<UContext>;
23
25
  } : never) & Hooks<unknown, unknown, TRouter extends Router<infer UContext, any> ? UContext : never, Meta>;
24
- export declare function createRouterClient<TRouter extends ANY_ROUTER>(options: CreateRouterClientOptions<TRouter>): RouterClient<TRouter, unknown>;
26
+ export declare function createRouterClient<TRouter extends ANY_ROUTER, TClientContext>(router: TRouter | Lazy<undefined>, ...rest: CreateProcedureClientRest<TRouter extends Router<infer UContext, any> ? UContext : never, undefined, unknown, TClientContext>): RouterClient<TRouter, TClientContext>;
25
27
  //# sourceMappingURL=router-client.d.ts.map
@@ -5,14 +5,14 @@ import type { Router } from './router';
5
5
  import type { AdaptedRouter } from './router-builder';
6
6
  import type { Context, MergeContext } from './types';
7
7
  export interface RouterImplementerDef<TContext extends Context, TExtraContext extends Context, TContract extends ContractRouter> {
8
- middlewares?: Middleware<MergeContext<TContext, TExtraContext>, Partial<TExtraContext> | undefined, unknown, any>[];
8
+ middlewares?: Middleware<MergeContext<TContext, TExtraContext>, Partial<TExtraContext> | undefined, unknown, any, Record<string, unknown>>[];
9
9
  contract: TContract;
10
10
  }
11
11
  export declare class RouterImplementer<TContext extends Context, TExtraContext extends Context, TContract extends ContractRouter> {
12
12
  '~type': "RouterImplementer";
13
13
  '~orpc': RouterImplementerDef<TContext, TExtraContext, TContract>;
14
14
  constructor(def: RouterImplementerDef<TContext, TExtraContext, TContract>);
15
- use<U extends Context & Partial<MergeContext<TContext, TExtraContext>> | undefined = undefined>(middleware: Middleware<MergeContext<TContext, TExtraContext>, U, unknown, unknown>): RouterImplementer<TContext, MergeContext<TExtraContext, U>, TContract>;
15
+ use<U extends Context & Partial<MergeContext<TContext, TExtraContext>> | undefined = undefined>(middleware: Middleware<MergeContext<TContext, TExtraContext>, U, unknown, unknown, Record<string, unknown>>): RouterImplementer<TContext, MergeContext<TExtraContext, U>, TContract>;
16
16
  router<U extends Router<MergeContext<TContext, TExtraContext>, TContract>>(router: U): AdaptedRouter<TContext, U>;
17
17
  lazy<U extends Router<MergeContext<TContext, TExtraContext>, TContract>>(loader: () => Promise<{
18
18
  default: U;
@@ -2,15 +2,15 @@ import type { ContractProcedure, ContractRouter, SchemaInput, SchemaOutput } fro
2
2
  import type { ANY_LAZY, Lazy, Lazyable } from './lazy';
3
3
  import type { ANY_PROCEDURE, Procedure } from './procedure';
4
4
  import type { Context } from './types';
5
- export type Router<TContext extends Context, TContract extends ContractRouter> = Lazyable<TContract extends ContractProcedure<infer UInputSchema, infer UOutputSchema> ? Procedure<TContext, any, UInputSchema, UOutputSchema, any> : {
5
+ export type Router<TContext extends Context, TContract extends ContractRouter> = Lazyable<TContract extends ContractProcedure<infer UInputSchema, infer UOutputSchema, infer UErrorMap> ? Procedure<TContext, any, UInputSchema, UOutputSchema, any, UErrorMap> : {
6
6
  [K in keyof TContract]: TContract[K] extends ContractRouter ? Router<TContext, TContract[K]> : never;
7
7
  }>;
8
8
  export type ANY_ROUTER = Router<any, any>;
9
- export type InferRouterInputs<T extends ANY_ROUTER> = T extends Lazy<infer U extends ANY_ROUTER> ? InferRouterInputs<U> : T extends Procedure<any, any, infer UInputSchema, any, any> ? SchemaInput<UInputSchema> : {
9
+ export type InferRouterInputs<T extends ANY_ROUTER> = T extends Lazy<infer U extends ANY_ROUTER> ? InferRouterInputs<U> : T extends Procedure<any, any, infer UInputSchema, any, any, any> ? SchemaInput<UInputSchema> : {
10
10
  [K in keyof T]: T[K] extends ANY_ROUTER ? InferRouterInputs<T[K]> : never;
11
11
  };
12
- export type InferRouterOutputs<T extends ANY_ROUTER> = T extends Lazy<infer U extends ANY_ROUTER> ? InferRouterOutputs<U> : T extends Procedure<any, any, any, infer UOutputSchema, infer UFuncOutput> ? SchemaOutput<UOutputSchema, UFuncOutput> : {
12
+ export type InferRouterOutputs<T extends ANY_ROUTER> = T extends Lazy<infer U extends ANY_ROUTER> ? InferRouterOutputs<U> : T extends Procedure<any, any, any, infer UOutputSchema, infer UFuncOutput, any> ? SchemaOutput<UOutputSchema, UFuncOutput> : {
13
13
  [K in keyof T]: T[K] extends ANY_ROUTER ? InferRouterOutputs<T[K]> : never;
14
14
  };
15
- export declare function getRouterChild<T extends ANY_ROUTER | Lazy<undefined>>(router: T, ...path: string[]): T extends ANY_LAZY ? Lazy<ANY_PROCEDURE | Record<string, ANY_ROUTER> | undefined> : ANY_ROUTER | Lazy<undefined> | undefined;
15
+ export declare function getRouterChild<T extends ANY_ROUTER | Lazy<undefined>>(router: T, ...path: string[]): T extends ANY_LAZY ? Lazy<ANY_PROCEDURE> | Lazy<Record<string, ANY_ROUTER>> | Lazy<undefined> : ANY_ROUTER | Lazy<undefined> | undefined;
16
16
  //# sourceMappingURL=router.d.ts.map
@@ -1,7 +1,9 @@
1
+ import type { FindGlobalInstanceType } from '@orpc/shared';
1
2
  import type { ANY_PROCEDURE } from './procedure';
2
3
  export type Context = Record<string, any> | undefined;
3
4
  export type WELL_CONTEXT = Record<string, unknown> | undefined;
4
5
  export type MergeContext<TA extends Context, TB extends Context> = TA extends undefined ? TB : TB extends undefined ? TA : TA & TB;
6
+ export type AbortSignal = FindGlobalInstanceType<'AbortSignal'>;
5
7
  export interface WithSignal {
6
8
  signal?: AbortSignal;
7
9
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@orpc/server",
3
3
  "type": "module",
4
- "version": "0.0.0-next.22ccd98",
4
+ "version": "0.0.0-next.23aa4be",
5
5
  "license": "MIT",
6
6
  "homepage": "https://orpc.unnoq.com",
7
7
  "repository": {
@@ -24,6 +24,16 @@
24
24
  "import": "./dist/fetch.js",
25
25
  "default": "./dist/fetch.js"
26
26
  },
27
+ "./hono": {
28
+ "types": "./dist/src/adapters/hono/index.d.ts",
29
+ "import": "./dist/hono.js",
30
+ "default": "./dist/hono.js"
31
+ },
32
+ "./next": {
33
+ "types": "./dist/src/adapters/next/index.d.ts",
34
+ "import": "./dist/next.js",
35
+ "default": "./dist/next.js"
36
+ },
27
37
  "./node": {
28
38
  "types": "./dist/src/adapters/node/index.d.ts",
29
39
  "import": "./dist/node.js",
@@ -38,16 +48,16 @@
38
48
  "!**/*.tsbuildinfo",
39
49
  "dist"
40
50
  ],
41
- "dependencies": {
42
- "@mjackson/node-fetch-server": "^0.5.0",
43
- "@orpc/contract": "0.0.0-next.22ccd98",
44
- "@orpc/shared": "0.0.0-next.22ccd98"
51
+ "peerDependencies": {
52
+ "hono": ">=4.6.0",
53
+ "next": ">=14.0.0"
45
54
  },
46
- "devDependencies": {
47
- "zod": "^3.24.1"
55
+ "dependencies": {
56
+ "@orpc/contract": "0.0.0-next.23aa4be",
57
+ "@orpc/shared": "0.0.0-next.23aa4be"
48
58
  },
49
59
  "scripts": {
50
- "build": "tsup --clean --sourcemap --entry.index=src/index.ts --entry.fetch=src/adapters/fetch/index.ts --entry.node=src/adapters/node/index.ts --format=esm --onSuccess='tsc -b --noCheck'",
60
+ "build": "tsup --onSuccess='tsc -b --noCheck'",
51
61
  "build:watch": "pnpm run build --watch",
52
62
  "type:check": "tsc -b"
53
63
  }
@@ -1,8 +0,0 @@
1
- import type { Context } from '../../types';
2
- import type { ConditionalFetchHandler, FetchHandler, FetchOptions } from './types';
3
- export declare class CompositeHandler<T extends Context> implements FetchHandler<T> {
4
- private readonly handlers;
5
- constructor(handlers: ConditionalFetchHandler<T>[]);
6
- fetch(request: Request, ...opt: [options: FetchOptions<T>] | (undefined extends T ? [] : never)): Promise<Response>;
7
- }
8
- //# sourceMappingURL=composite-handler.d.ts.map
@@ -1,9 +0,0 @@
1
- import type { IncomingMessage, ServerResponse } from 'node:http';
2
- import type { Context } from '../../types';
3
- import type { ConditionalRequestHandler, RequestHandler, RequestOptions } from './types';
4
- export declare class CompositeHandler<T extends Context> implements RequestHandler<T> {
5
- private readonly handlers;
6
- constructor(handlers: ConditionalRequestHandler<T>[]);
7
- handle(req: IncomingMessage, res: ServerResponse, ...opt: [options: RequestOptions<T>] | (undefined extends T ? [] : never)): Promise<void>;
8
- }
9
- //# sourceMappingURL=composite-handler.d.ts.map