1 | import type { Application } from "../application";
|
2 | import { ProjectReflection, type ReflectionVariant, type TypeKindMap } from "../models/index";
|
3 | import type { Logger } from "../utils/loggers";
|
4 | import type { JSONOutput } from "./index";
|
5 | import type { FileRegistry } from "../models/FileRegistry";
|
6 | export interface DeserializerComponent {
|
7 | priority: number;
|
8 | supports(model: unknown, obj: unknown): boolean;
|
9 | fromObject(model: unknown, obj: unknown): void;
|
10 | }
|
11 | export interface Deserializable<T> {
|
12 | fromObject(d: Deserializer, o: T): void;
|
13 | }
|
14 | export declare class Deserializer {
|
15 | readonly application: Application;
|
16 | private deferred;
|
17 | private deserializers;
|
18 | private activeReflection;
|
19 | constructor(application: Application);
|
20 | get logger(): Logger;
|
21 | reflectionBuilders: {
|
22 | [K in keyof ReflectionVariant]: (parent: NonNullable<ReflectionVariant[K]["parent"]>, obj: JSONOutput.ModelToObject<ReflectionVariant[K]>) => ReflectionVariant[K];
|
23 | };
|
24 | typeBuilders: {
|
25 | [K in keyof TypeKindMap]: (obj: JSONOutput.ModelToObject<TypeKindMap[K]>, de: Deserializer) => TypeKindMap[K];
|
26 | };
|
27 | |
28 |
|
29 |
|
30 | projectRoot: string;
|
31 | oldIdToNewId: Record<number, number | undefined>;
|
32 | oldFileIdToNewFileId: Record<number, number | undefined>;
|
33 | project: ProjectReflection | undefined;
|
34 | addDeserializer(de: DeserializerComponent): void;
|
35 | |
36 |
|
37 |
|
38 |
|
39 |
|
40 | reviveProject(projectObj: JSONOutput.ProjectReflection, name: string, projectRoot: string, registry: FileRegistry): ProjectReflection;
|
41 | reviveProjects(name: string, projects: readonly JSONOutput.ProjectReflection[], projectRoot: string, registry: FileRegistry): ProjectReflection;
|
42 | revive<T, U extends Deserializable<T>>(source: NonNullable<T>, creator: (obj: T) => U): U;
|
43 | revive<T, U extends Deserializable<T>>(source: T | undefined, creator: (obj: T) => U): U | undefined;
|
44 | reviveMany<T, U extends Deserializable<T>>(sourceArray: T[], creator: (obj: T) => U): U[];
|
45 | reviveMany<T, U extends Deserializable<T>>(sourceArray: T[] | undefined, creator: (obj: T) => U): U[] | undefined;
|
46 | reviveType<T extends JSONOutput.SomeType>(obj: T): TypeKindMap[T["type"]];
|
47 | reviveType<T extends JSONOutput.SomeType>(obj: T | undefined): TypeKindMap[T["type"]] | undefined;
|
48 | constructReflection<T extends JSONOutput.SomeReflection>(obj: T): ReflectionVariant[T["variant"]];
|
49 | constructType<T extends JSONOutput.SomeType>(obj: T): TypeKindMap[T["type"]];
|
50 | fromObject<T>(receiver: {
|
51 | fromObject(d: Deserializer, o: T): void;
|
52 | }, obj: T): void;
|
53 | /**
|
54 | * Defers work until the initial pass of serialization has been completed.
|
55 | * This can be used to set up references which cannot be immediately restored.
|
56 | *
|
57 | * May only be called when deserializing.
|
58 | */
|
59 | defer(cb: (project: ProjectReflection) => void): void;
|
60 | }
|
61 |
|
\ | No newline at end of file |