@orpc/openapi 0.0.0-next.32cb70c → 0.0.0-next.3826d73
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/dist/chunk-EIQG2BFG.js +56 -0
- package/dist/chunk-OLJZJSQL.js +453 -0
- package/dist/chunk-V6Y6IZ2S.js +32 -0
- package/dist/fetch.js +5 -30
- package/dist/hono.js +5 -30
- package/dist/index.js +191 -36
- package/dist/next.js +5 -30
- package/dist/node.js +18 -34
- package/dist/src/adapters/fetch/index.d.ts +0 -8
- package/dist/src/adapters/fetch/openapi-handler.d.ts +7 -28
- package/dist/src/adapters/node/index.d.ts +0 -3
- package/dist/src/adapters/node/openapi-handler.d.ts +8 -8
- package/dist/src/adapters/standard/index.d.ts +6 -0
- package/dist/src/adapters/standard/openapi-codec.d.ts +16 -0
- package/dist/src/adapters/standard/openapi-handler.d.ts +7 -0
- package/dist/src/adapters/standard/openapi-matcher.d.ts +20 -0
- package/dist/src/adapters/standard/openapi-serializer.d.ts +11 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/openapi-generator.d.ts +1 -1
- package/dist/src/openapi-operation-extender.d.ts +7 -0
- package/dist/src/utils.d.ts +2 -16
- package/dist/standard.js +14 -0
- package/package.json +13 -11
- package/dist/chunk-Q2LSK6YZ.js +0 -102
- package/dist/chunk-SOVQ5ARD.js +0 -650
- package/dist/chunk-VFGNQS5W.js +0 -25
- package/dist/src/adapters/fetch/input-structure-compact.d.ts +0 -6
- package/dist/src/adapters/fetch/input-structure-detailed.d.ts +0 -11
- package/dist/src/adapters/fetch/openapi-handler-server.d.ts +0 -7
- package/dist/src/adapters/fetch/openapi-handler-serverless.d.ts +0 -7
- package/dist/src/adapters/fetch/openapi-payload-codec.d.ts +0 -15
- package/dist/src/adapters/fetch/openapi-procedure-matcher.d.ts +0 -19
- package/dist/src/adapters/fetch/schema-coercer.d.ts +0 -10
- package/dist/src/adapters/node/openapi-handler-server.d.ts +0 -7
- package/dist/src/adapters/node/openapi-handler-serverless.d.ts +0 -7
- package/dist/src/adapters/node/types.d.ts +0 -2
- /package/dist/src/adapters/{fetch → standard}/bracket-notation.d.ts +0 -0
package/dist/index.js
CHANGED
|
@@ -1,9 +1,54 @@
|
|
|
1
1
|
import {
|
|
2
2
|
JSONSerializer,
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
standardizeHTTPPath,
|
|
4
|
+
toOpenAPI31RoutePattern
|
|
5
|
+
} from "./chunk-EIQG2BFG.js";
|
|
6
|
+
|
|
7
|
+
// src/openapi-operation-extender.ts
|
|
8
|
+
import { isProcedure } from "@orpc/server";
|
|
9
|
+
var OPERATION_EXTENDER_SYMBOL = Symbol("ORPC_OPERATION_EXTENDER");
|
|
10
|
+
function setOperationExtender(o, extend) {
|
|
11
|
+
return new Proxy(o, {
|
|
12
|
+
get(target, prop, receiver) {
|
|
13
|
+
if (prop === OPERATION_EXTENDER_SYMBOL) {
|
|
14
|
+
return extend;
|
|
15
|
+
}
|
|
16
|
+
return Reflect.get(target, prop, receiver);
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
function getOperationExtender(o) {
|
|
21
|
+
return o[OPERATION_EXTENDER_SYMBOL];
|
|
22
|
+
}
|
|
23
|
+
function extendOperation(operation, procedure) {
|
|
24
|
+
const operationExtenders = [];
|
|
25
|
+
for (const errorItem of Object.values(procedure["~orpc"].errorMap)) {
|
|
26
|
+
const maybeExtender = getOperationExtender(errorItem);
|
|
27
|
+
if (maybeExtender) {
|
|
28
|
+
operationExtenders.push(maybeExtender);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (isProcedure(procedure)) {
|
|
32
|
+
for (const middleware of procedure["~orpc"].middlewares) {
|
|
33
|
+
const maybeExtender = getOperationExtender(middleware);
|
|
34
|
+
if (maybeExtender) {
|
|
35
|
+
operationExtenders.push(maybeExtender);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
let currentOperation = operation;
|
|
40
|
+
for (const extender of operationExtenders) {
|
|
41
|
+
if (typeof extender === "function") {
|
|
42
|
+
currentOperation = extender(currentOperation, procedure);
|
|
43
|
+
} else {
|
|
44
|
+
currentOperation = {
|
|
45
|
+
...currentOperation,
|
|
46
|
+
...extender
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return currentOperation;
|
|
51
|
+
}
|
|
7
52
|
|
|
8
53
|
// src/openapi.ts
|
|
9
54
|
import { OpenApiBuilder } from "openapi3-ts/oas31";
|
|
@@ -36,7 +81,8 @@ var OpenAPIContentBuilder = class {
|
|
|
36
81
|
};
|
|
37
82
|
|
|
38
83
|
// src/openapi-generator.ts
|
|
39
|
-
import { fallbackContractConfig as fallbackContractConfig2, fallbackORPCErrorStatus } from "@orpc/contract";
|
|
84
|
+
import { fallbackContractConfig as fallbackContractConfig2, fallbackORPCErrorStatus, getEventIteratorSchemaDetails } from "@orpc/contract";
|
|
85
|
+
import { eachAllContractProcedure } from "@orpc/server";
|
|
40
86
|
import { group } from "@orpc/shared";
|
|
41
87
|
|
|
42
88
|
// src/openapi-error.ts
|
|
@@ -184,14 +230,14 @@ var OpenAPIOutputStructureParser = class {
|
|
|
184
230
|
};
|
|
185
231
|
|
|
186
232
|
// src/openapi-parameters-builder.ts
|
|
187
|
-
import { get,
|
|
233
|
+
import { get, isObject, omit } from "@orpc/shared";
|
|
188
234
|
var OpenAPIParametersBuilder = class {
|
|
189
235
|
build(paramIn, jsonSchema, options) {
|
|
190
236
|
const parameters = [];
|
|
191
237
|
for (const name in jsonSchema.properties) {
|
|
192
238
|
const schema = jsonSchema.properties[name];
|
|
193
239
|
const paramExamples = jsonSchema.examples?.filter((example) => {
|
|
194
|
-
return
|
|
240
|
+
return isObject(example) && name in example;
|
|
195
241
|
}).map((example) => {
|
|
196
242
|
return example[name];
|
|
197
243
|
});
|
|
@@ -252,7 +298,7 @@ var CompositeSchemaConverter = class {
|
|
|
252
298
|
};
|
|
253
299
|
|
|
254
300
|
// src/schema-utils.ts
|
|
255
|
-
import {
|
|
301
|
+
import { isObject as isObject2 } from "@orpc/shared";
|
|
256
302
|
|
|
257
303
|
// src/schema.ts
|
|
258
304
|
import * as JSONSchema from "json-schema-typed/draft-2020-12";
|
|
@@ -314,7 +360,7 @@ var SchemaUtils = class {
|
|
|
314
360
|
}, {});
|
|
315
361
|
matched.required = schema.required?.filter((key) => separatedProperties.includes(key));
|
|
316
362
|
matched.examples = schema.examples?.map((example) => {
|
|
317
|
-
if (!
|
|
363
|
+
if (!isObject2(example)) {
|
|
318
364
|
return example;
|
|
319
365
|
}
|
|
320
366
|
return Object.entries(example).reduce((acc, [key, value]) => {
|
|
@@ -330,7 +376,7 @@ var SchemaUtils = class {
|
|
|
330
376
|
}, {});
|
|
331
377
|
rest.required = schema.required?.filter((key) => !separatedProperties.includes(key));
|
|
332
378
|
rest.examples = schema.examples?.map((example) => {
|
|
333
|
-
if (!
|
|
379
|
+
if (!isObject2(example)) {
|
|
334
380
|
return example;
|
|
335
381
|
}
|
|
336
382
|
return Object.entries(example).reduce((acc, [key, value]) => {
|
|
@@ -406,34 +452,134 @@ var OpenAPIGenerator = class {
|
|
|
406
452
|
openapi: "3.1.1"
|
|
407
453
|
});
|
|
408
454
|
const rootTags = doc.tags?.map((tag) => tag.name) ?? [];
|
|
409
|
-
await
|
|
455
|
+
await eachAllContractProcedure({
|
|
456
|
+
path: [],
|
|
457
|
+
router
|
|
458
|
+
}, ({ contract, path }) => {
|
|
410
459
|
try {
|
|
411
460
|
const def = contract["~orpc"];
|
|
412
461
|
if (this.ignoreUndefinedPathProcedures && def.route?.path === void 0) {
|
|
413
462
|
return;
|
|
414
463
|
}
|
|
415
464
|
const method = fallbackContractConfig2("defaultMethod", def.route?.method);
|
|
416
|
-
const httpPath = def.route?.path ?
|
|
417
|
-
const
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
465
|
+
const httpPath = def.route?.path ? toOpenAPI31RoutePattern(def.route?.path) : `/${path.map(encodeURIComponent).join("/")}`;
|
|
466
|
+
const { parameters, requestBody } = (() => {
|
|
467
|
+
const eventIteratorSchemaDetails = getEventIteratorSchemaDetails(def.inputSchema);
|
|
468
|
+
if (eventIteratorSchemaDetails) {
|
|
469
|
+
const requestBody3 = {
|
|
470
|
+
required: true,
|
|
471
|
+
content: {
|
|
472
|
+
"text/event-stream": {
|
|
473
|
+
schema: {
|
|
474
|
+
oneOf: [
|
|
475
|
+
{
|
|
476
|
+
type: "object",
|
|
477
|
+
properties: {
|
|
478
|
+
event: { type: "string", const: "message" },
|
|
479
|
+
data: this.schemaConverter.convert(eventIteratorSchemaDetails.yields, { strategy: "input" }),
|
|
480
|
+
id: { type: "string" },
|
|
481
|
+
retry: { type: "number" }
|
|
482
|
+
},
|
|
483
|
+
required: ["event", "data"]
|
|
484
|
+
},
|
|
485
|
+
{
|
|
486
|
+
type: "object",
|
|
487
|
+
properties: {
|
|
488
|
+
event: { type: "string", const: "done" },
|
|
489
|
+
data: this.schemaConverter.convert(eventIteratorSchemaDetails.returns, { strategy: "input" }),
|
|
490
|
+
id: { type: "string" },
|
|
491
|
+
retry: { type: "number" }
|
|
492
|
+
},
|
|
493
|
+
required: ["event", "data"]
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
type: "object",
|
|
497
|
+
properties: {
|
|
498
|
+
event: { type: "string", const: "error" },
|
|
499
|
+
data: {},
|
|
500
|
+
id: { type: "string" },
|
|
501
|
+
retry: { type: "number" }
|
|
502
|
+
},
|
|
503
|
+
required: ["event", "data"]
|
|
504
|
+
}
|
|
505
|
+
]
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
};
|
|
510
|
+
return { requestBody: requestBody3, parameters: [] };
|
|
511
|
+
}
|
|
512
|
+
const inputStructure = fallbackContractConfig2("defaultInputStructure", def.route?.inputStructure);
|
|
513
|
+
const { paramsSchema, querySchema, headersSchema, bodySchema } = this.inputStructureParser.parse(contract, inputStructure);
|
|
514
|
+
const params = paramsSchema ? this.parametersBuilder.build("path", paramsSchema, {
|
|
515
|
+
required: true
|
|
516
|
+
}) : [];
|
|
517
|
+
const query = querySchema ? this.parametersBuilder.build("query", querySchema) : [];
|
|
518
|
+
const headers = headersSchema ? this.parametersBuilder.build("header", headersSchema) : [];
|
|
519
|
+
const parameters2 = [...params, ...query, ...headers];
|
|
520
|
+
const requestBody2 = bodySchema !== void 0 ? {
|
|
521
|
+
required: this.schemaUtils.isUndefinableSchema(bodySchema),
|
|
522
|
+
content: this.contentBuilder.build(bodySchema)
|
|
523
|
+
} : void 0;
|
|
524
|
+
return { parameters: parameters2, requestBody: requestBody2 };
|
|
525
|
+
})();
|
|
526
|
+
const { responses } = (() => {
|
|
527
|
+
const eventIteratorSchemaDetails = getEventIteratorSchemaDetails(def.outputSchema);
|
|
528
|
+
if (eventIteratorSchemaDetails) {
|
|
529
|
+
const responses3 = {};
|
|
530
|
+
responses3[fallbackContractConfig2("defaultSuccessStatus", def.route?.successStatus)] = {
|
|
531
|
+
description: fallbackContractConfig2("defaultSuccessDescription", def.route?.successDescription),
|
|
532
|
+
content: {
|
|
533
|
+
"text/event-stream": {
|
|
534
|
+
schema: {
|
|
535
|
+
oneOf: [
|
|
536
|
+
{
|
|
537
|
+
type: "object",
|
|
538
|
+
properties: {
|
|
539
|
+
event: { type: "string", const: "message" },
|
|
540
|
+
data: this.schemaConverter.convert(eventIteratorSchemaDetails.yields, { strategy: "input" }),
|
|
541
|
+
id: { type: "string" },
|
|
542
|
+
retry: { type: "number" }
|
|
543
|
+
},
|
|
544
|
+
required: ["event", "data"]
|
|
545
|
+
},
|
|
546
|
+
{
|
|
547
|
+
type: "object",
|
|
548
|
+
properties: {
|
|
549
|
+
event: { type: "string", const: "done" },
|
|
550
|
+
data: this.schemaConverter.convert(eventIteratorSchemaDetails.returns, { strategy: "input" }),
|
|
551
|
+
id: { type: "string" },
|
|
552
|
+
retry: { type: "number" }
|
|
553
|
+
},
|
|
554
|
+
required: ["event", "data"]
|
|
555
|
+
},
|
|
556
|
+
{
|
|
557
|
+
type: "object",
|
|
558
|
+
properties: {
|
|
559
|
+
event: { type: "string", const: "error" },
|
|
560
|
+
data: {},
|
|
561
|
+
id: { type: "string" },
|
|
562
|
+
retry: { type: "number" }
|
|
563
|
+
},
|
|
564
|
+
required: ["event", "data"]
|
|
565
|
+
}
|
|
566
|
+
]
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
};
|
|
571
|
+
return { responses: responses3 };
|
|
572
|
+
}
|
|
573
|
+
const outputStructure = fallbackContractConfig2("defaultOutputStructure", def.route?.outputStructure);
|
|
574
|
+
const { headersSchema: resHeadersSchema, bodySchema: resBodySchema } = this.outputStructureParser.parse(contract, outputStructure);
|
|
575
|
+
const responses2 = {};
|
|
576
|
+
responses2[fallbackContractConfig2("defaultSuccessStatus", def.route?.successStatus)] = {
|
|
577
|
+
description: fallbackContractConfig2("defaultSuccessDescription", def.route?.successDescription),
|
|
578
|
+
content: resBodySchema !== void 0 ? this.contentBuilder.build(resBodySchema) : void 0,
|
|
579
|
+
headers: resHeadersSchema !== void 0 ? this.parametersBuilder.buildHeadersObject(resHeadersSchema) : void 0
|
|
580
|
+
};
|
|
581
|
+
return { responses: responses2 };
|
|
582
|
+
})();
|
|
437
583
|
const errors = group(Object.entries(def.errorMap ?? {}).filter(([_, config]) => config).map(([code, config]) => ({
|
|
438
584
|
...config,
|
|
439
585
|
code,
|
|
@@ -504,8 +650,9 @@ var OpenAPIGenerator = class {
|
|
|
504
650
|
requestBody,
|
|
505
651
|
responses
|
|
506
652
|
};
|
|
653
|
+
const extendedOperation = extendOperation(operation, contract);
|
|
507
654
|
builder.addPath(httpPath, {
|
|
508
|
-
[method.toLocaleLowerCase()]:
|
|
655
|
+
[method.toLocaleLowerCase()]: extendedOperation
|
|
509
656
|
});
|
|
510
657
|
} catch (e) {
|
|
511
658
|
if (e instanceof OpenAPIError) {
|
|
@@ -527,6 +674,11 @@ var OpenAPIGenerator = class {
|
|
|
527
674
|
return this.jsonSerializer.serialize(builder.getSpec());
|
|
528
675
|
}
|
|
529
676
|
};
|
|
677
|
+
|
|
678
|
+
// src/index.ts
|
|
679
|
+
var oo = {
|
|
680
|
+
spec: setOperationExtender
|
|
681
|
+
};
|
|
530
682
|
export {
|
|
531
683
|
CompositeSchemaConverter,
|
|
532
684
|
JSONSchema,
|
|
@@ -539,8 +691,11 @@ export {
|
|
|
539
691
|
OpenAPIPathParser,
|
|
540
692
|
OpenApiBuilder,
|
|
541
693
|
SchemaUtils,
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
694
|
+
extendOperation,
|
|
695
|
+
getOperationExtender,
|
|
696
|
+
oo,
|
|
697
|
+
setOperationExtender,
|
|
698
|
+
standardizeHTTPPath,
|
|
699
|
+
toOpenAPI31RoutePattern
|
|
545
700
|
};
|
|
546
701
|
//# sourceMappingURL=index.js.map
|
package/dist/next.js
CHANGED
|
@@ -1,34 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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";
|
|
2
|
+
OpenAPIHandler
|
|
3
|
+
} from "./chunk-V6Y6IZ2S.js";
|
|
4
|
+
import "./chunk-OLJZJSQL.js";
|
|
5
|
+
import "./chunk-EIQG2BFG.js";
|
|
19
6
|
export {
|
|
20
|
-
|
|
21
|
-
InputStructureCompact,
|
|
22
|
-
InputStructureDetailed,
|
|
23
|
-
OpenAPIHandler,
|
|
24
|
-
OpenAPIPayloadCodec,
|
|
25
|
-
OpenAPIProcedureMatcher,
|
|
26
|
-
OpenAPIServerHandler,
|
|
27
|
-
OpenAPIServerlessHandler,
|
|
28
|
-
deserialize,
|
|
29
|
-
escapeSegment,
|
|
30
|
-
parsePath,
|
|
31
|
-
serialize,
|
|
32
|
-
stringifyPath
|
|
7
|
+
OpenAPIHandler
|
|
33
8
|
};
|
|
34
9
|
//# sourceMappingURL=next.js.map
|
package/dist/node.js
CHANGED
|
@@ -1,46 +1,30 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
OpenAPICodec,
|
|
3
|
+
OpenAPIMatcher
|
|
4
|
+
} from "./chunk-OLJZJSQL.js";
|
|
5
|
+
import "./chunk-EIQG2BFG.js";
|
|
5
6
|
|
|
6
7
|
// src/adapters/node/openapi-handler.ts
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
import { sendStandardResponse, toStandardRequest } from "@orpc/server-standard-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 });
|
|
12
16
|
}
|
|
13
|
-
async handle(req, res, ...
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
if (result.matched === false) {
|
|
17
|
+
async handle(req, res, ...rest) {
|
|
18
|
+
const standardRequest = toStandardRequest(req, res);
|
|
19
|
+
const result = await this.standardHandler.handle(standardRequest, ...rest);
|
|
20
|
+
if (!result.matched) {
|
|
18
21
|
return { matched: false };
|
|
19
22
|
}
|
|
20
|
-
await
|
|
21
|
-
await sendResponse(res, result.response);
|
|
23
|
+
await sendStandardResponse(res, result.response);
|
|
22
24
|
return { matched: true };
|
|
23
25
|
}
|
|
24
26
|
};
|
|
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
|
-
};
|
|
41
27
|
export {
|
|
42
|
-
|
|
43
|
-
OpenAPIServerHandler,
|
|
44
|
-
OpenAPIServerlessHandler
|
|
28
|
+
OpenAPIHandler
|
|
45
29
|
};
|
|
46
30
|
//# sourceMappingURL=node.js.map
|
|
@@ -1,10 +1,2 @@
|
|
|
1
|
-
export * from './bracket-notation';
|
|
2
|
-
export * from './input-structure-compact';
|
|
3
|
-
export * from './input-structure-detailed';
|
|
4
1
|
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';
|
|
10
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,32 +1,11 @@
|
|
|
1
1
|
import type { Context, Router } from '@orpc/server';
|
|
2
|
-
import type { FetchHandler,
|
|
3
|
-
import type {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
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
|
-
};
|
|
2
|
+
import type { FetchHandler, FetchHandleResult } from '@orpc/server/fetch';
|
|
3
|
+
import type { StandardHandleOptions } from '@orpc/server/standard';
|
|
4
|
+
import type { MaybeOptionalOptions } from '@orpc/shared';
|
|
5
|
+
import type { OpenAPIHandlerOptions } from '../standard';
|
|
18
6
|
export declare class OpenAPIHandler<T extends Context> implements FetchHandler<T> {
|
|
19
|
-
private readonly
|
|
20
|
-
|
|
21
|
-
|
|
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;
|
|
7
|
+
private readonly standardHandler;
|
|
8
|
+
constructor(router: Router<T, any>, options?: NoInfer<OpenAPIHandlerOptions<T>>);
|
|
9
|
+
handle(request: Request, ...rest: MaybeOptionalOptions<StandardHandleOptions<T>>): Promise<FetchHandleResult>;
|
|
31
10
|
}
|
|
32
11
|
//# sourceMappingURL=openapi-handler.d.ts.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { Context, Router } from '@orpc/server';
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
4
|
-
import type {
|
|
5
|
-
import
|
|
6
|
-
export declare class OpenAPIHandler<T extends Context> implements
|
|
7
|
-
private readonly
|
|
8
|
-
constructor(
|
|
9
|
-
handle(req:
|
|
2
|
+
import type { NodeHttpHandler, NodeHttpHandleResult, NodeHttpRequest, NodeHttpResponse } from '@orpc/server/node';
|
|
3
|
+
import type { StandardHandleOptions } from '@orpc/server/standard';
|
|
4
|
+
import type { MaybeOptionalOptions } from '@orpc/shared';
|
|
5
|
+
import type { OpenAPIHandlerOptions } from '../standard';
|
|
6
|
+
export declare class OpenAPIHandler<T extends Context> implements NodeHttpHandler<T> {
|
|
7
|
+
private readonly standardHandler;
|
|
8
|
+
constructor(router: Router<T, any>, options?: NoInfer<OpenAPIHandlerOptions<T>>);
|
|
9
|
+
handle(req: NodeHttpRequest, res: NodeHttpResponse, ...rest: MaybeOptionalOptions<StandardHandleOptions<T>>): Promise<NodeHttpHandleResult>;
|
|
10
10
|
}
|
|
11
11
|
//# sourceMappingURL=openapi-handler.d.ts.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { AnyProcedure } from '@orpc/server';
|
|
2
|
+
import type { StandardRequest, StandardResponse } from '@orpc/server-standard';
|
|
3
|
+
import type { StandardCodec, StandardParams } from '@orpc/server/standard';
|
|
4
|
+
import { type ORPCError } from '@orpc/contract';
|
|
5
|
+
import { OpenAPISerializer } from './openapi-serializer';
|
|
6
|
+
export interface OpenAPICodecOptions {
|
|
7
|
+
serializer?: OpenAPISerializer;
|
|
8
|
+
}
|
|
9
|
+
export declare class OpenAPICodec implements StandardCodec {
|
|
10
|
+
private readonly serializer;
|
|
11
|
+
constructor(options?: OpenAPICodecOptions);
|
|
12
|
+
decode(request: StandardRequest, params: StandardParams | undefined, procedure: AnyProcedure): Promise<unknown>;
|
|
13
|
+
encode(output: unknown, procedure: AnyProcedure): StandardResponse;
|
|
14
|
+
encodeError(error: ORPCError<any, any>): StandardResponse;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=openapi-codec.d.ts.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Context } from '@orpc/server';
|
|
2
|
+
import type { RPCHandlerOptions } from '@orpc/server/standard';
|
|
3
|
+
import type { OpenAPICodecOptions } from './openapi-codec';
|
|
4
|
+
import type { OpenAPIMatcherOptions } from './openapi-matcher';
|
|
5
|
+
export interface OpenAPIHandlerOptions<T extends Context> extends RPCHandlerOptions<T>, OpenAPIMatcherOptions, OpenAPICodecOptions {
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=openapi-handler.d.ts.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { AnyRouter } from '@orpc/server';
|
|
2
|
+
import type { StandardMatcher, StandardMatchResult } from '@orpc/server/standard';
|
|
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
|
+
export declare class OpenAPIMatcher implements StandardMatcher {
|
|
13
|
+
private readonly tree;
|
|
14
|
+
private readonly ignoreUndefinedMethod;
|
|
15
|
+
constructor(options?: OpenAPIMatcherOptions);
|
|
16
|
+
private pendingRouters;
|
|
17
|
+
init(router: AnyRouter, path?: string[]): void;
|
|
18
|
+
match(method: string, pathname: HTTPPath): Promise<StandardMatchResult>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=openapi-matcher.d.ts.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { PublicJSONSerializer } from '../../json-serializer';
|
|
2
|
+
export interface OpenAPISerializerOptions {
|
|
3
|
+
jsonSerializer?: PublicJSONSerializer;
|
|
4
|
+
}
|
|
5
|
+
export declare class OpenAPISerializer {
|
|
6
|
+
private readonly jsonSerializer;
|
|
7
|
+
constructor(options?: OpenAPISerializerOptions);
|
|
8
|
+
serialize(data: unknown): unknown;
|
|
9
|
+
deserialize(serialized: unknown): unknown;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=openapi-serializer.d.ts.map
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
/** unnoq */
|
|
2
|
+
import { setOperationExtender } from './openapi-operation-extender';
|
|
2
3
|
export * from './json-serializer';
|
|
3
4
|
export * from './openapi';
|
|
4
5
|
export * from './openapi-content-builder';
|
|
5
6
|
export * from './openapi-generator';
|
|
7
|
+
export * from './openapi-operation-extender';
|
|
6
8
|
export * from './openapi-parameters-builder';
|
|
7
9
|
export * from './openapi-path-parser';
|
|
8
10
|
export * from './schema';
|
|
9
11
|
export * from './schema-converter';
|
|
10
12
|
export * from './schema-utils';
|
|
11
13
|
export * from './utils';
|
|
14
|
+
export declare const oo: {
|
|
15
|
+
spec: typeof setOperationExtender;
|
|
16
|
+
};
|
|
12
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { AnyRouter } from '@orpc/server';
|
|
2
1
|
import type { PublicOpenAPIInputStructureParser } from './openapi-input-structure-parser';
|
|
3
2
|
import type { PublicOpenAPIOutputStructureParser } from './openapi-output-structure-parser';
|
|
4
3
|
import type { PublicOpenAPIPathParser } from './openapi-path-parser';
|
|
5
4
|
import type { SchemaConverter } from './schema-converter';
|
|
6
5
|
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';
|
|
@@ -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
|
@@ -1,18 +1,4 @@
|
|
|
1
|
-
import type {
|
|
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>;
|
|
1
|
+
import type { HTTPPath } from '@orpc/contract';
|
|
17
2
|
export declare function standardizeHTTPPath(path: HTTPPath): HTTPPath;
|
|
3
|
+
export declare function toOpenAPI31RoutePattern(path: HTTPPath): string;
|
|
18
4
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/standard.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
OpenAPICodec,
|
|
3
|
+
OpenAPIMatcher,
|
|
4
|
+
OpenAPISerializer,
|
|
5
|
+
bracket_notation_exports
|
|
6
|
+
} from "./chunk-OLJZJSQL.js";
|
|
7
|
+
import "./chunk-EIQG2BFG.js";
|
|
8
|
+
export {
|
|
9
|
+
bracket_notation_exports as BracketNotation,
|
|
10
|
+
OpenAPICodec,
|
|
11
|
+
OpenAPIMatcher,
|
|
12
|
+
OpenAPISerializer
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=standard.js.map
|