MCPcopy Create free account
hub / github.com/Effect-TS/effect / serializeDeclaration

Function serializeDeclaration

packages/tools/api-diff/src/Snapshot.ts:469–541  ·  view source on GitHub ↗
(node: ts.Declaration, context: SerializationContext)

Source from the content-addressed store, hash-verified

467}
468
469const 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

Callers 2

moduleMembersFunction · 0.85
extractSnapshotFunction · 0.85

Calls 11

stableJsonFunction · 0.90
serializeSignatureFunction · 0.85
nameTextFunction · 0.85
serializeTypeFunction · 0.85
serializeTypeParametersFunction · 0.85
modifiersFunction · 0.85
serializeObjectMembersFunction · 0.85
serializeHeritageFunction · 0.85
serializeClassMemberFunction · 0.85
moduleMembersFunction · 0.85
mapMethod · 0.45

Tested by

no test coverage detected