@orpc/openapi 0.0.0-next.ccd4e42 → 0.0.0-next.d0e429d
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/README.md +91 -0
- package/dist/{chunk-HQ34JZI7.js → chunk-5TK7F2TC.js} +9 -9
- package/dist/chunk-LTTK3H5J.js +157 -0
- package/dist/chunk-XGHV4TH3.js +13 -0
- package/dist/fetch.js +3 -3
- package/dist/hono.js +3 -3
- package/dist/index.js +192 -37
- package/dist/next.js +3 -3
- package/dist/node.js +9 -9
- package/dist/src/adapters/fetch/openapi-handler.d.ts +4 -2
- package/dist/src/adapters/node/openapi-handler.d.ts +4 -2
- package/dist/src/adapters/standard/index.d.ts +0 -3
- package/dist/src/adapters/standard/openapi-codec.d.ts +5 -10
- package/dist/src/adapters/standard/openapi-handler.d.ts +1 -3
- package/dist/src/adapters/standard/openapi-matcher.d.ts +0 -10
- package/dist/src/index.d.ts +5 -1
- package/dist/src/openapi-generator.d.ts +2 -2
- package/dist/src/openapi-operation-extender.d.ts +7 -0
- package/dist/src/utils.d.ts +1 -0
- package/dist/standard.js +4 -10
- package/package.json +8 -11
- package/dist/chunk-BHJYKXQL.js +0 -52
- package/dist/chunk-M5HOHBLW.js +0 -432
- package/dist/src/adapters/standard/bracket-notation.d.ts +0 -84
- package/dist/src/adapters/standard/openapi-serializer.d.ts +0 -11
- package/dist/src/adapters/standard/schema-coercer.d.ts +0 -10
- package/dist/src/json-serializer.d.ts +0 -5
package/dist/node.js
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import {
|
|
2
2
|
OpenAPICodec,
|
|
3
3
|
OpenAPIMatcher
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-LTTK3H5J.js";
|
|
5
|
+
import "./chunk-XGHV4TH3.js";
|
|
6
6
|
|
|
7
7
|
// src/adapters/node/openapi-handler.ts
|
|
8
|
-
import { nodeHttpResponseSendStandardResponse, nodeHttpToStandardRequest } from "@orpc/server/node";
|
|
9
8
|
import { StandardHandler } from "@orpc/server/standard";
|
|
9
|
+
import { sendStandardResponse, toStandardRequest } from "@orpc/standard-server-node";
|
|
10
10
|
var OpenAPIHandler = class {
|
|
11
11
|
standardHandler;
|
|
12
12
|
constructor(router, options) {
|
|
13
|
-
const matcher = options?.matcher ?? new OpenAPIMatcher(
|
|
14
|
-
const codec = options?.codec ?? new OpenAPICodec(
|
|
13
|
+
const matcher = options?.matcher ?? new OpenAPIMatcher();
|
|
14
|
+
const codec = options?.codec ?? new OpenAPICodec();
|
|
15
15
|
this.standardHandler = new StandardHandler(router, matcher, codec, { ...options });
|
|
16
16
|
}
|
|
17
|
-
async handle(req, res, ...
|
|
18
|
-
const standardRequest =
|
|
19
|
-
const result = await this.standardHandler.handle(standardRequest,
|
|
17
|
+
async handle(req, res, ...[options]) {
|
|
18
|
+
const standardRequest = toStandardRequest(req, res);
|
|
19
|
+
const result = await this.standardHandler.handle(standardRequest, options);
|
|
20
20
|
if (!result.matched) {
|
|
21
21
|
return { matched: false };
|
|
22
22
|
}
|
|
23
|
-
await
|
|
23
|
+
await sendStandardResponse(res, result.response, options);
|
|
24
24
|
return { matched: true };
|
|
25
25
|
}
|
|
26
26
|
};
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { Context, Router } from '@orpc/server';
|
|
2
2
|
import type { FetchHandler, FetchHandleResult } from '@orpc/server/fetch';
|
|
3
|
-
import type {
|
|
3
|
+
import type { StandardHandleOptions } from '@orpc/server/standard';
|
|
4
|
+
import type { MaybeOptionalOptions } from '@orpc/shared';
|
|
5
|
+
import type { ToFetchResponseOptions } from '@orpc/standard-server-fetch';
|
|
4
6
|
import type { OpenAPIHandlerOptions } from '../standard';
|
|
5
7
|
export declare class OpenAPIHandler<T extends Context> implements FetchHandler<T> {
|
|
6
8
|
private readonly standardHandler;
|
|
7
9
|
constructor(router: Router<T, any>, options?: NoInfer<OpenAPIHandlerOptions<T>>);
|
|
8
|
-
handle(request: Request, ...
|
|
10
|
+
handle(request: Request, ...[options]: MaybeOptionalOptions<StandardHandleOptions<T> & ToFetchResponseOptions>): Promise<FetchHandleResult>;
|
|
9
11
|
}
|
|
10
12
|
//# sourceMappingURL=openapi-handler.d.ts.map
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { Context, Router } from '@orpc/server';
|
|
2
2
|
import type { NodeHttpHandler, NodeHttpHandleResult, NodeHttpRequest, NodeHttpResponse } from '@orpc/server/node';
|
|
3
|
-
import type {
|
|
3
|
+
import type { StandardHandleOptions } from '@orpc/server/standard';
|
|
4
|
+
import type { MaybeOptionalOptions } from '@orpc/shared';
|
|
5
|
+
import type { SendStandardResponseOptions } from '@orpc/standard-server-node';
|
|
4
6
|
import type { OpenAPIHandlerOptions } from '../standard';
|
|
5
7
|
export declare class OpenAPIHandler<T extends Context> implements NodeHttpHandler<T> {
|
|
6
8
|
private readonly standardHandler;
|
|
7
9
|
constructor(router: Router<T, any>, options?: NoInfer<OpenAPIHandlerOptions<T>>);
|
|
8
|
-
handle(req: NodeHttpRequest, res: NodeHttpResponse, ...
|
|
10
|
+
handle(req: NodeHttpRequest, res: NodeHttpResponse, ...[options]: MaybeOptionalOptions<StandardHandleOptions<T> & SendStandardResponseOptions>): Promise<NodeHttpHandleResult>;
|
|
9
11
|
}
|
|
10
12
|
//# sourceMappingURL=openapi-handler.d.ts.map
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
export * as BracketNotation from './bracket-notation';
|
|
2
1
|
export * from './openapi-codec';
|
|
3
2
|
export * from './openapi-handler';
|
|
4
3
|
export * from './openapi-matcher';
|
|
5
|
-
export * from './openapi-serializer';
|
|
6
|
-
export * from './schema-coercer';
|
|
7
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,16 +1,11 @@
|
|
|
1
|
+
import type { ORPCError } from '@orpc/client';
|
|
1
2
|
import type { AnyProcedure } from '@orpc/server';
|
|
2
|
-
import type { StandardCodec, StandardParams
|
|
3
|
-
import {
|
|
4
|
-
import { OpenAPISerializer } from '
|
|
5
|
-
import { type SchemaCoercer } from './schema-coercer';
|
|
6
|
-
export interface OpenAPICodecOptions {
|
|
7
|
-
serializer?: OpenAPISerializer;
|
|
8
|
-
schemaCoercers?: SchemaCoercer[];
|
|
9
|
-
}
|
|
3
|
+
import type { StandardCodec, StandardParams } from '@orpc/server/standard';
|
|
4
|
+
import type { StandardRequest, StandardResponse } from '@orpc/standard-server';
|
|
5
|
+
import { OpenAPISerializer } from '@orpc/client/openapi';
|
|
10
6
|
export declare class OpenAPICodec implements StandardCodec {
|
|
11
7
|
private readonly serializer;
|
|
12
|
-
|
|
13
|
-
constructor(options?: OpenAPICodecOptions);
|
|
8
|
+
constructor(serializer?: OpenAPISerializer);
|
|
14
9
|
decode(request: StandardRequest, params: StandardParams | undefined, procedure: AnyProcedure): Promise<unknown>;
|
|
15
10
|
encode(output: unknown, procedure: AnyProcedure): StandardResponse;
|
|
16
11
|
encodeError(error: ORPCError<any, any>): StandardResponse;
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import type { Context } from '@orpc/server';
|
|
2
2
|
import type { RPCHandlerOptions } from '@orpc/server/standard';
|
|
3
|
-
|
|
4
|
-
import type { OpenAPIMatcherOptions } from './openapi-matcher';
|
|
5
|
-
export interface OpenAPIHandlerOptions<T extends Context> extends RPCHandlerOptions<T>, OpenAPIMatcherOptions, OpenAPICodecOptions {
|
|
3
|
+
export interface OpenAPIHandlerOptions<T extends Context> extends RPCHandlerOptions<T> {
|
|
6
4
|
}
|
|
7
5
|
//# sourceMappingURL=openapi-handler.d.ts.map
|
|
@@ -1,18 +1,8 @@
|
|
|
1
1
|
import type { AnyRouter } from '@orpc/server';
|
|
2
2
|
import type { StandardMatcher, StandardMatchResult } from '@orpc/server/standard';
|
|
3
3
|
import { type HTTPPath } from '@orpc/contract';
|
|
4
|
-
export interface OpenAPIMatcherOptions {
|
|
5
|
-
/**
|
|
6
|
-
* Ignore procedure that does not have a method defined in the contract.
|
|
7
|
-
*
|
|
8
|
-
* @default false
|
|
9
|
-
*/
|
|
10
|
-
ignoreUndefinedMethod?: boolean;
|
|
11
|
-
}
|
|
12
4
|
export declare class OpenAPIMatcher implements StandardMatcher {
|
|
13
5
|
private readonly tree;
|
|
14
|
-
private readonly ignoreUndefinedMethod;
|
|
15
|
-
constructor(options?: OpenAPIMatcherOptions);
|
|
16
6
|
private pendingRouters;
|
|
17
7
|
init(router: AnyRouter, path?: string[]): void;
|
|
18
8
|
match(method: string, pathname: HTTPPath): Promise<StandardMatchResult>;
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
/** unnoq */
|
|
2
|
-
|
|
2
|
+
import { setOperationExtender } from './openapi-operation-extender';
|
|
3
3
|
export * from './openapi';
|
|
4
4
|
export * from './openapi-content-builder';
|
|
5
5
|
export * from './openapi-generator';
|
|
6
|
+
export * from './openapi-operation-extender';
|
|
6
7
|
export * from './openapi-parameters-builder';
|
|
7
8
|
export * from './openapi-path-parser';
|
|
8
9
|
export * from './schema';
|
|
9
10
|
export * from './schema-converter';
|
|
10
11
|
export * from './schema-utils';
|
|
11
12
|
export * from './utils';
|
|
13
|
+
export declare const oo: {
|
|
14
|
+
spec: typeof setOperationExtender;
|
|
15
|
+
};
|
|
12
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -2,9 +2,9 @@ import type { PublicOpenAPIInputStructureParser } from './openapi-input-structur
|
|
|
2
2
|
import type { PublicOpenAPIOutputStructureParser } from './openapi-output-structure-parser';
|
|
3
3
|
import type { PublicOpenAPIPathParser } from './openapi-path-parser';
|
|
4
4
|
import type { SchemaConverter } from './schema-converter';
|
|
5
|
+
import { OpenAPIJsonSerializer } from '@orpc/client/openapi';
|
|
5
6
|
import { type ContractRouter } from '@orpc/contract';
|
|
6
7
|
import { type AnyRouter } from '@orpc/server';
|
|
7
|
-
import { type PublicJSONSerializer } from './json-serializer';
|
|
8
8
|
import { type OpenAPI } from './openapi';
|
|
9
9
|
import { type PublicOpenAPIContentBuilder } from './openapi-content-builder';
|
|
10
10
|
import { type PublicOpenAPIParametersBuilder } from './openapi-parameters-builder';
|
|
@@ -15,7 +15,7 @@ export interface OpenAPIGeneratorOptions {
|
|
|
15
15
|
parametersBuilder?: PublicOpenAPIParametersBuilder;
|
|
16
16
|
schemaConverters?: SchemaConverter[];
|
|
17
17
|
schemaUtils?: PublicSchemaUtils;
|
|
18
|
-
jsonSerializer?:
|
|
18
|
+
jsonSerializer?: OpenAPIJsonSerializer;
|
|
19
19
|
pathParser?: PublicOpenAPIPathParser;
|
|
20
20
|
inputStructureParser?: PublicOpenAPIInputStructureParser;
|
|
21
21
|
outputStructureParser?: PublicOpenAPIOutputStructureParser;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AnyContractProcedure } from '@orpc/contract';
|
|
2
|
+
import type { OpenAPI } from './openapi';
|
|
3
|
+
export type OverrideOperationValue = OpenAPI.OperationObject | ((current: OpenAPI.OperationObject, procedure: AnyContractProcedure) => OpenAPI.OperationObject);
|
|
4
|
+
export declare function setOperationExtender<T extends object>(o: T, extend: OverrideOperationValue): T;
|
|
5
|
+
export declare function getOperationExtender(o: object): OverrideOperationValue | undefined;
|
|
6
|
+
export declare function extendOperation(operation: OpenAPI.OperationObject, procedure: AnyContractProcedure): OpenAPI.OperationObject;
|
|
7
|
+
//# sourceMappingURL=openapi-operation-extender.d.ts.map
|
package/dist/src/utils.d.ts
CHANGED
package/dist/standard.js
CHANGED
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
|
-
CompositeSchemaCoercer,
|
|
3
2
|
OpenAPICodec,
|
|
4
|
-
OpenAPIMatcher
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
} from "./chunk-M5HOHBLW.js";
|
|
8
|
-
import "./chunk-BHJYKXQL.js";
|
|
3
|
+
OpenAPIMatcher
|
|
4
|
+
} from "./chunk-LTTK3H5J.js";
|
|
5
|
+
import "./chunk-XGHV4TH3.js";
|
|
9
6
|
export {
|
|
10
|
-
bracket_notation_exports as BracketNotation,
|
|
11
|
-
CompositeSchemaCoercer,
|
|
12
7
|
OpenAPICodec,
|
|
13
|
-
OpenAPIMatcher
|
|
14
|
-
OpenAPISerializer
|
|
8
|
+
OpenAPIMatcher
|
|
15
9
|
};
|
|
16
10
|
//# sourceMappingURL=standard.js.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.
|
|
4
|
+
"version": "0.0.0-next.d0e429d",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://orpc.unnoq.com",
|
|
7
7
|
"repository": {
|
|
@@ -54,21 +54,18 @@
|
|
|
54
54
|
"dist"
|
|
55
55
|
],
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@standard-schema/spec": "1.0.0-beta.4",
|
|
58
|
-
"@types/content-disposition": "^0.5.8",
|
|
59
|
-
"content-disposition": "^0.5.4",
|
|
60
|
-
"escape-string-regexp": "^5.0.0",
|
|
61
|
-
"fast-content-type-parse": "^2.0.0",
|
|
62
57
|
"json-schema-typed": "^8.0.1",
|
|
63
58
|
"openapi3-ts": "^4.4.0",
|
|
64
59
|
"rou3": "^0.5.1",
|
|
65
|
-
"
|
|
66
|
-
"@orpc/contract": "0.0.0-next.
|
|
67
|
-
"@orpc/
|
|
68
|
-
"@orpc/
|
|
60
|
+
"@orpc/client": "0.0.0-next.d0e429d",
|
|
61
|
+
"@orpc/contract": "0.0.0-next.d0e429d",
|
|
62
|
+
"@orpc/server": "0.0.0-next.d0e429d",
|
|
63
|
+
"@orpc/shared": "0.0.0-next.d0e429d",
|
|
64
|
+
"@orpc/standard-server": "0.0.0-next.d0e429d",
|
|
65
|
+
"@orpc/standard-server-fetch": "0.0.0-next.d0e429d",
|
|
66
|
+
"@orpc/standard-server-node": "0.0.0-next.d0e429d"
|
|
69
67
|
},
|
|
70
68
|
"devDependencies": {
|
|
71
|
-
"@readme/openapi-parser": "^2.6.0",
|
|
72
69
|
"zod": "^3.24.1"
|
|
73
70
|
},
|
|
74
71
|
"scripts": {
|
package/dist/chunk-BHJYKXQL.js
DELETED
|
@@ -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
|