UNPKG

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