UNPKG

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