@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.
Files changed (34) hide show
  1. package/README.md +5 -5
  2. package/dist/adapters/aws-lambda/index.d.mts +1 -1
  3. package/dist/adapters/aws-lambda/index.d.ts +1 -1
  4. package/dist/adapters/aws-lambda/index.mjs +2 -2
  5. package/dist/adapters/fastify/index.d.mts +1 -1
  6. package/dist/adapters/fastify/index.d.ts +1 -1
  7. package/dist/adapters/fastify/index.mjs +2 -2
  8. package/dist/adapters/fetch/index.d.mts +1 -1
  9. package/dist/adapters/fetch/index.d.ts +1 -1
  10. package/dist/adapters/fetch/index.mjs +3 -3
  11. package/dist/adapters/node/index.d.mts +1 -1
  12. package/dist/adapters/node/index.d.ts +1 -1
  13. package/dist/adapters/node/index.mjs +2 -2
  14. package/dist/adapters/standard/index.d.mts +2 -2
  15. package/dist/adapters/standard/index.d.ts +2 -2
  16. package/dist/adapters/standard/index.mjs +3 -3
  17. package/dist/index.d.mts +4 -4
  18. package/dist/index.d.ts +4 -4
  19. package/dist/index.mjs +58 -153
  20. package/dist/plugins/index.d.mts +14 -2
  21. package/dist/plugins/index.d.ts +14 -2
  22. package/dist/plugins/index.mjs +8 -8
  23. package/dist/shared/{openapi.BdClbrwk.mjs → openapi.8cM6P94D.mjs} +7 -3
  24. package/dist/shared/{openapi.EM8eC1Xn.d.ts → openapi.BCNfESWr.d.ts} +1 -1
  25. package/dist/shared/{openapi.fnBK1ELE.d.mts → openapi.BgpM--nz.d.mts} +1 -1
  26. package/dist/shared/{openapi.wQKxWEI2.mjs → openapi.Bi1qxGF9.mjs} +7 -8
  27. package/dist/shared/{openapi.B1LWf28E.mjs → openapi.Bu_PfTtX.mjs} +10 -1
  28. package/dist/shared/{openapi.Dl3gew1x.d.mts → openapi.C2LayTNZ.d.mts} +1 -1
  29. package/dist/shared/{openapi.Dl3gew1x.d.ts → openapi.C2LayTNZ.d.ts} +1 -1
  30. package/dist/shared/{openapi.DI21x5Yo.d.mts → openapi.C6FFC29v.d.mts} +3 -3
  31. package/dist/shared/{openapi.DI21x5Yo.d.ts → openapi.C6FFC29v.d.ts} +3 -3
  32. package/dist/shared/{openapi.DE5kXinS.d.mts → openapi.Cg9h6jpm.d.mts} +1 -1
  33. package/dist/shared/{openapi.BwNINoeN.d.ts → openapi.D0yWs-uW.d.ts} +1 -1
  34. 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&amp;utm_source=middleapi&amp;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&amp;utm_source=middleapi&amp;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&amp;utm_source=middleapi&amp;utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="We&#39;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&#39;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&amp;utm_source=middleapi&amp;utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="あわわわとーにゅ"><img src="https://avatars.githubusercontent.com/u/17376330?u=de3353804be889f009f7e0a1582daf04d0ab292d&amp;v=4" width="139" alt="あわわわとーにゅ"/><br />あわわわとーにゅ</a></td>
128
128
  <td align="center"><a href="https://github.com/nicognaW?ref=middleapi&amp;utm_source=middleapi&amp;utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="nk"><img src="https://avatars.githubusercontent.com/u/66731869?u=4699bda3a9092d3ec34fbd959450767bcc8b8b6d&amp;v=4" width="139" alt="nk"/><br />nk</a></td>
129
129
  <td align="center"><a href="https://supastarter.dev/?ref=middleapi&amp;utm_source=middleapi&amp;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&amp;utm_source=middleapi&amp;utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Dexter Miguel"><img src="https://avatars.githubusercontent.com/u/5452298?u=645993204be8696c085ecf0d228c3062efe2ed65&amp;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&amp;utm_source=middleapi&amp;utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="herrfugbaum"><img src="https://avatars.githubusercontent.com/u/12859776?u=644dc1666d0220bc0468eb0de3c56b919f635b16&amp;v=4" width="139" alt="herrfugbaum"/><br />herrfugbaum</a></td>
131
+ <td align="center"><a href="https://laststance.io/?ref=middleapi&amp;utm_source=middleapi&amp;utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Ryota Murakami"><img src="https://avatars.githubusercontent.com/u/5501268?u=599389e03340734325726ca3f8f423c021d47d7f&amp;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&amp;utm_source=middleapi&amp;utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Ryota Murakami"><img src="https://avatars.githubusercontent.com/u/5501268?u=599389e03340734325726ca3f8f423c021d47d7f&amp;v=4" width="139" alt="Ryota Murakami"/><br />Ryota Murakami</a></td>
135
134
  <td align="center"><a href="https://cra.mr/?ref=middleapi&amp;utm_source=middleapi&amp;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&amp;utm_source=middleapi&amp;utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Valerii Petryniak"><img src="https://avatars.githubusercontent.com/u/44531564?u=88ac74d9bacd20401518441907acad21063cd397&amp;v=4" width="139" alt="Valerii Petryniak"/><br />Valerii Petryniak</a></td>
137
136
  <td align="center"><a href="https://letstri.dev/?ref=middleapi&amp;utm_source=middleapi&amp;utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Valerii Strilets"><img src="https://avatars.githubusercontent.com/u/13253748?u=c7b10399ccc8f8081e24db94ec32cd9858e86ac3&amp;v=4" width="139" alt="Valerii Strilets"/><br />Valerii Strilets</a></td>
138
137
  <td align="center"><a href="https://blacklight.sh/?ref=middleapi&amp;utm_source=middleapi&amp;utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Kyle Mistele"><img src="https://avatars.githubusercontent.com/u/18430555?u=3afebeb81de666e35aaac3ed46f14159d7603ffb&amp;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&amp;utm_source=middleapi&amp;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&amp;utm_source=middleapi&amp;utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Ryan Soderberg"><img src="https://avatars.githubusercontent.com/u/39172778?u=5ed913c31d57e7221b75784abcad48c7ebddde27&amp;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&amp;utm_source=middleapi&amp;utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Ryan Soderberg"><img src="https://avatars.githubusercontent.com/u/39172778?u=5ed913c31d57e7221b75784abcad48c7ebddde27&amp;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&amp;utm_source=middleapi&amp;utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="shota"><img src="https://avatars.githubusercontent.com/u/11831107?u=c976a6dc7e055eb026304c46c99100ed22b0c8e0&amp;v=4" width="139" alt="shota"/><br />shota</a></td>
144
143
  <td align="center"><a href="https://github.com/ellis-driscoll?ref=middleapi&amp;utm_source=middleapi&amp;utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Ellis Driscoll"><img src="https://avatars.githubusercontent.com/u/70685966?u=c5f95bc33b5991d9744abe00052542e4a2ed3cb9&amp;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&amp;utm_source=middleapi&amp;utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Hoang Nguyen"><img src="https://avatars.githubusercontent.com/u/38968280?u=c90084c6de65c56facabab7ba13a72a49ddbc3e4&amp;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&amp;utm_source=middleapi&amp;utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Kelly Peilin Chan"><img src="https://avatars.githubusercontent.com/u/520852?u=6b0f7105f694e7b5cacf410a3f04c7044b469dc8&amp;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&amp;utm_source=middleapi&amp;utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Guy Ariely"><img src="https://avatars.githubusercontent.com/u/42813496?u=edb6b7f563bf28e160a290832e7da57c0506f8ca&amp;v=4" width="119" alt="Guy Ariely"/><br />Guy Ariely</a></td>
175
174
  <td align="center"><a href="https://paulsenon.com/?ref=middleapi&amp;utm_source=middleapi&amp;utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="PaulSenon"><img src="https://avatars.githubusercontent.com/u/19531087?u=6385741eb91d200b8c513ec6045482e301767ca6&amp;v=4" width="119" alt="PaulSenon"/><br />PaulSenon</a></td>
175
+ <td align="center"><a href="https://nakasyou.how/?ref=middleapi&amp;utm_source=middleapi&amp;utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Shotaro Nakamura"><img src="https://avatars.githubusercontent.com/u/79000684?u=f644df3f29f0e8677a90967115774564f1d9d6ab&amp;v=4" width="119" alt="Shotaro Nakamura"/><br />Shotaro Nakamura</a></td>
176
176
  <td align="center"><a href="https://piscis.dev/?ref=middleapi&amp;utm_source=middleapi&amp;utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Alex"><img src="https://avatars.githubusercontent.com/u/326163?u=b245f368bd940cf51d08c0b6bf55f8257f359437&amp;v=4" width="119" alt="Alex"/><br />Alex</a></td>
177
177
  <td align="center"><a href="https://opensource.gubanov.eu/?ref=middleapi&amp;utm_source=middleapi&amp;utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Andrey Gubanov"><img src="https://avatars.githubusercontent.com/u/1082083?u=c5f2daf7ebece498e85c83367bb37b4e10e2649d&amp;v=4" width="119" alt="Andrey Gubanov"/><br />Andrey Gubanov</a></td>
178
178
  </tr>
179
179
  </table>
180
180
 
181
- With thanks to [36 past sponsors](https://htmlpreview.github.io/?https://github.com/middleapi/static/blob/main/sponsors.svg) who helped get oRPC here.
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.Dl3gew1x.mjs';
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.Dl3gew1x.js';
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.wQKxWEI2.mjs';
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.B1LWf28E.mjs';
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.Dl3gew1x.mjs';
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.Dl3gew1x.js';
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.wQKxWEI2.mjs';
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.B1LWf28E.mjs';
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.Dl3gew1x.mjs';
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.Dl3gew1x.js';
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.wQKxWEI2.mjs';
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.BdClbrwk.mjs';
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.B1LWf28E.mjs';
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.Dl3gew1x.mjs';
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.Dl3gew1x.js';
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.wQKxWEI2.mjs';
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.B1LWf28E.mjs';
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.fnBK1ELE.mjs';
2
- export { a as OpenAPILinkCodec, O as OpenAPILinkCodecOptions } from '../../shared/openapi.DE5kXinS.mjs';
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.EM8eC1Xn.js';
2
- export { a as OpenAPILinkCodec, O as OpenAPILinkCodecOptions } from '../../shared/openapi.BwNINoeN.js';
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.wQKxWEI2.mjs';
2
- export { O as OpenAPILinkCodec } from '../../shared/openapi.BdClbrwk.mjs';
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.B1LWf28E.mjs';
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.Dl3gew1x.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.Dl3gew1x.mjs';
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.DI21x5Yo.mjs';
7
- export { b as JsonifiedArray, c as JsonifiedClientError, d as JsonifiedValue } from './shared/openapi.DI21x5Yo.mjs';
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.Dl3gew1x.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.Dl3gew1x.js';
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.DI21x5Yo.js';
7
- export { b as JsonifiedArray, c as JsonifiedClientError, d as JsonifiedValue } from './shared/openapi.DI21x5Yo.js';
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.B1LWf28E.mjs';
4
- export { d as OpenAPIJsonSerializer } from './shared/openapi.B1LWf28E.mjs';
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; defName in $defs; i++) {
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: `#/$defs/${encodeJsonPointerSegment(defName)}`
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 === void 0) {
54
- continue;
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
- const defNames = Object.keys(defs);
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 identityRenameMap = Object.fromEntries(
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 defNames) {
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(Object.values(renameMap)),
88
- preferredName,
89
- prelimSchema,
90
- candidateSchemas,
69
+ new Set(renameMap.values()),
70
+ defName,
71
+ this.customComponentName?.(defName, cleanSchema) ?? defName,
72
+ defs,
91
73
  direction
92
74
  );
93
- renameMap[defName] = componentName;
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[componentName] = rewriteComponentSchemaRefs(
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, preferredName, schema, candidateSchemas, direction) {
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[componentName];
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 (areSchemasEquivalentForReuse(
125
- schema,
126
- existingSchema,
127
- schema,
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, candidateRootSchema, existingRootSchema, candidateSchemas, existingSchemas, candidateToExistingComponentNames, existingToCandidateComponentNames, visited = /* @__PURE__ */ new WeakMap()) {
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 parseComponentRefName(ref) {
231
- if (!ref.startsWith("#/components/schemas/")) {
174
+ function parseRefName(ref, prefix) {
175
+ if (!ref.startsWith(prefix)) {
232
176
  return void 0;
233
177
  }
234
- return ref.slice("#/components/schemas/".length).split("/").map(decodeJsonPointerSegment).join("/");
178
+ return ref.slice(prefix.length).split("/").map(decodeJsonPointerSegment).join("/");
235
179
  }
236
- function resolveSchemaComparisonRef(ref, rootSchema, componentsSchemas) {
237
- const localDefName = parseLocalDefRefName(ref);
238
- if (localDefName !== void 0 && typeof rootSchema === "object" && rootSchema !== null) {
239
- const localDef = rootSchema.$defs?.[localDefName];
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
- return void 0;
185
+ const schema = getNamed(name);
186
+ return schema === void 0 ? void 0 : { key: prefix + name, schema };
258
187
  }
259
- function areSchemaRefsEquivalentForReuse(candidateRef, existingRef, candidateRootSchema, existingRootSchema, candidateSchemas, existingSchemas, candidateToExistingComponentNames, existingToCandidateComponentNames, visited) {
260
- const candidateComponentName = parseComponentRefName(candidateRef);
261
- const existingComponentName = parseComponentRefName(existingRef);
262
- if (candidateComponentName === void 0 !== (existingComponentName === void 0)) {
263
- return false;
264
- }
265
- if (candidateComponentName !== void 0 && existingComponentName !== void 0) {
266
- const mappedExisting = candidateToExistingComponentNames.get(candidateComponentName);
267
- if (mappedExisting !== void 0 && mappedExisting !== existingComponentName) {
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
- const mappedCandidate = existingToCandidateComponentNames.get(existingComponentName);
271
- if (mappedCandidate !== void 0 && mappedCandidate !== candidateComponentName) {
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 ref.slice("#/$defs/".length).split("/").map(decodeJsonPointerSegment).join("/");
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 = parseLocalDefRefName(ref);
207
+ const refName = parseRefName(ref, DEFS_REF_PREFIX);
303
208
  if (refName === void 0) {
304
209
  return ref;
305
210
  }
306
- const renamedName = renameMap[refName];
211
+ const renamedName = renameMap.get(refName);
307
212
  if (renamedName === void 0) {
308
213
  return ref;
309
214
  }
310
- return `#/components/schemas/${encodeJsonPointerSegment(renamedName)}`;
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) {
@@ -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
- presets?: undefined | `SwaggerUIBundle.${string}`[];
17
- plugins?: undefined | `SwaggerUIBundle.${string}`[];
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
  /**
@@ -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
- presets?: undefined | `SwaggerUIBundle.${string}`[];
17
- plugins?: undefined | `SwaggerUIBundle.${string}`[];
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
  /**
@@ -69,13 +69,8 @@ class OpenAPIReferenceHandlerPlugin {
69
69
  dom_id: "#app",
70
70
  spec,
71
71
  deepLinking: true,
72
- presets: [
73
- "SwaggerUIBundle.presets.apis",
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).replace(/"(SwaggerUIBundle\.[.a-zA-Z0-9]+)"/g, "$1")}
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.B1LWf28E.mjs';
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.wQKxWEI2.mjs';
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.Dl3gew1x.js';
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.Dl3gew1x.mjs';
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.B1LWf28E.mjs';
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) ? query : this.serializer.deserialize(await request.resolveBody(meta?.requestBodyHint));
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(search, styles) {
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
- if (hint === void 0 || hint === "primitive") {
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.isNaN(data) ? null : data;
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 number ? T : T extends boolean ? T : T extends null ? T : T extends undefined ? T : T extends Array<unknown> ? JsonifiedArray<T> : T extends Record<string, unknown> ? {
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
- } : T extends Date ? string : T extends bigint ? string : T extends File ? File : T extends Blob ? Blob : T extends URL ? string : T extends Map<infer K, infer V> ? JsonifiedArray<[K, V][]> : T extends Set<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;
20
- type JsonifiedArray<T extends Array<unknown>> = T extends readonly [] ? [] : T extends readonly [infer U, ...infer V] ? [U extends undefined ? null : JsonifiedValue<U>, ...JsonifiedArray<V>] : T extends Array<infer U> ? Array<JsonifiedValue<U>> : unknown;
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 number ? T : T extends boolean ? T : T extends null ? T : T extends undefined ? T : T extends Array<unknown> ? JsonifiedArray<T> : T extends Record<string, unknown> ? {
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
- } : T extends Date ? string : T extends bigint ? string : T extends File ? File : T extends Blob ? Blob : T extends URL ? string : T extends Map<infer K, infer V> ? JsonifiedArray<[K, V][]> : T extends Set<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;
20
- type JsonifiedArray<T extends Array<unknown>> = T extends readonly [] ? [] : T extends readonly [infer U, ...infer V] ? [U extends undefined ? null : JsonifiedValue<U>, ...JsonifiedArray<V>] : T extends Array<infer U> ? Array<JsonifiedValue<U>> : unknown;
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.Dl3gew1x.mjs';
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.Dl3gew1x.js';
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.40",
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.40",
103
- "@orpc/contract": "2.0.0-beta.40",
104
- "@orpc/json-schema": "2.0.0-beta.40",
105
- "@orpc/server": "2.0.0-beta.40",
106
- "@orpc/shared": "2.0.0-beta.40",
107
- "@standard-server/core": "~0.9.2",
108
- "@standard-server/fetch": "~0.9.2",
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.9.2",
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",