(schema: StringMap, path: Ref, inferredName: string, typeName: string)
| 314 | } |
| 315 | |
| 316 | function fromTypeName(schema: StringMap, path: Ref, inferredName: string, typeName: string): TypeRef { |
| 317 | const [name, isInferred] = getName(schema, inferredName, true); |
| 318 | switch (typeName) { |
| 319 | case "object": |
| 320 | let required: string[]; |
| 321 | if (schema.required === undefined) { |
| 322 | required = []; |
| 323 | } else { |
| 324 | required = checkStringArray(schema.required); |
| 325 | } |
| 326 | if (schema.properties !== undefined) { |
| 327 | return makeClass(schema, path, name, isInferred, checkStringMap(schema.properties), required); |
| 328 | } else if (schema.additionalProperties !== undefined) { |
| 329 | const additional = schema.additionalProperties; |
| 330 | if (additional === true) { |
| 331 | return typeBuilder.getMapType(typeBuilder.getPrimitiveType("any")); |
| 332 | } else if (additional === false) { |
| 333 | return makeClass(schema, path, name, isInferred, {}, required); |
| 334 | } else { |
| 335 | return makeMap(path, name, checkStringMap(additional)); |
| 336 | } |
| 337 | } else { |
| 338 | return typeBuilder.getMapType(typeBuilder.getPrimitiveType("any")); |
| 339 | } |
| 340 | case "array": |
| 341 | if (schema.items !== undefined) { |
| 342 | path = path.push({ kind: PathElementKind.Items }); |
| 343 | return typeBuilder.getArrayType( |
| 344 | toType(checkStringMap(schema.items), path, pluralize.singular(name), true) |
| 345 | ); |
| 346 | } |
| 347 | return typeBuilder.getArrayType(typeBuilder.getPrimitiveType("any")); |
| 348 | case "boolean": |
| 349 | return typeBuilder.getPrimitiveType("bool"); |
| 350 | case "string": |
| 351 | if (schema.format !== undefined) { |
| 352 | switch (schema.format) { |
| 353 | case "date": |
| 354 | return typeBuilder.getPrimitiveType("date"); |
| 355 | case "time": |
| 356 | return typeBuilder.getPrimitiveType("time"); |
| 357 | case "date-time": |
| 358 | return typeBuilder.getPrimitiveType("date-time"); |
| 359 | default: |
| 360 | return panic(`String format ${schema.format} not supported`); |
| 361 | } |
| 362 | } |
| 363 | return typeBuilder.getPrimitiveType("string"); |
| 364 | case "null": |
| 365 | return typeBuilder.getPrimitiveType("null"); |
| 366 | case "integer": |
| 367 | return typeBuilder.getPrimitiveType("integer"); |
| 368 | case "number": |
| 369 | return typeBuilder.getPrimitiveType("double"); |
| 370 | default: |
| 371 | return panic(`not a type name: ${typeName}`); |
| 372 | } |
| 373 | } |
no test coverage detected
searching dependent graphs…