(node: ts.Declaration, context: SerializationContext)
| 467 | } |
| 468 | |
| 469 | const serializeDeclaration = (node: ts.Declaration, context: SerializationContext): DeclarationModel => { |
| 470 | if (ts.isFunctionDeclaration(node)) { |
| 471 | return serializeSignature(node, context, "function", nameText(node.name)) |
| 472 | } |
| 473 | if (ts.isVariableDeclaration(node)) { |
| 474 | return { |
| 475 | kind: "variable", |
| 476 | name: nameText(node.name), |
| 477 | type: node.type === undefined ? { kind: "unknown" } : serializeType(node.type, context) |
| 478 | } |
| 479 | } |
| 480 | if (ts.isTypeAliasDeclaration(node)) { |
| 481 | const generic = serializeTypeParameters(node.typeParameters, context) |
| 482 | return { |
| 483 | kind: "type-alias", |
| 484 | name: node.name.text, |
| 485 | typeParameters: generic.parameters, |
| 486 | type: serializeType(node.type, generic.context), |
| 487 | modifiers: modifiers(node) |
| 488 | } |
| 489 | } |
| 490 | if (ts.isInterfaceDeclaration(node)) { |
| 491 | const generic = serializeTypeParameters(node.typeParameters, context) |
| 492 | return { |
| 493 | kind: "interface", |
| 494 | name: node.name.text, |
| 495 | typeParameters: generic.parameters, |
| 496 | members: serializeObjectMembers(node.members, generic.context), |
| 497 | heritage: serializeHeritage(node.heritageClauses, generic.context), |
| 498 | modifiers: modifiers(node) |
| 499 | } |
| 500 | } |
| 501 | if (ts.isClassDeclaration(node)) { |
| 502 | const generic = serializeTypeParameters(node.typeParameters, context) |
| 503 | return { |
| 504 | kind: "class", |
| 505 | name: nameText(node.name), |
| 506 | typeParameters: generic.parameters, |
| 507 | members: node.members.flatMap((member) => { |
| 508 | const serialized = serializeClassMember(member, generic.context) |
| 509 | return serialized === undefined ? [] : [serialized] |
| 510 | }).sort((left, right) => |
| 511 | `${left.kind}:${left.name}:${stableJson(left)}`.localeCompare( |
| 512 | `${right.kind}:${right.name}:${stableJson(right)}` |
| 513 | ) |
| 514 | ), |
| 515 | heritage: serializeHeritage(node.heritageClauses, generic.context), |
| 516 | modifiers: modifiers(node) |
| 517 | } |
| 518 | } |
| 519 | if (ts.isEnumDeclaration(node)) { |
| 520 | return { |
| 521 | kind: "enum", |
| 522 | name: node.name.text, |
| 523 | members: node.members.map((member) => ({ |
| 524 | kind: "enum-member", |
| 525 | name: nameText(member.name), |
| 526 | value: member.initializer === undefined |
no test coverage detected