@codewithagents/openapi-server 1.7.0 → 1.9.0

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.
@@ -0,0 +1,290 @@
1
+ import { toTypeName } from 'openapi-zod-ts';
2
+ export const SUPPORTED_METHODS = ['get', 'post', 'put', 'patch', 'delete'];
3
+ // ── Ref helpers ───────────────────────────────────────────────────────────────
4
+ export function isRef(obj) {
5
+ return typeof obj === 'object' && obj !== null && '$ref' in obj;
6
+ }
7
+ export function refToName(ref) {
8
+ const parts = ref.split('/');
9
+ return toTypeName(parts[parts.length - 1]);
10
+ }
11
+ // ── Path helpers ──────────────────────────────────────────────────────────────
12
+ /**
13
+ * Extract path param names from an OpenAPI path string in template order.
14
+ * Returns raw names as they appear in the path (e.g. 'job-id', not 'jobId').
15
+ * Callers that need valid TypeScript identifiers must sanitize with sanitizeOperationId.
16
+ */
17
+ export function extractPathParamsFromPath(path) {
18
+ const matches = path.match(/\{([^}]+)\}/g);
19
+ if (matches === null)
20
+ return [];
21
+ // Keep raw param names: they are used in c.req.param() which must match
22
+ // the actual Hono route pattern (e.g. :job-id requires c.req.param('job-id'))
23
+ return matches.map((m) => m.slice(1, -1));
24
+ }
25
+ // ── Param resolution ──────────────────────────────────────────────────────────
26
+ export function resolveParam(p, spec) {
27
+ if (!isRef(p))
28
+ return p;
29
+ const refStr = p.$ref;
30
+ const name = refToName(refStr);
31
+ const components = spec.components;
32
+ if (components?.parameters === undefined)
33
+ return undefined;
34
+ const resolved = components.parameters[name];
35
+ if (resolved === undefined || isRef(resolved))
36
+ return undefined;
37
+ return resolved;
38
+ }
39
+ // ── Service name ──────────────────────────────────────────────────────────────
40
+ export function deriveServiceName(spec) {
41
+ const title = spec.info?.title ?? '';
42
+ const pascal = title
43
+ .replace(/[^a-zA-Z0-9 ]/g, '')
44
+ .split(/\s+/)
45
+ .filter((s) => s.length > 0)
46
+ .map((s) => s.charAt(0).toUpperCase() + s.slice(1))
47
+ .join('');
48
+ if (pascal.length === 0)
49
+ return 'ApiService';
50
+ // Guard against numeric-start identifiers (e.g. '1Password Connect' -> '_1PasswordConnect')
51
+ const safePascal = /^[0-9]/.test(pascal) ? `_${pascal}` : pascal;
52
+ if (safePascal.endsWith('Service'))
53
+ return safePascal;
54
+ return `${safePascal}Service`;
55
+ }
56
+ // ── Operation ID sanitization ─────────────────────────────────────────────────
57
+ /**
58
+ * Converts a raw operationId into a valid camelCase JS identifier.
59
+ * Handles kebab-case, snake_case, dots, spaces, parens, braces and other
60
+ * non-alphanumeric separators found in real-world OpenAPI specs.
61
+ * e.g. "post-applePay-sessions" -> "postApplePaySessions"
62
+ * e.g. "calendar.calendars.insert" -> "calendarCalendarsInsert"
63
+ * e.g. "Get User Profile" -> "getUserProfile"
64
+ * e.g. "forgotPassword(oneTimeCode)" -> "forgotPasswordOneTimeCode"
65
+ */
66
+ export function sanitizeOperationId(id) {
67
+ const parts = id
68
+ .replace(/'/g, '') // strip apostrophes without splitting ("user's" -> "users")
69
+ .split(/[^a-zA-Z0-9]+/) // split on any non-alphanumeric sequence
70
+ .filter(Boolean);
71
+ if (parts.length === 0)
72
+ return 'unknown';
73
+ const [first = '', ...rest] = parts;
74
+ const camel = first.charAt(0).toLowerCase() +
75
+ first.slice(1) +
76
+ rest.map((p) => p.charAt(0).toUpperCase() + p.slice(1)).join('');
77
+ // If result starts with a digit, prefix with underscore
78
+ return /^[0-9]/.test(camel) ? `_${camel}` : camel;
79
+ }
80
+ // ── Method name derivation ────────────────────────────────────────────────────
81
+ export function deriveMethodName(operationId, method, path) {
82
+ if (operationId !== undefined && operationId.length > 0) {
83
+ return sanitizeOperationId(operationId);
84
+ }
85
+ return deriveOperationName(method, path);
86
+ }
87
+ export function deriveOperationName(method, path) {
88
+ const prefixMap = {
89
+ get: 'get',
90
+ post: 'create',
91
+ put: 'update',
92
+ patch: 'patch',
93
+ delete: 'delete',
94
+ };
95
+ const prefix = prefixMap[method] ?? method;
96
+ const segments = path.replace(/^\/api\/v\d+\//, '').replace(/^\//, '');
97
+ const parts = segments.split('/').map((seg) => {
98
+ // Handle mixed segments like "{maxLat}.{format}": extract each {param} inside
99
+ const paramMatches = seg.match(/\{([^}]+)\}/g);
100
+ if (paramMatches !== null && !(seg.startsWith('{') && seg.endsWith('}'))) {
101
+ return paramMatches
102
+ .map((m) => {
103
+ const name = sanitizeOperationId(m.slice(1, -1));
104
+ return 'By' + name.charAt(0).toUpperCase() + name.slice(1);
105
+ })
106
+ .join('');
107
+ }
108
+ if (seg.startsWith('{') && seg.endsWith('}')) {
109
+ const name = seg.slice(1, -1);
110
+ const sanitized = sanitizeOperationId(name);
111
+ return 'By' + sanitized.charAt(0).toUpperCase() + sanitized.slice(1);
112
+ }
113
+ return toTypeName(seg);
114
+ });
115
+ return prefix + parts.join('');
116
+ }
117
+ // ── Param name normalization ───────────────────────────────────────────────────
118
+ /** Normalize a raw query param name to a valid TypeScript identifier.
119
+ * Strips trailing [] (array marker), converts separators to camelCase.
120
+ */
121
+ export function normalizeParamName(name) {
122
+ // Split on non-alphanumeric sequences to avoid polynomial ReDoS from [^x]+y patterns.
123
+ const stripped = name.replace(/\[\]$/, '').replace(/'/g, '');
124
+ const parts = stripped.split(/[^a-zA-Z0-9]+/).filter(Boolean);
125
+ if (parts.length === 0)
126
+ return '_';
127
+ const camel = parts
128
+ .map((part, i) => (i === 0 ? part : part[0].toUpperCase() + part.slice(1)))
129
+ .join('');
130
+ return /^[^a-zA-Z_$]/.test(camel) ? `_${camel}` : camel;
131
+ }
132
+ // ── Schema type helpers ───────────────────────────────────────────────────────
133
+ export function schemaToTsType(schema) {
134
+ if (schema === undefined || isRef(schema))
135
+ return 'string';
136
+ const s = schema;
137
+ if (s.type === 'number' || s.type === 'integer')
138
+ return 'number';
139
+ if (s.type === 'boolean')
140
+ return 'boolean';
141
+ return 'string';
142
+ }
143
+ export function getQueryParams(operation, spec) {
144
+ const parameters = operation.parameters;
145
+ if (parameters === undefined)
146
+ return [];
147
+ const result = [];
148
+ for (const p of parameters) {
149
+ const resolved = resolveParam(p, spec);
150
+ if (resolved === undefined || resolved.in !== 'query')
151
+ continue;
152
+ const schema = resolved.schema;
153
+ const resolvedStyle = resolved.style;
154
+ const resolvedExplode = resolved.explode;
155
+ const param = {
156
+ name: normalizeParamName(resolved.name),
157
+ rawName: resolved.name,
158
+ tsType: schemaToTsType(schema),
159
+ required: resolved.required === true,
160
+ };
161
+ // Detect deepObject style: all name[key]=value entries must be assembled before validation.
162
+ if (resolvedStyle === 'deepObject' && schema !== undefined && !isRef(schema)) {
163
+ const s = schema;
164
+ if (s.type === 'object' && s.properties !== undefined) {
165
+ param.isDeepObject = true;
166
+ param.deepObjectProperties = Object.entries(s.properties).map(([key, propSchema]) => ({
167
+ key,
168
+ tsType: schemaToTsType(propSchema),
169
+ }));
170
+ }
171
+ }
172
+ // Detect delimited array styles with explode:false: value arrives as a single string.
173
+ if (!param.isDeepObject &&
174
+ schema !== undefined &&
175
+ !isRef(schema) &&
176
+ schema.type === 'array' &&
177
+ resolvedExplode === false) {
178
+ if (resolvedStyle === 'spaceDelimited') {
179
+ param.delimiterStyle = 'ssv';
180
+ }
181
+ else if (resolvedStyle === 'pipeDelimited') {
182
+ param.delimiterStyle = 'psv';
183
+ }
184
+ else {
185
+ // style:form with explode:false = CSV (also the default for arrays when explode:false)
186
+ param.delimiterStyle = 'csv';
187
+ }
188
+ }
189
+ if (schema !== undefined && !isRef(schema)) {
190
+ const s = schema;
191
+ if (Array.isArray(s.enum))
192
+ param.enum = s.enum;
193
+ if (typeof s.minimum === 'number')
194
+ param.minimum = s.minimum;
195
+ if (typeof s.maximum === 'number')
196
+ param.maximum = s.maximum;
197
+ // OpenAPI 3.1 uses numeric exclusiveMinimum/exclusiveMaximum; 3.0 uses boolean.
198
+ if (typeof s.exclusiveMinimum === 'number')
199
+ param.exclusiveMinimum = s.exclusiveMinimum;
200
+ if (typeof s.exclusiveMaximum === 'number')
201
+ param.exclusiveMaximum = s.exclusiveMaximum;
202
+ if (typeof s.minLength === 'number')
203
+ param.minLength = s.minLength;
204
+ if (typeof s.maxLength === 'number')
205
+ param.maxLength = s.maxLength;
206
+ if (typeof s.pattern === 'string')
207
+ param.pattern = s.pattern;
208
+ }
209
+ result.push(param);
210
+ }
211
+ return result;
212
+ }
213
+ export function getBodyInfo(operation) {
214
+ const requestBody = operation.requestBody;
215
+ if (requestBody === undefined)
216
+ return undefined;
217
+ if (isRef(requestBody)) {
218
+ return { typeName: undefined, contentType: 'application/json', isSynthesized: false };
219
+ }
220
+ const rb = requestBody;
221
+ const content = rb.content;
222
+ if (content === undefined) {
223
+ return { typeName: undefined, contentType: 'application/json', isSynthesized: false };
224
+ }
225
+ // Check application/json first.
226
+ const jsonContent = content['application/json'];
227
+ if (jsonContent !== undefined && jsonContent.schema !== undefined) {
228
+ const schema = jsonContent.schema;
229
+ if (isRef(schema)) {
230
+ return {
231
+ typeName: refToName(schema.$ref),
232
+ contentType: 'application/json',
233
+ isSynthesized: false,
234
+ };
235
+ }
236
+ // Inline JSON schema: synthesize a stable name from the operationId so the router
237
+ // can wire safeParse against a user-defined schema in schemas.ts.
238
+ const operationId = operation.operationId;
239
+ if (operationId !== undefined && operationId.length > 0) {
240
+ return { typeName: toTypeName(operationId), contentType: 'application/json', isSynthesized: true };
241
+ }
242
+ return { typeName: undefined, contentType: 'application/json', isSynthesized: false };
243
+ }
244
+ // Check application/x-www-form-urlencoded.
245
+ const formContent = content['application/x-www-form-urlencoded'];
246
+ if (formContent !== undefined) {
247
+ const schema = formContent.schema;
248
+ if (schema !== undefined && isRef(schema)) {
249
+ return {
250
+ typeName: refToName(schema.$ref),
251
+ contentType: 'application/x-www-form-urlencoded',
252
+ isSynthesized: false,
253
+ };
254
+ }
255
+ // Inline form schema: synthesize a stable name from the operationId.
256
+ const operationId = operation.operationId;
257
+ if (operationId !== undefined && operationId.length > 0) {
258
+ return {
259
+ typeName: toTypeName(operationId),
260
+ contentType: 'application/x-www-form-urlencoded',
261
+ isSynthesized: true,
262
+ };
263
+ }
264
+ return { typeName: undefined, contentType: 'application/x-www-form-urlencoded', isSynthesized: false };
265
+ }
266
+ // Check multipart/form-data.
267
+ const multipartContent = content['multipart/form-data'];
268
+ if (multipartContent !== undefined) {
269
+ const schema = multipartContent.schema;
270
+ if (schema !== undefined && isRef(schema)) {
271
+ return {
272
+ typeName: refToName(schema.$ref),
273
+ contentType: 'multipart/form-data',
274
+ isSynthesized: false,
275
+ };
276
+ }
277
+ // Inline multipart schema: synthesize a stable name from the operationId.
278
+ const operationId = operation.operationId;
279
+ if (operationId !== undefined && operationId.length > 0) {
280
+ return {
281
+ typeName: toTypeName(operationId),
282
+ contentType: 'multipart/form-data',
283
+ isSynthesized: true,
284
+ };
285
+ }
286
+ return { typeName: undefined, contentType: 'multipart/form-data', isSynthesized: false };
287
+ }
288
+ return { typeName: undefined, contentType: 'application/json', isSynthesized: false };
289
+ }
290
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/plugins/shared.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codewithagents/openapi-server",
3
- "version": "1.7.0",
3
+ "version": "1.9.0",
4
4
  "description": "Generate typed server-side service interfaces and framework routers from OpenAPI 3.1",
5
5
  "type": "module",
6
6
  "bin": {
@@ -18,7 +18,7 @@
18
18
  "dependencies": {
19
19
  "openapi-types": "^12.1.3",
20
20
  "prettier": "^3.5.3",
21
- "openapi-zod-ts": "1.0.0"
21
+ "openapi-zod-ts": "2.0.1"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@stryker-mutator/core": "^9.6.1",