@orpc/contract 0.0.3 → 0.1.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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 oRPC
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/dist/index.js CHANGED
@@ -6,7 +6,8 @@ var ContractProcedure = class {
6
6
  };
7
7
  var DecoratedContractProcedure = class _DecoratedContractProcedure extends ContractProcedure {
8
8
  static decorate(cp) {
9
- if (cp instanceof _DecoratedContractProcedure) return cp;
9
+ if (cp instanceof _DecoratedContractProcedure)
10
+ return cp;
10
11
  return new _DecoratedContractProcedure(cp.zz$cp);
11
12
  }
12
13
  route(opts) {
@@ -18,14 +19,16 @@ var DecoratedContractProcedure = class _DecoratedContractProcedure extends Contr
18
19
  });
19
20
  }
20
21
  prefix(prefix) {
21
- if (!this.zz$cp.path) return this;
22
+ if (!this.zz$cp.path)
23
+ return this;
22
24
  return new _DecoratedContractProcedure({
23
25
  ...this.zz$cp,
24
26
  path: `${prefix}${this.zz$cp.path}`
25
27
  });
26
28
  }
27
29
  addTags(...tags) {
28
- if (!tags.length) return this;
30
+ if (!tags.length)
31
+ return this;
29
32
  return new _DecoratedContractProcedure({
30
33
  ...this.zz$cp,
31
34
  tags: [...this.zz$cp.tags ?? [], ...tags]
@@ -47,7 +50,8 @@ var DecoratedContractProcedure = class _DecoratedContractProcedure extends Contr
47
50
  }
48
51
  };
49
52
  function isContractProcedure(item) {
50
- if (item instanceof ContractProcedure) return true;
53
+ if (item instanceof ContractProcedure)
54
+ return true;
51
55
  return (typeof item === "object" || typeof item === "function") && item !== null && "zz$cp" in item && typeof item.zz$cp === "object" && item.zz$cp !== null && "InputSchema" in item.zz$cp && "OutputSchema" in item.zz$cp;
52
56
  }
53
57
 
@@ -63,7 +67,8 @@ var ContractRouterBuilder = class _ContractRouterBuilder {
63
67
  });
64
68
  }
65
69
  tags(...tags) {
66
- if (!tags.length) return this;
70
+ if (!tags.length)
71
+ return this;
67
72
  return new _ContractRouterBuilder({
68
73
  ...this.zz$crb,
69
74
  tags: [...this.zz$crb.tags ?? [], ...tags]
@@ -147,8 +152,10 @@ function standardizeHTTPPath(path) {
147
152
  function prefixHTTPPath(prefix, path) {
148
153
  const prefix_ = standardizeHTTPPath(prefix);
149
154
  const path_ = standardizeHTTPPath(path);
150
- if (prefix_ === "/") return path_;
151
- if (path_ === "/") return prefix_;
155
+ if (prefix_ === "/")
156
+ return path_;
157
+ if (path_ === "/")
158
+ return prefix_;
152
159
  return `${prefix_}${path_}`;
153
160
  }
154
161
 
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/procedure.ts","../src/router-builder.ts","../src/builder.ts","../src/constants.ts","../src/router.ts","../src/utils.ts","../src/index.ts"],"sourcesContent":["import type {\n HTTPMethod,\n HTTPPath,\n Schema,\n SchemaInput,\n SchemaOutput,\n} from './types'\n\nexport interface RouteOptions {\n method?: HTTPMethod\n path?: HTTPPath\n summary?: string\n description?: string\n deprecated?: boolean\n tags?: string[]\n}\n\nexport class ContractProcedure<\n TInputSchema extends Schema,\n TOutputSchema extends Schema,\n> {\n constructor(\n public zz$cp: {\n path?: HTTPPath\n method?: HTTPMethod\n summary?: string\n description?: string\n deprecated?: boolean\n tags?: string[]\n InputSchema: TInputSchema\n inputExample?: SchemaOutput<TInputSchema>\n OutputSchema: TOutputSchema\n outputExample?: SchemaOutput<TOutputSchema>\n },\n ) {}\n}\n\nexport class DecoratedContractProcedure<\n TInputSchema extends Schema,\n TOutputSchema extends Schema,\n> extends ContractProcedure<TInputSchema, TOutputSchema> {\n static decorate<TInputSchema extends Schema, TOutputSchema extends Schema>(\n cp: ContractProcedure<TInputSchema, TOutputSchema>,\n ): DecoratedContractProcedure<TInputSchema, TOutputSchema> {\n if (cp instanceof DecoratedContractProcedure) return cp\n return new DecoratedContractProcedure(cp.zz$cp)\n }\n\n route(\n opts: RouteOptions,\n ): DecoratedContractProcedure<TInputSchema, TOutputSchema> {\n return new DecoratedContractProcedure({\n ...this.zz$cp,\n ...opts,\n method: opts.method,\n path: opts.path,\n })\n }\n\n prefix(\n prefix: HTTPPath,\n ): DecoratedContractProcedure<TInputSchema, TOutputSchema> {\n if (!this.zz$cp.path) return this\n\n return new DecoratedContractProcedure({\n ...this.zz$cp,\n path: `${prefix}${this.zz$cp.path}`,\n })\n }\n\n addTags(\n ...tags: string[]\n ): DecoratedContractProcedure<TInputSchema, TOutputSchema> {\n if (!tags.length) return this\n\n return new DecoratedContractProcedure({\n ...this.zz$cp,\n tags: [...(this.zz$cp.tags ?? []), ...tags],\n })\n }\n\n input<USchema extends Schema>(\n schema: USchema,\n example?: SchemaInput<USchema>,\n ): DecoratedContractProcedure<USchema, TOutputSchema> {\n return new DecoratedContractProcedure({\n ...this.zz$cp,\n InputSchema: schema,\n inputExample: example,\n })\n }\n\n output<USchema extends Schema>(\n schema: USchema,\n example?: SchemaOutput<USchema>,\n ): DecoratedContractProcedure<TInputSchema, USchema> {\n return new DecoratedContractProcedure({\n ...this.zz$cp,\n OutputSchema: schema,\n outputExample: example,\n })\n }\n}\n\nexport type WELL_DEFINED_CONTRACT_PROCEDURE = ContractProcedure<Schema, Schema>\n\nexport function isContractProcedure(\n item: unknown,\n): item is WELL_DEFINED_CONTRACT_PROCEDURE {\n if (item instanceof ContractProcedure) return true\n\n return (\n (typeof item === 'object' || typeof item === 'function') &&\n item !== null &&\n 'zz$cp' in item &&\n typeof item.zz$cp === 'object' &&\n item.zz$cp !== null &&\n 'InputSchema' in item.zz$cp &&\n 'OutputSchema' in item.zz$cp\n )\n}\n","import { DecoratedContractProcedure, isContractProcedure } from './procedure'\nimport type { ContractRouter, HandledContractRouter } from './router'\nimport type { HTTPPath } from './types'\n\nexport class ContractRouterBuilder {\n constructor(public zz$crb: { prefix?: HTTPPath; tags?: string[] }) {}\n\n prefix(prefix: HTTPPath): ContractRouterBuilder {\n return new ContractRouterBuilder({\n ...this.zz$crb,\n prefix: `${this.zz$crb.prefix ?? ''}${prefix}`,\n })\n }\n\n tags(...tags: string[]): ContractRouterBuilder {\n if (!tags.length) return this\n\n return new ContractRouterBuilder({\n ...this.zz$crb,\n tags: [...(this.zz$crb.tags ?? []), ...tags],\n })\n }\n\n router<T extends ContractRouter>(router: T): HandledContractRouter<T> {\n const handled: ContractRouter = {}\n\n for (const key in router) {\n const item = router[key]\n if (isContractProcedure(item)) {\n const decorated = DecoratedContractProcedure.decorate(item).addTags(\n ...(this.zz$crb.tags ?? []),\n )\n\n handled[key] = this.zz$crb.prefix\n ? decorated.prefix(this.zz$crb.prefix)\n : decorated\n } else {\n handled[key] = this.router(item as ContractRouter)\n }\n }\n\n return handled as HandledContractRouter<T>\n }\n}\n","import { DecoratedContractProcedure, type RouteOptions } from './procedure'\nimport type { ContractRouter } from './router'\nimport { ContractRouterBuilder } from './router-builder'\nimport type { HTTPPath, Schema, SchemaInput, SchemaOutput } from './types'\n\nexport class ContractBuilder {\n prefix(prefix: HTTPPath): ContractRouterBuilder {\n return new ContractRouterBuilder({\n prefix: prefix,\n })\n }\n\n tags(...tags: string[]): ContractRouterBuilder {\n return new ContractRouterBuilder({\n tags: tags,\n })\n }\n\n route(opts: RouteOptions): DecoratedContractProcedure<undefined, undefined> {\n return new DecoratedContractProcedure({\n InputSchema: undefined,\n OutputSchema: undefined,\n ...opts,\n })\n }\n\n input<USchema extends Schema>(\n schema: USchema,\n example?: SchemaInput<USchema>,\n ): DecoratedContractProcedure<USchema, undefined> {\n return new DecoratedContractProcedure({\n InputSchema: schema,\n inputExample: example,\n OutputSchema: undefined,\n })\n }\n\n output<USchema extends Schema>(\n schema: USchema,\n example?: SchemaOutput<USchema>,\n ): DecoratedContractProcedure<undefined, USchema> {\n return new DecoratedContractProcedure({\n InputSchema: undefined,\n OutputSchema: schema,\n outputExample: example,\n })\n }\n\n router<T extends ContractRouter>(router: T): T {\n return router\n }\n}\n","export const ORPC_HEADER = 'x-orpc-transformer'\nexport const ORPC_HEADER_VALUE = 't'\n","import {\n type ContractProcedure,\n type DecoratedContractProcedure,\n type WELL_DEFINED_CONTRACT_PROCEDURE,\n isContractProcedure,\n} from './procedure'\n\nexport interface ContractRouter {\n [k: string]: ContractProcedure<any, any> | ContractRouter\n}\n\nexport type HandledContractRouter<TContract extends ContractRouter> = {\n [K in keyof TContract]: TContract[K] extends ContractProcedure<\n infer UInputSchema,\n infer UOutputSchema\n >\n ? DecoratedContractProcedure<UInputSchema, UOutputSchema>\n : TContract[K] extends ContractRouter\n ? HandledContractRouter<TContract[K]>\n : never\n}\n\nexport function eachContractRouterLeaf(\n router: ContractRouter,\n callback: (item: WELL_DEFINED_CONTRACT_PROCEDURE, path: string[]) => void,\n prefix: string[] = [],\n) {\n for (const key in router) {\n const item = router[key]\n\n if (isContractProcedure(item)) {\n callback(item, [...prefix, key])\n } else {\n eachContractRouterLeaf(item as ContractRouter, callback, [...prefix, key])\n }\n }\n}\n","import type { HTTPPath } from './types'\n\nexport function standardizeHTTPPath(path: HTTPPath): HTTPPath {\n return `/${path.replace(/\\/{2,}/g, '/').replace(/^\\/|\\/$/g, '')}`\n}\n\nexport function prefixHTTPPath(prefix: HTTPPath, path: HTTPPath): HTTPPath {\n const prefix_ = standardizeHTTPPath(prefix)\n const path_ = standardizeHTTPPath(path)\n\n if (prefix_ === '/') return path_\n if (path_ === '/') return prefix_\n\n return `${prefix_}${path_}`\n}\n","/** unnoq */\n\nimport { ContractBuilder } from './builder'\n\nexport * from './builder'\nexport * from './constants'\nexport * from './procedure'\nexport * from './router'\nexport * from './types'\nexport * from './utils'\n\nexport const oc = new ContractBuilder()\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/procedure.ts","../src/router-builder.ts","../src/builder.ts","../src/constants.ts","../src/router.ts","../src/utils.ts","../src/index.ts"],"sourcesContent":["import type {\n HTTPMethod,\n HTTPPath,\n Schema,\n SchemaInput,\n SchemaOutput,\n} from './types'\n\nexport interface RouteOptions {\n method?: HTTPMethod\n path?: HTTPPath\n summary?: string\n description?: string\n deprecated?: boolean\n tags?: string[]\n}\n\nexport class ContractProcedure<\n TInputSchema extends Schema,\n TOutputSchema extends Schema,\n> {\n constructor(\n public zz$cp: {\n path?: HTTPPath\n method?: HTTPMethod\n summary?: string\n description?: string\n deprecated?: boolean\n tags?: string[]\n InputSchema: TInputSchema\n inputExample?: SchemaOutput<TInputSchema>\n OutputSchema: TOutputSchema\n outputExample?: SchemaOutput<TOutputSchema>\n },\n ) {}\n}\n\nexport class DecoratedContractProcedure<\n TInputSchema extends Schema,\n TOutputSchema extends Schema,\n> extends ContractProcedure<TInputSchema, TOutputSchema> {\n static decorate<TInputSchema extends Schema, TOutputSchema extends Schema>(\n cp: ContractProcedure<TInputSchema, TOutputSchema>,\n ): DecoratedContractProcedure<TInputSchema, TOutputSchema> {\n if (cp instanceof DecoratedContractProcedure)\n return cp\n return new DecoratedContractProcedure(cp.zz$cp)\n }\n\n route(\n opts: RouteOptions,\n ): DecoratedContractProcedure<TInputSchema, TOutputSchema> {\n return new DecoratedContractProcedure({\n ...this.zz$cp,\n ...opts,\n method: opts.method,\n path: opts.path,\n })\n }\n\n prefix(\n prefix: HTTPPath,\n ): DecoratedContractProcedure<TInputSchema, TOutputSchema> {\n if (!this.zz$cp.path)\n return this\n\n return new DecoratedContractProcedure({\n ...this.zz$cp,\n path: `${prefix}${this.zz$cp.path}`,\n })\n }\n\n addTags(\n ...tags: string[]\n ): DecoratedContractProcedure<TInputSchema, TOutputSchema> {\n if (!tags.length)\n return this\n\n return new DecoratedContractProcedure({\n ...this.zz$cp,\n tags: [...(this.zz$cp.tags ?? []), ...tags],\n })\n }\n\n input<USchema extends Schema>(\n schema: USchema,\n example?: SchemaInput<USchema>,\n ): DecoratedContractProcedure<USchema, TOutputSchema> {\n return new DecoratedContractProcedure({\n ...this.zz$cp,\n InputSchema: schema,\n inputExample: example,\n })\n }\n\n output<USchema extends Schema>(\n schema: USchema,\n example?: SchemaOutput<USchema>,\n ): DecoratedContractProcedure<TInputSchema, USchema> {\n return new DecoratedContractProcedure({\n ...this.zz$cp,\n OutputSchema: schema,\n outputExample: example,\n })\n }\n}\n\nexport type WELL_DEFINED_CONTRACT_PROCEDURE = ContractProcedure<Schema, Schema>\n\nexport function isContractProcedure(\n item: unknown,\n): item is WELL_DEFINED_CONTRACT_PROCEDURE {\n if (item instanceof ContractProcedure)\n return true\n\n return (\n (typeof item === 'object' || typeof item === 'function')\n && item !== null\n && 'zz$cp' in item\n && typeof item.zz$cp === 'object'\n && item.zz$cp !== null\n && 'InputSchema' in item.zz$cp\n && 'OutputSchema' in item.zz$cp\n )\n}\n","import type { ContractRouter, HandledContractRouter } from './router'\nimport type { HTTPPath } from './types'\nimport { DecoratedContractProcedure, isContractProcedure } from './procedure'\n\nexport class ContractRouterBuilder {\n constructor(public zz$crb: { prefix?: HTTPPath, tags?: string[] }) {}\n\n prefix(prefix: HTTPPath): ContractRouterBuilder {\n return new ContractRouterBuilder({\n ...this.zz$crb,\n prefix: `${this.zz$crb.prefix ?? ''}${prefix}`,\n })\n }\n\n tags(...tags: string[]): ContractRouterBuilder {\n if (!tags.length)\n return this\n\n return new ContractRouterBuilder({\n ...this.zz$crb,\n tags: [...(this.zz$crb.tags ?? []), ...tags],\n })\n }\n\n router<T extends ContractRouter>(router: T): HandledContractRouter<T> {\n const handled: ContractRouter = {}\n\n for (const key in router) {\n const item = router[key]\n if (isContractProcedure(item)) {\n const decorated = DecoratedContractProcedure.decorate(item).addTags(\n ...(this.zz$crb.tags ?? []),\n )\n\n handled[key] = this.zz$crb.prefix\n ? decorated.prefix(this.zz$crb.prefix)\n : decorated\n }\n else {\n handled[key] = this.router(item as ContractRouter)\n }\n }\n\n return handled as HandledContractRouter<T>\n }\n}\n","import type { ContractRouter } from './router'\nimport type { HTTPPath, Schema, SchemaInput, SchemaOutput } from './types'\nimport { DecoratedContractProcedure, type RouteOptions } from './procedure'\nimport { ContractRouterBuilder } from './router-builder'\n\nexport class ContractBuilder {\n prefix(prefix: HTTPPath): ContractRouterBuilder {\n return new ContractRouterBuilder({\n prefix,\n })\n }\n\n tags(...tags: string[]): ContractRouterBuilder {\n return new ContractRouterBuilder({\n tags,\n })\n }\n\n route(opts: RouteOptions): DecoratedContractProcedure<undefined, undefined> {\n return new DecoratedContractProcedure({\n InputSchema: undefined,\n OutputSchema: undefined,\n ...opts,\n })\n }\n\n input<USchema extends Schema>(\n schema: USchema,\n example?: SchemaInput<USchema>,\n ): DecoratedContractProcedure<USchema, undefined> {\n return new DecoratedContractProcedure({\n InputSchema: schema,\n inputExample: example,\n OutputSchema: undefined,\n })\n }\n\n output<USchema extends Schema>(\n schema: USchema,\n example?: SchemaOutput<USchema>,\n ): DecoratedContractProcedure<undefined, USchema> {\n return new DecoratedContractProcedure({\n InputSchema: undefined,\n OutputSchema: schema,\n outputExample: example,\n })\n }\n\n router<T extends ContractRouter>(router: T): T {\n return router\n }\n}\n","export const ORPC_HEADER = 'x-orpc-transformer'\nexport const ORPC_HEADER_VALUE = 't'\n","import type { SchemaInput, SchemaOutput } from './types'\nimport {\n type ContractProcedure,\n type DecoratedContractProcedure,\n isContractProcedure,\n type WELL_DEFINED_CONTRACT_PROCEDURE,\n} from './procedure'\n\nexport interface ContractRouter {\n [k: string]: ContractProcedure<any, any> | ContractRouter\n}\n\nexport type HandledContractRouter<TContract extends ContractRouter> = {\n [K in keyof TContract]: TContract[K] extends ContractProcedure<\n infer UInputSchema,\n infer UOutputSchema\n >\n ? DecoratedContractProcedure<UInputSchema, UOutputSchema>\n : TContract[K] extends ContractRouter\n ? HandledContractRouter<TContract[K]>\n : never\n}\n\nexport function eachContractRouterLeaf(\n router: ContractRouter,\n callback: (item: WELL_DEFINED_CONTRACT_PROCEDURE, path: string[]) => void,\n prefix: string[] = [],\n) {\n for (const key in router) {\n const item = router[key]\n\n if (isContractProcedure(item)) {\n callback(item, [...prefix, key])\n }\n else {\n eachContractRouterLeaf(item as ContractRouter, callback, [...prefix, key])\n }\n }\n}\n\nexport type InferContractRouterInputs<T extends ContractRouter> = {\n [K in keyof T]: T[K] extends ContractProcedure<infer UInputSchema, any>\n ? SchemaInput<UInputSchema>\n : T[K] extends ContractRouter\n ? InferContractRouterInputs<T[K]>\n : never\n}\n\nexport type InferContractRouterOutputs<T extends ContractRouter> = {\n [K in keyof T]: T[K] extends ContractProcedure<any, infer UOutputSchema>\n ? SchemaOutput<UOutputSchema>\n : T[K] extends ContractRouter\n ? InferContractRouterOutputs<T[K]>\n : never\n}\n","import type { HTTPPath } from './types'\n\nexport function standardizeHTTPPath(path: HTTPPath): HTTPPath {\n return `/${path.replace(/\\/{2,}/g, '/').replace(/^\\/|\\/$/g, '')}`\n}\n\nexport function prefixHTTPPath(prefix: HTTPPath, path: HTTPPath): HTTPPath {\n const prefix_ = standardizeHTTPPath(prefix)\n const path_ = standardizeHTTPPath(path)\n\n if (prefix_ === '/')\n return path_\n if (path_ === '/')\n return prefix_\n\n return `${prefix_}${path_}`\n}\n","/** unnoq */\n\nimport { ContractBuilder } from './builder'\n\nexport * from './builder'\nexport * from './constants'\nexport * from './procedure'\nexport * from './router'\nexport * from './types'\nexport * from './utils'\n\nexport const oc = new ContractBuilder()\n"],"mappings":"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","names":[]}
@@ -1,7 +1,7 @@
1
- import { DecoratedContractProcedure, type RouteOptions } from './procedure';
2
1
  import type { ContractRouter } from './router';
3
- import { ContractRouterBuilder } from './router-builder';
4
2
  import type { HTTPPath, Schema, SchemaInput, SchemaOutput } from './types';
3
+ import { DecoratedContractProcedure, type RouteOptions } from './procedure';
4
+ import { ContractRouterBuilder } from './router-builder';
5
5
  export declare class ContractBuilder {
6
6
  prefix(prefix: HTTPPath): ContractRouterBuilder;
7
7
  tags(...tags: string[]): ContractRouterBuilder;
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAA;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE1E,qBAAa,eAAe;IAC1B,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,qBAAqB;IAM/C,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,qBAAqB;IAM9C,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,0BAA0B,CAAC,SAAS,EAAE,SAAS,CAAC;IAQ3E,KAAK,CAAC,OAAO,SAAS,MAAM,EAC1B,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,GAC7B,0BAA0B,CAAC,OAAO,EAAE,SAAS,CAAC;IAQjD,MAAM,CAAC,OAAO,SAAS,MAAM,EAC3B,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,GAC9B,0BAA0B,CAAC,SAAS,EAAE,OAAO,CAAC;IAQjD,MAAM,CAAC,CAAC,SAAS,cAAc,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC;CAG/C"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC1E,OAAO,EAAE,0BAA0B,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAA;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAExD,qBAAa,eAAe;IAC1B,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,qBAAqB;IAM/C,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,qBAAqB;IAM9C,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,0BAA0B,CAAC,SAAS,EAAE,SAAS,CAAC;IAQ3E,KAAK,CAAC,OAAO,SAAS,MAAM,EAC1B,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,GAC7B,0BAA0B,CAAC,OAAO,EAAE,SAAS,CAAC;IAQjD,MAAM,CAAC,OAAO,SAAS,MAAM,EAC3B,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,GAC9B,0BAA0B,CAAC,SAAS,EAAE,OAAO,CAAC;IAQjD,MAAM,CAAC,CAAC,SAAS,cAAc,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC;CAG/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"procedure.d.ts","sourceRoot":"","sources":["../../src/procedure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,MAAM,EACN,WAAW,EACX,YAAY,EACb,MAAM,SAAS,CAAA;AAEhB,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAChB;AAED,qBAAa,iBAAiB,CAC5B,YAAY,SAAS,MAAM,EAC3B,aAAa,SAAS,MAAM;IAGnB,KAAK,EAAE;QACZ,IAAI,CAAC,EAAE,QAAQ,CAAA;QACf,MAAM,CAAC,EAAE,UAAU,CAAA;QACnB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,UAAU,CAAC,EAAE,OAAO,CAAA;QACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;QACf,WAAW,EAAE,YAAY,CAAA;QACzB,YAAY,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;QACzC,YAAY,EAAE,aAAa,CAAA;QAC3B,aAAa,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC,CAAA;KAC5C;gBAXM,KAAK,EAAE;QACZ,IAAI,CAAC,EAAE,QAAQ,CAAA;QACf,MAAM,CAAC,EAAE,UAAU,CAAA;QACnB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,UAAU,CAAC,EAAE,OAAO,CAAA;QACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;QACf,WAAW,EAAE,YAAY,CAAA;QACzB,YAAY,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;QACzC,YAAY,EAAE,aAAa,CAAA;QAC3B,aAAa,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC,CAAA;KAC5C;CAEJ;AAED,qBAAa,0BAA0B,CACrC,YAAY,SAAS,MAAM,EAC3B,aAAa,SAAS,MAAM,CAC5B,SAAQ,iBAAiB,CAAC,YAAY,EAAE,aAAa,CAAC;IACtD,MAAM,CAAC,QAAQ,CAAC,YAAY,SAAS,MAAM,EAAE,aAAa,SAAS,MAAM,EACvE,EAAE,EAAE,iBAAiB,CAAC,YAAY,EAAE,aAAa,CAAC,GACjD,0BAA0B,CAAC,YAAY,EAAE,aAAa,CAAC;IAK1D,KAAK,CACH,IAAI,EAAE,YAAY,GACjB,0BAA0B,CAAC,YAAY,EAAE,aAAa,CAAC;IAS1D,MAAM,CACJ,MAAM,EAAE,QAAQ,GACf,0BAA0B,CAAC,YAAY,EAAE,aAAa,CAAC;IAS1D,OAAO,CACL,GAAG,IAAI,EAAE,MAAM,EAAE,GAChB,0BAA0B,CAAC,YAAY,EAAE,aAAa,CAAC;IAS1D,KAAK,CAAC,OAAO,SAAS,MAAM,EAC1B,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,GAC7B,0BAA0B,CAAC,OAAO,EAAE,aAAa,CAAC;IAQrD,MAAM,CAAC,OAAO,SAAS,MAAM,EAC3B,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,GAC9B,0BAA0B,CAAC,YAAY,EAAE,OAAO,CAAC;CAOrD;AAED,MAAM,MAAM,+BAA+B,GAAG,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAE/E,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,OAAO,GACZ,IAAI,IAAI,+BAA+B,CAYzC"}
1
+ {"version":3,"file":"procedure.d.ts","sourceRoot":"","sources":["../../src/procedure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,MAAM,EACN,WAAW,EACX,YAAY,EACb,MAAM,SAAS,CAAA;AAEhB,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAChB;AAED,qBAAa,iBAAiB,CAC5B,YAAY,SAAS,MAAM,EAC3B,aAAa,SAAS,MAAM;IAGnB,KAAK,EAAE;QACZ,IAAI,CAAC,EAAE,QAAQ,CAAA;QACf,MAAM,CAAC,EAAE,UAAU,CAAA;QACnB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,UAAU,CAAC,EAAE,OAAO,CAAA;QACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;QACf,WAAW,EAAE,YAAY,CAAA;QACzB,YAAY,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;QACzC,YAAY,EAAE,aAAa,CAAA;QAC3B,aAAa,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC,CAAA;KAC5C;gBAXM,KAAK,EAAE;QACZ,IAAI,CAAC,EAAE,QAAQ,CAAA;QACf,MAAM,CAAC,EAAE,UAAU,CAAA;QACnB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,UAAU,CAAC,EAAE,OAAO,CAAA;QACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;QACf,WAAW,EAAE,YAAY,CAAA;QACzB,YAAY,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;QACzC,YAAY,EAAE,aAAa,CAAA;QAC3B,aAAa,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC,CAAA;KAC5C;CAEJ;AAED,qBAAa,0BAA0B,CACrC,YAAY,SAAS,MAAM,EAC3B,aAAa,SAAS,MAAM,CAC5B,SAAQ,iBAAiB,CAAC,YAAY,EAAE,aAAa,CAAC;IACtD,MAAM,CAAC,QAAQ,CAAC,YAAY,SAAS,MAAM,EAAE,aAAa,SAAS,MAAM,EACvE,EAAE,EAAE,iBAAiB,CAAC,YAAY,EAAE,aAAa,CAAC,GACjD,0BAA0B,CAAC,YAAY,EAAE,aAAa,CAAC;IAM1D,KAAK,CACH,IAAI,EAAE,YAAY,GACjB,0BAA0B,CAAC,YAAY,EAAE,aAAa,CAAC;IAS1D,MAAM,CACJ,MAAM,EAAE,QAAQ,GACf,0BAA0B,CAAC,YAAY,EAAE,aAAa,CAAC;IAU1D,OAAO,CACL,GAAG,IAAI,EAAE,MAAM,EAAE,GAChB,0BAA0B,CAAC,YAAY,EAAE,aAAa,CAAC;IAU1D,KAAK,CAAC,OAAO,SAAS,MAAM,EAC1B,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,GAC7B,0BAA0B,CAAC,OAAO,EAAE,aAAa,CAAC;IAQrD,MAAM,CAAC,OAAO,SAAS,MAAM,EAC3B,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,GAC9B,0BAA0B,CAAC,YAAY,EAAE,OAAO,CAAC;CAOrD;AAED,MAAM,MAAM,+BAA+B,GAAG,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAE/E,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,OAAO,GACZ,IAAI,IAAI,+BAA+B,CAazC"}
@@ -1 +1 @@
1
- {"version":3,"file":"router-builder.d.ts","sourceRoot":"","sources":["../../src/router-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,qBAAa,qBAAqB;IACb,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,QAAQ,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE;gBAA9C,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,QAAQ,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE;IAEjE,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,qBAAqB;IAO/C,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,qBAAqB;IAS9C,MAAM,CAAC,CAAC,SAAS,cAAc,EAAE,MAAM,EAAE,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;CAoBtE"}
1
+ {"version":3,"file":"router-builder.d.ts","sourceRoot":"","sources":["../../src/router-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGvC,qBAAa,qBAAqB;IACb,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,QAAQ,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE;gBAA9C,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,QAAQ,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE;IAEjE,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,qBAAqB;IAO/C,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,qBAAqB;IAU9C,MAAM,CAAC,CAAC,SAAS,cAAc,EAAE,MAAM,EAAE,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;CAqBtE"}
@@ -1,3 +1,4 @@
1
+ import type { SchemaInput, SchemaOutput } from './types';
1
2
  import { type ContractProcedure, type DecoratedContractProcedure, type WELL_DEFINED_CONTRACT_PROCEDURE } from './procedure';
2
3
  export interface ContractRouter {
3
4
  [k: string]: ContractProcedure<any, any> | ContractRouter;
@@ -6,4 +7,10 @@ export type HandledContractRouter<TContract extends ContractRouter> = {
6
7
  [K in keyof TContract]: TContract[K] extends ContractProcedure<infer UInputSchema, infer UOutputSchema> ? DecoratedContractProcedure<UInputSchema, UOutputSchema> : TContract[K] extends ContractRouter ? HandledContractRouter<TContract[K]> : never;
7
8
  };
8
9
  export declare function eachContractRouterLeaf(router: ContractRouter, callback: (item: WELL_DEFINED_CONTRACT_PROCEDURE, path: string[]) => void, prefix?: string[]): void;
10
+ export type InferContractRouterInputs<T extends ContractRouter> = {
11
+ [K in keyof T]: T[K] extends ContractProcedure<infer UInputSchema, any> ? SchemaInput<UInputSchema> : T[K] extends ContractRouter ? InferContractRouterInputs<T[K]> : never;
12
+ };
13
+ export type InferContractRouterOutputs<T extends ContractRouter> = {
14
+ [K in keyof T]: T[K] extends ContractProcedure<any, infer UOutputSchema> ? SchemaOutput<UOutputSchema> : T[K] extends ContractRouter ? InferContractRouterOutputs<T[K]> : never;
15
+ };
9
16
  //# sourceMappingURL=router.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,0BAA0B,EAC/B,KAAK,+BAA+B,EAErC,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,cAAc;IAC7B,CAAC,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,cAAc,CAAA;CAC1D;AAED,MAAM,MAAM,qBAAqB,CAAC,SAAS,SAAS,cAAc,IAAI;KACnE,CAAC,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,iBAAiB,CAC5D,MAAM,YAAY,EAClB,MAAM,aAAa,CACpB,GACG,0BAA0B,CAAC,YAAY,EAAE,aAAa,CAAC,GACvD,SAAS,CAAC,CAAC,CAAC,SAAS,cAAc,GACjC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GACnC,KAAK;CACZ,CAAA;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,CAAC,IAAI,EAAE,+BAA+B,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,EACzE,MAAM,GAAE,MAAM,EAAO,QAWtB"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACxD,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,0BAA0B,EAE/B,KAAK,+BAA+B,EACrC,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,cAAc;IAC7B,CAAC,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,cAAc,CAAA;CAC1D;AAED,MAAM,MAAM,qBAAqB,CAAC,SAAS,SAAS,cAAc,IAAI;KACnE,CAAC,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,iBAAiB,CAC5D,MAAM,YAAY,EAClB,MAAM,aAAa,CACpB,GACG,0BAA0B,CAAC,YAAY,EAAE,aAAa,CAAC,GACvD,SAAS,CAAC,CAAC,CAAC,SAAS,cAAc,GACjC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GACnC,KAAK;CACZ,CAAA;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,CAAC,IAAI,EAAE,+BAA+B,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,EACzE,MAAM,GAAE,MAAM,EAAO,QAYtB;AAED,MAAM,MAAM,yBAAyB,CAAC,CAAC,SAAS,cAAc,IAAI;KAC/D,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,iBAAiB,CAAC,MAAM,YAAY,EAAE,GAAG,CAAC,GACnE,WAAW,CAAC,YAAY,CAAC,GACzB,CAAC,CAAC,CAAC,CAAC,SAAS,cAAc,GACzB,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAC/B,KAAK;CACZ,CAAA;AAED,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,cAAc,IAAI;KAChE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,iBAAiB,CAAC,GAAG,EAAE,MAAM,aAAa,CAAC,GACpE,YAAY,CAAC,aAAa,CAAC,GAC3B,CAAC,CAAC,CAAC,CAAC,SAAS,cAAc,GACzB,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAChC,KAAK;CACZ,CAAA"}
@@ -1,4 +1,4 @@
1
- import type { ZodType, input, output } from 'zod';
1
+ import type { input, output, ZodType } from 'zod';
2
2
  export type HTTPPath = `/${string}`;
3
3
  export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
4
4
  export type HTTPStatus = number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAA;AAEjD,MAAM,MAAM,QAAQ,GAAG,IAAI,MAAM,EAAE,CAAA;AACnC,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAA;AACpE,MAAM,MAAM,UAAU,GAAG,MAAM,CAAA;AAE/B,MAAM,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS,CAAA;AAEvD,MAAM,MAAM,WAAW,CACrB,OAAO,SAAS,MAAM,EACtB,SAAS,GAAG,OAAO,IACjB,OAAO,SAAS,SAAS,GACzB,SAAS,GACT,OAAO,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GACpC,KAAK,CAAC,OAAO,CAAC,GACd,SAAS,CAAA;AAEf,MAAM,MAAM,YAAY,CACtB,OAAO,SAAS,MAAM,EACtB,SAAS,GAAG,OAAO,IACjB,OAAO,SAAS,SAAS,GACzB,SAAS,GACT,OAAO,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GACpC,MAAM,CAAC,OAAO,CAAC,GACf,SAAS,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAEjD,MAAM,MAAM,QAAQ,GAAG,IAAI,MAAM,EAAE,CAAA;AACnC,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAA;AACpE,MAAM,MAAM,UAAU,GAAG,MAAM,CAAA;AAE/B,MAAM,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS,CAAA;AAEvD,MAAM,MAAM,WAAW,CACrB,OAAO,SAAS,MAAM,EACtB,SAAS,GAAG,OAAO,IACjB,OAAO,SAAS,SAAS,GACzB,SAAS,GACT,OAAO,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GACpC,KAAK,CAAC,OAAO,CAAC,GACd,SAAS,CAAA;AAEf,MAAM,MAAM,YAAY,CACtB,OAAO,SAAS,MAAM,EACtB,SAAS,GAAG,OAAO,IACjB,OAAO,SAAS,SAAS,GACzB,SAAS,GACT,OAAO,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GACpC,MAAM,CAAC,OAAO,CAAC,GACf,SAAS,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAE5D;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAQzE"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAE5D;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAUzE"}
@@ -1 +1 @@
1
- {"fileNames":["../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.7.1-rc/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/@types+react@18.3.12/node_modules/@types/react/global.d.ts","../../../node_modules/.pnpm/csstype@3.1.3/node_modules/csstype/index.d.ts","../../../node_modules/.pnpm/@types+prop-types@15.7.13/node_modules/@types/prop-types/index.d.ts","../../../node_modules/.pnpm/@types+react@18.3.12/node_modules/@types/react/index.d.ts","../../../node_modules/.pnpm/@types+react@18.3.12/node_modules/@types/react/jsx-runtime.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/typeAliases.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/util.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/ZodError.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/locales/en.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/errors.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/parseUtil.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/enumUtil.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/errorUtil.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/partialUtil.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/types.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/external.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/index.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/index.d.ts","../src/types.ts","../src/procedure.ts","../src/router.ts","../src/router-builder.ts","../src/builder.ts","../src/constants.ts","../src/utils.ts","../src/index.ts"],"fileIdsList":[[58,59,60],[61],[74],[63,64,74],[65,66],[63,64,65,67,68,72],[64,65],[73],[65],[63,64,65,68,69,70,71],[62,76,77,78,79],[62],[62,76,77,78,80,81,82],[62,76],[62,76,77,78],[62,77],[62,75]],"fileInfos":[{"version":"e41c290ef7dd7dab3493e6cbe5909e0148edf4a8dad0271be08edec368a0f7b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"62bb211266ee48b2d0edf0d8d1b191f0c24fc379a82bd4c1692a082c540bc6b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"f1e2a172204962276504466a6393426d2ca9c54894b1ad0a6c9dad867a65f876","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"36a2e4c9a67439aca5f91bb304611d5ae6e20d420503e96c230cf8fcdc948d94","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"ed6b820c54de95b2510bb673490d61c7f2187f532a339d8d04981645a918961f","impliedFormat":1},{"version":"aa17748c522bd586f8712b1a308ea23af59c309b2fd278f6d4f406647c72e659","affectsGlobalScope":true,"impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"5487b97cfa28b26b4a9ef0770f872bdbebd4c46124858de00f242c3eed7519f4","impliedFormat":1},{"version":"c2869c4f2f79fd2d03278a68ce7c061a5a8f4aed59efb655e25fe502e3e471d5","impliedFormat":1},{"version":"b8fe42dbf4b0efba2eb4dbfb2b95a3712676717ff8469767dc439e75d0c1a3b6","impliedFormat":1},{"version":"8485b6da53ec35637d072e516631d25dae53984500de70a6989058f24354666f","impliedFormat":1},{"version":"ebe80346928736532e4a822154eb77f57ef3389dbe2b3ba4e571366a15448ef2","impliedFormat":1},{"version":"83306c97a4643d78420f082547ea0d488a0d134c922c8e65fc0b4f08ef66d92b","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"98a9cc18f661d28e6bd31c436e1984f3980f35e0f0aa9cf795c54f8ccb667ffe","impliedFormat":1},{"version":"c76b0c5727302341d0bdfa2cc2cee4b19ff185b554edb6e8543f0661d8487116","impliedFormat":1},{"version":"dccd26a5c85325a011aff40f401e0892bd0688d44132ba79e803c67e68fffea5","impliedFormat":1},{"version":"f5ef066942e4f0bd98200aa6a6694b831e73200c9b3ade77ad0aa2409e8fe1b1","impliedFormat":1},{"version":"b9e99cd94f4166a245f5158f7286c05406e2a4c694619bceb7a4f3519d1d768e","impliedFormat":1},{"version":"5568d7c32e5cf5f35e092649f4e5e168c3114c800b1d7545b7ae5e0415704802","impliedFormat":1},{"version":"beeb637bd5cd2599fb918b41849ddbb69ea57594cb68dbe5a6983581bd792f2c","signature":"e1d6eb1b79f8a620b113630d9583732d5b141a908420a36723e9e93559371fa0"},{"version":"4f6bad0be77fd0112e018f766f45945dbca23c9789120cc75df4dff9f9b1d0a9","signature":"92523237895f96fdb73233b41807f16c9586032cc58e10777c9b44466b232121"},{"version":"b24b0f46298b80a3fb8afdf19d179542de86b7d9673a188e4f2eba0514b0fa20","signature":"ffe7fc04eecc9ec70c1a8947ee8222efd3d09c08f81a82a20724fd357207b191"},{"version":"06fd6e26b4d291e09bf49822770ed7ec121c2d9bea7896f5a2bd893120f287a5","signature":"40e6a5252b059c72bdf941ef3e3554b2d594b3afb2b3d960fc99e45dc111db6b"},{"version":"2d3de6da18862d7ae25abfc48c4469dd5edd7b154f34b879f41e8dbda2647ccd","signature":"1e79de246e97a10153eb69142c31a1c30f4af84c16566cac514f05144cbcddc4"},{"version":"09c71b329e2998997dc43b4ca46302bf0d4ca6f1e0769f5f8e5fcccbcf86d8ab","signature":"5cc386bba6024e9e937e97db6bc9b02aafc9450109fa0dee4ad64c34f2d99779"},{"version":"4e6f700c72823591310fd692144effefe08ea007c8d980310c6a27cb19465fba","signature":"6c418dc23ed07c2d22255b3fe284dc06aa33bda643457144a8d07e48669135e6"},{"version":"732649b7018adb1bba48b07681ee2f2dabb09f77dd72c5d31e49eda63e6c3d7c","signature":"332bba04d0943565dc5346621a3a399e18885bc2ca809072f63c0806bfcdfcd3"}],"root":[[76,83]],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"jsx":4,"module":7,"noImplicitOverride":true,"noUncheckedIndexedAccess":true,"noUncheckedSideEffectImports":true,"outDir":"./","skipLibCheck":true,"strict":true,"target":9,"useDefineForClassFields":true},"referencedMap":[[61,1],[62,2],[75,3],[65,4],[67,5],[73,6],[68,7],[71,3],[74,8],[66,9],[72,10],[80,11],[81,12],[83,13],[77,14],[79,15],[78,16],[76,17],[82,14]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83],"latestChangedDtsFile":"./src/index.d.ts","checkPending":true,"version":"5.7.1-rc"}
1
+ {"fileNames":["../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.7.2/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/@types+react@18.3.12/node_modules/@types/react/global.d.ts","../../../node_modules/.pnpm/csstype@3.1.3/node_modules/csstype/index.d.ts","../../../node_modules/.pnpm/@types+prop-types@15.7.13/node_modules/@types/prop-types/index.d.ts","../../../node_modules/.pnpm/@types+react@18.3.12/node_modules/@types/react/index.d.ts","../../../node_modules/.pnpm/@types+react@18.3.12/node_modules/@types/react/jsx-runtime.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/typeAliases.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/util.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/ZodError.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/locales/en.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/errors.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/parseUtil.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/enumUtil.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/errorUtil.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/partialUtil.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/types.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/external.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/index.d.ts","../../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/index.d.ts","../src/types.ts","../src/procedure.ts","../src/router.ts","../src/router-builder.ts","../src/builder.ts","../src/constants.ts","../src/utils.ts","../src/index.ts"],"fileIdsList":[[58,59,60],[61],[74],[63,64,74],[65,66],[63,64,65,67,68,72],[64,65],[73],[65],[63,64,65,68,69,70,71],[62,76,77,78,79],[62],[62,76,77,78,80,81,82],[62,76],[62,76,77,78],[62,76,77],[62,75]],"fileInfos":[{"version":"e41c290ef7dd7dab3493e6cbe5909e0148edf4a8dad0271be08edec368a0f7b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"62bb211266ee48b2d0edf0d8d1b191f0c24fc379a82bd4c1692a082c540bc6b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"f1e2a172204962276504466a6393426d2ca9c54894b1ad0a6c9dad867a65f876","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"36a2e4c9a67439aca5f91bb304611d5ae6e20d420503e96c230cf8fcdc948d94","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"ed6b820c54de95b2510bb673490d61c7f2187f532a339d8d04981645a918961f","impliedFormat":1},{"version":"aa17748c522bd586f8712b1a308ea23af59c309b2fd278f6d4f406647c72e659","affectsGlobalScope":true,"impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"5487b97cfa28b26b4a9ef0770f872bdbebd4c46124858de00f242c3eed7519f4","impliedFormat":1},{"version":"c2869c4f2f79fd2d03278a68ce7c061a5a8f4aed59efb655e25fe502e3e471d5","impliedFormat":1},{"version":"b8fe42dbf4b0efba2eb4dbfb2b95a3712676717ff8469767dc439e75d0c1a3b6","impliedFormat":1},{"version":"8485b6da53ec35637d072e516631d25dae53984500de70a6989058f24354666f","impliedFormat":1},{"version":"ebe80346928736532e4a822154eb77f57ef3389dbe2b3ba4e571366a15448ef2","impliedFormat":1},{"version":"83306c97a4643d78420f082547ea0d488a0d134c922c8e65fc0b4f08ef66d92b","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"98a9cc18f661d28e6bd31c436e1984f3980f35e0f0aa9cf795c54f8ccb667ffe","impliedFormat":1},{"version":"c76b0c5727302341d0bdfa2cc2cee4b19ff185b554edb6e8543f0661d8487116","impliedFormat":1},{"version":"dccd26a5c85325a011aff40f401e0892bd0688d44132ba79e803c67e68fffea5","impliedFormat":1},{"version":"f5ef066942e4f0bd98200aa6a6694b831e73200c9b3ade77ad0aa2409e8fe1b1","impliedFormat":1},{"version":"b9e99cd94f4166a245f5158f7286c05406e2a4c694619bceb7a4f3519d1d768e","impliedFormat":1},{"version":"5568d7c32e5cf5f35e092649f4e5e168c3114c800b1d7545b7ae5e0415704802","impliedFormat":1},{"version":"153be41d5211bf58f172a62610a788d39b9ea48065cca3a93700a56f9f358a3c","signature":"0f2dbe9fce173b2c5c10df4a97157d7cb6b082af310abe70759572eef943d3df"},{"version":"6f2c35eb86ba29841d341129ddc8167922d2de9debc11f37a6be2cf29d463d9a","signature":"92523237895f96fdb73233b41807f16c9586032cc58e10777c9b44466b232121"},{"version":"b59ee36d1eac2fcf2895634a83e6bca43d22870c07e9a195b014d0b2d3c7d4fd","signature":"649ef9f17aada1037b29b13da8d7be3fca68661add5f0c423408ab402e3e4c95"},{"version":"1a716331ed29e665f72f1fe730f07c7e9abaca4e5734834753f5847a3c22e813","signature":"40e6a5252b059c72bdf941ef3e3554b2d594b3afb2b3d960fc99e45dc111db6b"},{"version":"df12b0d62e4176fe2a86aa6afc1c3ede1989db925818b0f28c54a4f92286ed50","signature":"c525b73cc35a91182a74352d183af74c84c7dab2b0bcb7af7f28913ee5f834da"},{"version":"09c71b329e2998997dc43b4ca46302bf0d4ca6f1e0769f5f8e5fcccbcf86d8ab","signature":"5cc386bba6024e9e937e97db6bc9b02aafc9450109fa0dee4ad64c34f2d99779"},{"version":"9283f04b75500569cf2865fe93419666c77ff7c3f134673243f6052abe0406d6","signature":"6c418dc23ed07c2d22255b3fe284dc06aa33bda643457144a8d07e48669135e6"},{"version":"732649b7018adb1bba48b07681ee2f2dabb09f77dd72c5d31e49eda63e6c3d7c","signature":"332bba04d0943565dc5346621a3a399e18885bc2ca809072f63c0806bfcdfcd3"}],"root":[[76,83]],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"jsx":4,"module":7,"noImplicitOverride":true,"noUncheckedIndexedAccess":true,"noUncheckedSideEffectImports":true,"outDir":"./","skipLibCheck":true,"strict":true,"target":9,"useDefineForClassFields":true},"referencedMap":[[61,1],[62,2],[75,3],[65,4],[67,5],[73,6],[68,7],[71,3],[74,8],[66,9],[72,10],[80,11],[81,12],[83,13],[77,14],[79,15],[78,16],[76,17],[82,14]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83],"latestChangedDtsFile":"./src/index.d.ts","checkPending":true,"version":"5.7.2"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@orpc/contract",
3
3
  "type": "module",
4
- "version": "0.0.3",
4
+ "version": "0.1.0",
5
5
  "author": {
6
6
  "name": "unnoq",
7
7
  "email": "contact@unnoq.com",
@@ -35,14 +35,15 @@
35
35
  "dist",
36
36
  "src"
37
37
  ],
38
- "dependencies": {
39
- "@orpc/shared": "0.0.4"
40
- },
41
38
  "peerDependencies": {
42
39
  "zod": "^3"
43
40
  },
41
+ "dependencies": {
42
+ "@orpc/shared": "0.0.5"
43
+ },
44
44
  "scripts": {
45
- "build": "tsup --entry.index=src/index.ts --clean --sourcemap --splitting --format=esm --onSuccess='tsc -b --noCheck'",
45
+ "build": "tsup --clean --sourcemap --entry.index=src/index.ts --format=esm --onSuccess='tsc -b --noCheck'",
46
+ "build:watch": "pnpm run build --watch",
46
47
  "type:check": "tsc -b"
47
48
  }
48
49
  }
@@ -2,7 +2,7 @@ import { z } from 'zod'
2
2
  import { type DecoratedContractProcedure, oc } from '.'
3
3
 
4
4
  describe('define a procedure', () => {
5
- test('use route method', () => {
5
+ it('use route method', () => {
6
6
  const procedure = oc.route({
7
7
  method: 'GET',
8
8
  path: '/users/{id}',
@@ -26,7 +26,7 @@ describe('define a procedure', () => {
26
26
  })
27
27
  })
28
28
 
29
- test('use input method', () => {
29
+ it('use input method', () => {
30
30
  const schema = z.object({
31
31
  id: z.string(),
32
32
  })
@@ -43,7 +43,7 @@ describe('define a procedure', () => {
43
43
  })
44
44
  })
45
45
 
46
- test('use output method', () => {
46
+ it('use output method', () => {
47
47
  const schema = z.object({ id: z.string() })
48
48
 
49
49
  const procedure = oc.output(schema, { id: '123' })
package/src/builder.ts CHANGED
@@ -1,18 +1,18 @@
1
- import { DecoratedContractProcedure, type RouteOptions } from './procedure'
2
1
  import type { ContractRouter } from './router'
3
- import { ContractRouterBuilder } from './router-builder'
4
2
  import type { HTTPPath, Schema, SchemaInput, SchemaOutput } from './types'
3
+ import { DecoratedContractProcedure, type RouteOptions } from './procedure'
4
+ import { ContractRouterBuilder } from './router-builder'
5
5
 
6
6
  export class ContractBuilder {
7
7
  prefix(prefix: HTTPPath): ContractRouterBuilder {
8
8
  return new ContractRouterBuilder({
9
- prefix: prefix,
9
+ prefix,
10
10
  })
11
11
  }
12
12
 
13
13
  tags(...tags: string[]): ContractRouterBuilder {
14
14
  return new ContractRouterBuilder({
15
- tags: tags,
15
+ tags,
16
16
  })
17
17
  }
18
18
 
@@ -1,8 +1,8 @@
1
+ import type { DecoratedContractProcedure } from './procedure'
1
2
  import { z } from 'zod'
2
3
  import { isContractProcedure, oc } from '.'
3
- import type { DecoratedContractProcedure } from './procedure'
4
4
 
5
- test('prefix method', () => {
5
+ it('prefix method', () => {
6
6
  const os = oc
7
7
  const p1 = os.route({
8
8
  method: 'GET',
@@ -17,7 +17,7 @@ test('prefix method', () => {
17
17
  expect(p2.prefix('/1').prefix('/2').zz$cp.path).toEqual(undefined)
18
18
  })
19
19
 
20
- test('route method', () => {
20
+ it('route method', () => {
21
21
  const p = oc
22
22
  .route({
23
23
  method: 'POST',
@@ -45,7 +45,7 @@ test('route method', () => {
45
45
  })
46
46
  })
47
47
 
48
- test('input method', () => {
48
+ it('input method', () => {
49
49
  const schema = z.string()
50
50
  const p = oc.route({}).input(schema)
51
51
 
@@ -59,7 +59,7 @@ test('input method', () => {
59
59
  })
60
60
  })
61
61
 
62
- test('output method', () => {
62
+ it('output method', () => {
63
63
  const schema = z.string()
64
64
  const p = oc.route({}).output(schema)
65
65
 
@@ -88,7 +88,7 @@ it('addTags method', () => {
88
88
  expect(p3.zz$cp.tags).toEqual(['foo', 'bar', 'baz'])
89
89
  })
90
90
 
91
- test('isContractProcedure function', () => {
91
+ it('isContractProcedure function', () => {
92
92
  expect(isContractProcedure(oc)).toBe(false)
93
93
  expect(isContractProcedure(oc.router({}))).toBe(false)
94
94
  expect(isContractProcedure(oc.route({}))).toBe(true)
package/src/procedure.ts CHANGED
@@ -42,7 +42,8 @@ export class DecoratedContractProcedure<
42
42
  static decorate<TInputSchema extends Schema, TOutputSchema extends Schema>(
43
43
  cp: ContractProcedure<TInputSchema, TOutputSchema>,
44
44
  ): DecoratedContractProcedure<TInputSchema, TOutputSchema> {
45
- if (cp instanceof DecoratedContractProcedure) return cp
45
+ if (cp instanceof DecoratedContractProcedure)
46
+ return cp
46
47
  return new DecoratedContractProcedure(cp.zz$cp)
47
48
  }
48
49
 
@@ -60,7 +61,8 @@ export class DecoratedContractProcedure<
60
61
  prefix(
61
62
  prefix: HTTPPath,
62
63
  ): DecoratedContractProcedure<TInputSchema, TOutputSchema> {
63
- if (!this.zz$cp.path) return this
64
+ if (!this.zz$cp.path)
65
+ return this
64
66
 
65
67
  return new DecoratedContractProcedure({
66
68
  ...this.zz$cp,
@@ -71,7 +73,8 @@ export class DecoratedContractProcedure<
71
73
  addTags(
72
74
  ...tags: string[]
73
75
  ): DecoratedContractProcedure<TInputSchema, TOutputSchema> {
74
- if (!tags.length) return this
76
+ if (!tags.length)
77
+ return this
75
78
 
76
79
  return new DecoratedContractProcedure({
77
80
  ...this.zz$cp,
@@ -107,15 +110,16 @@ export type WELL_DEFINED_CONTRACT_PROCEDURE = ContractProcedure<Schema, Schema>
107
110
  export function isContractProcedure(
108
111
  item: unknown,
109
112
  ): item is WELL_DEFINED_CONTRACT_PROCEDURE {
110
- if (item instanceof ContractProcedure) return true
113
+ if (item instanceof ContractProcedure)
114
+ return true
111
115
 
112
116
  return (
113
- (typeof item === 'object' || typeof item === 'function') &&
114
- item !== null &&
115
- 'zz$cp' in item &&
116
- typeof item.zz$cp === 'object' &&
117
- item.zz$cp !== null &&
118
- 'InputSchema' in item.zz$cp &&
119
- 'OutputSchema' in item.zz$cp
117
+ (typeof item === 'object' || typeof item === 'function')
118
+ && item !== null
119
+ && 'zz$cp' in item
120
+ && typeof item.zz$cp === 'object'
121
+ && item.zz$cp !== null
122
+ && 'InputSchema' in item.zz$cp
123
+ && 'OutputSchema' in item.zz$cp
120
124
  )
121
125
  }
@@ -2,15 +2,15 @@ import { z } from 'zod'
2
2
  import { ContractProcedure, DecoratedContractProcedure, oc } from '.'
3
3
  import { ContractRouterBuilder } from './router-builder'
4
4
 
5
- test('prefix method', () => {
5
+ it('prefix method', () => {
6
6
  expect(oc.prefix('/1').prefix('/2').zz$crb.prefix).toEqual('/1/2')
7
7
  })
8
8
 
9
- test('tags method', () => {
9
+ it('tags method', () => {
10
10
  expect(oc.tags('1').tags('2').zz$crb.tags).toEqual(['1', '2'])
11
11
  })
12
12
 
13
- test('define a router', () => {
13
+ it('define a router', () => {
14
14
  const ping = oc.route({ method: 'GET', path: '/ping' })
15
15
  const pong = oc.input(z.object({ id: z.string() }))
16
16
 
@@ -22,11 +22,11 @@ test('define a router', () => {
22
22
  .prefix('/internal')
23
23
  .tags('internal')
24
24
  .router({
25
- ping: ping,
26
- pong: pong,
25
+ ping,
26
+ pong,
27
27
 
28
28
  nested: {
29
- ping: ping,
29
+ ping,
30
30
  },
31
31
  }),
32
32
  })
@@ -1,9 +1,9 @@
1
- import { DecoratedContractProcedure, isContractProcedure } from './procedure'
2
1
  import type { ContractRouter, HandledContractRouter } from './router'
3
2
  import type { HTTPPath } from './types'
3
+ import { DecoratedContractProcedure, isContractProcedure } from './procedure'
4
4
 
5
5
  export class ContractRouterBuilder {
6
- constructor(public zz$crb: { prefix?: HTTPPath; tags?: string[] }) {}
6
+ constructor(public zz$crb: { prefix?: HTTPPath, tags?: string[] }) {}
7
7
 
8
8
  prefix(prefix: HTTPPath): ContractRouterBuilder {
9
9
  return new ContractRouterBuilder({
@@ -13,7 +13,8 @@ export class ContractRouterBuilder {
13
13
  }
14
14
 
15
15
  tags(...tags: string[]): ContractRouterBuilder {
16
- if (!tags.length) return this
16
+ if (!tags.length)
17
+ return this
17
18
 
18
19
  return new ContractRouterBuilder({
19
20
  ...this.zz$crb,
@@ -34,7 +35,8 @@ export class ContractRouterBuilder {
34
35
  handled[key] = this.zz$crb.prefix
35
36
  ? decorated.prefix(this.zz$crb.prefix)
36
37
  : decorated
37
- } else {
38
+ }
39
+ else {
38
40
  handled[key] = this.router(item as ContractRouter)
39
41
  }
40
42
  }
@@ -0,0 +1,63 @@
1
+ import type { InferContractRouterInputs, InferContractRouterOutputs } from '.'
2
+ import { z } from 'zod'
3
+ import { oc } from '.'
4
+
5
+ const router = {
6
+ ping: oc.route({
7
+ method: 'GET',
8
+ path: '/ping',
9
+ })
10
+ .input(z.object({
11
+ ping: z.string().transform(() => 1),
12
+ }))
13
+ .output(z.object({
14
+ pong: z.string().transform(() => 1),
15
+ })),
16
+ user: {
17
+ find: oc.route({
18
+ method: 'GET',
19
+ path: '/users/{id}',
20
+ })
21
+ .input(z.object({
22
+ find: z.number().transform(() => '1'),
23
+ }))
24
+ .output(z.object({
25
+ user: z.object({
26
+ id: z.number().transform(() => '1'),
27
+ }),
28
+ }))
29
+ ,
30
+ },
31
+ }
32
+
33
+ it('InferContractRouterInputs', () => {
34
+ type Inputs = InferContractRouterInputs<typeof router>
35
+
36
+ expectTypeOf<Inputs>().toEqualTypeOf<{
37
+ ping: {
38
+ ping: string
39
+ }
40
+ user: {
41
+ find: {
42
+ find: number
43
+ }
44
+ }
45
+ }>()
46
+ })
47
+
48
+ it('InferContractRouterOutputs', () => {
49
+ type Outputs = InferContractRouterOutputs<typeof router>
50
+
51
+ expectTypeOf<Outputs>().toEqualTypeOf<{
52
+ ping: {
53
+ pong: number
54
+ }
55
+ user: {
56
+ find: {
57
+ user: {
58
+ id: string
59
+ }
60
+ }
61
+ }
62
+ }>()
63
+ })
@@ -1,6 +1,6 @@
1
1
  import { eachContractRouterLeaf, oc } from '.'
2
2
 
3
- test('each router leaf', () => {
3
+ it('each router leaf', () => {
4
4
  const router = {
5
5
  ping: oc.route({
6
6
  method: 'GET',
package/src/router.ts CHANGED
@@ -1,8 +1,9 @@
1
+ import type { SchemaInput, SchemaOutput } from './types'
1
2
  import {
2
3
  type ContractProcedure,
3
4
  type DecoratedContractProcedure,
4
- type WELL_DEFINED_CONTRACT_PROCEDURE,
5
5
  isContractProcedure,
6
+ type WELL_DEFINED_CONTRACT_PROCEDURE,
6
7
  } from './procedure'
7
8
 
8
9
  export interface ContractRouter {
@@ -30,8 +31,25 @@ export function eachContractRouterLeaf(
30
31
 
31
32
  if (isContractProcedure(item)) {
32
33
  callback(item, [...prefix, key])
33
- } else {
34
+ }
35
+ else {
34
36
  eachContractRouterLeaf(item as ContractRouter, callback, [...prefix, key])
35
37
  }
36
38
  }
37
39
  }
40
+
41
+ export type InferContractRouterInputs<T extends ContractRouter> = {
42
+ [K in keyof T]: T[K] extends ContractProcedure<infer UInputSchema, any>
43
+ ? SchemaInput<UInputSchema>
44
+ : T[K] extends ContractRouter
45
+ ? InferContractRouterInputs<T[K]>
46
+ : never
47
+ }
48
+
49
+ export type InferContractRouterOutputs<T extends ContractRouter> = {
50
+ [K in keyof T]: T[K] extends ContractProcedure<any, infer UOutputSchema>
51
+ ? SchemaOutput<UOutputSchema>
52
+ : T[K] extends ContractRouter
53
+ ? InferContractRouterOutputs<T[K]>
54
+ : never
55
+ }
@@ -1,5 +1,5 @@
1
- import { z } from 'zod'
2
1
  import type { SchemaInput, SchemaOutput } from './types'
2
+ import { z } from 'zod'
3
3
 
4
4
  test('SchemaInput', () => {
5
5
  const schema = z.string()
@@ -9,7 +9,7 @@ test('SchemaInput', () => {
9
9
  })
10
10
 
11
11
  test('SchemaOutput', () => {
12
- const schema = z.string().transform((v) => Number.parseFloat(v))
12
+ const schema = z.string().transform(v => Number.parseFloat(v))
13
13
 
14
14
  expectTypeOf<SchemaOutput<undefined>>().toEqualTypeOf<unknown>()
15
15
  expectTypeOf<SchemaOutput<typeof schema>>().toEqualTypeOf<number>()
package/src/types.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { ZodType, input, output } from 'zod'
1
+ import type { input, output, ZodType } from 'zod'
2
2
 
3
3
  export type HTTPPath = `/${string}`
4
4
  export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'
package/src/utils.test.ts CHANGED
@@ -1,13 +1,13 @@
1
1
  import { prefixHTTPPath, standardizeHTTPPath } from './utils'
2
2
 
3
- test('standardizeHTTPPath', () => {
3
+ it('standardizeHTTPPath', () => {
4
4
  expect(standardizeHTTPPath('/abc')).toBe('/abc')
5
5
  expect(standardizeHTTPPath('/abc/')).toBe('/abc')
6
6
  expect(standardizeHTTPPath('/abc//')).toBe('/abc')
7
7
  expect(standardizeHTTPPath('//abc//')).toBe('/abc')
8
8
  })
9
9
 
10
- test('prefixHTTPPath', () => {
10
+ it('prefixHTTPPath', () => {
11
11
  expect(prefixHTTPPath('/', '/abc')).toBe('/abc')
12
12
  expect(prefixHTTPPath('/', '/abc/')).toBe('/abc')
13
13
  expect(prefixHTTPPath('/', '/abc//')).toBe('/abc')
package/src/utils.ts CHANGED
@@ -8,8 +8,10 @@ export function prefixHTTPPath(prefix: HTTPPath, path: HTTPPath): HTTPPath {
8
8
  const prefix_ = standardizeHTTPPath(prefix)
9
9
  const path_ = standardizeHTTPPath(path)
10
10
 
11
- if (prefix_ === '/') return path_
12
- if (path_ === '/') return prefix_
11
+ if (prefix_ === '/')
12
+ return path_
13
+ if (path_ === '/')
14
+ return prefix_
13
15
 
14
16
  return `${prefix_}${path_}`
15
17
  }