@kollors/react-codegen 2.0.0-alpha.3 → 2.0.0-alpha.5

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.
@@ -16,6 +16,8 @@ export interface OpenapiFetcherOptions<TBody, THeaders, TQueryParams, TPathParam
16
16
  contentType?: string;
17
17
  accept?: string;
18
18
  responseType?: 'blob';
19
+ /** Reject empty successful responses when the operation declares a response body. */
20
+ requireResponseBody?: boolean;
19
21
  /** Response status -> media type -> decoder. Exact statuses/media types take precedence over ranges and wildcards. */
20
22
  responseTypes?: Record<string, Record<string, 'blob' | 'auto'>>;
21
23
  parameters?: OpenapiParameter[];
@@ -42,4 +44,6 @@ export declare class OpenapiHttpError<TError = unknown> extends Error {
42
44
  readonly data: TError;
43
45
  constructor(status: number, statusText: string, url: string, data: TError);
44
46
  }
47
+ export declare function normalizeContentType(contentType: string): string;
48
+ export declare function isJsonContentType(contentType: string): boolean;
45
49
  export declare function createOpenapiFetcher(configuration?: OpenapiFetcherConfiguration): <TData, TError = unknown, TBody = unknown, THeaders = unknown, TQueryParams = unknown, TPathParams = unknown>(options: OpenapiFetcherOptions<TBody, THeaders, TQueryParams, TPathParams>) => Promise<TData>;
@@ -55,23 +55,25 @@ export class OpenapiHttpError extends Error {
55
55
  this.name = 'OpenapiHttpError';
56
56
  }
57
57
  }
58
- function parameterScalar(value) {
58
+ function parameterScalar(value, location = 'parameter') {
59
59
  if (value === null)
60
60
  return '';
61
61
  if (typeof value === 'object' || value === undefined)
62
- throw new TypeError('OpenAPI parameters must contain scalar values.');
62
+ throw new TypeError(`OpenAPI ${location} must contain scalar values; received ${value === undefined ? 'undefined' : Array.isArray(value) ? 'an array' : 'an object'}.`);
63
63
  return String(value);
64
64
  }
65
- function parameterParts(value, explode, encode) {
65
+ function parameterParts(value, explode, encode, location) {
66
66
  if (Array.isArray(value))
67
- return value.map((item) => encode(parameterScalar(item)));
67
+ return value.map((item, index) => encode(parameterScalar(item, `${location}[${index}]`)));
68
68
  if (value !== null && typeof value === 'object') {
69
69
  return Object.entries(value).flatMap(([key, item]) => {
70
- const pair = [encode(key), encode(parameterScalar(item))];
70
+ if (item === undefined)
71
+ return [];
72
+ const pair = [encode(key), encode(parameterScalar(item, `${location}.${key}`))];
71
73
  return explode ? [pair.join('=')] : pair;
72
74
  });
73
75
  }
74
- return [encode(parameterScalar(value))];
76
+ return [encode(parameterScalar(value, location))];
75
77
  }
76
78
  function serializeQueryParams(queryParams, parameters = []) {
77
79
  const result = [];
@@ -94,32 +96,44 @@ function serializeQueryParams(queryParams, parameters = []) {
94
96
  if (style === 'deepObject') {
95
97
  if (value === null || typeof value !== 'object' || Array.isArray(value))
96
98
  throw new TypeError(`deepObject requires an object: ${key}`);
97
- for (const [name, item] of Object.entries(value))
98
- append(`${key}[${name}]`, encodeURIComponent(parameterScalar(item)));
99
+ for (const [name, item] of Object.entries(value)) {
100
+ if (item !== undefined)
101
+ append(`${key}[${name}]`, encodeURIComponent(parameterScalar(item, `query parameter "${key}.${name}"`)));
102
+ }
99
103
  }
100
104
  else if (style === 'form' && explode && value !== null && typeof value === 'object' && !Array.isArray(value)) {
101
- for (const [name, item] of Object.entries(value))
102
- append(name, encodeURIComponent(parameterScalar(item)));
105
+ for (const [name, item] of Object.entries(value)) {
106
+ if (item !== undefined)
107
+ append(name, encodeURIComponent(parameterScalar(item, `query parameter "${key}.${name}"`)));
108
+ }
103
109
  }
104
110
  else if (explode && Array.isArray(value)) {
105
- for (const item of value)
106
- append(key, encodeURIComponent(parameterScalar(item)));
111
+ for (const [index, item] of value.entries())
112
+ append(key, encodeURIComponent(parameterScalar(item, `query parameter "${key}[${index}]"`)));
107
113
  }
108
114
  else {
109
115
  const separator = style === 'spaceDelimited' ? '%20' : style === 'pipeDelimited' ? '|' : ',';
110
- append(key, parameterParts(value, false, encodeURIComponent).join(separator));
116
+ append(key, parameterParts(value, false, encodeURIComponent, `query parameter "${key}"`).join(separator));
111
117
  }
112
118
  }
113
119
  return result.join('&');
114
120
  }
121
+ export function normalizeContentType(contentType) {
122
+ return contentType.split(';')[0]?.trim().toLowerCase() ?? '';
123
+ }
124
+ export function isJsonContentType(contentType) {
125
+ const mime = normalizeContentType(contentType);
126
+ return mime === 'application/json' || /^application\/[^/;\s]+\+json$/.test(mime);
127
+ }
115
128
  function requestBody(body, contentType) {
116
129
  if (body === undefined)
117
130
  return undefined;
118
131
  if (body instanceof FormData || body instanceof Blob || body instanceof URLSearchParams)
119
132
  return body;
120
- if (contentType.includes('json'))
133
+ if (isJsonContentType(contentType))
121
134
  return JSON.stringify(body);
122
- if (contentType === 'multipart/form-data' || contentType === 'application/x-www-form-urlencoded') {
135
+ const mime = normalizeContentType(contentType);
136
+ if (mime === 'multipart/form-data' || mime === 'application/x-www-form-urlencoded') {
123
137
  if (body === null || typeof body !== 'object' || Array.isArray(body))
124
138
  throw new TypeError(`${contentType} requires an object body.`);
125
139
  const form = new FormData();
@@ -131,13 +145,13 @@ function requestBody(body, contentType) {
131
145
  form.append(key, item);
132
146
  else if (item !== null && typeof item === 'object') {
133
147
  const json = JSON.stringify(item);
134
- form.append(key, contentType === 'multipart/form-data' ? new Blob([json], { type: 'application/json' }) : json);
148
+ form.append(key, mime === 'multipart/form-data' ? new Blob([json], { type: 'application/json' }) : json);
135
149
  }
136
150
  else
137
- form.append(key, parameterScalar(item));
151
+ form.append(key, parameterScalar(item, `form field "${key}"`));
138
152
  }
139
153
  }
140
- if (contentType === 'multipart/form-data')
154
+ if (mime === 'multipart/form-data')
141
155
  return form;
142
156
  const params = new URLSearchParams();
143
157
  form.forEach((value, key) => {
@@ -160,7 +174,7 @@ function requestHeaders(value, parameters) {
160
174
  if (item === undefined)
161
175
  continue;
162
176
  const parameter = parameters.find((entry) => entry.in === 'header' && entry.name.toLowerCase() === key.toLowerCase());
163
- headers.set(key, parameterParts(item, parameter?.explode ?? false, (part) => part).join(','));
177
+ headers.set(key, parameterParts(item, parameter?.explode ?? false, (part) => part, `header parameter "${key}"`).join(','));
164
178
  }
165
179
  }
166
180
  return headers;
@@ -179,13 +193,14 @@ async function readResponse(response, responseType) {
179
193
  return undefined;
180
194
  if (responseType === 'blob')
181
195
  return await response.blob();
196
+ const contentType = normalizeContentType(response.headers.get('content-type') ?? '');
197
+ const json = isJsonContentType(contentType);
198
+ if (contentType.startsWith('text/') || (!json && contentType.includes('xml')))
199
+ return await response.text();
182
200
  if (response.body === null || response.headers.get('content-length') === '0')
183
201
  return undefined;
184
- const contentType = response.headers.get('content-type')?.toLowerCase() ?? '';
185
- if (contentType.includes('json'))
202
+ if (json)
186
203
  return await response.json();
187
- if (contentType.startsWith('text/') || contentType.includes('xml'))
188
- return await response.text();
189
204
  return await response.blob();
190
205
  }
191
206
  export function createOpenapiFetcher(configuration = {}) {
@@ -195,7 +210,7 @@ export function createOpenapiFetcher(configuration = {}) {
195
210
  const headers = new Headers();
196
211
  const contentType = options.contentType ?? 'application/json';
197
212
  if (options.body !== undefined) {
198
- if (contentType === '*/*') {
213
+ if (normalizeContentType(contentType) === '*/*') {
199
214
  if (!(options.body instanceof Blob))
200
215
  throw new TypeError('Wildcard request content requires a Blob body.');
201
216
  headers.set('content-type', options.body.type || 'application/octet-stream');
@@ -230,8 +245,12 @@ export function createOpenapiFetcher(configuration = {}) {
230
245
  if (value === undefined || value === null)
231
246
  throw new Error(`Missing required OpenAPI path parameter "${key}" for ${options.url}.`);
232
247
  const parameter = parameters.find((item) => item.in === 'path' && item.name === key);
233
- return parameterParts(value, parameter?.explode ?? false, encodeURIComponent).join(',');
248
+ return parameterParts(value, parameter?.explode ?? false, encodeURIComponent, `path parameter "${key}"`).join(',');
234
249
  });
250
+ const pathSegments = path.split(/[?#]/, 1)[0]?.split('/') ?? [];
251
+ if (pathSegments.some((segment) => /^(?:\.|%2e){1,2}$/i.test(segment))) {
252
+ throw new Error(`OpenAPI path contains a dot segment that Fetch would normalize: ${options.url}.`);
253
+ }
235
254
  const url = withBaseUrl(configuration.baseUrl, path);
236
255
  const queryParams = serializeQueryParams(options.queryParams, parameters);
237
256
  const requestUrl = withQueryParams(url, queryParams);
@@ -257,7 +276,7 @@ export function createOpenapiFetcher(configuration = {}) {
257
276
  const declaredContent = options.responseTypes?.[response.status] ??
258
277
  options.responseTypes?.[`${Math.floor(response.status / 100)}XX`] ??
259
278
  options.responseTypes?.default;
260
- const mime = response.headers.get('content-type')?.split(';')[0]?.trim().toLowerCase() ?? '';
279
+ const mime = normalizeContentType(response.headers.get('content-type') ?? '');
261
280
  const declaredType = declaredContent?.[mime] ?? declaredContent?.[`${mime.split('/')[0]}/*`] ?? declaredContent?.['*/*'];
262
281
  const responseType = options.responseTypes
263
282
  ? declaredType === 'blob'
@@ -270,6 +289,8 @@ export function createOpenapiFetcher(configuration = {}) {
270
289
  result = options.method.toUpperCase() === 'HEAD' ? undefined : await readResponse(response, responseType);
271
290
  }
272
291
  catch (error) {
292
+ if (error instanceof Error && error.name === 'AbortError')
293
+ throw error;
273
294
  if (!response.ok) {
274
295
  result = errorResponse ? await errorResponse.text().catch(() => undefined) : undefined;
275
296
  throw new OpenapiHttpError(response.status, response.statusText, requestUrl, result);
@@ -281,6 +302,9 @@ export function createOpenapiFetcher(configuration = {}) {
281
302
  if (!response.ok) {
282
303
  throw new OpenapiHttpError(response.status, response.statusText, requestUrl, result);
283
304
  }
305
+ if (result === undefined && options.requireResponseBody) {
306
+ throw new Error(`OpenAPI response contract violation: HTTP ${response.status} returned no body for ${options.method.toUpperCase()} ${requestUrl}; the operation expects a response body.`);
307
+ }
284
308
  return result;
285
309
  }
286
310
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"openapi-runtime.js","sourceRoot":"","sources":["../src/openapi-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openapi-runtime.js","sourceRoot":"","sources":["../src/openapi-runtime.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,8 @@ export interface OpenapiFetcherOptions<TBody, THeaders, TQueryParams, TPathParam
18
18
  contentType?: string;
19
19
  accept?: string;
20
20
  responseType?: 'blob';
21
+ /** Reject empty successful responses when the operation declares a response body. */
22
+ requireResponseBody?: boolean;
21
23
  /** Response status -> media type -> decoder. Exact statuses/media types take precedence over ranges and wildcards. */
22
24
  responseTypes?: Record<string, Record<string, 'blob' | 'auto'>>;
23
25
  parameters?: OpenapiParameter[];
@@ -88,21 +90,25 @@ export class OpenapiHttpError<TError = unknown> extends Error {
88
90
  }
89
91
  }
90
92
 
91
- function parameterScalar(value: unknown): string {
93
+ function parameterScalar(value: unknown, location = 'parameter'): string {
92
94
  if (value === null) return '';
93
- if (typeof value === 'object' || value === undefined) throw new TypeError('OpenAPI parameters must contain scalar values.');
95
+ if (typeof value === 'object' || value === undefined)
96
+ throw new TypeError(
97
+ `OpenAPI ${location} must contain scalar values; received ${value === undefined ? 'undefined' : Array.isArray(value) ? 'an array' : 'an object'}.`,
98
+ );
94
99
  return String(value);
95
100
  }
96
101
 
97
- function parameterParts(value: unknown, explode: boolean, encode: (value: string) => string): string[] {
98
- if (Array.isArray(value)) return value.map((item) => encode(parameterScalar(item)));
102
+ function parameterParts(value: unknown, explode: boolean, encode: (value: string) => string, location: string): string[] {
103
+ if (Array.isArray(value)) return value.map((item, index) => encode(parameterScalar(item, `${location}[${index}]`)));
99
104
  if (value !== null && typeof value === 'object') {
100
105
  return Object.entries(value).flatMap(([key, item]) => {
101
- const pair = [encode(key), encode(parameterScalar(item))];
106
+ if (item === undefined) return [];
107
+ const pair = [encode(key), encode(parameterScalar(item, `${location}.${key}`))];
102
108
  return explode ? [pair.join('=')] : pair;
103
109
  });
104
110
  }
105
- return [encode(parameterScalar(value))];
111
+ return [encode(parameterScalar(value, location))];
106
112
  }
107
113
 
108
114
  function serializeQueryParams(queryParams: unknown, parameters: OpenapiParameter[] = []): string {
@@ -123,24 +129,39 @@ function serializeQueryParams(queryParams: unknown, parameters: OpenapiParameter
123
129
  const explode = parameter?.explode ?? true;
124
130
  if (style === 'deepObject') {
125
131
  if (value === null || typeof value !== 'object' || Array.isArray(value)) throw new TypeError(`deepObject requires an object: ${key}`);
126
- for (const [name, item] of Object.entries(value)) append(`${key}[${name}]`, encodeURIComponent(parameterScalar(item)));
132
+ for (const [name, item] of Object.entries(value)) {
133
+ if (item !== undefined) append(`${key}[${name}]`, encodeURIComponent(parameterScalar(item, `query parameter "${key}.${name}"`)));
134
+ }
127
135
  } else if (style === 'form' && explode && value !== null && typeof value === 'object' && !Array.isArray(value)) {
128
- for (const [name, item] of Object.entries(value)) append(name, encodeURIComponent(parameterScalar(item)));
136
+ for (const [name, item] of Object.entries(value)) {
137
+ if (item !== undefined) append(name, encodeURIComponent(parameterScalar(item, `query parameter "${key}.${name}"`)));
138
+ }
129
139
  } else if (explode && Array.isArray(value)) {
130
- for (const item of value) append(key, encodeURIComponent(parameterScalar(item)));
140
+ for (const [index, item] of value.entries())
141
+ append(key, encodeURIComponent(parameterScalar(item, `query parameter "${key}[${index}]"`)));
131
142
  } else {
132
143
  const separator = style === 'spaceDelimited' ? '%20' : style === 'pipeDelimited' ? '|' : ',';
133
- append(key, parameterParts(value, false, encodeURIComponent).join(separator));
144
+ append(key, parameterParts(value, false, encodeURIComponent, `query parameter "${key}"`).join(separator));
134
145
  }
135
146
  }
136
147
  return result.join('&');
137
148
  }
138
149
 
150
+ export function normalizeContentType(contentType: string): string {
151
+ return contentType.split(';')[0]?.trim().toLowerCase() ?? '';
152
+ }
153
+
154
+ export function isJsonContentType(contentType: string): boolean {
155
+ const mime = normalizeContentType(contentType);
156
+ return mime === 'application/json' || /^application\/[^/;\s]+\+json$/.test(mime);
157
+ }
158
+
139
159
  function requestBody(body: unknown, contentType: string): BodyInit | undefined {
140
160
  if (body === undefined) return undefined;
141
161
  if (body instanceof FormData || body instanceof Blob || body instanceof URLSearchParams) return body;
142
- if (contentType.includes('json')) return JSON.stringify(body);
143
- if (contentType === 'multipart/form-data' || contentType === 'application/x-www-form-urlencoded') {
162
+ if (isJsonContentType(contentType)) return JSON.stringify(body);
163
+ const mime = normalizeContentType(contentType);
164
+ if (mime === 'multipart/form-data' || mime === 'application/x-www-form-urlencoded') {
144
165
  if (body === null || typeof body !== 'object' || Array.isArray(body)) throw new TypeError(`${contentType} requires an object body.`);
145
166
  const form = new FormData();
146
167
  for (const [key, value] of Object.entries(body)) {
@@ -149,11 +170,11 @@ function requestBody(body: unknown, contentType: string): BodyInit | undefined {
149
170
  if (item instanceof Blob) form.append(key, item);
150
171
  else if (item !== null && typeof item === 'object') {
151
172
  const json = JSON.stringify(item);
152
- form.append(key, contentType === 'multipart/form-data' ? new Blob([json], { type: 'application/json' }) : json);
153
- } else form.append(key, parameterScalar(item));
173
+ form.append(key, mime === 'multipart/form-data' ? new Blob([json], { type: 'application/json' }) : json);
174
+ } else form.append(key, parameterScalar(item, `form field "${key}"`));
154
175
  }
155
176
  }
156
- if (contentType === 'multipart/form-data') return form;
177
+ if (mime === 'multipart/form-data') return form;
157
178
  const params = new URLSearchParams();
158
179
  form.forEach((value, key) => {
159
180
  if (typeof value !== 'string') throw new TypeError('URL-encoded bodies cannot contain binary files.');
@@ -172,7 +193,7 @@ function requestHeaders(value: unknown, parameters: OpenapiParameter[]): Headers
172
193
  for (const [key, item] of Object.entries(value)) {
173
194
  if (item === undefined) continue;
174
195
  const parameter = parameters.find((entry) => entry.in === 'header' && entry.name.toLowerCase() === key.toLowerCase());
175
- headers.set(key, parameterParts(item, parameter?.explode ?? false, (part) => part).join(','));
196
+ headers.set(key, parameterParts(item, parameter?.explode ?? false, (part) => part, `header parameter "${key}"`).join(','));
176
197
  }
177
198
  }
178
199
  return headers;
@@ -190,10 +211,11 @@ function withQueryParams(url: string, serialized: string): string {
190
211
  async function readResponse(response: Response, responseType?: 'blob'): Promise<unknown> {
191
212
  if (response.status === 204 || response.status === 205) return undefined;
192
213
  if (responseType === 'blob') return await response.blob();
214
+ const contentType = normalizeContentType(response.headers.get('content-type') ?? '');
215
+ const json = isJsonContentType(contentType);
216
+ if (contentType.startsWith('text/') || (!json && contentType.includes('xml'))) return await response.text();
193
217
  if (response.body === null || response.headers.get('content-length') === '0') return undefined;
194
- const contentType = response.headers.get('content-type')?.toLowerCase() ?? '';
195
- if (contentType.includes('json')) return await response.json();
196
- if (contentType.startsWith('text/') || contentType.includes('xml')) return await response.text();
218
+ if (json) return await response.json();
197
219
  return await response.blob();
198
220
  }
199
221
 
@@ -211,7 +233,7 @@ export function createOpenapiFetcher(configuration: OpenapiFetcherConfiguration
211
233
  const headers = new Headers();
212
234
  const contentType = options.contentType ?? 'application/json';
213
235
  if (options.body !== undefined) {
214
- if (contentType === '*/*') {
236
+ if (normalizeContentType(contentType) === '*/*') {
215
237
  if (!(options.body instanceof Blob)) throw new TypeError('Wildcard request content requires a Blob body.');
216
238
  headers.set('content-type', options.body.type || 'application/octet-stream');
217
239
  } else {
@@ -243,8 +265,12 @@ export function createOpenapiFetcher(configuration: OpenapiFetcherConfiguration
243
265
  const value = pathParams?.[key];
244
266
  if (value === undefined || value === null) throw new Error(`Missing required OpenAPI path parameter "${key}" for ${options.url}.`);
245
267
  const parameter = parameters.find((item) => item.in === 'path' && item.name === key);
246
- return parameterParts(value, parameter?.explode ?? false, encodeURIComponent).join(',');
268
+ return parameterParts(value, parameter?.explode ?? false, encodeURIComponent, `path parameter "${key}"`).join(',');
247
269
  });
270
+ const pathSegments = path.split(/[?#]/, 1)[0]?.split('/') ?? [];
271
+ if (pathSegments.some((segment) => /^(?:\.|%2e){1,2}$/i.test(segment))) {
272
+ throw new Error(`OpenAPI path contains a dot segment that Fetch would normalize: ${options.url}.`);
273
+ }
248
274
  const url = withBaseUrl(configuration.baseUrl, path);
249
275
  const queryParams = serializeQueryParams(options.queryParams, parameters);
250
276
  const requestUrl = withQueryParams(url, queryParams);
@@ -270,7 +296,7 @@ export function createOpenapiFetcher(configuration: OpenapiFetcherConfiguration
270
296
  options.responseTypes?.[response.status] ??
271
297
  options.responseTypes?.[`${Math.floor(response.status / 100)}XX`] ??
272
298
  options.responseTypes?.default;
273
- const mime = response.headers.get('content-type')?.split(';')[0]?.trim().toLowerCase() ?? '';
299
+ const mime = normalizeContentType(response.headers.get('content-type') ?? '');
274
300
  const declaredType = declaredContent?.[mime] ?? declaredContent?.[`${mime.split('/')[0]}/*`] ?? declaredContent?.['*/*'];
275
301
  const responseType = options.responseTypes
276
302
  ? declaredType === 'blob'
@@ -282,6 +308,7 @@ export function createOpenapiFetcher(configuration: OpenapiFetcherConfiguration
282
308
  try {
283
309
  result = options.method.toUpperCase() === 'HEAD' ? undefined : await readResponse(response, responseType);
284
310
  } catch (error) {
311
+ if (error instanceof Error && error.name === 'AbortError') throw error;
285
312
  if (!response.ok) {
286
313
  result = errorResponse ? await errorResponse.text().catch(() => undefined) : undefined;
287
314
  throw new OpenapiHttpError(response.status, response.statusText, requestUrl, result);
@@ -294,6 +321,12 @@ export function createOpenapiFetcher(configuration: OpenapiFetcherConfiguration
294
321
  throw new OpenapiHttpError<TError>(response.status, response.statusText, requestUrl, result as TError);
295
322
  }
296
323
 
324
+ if (result === undefined && options.requireResponseBody) {
325
+ throw new Error(
326
+ `OpenAPI response contract violation: HTTP ${response.status} returned no body for ${options.method.toUpperCase()} ${requestUrl}; the operation expects a response body.`,
327
+ );
328
+ }
329
+
297
330
  return result as TData;
298
331
  } catch (error) {
299
332
  throw error instanceof Error ? error : new Error(String(error));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kollors/react-codegen",
3
- "version": "2.0.0-alpha.3",
3
+ "version": "2.0.0-alpha.5",
4
4
  "description": "Generate TanStack Query clients from OpenAPI and GraphQL schemas",
5
5
  "type": "module",
6
6
  "exports": {
@@ -46,6 +46,7 @@
46
46
  "@graphql-codegen/typescript": "^6.1.0",
47
47
  "@graphql-codegen/typescript-operations": "^6.1.7",
48
48
  "@graphql-codegen/typescript-react-query": "^7.0.5",
49
+ "prettier": "3.9.9",
49
50
  "yaml": "^2.9.1"
50
51
  },
51
52
  "peerDependencies": {