UNPKG

1.85 kBTypeScriptView Raw
1import { EventDispatcher } from "../utils/index.js";
2import type { ProjectReflection } from "../models/index.js";
3import { SerializeEvent } from "./events.js";
4import type { ModelToObject } from "./schema.js";
5import type { SerializerComponent } from "./components.js";
6export interface SerializerEvents {
7 begin: [SerializeEvent];
8 end: [SerializeEvent];
9}
10/**
11 * Serializes TypeDoc's models to JSON
12 *
13 * @group Common
14 * @summary Serializes TypeDoc's models to JSON
15 */
16export declare class Serializer extends EventDispatcher<SerializerEvents> {
17 /**
18 * Triggered when the {@link Serializer} begins transforming a project.
19 * @event
20 */
21 static readonly EVENT_BEGIN = "begin";
22 /**
23 * Triggered when the {@link Serializer} has finished transforming a project.
24 * @event
25 */
26 static readonly EVENT_END = "end";
27 private serializers;
28 /**
29 * Only set when serializing.
30 */
31 projectRoot: string;
32 /**
33 * Only set when serializing
34 */
35 project: ProjectReflection;
36 addSerializer<T extends object>(serializer: SerializerComponent<T>): void;
37 removeSerializer(serializer: SerializerComponent<any>): void;
38 toObject<T extends {
39 toObject(serializer: Serializer): ModelToObject<T>;
40 }>(value: T): ModelToObject<T>;
41 toObject<T extends {
42 toObject(serializer: Serializer): ModelToObject<T>;
43 }>(value: T | undefined): ModelToObject<T> | undefined;
44 toObjectsOptional<T extends {
45 toObject(serializer: Serializer): ModelToObject<T>;
46 }>(value: T[] | undefined): ModelToObject<T>[] | undefined;
47 /**
48 * Same as toObject but emits {@link Serializer.EVENT_BEGIN} and {@link Serializer.EVENT_END} events.
49 * @param value
50 */
51 projectToObject(value: ProjectReflection, projectRoot: string): ModelToObject<ProjectReflection>;
52}