-
Notifications
You must be signed in to change notification settings - Fork 0
/
runtimeInterfaces.ts
306 lines (257 loc) · 11.7 KB
/
runtimeInterfaces.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
import type { Cache as ICache, IterableCache as IIterableCache } from "./cache";
import type { Evaluatable as IEvaluatable } from "./evaluatable";
import type { DependencyNode as IDependencyNode } from "./dependencyNode";
import type { GeometryObject as IGeometryObject } from "./geometryObject";
import type { Plane as IPlane } from "./plane";
import type { Procedure as IProcedure } from "./procedure";
import type { Transformer as ITransformer } from "./transformer";
import type { Value as IValue, SettableValue as ISettableValue } from "./value";
import type { Point as IPoint, SettablePoint as ISettablePoint } from "./point";
import type { Vector as IVector, SettableVector as ISettableVector, BareReadonlyVector as IBareReadonlyVector, BareVector as IBareVector } from "./vector";
import type { Interval as IInterval, IntervalWithSettableEndpoints as IIntervalWithSettableEndpoints, IntervalWithSettableEndpointsInclusion as IIntervalWithSettableEndpointsInclusion, IntervalWithSettableEndpointsValue as IIntervalWithSettableEndpointsValue } from "./interval";
import type { SingleParametricCurve as ISingleParametricCurve } from "./parametricCurve";
import type { Line as ILine, LineWithSettableEquation as ILineWithSettableEquation, LineWithSettableXAxisAngle as ILineWithSettableXAxisAngle } from "./line";
import type { Union as IUnion } from "./union";
import type { EnumObject as IEnumObject } from "./enum";
import type { NonVirtualObject as INonVirtualObject, VirtualObject as IVirtualObject, ObjectWithType as IObjectWithType, NullObject as INullObject } from "./objectWithType";
import type * as Synthetic from "./synthetic";
/**
* Represents the {@link IObjectWithType | ObjectWithType} interface at runtime.
*/
export const ObjectWithType = ["ObjectWithType"] as const;
/**
* Represents the {@link INonVirtualObject | NonVirtualObject} interface at runtime.
*/
export const NonVirtualObject = ["NonVirtualObject", ...ObjectWithType] as const;
/**
* Represents the {@link IVirtualObject | VirtualObject} interface at runtime.
*/
export const VirtualObject = ["VirtualObject", ...ObjectWithType] as const;
/**
* Represents the {@link ICache | Cache} interface at runtime.
*/
export const Cache = ["Cache"] as const;
/**
* Represents the {@link IIterableCache | IterableCache} interface at runtime.
*/
export const IterableCache = ["IterableCache", ...Cache] as const;
/**
* Represents the {@link IEvaluatable | Evaluatable} interface at runtime.
*/
export const Evaluatable = ["Evaluatable"] as const;
/**
* Represents the {@link IDependencyNode | DependencyNode} interface at runtime.
*/
export const DependencyNode = ["DependencyNode"] as const;
/**
* Represents the {@link IGeometryObject | GeometryObject} interface at runtime.
*/
export const GeometryObject = ["GeometryObject", ...ObjectWithType] as const;
/**
* Represents the {@link IPlane | Plane} interface at runtime.
*/
export const Plane = ["Plane", ...GeometryObject, ...DependencyNode, ...IterableCache] as const;
/**
* Represents the {@link IProcedure | Procedure} interface at runtime.
*/
export const Procedure = ["Procedure"] as const;
/**
* Represents the {@link ITransformer | Transformer} interface at runtime.
*/
export const Transformer = ["Transformer"] as const;
/**
* Represents the {@link IValue | Value} interface at runtime.
*/
export const Value = ["Value"] as const;
/**
* Represents the {@link ISettableValue | SettableValue} interface at runtime.
*/
export const SettableValue = ["SettableValue", ...Value, ...VirtualObject] as const;
/**
* Represents the {@link IPoint | Point} interface at runtime.
*/
export const Point = ["Point", ...NonVirtualObject] as const;
/**
* Represents the {@link IVector | Vector} interface at runtime.
*/
export const Vector = ["Vector", ...VirtualObject] as const;
/**
* Represents the {@link ISettableVector | SettableVector} interface at runtime.
*/
export const SettableVector = ["SettableVector", ...Vector] as const;
/**
* Represents the {@link IBareReadonlyVector | BareReadonlyVector} interface at runtime.
*/
export const BareReadonlyVector = ["BareReadonlyVector"] as const;
/**
* Represents the {@link IBareVector | BareVector} interface at runtime.
*/
export const BareVector = ["BareVector"] as const;
/**
* Represents the {@link IInterval | Interval} interface at runtime.
*/
export const Interval = ["Interval", ...VirtualObject] as const;
/**
* Represents the {@link ISingleParametricCurve | SingleParametricCurve} interface at runtime.
*/
export const SingleParametricCurve = ["SingleParametricCurve", ...Evaluatable] as const;
/**
* Represents the {@link ILine | Line} interface at runtime.
*/
export const Line = ["Line", ...SingleParametricCurve, ...Evaluatable, ...NonVirtualObject] as const;
/**
* Represents the {@link IIntervalWithSettableEndpoints | IntervalWithSettableEndpoints} interface at runtime.
*/
export const IntervalWithSettableEndpointsInclusion = ["IntervalWithSettableEndpointsInclusion", ...Interval] as const;
/**
* Represents the {@link IIntervalWithSettableEndpointsInclusion | IntervalWithSettableEndpointsInclusion} interface at runtime.
*/
export const IntervalWithSettableEndpoints = ["IntervalWithSettableEndpoints", ...Interval] as const;
/**
* Represents the {@link IIntervalWithSettableEndpointsValue | IntervalWithSettableEndpointsValue} interface at runtime.
*/
export const IntervalWithSettableEndpointsValue = ["IntervalWithSettableEndpointsValue", ...Interval] as const;
/**
* Represents the {@link ISettablePoint | SettablePoint} interface at runtime.
*/
export const SettablePoint = ["SettablePoint", ...Point] as const;
/**
* Represents the {@link ILineWithSettableEquation | LineWithSettableEquation} interface at runtime.
*/
export const LineWithSettableEquation = ["LineWithSettableEquation", ...Line] as const;
/**
* Represents the {@link ILineWithSettableXAxisAngle | LineWithSettableXAxisAngle} interface at runtime.
*/
export const LineWithSettableXAxisAngle = ["LineWithSettableXAxisAngle", ...Line] as const;
/**
* Represents the {@link IUnion | Union} interface at runtime.
*/
export const Union = ["Union", ...NonVirtualObject] as const;
/**
* Represents the {@link IEnumObject | EnumObject} interface at runtime.
*/
export const EnumObject = ["EnumObject", ...DependencyNode, ...GeometryObject] as const;
/**
* Represents the {@link INullObject | NullObject} interface at runtime.
*/
export const NullObject = ["NullObject", ...ObjectWithType] as const;
/**
* General type for all constants, that represent interfaces at runtime.
*/
export type Interface = Readonly<
| (typeof Cache)[number]
| (typeof IterableCache)[number]
| (typeof Evaluatable)[number]
| (typeof DependencyNode)[number]
| (typeof GeometryObject)[number]
| (typeof Plane)[number]
| (typeof Procedure)[number]
| (typeof Transformer)[number]
| (typeof Value)[number]
| (typeof SettableValue)[number]
| (typeof Point)[number]
| (typeof Vector)[number]
| (typeof SettableVector)[number]
| (typeof BareReadonlyVector)[number]
| (typeof BareVector)[number]
| (typeof Interval)[number]
| (typeof SingleParametricCurve)[number]
| (typeof Line)[number]
| (typeof IntervalWithSettableEndpoints)[number]
| (typeof IntervalWithSettableEndpointsInclusion)[number]
| (typeof IntervalWithSettableEndpointsValue)[number]
| (typeof SettablePoint)[number]
| (typeof LineWithSettableEquation)[number]
| (typeof LineWithSettableXAxisAngle)[number]
| (typeof Union)[number]
| (typeof EnumObject)[number]
| (typeof ObjectWithType)[number]
| (typeof NonVirtualObject)[number]
| (typeof VirtualObject)[number]
| (typeof NullObject)[number]
>;
// Synthetic interfaces
/**
* Represents the synthetic {@link Synthetic.ValueObject | ValueObject} interface at runtime.
*
* @group Synthetic
*/
export const ValueObject = [...Value, ...DependencyNode, ...GeometryObject] as const;
/**
* Represents the synthetic {@link Synthetic.SettableValueObject | SettableValueObject} interface at runtime.
*
* @group Synthetic
*/
export const SettableValueObject = [...SettableValue, ...DependencyNode, ...GeometryObject] as const;
/**
* Represents the synthetic {@link Synthetic.PointObject | PointObject} interface at runtime.
*
* @group Synthetic
*/
export const PointObject = [...Point, ...DependencyNode, ...GeometryObject] as const;
/**
* Represents the synthetic {@link Synthetic.DependencyNodeObject | DependencyNodeObject} interface at runtime.
*/
export const DependencyNodeObject = [...DependencyNode, ...GeometryObject] as const;
/**
* Represents the synthetic {@link Synthetic.VectorObject | VectorObject} interface at runtime.
*
* @group Synthetic
*/
export const VectorObject = [...Vector, ...DependencyNode, ...GeometryObject] as const;
/**
* Represents the synthetic {@link Synthetic.SettableVectorObject | SettableVectorObject} interface at runtime.
*
* @group Synthetic
*/
export const SettableVectorObject = [...SettableVector, ...DependencyNode, ...GeometryObject] as const;
/**
* Represents the synthetic {@link Synthetic.IntervalObject | IntervalObject} interface at runtime.
*
* @group Synthetic
*/
export const IntervalObject = [...Interval, ...DependencyNode, ...GeometryObject, ...Evaluatable] as const;
/**
* Represents the synthetic {@link Synthetic.SingleParametricCurveObject | SingleParametricCurveObject} interface at runtime.
*
* @group Synthetic
*/
export const SingleParametricCurveObject = [...SingleParametricCurve, ...DependencyNode, ...GeometryObject] as const;
/**
* Represents the synthetic {@link Synthetic.LineObject | LineObject} interface at runtime.
*
* @group Synthetic
*/
export const LineObject = [...Line, ...DependencyNode, ...GeometryObject] as const;
/**
* Represents the synthetic {@link Synthetic.IntervalWithSettableEndpointsObject | IntervalWithSettableEndpointsObject} interface at runtime.
*/
export const IntervalWithSettableEndpointsObject = [...Evaluatable, ...IntervalWithSettableEndpoints, ...DependencyNode, ...GeometryObject] as const;
/**
* Represents the synthetic {@link Synthetic.IntervalWithSettableEndpointsInclusionObject | IntervalWithSettableEndpointsInclusionObject} interface at runtime.
*/
export const IntervalWithSettableEndpointsInclusionObject = [...IntervalWithSettableEndpointsInclusion, ...DependencyNode, ...GeometryObject] as const;
/**
* Represents the synthetic {@link Synthetic.IntervalWithSettableEndpointsValueObject | IntervalWithSettableEndpointsValueObject} interface at runtime.
*/
export const IntervalWithSettableEndpointsValueObject = [...IntervalWithSettableEndpointsValue, ...DependencyNode, ...GeometryObject] as const;
/**
* Represents the synthetic {@link Synthetic.SettablePointObject | SettablePointObject} interface at runtime.
*/
export const SettablePointObject = [...SettablePoint, ...PointObject] as const;
/**
* Represents the synthetic {@link Synthetic.LineWithSettableEquationObject | LineWithSettableEquationObject} interface at runtime.
*/
export const LineWithSettableEquationObject = [...LineWithSettableEquation, ...LineObject] as const;
/**
* Represents the synthetic {@link Synthetic.LineWithSettableXAxisAngleObject | LineWithSettableXAxisAngleObject} interface at runtime.
*/
export const LineWithSettableXAxisAngleObject = [...LineWithSettableXAxisAngle, ...LineObject] as const;
/**
* Represents the synthetic {@link Synthetic.UnionObject | UnionObject} interface at runtime.
*/
export const UnionObject = [...Union, ...DependencyNode, ...GeometryObject] as const;
/**
* Represents the synthetic {@link Synthetic.NullObjectDependencyNode | NullObjectDependencyNode} interface at runtime.
*/
export const NullObjectDependencyNode = [...NullObject, ...DependencyNode, ...GeometryObject] as const;