@typespec/http-server-js 0.58.0-alpha.13-dev.3 → 0.58.0-alpha.13-dev.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.testignore +0 -3
- package/dist/src/http/server/index.d.ts.map +1 -1
- package/dist/src/http/server/index.js +75 -1
- package/dist/src/http/server/index.js.map +1 -1
- package/dist/src/http/server/router.d.ts.map +1 -1
- package/dist/src/http/server/router.js +35 -43
- package/dist/src/http/server/router.js.map +1 -1
- package/dist/src/lib.d.ts +10 -1
- package/dist/src/lib.d.ts.map +1 -1
- package/dist/src/lib.js +6 -0
- package/dist/src/lib.js.map +1 -1
- package/dist/src/util/differentiate.d.ts +25 -2
- package/dist/src/util/differentiate.d.ts.map +1 -1
- package/dist/src/util/differentiate.js +25 -33
- package/dist/src/util/differentiate.js.map +1 -1
- package/package.json +1 -1
- package/src/http/server/index.ts +83 -1
- package/src/http/server/router.ts +45 -58
- package/src/lib.ts +6 -0
- package/src/util/differentiate.ts +58 -23
- package/temp/tsconfig.tsbuildinfo +1 -1
|
@@ -112,7 +112,7 @@ export function differentiateTypes(ctx, module, cases, renderPropertyName = PROP
|
|
|
112
112
|
const scalars = categories.Scalar ?? [];
|
|
113
113
|
const intrinsics = categories.Intrinsic ?? [];
|
|
114
114
|
if (literals.length + scalars.length + intrinsics.length === 0) {
|
|
115
|
-
return differentiateModelTypes(ctx, module, select(models, cases), renderPropertyName);
|
|
115
|
+
return differentiateModelTypes(ctx, module, select(models, cases), { renderPropertyName });
|
|
116
116
|
}
|
|
117
117
|
else {
|
|
118
118
|
const branches = [];
|
|
@@ -226,7 +226,7 @@ export function differentiateTypes(ctx, module, cases, renderPropertyName = PROP
|
|
|
226
226
|
kind: "if-chain",
|
|
227
227
|
branches,
|
|
228
228
|
else: models.length > 0
|
|
229
|
-
? differentiateModelTypes(ctx, module, select(models, cases), renderPropertyName)
|
|
229
|
+
? differentiateModelTypes(ctx, module, select(models, cases), { renderPropertyName })
|
|
230
230
|
: undefined,
|
|
231
231
|
};
|
|
232
232
|
}
|
|
@@ -288,18 +288,13 @@ function getIntegerRange(ctx, module, property) {
|
|
|
288
288
|
function overlaps(range, other) {
|
|
289
289
|
return range[0] <= other[1] && range[1] >= other[0];
|
|
290
290
|
}
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
* @returns a CodeTree to use with `writeCodeTree`
|
|
299
|
-
*/
|
|
300
|
-
export function differentiateModelTypes(ctx, module, models, renderPropertyName = PROPERTY_ID) {
|
|
301
|
-
// Horrible n^2 operation to get the unique properties of all models in the map, but hopefully n is small, so it should
|
|
302
|
-
// be okay until you have a lot of models to differentiate.
|
|
291
|
+
const DEFAULT_DIFFERENTIATE_OPTIONS = {
|
|
292
|
+
renderPropertyName: PROPERTY_ID,
|
|
293
|
+
filter: () => true,
|
|
294
|
+
else: undefined,
|
|
295
|
+
};
|
|
296
|
+
export function differentiateModelTypes(ctx, module, models, _options = {}) {
|
|
297
|
+
const options = { ...DEFAULT_DIFFERENTIATE_OPTIONS, ..._options };
|
|
303
298
|
const uniqueProps = new Map();
|
|
304
299
|
// Map of property names to maps of literal values that identify a model.
|
|
305
300
|
const propertyLiterals = new Map();
|
|
@@ -309,14 +304,14 @@ export function differentiateModelTypes(ctx, module, models, renderPropertyName
|
|
|
309
304
|
const uniqueRanges = new Map();
|
|
310
305
|
for (const model of models) {
|
|
311
306
|
const props = new Set();
|
|
312
|
-
for (const prop of getAllProperties(model)) {
|
|
307
|
+
for (const prop of getAllProperties(model).filter(options.filter)) {
|
|
313
308
|
// Don't consider optional properties for differentiation.
|
|
314
309
|
if (prop.optional)
|
|
315
310
|
continue;
|
|
316
311
|
// Ignore properties that have no parseable name.
|
|
317
312
|
if (isUnspeakable(prop.name))
|
|
318
313
|
continue;
|
|
319
|
-
const renderedPropName = renderPropertyName(prop);
|
|
314
|
+
const renderedPropName = options.renderPropertyName(prop);
|
|
320
315
|
// CASE - literal value
|
|
321
316
|
if (isLiteralValueType(prop.type)) {
|
|
322
317
|
let literals = propertyLiterals.get(renderedPropName);
|
|
@@ -387,7 +382,7 @@ export function differentiateModelTypes(ctx, module, models, renderPropertyName
|
|
|
387
382
|
uniqueProps.set(model, props);
|
|
388
383
|
}
|
|
389
384
|
const branches = [];
|
|
390
|
-
let defaultCase =
|
|
385
|
+
let defaultCase = options.else;
|
|
391
386
|
for (const [model, unique] of uniqueProps) {
|
|
392
387
|
const literals = uniqueLiterals.get(model);
|
|
393
388
|
const ranges = uniqueRanges.get(model);
|
|
@@ -397,28 +392,25 @@ export function differentiateModelTypes(ctx, module, models, renderPropertyName
|
|
|
397
392
|
code: "undifferentiable-model",
|
|
398
393
|
target: model,
|
|
399
394
|
});
|
|
400
|
-
return
|
|
401
|
-
kind: "result",
|
|
402
|
-
type: defaultCase,
|
|
403
|
-
};
|
|
395
|
+
return defaultCase;
|
|
404
396
|
}
|
|
405
397
|
else {
|
|
406
398
|
// Allow a single default case. This covers more APIs that have a single model that is not differentiated by a
|
|
407
399
|
// unique property, in which case we can make it the `else` case.
|
|
408
|
-
defaultCase = model;
|
|
400
|
+
defaultCase = { kind: "result", type: model };
|
|
409
401
|
continue;
|
|
410
402
|
}
|
|
411
403
|
}
|
|
412
404
|
if (literals && literals.size > 0) {
|
|
413
405
|
// A literal property value exists that can differentiate this model.
|
|
414
406
|
const firstUniqueLiteral = literals.values().next().value;
|
|
415
|
-
const property = [...model.properties.values()].find((p) => renderPropertyName(p) === firstUniqueLiteral);
|
|
407
|
+
const property = [...model.properties.values()].find((p) => options.renderPropertyName(p) === firstUniqueLiteral);
|
|
416
408
|
branches.push({
|
|
417
409
|
condition: {
|
|
418
410
|
kind: "binary-op",
|
|
419
411
|
left: {
|
|
420
412
|
kind: "binary-op",
|
|
421
|
-
left: { kind: "literal", value: renderPropertyName(property) },
|
|
413
|
+
left: { kind: "literal", value: options.renderPropertyName(property) },
|
|
422
414
|
operator: "in",
|
|
423
415
|
right: SUBJECT,
|
|
424
416
|
},
|
|
@@ -439,14 +431,14 @@ export function differentiateModelTypes(ctx, module, models, renderPropertyName
|
|
|
439
431
|
else if (ranges && ranges.size > 0) {
|
|
440
432
|
// A range property value exists that can differentiate this model.
|
|
441
433
|
const firstUniqueRange = ranges.values().next().value;
|
|
442
|
-
const property = [...model.properties.values()].find((p) => renderPropertyName(p) === firstUniqueRange);
|
|
434
|
+
const property = [...model.properties.values()].find((p) => options.renderPropertyName(p) === firstUniqueRange);
|
|
443
435
|
const range = [...propertyRanges.get(firstUniqueRange).entries()].find(([range, candidate]) => candidate === model)[0];
|
|
444
436
|
branches.push({
|
|
445
437
|
condition: {
|
|
446
438
|
kind: "binary-op",
|
|
447
439
|
left: {
|
|
448
440
|
kind: "binary-op",
|
|
449
|
-
left: { kind: "literal", value: renderPropertyName(property) },
|
|
441
|
+
left: { kind: "literal", value: options.renderPropertyName(property) },
|
|
450
442
|
operator: "in",
|
|
451
443
|
right: SUBJECT,
|
|
452
444
|
},
|
|
@@ -476,12 +468,7 @@ export function differentiateModelTypes(ctx, module, models, renderPropertyName
|
|
|
476
468
|
return {
|
|
477
469
|
kind: "if-chain",
|
|
478
470
|
branches,
|
|
479
|
-
else: defaultCase
|
|
480
|
-
? {
|
|
481
|
-
kind: "result",
|
|
482
|
-
type: defaultCase,
|
|
483
|
-
}
|
|
484
|
-
: undefined,
|
|
471
|
+
else: defaultCase,
|
|
485
472
|
};
|
|
486
473
|
}
|
|
487
474
|
/**
|
|
@@ -532,7 +519,12 @@ export function* writeCodeTree(ctx, tree, options) {
|
|
|
532
519
|
break;
|
|
533
520
|
}
|
|
534
521
|
case "verbatim":
|
|
535
|
-
|
|
522
|
+
if (typeof tree.body === "function") {
|
|
523
|
+
yield* tree.body();
|
|
524
|
+
}
|
|
525
|
+
else {
|
|
526
|
+
yield* tree.body;
|
|
527
|
+
}
|
|
536
528
|
break;
|
|
537
529
|
default:
|
|
538
530
|
throw new UnreachableError("writeCodeTree for " + tree.kind, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"differentiate.js","sourceRoot":"","sources":["../../../src/util/differentiate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"differentiate.js","sourceRoot":"","sources":["../../../src/util/differentiate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@typespec/http-server-js",
|
|
3
|
-
"version": "0.58.0-alpha.13-dev.
|
|
3
|
+
"version": "0.58.0-alpha.13-dev.4",
|
|
4
4
|
"author": "Microsoft Corporation",
|
|
5
5
|
"description": "TypeSpec HTTP server code generator for JavaScript",
|
|
6
6
|
"homepage": "https://github.com/microsoft/typespec",
|
package/src/http/server/index.ts
CHANGED
|
@@ -41,6 +41,7 @@ import { module as headerHelpers } from "../../../generated-defs/helpers/header.
|
|
|
41
41
|
import { module as httpHelpers } from "../../../generated-defs/helpers/http.js";
|
|
42
42
|
import { getJsScalar } from "../../common/scalar.js";
|
|
43
43
|
import { requiresJsonSerialization } from "../../common/serialization/json.js";
|
|
44
|
+
import { getFullyQualifiedTypeName } from "../../util/name.js";
|
|
44
45
|
|
|
45
46
|
const DEFAULT_CONTENT_TYPE = "application/json";
|
|
46
47
|
|
|
@@ -296,7 +297,7 @@ function* emitRawServerOperation(
|
|
|
296
297
|
|
|
297
298
|
break;
|
|
298
299
|
}
|
|
299
|
-
case "multipart/form-data":
|
|
300
|
+
case "multipart/form-data": {
|
|
300
301
|
if (body.bodyKind === "multipart") {
|
|
301
302
|
yield* indent(
|
|
302
303
|
emitMultipart(ctx, module, operation, body, names.ctx, bodyName, bodyTypeName),
|
|
@@ -305,7 +306,88 @@ function* emitRawServerOperation(
|
|
|
305
306
|
yield* indent(emitMultipartLegacy(names.ctx, bodyName, bodyTypeName));
|
|
306
307
|
}
|
|
307
308
|
break;
|
|
309
|
+
}
|
|
310
|
+
case "text/plain": {
|
|
311
|
+
const string = ctx.program.checker.getStdType("string");
|
|
312
|
+
const [assignable] = ctx.program.checker.isTypeAssignableTo(
|
|
313
|
+
body.type,
|
|
314
|
+
string,
|
|
315
|
+
body.property ?? body.type,
|
|
316
|
+
);
|
|
317
|
+
if (!assignable) {
|
|
318
|
+
const name =
|
|
319
|
+
("namespace" in body.type &&
|
|
320
|
+
body.type.namespace &&
|
|
321
|
+
getFullyQualifiedTypeName(body.type)) ||
|
|
322
|
+
("name" in body.type && typeof body.type.name === "string" && body.type.name) ||
|
|
323
|
+
"<unknown>";
|
|
324
|
+
reportDiagnostic(ctx.program, {
|
|
325
|
+
code: "unrecognized-media-type",
|
|
326
|
+
target: body.property ?? body.type,
|
|
327
|
+
format: {
|
|
328
|
+
mediaType: contentType,
|
|
329
|
+
type: name,
|
|
330
|
+
},
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
yield ` const ${bodyName} = await new Promise(function parse${bodyNameCase.pascalCase}(resolve, reject) {`;
|
|
335
|
+
yield ` const chunks: Array<Buffer> = [];`;
|
|
336
|
+
yield ` ${names.ctx}.request.on("data", function appendChunk(chunk) { chunks.push(chunk); });`;
|
|
337
|
+
yield ` ${names.ctx}.request.on("end", function finalize() {`;
|
|
338
|
+
yield ` try {`;
|
|
339
|
+
yield ` const body = Buffer.concat(chunks).toString();`;
|
|
340
|
+
yield ` resolve(body);`;
|
|
341
|
+
yield ` } catch (e) {`;
|
|
342
|
+
yield ` ${names.ctx}.errorHandlers.onInvalidRequest(`;
|
|
343
|
+
yield ` ${names.ctx},`;
|
|
344
|
+
yield ` ${JSON.stringify(operation.path)},`;
|
|
345
|
+
yield ` "invalid text in request body",`;
|
|
346
|
+
yield ` );`;
|
|
347
|
+
yield ` reject(e);`;
|
|
348
|
+
yield ` }`;
|
|
349
|
+
yield ` });`;
|
|
350
|
+
yield ` ${names.ctx}.request.on("error", reject);`;
|
|
351
|
+
yield ` }) as string;`;
|
|
352
|
+
yield "";
|
|
353
|
+
break;
|
|
354
|
+
}
|
|
355
|
+
case "application/octet-stream":
|
|
308
356
|
default:
|
|
357
|
+
{
|
|
358
|
+
if (!ctx.program.checker.isStdType(body.type, "bytes")) {
|
|
359
|
+
const name =
|
|
360
|
+
("namespace" in body.type &&
|
|
361
|
+
body.type.namespace &&
|
|
362
|
+
getFullyQualifiedTypeName(body.type)) ||
|
|
363
|
+
("name" in body.type && typeof body.type.name === "string" && body.type.name) ||
|
|
364
|
+
"<unknown>";
|
|
365
|
+
|
|
366
|
+
reportDiagnostic(ctx.program, {
|
|
367
|
+
code: "unrecognized-media-type",
|
|
368
|
+
target: body.property ?? body.type,
|
|
369
|
+
format: {
|
|
370
|
+
mediaType: contentType,
|
|
371
|
+
type: name,
|
|
372
|
+
},
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
yield ` const ${bodyName} = await new Promise(function parse${bodyNameCase.pascalCase}(resolve, reject) {`;
|
|
376
|
+
yield ` const chunks: Array<Buffer> = [];`;
|
|
377
|
+
yield ` ${names.ctx}.request.on("data", function appendChunk(chunk) { chunks.push(chunk); });`;
|
|
378
|
+
yield ` ${names.ctx}.request.on("end", function finalize() {`;
|
|
379
|
+
yield ` try {`;
|
|
380
|
+
yield ` const body = Buffer.concat(chunks);`;
|
|
381
|
+
yield ` resolve(body);`;
|
|
382
|
+
yield ` } catch (e) {`;
|
|
383
|
+
yield ` reject(e);`;
|
|
384
|
+
yield ` }`;
|
|
385
|
+
yield ` });`;
|
|
386
|
+
yield ` ${names.ctx}.request.on("error", reject);`;
|
|
387
|
+
yield ` }) as Buffer;`;
|
|
388
|
+
yield "";
|
|
389
|
+
break;
|
|
390
|
+
}
|
|
309
391
|
throw new UnimplementedError(`request deserialization for content-type: '${contentType}'`);
|
|
310
392
|
}
|
|
311
393
|
|
|
@@ -7,7 +7,8 @@ import {
|
|
|
7
7
|
HttpService,
|
|
8
8
|
HttpVerb,
|
|
9
9
|
OperationContainer,
|
|
10
|
-
|
|
10
|
+
getHeaderFieldName,
|
|
11
|
+
isHeader,
|
|
11
12
|
} from "@typespec/http";
|
|
12
13
|
import {
|
|
13
14
|
createOrGetModuleForNamespace,
|
|
@@ -22,9 +23,7 @@ import { HttpContext } from "../index.js";
|
|
|
22
23
|
|
|
23
24
|
import { module as headerHelpers } from "../../../generated-defs/helpers/header.js";
|
|
24
25
|
import { module as routerHelper } from "../../../generated-defs/helpers/router.js";
|
|
25
|
-
import {
|
|
26
|
-
import { reportDiagnostic } from "../../lib.js";
|
|
27
|
-
import { UnimplementedError } from "../../util/error.js";
|
|
26
|
+
import { differentiateModelTypes, writeCodeTree } from "../../util/differentiate.js";
|
|
28
27
|
|
|
29
28
|
/**
|
|
30
29
|
* Emit a router for the HTTP operations defined in a given service.
|
|
@@ -261,7 +260,9 @@ function* emitRouteHandler(
|
|
|
261
260
|
|
|
262
261
|
yield `if (path.length === 0) {`;
|
|
263
262
|
if (routeTree.operations.size > 0) {
|
|
264
|
-
yield* indent(
|
|
263
|
+
yield* indent(
|
|
264
|
+
emitRouteOperationDispatch(ctx, routeHandlers, routeTree.operations, backends, module),
|
|
265
|
+
);
|
|
265
266
|
} else {
|
|
266
267
|
// Not found
|
|
267
268
|
yield ` return ${onRouteNotFound}(ctx);`;
|
|
@@ -318,6 +319,7 @@ function* emitRouteOperationDispatch(
|
|
|
318
319
|
routeHandlers: string,
|
|
319
320
|
operations: Map<HttpVerb, RouteOperation[]>,
|
|
320
321
|
backends: Map<OperationContainer, [ReCase, string]>,
|
|
322
|
+
module: Module,
|
|
321
323
|
): Iterable<string> {
|
|
322
324
|
yield `switch (request.method) {`;
|
|
323
325
|
for (const [verb, operationList] of operations.entries()) {
|
|
@@ -339,11 +341,10 @@ function* emitRouteOperationDispatch(
|
|
|
339
341
|
yield ` return ${routeHandlers}.${operationName}(ctx, ${backendMemberName}${parameters});`;
|
|
340
342
|
} else {
|
|
341
343
|
// Shared route
|
|
342
|
-
const route = getHttpOperation(ctx.program, operationList[0].operation)[0].path;
|
|
343
344
|
yield ` case ${JSON.stringify(verb.toUpperCase())}:`;
|
|
344
345
|
yield* indent(
|
|
345
346
|
indent(
|
|
346
|
-
emitRouteOperationDispatchMultiple(ctx, routeHandlers, operationList,
|
|
347
|
+
emitRouteOperationDispatchMultiple(ctx, routeHandlers, operationList, backends, module),
|
|
347
348
|
),
|
|
348
349
|
);
|
|
349
350
|
}
|
|
@@ -366,64 +367,50 @@ function* emitRouteOperationDispatchMultiple(
|
|
|
366
367
|
ctx: HttpContext,
|
|
367
368
|
routeHandlers: string,
|
|
368
369
|
operations: RouteOperation[],
|
|
369
|
-
route: string,
|
|
370
370
|
backends: Map<OperationContainer, [ReCase, string]>,
|
|
371
|
+
module: Module,
|
|
371
372
|
): Iterable<string> {
|
|
372
|
-
const
|
|
373
|
-
|
|
373
|
+
const differentiated = differentiateModelTypes(
|
|
374
|
+
ctx,
|
|
375
|
+
module,
|
|
376
|
+
new Set(operations.map((op) => op.operation.parameters)),
|
|
377
|
+
{
|
|
378
|
+
renderPropertyName(prop): string {
|
|
379
|
+
return getHeaderFieldName(ctx.program, prop);
|
|
380
|
+
},
|
|
381
|
+
filter(prop): boolean {
|
|
382
|
+
return isHeader(ctx.program, prop);
|
|
383
|
+
},
|
|
384
|
+
else: {
|
|
385
|
+
kind: "verbatim",
|
|
386
|
+
body: [`return ctx.errorHandlers.onRequestNotFound(ctx);`],
|
|
387
|
+
},
|
|
388
|
+
},
|
|
389
|
+
);
|
|
374
390
|
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
391
|
+
yield* writeCodeTree(ctx, differentiated, {
|
|
392
|
+
referenceModelProperty(p) {
|
|
393
|
+
const headerName = getHeaderFieldName(ctx.program, p);
|
|
394
|
+
return `request.headers["${headerName}"]`;
|
|
395
|
+
},
|
|
396
|
+
*renderResult(type) {
|
|
397
|
+
const operation = operations.find((op) => op.operation.parameters === type)!;
|
|
398
|
+
const [backend] = backends.get(operation.container)!;
|
|
399
|
+
const operationName = keywordSafe(
|
|
400
|
+
backend.snakeCase + "_" + parseCase(operation.operation.name).snakeCase,
|
|
384
401
|
);
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
if (usedContentTypes.has(operationContentType.value)) {
|
|
388
|
-
reportDiagnostic(ctx.program, {
|
|
389
|
-
code: "undifferentiable-route",
|
|
390
|
-
target: httpOperation.operation,
|
|
391
|
-
});
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
usedContentTypes.add(operationContentType.value);
|
|
395
|
-
|
|
396
|
-
contentTypeMap.set(operation, operationContentType.value);
|
|
397
|
-
}
|
|
398
|
-
|
|
399
|
-
const contentTypeName = ctx.gensym("contentType");
|
|
400
402
|
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
yield `switch (${contentTypeName}) {`;
|
|
404
|
-
|
|
405
|
-
for (const [operation, contentType] of contentTypeMap.entries()) {
|
|
406
|
-
const [backend] = backends.get(operation.container)!;
|
|
407
|
-
const operationName = keywordSafe(
|
|
408
|
-
backend.snakeCase + "_" + parseCase(operation.operation.name).snakeCase,
|
|
409
|
-
);
|
|
410
|
-
|
|
411
|
-
const backendMemberName = keywordSafe(backend.camelCase);
|
|
412
|
-
|
|
413
|
-
const parameters =
|
|
414
|
-
operation.parameters.length > 0
|
|
415
|
-
? ", " + operation.parameters.map((param) => parseCase(param.name).camelCase).join(", ")
|
|
416
|
-
: "";
|
|
417
|
-
|
|
418
|
-
const contentTypeValue = parseHeaderValueParameters(contentType).value;
|
|
403
|
+
const backendMemberName = keywordSafe(backend.camelCase);
|
|
419
404
|
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
405
|
+
const parameters =
|
|
406
|
+
operation.parameters.length > 0
|
|
407
|
+
? ", " + operation.parameters.map((param) => parseCase(param.name).camelCase).join(", ")
|
|
408
|
+
: "";
|
|
423
409
|
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
410
|
+
yield `return ${routeHandlers}.${operationName}(ctx, ${backendMemberName}${parameters});`;
|
|
411
|
+
},
|
|
412
|
+
subject: "(request.headers)",
|
|
413
|
+
});
|
|
427
414
|
}
|
|
428
415
|
|
|
429
416
|
/**
|
package/src/lib.ts
CHANGED
|
@@ -148,6 +148,12 @@ export const $lib = createTypeSpecLibrary({
|
|
|
148
148
|
default: paramMessage`Unknown encoding '${"encoding"}' to type '${"target"}' for type '${"type"}'.`,
|
|
149
149
|
},
|
|
150
150
|
},
|
|
151
|
+
"unrecognized-media-type": {
|
|
152
|
+
severity: "error",
|
|
153
|
+
messages: {
|
|
154
|
+
default: paramMessage`unrecognized media (MIME) type '${"mediaType"}' for type '${"type"}'.`,
|
|
155
|
+
},
|
|
156
|
+
},
|
|
151
157
|
},
|
|
152
158
|
});
|
|
153
159
|
|