@orpc/openapi 1.14.11 → 1.14.12

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 (48) hide show
  1. package/README.md +71 -52
  2. package/dist/adapters/aws-lambda/index.d.mts +20 -0
  3. package/dist/adapters/aws-lambda/index.d.ts +20 -0
  4. package/dist/adapters/aws-lambda/index.mjs +18 -0
  5. package/dist/adapters/fastify/index.d.mts +23 -0
  6. package/dist/adapters/fastify/index.d.ts +23 -0
  7. package/dist/adapters/fastify/index.mjs +18 -0
  8. package/dist/adapters/fetch/index.d.mts +16 -20
  9. package/dist/adapters/fetch/index.d.ts +16 -20
  10. package/dist/adapters/fetch/index.mjs +8 -24
  11. package/dist/adapters/node/index.d.mts +13 -8
  12. package/dist/adapters/node/index.d.ts +13 -8
  13. package/dist/adapters/node/index.mjs +7 -10
  14. package/dist/adapters/standard/index.d.mts +16 -46
  15. package/dist/adapters/standard/index.d.ts +16 -46
  16. package/dist/adapters/standard/index.mjs +6 -9
  17. package/dist/index.d.mts +105 -117
  18. package/dist/index.d.ts +105 -117
  19. package/dist/index.mjs +32 -850
  20. package/dist/plugins/index.d.mts +51 -55
  21. package/dist/plugins/index.d.ts +51 -55
  22. package/dist/plugins/index.mjs +142 -147
  23. package/dist/shared/openapi.BGy4N6eR.d.mts +120 -0
  24. package/dist/shared/openapi.BGy4N6eR.d.ts +120 -0
  25. package/dist/shared/openapi.BwdtJjDu.mjs +878 -0
  26. package/dist/shared/openapi.CdeSk3f7.d.mts +54 -0
  27. package/dist/shared/openapi.CdeSk3f7.d.ts +54 -0
  28. package/dist/shared/openapi.DPiCV5hl.mjs +208 -0
  29. package/package.json +24 -46
  30. package/dist/extensions/route.d.mts +0 -43
  31. package/dist/extensions/route.d.ts +0 -43
  32. package/dist/extensions/route.mjs +0 -14
  33. package/dist/helpers/index.d.mts +0 -51
  34. package/dist/helpers/index.d.ts +0 -51
  35. package/dist/helpers/index.mjs +0 -39
  36. package/dist/shared/openapi.B6hEbRyF.d.ts +0 -83
  37. package/dist/shared/openapi.B9PQzqBn.mjs +0 -49
  38. package/dist/shared/openapi.BOOA-bde.d.mts +0 -142
  39. package/dist/shared/openapi.BOOA-bde.d.ts +0 -142
  40. package/dist/shared/openapi.BafbB3uM.d.mts +0 -83
  41. package/dist/shared/openapi.Bt87OzTt.mjs +0 -131
  42. package/dist/shared/openapi.ByT4oUeY.d.mts +0 -18
  43. package/dist/shared/openapi.ByT4oUeY.d.ts +0 -18
  44. package/dist/shared/openapi.C-p_Q2lb.mjs +0 -359
  45. package/dist/shared/openapi.CVgUshDP.mjs +0 -318
  46. package/dist/shared/openapi.DNNo0V-l.d.ts +0 -313
  47. package/dist/shared/openapi.hg_rhZ4x.d.mts +0 -313
  48. package/dist/shared/openapi.zZH_UksW.mjs +0 -278
@@ -1,278 +0,0 @@
1
- import { wrapAsyncIteratorPreservingEventMeta, toORPCError, isORPCErrorJson, createORPCErrorFromJson } from '@orpc/client';
2
- import { isPlainObject, isAsyncIteratorObject } from '@orpc/shared';
3
- import { ErrorEvent } from '@standardserver/core';
4
- import { B as BracketNotationSerializer } from './openapi.Bt87OzTt.mjs';
5
-
6
- const DEFAULT_OPENAPI_METHOD = "POST";
7
- const DEFAULT_OPENAPI_SUCCESS_DESCRIPTION = "OK";
8
- const DEFAULT_OPENAPI_INPUT_STRUCTURE = "compact";
9
- const DEFAULT_OPENAPI_OUTPUT_STRUCTURE = "compact";
10
-
11
- const DEFAULT_OPEN_API_JSON_SERIALIZER_HANDLERS = {
12
- undefined: {
13
- condition(data) {
14
- return data === void 0;
15
- },
16
- serialize() {
17
- return null;
18
- },
19
- isTerminal: true
20
- },
21
- bigint: {
22
- condition(data) {
23
- return typeof data === "bigint";
24
- },
25
- serialize(data) {
26
- return data.toString();
27
- },
28
- isTerminal: true
29
- },
30
- date: {
31
- condition(data) {
32
- return data instanceof Date;
33
- },
34
- serialize(data) {
35
- if (Number.isNaN(data.getTime())) {
36
- return null;
37
- }
38
- return data.toISOString();
39
- },
40
- isTerminal: true
41
- },
42
- nan: {
43
- condition(data) {
44
- return typeof data === "number" && Number.isNaN(data);
45
- },
46
- serialize() {
47
- return null;
48
- },
49
- isTerminal: true
50
- },
51
- url: {
52
- condition(data) {
53
- return data instanceof URL;
54
- },
55
- serialize(data) {
56
- return data.toString();
57
- },
58
- isTerminal: true
59
- },
60
- regexp: {
61
- condition(data) {
62
- return data instanceof RegExp;
63
- },
64
- serialize(data) {
65
- return data.toString();
66
- },
67
- isTerminal: true
68
- },
69
- set: {
70
- condition(data) {
71
- return data instanceof Set;
72
- },
73
- serialize(data) {
74
- return Array.from(data);
75
- }
76
- },
77
- map: {
78
- condition(data) {
79
- return data instanceof Map;
80
- },
81
- serialize(data) {
82
- return Array.from(data.entries());
83
- }
84
- }
85
- };
86
- class OpenAPIJsonSerializer {
87
- handlers;
88
- omitUndefinedProperties;
89
- constructor(options = {}) {
90
- this.handlers = {
91
- ...DEFAULT_OPEN_API_JSON_SERIALIZER_HANDLERS,
92
- ...options.handlers
93
- };
94
- this.omitUndefinedProperties = options.omitUndefinedProperties !== false;
95
- }
96
- serialize(data) {
97
- const [json, maps, blobs] = this.serializeValue(data, [], [], []);
98
- return { json, maps, blobs };
99
- }
100
- serializeValue(data, segments, maps, blobs) {
101
- for (const key in this.handlers) {
102
- const handler = this.handlers[key];
103
- if (handler && handler.condition(data)) {
104
- const serialized = handler.serialize(data);
105
- if (handler.isTerminal) {
106
- return [serialized, maps, blobs];
107
- }
108
- const result = this.serializeValue(serialized, segments, maps, blobs);
109
- return result;
110
- }
111
- }
112
- if (data instanceof Blob) {
113
- maps.push(segments);
114
- blobs.push(data);
115
- return [data, maps, blobs];
116
- }
117
- if (Array.isArray(data)) {
118
- const json = data.map((v, i) => {
119
- return this.serializeValue(v, [...segments, i], maps, blobs)[0];
120
- });
121
- return [json, maps, blobs];
122
- }
123
- if (isPlainObject(data)) {
124
- const json = {};
125
- for (const k in data) {
126
- const v = data[k];
127
- if (k === "toJSON" && typeof v === "function") {
128
- continue;
129
- }
130
- if (v === void 0 && this.omitUndefinedProperties) {
131
- continue;
132
- }
133
- json[k] = this.serializeValue(v, [...segments, k], maps, blobs)[0];
134
- }
135
- return [json, maps, blobs];
136
- }
137
- return [data, maps, blobs];
138
- }
139
- deserialize(serialized) {
140
- const ref = { data: serialized.json };
141
- if (serialized.blobs?.length) {
142
- serialized.maps.forEach((segments, i) => {
143
- let currentRef = ref;
144
- let preSegment = "data";
145
- segments.forEach((segment) => {
146
- currentRef = currentRef[preSegment];
147
- preSegment = segment;
148
- if (!Object.hasOwn(currentRef, preSegment)) {
149
- throw new Error(`Security error: Invalid serialized data. Segment "${preSegment}" does not exist.`);
150
- }
151
- });
152
- currentRef[preSegment] = serialized.blobs[i];
153
- });
154
- }
155
- return ref.data;
156
- }
157
- }
158
-
159
- class OpenAPISerializer {
160
- jsonSerializer;
161
- bracketNotation;
162
- defaultSerializeOptions;
163
- constructor({ bracketNotation, serialize, ...options } = {}) {
164
- this.jsonSerializer = new OpenAPIJsonSerializer(options);
165
- this.bracketNotation = new BracketNotationSerializer(bracketNotation);
166
- this.defaultSerializeOptions = serialize;
167
- }
168
- serialize(data, options = {}) {
169
- const useFormDataForBlobFields = options.useFormDataForBlobFields ?? this.defaultSerializeOptions?.useFormDataForBlobFields ?? true;
170
- const asFormData = options.asFormData ?? this.defaultSerializeOptions?.asFormData ?? false;
171
- if (!options.asFormData) {
172
- if (data === void 0 || data instanceof ReadableStream || data instanceof Blob) {
173
- return data;
174
- }
175
- if (isAsyncIteratorObject(data)) {
176
- return wrapAsyncIteratorPreservingEventMeta(data, {
177
- mapResult: (result) => {
178
- if (result.value === void 0) {
179
- return result;
180
- }
181
- return { done: result.done, value: this.serializeValue(result.value, { asFormData: false, useFormDataForBlobFields: false }) };
182
- },
183
- mapError: (e) => {
184
- return new ErrorEvent({
185
- data: this.serializeValue(toORPCError(e).toJSON(), { asFormData: false, useFormDataForBlobFields: false }),
186
- cause: e
187
- });
188
- }
189
- });
190
- }
191
- }
192
- return this.serializeValue(data, { useFormDataForBlobFields, asFormData });
193
- }
194
- serializeValue(value, options) {
195
- const { json, blobs } = this.jsonSerializer.serialize(value);
196
- if (!options.asFormData && (json instanceof Blob || json === void 0 || !blobs?.length || !options.useFormDataForBlobFields)) {
197
- return json;
198
- }
199
- const form = new FormData();
200
- for (const [path, value2] of this.bracketNotation.serialize(json)) {
201
- if (value2 instanceof Blob) {
202
- form.append(path, value2);
203
- } else if (value2 !== void 0 && value2 !== null) {
204
- form.append(path, String(value2));
205
- }
206
- }
207
- return form;
208
- }
209
- deserialize(data) {
210
- if (data === void 0 || data instanceof ReadableStream || data instanceof Blob) {
211
- return data;
212
- }
213
- if (isAsyncIteratorObject(data)) {
214
- return wrapAsyncIteratorPreservingEventMeta(data, {
215
- mapResult: (result) => {
216
- if (result.value === void 0) {
217
- return result;
218
- }
219
- return { done: result.done, value: this.jsonSerializer.deserialize({ json: result.value }) };
220
- },
221
- mapError: (e) => {
222
- if (e instanceof ErrorEvent) {
223
- const deserialized = this.jsonSerializer.deserialize({ json: e.data });
224
- if (isORPCErrorJson(deserialized)) {
225
- return createORPCErrorFromJson(deserialized, { cause: e });
226
- }
227
- }
228
- return e;
229
- }
230
- });
231
- }
232
- if (data instanceof URLSearchParams || data instanceof FormData) {
233
- data = this.bracketNotation.deserialize(Array.from(data.entries()));
234
- }
235
- return this.jsonSerializer.deserialize({ json: data });
236
- }
237
- }
238
-
239
- function isBodylessMethod(method) {
240
- return method === "GET" || method === "HEAD";
241
- }
242
- const PARAMETER_NAME_REGEX = /^[\w-]+$/;
243
- function getDynamicPathParams(path) {
244
- if (!path.includes("{")) {
245
- return void 0;
246
- }
247
- const len = path.length;
248
- let params;
249
- let index = 1;
250
- while (index < len) {
251
- const segmentStart = index;
252
- const slashPos = path.indexOf("/", index);
253
- const segmentEnd = slashPos === -1 ? len : slashPos;
254
- if (segmentEnd > segmentStart && path.charCodeAt(segmentStart) === 123 && path.charCodeAt(segmentEnd - 1) === 125) {
255
- let parameterStart = segmentStart + 1;
256
- let allowsSlash = false;
257
- const operator = path.charCodeAt(parameterStart);
258
- if (operator === 43) {
259
- allowsSlash = true;
260
- parameterStart++;
261
- }
262
- const parameterName = path.slice(parameterStart, segmentEnd - 1);
263
- if (PARAMETER_NAME_REGEX.test(parameterName)) {
264
- params ??= [];
265
- params.push({
266
- segment: path.slice(segmentStart, segmentEnd),
267
- startIndex: segmentStart,
268
- parameterName,
269
- allowsSlash
270
- });
271
- }
272
- }
273
- index = segmentEnd + 1;
274
- }
275
- return params;
276
- }
277
-
278
- export { DEFAULT_OPENAPI_METHOD as D, OpenAPISerializer as O, DEFAULT_OPENAPI_INPUT_STRUCTURE as a, DEFAULT_OPENAPI_OUTPUT_STRUCTURE as b, DEFAULT_OPENAPI_SUCCESS_DESCRIPTION as c, OpenAPIJsonSerializer as d, getDynamicPathParams as g, isBodylessMethod as i };