@orpc/server 0.0.0

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 (63) hide show
  1. package/dist/chunk-ACLC6USM.js +262 -0
  2. package/dist/chunk-ACLC6USM.js.map +1 -0
  3. package/dist/fetch.js +648 -0
  4. package/dist/fetch.js.map +1 -0
  5. package/dist/index.js +403 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/src/adapters/fetch.d.ts +36 -0
  8. package/dist/src/adapters/fetch.d.ts.map +1 -0
  9. package/dist/src/builder.d.ts +49 -0
  10. package/dist/src/builder.d.ts.map +1 -0
  11. package/dist/src/index.d.ts +15 -0
  12. package/dist/src/index.d.ts.map +1 -0
  13. package/dist/src/middleware.d.ts +16 -0
  14. package/dist/src/middleware.d.ts.map +1 -0
  15. package/dist/src/procedure-builder.d.ts +31 -0
  16. package/dist/src/procedure-builder.d.ts.map +1 -0
  17. package/dist/src/procedure-caller.d.ts +33 -0
  18. package/dist/src/procedure-caller.d.ts.map +1 -0
  19. package/dist/src/procedure-implementer.d.ts +19 -0
  20. package/dist/src/procedure-implementer.d.ts.map +1 -0
  21. package/dist/src/procedure.d.ts +29 -0
  22. package/dist/src/procedure.d.ts.map +1 -0
  23. package/dist/src/router-builder.d.ts +22 -0
  24. package/dist/src/router-builder.d.ts.map +1 -0
  25. package/dist/src/router-caller.d.ts +36 -0
  26. package/dist/src/router-caller.d.ts.map +1 -0
  27. package/dist/src/router-implementer.d.ts +20 -0
  28. package/dist/src/router-implementer.d.ts.map +1 -0
  29. package/dist/src/router.d.ts +14 -0
  30. package/dist/src/router.d.ts.map +1 -0
  31. package/dist/src/types.d.ts +18 -0
  32. package/dist/src/types.d.ts.map +1 -0
  33. package/dist/src/utils.d.ts +4 -0
  34. package/dist/src/utils.d.ts.map +1 -0
  35. package/dist/tsconfig.tsbuildinfo +1 -0
  36. package/package.json +57 -0
  37. package/src/adapters/fetch.test.ts +399 -0
  38. package/src/adapters/fetch.ts +228 -0
  39. package/src/builder.test.ts +362 -0
  40. package/src/builder.ts +236 -0
  41. package/src/index.ts +16 -0
  42. package/src/middleware.test.ts +279 -0
  43. package/src/middleware.ts +119 -0
  44. package/src/procedure-builder.test.ts +219 -0
  45. package/src/procedure-builder.ts +158 -0
  46. package/src/procedure-caller.test.ts +210 -0
  47. package/src/procedure-caller.ts +165 -0
  48. package/src/procedure-implementer.test.ts +215 -0
  49. package/src/procedure-implementer.ts +103 -0
  50. package/src/procedure.test.ts +312 -0
  51. package/src/procedure.ts +251 -0
  52. package/src/router-builder.test.ts +106 -0
  53. package/src/router-builder.ts +120 -0
  54. package/src/router-caller.test.ts +173 -0
  55. package/src/router-caller.ts +95 -0
  56. package/src/router-implementer.test.ts +116 -0
  57. package/src/router-implementer.ts +110 -0
  58. package/src/router.test.ts +142 -0
  59. package/src/router.ts +69 -0
  60. package/src/types.test.ts +18 -0
  61. package/src/types.ts +28 -0
  62. package/src/utils.test.ts +243 -0
  63. package/src/utils.ts +95 -0
@@ -0,0 +1,49 @@
1
+ import { ContractProcedure, type ContractRouter, type HTTPPath, type RouteOptions, type Schema, type SchemaInput, type SchemaOutput } from '@orpc/contract';
2
+ import type { IsEqual } from '@orpc/shared';
3
+ import { type DecoratedMiddleware, type MapInputMiddleware, type Middleware } from './middleware';
4
+ import { type DecoratedProcedure, type ProcedureHandler } from './procedure';
5
+ import { ProcedureBuilder } from './procedure-builder';
6
+ import { ProcedureImplementer } from './procedure-implementer';
7
+ import type { HandledRouter, Router } from './router';
8
+ import { RouterBuilder } from './router-builder';
9
+ import { type ChainedRouterImplementer } from './router-implementer';
10
+ import type { Context, MergeContext } from './types';
11
+ export declare class Builder<TContext extends Context, TExtraContext extends Context> {
12
+ zz$b: {
13
+ middlewares?: Middleware<any, any, any, any>[];
14
+ };
15
+ constructor(zz$b?: {
16
+ middlewares?: Middleware<any, any, any, any>[];
17
+ });
18
+ /**
19
+ * Self chainable
20
+ */
21
+ context<UContext extends Context>(): IsEqual<UContext, Context> extends true ? Builder<TContext, TExtraContext> : Builder<UContext, TExtraContext>;
22
+ use<UExtraContext extends Partial<MergeContext<Context, MergeContext<TContext, TExtraContext>>> | undefined = undefined>(middleware: Middleware<MergeContext<TContext, TExtraContext>, UExtraContext, unknown, unknown>): Builder<TContext, MergeContext<TExtraContext, UExtraContext>>;
23
+ use<UExtraContext extends Partial<MergeContext<Context, MergeContext<TContext, TExtraContext>>> | undefined = undefined, UMappedInput = unknown>(middleware: Middleware<MergeContext<TContext, TExtraContext>, UExtraContext, UMappedInput, unknown>, mapInput: MapInputMiddleware<unknown, UMappedInput>): Builder<TContext, MergeContext<TExtraContext, UExtraContext>>;
24
+ /**
25
+ * Convert to ContractProcedureBuilder
26
+ */
27
+ route(opts: RouteOptions): ProcedureBuilder<TContext, TExtraContext, undefined, undefined>;
28
+ input<USchema extends Schema = undefined>(schema: USchema, example?: SchemaInput<USchema>): ProcedureBuilder<TContext, TExtraContext, USchema, undefined>;
29
+ output<USchema extends Schema = undefined>(schema: USchema, example?: SchemaOutput<USchema>): ProcedureBuilder<TContext, TExtraContext, undefined, USchema>;
30
+ /**
31
+ * Convert to Procedure
32
+ */
33
+ handler<UHandlerOutput = undefined>(handler: ProcedureHandler<TContext, TExtraContext, undefined, undefined, UHandlerOutput>): DecoratedProcedure<TContext, TExtraContext, undefined, undefined, UHandlerOutput>;
34
+ /**
35
+ * Convert to ProcedureImplementer | RouterBuilder
36
+ */
37
+ contract<UContract extends ContractProcedure<any, any> | ContractRouter>(contract: UContract): UContract extends ContractProcedure<infer UInputSchema, infer UOutputSchema> ? ProcedureImplementer<TContext, TExtraContext, UInputSchema, UOutputSchema> : UContract extends ContractRouter ? ChainedRouterImplementer<TContext, UContract, TExtraContext> : never;
38
+ /**
39
+ * Create ExtendedMiddleware
40
+ */
41
+ middleware<UExtraContext extends Context = undefined, TInput = unknown>(middleware: Middleware<MergeContext<TContext, TExtraContext>, UExtraContext, TInput, unknown>): DecoratedMiddleware<MergeContext<TContext, TExtraContext>, UExtraContext, TInput, unknown>;
42
+ prefix(prefix: HTTPPath): RouterBuilder<TContext, TExtraContext>;
43
+ tags(...tags: string[]): RouterBuilder<TContext, TExtraContext>;
44
+ /**
45
+ * Create DecoratedRouter
46
+ */
47
+ router<URouter extends Router<TContext>>(router: URouter): HandledRouter<URouter>;
48
+ }
49
+ //# sourceMappingURL=builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { Builder } from './builder';
2
+ export * from './builder';
3
+ export * from '@orpc/shared/error';
4
+ export * from './middleware';
5
+ export * from './procedure';
6
+ export * from './procedure-caller';
7
+ export * from './procedure-builder';
8
+ export * from './procedure-implementer';
9
+ export * from './router';
10
+ export * from './router-caller';
11
+ export * from './router-implementer';
12
+ export * from './types';
13
+ export * from './utils';
14
+ export declare const os: Builder<Record<string, unknown> | undefined, undefined>;
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AAEvB,eAAO,MAAM,EAAE,yDAAgE,CAAA"}
@@ -0,0 +1,16 @@
1
+ import type { Context, MergeContext, Meta, Promisable } from './types';
2
+ export interface Middleware<TContext extends Context, TExtraContext extends Context, TInput, TOutput> {
3
+ (input: TInput, context: TContext, meta: Meta<TOutput>): Promisable<TExtraContext extends undefined ? void : {
4
+ context: TExtraContext;
5
+ }>;
6
+ }
7
+ export interface MapInputMiddleware<TInput, TMappedInput> {
8
+ (input: TInput): TMappedInput;
9
+ }
10
+ export interface DecoratedMiddleware<TContext extends Context, TExtraContext extends Context, TInput, TOutput> extends Middleware<TContext, TExtraContext, TInput, TOutput> {
11
+ concat<UExtraContext extends Context = undefined, UInput = TInput>(middleware: Middleware<MergeContext<TContext, TExtraContext>, UExtraContext, UInput & TInput, TOutput>): DecoratedMiddleware<TContext, MergeContext<TExtraContext, UExtraContext>, TInput & UInput, TOutput>;
12
+ concat<UExtraContext extends Context = undefined, UInput = TInput, UMappedInput = unknown>(middleware: Middleware<MergeContext<TContext, TExtraContext>, UExtraContext, UMappedInput, TOutput>, mapInput: MapInputMiddleware<UInput, UMappedInput>): DecoratedMiddleware<TContext, MergeContext<TExtraContext, UExtraContext>, TInput & UInput, TOutput>;
13
+ mapInput<UInput = unknown>(map: MapInputMiddleware<UInput, TInput>): DecoratedMiddleware<TContext, TExtraContext, UInput, TOutput>;
14
+ }
15
+ export declare function decorateMiddleware<TContext extends Context, TExtraContext extends Context, TInput, TOutput>(middleware: Middleware<TContext, TExtraContext, TInput, TOutput>): DecoratedMiddleware<TContext, TExtraContext, TInput, TOutput>;
16
+ //# sourceMappingURL=middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAGtE,MAAM,WAAW,UAAU,CACzB,QAAQ,SAAS,OAAO,EACxB,aAAa,SAAS,OAAO,EAC7B,MAAM,EACN,OAAO;IAEP,CACE,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAClB,UAAU,CACX,aAAa,SAAS,SAAS,GAAG,IAAI,GAAG;QAAE,OAAO,EAAE,aAAa,CAAA;KAAE,CACpE,CAAA;CACF;AAED,MAAM,WAAW,kBAAkB,CAAC,MAAM,EAAE,YAAY;IACtD,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAAA;CAC9B;AAED,MAAM,WAAW,mBAAmB,CAClC,QAAQ,SAAS,OAAO,EACxB,aAAa,SAAS,OAAO,EAC7B,MAAM,EACN,OAAO,CACP,SAAQ,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC;IAC5D,MAAM,CAAC,aAAa,SAAS,OAAO,GAAG,SAAS,EAAE,MAAM,GAAG,MAAM,EAC/D,UAAU,EAAE,UAAU,CACpB,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,EACrC,aAAa,EACb,MAAM,GAAG,MAAM,EACf,OAAO,CACR,GACA,mBAAmB,CACpB,QAAQ,EACR,YAAY,CAAC,aAAa,EAAE,aAAa,CAAC,EAC1C,MAAM,GAAG,MAAM,EACf,OAAO,CACR,CAAA;IAED,MAAM,CACJ,aAAa,SAAS,OAAO,GAAG,SAAS,EACzC,MAAM,GAAG,MAAM,EACf,YAAY,GAAG,OAAO,EAEtB,UAAU,EAAE,UAAU,CACpB,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,EACrC,aAAa,EACb,YAAY,EACZ,OAAO,CACR,EACD,QAAQ,EAAE,kBAAkB,CAAC,MAAM,EAAE,YAAY,CAAC,GACjD,mBAAmB,CACpB,QAAQ,EACR,YAAY,CAAC,aAAa,EAAE,aAAa,CAAC,EAC1C,MAAM,GAAG,MAAM,EACf,OAAO,CACR,CAAA;IAED,QAAQ,CAAC,MAAM,GAAG,OAAO,EACvB,GAAG,EAAE,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,GACtC,mBAAmB,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;CACjE;AAID,wBAAgB,kBAAkB,CAChC,QAAQ,SAAS,OAAO,EACxB,aAAa,SAAS,OAAO,EAC7B,MAAM,EACN,OAAO,EAEP,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,GAC/D,mBAAmB,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,CA2C/D"}
@@ -0,0 +1,31 @@
1
+ import { type ContractProcedure, type RouteOptions, type Schema, type SchemaInput, type SchemaOutput } from '@orpc/contract';
2
+ import type { MapInputMiddleware, Middleware } from './middleware';
3
+ import { type DecoratedProcedure, type ProcedureHandler } from './procedure';
4
+ import { ProcedureImplementer } from './procedure-implementer';
5
+ import type { Context, MergeContext } from './types';
6
+ export declare class ProcedureBuilder<TContext extends Context, TExtraContext extends Context, TInputSchema extends Schema, TOutputSchema extends Schema> {
7
+ zz$pb: {
8
+ contract: ContractProcedure<TInputSchema, TOutputSchema>;
9
+ middlewares?: Middleware<any, any, any, any>[];
10
+ };
11
+ constructor(zz$pb: {
12
+ contract: ContractProcedure<TInputSchema, TOutputSchema>;
13
+ middlewares?: Middleware<any, any, any, any>[];
14
+ });
15
+ /**
16
+ * Self chainable
17
+ */
18
+ route(opts: RouteOptions): ProcedureBuilder<TContext, TExtraContext, TInputSchema, TOutputSchema>;
19
+ input<USchema extends Schema = undefined>(schema: USchema, example?: SchemaInput<USchema>): ProcedureBuilder<TContext, TExtraContext, USchema, TOutputSchema>;
20
+ output<USchema extends Schema = undefined>(schema: USchema, example?: SchemaOutput<USchema>): ProcedureBuilder<TContext, TExtraContext, TInputSchema, USchema>;
21
+ /**
22
+ * Convert to ProcedureBuilder
23
+ */
24
+ use<UExtraContext extends Partial<MergeContext<Context, MergeContext<TContext, TExtraContext>>> | undefined = undefined>(middleware: Middleware<MergeContext<TContext, TExtraContext>, UExtraContext, SchemaOutput<TInputSchema>, SchemaOutput<TOutputSchema>>): ProcedureImplementer<TContext, MergeContext<TExtraContext, UExtraContext>, TInputSchema, TOutputSchema>;
25
+ use<UExtraContext extends Partial<MergeContext<Context, MergeContext<TContext, TExtraContext>>> | undefined = undefined, UMappedInput = unknown>(middleware: Middleware<MergeContext<TContext, TExtraContext>, UExtraContext, UMappedInput, SchemaOutput<TOutputSchema>>, mapInput: MapInputMiddleware<SchemaOutput<TInputSchema>, UMappedInput>): ProcedureImplementer<TContext, MergeContext<TExtraContext, UExtraContext>, TInputSchema, TOutputSchema>;
26
+ /**
27
+ * Convert to Procedure
28
+ */
29
+ handler<UHandlerOutput extends SchemaOutput<TOutputSchema>>(handler: ProcedureHandler<TContext, TExtraContext, TInputSchema, TOutputSchema, UHandlerOutput>): DecoratedProcedure<TContext, TExtraContext, TInputSchema, TOutputSchema, UHandlerOutput>;
30
+ }
31
+ //# sourceMappingURL=procedure-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"procedure-builder.d.ts","sourceRoot":"","sources":["../../src/procedure-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { SchemaInput, SchemaOutput } from '@orpc/contract';
2
+ import type { Procedure } from './procedure';
3
+ import type { Meta, Promisable } from './types';
4
+ export interface CreateProcedureCallerOptions<TProcedure extends Procedure<any, any, any, any, any>, TValidate extends boolean> {
5
+ procedure: TProcedure;
6
+ /**
7
+ * The context used when calling the procedure.
8
+ */
9
+ context: TProcedure extends Procedure<infer UContext, any, any, any, any> ? UContext : never;
10
+ /**
11
+ * Helpful hooks to do some logics on specific time.
12
+ */
13
+ hooks?: (context: TProcedure extends Procedure<infer UContext, any, any, any, any> ? UContext : never, meta: Meta<unknown>) => Promisable<void>;
14
+ /**
15
+ * This is helpful for logging and analytics.
16
+ */
17
+ path?: string[];
18
+ /**
19
+ * This flag helpful when you want bypass some logics not necessary to internal server calls.
20
+ *
21
+ * @default true
22
+ */
23
+ internal?: boolean;
24
+ /**
25
+ * Indicate whether validate input and output.
26
+ *
27
+ * @default true
28
+ */
29
+ validate?: TValidate;
30
+ }
31
+ export type ProcedureCaller<TProcedure extends Procedure<any, any, any, any, any>, TValidate extends boolean> = TProcedure extends Procedure<any, any, infer UInputSchema, infer UOutputSchema, infer UHandlerOutput> ? (input: TValidate extends true ? SchemaInput<UInputSchema> : SchemaOutput<UInputSchema>) => Promise<TValidate extends true ? SchemaOutput<UOutputSchema, UHandlerOutput> : SchemaInput<UOutputSchema, UHandlerOutput>> : never;
32
+ export declare function createProcedureCaller<TProcedure extends Procedure<any, any, any, any, any>, TValidate extends boolean = true>(options: CreateProcedureCallerOptions<TProcedure, TValidate>): ProcedureCaller<TProcedure, TValidate>;
33
+ //# sourceMappingURL=procedure-caller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"procedure-caller.d.ts","sourceRoot":"","sources":["../../src/procedure-caller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAG/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAkB,IAAI,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAG/D,MAAM,WAAW,4BAA4B,CAC3C,UAAU,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACrD,SAAS,SAAS,OAAO;IAEzB,SAAS,EAAE,UAAU,CAAA;IAErB;;OAEG;IACH,OAAO,EAAE,UAAU,SAAS,SAAS,CAAC,MAAM,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GACrE,QAAQ,GACR,KAAK,CAAA;IAET;;OAEG;IACH,KAAK,CAAC,EAAE,CACN,OAAO,EAAE,UAAU,SAAS,SAAS,CAAC,MAAM,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GACrE,QAAQ,GACR,KAAK,EACT,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,KAChB,UAAU,CAAC,IAAI,CAAC,CAAA;IAErB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IAEf;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAED,MAAM,MAAM,eAAe,CACzB,UAAU,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACrD,SAAS,SAAS,OAAO,IACvB,UAAU,SAAS,SAAS,CAC9B,GAAG,EACH,GAAG,EACH,MAAM,YAAY,EAClB,MAAM,aAAa,EACnB,MAAM,cAAc,CACrB,GACG,CACE,KAAK,EAAE,SAAS,SAAS,IAAI,GACzB,WAAW,CAAC,YAAY,CAAC,GACzB,YAAY,CAAC,YAAY,CAAC,KAC3B,OAAO,CACV,SAAS,SAAS,IAAI,GAClB,YAAY,CAAC,aAAa,EAAE,cAAc,CAAC,GAC3C,WAAW,CAAC,aAAa,EAAE,cAAc,CAAC,CAC/C,GACD,KAAK,CAAA;AAET,wBAAgB,qBAAqB,CACnC,UAAU,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACrD,SAAS,SAAS,OAAO,GAAG,IAAI,EAEhC,OAAO,EAAE,4BAA4B,CAAC,UAAU,EAAE,SAAS,CAAC,GAC3D,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAwFxC"}
@@ -0,0 +1,19 @@
1
+ import type { ContractProcedure, SchemaOutput } from '@orpc/contract';
2
+ import type { Schema } from '@orpc/contract';
3
+ import { type MapInputMiddleware, type Middleware } from './middleware';
4
+ import { type DecoratedProcedure, type ProcedureHandler } from './procedure';
5
+ import type { Context, MergeContext } from './types';
6
+ export declare class ProcedureImplementer<TContext extends Context, TExtraContext extends Context, TInputSchema extends Schema, TOutputSchema extends Schema> {
7
+ zz$pi: {
8
+ contract: ContractProcedure<TInputSchema, TOutputSchema>;
9
+ middlewares?: Middleware<any, any, any, any>[];
10
+ };
11
+ constructor(zz$pi: {
12
+ contract: ContractProcedure<TInputSchema, TOutputSchema>;
13
+ middlewares?: Middleware<any, any, any, any>[];
14
+ });
15
+ use<UExtraContext extends Partial<MergeContext<Context, MergeContext<TContext, TExtraContext>>> | undefined = undefined>(middleware: Middleware<MergeContext<TContext, TExtraContext>, UExtraContext, SchemaOutput<TInputSchema>, SchemaOutput<TOutputSchema>>): ProcedureImplementer<TContext, MergeContext<TExtraContext, UExtraContext>, TInputSchema, TOutputSchema>;
16
+ use<UExtraContext extends Partial<MergeContext<Context, MergeContext<TContext, TExtraContext>>> | undefined = undefined, UMappedInput = unknown>(middleware: Middleware<MergeContext<TContext, TExtraContext>, UExtraContext, UMappedInput, SchemaOutput<TOutputSchema>>, mapInput: MapInputMiddleware<SchemaOutput<TInputSchema>, UMappedInput>): ProcedureImplementer<TContext, MergeContext<TExtraContext, UExtraContext>, TInputSchema, TOutputSchema>;
17
+ handler<UHandlerOutput extends SchemaOutput<TOutputSchema>>(handler: ProcedureHandler<TContext, TExtraContext, TInputSchema, TOutputSchema, UHandlerOutput>): DecoratedProcedure<TContext, TExtraContext, TInputSchema, TOutputSchema, UHandlerOutput>;
18
+ }
19
+ //# sourceMappingURL=procedure-implementer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"procedure-implementer.d.ts","sourceRoot":"","sources":["../../src/procedure-implementer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAEhB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EAEtB,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEpD,qBAAa,oBAAoB,CAC/B,QAAQ,SAAS,OAAO,EACxB,aAAa,SAAS,OAAO,EAC7B,YAAY,SAAS,MAAM,EAC3B,aAAa,SAAS,MAAM;IAGnB,KAAK,EAAE;QACZ,QAAQ,EAAE,iBAAiB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAA;QACxD,WAAW,CAAC,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAA;KAC/C;gBAHM,KAAK,EAAE;QACZ,QAAQ,EAAE,iBAAiB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAA;QACxD,WAAW,CAAC,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAA;KAC/C;IAGH,GAAG,CACD,aAAa,SACT,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GACrE,SAAS,GAAG,SAAS,EAEzB,UAAU,EAAE,UAAU,CACpB,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,EACrC,aAAa,EACb,YAAY,CAAC,YAAY,CAAC,EAC1B,YAAY,CAAC,aAAa,CAAC,CAC5B,GACA,oBAAoB,CACrB,QAAQ,EACR,YAAY,CAAC,aAAa,EAAE,aAAa,CAAC,EAC1C,YAAY,EACZ,aAAa,CACd;IAED,GAAG,CACD,aAAa,SACT,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GACrE,SAAS,GAAG,SAAS,EACzB,YAAY,GAAG,OAAO,EAEtB,UAAU,EAAE,UAAU,CACpB,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,EACrC,aAAa,EACb,YAAY,EACZ,YAAY,CAAC,aAAa,CAAC,CAC5B,EACD,QAAQ,EAAE,kBAAkB,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,GACrE,oBAAoB,CACrB,QAAQ,EACR,YAAY,CAAC,aAAa,EAAE,aAAa,CAAC,EAC1C,YAAY,EACZ,aAAa,CACd;IAgBD,OAAO,CAAC,cAAc,SAAS,YAAY,CAAC,aAAa,CAAC,EACxD,OAAO,EAAE,gBAAgB,CACvB,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,aAAa,EACb,cAAc,CACf,GACA,kBAAkB,CACnB,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,aAAa,EACb,cAAc,CACf;CASF"}
@@ -0,0 +1,29 @@
1
+ import { type ContractProcedure, type HTTPPath, type SchemaInput, type SchemaOutput } from '@orpc/contract';
2
+ import type { RouteOptions, Schema } from '@orpc/contract';
3
+ import { type MapInputMiddleware, type Middleware } from './middleware';
4
+ import type { Context, MergeContext, Meta, Promisable } from './types';
5
+ export declare class Procedure<TContext extends Context, TExtraContext extends Context, TInputSchema extends Schema, TOutputSchema extends Schema, THandlerOutput extends SchemaOutput<TOutputSchema>> {
6
+ zz$p: {
7
+ middlewares?: Middleware<any, any, any, any>[];
8
+ contract: ContractProcedure<TInputSchema, TOutputSchema>;
9
+ handler: ProcedureHandler<TContext, TExtraContext, TInputSchema, TOutputSchema, THandlerOutput>;
10
+ };
11
+ constructor(zz$p: {
12
+ middlewares?: Middleware<any, any, any, any>[];
13
+ contract: ContractProcedure<TInputSchema, TOutputSchema>;
14
+ handler: ProcedureHandler<TContext, TExtraContext, TInputSchema, TOutputSchema, THandlerOutput>;
15
+ });
16
+ }
17
+ export type DecoratedProcedure<TContext extends Context, TExtraContext extends Context, TInputSchema extends Schema, TOutputSchema extends Schema, THandlerOutput extends SchemaOutput<TOutputSchema>> = Procedure<TContext, TExtraContext, TInputSchema, TOutputSchema, THandlerOutput> & {
18
+ prefix(prefix: HTTPPath): DecoratedProcedure<TContext, TExtraContext, TInputSchema, TOutputSchema, THandlerOutput>;
19
+ route(opts: RouteOptions): DecoratedProcedure<TContext, TExtraContext, TInputSchema, TOutputSchema, THandlerOutput>;
20
+ use<UExtraContext extends Partial<MergeContext<Context, MergeContext<TContext, TExtraContext>>> | undefined = undefined>(middleware: Middleware<MergeContext<TContext, TExtraContext>, UExtraContext, SchemaOutput<TInputSchema>, SchemaOutput<TOutputSchema, THandlerOutput>>): DecoratedProcedure<TContext, MergeContext<TExtraContext, UExtraContext>, TInputSchema, TOutputSchema, THandlerOutput>;
21
+ use<UExtraContext extends Partial<MergeContext<Context, MergeContext<TContext, TExtraContext>>> | undefined = undefined, UMappedInput = unknown>(middleware: Middleware<MergeContext<TContext, TExtraContext>, UExtraContext, UMappedInput, SchemaOutput<TOutputSchema, THandlerOutput>>, mapInput: MapInputMiddleware<SchemaOutput<TInputSchema, THandlerOutput>, UMappedInput>): DecoratedProcedure<TContext, MergeContext<TExtraContext, UExtraContext>, TInputSchema, TOutputSchema, THandlerOutput>;
22
+ } & (undefined extends TContext ? (input: SchemaInput<TInputSchema> | FormData) => Promise<SchemaOutput<TOutputSchema, THandlerOutput>> : {});
23
+ export interface ProcedureHandler<TContext extends Context, TExtraContext extends Context, TInputSchema extends Schema, TOutputSchema extends Schema, TOutput extends SchemaOutput<TOutputSchema>> {
24
+ (input: SchemaOutput<TInputSchema>, context: MergeContext<TContext, TExtraContext>, meta: Meta<unknown>): Promisable<SchemaInput<TOutputSchema, TOutput>>;
25
+ }
26
+ export declare function decorateProcedure<TContext extends Context, TExtraContext extends Context, TInputSchema extends Schema, TOutputSchema extends Schema, THandlerOutput extends SchemaOutput<TOutputSchema>>(procedure: Procedure<TContext, TExtraContext, TInputSchema, TOutputSchema, THandlerOutput>): DecoratedProcedure<TContext, TExtraContext, TInputSchema, TOutputSchema, THandlerOutput>;
27
+ export type WELL_DEFINED_PROCEDURE = Procedure<Context, Context, Schema, Schema, unknown>;
28
+ export declare function isProcedure(item: unknown): item is WELL_DEFINED_PROCEDURE;
29
+ //# sourceMappingURL=procedure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"procedure.d.ts","sourceRoot":"","sources":["../../src/procedure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type HTTPPath } from '@orpc/contract';
2
+ import { type MapInputMiddleware, type Middleware } from './middleware';
3
+ import type { HandledRouter, Router } from './router';
4
+ import type { Context, MergeContext } from './types';
5
+ export declare class RouterBuilder<TContext extends Context, TExtraContext extends Context> {
6
+ zz$rb: {
7
+ prefix?: HTTPPath;
8
+ tags?: string[];
9
+ middlewares?: Middleware<any, any, any, any>[];
10
+ };
11
+ constructor(zz$rb: {
12
+ prefix?: HTTPPath;
13
+ tags?: string[];
14
+ middlewares?: Middleware<any, any, any, any>[];
15
+ });
16
+ prefix(prefix: HTTPPath): RouterBuilder<TContext, TExtraContext>;
17
+ tags(...tags: string[]): RouterBuilder<TContext, TExtraContext>;
18
+ use<UExtraContext extends Partial<MergeContext<Context, MergeContext<TContext, TExtraContext>>> | undefined = undefined>(middleware: Middleware<MergeContext<TContext, TExtraContext>, UExtraContext, unknown, unknown>): RouterBuilder<TContext, MergeContext<TExtraContext, UExtraContext>>;
19
+ use<UExtraContext extends Partial<MergeContext<Context, MergeContext<TContext, TExtraContext>>> | undefined = undefined, UMappedInput = unknown>(middleware: Middleware<MergeContext<TContext, TExtraContext>, UExtraContext, UMappedInput, unknown>, mapInput: MapInputMiddleware<unknown, UMappedInput>): RouterBuilder<TContext, MergeContext<TExtraContext, UExtraContext>>;
20
+ router<URouter extends Router<TContext>>(router: URouter): HandledRouter<URouter>;
21
+ }
22
+ //# sourceMappingURL=router-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router-builder.d.ts","sourceRoot":"","sources":["../../src/router-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC1E,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAEhB,MAAM,cAAc,CAAA;AAErB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEpD,qBAAa,aAAa,CACxB,QAAQ,SAAS,OAAO,EACxB,aAAa,SAAS,OAAO;IAGpB,KAAK,EAAE;QACZ,MAAM,CAAC,EAAE,QAAQ,CAAA;QACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;QACf,WAAW,CAAC,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAA;KAC/C;gBAJM,KAAK,EAAE;QACZ,MAAM,CAAC,EAAE,QAAQ,CAAA;QACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;QACf,WAAW,CAAC,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAA;KAC/C;IAGH,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC;IAOhE,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC;IAS/D,GAAG,CACD,aAAa,SACT,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GACrE,SAAS,GAAG,SAAS,EAEzB,UAAU,EAAE,UAAU,CACpB,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,EACrC,aAAa,EACb,OAAO,EACP,OAAO,CACR,GACA,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAEtE,GAAG,CACD,aAAa,SACT,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GACrE,SAAS,GAAG,SAAS,EACzB,YAAY,GAAG,OAAO,EAEtB,UAAU,EAAE,UAAU,CACpB,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,EACrC,aAAa,EACb,YAAY,EACZ,OAAO,CACR,EACD,QAAQ,EAAE,kBAAkB,CAAC,OAAO,EAAE,YAAY,CAAC,GAClD,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAgBtE,MAAM,CAAC,OAAO,SAAS,MAAM,CAAC,QAAQ,CAAC,EACrC,MAAM,EAAE,OAAO,GACd,aAAa,CAAC,OAAO,CAAC;CAqC1B"}
@@ -0,0 +1,36 @@
1
+ import { type Procedure } from './procedure';
2
+ import { type ProcedureCaller } from './procedure-caller';
3
+ import type { Router } from './router';
4
+ import type { Meta, Promisable } from './types';
5
+ export interface CreateRouterCallerOptions<TRouter extends Router<any>, TValidate extends boolean> {
6
+ router: TRouter;
7
+ /**
8
+ * The context used when calling the procedure.
9
+ */
10
+ context: TRouter extends Router<infer UContext> ? UContext : never;
11
+ /**
12
+ * Helpful hooks to do some logics on specific time.
13
+ */
14
+ hooks?: (context: TRouter extends Router<infer UContext> ? UContext : never, meta: Meta<unknown>) => Promisable<void>;
15
+ /**
16
+ * This is helpful for logging and analytics.
17
+ */
18
+ basePath?: string[];
19
+ /**
20
+ * This flag helpful when you want bypass some logics not necessary to internal server calls.
21
+ *
22
+ * @default true
23
+ */
24
+ internal?: boolean;
25
+ /**
26
+ * Indicate whether validate input and output.
27
+ *
28
+ * @default true
29
+ */
30
+ validate?: TValidate;
31
+ }
32
+ export type RouterCaller<TRouter extends Router<any>, TValidate extends boolean> = {
33
+ [K in keyof TRouter]: TRouter[K] extends Procedure<any, any, any, any, any> ? ProcedureCaller<TRouter[K], TValidate> : TRouter[K] extends Router<any> ? RouterCaller<TRouter[K], TValidate> : never;
34
+ };
35
+ export declare function createRouterCaller<TRouter extends Router<any>, TValidate extends boolean = true>(options: CreateRouterCallerOptions<TRouter, TValidate>): RouterCaller<TRouter, TValidate>;
36
+ //# sourceMappingURL=router-caller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router-caller.d.ts","sourceRoot":"","sources":["../../src/router-caller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAe,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,KAAK,eAAe,EAAyB,MAAM,oBAAoB,CAAA;AAChF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAG/C,MAAM,WAAW,yBAAyB,CACxC,OAAO,SAAS,MAAM,CAAC,GAAG,CAAC,EAC3B,SAAS,SAAS,OAAO;IAEzB,MAAM,EAAE,OAAO,CAAA;IAEf;;OAEG;IACH,OAAO,EAAE,OAAO,SAAS,MAAM,CAAC,MAAM,QAAQ,CAAC,GAAG,QAAQ,GAAG,KAAK,CAAA;IAElE;;OAEG;IACH,KAAK,CAAC,EAAE,CACN,OAAO,EAAE,OAAO,SAAS,MAAM,CAAC,MAAM,QAAQ,CAAC,GAAG,QAAQ,GAAG,KAAK,EAClE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,KAChB,UAAU,CAAC,IAAI,CAAC,CAAA;IAErB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IAEnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAED,MAAM,MAAM,YAAY,CACtB,OAAO,SAAS,MAAM,CAAC,GAAG,CAAC,EAC3B,SAAS,SAAS,OAAO,IACvB;KACD,CAAC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GACvE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GACtC,OAAO,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,GAC5B,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GACnC,KAAK;CACZ,CAAA;AAED,wBAAgB,kBAAkB,CAChC,OAAO,SAAS,MAAM,CAAC,GAAG,CAAC,EAC3B,SAAS,SAAS,OAAO,GAAG,IAAI,EAEhC,OAAO,EAAE,yBAAyB,CAAC,OAAO,EAAE,SAAS,CAAC,GACrD,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAgClC"}
@@ -0,0 +1,20 @@
1
+ import { type ContractProcedure, type ContractRouter } from '@orpc/contract';
2
+ import type { Middleware } from './middleware';
3
+ import { ProcedureImplementer } from './procedure-implementer';
4
+ import type { RouterWithContract } from './router';
5
+ import type { Context } from './types';
6
+ export declare class RouterImplementer<TContext extends Context, TContract extends ContractRouter> {
7
+ zz$ri: {
8
+ contract: TContract;
9
+ };
10
+ constructor(zz$ri: {
11
+ contract: TContract;
12
+ });
13
+ router(router: RouterWithContract<TContext, TContract>): RouterWithContract<TContext, TContract>;
14
+ }
15
+ export type ChainedRouterImplementer<TContext extends Context, TContract extends ContractRouter, TExtraContext extends Context> = {
16
+ [K in keyof TContract]: TContract[K] extends ContractProcedure<infer UInputSchema, infer UOutputSchema> ? ProcedureImplementer<TContext, TExtraContext, UInputSchema, UOutputSchema> : TContract[K] extends ContractRouter ? ChainedRouterImplementer<TContext, TContract[K], TExtraContext> : never;
17
+ } & RouterImplementer<TContext, TContract>;
18
+ export declare function chainRouterImplementer<TContext extends Context, TContract extends ContractRouter, TExtraContext extends Context>(contract: TContract, middlewares?: Middleware<any, any, any, any>[]): ChainedRouterImplementer<TContext, TContract, TExtraContext>;
19
+ export declare function assertRouterImplementation(contract: ContractRouter, router: RouterWithContract<any, any>, path?: string[]): void;
20
+ //# sourceMappingURL=router-implementer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router-implementer.d.ts","sourceRoot":"","sources":["../../src/router-implementer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAEpB,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,qBAAa,iBAAiB,CAC5B,QAAQ,SAAS,OAAO,EACxB,SAAS,SAAS,cAAc;IAGvB,KAAK,EAAE;QACZ,QAAQ,EAAE,SAAS,CAAA;KACpB;gBAFM,KAAK,EAAE;QACZ,QAAQ,EAAE,SAAS,CAAA;KACpB;IAGH,MAAM,CACJ,MAAM,EAAE,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC,GAC9C,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC;CAK3C;AAED,MAAM,MAAM,wBAAwB,CAClC,QAAQ,SAAS,OAAO,EACxB,SAAS,SAAS,cAAc,EAChC,aAAa,SAAS,OAAO,IAC3B;KACD,CAAC,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,iBAAiB,CAC5D,MAAM,YAAY,EAClB,MAAM,aAAa,CACpB,GACG,oBAAoB,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,CAAC,GAC1E,SAAS,CAAC,CAAC,CAAC,SAAS,cAAc,GACjC,wBAAwB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,GAC/D,KAAK;CACZ,GAAG,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;AAE1C,wBAAgB,sBAAsB,CACpC,QAAQ,SAAS,OAAO,EACxB,SAAS,SAAS,cAAc,EAChC,aAAa,SAAS,OAAO,EAE7B,QAAQ,EAAE,SAAS,EACnB,WAAW,CAAC,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAC7C,wBAAwB,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAmB9D;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,EACpC,IAAI,GAAE,MAAM,EAAO,GAClB,IAAI,CAgCN"}
@@ -0,0 +1,14 @@
1
+ import { type ContractProcedure, type ContractRouter } from '@orpc/contract';
2
+ import { type DecoratedProcedure, type Procedure } from './procedure';
3
+ import type { Context } from './types';
4
+ export interface Router<TContext extends Context> {
5
+ [k: string]: Procedure<TContext, any, any, any, any> | Router<TContext>;
6
+ }
7
+ export type HandledRouter<TRouter extends Router<any>> = {
8
+ [K in keyof TRouter]: TRouter[K] extends Procedure<infer UContext, infer UExtraContext, infer UInputSchema, infer UOutputSchema, infer UHandlerOutput> ? DecoratedProcedure<UContext, UExtraContext, UInputSchema, UOutputSchema, UHandlerOutput> : TRouter[K] extends Router<any> ? HandledRouter<TRouter[K]> : never;
9
+ };
10
+ export type RouterWithContract<TContext extends Context, TContract extends ContractRouter> = {
11
+ [K in keyof TContract]: TContract[K] extends ContractProcedure<infer UInputSchema, infer UOutputSchema> ? Procedure<TContext, any, UInputSchema, UOutputSchema, any> : TContract[K] extends ContractRouter ? RouterWithContract<TContext, TContract[K]> : never;
12
+ };
13
+ export declare function toContractRouter(router: ContractRouter | Router<any>): ContractRouter;
14
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAEpB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,SAAS,EAEf,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,MAAM,WAAW,MAAM,CAAC,QAAQ,SAAS,OAAO;IAC9C,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;CACxE;AAED,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,MAAM,CAAC,GAAG,CAAC,IAAI;KACtD,CAAC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,SAAS,CAChD,MAAM,QAAQ,EACd,MAAM,aAAa,EACnB,MAAM,YAAY,EAClB,MAAM,aAAa,EACnB,MAAM,cAAc,CACrB,GACG,kBAAkB,CAChB,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,aAAa,EACb,cAAc,CACf,GACD,OAAO,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,GAC5B,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GACzB,KAAK;CACZ,CAAA;AAED,MAAM,MAAM,kBAAkB,CAC5B,QAAQ,SAAS,OAAO,EACxB,SAAS,SAAS,cAAc,IAC9B;KACD,CAAC,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,iBAAiB,CAC5D,MAAM,YAAY,EAClB,MAAM,aAAa,CACpB,GACG,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,CAAC,GAC1D,SAAS,CAAC,CAAC,CAAC,SAAS,cAAc,GACjC,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAC1C,KAAK;CACZ,CAAA;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,GACnC,cAAc,CAgBhB"}
@@ -0,0 +1,18 @@
1
+ import type { WELL_DEFINED_PROCEDURE } from './procedure';
2
+ export type Context = Record<string, unknown> | undefined;
3
+ export type MergeContext<TA extends Context, TB extends Context> = TA extends undefined ? TB : TB extends undefined ? TA : TA & TB;
4
+ export interface Meta<T> extends Hooks<T> {
5
+ path: string[];
6
+ internal: boolean;
7
+ procedure: WELL_DEFINED_PROCEDURE;
8
+ }
9
+ export type Promisable<T> = T | Promise<T>;
10
+ export interface UnsubscribeFn {
11
+ (): void;
12
+ }
13
+ export interface Hooks<T> {
14
+ onSuccess: (fn: (output: T) => Promisable<void>) => UnsubscribeFn;
15
+ onError: (fn: (error: unknown) => Promisable<void>) => UnsubscribeFn;
16
+ onFinish: (fn: (output: T | undefined, error: unknown | undefined) => Promisable<void>) => UnsubscribeFn;
17
+ }
18
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEzD,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;AAEzD,MAAM,MAAM,YAAY,CACtB,EAAE,SAAS,OAAO,EAClB,EAAE,SAAS,OAAO,IAChB,EAAE,SAAS,SAAS,GAAG,EAAE,GAAG,EAAE,SAAS,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;AAEnE,MAAM,WAAW,IAAI,CAAC,CAAC,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;IACvC,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,sBAAsB,CAAA;CAClC;AAED,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;AAE1C,MAAM,WAAW,aAAa;IAC5B,IAAI,IAAI,CAAA;CACT;AAED,MAAM,WAAW,KAAK,CAAC,CAAC;IACtB,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,KAAK,aAAa,CAAA;IACjE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,CAAC,IAAI,CAAC,KAAK,aAAa,CAAA;IACpE,QAAQ,EAAE,CACR,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,KAAK,UAAU,CAAC,IAAI,CAAC,KACxE,aAAa,CAAA;CACnB"}
@@ -0,0 +1,4 @@
1
+ import type { Context, Hooks, MergeContext, Promisable } from './types';
2
+ export declare function mergeContext<A extends Context, B extends Context>(a: A, b: B): MergeContext<A, B>;
3
+ export declare function hook<T>(fn: (hooks: Hooks<T>) => Promisable<T>): Promise<T>;
4
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEvE,wBAAgB,YAAY,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,OAAO,EAC/D,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,GACH,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAQpB;AAED,wBAAsB,IAAI,CAAC,CAAC,EAC1B,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,GACrC,OAAO,CAAC,CAAC,CAAC,CA6EZ"}