@orpc/openapi 2.0.0-beta.40 → 2.0.0-beta.41
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 +5 -5
- package/dist/adapters/aws-lambda/index.d.mts +1 -1
- package/dist/adapters/aws-lambda/index.d.ts +1 -1
- package/dist/adapters/aws-lambda/index.mjs +2 -2
- package/dist/adapters/fastify/index.d.mts +1 -1
- package/dist/adapters/fastify/index.d.ts +1 -1
- package/dist/adapters/fastify/index.mjs +2 -2
- package/dist/adapters/fetch/index.d.mts +1 -1
- package/dist/adapters/fetch/index.d.ts +1 -1
- package/dist/adapters/fetch/index.mjs +3 -3
- package/dist/adapters/node/index.d.mts +1 -1
- package/dist/adapters/node/index.d.ts +1 -1
- package/dist/adapters/node/index.mjs +2 -2
- package/dist/adapters/standard/index.d.mts +2 -2
- package/dist/adapters/standard/index.d.ts +2 -2
- package/dist/adapters/standard/index.mjs +3 -3
- package/dist/index.d.mts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.mjs +58 -153
- package/dist/plugins/index.d.mts +14 -2
- package/dist/plugins/index.d.ts +14 -2
- package/dist/plugins/index.mjs +8 -8
- package/dist/shared/{openapi.BdClbrwk.mjs → openapi.8cM6P94D.mjs} +7 -3
- package/dist/shared/{openapi.EM8eC1Xn.d.ts → openapi.BCNfESWr.d.ts} +1 -1
- package/dist/shared/{openapi.fnBK1ELE.d.mts → openapi.BgpM--nz.d.mts} +1 -1
- package/dist/shared/{openapi.wQKxWEI2.mjs → openapi.Bi1qxGF9.mjs} +7 -8
- package/dist/shared/{openapi.B1LWf28E.mjs → openapi.Bu_PfTtX.mjs} +10 -1
- package/dist/shared/{openapi.Dl3gew1x.d.mts → openapi.C2LayTNZ.d.mts} +1 -1
- package/dist/shared/{openapi.Dl3gew1x.d.ts → openapi.C2LayTNZ.d.ts} +1 -1
- package/dist/shared/{openapi.DI21x5Yo.d.mts → openapi.C6FFC29v.d.mts} +3 -3
- package/dist/shared/{openapi.DI21x5Yo.d.ts → openapi.C6FFC29v.d.ts} +3 -3
- package/dist/shared/{openapi.DE5kXinS.d.mts → openapi.Cg9h6jpm.d.mts} +1 -1
- package/dist/shared/{openapi.BwNINoeN.d.ts → openapi.D0yWs-uW.d.ts} +1 -1
- package/package.json +9 -9
package/README.md
CHANGED
|
@@ -85,7 +85,7 @@ Like what we build over at [middleapi](https://github.com/middleapi)? You can he
|
|
|
85
85
|
|
|
86
86
|
<table>
|
|
87
87
|
<tr>
|
|
88
|
-
<td width="2000"><a href="https://screenshotone.com/?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener" title="The screenshot API for developers"><img src="https://avatars.githubusercontent.com/u/97035603?v=4" width="64" align="left" hspace="12" alt="ScreenshotOne.com"/><b>ScreenshotOne.com</b></a><br /><sub>The screenshot API for developers</sub></td>
|
|
88
|
+
<td width="2000"><a href="https://screenshotone.com/?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="The screenshot API for developers"><img src="https://avatars.githubusercontent.com/u/97035603?v=4" width="64" align="left" hspace="12" alt="ScreenshotOne.com"/><b>ScreenshotOne.com</b></a><br /><sub>The screenshot API for developers</sub></td>
|
|
89
89
|
</tr>
|
|
90
90
|
<tr>
|
|
91
91
|
<td width="2000"><a href="https://yuzu.health/careers?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="We're hiring NYC based engineers"><img src="https://avatars.githubusercontent.com/u/102488956?v=4" width="64" align="left" hspace="12" alt="Yuzu"/><b>Yuzu</b></a><br /><sub>We're hiring NYC based engineers</sub></td>
|
|
@@ -127,19 +127,18 @@ Like what we build over at [middleapi](https://github.com/middleapi)? You can he
|
|
|
127
127
|
<td align="center"><a href="https://soymilk.party/?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="あわわわとーにゅ"><img src="https://avatars.githubusercontent.com/u/17376330?u=de3353804be889f009f7e0a1582daf04d0ab292d&v=4" width="139" alt="あわわわとーにゅ"/><br />あわわわとーにゅ</a></td>
|
|
128
128
|
<td align="center"><a href="https://github.com/nicognaW?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="nk"><img src="https://avatars.githubusercontent.com/u/66731869?u=4699bda3a9092d3ec34fbd959450767bcc8b8b6d&v=4" width="139" alt="nk"/><br />nk</a></td>
|
|
129
129
|
<td align="center"><a href="https://supastarter.dev/?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="supastarter"><img src="https://avatars.githubusercontent.com/u/110960143?v=4" width="139" alt="supastarter"/><br />supastarter</a></td>
|
|
130
|
-
<td align="center"><a href="https://github.com/divmgl?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Dexter Miguel"><img src="https://avatars.githubusercontent.com/u/5452298?u=645993204be8696c085ecf0d228c3062efe2ed65&v=4" width="139" alt="Dexter Miguel"/><br />Dexter Miguel</a></td>
|
|
131
130
|
<td align="center"><a href="https://github.com/herrfugbaum?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="herrfugbaum"><img src="https://avatars.githubusercontent.com/u/12859776?u=644dc1666d0220bc0468eb0de3c56b919f635b16&v=4" width="139" alt="herrfugbaum"/><br />herrfugbaum</a></td>
|
|
131
|
+
<td align="center"><a href="https://laststance.io/?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Ryota Murakami"><img src="https://avatars.githubusercontent.com/u/5501268?u=599389e03340734325726ca3f8f423c021d47d7f&v=4" width="139" alt="Ryota Murakami"/><br />Ryota Murakami</a></td>
|
|
132
132
|
</tr>
|
|
133
133
|
<tr>
|
|
134
|
-
<td align="center"><a href="https://laststance.io/?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Ryota Murakami"><img src="https://avatars.githubusercontent.com/u/5501268?u=599389e03340734325726ca3f8f423c021d47d7f&v=4" width="139" alt="Ryota Murakami"/><br />Ryota Murakami</a></td>
|
|
135
134
|
<td align="center"><a href="https://cra.mr/?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="David Cramer"><img src="https://avatars.githubusercontent.com/u/23610?v=4" width="139" alt="David Cramer"/><br />David Cramer</a></td>
|
|
136
135
|
<td align="center"><a href="https://valerii15298.github.io/?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Valerii Petryniak"><img src="https://avatars.githubusercontent.com/u/44531564?u=88ac74d9bacd20401518441907acad21063cd397&v=4" width="139" alt="Valerii Petryniak"/><br />Valerii Petryniak</a></td>
|
|
137
136
|
<td align="center"><a href="https://letstri.dev/?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Valerii Strilets"><img src="https://avatars.githubusercontent.com/u/13253748?u=c7b10399ccc8f8081e24db94ec32cd9858e86ac3&v=4" width="139" alt="Valerii Strilets"/><br />Valerii Strilets</a></td>
|
|
138
137
|
<td align="center"><a href="https://blacklight.sh/?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Kyle Mistele"><img src="https://avatars.githubusercontent.com/u/18430555?u=3afebeb81de666e35aaac3ed46f14159d7603ffb&v=4" width="139" alt="Kyle Mistele"/><br />Kyle Mistele</a></td>
|
|
139
138
|
<td align="center"><a href="https://github.com/christ12938?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="christ12938"><img src="https://avatars.githubusercontent.com/u/25758598?v=4" width="139" alt="christ12938"/><br />christ12938</a></td>
|
|
139
|
+
<td align="center"><a href="https://github.com/Ryanjso?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Ryan Soderberg"><img src="https://avatars.githubusercontent.com/u/39172778?u=5ed913c31d57e7221b75784abcad48c7ebddde27&v=4" width="139" alt="Ryan Soderberg"/><br />Ryan Soderberg</a></td>
|
|
140
140
|
</tr>
|
|
141
141
|
<tr>
|
|
142
|
-
<td align="center"><a href="https://github.com/Ryanjso?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Ryan Soderberg"><img src="https://avatars.githubusercontent.com/u/39172778?u=5ed913c31d57e7221b75784abcad48c7ebddde27&v=4" width="139" alt="Ryan Soderberg"/><br />Ryan Soderberg</a></td>
|
|
143
142
|
<td align="center"><a href="https://github.com/itigoore01?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="shota"><img src="https://avatars.githubusercontent.com/u/11831107?u=c976a6dc7e055eb026304c46c99100ed22b0c8e0&v=4" width="139" alt="shota"/><br />shota</a></td>
|
|
144
143
|
<td align="center"><a href="https://github.com/ellis-driscoll?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Ellis Driscoll"><img src="https://avatars.githubusercontent.com/u/70685966?u=c5f95bc33b5991d9744abe00052542e4a2ed3cb9&v=4" width="139" alt="Ellis Driscoll"/><br />Ellis Driscoll</a></td>
|
|
145
144
|
<td align="center"><a href="https://github.com/hoangbn?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Hoang Nguyen"><img src="https://avatars.githubusercontent.com/u/38968280?u=c90084c6de65c56facabab7ba13a72a49ddbc3e4&v=4" width="139" alt="Hoang Nguyen"/><br />Hoang Nguyen</a></td>
|
|
@@ -173,12 +172,13 @@ Like what we build over at [middleapi](https://github.com/middleapi)? You can he
|
|
|
173
172
|
<td align="center"><a href="https://kellychan.im/?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Kelly Peilin Chan"><img src="https://avatars.githubusercontent.com/u/520852?u=6b0f7105f694e7b5cacf410a3f04c7044b469dc8&v=4" width="119" alt="Kelly Peilin Chan"/><br />Kelly Peilin Chan</a></td>
|
|
174
173
|
<td align="center"><a href="https://guyariely.com/?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Guy Ariely"><img src="https://avatars.githubusercontent.com/u/42813496?u=edb6b7f563bf28e160a290832e7da57c0506f8ca&v=4" width="119" alt="Guy Ariely"/><br />Guy Ariely</a></td>
|
|
175
174
|
<td align="center"><a href="https://paulsenon.com/?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="PaulSenon"><img src="https://avatars.githubusercontent.com/u/19531087?u=6385741eb91d200b8c513ec6045482e301767ca6&v=4" width="119" alt="PaulSenon"/><br />PaulSenon</a></td>
|
|
175
|
+
<td align="center"><a href="https://nakasyou.how/?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Shotaro Nakamura"><img src="https://avatars.githubusercontent.com/u/79000684?u=f644df3f29f0e8677a90967115774564f1d9d6ab&v=4" width="119" alt="Shotaro Nakamura"/><br />Shotaro Nakamura</a></td>
|
|
176
176
|
<td align="center"><a href="https://piscis.dev/?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Alex"><img src="https://avatars.githubusercontent.com/u/326163?u=b245f368bd940cf51d08c0b6bf55f8257f359437&v=4" width="119" alt="Alex"/><br />Alex</a></td>
|
|
177
177
|
<td align="center"><a href="https://opensource.gubanov.eu/?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Andrey Gubanov"><img src="https://avatars.githubusercontent.com/u/1082083?u=c5f2daf7ebece498e85c83367bb37b4e10e2649d&v=4" width="119" alt="Andrey Gubanov"/><br />Andrey Gubanov</a></td>
|
|
178
178
|
</tr>
|
|
179
179
|
</table>
|
|
180
180
|
|
|
181
|
-
With thanks to [
|
|
181
|
+
With thanks to [38 past sponsors](https://orpc.dev/sponsors#past-sponsors) who helped get oRPC here.
|
|
182
182
|
|
|
183
183
|
## References
|
|
184
184
|
|
|
@@ -6,7 +6,7 @@ import '@orpc/client';
|
|
|
6
6
|
import '@orpc/shared';
|
|
7
7
|
import '@standard-server/core';
|
|
8
8
|
import '@orpc/contract';
|
|
9
|
-
import '../../shared/openapi.
|
|
9
|
+
import '../../shared/openapi.C2LayTNZ.mjs';
|
|
10
10
|
|
|
11
11
|
interface OpenAPIHandlerOptions<T extends Context> extends AwsLambdaHandlerOptions<T>, StandardHandlerOptions<T>, OpenAPIHandlerCodecOptions<T> {
|
|
12
12
|
}
|
|
@@ -6,7 +6,7 @@ import '@orpc/client';
|
|
|
6
6
|
import '@orpc/shared';
|
|
7
7
|
import '@standard-server/core';
|
|
8
8
|
import '@orpc/contract';
|
|
9
|
-
import '../../shared/openapi.
|
|
9
|
+
import '../../shared/openapi.C2LayTNZ.js';
|
|
10
10
|
|
|
11
11
|
interface OpenAPIHandlerOptions<T extends Context> extends AwsLambdaHandlerOptions<T>, StandardHandlerOptions<T>, OpenAPIHandlerCodecOptions<T> {
|
|
12
12
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { AwsLambdaHandler } from '@orpc/server/aws-lambda';
|
|
2
2
|
import { StandardHandler } from '@orpc/server/standard';
|
|
3
|
-
import { O as OpenAPIHandlerCodec } from '../../shared/openapi.
|
|
3
|
+
import { O as OpenAPIHandlerCodec } from '../../shared/openapi.Bi1qxGF9.mjs';
|
|
4
4
|
import '@orpc/client';
|
|
5
5
|
import '@orpc/server';
|
|
6
6
|
import '@orpc/shared';
|
|
7
7
|
import '@standard-server/core';
|
|
8
|
-
import '../../shared/openapi.
|
|
8
|
+
import '../../shared/openapi.Bu_PfTtX.mjs';
|
|
9
9
|
import '../../shared/openapi.B2G-HeFn.mjs';
|
|
10
10
|
import '../../shared/openapi.B9PQzqBn.mjs';
|
|
11
11
|
import 'rou3';
|
|
@@ -6,7 +6,7 @@ import '@orpc/client';
|
|
|
6
6
|
import '@orpc/shared';
|
|
7
7
|
import '@standard-server/core';
|
|
8
8
|
import '@orpc/contract';
|
|
9
|
-
import '../../shared/openapi.
|
|
9
|
+
import '../../shared/openapi.C2LayTNZ.mjs';
|
|
10
10
|
|
|
11
11
|
interface OpenAPIHandlerOptions<T extends Context> extends FastifyHandlerOptions<T>, StandardHandlerOptions<T>, OpenAPIHandlerCodecOptions<T> {
|
|
12
12
|
}
|
|
@@ -6,7 +6,7 @@ import '@orpc/client';
|
|
|
6
6
|
import '@orpc/shared';
|
|
7
7
|
import '@standard-server/core';
|
|
8
8
|
import '@orpc/contract';
|
|
9
|
-
import '../../shared/openapi.
|
|
9
|
+
import '../../shared/openapi.C2LayTNZ.js';
|
|
10
10
|
|
|
11
11
|
interface OpenAPIHandlerOptions<T extends Context> extends FastifyHandlerOptions<T>, StandardHandlerOptions<T>, OpenAPIHandlerCodecOptions<T> {
|
|
12
12
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { FastifyHandler } from '@orpc/server/fastify';
|
|
2
2
|
import { StandardHandler } from '@orpc/server/standard';
|
|
3
|
-
import { O as OpenAPIHandlerCodec } from '../../shared/openapi.
|
|
3
|
+
import { O as OpenAPIHandlerCodec } from '../../shared/openapi.Bi1qxGF9.mjs';
|
|
4
4
|
import '@orpc/client';
|
|
5
5
|
import '@orpc/server';
|
|
6
6
|
import '@orpc/shared';
|
|
7
7
|
import '@standard-server/core';
|
|
8
|
-
import '../../shared/openapi.
|
|
8
|
+
import '../../shared/openapi.Bu_PfTtX.mjs';
|
|
9
9
|
import '../../shared/openapi.B2G-HeFn.mjs';
|
|
10
10
|
import '../../shared/openapi.B9PQzqBn.mjs';
|
|
11
11
|
import 'rou3';
|
|
@@ -9,7 +9,7 @@ import { RouterContract } from '@orpc/contract';
|
|
|
9
9
|
import { OpenAPILinkCodecOptions } from '../standard/index.mjs';
|
|
10
10
|
import '@orpc/shared';
|
|
11
11
|
import '@standard-server/core';
|
|
12
|
-
import '../../shared/openapi.
|
|
12
|
+
import '../../shared/openapi.C2LayTNZ.mjs';
|
|
13
13
|
|
|
14
14
|
interface OpenAPIHandlerOptions<T extends Context> extends FetchHandlerOptions<T>, StandardHandlerOptions<T>, OpenAPIHandlerCodecOptions<T> {
|
|
15
15
|
}
|
|
@@ -9,7 +9,7 @@ import { RouterContract } from '@orpc/contract';
|
|
|
9
9
|
import { OpenAPILinkCodecOptions } from '../standard/index.js';
|
|
10
10
|
import '@orpc/shared';
|
|
11
11
|
import '@standard-server/core';
|
|
12
|
-
import '../../shared/openapi.
|
|
12
|
+
import '../../shared/openapi.C2LayTNZ.js';
|
|
13
13
|
|
|
14
14
|
interface OpenAPIHandlerOptions<T extends Context> extends FetchHandlerOptions<T>, StandardHandlerOptions<T>, OpenAPIHandlerCodecOptions<T> {
|
|
15
15
|
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { FetchHandler } from '@orpc/server/fetch';
|
|
2
2
|
import { StandardHandler } from '@orpc/server/standard';
|
|
3
|
-
import { O as OpenAPIHandlerCodec } from '../../shared/openapi.
|
|
3
|
+
import { O as OpenAPIHandlerCodec } from '../../shared/openapi.Bi1qxGF9.mjs';
|
|
4
4
|
import { FetchLinkTransport } from '@orpc/client/fetch';
|
|
5
5
|
import { StandardLink } from '@orpc/client/standard';
|
|
6
|
-
import { O as OpenAPILinkCodec } from '../../shared/openapi.
|
|
6
|
+
import { O as OpenAPILinkCodec } from '../../shared/openapi.8cM6P94D.mjs';
|
|
7
7
|
import '@orpc/client';
|
|
8
8
|
import '@orpc/server';
|
|
9
9
|
import '@orpc/shared';
|
|
10
10
|
import '@standard-server/core';
|
|
11
|
-
import '../../shared/openapi.
|
|
11
|
+
import '../../shared/openapi.Bu_PfTtX.mjs';
|
|
12
12
|
import '../../shared/openapi.B2G-HeFn.mjs';
|
|
13
13
|
import '../../shared/openapi.B9PQzqBn.mjs';
|
|
14
14
|
import 'rou3';
|
|
@@ -6,7 +6,7 @@ import '@orpc/client';
|
|
|
6
6
|
import '@orpc/shared';
|
|
7
7
|
import '@standard-server/core';
|
|
8
8
|
import '@orpc/contract';
|
|
9
|
-
import '../../shared/openapi.
|
|
9
|
+
import '../../shared/openapi.C2LayTNZ.mjs';
|
|
10
10
|
|
|
11
11
|
interface OpenAPIHandlerOptions<T extends Context> extends NodeHttpHandlerOptions<T>, StandardHandlerOptions<T>, OpenAPIHandlerCodecOptions<T> {
|
|
12
12
|
}
|
|
@@ -6,7 +6,7 @@ import '@orpc/client';
|
|
|
6
6
|
import '@orpc/shared';
|
|
7
7
|
import '@standard-server/core';
|
|
8
8
|
import '@orpc/contract';
|
|
9
|
-
import '../../shared/openapi.
|
|
9
|
+
import '../../shared/openapi.C2LayTNZ.js';
|
|
10
10
|
|
|
11
11
|
interface OpenAPIHandlerOptions<T extends Context> extends NodeHttpHandlerOptions<T>, StandardHandlerOptions<T>, OpenAPIHandlerCodecOptions<T> {
|
|
12
12
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { NodeHttpHandler } from '@orpc/server/node';
|
|
2
2
|
import { StandardHandler } from '@orpc/server/standard';
|
|
3
|
-
import { O as OpenAPIHandlerCodec } from '../../shared/openapi.
|
|
3
|
+
import { O as OpenAPIHandlerCodec } from '../../shared/openapi.Bi1qxGF9.mjs';
|
|
4
4
|
import '@orpc/client';
|
|
5
5
|
import '@orpc/server';
|
|
6
6
|
import '@orpc/shared';
|
|
7
7
|
import '@standard-server/core';
|
|
8
|
-
import '../../shared/openapi.
|
|
8
|
+
import '../../shared/openapi.Bu_PfTtX.mjs';
|
|
9
9
|
import '../../shared/openapi.B2G-HeFn.mjs';
|
|
10
10
|
import '../../shared/openapi.B9PQzqBn.mjs';
|
|
11
11
|
import 'rou3';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { a as OpenAPIHandlerCodec, b as OpenAPIHandlerCodecCore, c as OpenAPIHandlerCodecCoreOptions, O as OpenAPIHandlerCodecOptions, d as OpenAPIMatcher, e as OpenAPIMatcherOptions } from '../../shared/openapi.
|
|
2
|
-
export { a as OpenAPILinkCodec, O as OpenAPILinkCodecOptions } from '../../shared/openapi.
|
|
1
|
+
export { a as OpenAPIHandlerCodec, b as OpenAPIHandlerCodecCore, c as OpenAPIHandlerCodecCoreOptions, O as OpenAPIHandlerCodecOptions, d as OpenAPIMatcher, e as OpenAPIMatcherOptions } from '../../shared/openapi.BgpM--nz.mjs';
|
|
2
|
+
export { a as OpenAPILinkCodec, O as OpenAPILinkCodecOptions } from '../../shared/openapi.Cg9h6jpm.mjs';
|
|
3
3
|
import { StandardHeaders } from '@standard-server/core';
|
|
4
4
|
import { OpenAPISerializer } from '../../index.mjs';
|
|
5
5
|
import '@orpc/client';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { a as OpenAPIHandlerCodec, b as OpenAPIHandlerCodecCore, c as OpenAPIHandlerCodecCoreOptions, O as OpenAPIHandlerCodecOptions, d as OpenAPIMatcher, e as OpenAPIMatcherOptions } from '../../shared/openapi.
|
|
2
|
-
export { a as OpenAPILinkCodec, O as OpenAPILinkCodecOptions } from '../../shared/openapi.
|
|
1
|
+
export { a as OpenAPIHandlerCodec, b as OpenAPIHandlerCodecCore, c as OpenAPIHandlerCodecCoreOptions, O as OpenAPIHandlerCodecOptions, d as OpenAPIMatcher, e as OpenAPIMatcherOptions } from '../../shared/openapi.BCNfESWr.js';
|
|
2
|
+
export { a as OpenAPILinkCodec, O as OpenAPILinkCodecOptions } from '../../shared/openapi.D0yWs-uW.js';
|
|
3
3
|
import { StandardHeaders } from '@standard-server/core';
|
|
4
4
|
import { OpenAPISerializer } from '../../index.js';
|
|
5
5
|
import '@orpc/client';
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { O as OpenAPIHandlerCodec, a as OpenAPIHandlerCodecCore, b as OpenAPIMatcher, s as serializeHeaders } from '../../shared/openapi.
|
|
2
|
-
export { O as OpenAPILinkCodec } from '../../shared/openapi.
|
|
1
|
+
export { O as OpenAPIHandlerCodec, a as OpenAPIHandlerCodecCore, b as OpenAPIMatcher, s as serializeHeaders } from '../../shared/openapi.Bi1qxGF9.mjs';
|
|
2
|
+
export { O as OpenAPILinkCodec } from '../../shared/openapi.8cM6P94D.mjs';
|
|
3
3
|
import '@orpc/client';
|
|
4
4
|
import '@orpc/server';
|
|
5
5
|
import '@orpc/shared';
|
|
6
6
|
import '@standard-server/core';
|
|
7
|
-
import '../../shared/openapi.
|
|
7
|
+
import '../../shared/openapi.Bu_PfTtX.mjs';
|
|
8
8
|
import '../../shared/openapi.B2G-HeFn.mjs';
|
|
9
9
|
import '../../shared/openapi.B9PQzqBn.mjs';
|
|
10
10
|
import 'rou3';
|
package/dist/index.d.mts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { O as OpenAPISerializer } from './shared/openapi.
|
|
2
|
-
export { B as BracketNotationSerializeResult, a as BracketNotationSerializer, b as BracketNotationSerializerOptions, c as OpenAPIJsonSerialization, d as OpenAPIJsonSerializer, e as OpenAPIJsonSerializerHandler, f as OpenAPIJsonSerializerOptions, g as OpenAPISerializerOptions, h as OpenAPISerializerSerializeOptions } from './shared/openapi.
|
|
1
|
+
import { O as OpenAPISerializer } from './shared/openapi.C2LayTNZ.mjs';
|
|
2
|
+
export { B as BracketNotationSerializeResult, a as BracketNotationSerializer, b as BracketNotationSerializerOptions, c as OpenAPIJsonSerialization, d as OpenAPIJsonSerializer, e as OpenAPIJsonSerializerHandler, f as OpenAPIJsonSerializerOptions, g as OpenAPISerializerOptions, h as OpenAPISerializerSerializeOptions } from './shared/openapi.C2LayTNZ.mjs';
|
|
3
3
|
import { ClientContext, ORPCClientOptions, ClientLink } from '@orpc/client';
|
|
4
4
|
export { COMMON_ERROR_STATUS_MAP } from '@orpc/client';
|
|
5
5
|
import { RouterContract, RouterContractClient, AnyProcedureContract, ProcedureContract } from '@orpc/contract';
|
|
6
|
-
import { J as JsonifiedClient, O as OpenAPIVersion, a as OpenAPIDocument } from './shared/openapi.
|
|
7
|
-
export { b as JsonifiedArray, c as JsonifiedClientError, d as JsonifiedValue } from './shared/openapi.
|
|
6
|
+
import { J as JsonifiedClient, O as OpenAPIVersion, a as OpenAPIDocument } from './shared/openapi.C6FFC29v.mjs';
|
|
7
|
+
export { b as JsonifiedArray, c as JsonifiedClientError, d as JsonifiedValue } from './shared/openapi.C6FFC29v.mjs';
|
|
8
8
|
export { a as OpenAPIFunction, O as OpenAPIMeta, b as OpenAPIMetaPlugin, c as OpenAPIMethodMetaPlugin, d as OpenAPIPathMetaPlugin, e as OpenAPIPrefixMetaPlugin, f as OpenAPISpecMetaPlugin, g as getOpenAPIMeta, o as openapi } from './shared/openapi.Cem81Zhm.mjs';
|
|
9
9
|
import { JsonSchema, JsonSchemaConverter } from '@orpc/json-schema';
|
|
10
10
|
import { AnyRouter, AnyProcedure } from '@orpc/server';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { O as OpenAPISerializer } from './shared/openapi.
|
|
2
|
-
export { B as BracketNotationSerializeResult, a as BracketNotationSerializer, b as BracketNotationSerializerOptions, c as OpenAPIJsonSerialization, d as OpenAPIJsonSerializer, e as OpenAPIJsonSerializerHandler, f as OpenAPIJsonSerializerOptions, g as OpenAPISerializerOptions, h as OpenAPISerializerSerializeOptions } from './shared/openapi.
|
|
1
|
+
import { O as OpenAPISerializer } from './shared/openapi.C2LayTNZ.js';
|
|
2
|
+
export { B as BracketNotationSerializeResult, a as BracketNotationSerializer, b as BracketNotationSerializerOptions, c as OpenAPIJsonSerialization, d as OpenAPIJsonSerializer, e as OpenAPIJsonSerializerHandler, f as OpenAPIJsonSerializerOptions, g as OpenAPISerializerOptions, h as OpenAPISerializerSerializeOptions } from './shared/openapi.C2LayTNZ.js';
|
|
3
3
|
import { ClientContext, ORPCClientOptions, ClientLink } from '@orpc/client';
|
|
4
4
|
export { COMMON_ERROR_STATUS_MAP } from '@orpc/client';
|
|
5
5
|
import { RouterContract, RouterContractClient, AnyProcedureContract, ProcedureContract } from '@orpc/contract';
|
|
6
|
-
import { J as JsonifiedClient, O as OpenAPIVersion, a as OpenAPIDocument } from './shared/openapi.
|
|
7
|
-
export { b as JsonifiedArray, c as JsonifiedClientError, d as JsonifiedValue } from './shared/openapi.
|
|
6
|
+
import { J as JsonifiedClient, O as OpenAPIVersion, a as OpenAPIDocument } from './shared/openapi.C6FFC29v.js';
|
|
7
|
+
export { b as JsonifiedArray, c as JsonifiedClientError, d as JsonifiedValue } from './shared/openapi.C6FFC29v.js';
|
|
8
8
|
export { a as OpenAPIFunction, O as OpenAPIMeta, b as OpenAPIMetaPlugin, c as OpenAPIMethodMetaPlugin, d as OpenAPIPathMetaPlugin, e as OpenAPIPrefixMetaPlugin, f as OpenAPISpecMetaPlugin, g as getOpenAPIMeta, o as openapi } from './shared/openapi.Cem81Zhm.js';
|
|
9
9
|
import { JsonSchema, JsonSchemaConverter } from '@orpc/json-schema';
|
|
10
10
|
import { AnyRouter, AnyProcedure } from '@orpc/server';
|
package/dist/index.mjs
CHANGED
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
export { B as BracketNotationSerializer } from './shared/openapi.B2G-HeFn.mjs';
|
|
2
2
|
import { createContractClientFactory, getAsyncIteratorObjectSchemaDetails, ProcedureContract, resolveMetaPlugins } from '@orpc/contract';
|
|
3
|
-
import { D as DEFAULT_OPENAPI_METHOD, a as DEFAULT_OPENAPI_INPUT_STRUCTURE, c as DEFAULT_OPENAPI_SUCCESS_DESCRIPTION, b as DEFAULT_OPENAPI_OUTPUT_STRUCTURE, i as isBodylessMethod, O as OpenAPISerializer, g as getDynamicPathParams } from './shared/openapi.
|
|
4
|
-
export { d as OpenAPIJsonSerializer } from './shared/openapi.
|
|
3
|
+
import { D as DEFAULT_OPENAPI_METHOD, a as DEFAULT_OPENAPI_INPUT_STRUCTURE, c as DEFAULT_OPENAPI_SUCCESS_DESCRIPTION, b as DEFAULT_OPENAPI_OUTPUT_STRUCTURE, i as isBodylessMethod, O as OpenAPISerializer, g as getDynamicPathParams } from './shared/openapi.Bu_PfTtX.mjs';
|
|
4
|
+
export { d as OpenAPIJsonSerializer } from './shared/openapi.Bu_PfTtX.mjs';
|
|
5
5
|
import { g as getOpenAPIMeta, o as openapi } from './shared/openapi.B9PQzqBn.mjs';
|
|
6
6
|
import { downgradeSpecV32ToV31, downgradeSpecV31ToV30 } from '@openapi-spec/downgrader';
|
|
7
7
|
import { COMMON_ERROR_STATUS_MAP } from '@orpc/client';
|
|
8
8
|
export { COMMON_ERROR_STATUS_MAP } from '@orpc/client';
|
|
9
|
-
import { encodeJsonPointerSegment, ensureJsonSchemaObject, mapJsonSchemaRefs, decodeJsonPointerSegment, isUnconstrainedSchema, combineJsonSchemasWithComposition, extractJsonObjectSchemaEntries, combineJsonObjectSchemaEntries, flattenJsonUnionSchema, isJsonPrimitiveSchema, matchArrayableJsonSchema, isJsonFileSchema, DelegatingJsonSchemaConverter, StandardJsonSchemaConverter } from '@orpc/json-schema';
|
|
9
|
+
import { encodeJsonPointerSegment, ensureJsonSchemaObject, mapJsonSchemaRefs, decodeJsonPointerSegment, isUnconstrainedSchema, combineJsonSchemasWithComposition, extractJsonObjectSchemaEntries, combineJsonObjectSchemaEntries, flattenJsonUnionSchema, isJsonPrimitiveSchema, matchArrayableJsonSchema, isJsonFileSchema, DelegatingJsonSchemaConverter, StandardJsonSchemaConverter, hoistRecursiveRefToDef } from '@orpc/json-schema';
|
|
10
10
|
import { DEFAULT_SUCCESS_STATUS, DEFAULT_ERROR_STATUS, walkProcedureContractsAsync } from '@orpc/server';
|
|
11
|
-
import { isDeepEqual, value, findDeepMatches, isPlainObject, stringifyJSON, toArray, clone, pathToHttpPath, mergeHttpPath, isTypescriptObject } from '@orpc/shared';
|
|
11
|
+
import { setOwn, getOwn, isDeepEqual, value, findDeepMatches, isPlainObject, stringifyJSON, toArray, clone, pathToHttpPath, mergeHttpPath, isTypescriptObject } from '@orpc/shared';
|
|
12
12
|
import '@standard-server/core';
|
|
13
13
|
|
|
14
14
|
function createContractJsonifiedClientFactory(link, options = {}) {
|
|
15
15
|
return createContractClientFactory(link, options);
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
const DEFS_REF_PREFIX = "#/$defs/";
|
|
19
|
+
const COMPONENTS_REF_PREFIX = "#/components/schemas/";
|
|
18
20
|
class OpenAPIComponentRegistry {
|
|
19
21
|
constructor(doc, customComponentName) {
|
|
20
22
|
this.doc = doc;
|
|
@@ -28,13 +30,13 @@ class OpenAPIComponentRegistry {
|
|
|
28
30
|
const { $defs, ...body } = schema;
|
|
29
31
|
let defName = preferredName;
|
|
30
32
|
if ($defs) {
|
|
31
|
-
for (let i = 2;
|
|
33
|
+
for (let i = 2; Object.hasOwn($defs, defName); i++) {
|
|
32
34
|
defName = `${preferredName}${i}`;
|
|
33
35
|
}
|
|
34
36
|
}
|
|
35
37
|
return this.hoistDefs({
|
|
36
38
|
$defs: { ...$defs, [defName]: body },
|
|
37
|
-
$ref:
|
|
39
|
+
$ref: `${DEFS_REF_PREFIX}${encodeJsonPointerSegment(defName)}`
|
|
38
40
|
});
|
|
39
41
|
}
|
|
40
42
|
/**
|
|
@@ -46,60 +48,37 @@ class OpenAPIComponentRegistry {
|
|
|
46
48
|
return schema;
|
|
47
49
|
}
|
|
48
50
|
const { $defs, ...rest } = schema;
|
|
49
|
-
const defs =
|
|
50
|
-
const preferredNames = {};
|
|
51
|
+
const defs = /* @__PURE__ */ new Map();
|
|
51
52
|
for (const defName of Object.keys($defs)) {
|
|
52
53
|
const defSchema = $defs[defName];
|
|
53
|
-
if (defSchema
|
|
54
|
-
|
|
54
|
+
if (defSchema !== void 0) {
|
|
55
|
+
defs.set(defName, ensureJsonSchemaObject(defSchema));
|
|
55
56
|
}
|
|
56
|
-
const normalized = ensureJsonSchemaObject(defSchema);
|
|
57
|
-
defs[defName] = normalized;
|
|
58
|
-
preferredNames[defName] = this.customComponentName?.(defName, normalized) ?? defName;
|
|
59
57
|
}
|
|
60
|
-
|
|
61
|
-
if (defNames.length === 0) {
|
|
58
|
+
if (defs.size === 0) {
|
|
62
59
|
return schema;
|
|
63
60
|
}
|
|
64
61
|
this.doc.components ??= {};
|
|
65
62
|
this.doc.components.schemas ??= {};
|
|
66
63
|
const componentsSchemas = this.doc.components.schemas;
|
|
67
|
-
const
|
|
68
|
-
defNames.map((defName) => [defName, preferredNames[defName]])
|
|
69
|
-
);
|
|
70
|
-
const renameMap = {};
|
|
64
|
+
const renameMap = /* @__PURE__ */ new Map();
|
|
71
65
|
const pendingSchemas = [];
|
|
72
|
-
for (const defName of
|
|
73
|
-
const cleanSchema = defs[defName];
|
|
74
|
-
const candidateSchemas = Object.fromEntries(
|
|
75
|
-
defNames.map((currentDefName) => [
|
|
76
|
-
preferredNames[currentDefName],
|
|
77
|
-
rewriteComponentSchemaRefs(defs[currentDefName], {
|
|
78
|
-
...identityRenameMap,
|
|
79
|
-
...renameMap
|
|
80
|
-
})
|
|
81
|
-
])
|
|
82
|
-
);
|
|
83
|
-
const preferredName = preferredNames[defName];
|
|
84
|
-
const prelimSchema = candidateSchemas[preferredName];
|
|
66
|
+
for (const [defName, cleanSchema] of defs) {
|
|
85
67
|
const [componentName, reuseExisting] = resolveComponentName(
|
|
86
68
|
componentsSchemas,
|
|
87
|
-
new Set(
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
69
|
+
new Set(renameMap.values()),
|
|
70
|
+
defName,
|
|
71
|
+
this.customComponentName?.(defName, cleanSchema) ?? defName,
|
|
72
|
+
defs,
|
|
91
73
|
direction
|
|
92
74
|
);
|
|
93
|
-
renameMap
|
|
75
|
+
renameMap.set(defName, componentName);
|
|
94
76
|
if (!reuseExisting) {
|
|
95
77
|
pendingSchemas.push({ cleanSchema, componentName });
|
|
96
78
|
}
|
|
97
79
|
}
|
|
98
80
|
for (const { cleanSchema, componentName } of pendingSchemas) {
|
|
99
|
-
componentsSchemas
|
|
100
|
-
cleanSchema,
|
|
101
|
-
renameMap
|
|
102
|
-
);
|
|
81
|
+
setOwn(componentsSchemas, componentName, rewriteComponentSchemaRefs(cleanSchema, renameMap));
|
|
103
82
|
}
|
|
104
83
|
return rewriteComponentSchemaRefs(rest, renameMap);
|
|
105
84
|
}
|
|
@@ -107,11 +86,11 @@ class OpenAPIComponentRegistry {
|
|
|
107
86
|
return ensureJsonSchemaObject(this.hoistDefs(schema, direction));
|
|
108
87
|
}
|
|
109
88
|
}
|
|
110
|
-
function resolveComponentName(componentsSchemas, claimedNames,
|
|
89
|
+
function resolveComponentName(componentsSchemas, claimedNames, defName, preferredName, defs, direction) {
|
|
111
90
|
let mintName;
|
|
112
91
|
for (let i = 1; ; i++) {
|
|
113
92
|
const [componentName, mintable, tail] = componentNameCandidate(preferredName, direction, i);
|
|
114
|
-
const existingSchema = componentsSchemas
|
|
93
|
+
const existingSchema = getOwn(componentsSchemas, componentName);
|
|
115
94
|
if (existingSchema === void 0) {
|
|
116
95
|
if (mintable && !claimedNames.has(componentName)) {
|
|
117
96
|
mintName ??= componentName;
|
|
@@ -121,15 +100,10 @@ function resolveComponentName(componentsSchemas, claimedNames, preferredName, sc
|
|
|
121
100
|
}
|
|
122
101
|
continue;
|
|
123
102
|
}
|
|
124
|
-
if (
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
existingSchema,
|
|
129
|
-
candidateSchemas,
|
|
130
|
-
componentsSchemas,
|
|
131
|
-
/* @__PURE__ */ new Map([[preferredName, componentName]]),
|
|
132
|
-
/* @__PURE__ */ new Map([[componentName, preferredName]])
|
|
103
|
+
if (areSchemaRefsEquivalentForReuse(
|
|
104
|
+
DEFS_REF_PREFIX + encodeJsonPointerSegment(defName),
|
|
105
|
+
COMPONENTS_REF_PREFIX + encodeJsonPointerSegment(componentName),
|
|
106
|
+
{ defs, componentsSchemas, candidateToExistingKeys: /* @__PURE__ */ new Map(), pairedExistingKeys: /* @__PURE__ */ new Set(), visited: /* @__PURE__ */ new WeakMap() }
|
|
133
107
|
)) {
|
|
134
108
|
return [componentName, true];
|
|
135
109
|
}
|
|
@@ -153,7 +127,7 @@ function componentNameCandidate(preferredName, direction, attempt) {
|
|
|
153
127
|
function definedKeysOf(object) {
|
|
154
128
|
return Object.keys(object).filter((key) => object[key] !== void 0).sort();
|
|
155
129
|
}
|
|
156
|
-
function areSchemasEquivalentForReuse(candidate, existing,
|
|
130
|
+
function areSchemasEquivalentForReuse(candidate, existing, ctx) {
|
|
157
131
|
if (candidate === existing) {
|
|
158
132
|
return true;
|
|
159
133
|
}
|
|
@@ -166,30 +140,20 @@ function areSchemasEquivalentForReuse(candidate, existing, candidateRootSchema,
|
|
|
166
140
|
if (typeof candidate !== "object" || typeof existing !== "object") {
|
|
167
141
|
return isDeepEqual(candidate, existing);
|
|
168
142
|
}
|
|
169
|
-
const seenExisting = visited.get(candidate);
|
|
143
|
+
const seenExisting = ctx.visited.get(candidate);
|
|
170
144
|
if (seenExisting?.has(existing)) {
|
|
171
145
|
return true;
|
|
172
146
|
}
|
|
173
147
|
if (seenExisting) {
|
|
174
148
|
seenExisting.add(existing);
|
|
175
149
|
} else {
|
|
176
|
-
visited.set(candidate, new WeakSet([existing]));
|
|
150
|
+
ctx.visited.set(candidate, new WeakSet([existing]));
|
|
177
151
|
}
|
|
178
152
|
if (Array.isArray(candidate) || Array.isArray(existing)) {
|
|
179
153
|
if (!Array.isArray(candidate) || !Array.isArray(existing) || candidate.length !== existing.length) {
|
|
180
154
|
return false;
|
|
181
155
|
}
|
|
182
|
-
return candidate.every((item, index) => areSchemasEquivalentForReuse(
|
|
183
|
-
item,
|
|
184
|
-
existing[index],
|
|
185
|
-
candidateRootSchema,
|
|
186
|
-
existingRootSchema,
|
|
187
|
-
candidateSchemas,
|
|
188
|
-
existingSchemas,
|
|
189
|
-
candidateToExistingComponentNames,
|
|
190
|
-
existingToCandidateComponentNames,
|
|
191
|
-
visited
|
|
192
|
-
));
|
|
156
|
+
return candidate.every((item, index) => areSchemasEquivalentForReuse(item, existing[index], ctx));
|
|
193
157
|
}
|
|
194
158
|
const candidateObject = candidate;
|
|
195
159
|
const existingObject = existing;
|
|
@@ -202,112 +166,53 @@ function areSchemasEquivalentForReuse(candidate, existing, candidateRootSchema,
|
|
|
202
166
|
const candidateValue = candidateObject[key];
|
|
203
167
|
const existingValue = existingObject[key];
|
|
204
168
|
if (key === "$ref" && typeof candidateValue === "string" && typeof existingValue === "string") {
|
|
205
|
-
return areSchemaRefsEquivalentForReuse(
|
|
206
|
-
candidateValue,
|
|
207
|
-
existingValue,
|
|
208
|
-
candidateRootSchema,
|
|
209
|
-
existingRootSchema,
|
|
210
|
-
candidateSchemas,
|
|
211
|
-
existingSchemas,
|
|
212
|
-
candidateToExistingComponentNames,
|
|
213
|
-
existingToCandidateComponentNames,
|
|
214
|
-
visited
|
|
215
|
-
);
|
|
169
|
+
return areSchemaRefsEquivalentForReuse(candidateValue, existingValue, ctx);
|
|
216
170
|
}
|
|
217
|
-
return areSchemasEquivalentForReuse(
|
|
218
|
-
candidateValue,
|
|
219
|
-
existingValue,
|
|
220
|
-
candidateRootSchema,
|
|
221
|
-
existingRootSchema,
|
|
222
|
-
candidateSchemas,
|
|
223
|
-
existingSchemas,
|
|
224
|
-
candidateToExistingComponentNames,
|
|
225
|
-
existingToCandidateComponentNames,
|
|
226
|
-
visited
|
|
227
|
-
);
|
|
171
|
+
return areSchemasEquivalentForReuse(candidateValue, existingValue, ctx);
|
|
228
172
|
});
|
|
229
173
|
}
|
|
230
|
-
function
|
|
231
|
-
if (!ref.startsWith(
|
|
174
|
+
function parseRefName(ref, prefix) {
|
|
175
|
+
if (!ref.startsWith(prefix)) {
|
|
232
176
|
return void 0;
|
|
233
177
|
}
|
|
234
|
-
return ref.slice(
|
|
178
|
+
return ref.slice(prefix.length).split("/").map(decodeJsonPointerSegment).join("/");
|
|
235
179
|
}
|
|
236
|
-
function
|
|
237
|
-
const
|
|
238
|
-
if (
|
|
239
|
-
|
|
240
|
-
if (localDef !== void 0) {
|
|
241
|
-
return {
|
|
242
|
-
schema: localDef,
|
|
243
|
-
rootSchema
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
const componentName = parseComponentRefName(ref);
|
|
248
|
-
if (componentName !== void 0) {
|
|
249
|
-
const componentSchema = componentsSchemas[componentName];
|
|
250
|
-
if (componentSchema !== void 0) {
|
|
251
|
-
return {
|
|
252
|
-
schema: componentSchema,
|
|
253
|
-
rootSchema: componentSchema
|
|
254
|
-
};
|
|
255
|
-
}
|
|
180
|
+
function resolveNamedRef(ref, prefix, getNamed) {
|
|
181
|
+
const name = parseRefName(ref, prefix);
|
|
182
|
+
if (name === void 0) {
|
|
183
|
+
return void 0;
|
|
256
184
|
}
|
|
257
|
-
|
|
185
|
+
const schema = getNamed(name);
|
|
186
|
+
return schema === void 0 ? void 0 : { key: prefix + name, schema };
|
|
258
187
|
}
|
|
259
|
-
function areSchemaRefsEquivalentForReuse(candidateRef, existingRef,
|
|
260
|
-
const
|
|
261
|
-
const
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
188
|
+
function areSchemaRefsEquivalentForReuse(candidateRef, existingRef, ctx) {
|
|
189
|
+
const getComponent = (name) => getOwn(ctx.componentsSchemas, name);
|
|
190
|
+
const candidate = resolveNamedRef(candidateRef, DEFS_REF_PREFIX, (name) => ctx.defs.get(name)) ?? resolveNamedRef(candidateRef, COMPONENTS_REF_PREFIX, getComponent);
|
|
191
|
+
const existing = resolveNamedRef(existingRef, COMPONENTS_REF_PREFIX, getComponent);
|
|
192
|
+
if (candidate === void 0 || existing === void 0) {
|
|
193
|
+
return !candidate && !existing && candidateRef === existingRef;
|
|
194
|
+
}
|
|
195
|
+
const pairedExisting = ctx.candidateToExistingKeys.get(candidate.key);
|
|
196
|
+
if (pairedExisting !== existing.key) {
|
|
197
|
+
if (pairedExisting !== void 0 || ctx.pairedExistingKeys.has(existing.key)) {
|
|
268
198
|
return false;
|
|
269
199
|
}
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
return false;
|
|
273
|
-
}
|
|
274
|
-
candidateToExistingComponentNames.set(candidateComponentName, existingComponentName);
|
|
275
|
-
existingToCandidateComponentNames.set(existingComponentName, candidateComponentName);
|
|
276
|
-
}
|
|
277
|
-
const resolvedCandidate = resolveSchemaComparisonRef(candidateRef, candidateRootSchema, candidateSchemas);
|
|
278
|
-
const resolvedExisting = resolveSchemaComparisonRef(existingRef, existingRootSchema, existingSchemas);
|
|
279
|
-
if (resolvedCandidate === void 0 || resolvedExisting === void 0) {
|
|
280
|
-
return candidateRef === existingRef;
|
|
281
|
-
}
|
|
282
|
-
return areSchemasEquivalentForReuse(
|
|
283
|
-
resolvedCandidate.schema,
|
|
284
|
-
resolvedExisting.schema,
|
|
285
|
-
resolvedCandidate.rootSchema,
|
|
286
|
-
resolvedExisting.rootSchema,
|
|
287
|
-
candidateSchemas,
|
|
288
|
-
existingSchemas,
|
|
289
|
-
candidateToExistingComponentNames,
|
|
290
|
-
existingToCandidateComponentNames,
|
|
291
|
-
visited
|
|
292
|
-
);
|
|
293
|
-
}
|
|
294
|
-
function parseLocalDefRefName(ref) {
|
|
295
|
-
if (!ref.startsWith("#/$defs/")) {
|
|
296
|
-
return void 0;
|
|
200
|
+
ctx.candidateToExistingKeys.set(candidate.key, existing.key);
|
|
201
|
+
ctx.pairedExistingKeys.add(existing.key);
|
|
297
202
|
}
|
|
298
|
-
return
|
|
203
|
+
return areSchemasEquivalentForReuse(candidate.schema, existing.schema, ctx);
|
|
299
204
|
}
|
|
300
205
|
function rewriteComponentSchemaRefs(schema, renameMap) {
|
|
301
206
|
return mapJsonSchemaRefs(schema, (ref) => {
|
|
302
|
-
const refName =
|
|
207
|
+
const refName = parseRefName(ref, DEFS_REF_PREFIX);
|
|
303
208
|
if (refName === void 0) {
|
|
304
209
|
return ref;
|
|
305
210
|
}
|
|
306
|
-
const renamedName = renameMap
|
|
211
|
+
const renamedName = renameMap.get(refName);
|
|
307
212
|
if (renamedName === void 0) {
|
|
308
213
|
return ref;
|
|
309
214
|
}
|
|
310
|
-
return
|
|
215
|
+
return COMPONENTS_REF_PREFIX + encodeJsonPointerSegment(renamedName);
|
|
311
216
|
});
|
|
312
217
|
}
|
|
313
218
|
|
|
@@ -816,7 +721,7 @@ ${errors.join("\n\n")}`
|
|
|
816
721
|
}
|
|
817
722
|
convertSchema(schema, direction) {
|
|
818
723
|
const [jsonSchema, optional] = this.converter.convert(schema, direction);
|
|
819
|
-
return [strip$schemaField(jsonSchema), optional];
|
|
724
|
+
return [hoistRecursiveRefToDef(strip$schemaField(jsonSchema)), optional];
|
|
820
725
|
}
|
|
821
726
|
convertSchemas(schemas, direction) {
|
|
822
727
|
if (!schemas || schemas.length <= 1) {
|
package/dist/plugins/index.d.mts
CHANGED
|
@@ -13,8 +13,20 @@ interface OpenAPIReferenceHandlerPluginScalarConfig extends Partial<ApiReference
|
|
|
13
13
|
}
|
|
14
14
|
interface OpenAPIReferenceHandlerPluginSwaggerConfig extends Partial<Omit<SwaggerUIOptions, 'dom_id' | 'presets' | 'plugins'>> {
|
|
15
15
|
dom_id?: undefined | never;
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Paths to global variables holding the presets, resolved in the browser,
|
|
18
|
+
* e.g. `'SwaggerUIBundle.presets.apis'`. Load custom presets through `docsHead`.
|
|
19
|
+
*
|
|
20
|
+
* @default ['SwaggerUIBundle.presets.apis']
|
|
21
|
+
*/
|
|
22
|
+
presets?: undefined | string[];
|
|
23
|
+
/**
|
|
24
|
+
* Paths to global variables holding the plugins, resolved in the browser,
|
|
25
|
+
* e.g. `'SwaggerUIBundle.plugins.DownloadUrl'`. Load custom plugins through `docsHead`.
|
|
26
|
+
*
|
|
27
|
+
* @default ['SwaggerUIBundle.plugins.DownloadUrl']
|
|
28
|
+
*/
|
|
29
|
+
plugins?: undefined | string[];
|
|
18
30
|
}
|
|
19
31
|
interface OpenAPIReferenceHandlerPluginOptions<T extends Context, TProvider extends OpenAPIReferenceHandlerPluginProvider> {
|
|
20
32
|
/**
|
package/dist/plugins/index.d.ts
CHANGED
|
@@ -13,8 +13,20 @@ interface OpenAPIReferenceHandlerPluginScalarConfig extends Partial<ApiReference
|
|
|
13
13
|
}
|
|
14
14
|
interface OpenAPIReferenceHandlerPluginSwaggerConfig extends Partial<Omit<SwaggerUIOptions, 'dom_id' | 'presets' | 'plugins'>> {
|
|
15
15
|
dom_id?: undefined | never;
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Paths to global variables holding the presets, resolved in the browser,
|
|
18
|
+
* e.g. `'SwaggerUIBundle.presets.apis'`. Load custom presets through `docsHead`.
|
|
19
|
+
*
|
|
20
|
+
* @default ['SwaggerUIBundle.presets.apis']
|
|
21
|
+
*/
|
|
22
|
+
presets?: undefined | string[];
|
|
23
|
+
/**
|
|
24
|
+
* Paths to global variables holding the plugins, resolved in the browser,
|
|
25
|
+
* e.g. `'SwaggerUIBundle.plugins.DownloadUrl'`. Load custom plugins through `docsHead`.
|
|
26
|
+
*
|
|
27
|
+
* @default ['SwaggerUIBundle.plugins.DownloadUrl']
|
|
28
|
+
*/
|
|
29
|
+
plugins?: undefined | string[];
|
|
18
30
|
}
|
|
19
31
|
interface OpenAPIReferenceHandlerPluginOptions<T extends Context, TProvider extends OpenAPIReferenceHandlerPluginProvider> {
|
|
20
32
|
/**
|
package/dist/plugins/index.mjs
CHANGED
|
@@ -69,13 +69,8 @@ class OpenAPIReferenceHandlerPlugin {
|
|
|
69
69
|
dom_id: "#app",
|
|
70
70
|
spec,
|
|
71
71
|
deepLinking: true,
|
|
72
|
-
presets: [
|
|
73
|
-
|
|
74
|
-
"SwaggerUIBundle.presets.standalone"
|
|
75
|
-
],
|
|
76
|
-
plugins: [
|
|
77
|
-
"SwaggerUIBundle.plugins.DownloadUrl"
|
|
78
|
-
],
|
|
72
|
+
presets: ["SwaggerUIBundle.presets.apis"],
|
|
73
|
+
plugins: ["SwaggerUIBundle.plugins.DownloadUrl"],
|
|
79
74
|
...this.providerConfig
|
|
80
75
|
};
|
|
81
76
|
html = `
|
|
@@ -95,10 +90,15 @@ class OpenAPIReferenceHandlerPlugin {
|
|
|
95
90
|
|
|
96
91
|
<!-- IMPORTANT: assign to a variable first to prevent ), ( in values breaking the call expression. -->
|
|
97
92
|
<!-- IMPORTANT: escapeJsonForHtml ensures <, > cannot terminate the <\/script> tag prematurely. -->
|
|
93
|
+
<!-- IMPORTANT: resolve presets/plugins global paths at runtime, never unquote them in the JSON, which also holds the spec. -->
|
|
98
94
|
<script>
|
|
99
|
-
const swaggerConfig = ${escapeJsonForHtml(config)
|
|
95
|
+
const swaggerConfig = ${escapeJsonForHtml(config)}
|
|
100
96
|
|
|
101
97
|
window.onload = () => {
|
|
98
|
+
for (const key of ['presets', 'plugins']) {
|
|
99
|
+
swaggerConfig[key] &&= swaggerConfig[key].map(path => path.split('.').reduce((value, name) => value?.[name], window))
|
|
100
|
+
}
|
|
101
|
+
|
|
102
102
|
window.ui = SwaggerUIBundle(swaggerConfig)
|
|
103
103
|
}
|
|
104
104
|
<\/script>
|
|
@@ -4,11 +4,12 @@ import { unlazy } from '@orpc/server';
|
|
|
4
4
|
import { value, pathToHttpPath, mergeHttpPath, isTypescriptObject, stringifyJSON, safeEncodeURIComponent } from '@orpc/shared';
|
|
5
5
|
import { mergeStandardHeaders, parseStandardUrl } from '@standard-server/core';
|
|
6
6
|
import { toStandardHeaders } from '@standard-server/fetch';
|
|
7
|
-
import { O as OpenAPISerializer, D as DEFAULT_OPENAPI_METHOD, a as DEFAULT_OPENAPI_INPUT_STRUCTURE, g as getDynamicPathParams, i as isBodylessMethod, b as DEFAULT_OPENAPI_OUTPUT_STRUCTURE } from './openapi.
|
|
7
|
+
import { O as OpenAPISerializer, D as DEFAULT_OPENAPI_METHOD, a as DEFAULT_OPENAPI_INPUT_STRUCTURE, g as getDynamicPathParams, i as isBodylessMethod, b as DEFAULT_OPENAPI_OUTPUT_STRUCTURE } from './openapi.Bu_PfTtX.mjs';
|
|
8
8
|
import { g as getOpenAPIMeta } from './openapi.B9PQzqBn.mjs';
|
|
9
|
-
import { s as serializeHeaders } from './openapi.
|
|
9
|
+
import { s as serializeHeaders } from './openapi.Bi1qxGF9.mjs';
|
|
10
10
|
|
|
11
11
|
const END_SLASH_REGEX = /\/$/;
|
|
12
|
+
const DOT_SEGMENT_REGEX = /(?:^|\/)\.{1,2}(?:\/|$)/;
|
|
12
13
|
class OpenAPILinkCodec {
|
|
13
14
|
constructor(router, options = {}) {
|
|
14
15
|
this.router = router;
|
|
@@ -145,6 +146,9 @@ class OpenAPILinkCodec {
|
|
|
145
146
|
if (!encoded) {
|
|
146
147
|
throw new TypeError(`Path param "${param.parameterName}" cannot be empty in call to procedure (${path.join(".")}).`);
|
|
147
148
|
}
|
|
149
|
+
if (DOT_SEGMENT_REGEX.test(encoded)) {
|
|
150
|
+
throw new TypeError(`Path param "${param.parameterName}" cannot contain "." or ".." segments in call to procedure (${path.join(".")}).`);
|
|
151
|
+
}
|
|
148
152
|
return encoded;
|
|
149
153
|
}
|
|
150
154
|
serializeQueryString(data, queryStyles) {
|
|
@@ -339,7 +343,7 @@ function encodeDelimitedArray(serializedValues, encodedDelimiter) {
|
|
|
339
343
|
return strings.map(encodeURLSearchParamComponent).join(encodedDelimiter);
|
|
340
344
|
}
|
|
341
345
|
function encodeDelimitedObject(entries, encodedDelimiter) {
|
|
342
|
-
const strings = entries.filter(([v]) => v !== null && v !== void 0).map(([k, v]) => [k, String(v)]);
|
|
346
|
+
const strings = entries.filter(([, v]) => v !== null && v !== void 0).map(([k, v]) => [k, String(v)]);
|
|
343
347
|
if (!strings.length) {
|
|
344
348
|
return void 0;
|
|
345
349
|
}
|
|
@@ -4,7 +4,7 @@ import { StandardHandlerCodec, ResolvedStandardHandlerHandleOptions, StandardHan
|
|
|
4
4
|
import { Value, Public, Promisable } from '@orpc/shared';
|
|
5
5
|
import { StandardLazyRequest, StandardResponse } from '@standard-server/core';
|
|
6
6
|
import { AnyProcedureContract } from '@orpc/contract';
|
|
7
|
-
import { O as OpenAPISerializer } from './openapi.
|
|
7
|
+
import { O as OpenAPISerializer } from './openapi.C2LayTNZ.js';
|
|
8
8
|
|
|
9
9
|
interface OpenAPIMatcherOptions {
|
|
10
10
|
/**
|
|
@@ -4,7 +4,7 @@ import { StandardHandlerCodec, ResolvedStandardHandlerHandleOptions, StandardHan
|
|
|
4
4
|
import { Value, Public, Promisable } from '@orpc/shared';
|
|
5
5
|
import { StandardLazyRequest, StandardResponse } from '@standard-server/core';
|
|
6
6
|
import { AnyProcedureContract } from '@orpc/contract';
|
|
7
|
-
import { O as OpenAPISerializer } from './openapi.
|
|
7
|
+
import { O as OpenAPISerializer } from './openapi.C2LayTNZ.mjs';
|
|
8
8
|
|
|
9
9
|
interface OpenAPIMatcherOptions {
|
|
10
10
|
/**
|
|
@@ -2,7 +2,7 @@ import { COMMON_ERROR_STATUS_MAP } from '@orpc/client';
|
|
|
2
2
|
import { walkProcedureContractsSync, Procedure, unlazy, getRouter, createContractProcedure, DEFAULT_SUCCESS_STATUS, DEFAULT_ERROR_STATUS } from '@orpc/server';
|
|
3
3
|
import { value, pathToHttpPath, mergeHttpPath, normalizeHttpPath, safeDecodeURIComponent, NullProtoObj, isTypescriptObject, isPlainObject, stringifyJSON, getOwn, parseEmptyableJSON } from '@orpc/shared';
|
|
4
4
|
import { parseStandardUrl } from '@standard-server/core';
|
|
5
|
-
import { D as DEFAULT_OPENAPI_METHOD, g as getDynamicPathParams, O as OpenAPISerializer, a as DEFAULT_OPENAPI_INPUT_STRUCTURE, i as isBodylessMethod, b as DEFAULT_OPENAPI_OUTPUT_STRUCTURE } from './openapi.
|
|
5
|
+
import { D as DEFAULT_OPENAPI_METHOD, g as getDynamicPathParams, O as OpenAPISerializer, a as DEFAULT_OPENAPI_INPUT_STRUCTURE, i as isBodylessMethod, b as DEFAULT_OPENAPI_OUTPUT_STRUCTURE } from './openapi.Bu_PfTtX.mjs';
|
|
6
6
|
import { g as getOpenAPIMeta } from './openapi.B9PQzqBn.mjs';
|
|
7
7
|
import { createRouter, addRoute, findRoute, routeToRegExp } from 'rou3';
|
|
8
8
|
|
|
@@ -183,13 +183,11 @@ class OpenAPIHandlerCodecCore {
|
|
|
183
183
|
this.customErrorResponseBodySerializer = options.customErrorResponseBodyEncoder;
|
|
184
184
|
}
|
|
185
185
|
async decodeInput(matched, request) {
|
|
186
|
-
const [_, search] = parseStandardUrl(request.url);
|
|
187
186
|
const meta = getOpenAPIMeta(matched.procedure);
|
|
188
187
|
const inputStructure = meta?.inputStructure ?? DEFAULT_OPENAPI_INPUT_STRUCTURE;
|
|
189
188
|
const params = this.deserializeParams(matched.params, meta?.paramsStyles);
|
|
190
|
-
const query = this.deserializeQuery(search, meta?.queryStyles);
|
|
191
189
|
if (inputStructure === "compact") {
|
|
192
|
-
const data = isBodylessMethod(request.method) ?
|
|
190
|
+
const data = isBodylessMethod(request.method) ? this.deserializeQuery(request.url, meta?.queryStyles) : this.serializer.deserialize(await request.resolveBody(meta?.requestBodyHint));
|
|
193
191
|
if (data === void 0) {
|
|
194
192
|
return params;
|
|
195
193
|
}
|
|
@@ -206,7 +204,7 @@ class OpenAPIHandlerCodecCore {
|
|
|
206
204
|
}
|
|
207
205
|
return {
|
|
208
206
|
params,
|
|
209
|
-
query,
|
|
207
|
+
query: this.deserializeQuery(request.url, meta?.queryStyles),
|
|
210
208
|
headers: request.headers,
|
|
211
209
|
body: this.serializer.deserialize(await request.resolveBody(meta?.requestBodyHint))
|
|
212
210
|
};
|
|
@@ -252,7 +250,8 @@ class OpenAPIHandlerCodecCore {
|
|
|
252
250
|
body: this.serializer.serialize(this.customErrorResponseBodySerializer?.(error) ?? error.toJSON())
|
|
253
251
|
};
|
|
254
252
|
}
|
|
255
|
-
deserializeQuery(
|
|
253
|
+
deserializeQuery(url, styles) {
|
|
254
|
+
const [, search] = parseStandardUrl(url);
|
|
256
255
|
const searchParams = new URLSearchParams(search);
|
|
257
256
|
const parsed = this.serializer.deserialize(searchParams);
|
|
258
257
|
if (!styles || !isPlainObject(parsed)) {
|
|
@@ -298,10 +297,10 @@ class OpenAPIHandlerCodecCore {
|
|
|
298
297
|
}
|
|
299
298
|
const parsed = { ...params };
|
|
300
299
|
Object.entries(styles).forEach(([key, hint]) => {
|
|
301
|
-
|
|
300
|
+
const value = getOwn(params, key);
|
|
301
|
+
if (hint === void 0 || hint === "primitive" || value === void 0) {
|
|
302
302
|
return;
|
|
303
303
|
}
|
|
304
|
-
const value = params[key];
|
|
305
304
|
if (hint === "comma-delimited-array") {
|
|
306
305
|
parsed[key] = decodeDelimitedArray(value, ",");
|
|
307
306
|
} else {
|
|
@@ -48,6 +48,15 @@ const DEFAULT_OPEN_API_JSON_SERIALIZER_HANDLERS = {
|
|
|
48
48
|
},
|
|
49
49
|
isTerminal: true
|
|
50
50
|
},
|
|
51
|
+
infinity: {
|
|
52
|
+
condition(data) {
|
|
53
|
+
return data === Number.POSITIVE_INFINITY || data === Number.NEGATIVE_INFINITY;
|
|
54
|
+
},
|
|
55
|
+
serialize() {
|
|
56
|
+
return null;
|
|
57
|
+
},
|
|
58
|
+
isTerminal: true
|
|
59
|
+
},
|
|
51
60
|
url: {
|
|
52
61
|
condition(data) {
|
|
53
62
|
return data instanceof URL;
|
|
@@ -125,7 +134,7 @@ class OpenAPIJsonSerializer {
|
|
|
125
134
|
case "boolean":
|
|
126
135
|
return data;
|
|
127
136
|
case "number":
|
|
128
|
-
return Number.
|
|
137
|
+
return Number.isFinite(data) ? data : null;
|
|
129
138
|
case "undefined":
|
|
130
139
|
return null;
|
|
131
140
|
case "bigint":
|
|
@@ -84,7 +84,7 @@ interface OpenAPIJsonSerializerOptions {
|
|
|
84
84
|
* handlers: { url: undefined }
|
|
85
85
|
* ```
|
|
86
86
|
*
|
|
87
|
-
* Built-in type keys: `undefined`, `bigint`, `date`, `nan`, `url`, `set`, `map`.
|
|
87
|
+
* Built-in type keys: `undefined`, `bigint`, `date`, `nan`, `infinity`, `url`, `set`, `map`.
|
|
88
88
|
*/
|
|
89
89
|
handlers?: Record<string, undefined | OpenAPIJsonSerializerHandler> | undefined;
|
|
90
90
|
/**
|
|
@@ -84,7 +84,7 @@ interface OpenAPIJsonSerializerOptions {
|
|
|
84
84
|
* handlers: { url: undefined }
|
|
85
85
|
* ```
|
|
86
86
|
*
|
|
87
|
-
* Built-in type keys: `undefined`, `bigint`, `date`, `nan`, `url`, `set`, `map`.
|
|
87
|
+
* Built-in type keys: `undefined`, `bigint`, `date`, `nan`, `infinity`, `url`, `set`, `map`.
|
|
88
88
|
*/
|
|
89
89
|
handlers?: Record<string, undefined | OpenAPIJsonSerializerHandler> | undefined;
|
|
90
90
|
/**
|
|
@@ -14,10 +14,10 @@ type OpenAPIVersion = `3.0.${number}` | `3.1.${number}` | `3.2.${number}`;
|
|
|
14
14
|
* @see {@link https://orpc.dev/docs/openapi/specification#openapi-version | OpenAPI Specification - OpenAPI Version}
|
|
15
15
|
*/
|
|
16
16
|
type OpenAPIDocument<TVersion extends OpenAPIVersion> = TVersion extends `3.0.${string}` ? OpenAPIV3_0.OpenAPIObject : TVersion extends `3.1.${string}` ? OpenAPIV3_1.OpenAPIObject : OpenAPIV3_2.OpenAPIObject;
|
|
17
|
-
type JsonifiedValue<T> = T extends string ? T : T extends
|
|
17
|
+
type JsonifiedValue<T> = T extends string | number | boolean | null | undefined ? T : T extends Date | bigint | URL ? string : T extends ReadonlyArray<unknown> ? JsonifiedArray<T> : T extends Blob | ReadonlyMap<any, any> | ReadonlySet<any> | AsyncIteratorObject<any, any, any> | Function ? T extends File ? File : T extends Blob ? Blob : T extends ReadonlyMap<infer K, infer V> ? JsonifiedArray<[K, V][]> : T extends ReadonlySet<infer U> ? JsonifiedArray<U[]> : T extends AsyncIteratorClass<infer U, infer V> ? AsyncIteratorClass<JsonifiedValue<U>, JsonifiedValue<V>> : T extends AsyncGenerator<infer U, infer V> ? AsyncGenerator<JsonifiedValue<U>, JsonifiedValue<V>> : T extends AsyncIteratorObject<infer U, infer V> ? AsyncIteratorObject<JsonifiedValue<U>, JsonifiedValue<V>> : unknown : T extends object ? {
|
|
18
18
|
[K in keyof T]: JsonifiedValue<T[K]>;
|
|
19
|
-
} :
|
|
20
|
-
type JsonifiedArray<T extends
|
|
19
|
+
} : unknown;
|
|
20
|
+
type JsonifiedArray<T extends ReadonlyArray<unknown>> = T extends readonly [] ? [] : T extends readonly [infer U, ...infer V] ? [U extends undefined ? null : JsonifiedValue<U>, ...JsonifiedArray<V>] : T extends ReadonlyArray<infer U> ? Array<JsonifiedValue<U>> : unknown;
|
|
21
21
|
type JsonifiedClientError<T> = T extends ORPCError<infer UCode, infer UData> ? ORPCError<UCode, JsonifiedValue<UData>> : T;
|
|
22
22
|
/**
|
|
23
23
|
* Client type whose outputs and error data replace types JSON cannot represent with their JSON equivalents.
|
|
@@ -14,10 +14,10 @@ type OpenAPIVersion = `3.0.${number}` | `3.1.${number}` | `3.2.${number}`;
|
|
|
14
14
|
* @see {@link https://orpc.dev/docs/openapi/specification#openapi-version | OpenAPI Specification - OpenAPI Version}
|
|
15
15
|
*/
|
|
16
16
|
type OpenAPIDocument<TVersion extends OpenAPIVersion> = TVersion extends `3.0.${string}` ? OpenAPIV3_0.OpenAPIObject : TVersion extends `3.1.${string}` ? OpenAPIV3_1.OpenAPIObject : OpenAPIV3_2.OpenAPIObject;
|
|
17
|
-
type JsonifiedValue<T> = T extends string ? T : T extends
|
|
17
|
+
type JsonifiedValue<T> = T extends string | number | boolean | null | undefined ? T : T extends Date | bigint | URL ? string : T extends ReadonlyArray<unknown> ? JsonifiedArray<T> : T extends Blob | ReadonlyMap<any, any> | ReadonlySet<any> | AsyncIteratorObject<any, any, any> | Function ? T extends File ? File : T extends Blob ? Blob : T extends ReadonlyMap<infer K, infer V> ? JsonifiedArray<[K, V][]> : T extends ReadonlySet<infer U> ? JsonifiedArray<U[]> : T extends AsyncIteratorClass<infer U, infer V> ? AsyncIteratorClass<JsonifiedValue<U>, JsonifiedValue<V>> : T extends AsyncGenerator<infer U, infer V> ? AsyncGenerator<JsonifiedValue<U>, JsonifiedValue<V>> : T extends AsyncIteratorObject<infer U, infer V> ? AsyncIteratorObject<JsonifiedValue<U>, JsonifiedValue<V>> : unknown : T extends object ? {
|
|
18
18
|
[K in keyof T]: JsonifiedValue<T[K]>;
|
|
19
|
-
} :
|
|
20
|
-
type JsonifiedArray<T extends
|
|
19
|
+
} : unknown;
|
|
20
|
+
type JsonifiedArray<T extends ReadonlyArray<unknown>> = T extends readonly [] ? [] : T extends readonly [infer U, ...infer V] ? [U extends undefined ? null : JsonifiedValue<U>, ...JsonifiedArray<V>] : T extends ReadonlyArray<infer U> ? Array<JsonifiedValue<U>> : unknown;
|
|
21
21
|
type JsonifiedClientError<T> = T extends ORPCError<infer UCode, infer UData> ? ORPCError<UCode, JsonifiedValue<UData>> : T;
|
|
22
22
|
/**
|
|
23
23
|
* Client type whose outputs and error data replace types JSON cannot represent with their JSON equivalents.
|
|
@@ -3,7 +3,7 @@ import { StandardLinkCodec, StandardLinkCodecDecodedResponse } from '@orpc/clien
|
|
|
3
3
|
import { RouterContract } from '@orpc/contract';
|
|
4
4
|
import { Value, Promisable, Public } from '@orpc/shared';
|
|
5
5
|
import { StandardUrl, StandardHeaders, StandardLazyResponse, StandardRequest } from '@standard-server/core';
|
|
6
|
-
import { O as OpenAPISerializer } from './openapi.
|
|
6
|
+
import { O as OpenAPISerializer } from './openapi.C2LayTNZ.mjs';
|
|
7
7
|
|
|
8
8
|
interface OpenAPILinkCodecOptions<T extends ClientContext> {
|
|
9
9
|
/**
|
|
@@ -3,7 +3,7 @@ import { StandardLinkCodec, StandardLinkCodecDecodedResponse } from '@orpc/clien
|
|
|
3
3
|
import { RouterContract } from '@orpc/contract';
|
|
4
4
|
import { Value, Promisable, Public } from '@orpc/shared';
|
|
5
5
|
import { StandardUrl, StandardHeaders, StandardLazyResponse, StandardRequest } from '@standard-server/core';
|
|
6
|
-
import { O as OpenAPISerializer } from './openapi.
|
|
6
|
+
import { O as OpenAPISerializer } from './openapi.C2LayTNZ.js';
|
|
7
7
|
|
|
8
8
|
interface OpenAPILinkCodecOptions<T extends ClientContext> {
|
|
9
9
|
/**
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orpc/openapi",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "2.0.0-beta.
|
|
4
|
+
"version": "2.0.0-beta.41",
|
|
5
5
|
"description": "Generate OpenAPI specs from oRPC routers and serve OpenAPI-compliant APIs with end-to-end type safety",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"funding": [
|
|
@@ -99,18 +99,18 @@
|
|
|
99
99
|
"dependencies": {
|
|
100
100
|
"@openapi-spec/downgrader": "~0.1.0",
|
|
101
101
|
"@openapi-spec/types": "~0.1.0",
|
|
102
|
-
"@orpc/client": "2.0.0-beta.
|
|
103
|
-
"@orpc/contract": "2.0.0-beta.
|
|
104
|
-
"@orpc/json-schema": "2.0.0-beta.
|
|
105
|
-
"@orpc/server": "2.0.0-beta.
|
|
106
|
-
"@orpc/shared": "2.0.0-beta.
|
|
107
|
-
"@standard-server/core": "~0.
|
|
108
|
-
"@standard-server/fetch": "~0.
|
|
102
|
+
"@orpc/client": "2.0.0-beta.41",
|
|
103
|
+
"@orpc/contract": "2.0.0-beta.41",
|
|
104
|
+
"@orpc/json-schema": "2.0.0-beta.41",
|
|
105
|
+
"@orpc/server": "2.0.0-beta.41",
|
|
106
|
+
"@orpc/shared": "2.0.0-beta.41",
|
|
107
|
+
"@standard-server/core": "~0.10.0",
|
|
108
|
+
"@standard-server/fetch": "~0.10.0",
|
|
109
109
|
"rou3": "^0.9.1"
|
|
110
110
|
},
|
|
111
111
|
"devDependencies": {
|
|
112
112
|
"@scalar/api-reference": "^1.65.1",
|
|
113
|
-
"@standard-server/aws-lambda": "~0.
|
|
113
|
+
"@standard-server/aws-lambda": "~0.10.0",
|
|
114
114
|
"@types/swagger-ui": "^5.32.0",
|
|
115
115
|
"fastify": "^5.12.1",
|
|
116
116
|
"swagger-ui": "^5.32.14",
|