1 | import { Resolver } from '@stoplight/json-ref-resolver';
|
2 | import { IDisposable } from '@stoplight/lifecycle';
|
3 | import { IDiagnostic } from '@stoplight/types';
|
4 | import { IPatchableGraph, SelectableNode } from '../graph';
|
5 | import { INodeFinder, JsonPatch } from '../graph/dom';
|
6 | import { INodeSelector, NodeInstance } from '../graph/nodes';
|
7 | import { ITraceData } from '../types';
|
8 | export interface ISchedulerStateSnapshot {
|
9 | running: Array<{
|
10 | id: string;
|
11 | op: GraphTaskOp;
|
12 | type?: NodeInstance['type'];
|
13 | spec?: string;
|
14 | path?: NodeInstance['path'];
|
15 | language?: string;
|
16 | }>;
|
17 | tasks: GraphTask[];
|
18 | queued: string[];
|
19 | }
|
20 | export interface IScheduler {
|
21 | queue: (task: GraphTask) => Promise<void>;
|
22 | queueAll: (tasks: GraphTask[]) => Array<Promise<void>>;
|
23 | queueLength: () => number;
|
24 | run: (task: GraphTask) => Promise<void>;
|
25 | registerHandler: <T extends GraphTask = GraphTask, N extends NodeInstance = NodeInstance>(op: T['op'], handler: ITaskHandler<T, N>) => IDisposable;
|
26 | drain: () => Promise<any>;
|
27 | snapshot: () => ISchedulerStateSnapshot;
|
28 | isBusy: boolean;
|
29 | mightBeStuck: boolean;
|
30 | queuedCount: number;
|
31 | }
|
32 | export declare enum GraphTaskOp {
|
33 | ReadSourceNode = 1,
|
34 | WriteSourceNode = 2,
|
35 | DeleteSourceNode = 3,
|
36 | MoveSourceNode = 4,
|
37 | SerializeSourceNode = 5,
|
38 | DeserializeSourceNode = 6,
|
39 | DiffRawToParsed = 7,
|
40 | ComputeSourceMap = 8,
|
41 | ResolveSourceNode = 9,
|
42 | ValidateSourceNode = 10,
|
43 | TransformParsed = 11
|
44 | }
|
45 | export declare type GraphTask = IReadSourceNode | IWriteSourceNode | IDeleteSourceNode | IMoveSourceNode | IDeserializeSourceNode | ISerializeSourceNode | IComputeSourceMap | ITransformedParsedData | IResolveSourceNode | IDiagnoseSourceNode;
|
46 | export declare type GraphTaskResult<T extends GraphTask = GraphTask> = T[] | void;
|
47 | export declare type TaskRunFunc<T extends GraphTask = GraphTask, N extends NodeInstance = NodeInstance> = (node: N, api: ITaskHandlerApi<T>) => Promise<GraphTaskResult<T>> | GraphTaskResult<T>;
|
48 | export interface ITaskHandler<T extends GraphTask = GraphTask, N extends NodeInstance = NodeInstance> extends INodeSelector<N> {
|
49 | id: string;
|
50 | selector(node: SelectableNode): node is N;
|
51 | run: TaskRunFunc<T, N>;
|
52 | }
|
53 | export interface ITaskHandlerApi<T extends GraphTask = GraphTask> extends Omit<IPatchableGraph, 'setSourceNodeDiagnostics'>, INodeFinder {
|
54 | task: T;
|
55 | runTask: (task: T) => Promise<void>;
|
56 | queueTask: (task: T) => Promise<void>;
|
57 | setSourceNodeDiagnostics(id: string, source: string, diagnostics: IDiagnostic[], trace?: ITraceData): void;
|
58 | resolver: Resolver;
|
59 | }
|
60 | export interface ITaskBase {
|
61 | op: GraphTaskOp;
|
62 | nodeId: string;
|
63 | trace?: ITraceData;
|
64 | }
|
65 | export interface IReadSourceNode extends ITaskBase {
|
66 | op: GraphTaskOp.ReadSourceNode;
|
67 | }
|
68 | export interface IWriteSourceNode extends ITaskBase {
|
69 | op: GraphTaskOp.WriteSourceNode;
|
70 | }
|
71 | export interface IDeleteSourceNode extends ITaskBase {
|
72 | op: GraphTaskOp.DeleteSourceNode;
|
73 | }
|
74 | export interface IMoveSourceNode extends ITaskBase {
|
75 | op: GraphTaskOp.MoveSourceNode;
|
76 | newPath?: string;
|
77 | newParentId?: string | null;
|
78 | }
|
79 | export interface ISerializeSourceNode extends ITaskBase {
|
80 | op: GraphTaskOp.SerializeSourceNode;
|
81 | }
|
82 | export interface IDeserializeSourceNode extends ITaskBase {
|
83 | op: GraphTaskOp.DeserializeSourceNode;
|
84 | recomputeOnly?: boolean;
|
85 | }
|
86 | export interface ITransformedParsedData extends ITaskBase {
|
87 | op: GraphTaskOp.TransformParsed;
|
88 | oldValue?: any;
|
89 | }
|
90 | export interface IComputeSourceMap extends ITaskBase {
|
91 | op: GraphTaskOp.ComputeSourceMap;
|
92 | patch?: JsonPatch;
|
93 | }
|
94 | export interface IResolveSourceNode extends ITaskBase {
|
95 | op: GraphTaskOp.ResolveSourceNode;
|
96 | tabu?: string[];
|
97 | }
|
98 | export interface IDiagnoseSourceNode extends ITaskBase {
|
99 | op: GraphTaskOp.ValidateSourceNode;
|
100 | }
|