@orpc/openapi 0.0.0-next.31590a1 → 0.0.0-next.32cb70c

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 (35) hide show
  1. package/dist/chunk-Q2LSK6YZ.js +102 -0
  2. package/dist/chunk-SOVQ5ARD.js +650 -0
  3. package/dist/chunk-VFGNQS5W.js +25 -0
  4. package/dist/fetch.js +30 -5
  5. package/dist/hono.js +30 -5
  6. package/dist/index.js +6 -6
  7. package/dist/next.js +30 -5
  8. package/dist/node.js +34 -18
  9. package/dist/src/adapters/fetch/index.d.ts +8 -0
  10. package/dist/src/adapters/fetch/input-structure-compact.d.ts +6 -0
  11. package/dist/src/adapters/fetch/input-structure-detailed.d.ts +11 -0
  12. package/dist/src/adapters/fetch/openapi-handler-server.d.ts +7 -0
  13. package/dist/src/adapters/fetch/openapi-handler-serverless.d.ts +7 -0
  14. package/dist/src/adapters/fetch/openapi-handler.d.ts +28 -6
  15. package/dist/src/adapters/fetch/openapi-payload-codec.d.ts +15 -0
  16. package/dist/src/adapters/fetch/openapi-procedure-matcher.d.ts +19 -0
  17. package/dist/src/adapters/node/index.d.ts +3 -0
  18. package/dist/src/adapters/node/openapi-handler-server.d.ts +7 -0
  19. package/dist/src/adapters/node/openapi-handler-serverless.d.ts +7 -0
  20. package/dist/src/adapters/node/openapi-handler.d.ts +8 -7
  21. package/dist/src/adapters/node/types.d.ts +2 -0
  22. package/dist/src/openapi-generator.d.ts +1 -1
  23. package/dist/src/utils.d.ts +16 -1
  24. package/package.json +5 -10
  25. package/dist/chunk-BHJYKXQL.js +0 -52
  26. package/dist/chunk-HQ34JZI7.js +0 -32
  27. package/dist/chunk-M5HOHBLW.js +0 -432
  28. package/dist/src/adapters/standard/index.d.ts +0 -7
  29. package/dist/src/adapters/standard/openapi-codec.d.ts +0 -18
  30. package/dist/src/adapters/standard/openapi-handler.d.ts +0 -7
  31. package/dist/src/adapters/standard/openapi-matcher.d.ts +0 -20
  32. package/dist/src/adapters/standard/openapi-serializer.d.ts +0 -11
  33. package/dist/standard.js +0 -16
  34. /package/dist/src/adapters/{standard → fetch}/bracket-notation.d.ts +0 -0
  35. /package/dist/src/adapters/{standard → fetch}/schema-coercer.d.ts +0 -0
package/dist/hono.js CHANGED
@@ -1,9 +1,34 @@
1
1
  import {
2
- OpenAPIHandler
3
- } from "./chunk-HQ34JZI7.js";
4
- import "./chunk-M5HOHBLW.js";
5
- import "./chunk-BHJYKXQL.js";
2
+ OpenAPIServerHandler,
3
+ OpenAPIServerlessHandler
4
+ } from "./chunk-VFGNQS5W.js";
5
+ import {
6
+ CompositeSchemaCoercer,
7
+ InputStructureCompact,
8
+ InputStructureDetailed,
9
+ OpenAPIHandler,
10
+ OpenAPIPayloadCodec,
11
+ OpenAPIProcedureMatcher,
12
+ deserialize,
13
+ escapeSegment,
14
+ parsePath,
15
+ serialize,
16
+ stringifyPath
17
+ } from "./chunk-SOVQ5ARD.js";
18
+ import "./chunk-Q2LSK6YZ.js";
6
19
  export {
7
- OpenAPIHandler
20
+ CompositeSchemaCoercer,
21
+ InputStructureCompact,
22
+ InputStructureDetailed,
23
+ OpenAPIHandler,
24
+ OpenAPIPayloadCodec,
25
+ OpenAPIProcedureMatcher,
26
+ OpenAPIServerHandler,
27
+ OpenAPIServerlessHandler,
28
+ deserialize,
29
+ escapeSegment,
30
+ parsePath,
31
+ serialize,
32
+ stringifyPath
8
33
  };
9
34
  //# sourceMappingURL=hono.js.map
package/dist/index.js CHANGED
@@ -1,7 +1,9 @@
1
1
  import {
2
2
  JSONSerializer,
3
+ forEachAllContractProcedure,
4
+ forEachContractProcedure,
3
5
  standardizeHTTPPath
4
- } from "./chunk-BHJYKXQL.js";
6
+ } from "./chunk-Q2LSK6YZ.js";
5
7
 
6
8
  // src/openapi.ts
7
9
  import { OpenApiBuilder } from "openapi3-ts/oas31";
@@ -35,7 +37,6 @@ var OpenAPIContentBuilder = class {
35
37
 
36
38
  // src/openapi-generator.ts
37
39
  import { fallbackContractConfig as fallbackContractConfig2, fallbackORPCErrorStatus } from "@orpc/contract";
38
- import { eachAllContractProcedure } from "@orpc/server";
39
40
  import { group } from "@orpc/shared";
40
41
 
41
42
  // src/openapi-error.ts
@@ -405,10 +406,7 @@ var OpenAPIGenerator = class {
405
406
  openapi: "3.1.1"
406
407
  });
407
408
  const rootTags = doc.tags?.map((tag) => tag.name) ?? [];
408
- await eachAllContractProcedure({
409
- path: [],
410
- router
411
- }, ({ contract, path }) => {
409
+ await forEachAllContractProcedure(router, ({ contract, path }) => {
412
410
  try {
413
411
  const def = contract["~orpc"];
414
412
  if (this.ignoreUndefinedPathProcedures && def.route?.path === void 0) {
@@ -541,6 +539,8 @@ export {
541
539
  OpenAPIPathParser,
542
540
  OpenApiBuilder,
543
541
  SchemaUtils,
542
+ forEachAllContractProcedure,
543
+ forEachContractProcedure,
544
544
  standardizeHTTPPath
545
545
  };
546
546
  //# sourceMappingURL=index.js.map
package/dist/next.js CHANGED
@@ -1,9 +1,34 @@
1
1
  import {
2
- OpenAPIHandler
3
- } from "./chunk-HQ34JZI7.js";
4
- import "./chunk-M5HOHBLW.js";
5
- import "./chunk-BHJYKXQL.js";
2
+ OpenAPIServerHandler,
3
+ OpenAPIServerlessHandler
4
+ } from "./chunk-VFGNQS5W.js";
5
+ import {
6
+ CompositeSchemaCoercer,
7
+ InputStructureCompact,
8
+ InputStructureDetailed,
9
+ OpenAPIHandler,
10
+ OpenAPIPayloadCodec,
11
+ OpenAPIProcedureMatcher,
12
+ deserialize,
13
+ escapeSegment,
14
+ parsePath,
15
+ serialize,
16
+ stringifyPath
17
+ } from "./chunk-SOVQ5ARD.js";
18
+ import "./chunk-Q2LSK6YZ.js";
6
19
  export {
7
- OpenAPIHandler
20
+ CompositeSchemaCoercer,
21
+ InputStructureCompact,
22
+ InputStructureDetailed,
23
+ OpenAPIHandler,
24
+ OpenAPIPayloadCodec,
25
+ OpenAPIProcedureMatcher,
26
+ OpenAPIServerHandler,
27
+ OpenAPIServerlessHandler,
28
+ deserialize,
29
+ escapeSegment,
30
+ parsePath,
31
+ serialize,
32
+ stringifyPath
8
33
  };
9
34
  //# sourceMappingURL=next.js.map
package/dist/node.js CHANGED
@@ -1,30 +1,46 @@
1
1
  import {
2
- OpenAPICodec,
3
- OpenAPIMatcher
4
- } from "./chunk-M5HOHBLW.js";
5
- import "./chunk-BHJYKXQL.js";
2
+ OpenAPIHandler
3
+ } from "./chunk-SOVQ5ARD.js";
4
+ import "./chunk-Q2LSK6YZ.js";
6
5
 
7
6
  // src/adapters/node/openapi-handler.ts
8
- import { nodeHttpResponseSendStandardResponse, nodeHttpToStandardRequest } from "@orpc/server/node";
9
- import { StandardHandler } from "@orpc/server/standard";
10
- var OpenAPIHandler = class {
11
- standardHandler;
12
- constructor(router, options) {
13
- const matcher = options?.matcher ?? new OpenAPIMatcher(options);
14
- const codec = options?.codec ?? new OpenAPICodec(options);
15
- this.standardHandler = new StandardHandler(router, matcher, codec, { ...options });
7
+ import { createRequest, sendResponse } from "@orpc/server/node";
8
+ var OpenAPIHandler2 = class {
9
+ openapiFetchHandler;
10
+ constructor(hono, router, options) {
11
+ this.openapiFetchHandler = new OpenAPIHandler(hono, router, options);
16
12
  }
17
- async handle(req, res, ...rest) {
18
- const standardRequest = nodeHttpToStandardRequest(req, res);
19
- const result = await this.standardHandler.handle(standardRequest, ...rest);
20
- if (!result.matched) {
13
+ async handle(req, res, ...[options]) {
14
+ const request = createRequest(req, res);
15
+ const castedOptions = options ?? {};
16
+ const result = await this.openapiFetchHandler.handle(request, castedOptions);
17
+ if (result.matched === false) {
21
18
  return { matched: false };
22
19
  }
23
- await nodeHttpResponseSendStandardResponse(res, result.response);
20
+ await options?.beforeSend?.(result.response, castedOptions.context);
21
+ await sendResponse(res, result.response);
24
22
  return { matched: true };
25
23
  }
26
24
  };
25
+
26
+ // src/adapters/node/openapi-handler-server.ts
27
+ import { TrieRouter } from "hono/router/trie-router";
28
+ var OpenAPIServerHandler = class extends OpenAPIHandler2 {
29
+ constructor(router, options) {
30
+ super(new TrieRouter(), router, options);
31
+ }
32
+ };
33
+
34
+ // src/adapters/node/openapi-handler-serverless.ts
35
+ import { LinearRouter } from "hono/router/linear-router";
36
+ var OpenAPIServerlessHandler = class extends OpenAPIHandler2 {
37
+ constructor(router, options) {
38
+ super(new LinearRouter(), router, options);
39
+ }
40
+ };
27
41
  export {
28
- OpenAPIHandler
42
+ OpenAPIHandler2 as OpenAPIHandler,
43
+ OpenAPIServerHandler,
44
+ OpenAPIServerlessHandler
29
45
  };
30
46
  //# sourceMappingURL=node.js.map
@@ -1,2 +1,10 @@
1
+ export * from './bracket-notation';
2
+ export * from './input-structure-compact';
3
+ export * from './input-structure-detailed';
1
4
  export * from './openapi-handler';
5
+ export * from './openapi-handler-server';
6
+ export * from './openapi-handler-serverless';
7
+ export * from './openapi-payload-codec';
8
+ export * from './openapi-procedure-matcher';
9
+ export * from './schema-coercer';
2
10
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,6 @@
1
+ import type { Params } from 'hono/router';
2
+ export declare class InputStructureCompact {
3
+ build(params: Params, payload: unknown): unknown;
4
+ }
5
+ export type PublicInputStructureCompact = Pick<InputStructureCompact, keyof InputStructureCompact>;
6
+ //# sourceMappingURL=input-structure-compact.d.ts.map
@@ -0,0 +1,11 @@
1
+ import type { Params } from 'hono/router';
2
+ export declare class InputStructureDetailed {
3
+ build(params: Params, query: unknown, headers: unknown, body: unknown): {
4
+ params: Params;
5
+ query: unknown;
6
+ headers: unknown;
7
+ body: unknown;
8
+ };
9
+ }
10
+ export type PublicInputStructureDetailed = Pick<InputStructureDetailed, keyof InputStructureDetailed>;
11
+ //# sourceMappingURL=input-structure-detailed.d.ts.map
@@ -0,0 +1,7 @@
1
+ import type { Context, Router } from '@orpc/server';
2
+ import type { OpenAPIHandlerOptions } from './openapi-handler';
3
+ import { OpenAPIHandler } from './openapi-handler';
4
+ export declare class OpenAPIServerHandler<T extends Context> extends OpenAPIHandler<T> {
5
+ constructor(router: Router<T, any>, options?: NoInfer<OpenAPIHandlerOptions<T>>);
6
+ }
7
+ //# sourceMappingURL=openapi-handler-server.d.ts.map
@@ -0,0 +1,7 @@
1
+ import type { Context, Router } from '@orpc/server';
2
+ import type { OpenAPIHandlerOptions } from './openapi-handler';
3
+ import { OpenAPIHandler } from './openapi-handler';
4
+ export declare class OpenAPIServerlessHandler<T extends Context> extends OpenAPIHandler<T> {
5
+ constructor(router: Router<T, any>, options?: NoInfer<OpenAPIHandlerOptions<T>>);
6
+ }
7
+ //# sourceMappingURL=openapi-handler-serverless.d.ts.map
@@ -1,10 +1,32 @@
1
1
  import type { Context, Router } from '@orpc/server';
2
- import type { FetchHandler, FetchHandleResult } from '@orpc/server/fetch';
3
- import type { StandardHandleRest } from '@orpc/server/standard';
4
- import type { OpenAPIHandlerOptions } from '../standard';
2
+ import type { FetchHandler, FetchHandleRest, FetchHandleResult } from '@orpc/server/fetch';
3
+ import type { PublicInputStructureCompact } from './input-structure-compact';
4
+ import { type Hooks } from '@orpc/shared';
5
+ import { type PublicJSONSerializer } from '../../json-serializer';
6
+ import { type PublicInputStructureDetailed } from './input-structure-detailed';
7
+ import { type PublicOpenAPIPayloadCodec } from './openapi-payload-codec';
8
+ import { type Hono, type PublicOpenAPIProcedureMatcher } from './openapi-procedure-matcher';
9
+ import { type SchemaCoercer } from './schema-coercer';
10
+ export type OpenAPIHandlerOptions<T extends Context> = Hooks<Request, FetchHandleResult, T, any> & {
11
+ jsonSerializer?: PublicJSONSerializer;
12
+ procedureMatcher?: PublicOpenAPIProcedureMatcher;
13
+ payloadCodec?: PublicOpenAPIPayloadCodec;
14
+ inputBuilderSimple?: PublicInputStructureCompact;
15
+ inputBuilderFull?: PublicInputStructureDetailed;
16
+ schemaCoercers?: SchemaCoercer[];
17
+ };
5
18
  export declare class OpenAPIHandler<T extends Context> implements FetchHandler<T> {
6
- private readonly standardHandler;
7
- constructor(router: Router<T, any>, options?: NoInfer<OpenAPIHandlerOptions<T>>);
8
- handle(request: Request, ...rest: StandardHandleRest<T>): Promise<FetchHandleResult>;
19
+ private readonly options?;
20
+ private readonly procedureMatcher;
21
+ private readonly payloadCodec;
22
+ private readonly inputStructureCompact;
23
+ private readonly inputStructureDetailed;
24
+ private readonly compositeSchemaCoercer;
25
+ constructor(hono: Hono, router: Router<T, any>, options?: NoInfer<OpenAPIHandlerOptions<T>> | undefined);
26
+ handle(request: Request, ...[options]: FetchHandleRest<T>): Promise<FetchHandleResult>;
27
+ private decodeInput;
28
+ private encodeOutput;
29
+ private assertDetailedOutput;
30
+ private convertToORPCError;
9
31
  }
10
32
  //# sourceMappingURL=openapi-handler.d.ts.map
@@ -0,0 +1,15 @@
1
+ import type { PublicJSONSerializer } from '../../json-serializer';
2
+ export declare class OpenAPIPayloadCodec {
3
+ private readonly jsonSerializer;
4
+ constructor(jsonSerializer: PublicJSONSerializer);
5
+ encode(payload: unknown, accept: string | undefined): {
6
+ body: FormData | Blob | string | undefined;
7
+ headers?: Headers;
8
+ };
9
+ private encodeAsJSON;
10
+ private encodeAsFormData;
11
+ private encodeAsURLSearchParams;
12
+ decode(re: Request | Response | Headers | URLSearchParams | FormData): Promise<unknown>;
13
+ }
14
+ export type PublicOpenAPIPayloadCodec = Pick<OpenAPIPayloadCodec, keyof OpenAPIPayloadCodec>;
15
+ //# sourceMappingURL=openapi-payload-codec.d.ts.map
@@ -0,0 +1,19 @@
1
+ import type { AnyProcedure, AnyRouter } from '@orpc/server';
2
+ import type { Router as BaseHono, Params } from 'hono/router';
3
+ export type Hono = BaseHono<[string, string[]]>;
4
+ export declare class OpenAPIProcedureMatcher {
5
+ private readonly hono;
6
+ private readonly router;
7
+ private pendingRouters;
8
+ constructor(hono: Hono, router: AnyRouter);
9
+ match(method: string, pathname: string): Promise<{
10
+ path: string[];
11
+ procedure: AnyProcedure;
12
+ params: Params;
13
+ } | undefined>;
14
+ private add;
15
+ private handlePendingRouters;
16
+ private convertOpenAPIPathToRouterPath;
17
+ }
18
+ export type PublicOpenAPIProcedureMatcher = Pick<OpenAPIProcedureMatcher, keyof OpenAPIProcedureMatcher>;
19
+ //# sourceMappingURL=openapi-procedure-matcher.d.ts.map
@@ -1,2 +1,5 @@
1
1
  export * from './openapi-handler';
2
+ export * from './openapi-handler-server';
3
+ export * from './openapi-handler-serverless';
4
+ export * from './types';
2
5
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,7 @@
1
+ import type { Context, Router } from '@orpc/server';
2
+ import type { OpenAPIHandlerOptions } from '../fetch/openapi-handler';
3
+ import { OpenAPIHandler } from './openapi-handler';
4
+ export declare class OpenAPIServerHandler<T extends Context> extends OpenAPIHandler<T> {
5
+ constructor(router: Router<T, any>, options?: NoInfer<OpenAPIHandlerOptions<T>>);
6
+ }
7
+ //# sourceMappingURL=openapi-handler-server.d.ts.map
@@ -0,0 +1,7 @@
1
+ import type { Context, Router } from '@orpc/server';
2
+ import type { OpenAPIHandlerOptions } from '../fetch/openapi-handler';
3
+ import { OpenAPIHandler } from './openapi-handler';
4
+ export declare class OpenAPIServerlessHandler<T extends Context> extends OpenAPIHandler<T> {
5
+ constructor(router: Router<T, any>, options?: NoInfer<OpenAPIHandlerOptions<T>>);
6
+ }
7
+ //# sourceMappingURL=openapi-handler-serverless.d.ts.map
@@ -1,10 +1,11 @@
1
1
  import type { Context, Router } from '@orpc/server';
2
- import type { NodeHttpHandler, NodeHttpHandleResult, NodeHttpRequest, NodeHttpResponse } from '@orpc/server/node';
3
- import type { StandardHandleRest } from '@orpc/server/standard';
4
- import type { OpenAPIHandlerOptions } from '../standard';
5
- export declare class OpenAPIHandler<T extends Context> implements NodeHttpHandler<T> {
6
- private readonly standardHandler;
7
- constructor(router: Router<T, any>, options?: NoInfer<OpenAPIHandlerOptions<T>>);
8
- handle(req: NodeHttpRequest, res: NodeHttpResponse, ...rest: StandardHandleRest<T>): Promise<NodeHttpHandleResult>;
2
+ import type { IncomingMessage, ServerResponse } from 'node:http';
3
+ import type { OpenAPIHandlerOptions } from '../fetch/openapi-handler';
4
+ import type { Hono } from '../fetch/openapi-procedure-matcher';
5
+ import { type RequestHandler, type RequestHandleRest, type RequestHandleResult } from '@orpc/server/node';
6
+ export declare class OpenAPIHandler<T extends Context> implements RequestHandler<T> {
7
+ private readonly openapiFetchHandler;
8
+ constructor(hono: Hono, router: Router<T, any>, options?: NoInfer<OpenAPIHandlerOptions<T>>);
9
+ handle(req: IncomingMessage, res: ServerResponse, ...[options]: RequestHandleRest<T>): Promise<RequestHandleResult>;
9
10
  }
10
11
  //# sourceMappingURL=openapi-handler.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.d.ts.map
@@ -1,9 +1,9 @@
1
+ import type { AnyRouter } from '@orpc/server';
1
2
  import type { PublicOpenAPIInputStructureParser } from './openapi-input-structure-parser';
2
3
  import type { PublicOpenAPIOutputStructureParser } from './openapi-output-structure-parser';
3
4
  import type { PublicOpenAPIPathParser } from './openapi-path-parser';
4
5
  import type { SchemaConverter } from './schema-converter';
5
6
  import { type ContractRouter } from '@orpc/contract';
6
- import { type AnyRouter } from '@orpc/server';
7
7
  import { type PublicJSONSerializer } from './json-serializer';
8
8
  import { type OpenAPI } from './openapi';
9
9
  import { type PublicOpenAPIContentBuilder } from './openapi-content-builder';
@@ -1,3 +1,18 @@
1
- import type { HTTPPath } from '@orpc/contract';
1
+ import type { AnyContractProcedure, AnyContractRouter, HTTPPath } from '@orpc/contract';
2
+ import type { AnyProcedure, AnyRouter, Lazy } from '@orpc/server';
3
+ export interface EachLeafOptions {
4
+ router: AnyContractRouter | AnyRouter;
5
+ path: string[];
6
+ }
7
+ export interface EachLeafCallbackOptions {
8
+ contract: AnyContractProcedure;
9
+ path: string[];
10
+ }
11
+ export interface EachContractLeafResultItem {
12
+ router: Lazy<AnyProcedure> | Lazy<Record<string, AnyRouter> | AnyProcedure>;
13
+ path: string[];
14
+ }
15
+ export declare function forEachContractProcedure(options: EachLeafOptions, callback: (options: EachLeafCallbackOptions) => void, result?: EachContractLeafResultItem[], isCurrentRouterContract?: boolean): EachContractLeafResultItem[];
16
+ export declare function forEachAllContractProcedure(router: AnyContractRouter | AnyRouter, callback: (options: EachLeafCallbackOptions) => void): Promise<void>;
2
17
  export declare function standardizeHTTPPath(path: HTTPPath): HTTPPath;
3
18
  //# sourceMappingURL=utils.d.ts.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@orpc/openapi",
3
3
  "type": "module",
4
- "version": "0.0.0-next.31590a1",
4
+ "version": "0.0.0-next.32cb70c",
5
5
  "license": "MIT",
6
6
  "homepage": "https://orpc.unnoq.com",
7
7
  "repository": {
@@ -19,11 +19,6 @@
19
19
  "import": "./dist/index.js",
20
20
  "default": "./dist/index.js"
21
21
  },
22
- "./standard": {
23
- "types": "./dist/src/adapters/standard/index.d.ts",
24
- "import": "./dist/standard.js",
25
- "default": "./dist/standard.js"
26
- },
27
22
  "./fetch": {
28
23
  "types": "./dist/src/adapters/fetch/index.d.ts",
29
24
  "import": "./dist/fetch.js",
@@ -59,13 +54,13 @@
59
54
  "content-disposition": "^0.5.4",
60
55
  "escape-string-regexp": "^5.0.0",
61
56
  "fast-content-type-parse": "^2.0.0",
57
+ "hono": "^4.6.12",
62
58
  "json-schema-typed": "^8.0.1",
63
59
  "openapi3-ts": "^4.4.0",
64
- "rou3": "^0.5.1",
65
60
  "wildcard-match": "^5.1.3",
66
- "@orpc/contract": "0.0.0-next.31590a1",
67
- "@orpc/shared": "0.0.0-next.31590a1",
68
- "@orpc/server": "0.0.0-next.31590a1"
61
+ "@orpc/contract": "0.0.0-next.32cb70c",
62
+ "@orpc/server": "0.0.0-next.32cb70c",
63
+ "@orpc/shared": "0.0.0-next.32cb70c"
69
64
  },
70
65
  "devDependencies": {
71
66
  "@readme/openapi-parser": "^2.6.0",
@@ -1,52 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __export = (target, all) => {
3
- for (var name in all)
4
- __defProp(target, name, { get: all[name], enumerable: true });
5
- };
6
-
7
- // src/json-serializer.ts
8
- import { isPlainObject } from "@orpc/shared";
9
- var JSONSerializer = class {
10
- serialize(payload) {
11
- if (payload instanceof Set)
12
- return this.serialize([...payload]);
13
- if (payload instanceof Map)
14
- return this.serialize([...payload.entries()]);
15
- if (Array.isArray(payload)) {
16
- return payload.map((v) => v === void 0 ? "undefined" : this.serialize(v));
17
- }
18
- if (Number.isNaN(payload))
19
- return "NaN";
20
- if (typeof payload === "bigint")
21
- return payload.toString();
22
- if (payload instanceof Date && Number.isNaN(payload.getTime())) {
23
- return "Invalid Date";
24
- }
25
- if (payload instanceof RegExp)
26
- return payload.toString();
27
- if (payload instanceof URL)
28
- return payload.toString();
29
- if (!isPlainObject(payload))
30
- return payload;
31
- return Object.keys(payload).reduce(
32
- (carry, key) => {
33
- const val = payload[key];
34
- carry[key] = this.serialize(val);
35
- return carry;
36
- },
37
- {}
38
- );
39
- }
40
- };
41
-
42
- // src/utils.ts
43
- function standardizeHTTPPath(path) {
44
- return `/${path.replace(/\/{2,}/g, "/").replace(/^\/|\/$/g, "")}`;
45
- }
46
-
47
- export {
48
- __export,
49
- JSONSerializer,
50
- standardizeHTTPPath
51
- };
52
- //# sourceMappingURL=chunk-BHJYKXQL.js.map
@@ -1,32 +0,0 @@
1
- import {
2
- OpenAPICodec,
3
- OpenAPIMatcher
4
- } from "./chunk-M5HOHBLW.js";
5
-
6
- // src/adapters/fetch/openapi-handler.ts
7
- import { fetchRequestToStandardRequest, standardResponseToFetchResponse } from "@orpc/server/fetch";
8
- import { StandardHandler } from "@orpc/server/standard";
9
- var OpenAPIHandler = class {
10
- standardHandler;
11
- constructor(router, options) {
12
- const matcher = options?.matcher ?? new OpenAPIMatcher(options);
13
- const codec = options?.codec ?? new OpenAPICodec(options);
14
- this.standardHandler = new StandardHandler(router, matcher, codec, options);
15
- }
16
- async handle(request, ...rest) {
17
- const standardRequest = fetchRequestToStandardRequest(request);
18
- const result = await this.standardHandler.handle(standardRequest, ...rest);
19
- if (!result.matched) {
20
- return result;
21
- }
22
- return {
23
- matched: true,
24
- response: standardResponseToFetchResponse(result.response)
25
- };
26
- }
27
- };
28
-
29
- export {
30
- OpenAPIHandler
31
- };
32
- //# sourceMappingURL=chunk-HQ34JZI7.js.map