@graphite-sports/sdk 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.d.ts +1350 -376
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ButtonHTMLAttributes } from 'react';
|
|
1
2
|
import { ChangeEventHandler } from 'react';
|
|
2
3
|
import { ColumnDef } from '@tanstack/react-table';
|
|
3
4
|
import { ColumnHelper } from '@tanstack/table-core';
|
|
@@ -56,7 +57,7 @@ declare type AddGameEdit_2 = {
|
|
|
56
57
|
game: Extract<GameKind, {
|
|
57
58
|
type: 'game-node';
|
|
58
59
|
}> & {
|
|
59
|
-
|
|
60
|
+
kind: {
|
|
60
61
|
type: 'parallel';
|
|
61
62
|
};
|
|
62
63
|
};
|
|
@@ -64,20 +65,13 @@ declare type AddGameEdit_2 = {
|
|
|
64
65
|
division: GameDivision;
|
|
65
66
|
});
|
|
66
67
|
|
|
67
|
-
/**
|
|
68
|
-
* <#0 extends {}, #1>(#0, #1) -> (#0 & {<self.key>: #1})
|
|
69
|
-
*/
|
|
70
|
-
declare interface AddRecordFieldsNode {
|
|
71
|
-
fields: string[];
|
|
72
|
-
}
|
|
73
|
-
|
|
74
68
|
declare type AgeGroupClasses = Record<'female' | 'male', ClassId>;
|
|
75
69
|
|
|
76
70
|
export declare type AnyQuerySchema = QuerySchema<QueryFields>;
|
|
77
71
|
|
|
78
|
-
export declare function AppButton({ type, onClick, disabled: disabledProp, mutates, children, submit, className, loading, value, ref, href, autoFocus, }: AppButtonProps): JSX.Element;
|
|
72
|
+
export declare function AppButton({ type, onClick, disabled: disabledProp, mutates, children, submit, className, loading, value, ref, href, autoFocus, ...aria }: AppButtonProps): JSX.Element;
|
|
79
73
|
|
|
80
|
-
export declare type AppButtonProps = {
|
|
74
|
+
export declare type AppButtonProps = Pick<ButtonHTMLAttributes<HTMLButtonElement>, 'aria-label' | 'aria-haspopup' | 'aria-expanded' | 'aria-required'> & {
|
|
81
75
|
type?: AppButtonType;
|
|
82
76
|
onClick?: () => void;
|
|
83
77
|
disabled?: boolean;
|
|
@@ -157,7 +151,7 @@ export declare type AppInputProps = {
|
|
|
157
151
|
autoFocus?: boolean;
|
|
158
152
|
};
|
|
159
153
|
|
|
160
|
-
export declare function AppListbox<TVal>({ options, value, onChange, label, description, disabled, placeholder, className, direction, readonly: readonlyProp, required, }: AppListboxProps<TVal>): JSX.Element;
|
|
154
|
+
export declare function AppListbox<TVal>({ options, value, onChange, label, description, disabled, placeholder, className, direction, readonly: readonlyProp, required, describeOptions, }: AppListboxProps<TVal>): JSX.Element;
|
|
161
155
|
|
|
162
156
|
export declare type AppListboxProps<TVal> = {
|
|
163
157
|
options: Option_2<TVal>[];
|
|
@@ -171,6 +165,8 @@ export declare type AppListboxProps<TVal> = {
|
|
|
171
165
|
direction?: 'up' | 'down';
|
|
172
166
|
readonly?: boolean;
|
|
173
167
|
required?: boolean;
|
|
168
|
+
/** Shows each option's description under it in the list. */
|
|
169
|
+
describeOptions?: boolean;
|
|
174
170
|
};
|
|
175
171
|
|
|
176
172
|
export declare function AppNumberInput<IsRequired extends boolean = false>({ label, description, value, onChange, min, max, integer, placeholder, required, disabled, readonly: readonlyProp, className, layout, onKeyDown, onFocus, onBlur, tabIndex, autoFocus, inputRef, }: AppNumberInputProps<IsRequired>): JSX.Element;
|
|
@@ -197,6 +193,22 @@ export declare type AppNumberInputProps<IsRequired extends boolean = false> = {
|
|
|
197
193
|
inputRef?: React.RefObject<HTMLInputElement | null>;
|
|
198
194
|
};
|
|
199
195
|
|
|
196
|
+
/** Picks one of a few options, all of them visible at once with their descriptions, as a compact vertical list. */
|
|
197
|
+
export declare function AppRadioGroup<TVal>({ label, options, value, onChange, disabled, readonly: readonlyProp, className, checkedMarker, }: AppRadioGroupProps<TVal>): JSX.Element;
|
|
198
|
+
|
|
199
|
+
export declare type AppRadioGroupProps<TVal> = {
|
|
200
|
+
label: React_2.ReactNode;
|
|
201
|
+
/** Each one a radio, with its description below its label. */
|
|
202
|
+
options: Option_2<TVal>[];
|
|
203
|
+
value: TVal;
|
|
204
|
+
onChange: (value: TVal) => void;
|
|
205
|
+
disabled?: boolean;
|
|
206
|
+
readonly?: boolean;
|
|
207
|
+
className?: string;
|
|
208
|
+
/** Shown at the left edge of the checked option, positioned by itself, e.g. a port a line leaves from. */
|
|
209
|
+
checkedMarker?: React_2.ReactNode;
|
|
210
|
+
};
|
|
211
|
+
|
|
200
212
|
export declare function AppSwitch(props: AppSwitchProps): JSX.Element;
|
|
201
213
|
|
|
202
214
|
export declare type AppSwitchProps = {
|
|
@@ -268,6 +280,8 @@ export declare type ArithmeticOperator = "add" | "subtract";
|
|
|
268
280
|
|
|
269
281
|
export declare type ArrayValue<T = Primitive> = Value<T>[];
|
|
270
282
|
|
|
283
|
+
declare type AutomationScriptError = { type: "ParseError"; error: { kind: ParseErrorKind; location: SourceLocation } } | { type: "TypeErrors"; error: TypeErrors };
|
|
284
|
+
|
|
271
285
|
export declare type BIB = Brand<number, 'bib'>;
|
|
272
286
|
|
|
273
287
|
declare type BooleanOp = "and" | "or" | "xor" | "not";
|
|
@@ -286,7 +300,7 @@ export declare type Brand<T, B> = T & {
|
|
|
286
300
|
/** Stable reference — a new inline `select` on every `queryOptions()` call makes React Query re-select each render. */
|
|
287
301
|
export declare function buildCompetitorsMapped(competitors: CompetitorDAO[]): CompetitorsMapped;
|
|
288
302
|
|
|
289
|
-
export declare const buildRoute: <Path extends "*" | "/" | "/workspace/:workspaceId" | "/workspace/:workspaceId/event/:eventId" | "/login" | "/
|
|
303
|
+
export declare const buildRoute: <Path extends "*" | "/" | "/workspace/:workspaceId" | "/workspace/:workspaceId/event/:eventId" | "/login" | "/download" | "/register" | "/preferences" | "/crate-workspace" | "/workspace/:workspaceId/create-event" | "/workspace/:workspaceId/create-event/empty" | "/workspace/:workspaceId/create-event/template" | "/workspace/:workspaceId/create-event/assistant" | "/workspace/:workspaceId/event/:eventId/assistant" | "/workspace/:workspaceId/event/:eventId/create-class" | "/workspace/:workspaceId/event/:eventId/class/:classId" | "/workspace/:workspaceId/event/:eventId/create-competitor" | "/workspace/:workspaceId/event/:eventId/create-team" | "/workspace/:workspaceId/event/:eventId/competitor/:competitorId" | "/workspace/:workspaceId/event/:eventId/create-format" | "/workspace/:workspaceId/event/:eventId/format/:formatId" | "/workspace/:workspaceId/event/:eventId/format/:formatId/tests" | "/workspace/:workspaceId/event/:eventId/format/:formatId/tests/:formatTestId" | "/workspace/:workspaceId/event/:eventId/graph" | "/workspace/:workspaceId/event/:eventId/flow" | "/workspace/:workspaceId/event/:eventId/simplified" | "/workspace/:workspaceId/event/:eventId/lineage" | "/workspace/:workspaceId/event/:eventId/create-game" | "/workspace/:workspaceId/event/:eventId/game/:gameId" | "/workspace/:workspaceId/event/:eventId/create-table" | "/workspace/:workspaceId/event/:eventId/table/:tableId" | "/workspace/:workspaceId/event/:eventId/create-game-format" | "/workspace/:workspaceId/event/:eventId/game-format/:gameFormatId" | "/workspace/:workspaceId/event/:eventId/create-scoring-definition" | "/workspace/:workspaceId/event/:eventId/scoring-definition/:scoringDefinitionId" | "/workspace/:workspaceId/event/:eventId/create-template" | "/workspace/:workspaceId/event/:eventId/template/:templateId" | "/workspace/:workspaceId/event/:eventId/extension/$extensionIdentifier">(path: Path, params: PathParams<Path>, ...query: {
|
|
290
304
|
'/': undefined;
|
|
291
305
|
'/download': undefined;
|
|
292
306
|
'/login': QuerySchema< {
|
|
@@ -299,17 +313,22 @@ export declare const buildRoute: <Path extends "*" | "/" | "/workspace/:workspac
|
|
|
299
313
|
'/crate-workspace': undefined;
|
|
300
314
|
'/workspace/:workspaceId': undefined;
|
|
301
315
|
'/workspace/:workspaceId/create-event': undefined;
|
|
316
|
+
'/workspace/:workspaceId/create-event/empty': undefined;
|
|
317
|
+
'/workspace/:workspaceId/create-event/template': undefined;
|
|
318
|
+
'/workspace/:workspaceId/create-event/assistant': undefined;
|
|
302
319
|
'/workspace/:workspaceId/event/:eventId': undefined;
|
|
303
|
-
'/workspace/:workspaceId/event/:eventId/
|
|
304
|
-
'/workspace/:workspaceId/event/:eventId/create-class':
|
|
320
|
+
'/workspace/:workspaceId/event/:eventId/assistant': undefined;
|
|
321
|
+
'/workspace/:workspaceId/event/:eventId/create-class': QuerySchema< {
|
|
322
|
+
readonly from: OptionalQueryField<ClassId>;
|
|
323
|
+
}>;
|
|
305
324
|
'/workspace/:workspaceId/event/:eventId/class/:classId': undefined;
|
|
306
325
|
'/workspace/:workspaceId/event/:eventId/create-competitor': undefined;
|
|
307
326
|
'/workspace/:workspaceId/event/:eventId/create-team': undefined;
|
|
308
327
|
'/workspace/:workspaceId/event/:eventId/competitor/:competitorId': undefined;
|
|
309
328
|
'/workspace/:workspaceId/event/:eventId/create-format': QuerySchema< {
|
|
310
329
|
readonly name: OptionalQueryField<string>;
|
|
311
|
-
readonly template: OptionalQueryField<FormatId>;
|
|
312
330
|
readonly place: OptionalQueryField<GamePlace>;
|
|
331
|
+
readonly from: OptionalQueryField<FormatId>;
|
|
313
332
|
readonly focusNode: RepeatedQueryField<FormatNodeId>;
|
|
314
333
|
readonly formatInstance: OptionalQueryField<FormatInstanceHash>;
|
|
315
334
|
}>;
|
|
@@ -317,17 +336,23 @@ export declare const buildRoute: <Path extends "*" | "/" | "/workspace/:workspac
|
|
|
317
336
|
readonly focusNode: RepeatedQueryField<FormatNodeId>;
|
|
318
337
|
readonly formatInstance: OptionalQueryField<FormatInstanceHash>;
|
|
319
338
|
}>;
|
|
320
|
-
'/workspace/:workspaceId/event/:eventId/format/:formatId/tests':
|
|
339
|
+
'/workspace/:workspaceId/event/:eventId/format/:formatId/tests': QuerySchema< {
|
|
340
|
+
readonly from: OptionalQueryField<FormatTestId>;
|
|
341
|
+
}>;
|
|
321
342
|
'/workspace/:workspaceId/event/:eventId/format/:formatId/tests/:formatTestId': undefined;
|
|
322
343
|
'/workspace/:workspaceId/event/:eventId/graph': QuerySchema< {
|
|
323
344
|
readonly focusNode: RepeatedQueryField<FormatNodeId>;
|
|
345
|
+
/** The root format shown, else the one with the focused nodes or the first. */
|
|
346
|
+
readonly format: OptionalQueryField<FormatId>;
|
|
324
347
|
}>;
|
|
325
|
-
'/workspace/:workspaceId/event/:eventId/
|
|
348
|
+
'/workspace/:workspaceId/event/:eventId/flow': QuerySchema< {
|
|
349
|
+
readonly focusNode: RepeatedQueryField<FormatNodeId>;
|
|
326
350
|
/** Applied once, e.g. for a format just created to be used as a game. */
|
|
327
351
|
readonly addGame: OptionalQueryField<AddGameEdit>;
|
|
328
|
-
readonly
|
|
329
|
-
readonly formatInstance: OptionalQueryField<FormatInstanceHash>;
|
|
352
|
+
readonly sidebar: OptionalQueryField<string>;
|
|
330
353
|
}>;
|
|
354
|
+
/** The flow's old path, which redirects there. */
|
|
355
|
+
'/workspace/:workspaceId/event/:eventId/simplified': undefined;
|
|
331
356
|
'/workspace/:workspaceId/event/:eventId/lineage': QuerySchema< {
|
|
332
357
|
readonly game: OptionalQueryField<GameId>;
|
|
333
358
|
readonly table: OptionalQueryField<TableId>;
|
|
@@ -338,12 +363,25 @@ export declare const buildRoute: <Path extends "*" | "/" | "/workspace/:workspac
|
|
|
338
363
|
/** Narrows `node` down to its instances in these format instances. */
|
|
339
364
|
readonly formatInstance: RepeatedQueryField<FormatInstanceHash>;
|
|
340
365
|
}>;
|
|
341
|
-
'/workspace/:workspaceId/event/:eventId/create-game':
|
|
366
|
+
'/workspace/:workspaceId/event/:eventId/create-game': QuerySchema< {
|
|
367
|
+
readonly from: OptionalQueryField<GameId>;
|
|
368
|
+
}>;
|
|
342
369
|
'/workspace/:workspaceId/event/:eventId/game/:gameId': undefined;
|
|
343
370
|
'/workspace/:workspaceId/event/:eventId/create-table': undefined;
|
|
344
371
|
'/workspace/:workspaceId/event/:eventId/table/:tableId': undefined;
|
|
345
|
-
'/workspace/:workspaceId/event/:eventId/create-game-format':
|
|
346
|
-
|
|
372
|
+
'/workspace/:workspaceId/event/:eventId/create-game-format': QuerySchema< {
|
|
373
|
+
readonly from: OptionalQueryField<GameFormatId>;
|
|
374
|
+
}>;
|
|
375
|
+
'/workspace/:workspaceId/event/:eventId/game-format/:gameFormatId': QuerySchema< {
|
|
376
|
+
/** The tab of the modes shown: a kind of game or a mode of the game format, see `GameModeTabs`. */
|
|
377
|
+
readonly mode: OptionalQueryField<string>;
|
|
378
|
+
/** `modes` scrolls the modes into view once, for links to a mode. */
|
|
379
|
+
readonly reveal: OptionalQueryField<string>;
|
|
380
|
+
}>;
|
|
381
|
+
'/workspace/:workspaceId/event/:eventId/create-scoring-definition': QuerySchema< {
|
|
382
|
+
readonly from: OptionalQueryField<ScoringDefinitionId>;
|
|
383
|
+
}>;
|
|
384
|
+
'/workspace/:workspaceId/event/:eventId/scoring-definition/:scoringDefinitionId': undefined;
|
|
347
385
|
'/workspace/:workspaceId/event/:eventId/create-template': undefined;
|
|
348
386
|
'/workspace/:workspaceId/event/:eventId/template/:templateId': undefined;
|
|
349
387
|
'/workspace/:workspaceId/event/:eventId/extension/$extensionIdentifier': undefined;
|
|
@@ -361,17 +399,22 @@ export declare const buildRoute: <Path extends "*" | "/" | "/workspace/:workspac
|
|
|
361
399
|
'/crate-workspace': undefined;
|
|
362
400
|
'/workspace/:workspaceId': undefined;
|
|
363
401
|
'/workspace/:workspaceId/create-event': undefined;
|
|
402
|
+
'/workspace/:workspaceId/create-event/empty': undefined;
|
|
403
|
+
'/workspace/:workspaceId/create-event/template': undefined;
|
|
404
|
+
'/workspace/:workspaceId/create-event/assistant': undefined;
|
|
364
405
|
'/workspace/:workspaceId/event/:eventId': undefined;
|
|
365
|
-
'/workspace/:workspaceId/event/:eventId/
|
|
366
|
-
'/workspace/:workspaceId/event/:eventId/create-class':
|
|
406
|
+
'/workspace/:workspaceId/event/:eventId/assistant': undefined;
|
|
407
|
+
'/workspace/:workspaceId/event/:eventId/create-class': QuerySchema< {
|
|
408
|
+
readonly from: OptionalQueryField<ClassId>;
|
|
409
|
+
}>;
|
|
367
410
|
'/workspace/:workspaceId/event/:eventId/class/:classId': undefined;
|
|
368
411
|
'/workspace/:workspaceId/event/:eventId/create-competitor': undefined;
|
|
369
412
|
'/workspace/:workspaceId/event/:eventId/create-team': undefined;
|
|
370
413
|
'/workspace/:workspaceId/event/:eventId/competitor/:competitorId': undefined;
|
|
371
414
|
'/workspace/:workspaceId/event/:eventId/create-format': QuerySchema< {
|
|
372
415
|
readonly name: OptionalQueryField<string>;
|
|
373
|
-
readonly template: OptionalQueryField<FormatId>;
|
|
374
416
|
readonly place: OptionalQueryField<GamePlace>;
|
|
417
|
+
readonly from: OptionalQueryField<FormatId>;
|
|
375
418
|
readonly focusNode: RepeatedQueryField<FormatNodeId>;
|
|
376
419
|
readonly formatInstance: OptionalQueryField<FormatInstanceHash>;
|
|
377
420
|
}>;
|
|
@@ -379,17 +422,23 @@ export declare const buildRoute: <Path extends "*" | "/" | "/workspace/:workspac
|
|
|
379
422
|
readonly focusNode: RepeatedQueryField<FormatNodeId>;
|
|
380
423
|
readonly formatInstance: OptionalQueryField<FormatInstanceHash>;
|
|
381
424
|
}>;
|
|
382
|
-
'/workspace/:workspaceId/event/:eventId/format/:formatId/tests':
|
|
425
|
+
'/workspace/:workspaceId/event/:eventId/format/:formatId/tests': QuerySchema< {
|
|
426
|
+
readonly from: OptionalQueryField<FormatTestId>;
|
|
427
|
+
}>;
|
|
383
428
|
'/workspace/:workspaceId/event/:eventId/format/:formatId/tests/:formatTestId': undefined;
|
|
384
429
|
'/workspace/:workspaceId/event/:eventId/graph': QuerySchema< {
|
|
385
430
|
readonly focusNode: RepeatedQueryField<FormatNodeId>;
|
|
431
|
+
/** The root format shown, else the one with the focused nodes or the first. */
|
|
432
|
+
readonly format: OptionalQueryField<FormatId>;
|
|
386
433
|
}>;
|
|
387
|
-
'/workspace/:workspaceId/event/:eventId/
|
|
434
|
+
'/workspace/:workspaceId/event/:eventId/flow': QuerySchema< {
|
|
435
|
+
readonly focusNode: RepeatedQueryField<FormatNodeId>;
|
|
388
436
|
/** Applied once, e.g. for a format just created to be used as a game. */
|
|
389
437
|
readonly addGame: OptionalQueryField<AddGameEdit>;
|
|
390
|
-
readonly
|
|
391
|
-
readonly formatInstance: OptionalQueryField<FormatInstanceHash>;
|
|
438
|
+
readonly sidebar: OptionalQueryField<string>;
|
|
392
439
|
}>;
|
|
440
|
+
/** The flow's old path, which redirects there. */
|
|
441
|
+
'/workspace/:workspaceId/event/:eventId/simplified': undefined;
|
|
393
442
|
'/workspace/:workspaceId/event/:eventId/lineage': QuerySchema< {
|
|
394
443
|
readonly game: OptionalQueryField<GameId>;
|
|
395
444
|
readonly table: OptionalQueryField<TableId>;
|
|
@@ -400,34 +449,41 @@ export declare const buildRoute: <Path extends "*" | "/" | "/workspace/:workspac
|
|
|
400
449
|
/** Narrows `node` down to its instances in these format instances. */
|
|
401
450
|
readonly formatInstance: RepeatedQueryField<FormatInstanceHash>;
|
|
402
451
|
}>;
|
|
403
|
-
'/workspace/:workspaceId/event/:eventId/create-game':
|
|
452
|
+
'/workspace/:workspaceId/event/:eventId/create-game': QuerySchema< {
|
|
453
|
+
readonly from: OptionalQueryField<GameId>;
|
|
454
|
+
}>;
|
|
404
455
|
'/workspace/:workspaceId/event/:eventId/game/:gameId': undefined;
|
|
405
456
|
'/workspace/:workspaceId/event/:eventId/create-table': undefined;
|
|
406
457
|
'/workspace/:workspaceId/event/:eventId/table/:tableId': undefined;
|
|
407
|
-
'/workspace/:workspaceId/event/:eventId/create-game-format':
|
|
408
|
-
|
|
458
|
+
'/workspace/:workspaceId/event/:eventId/create-game-format': QuerySchema< {
|
|
459
|
+
readonly from: OptionalQueryField<GameFormatId>;
|
|
460
|
+
}>;
|
|
461
|
+
'/workspace/:workspaceId/event/:eventId/game-format/:gameFormatId': QuerySchema< {
|
|
462
|
+
/** The tab of the modes shown: a kind of game or a mode of the game format, see `GameModeTabs`. */
|
|
463
|
+
readonly mode: OptionalQueryField<string>;
|
|
464
|
+
/** `modes` scrolls the modes into view once, for links to a mode. */
|
|
465
|
+
readonly reveal: OptionalQueryField<string>;
|
|
466
|
+
}>;
|
|
467
|
+
'/workspace/:workspaceId/event/:eventId/create-scoring-definition': QuerySchema< {
|
|
468
|
+
readonly from: OptionalQueryField<ScoringDefinitionId>;
|
|
469
|
+
}>;
|
|
470
|
+
'/workspace/:workspaceId/event/:eventId/scoring-definition/:scoringDefinitionId': undefined;
|
|
409
471
|
'/workspace/:workspaceId/event/:eventId/create-template': undefined;
|
|
410
472
|
'/workspace/:workspaceId/event/:eventId/template/:templateId': undefined;
|
|
411
473
|
'/workspace/:workspaceId/event/:eventId/extension/$extensionIdentifier': undefined;
|
|
412
474
|
'*': undefined;
|
|
413
475
|
}[Path] ? T extends AnyQuerySchema ? [query?: QueryInput<T> | undefined] : [] : never : never) => string;
|
|
414
476
|
|
|
415
|
-
/**
|
|
416
|
-
declare
|
|
477
|
+
/** A tutorial of the engine. */
|
|
478
|
+
export declare interface BuiltInTutorial {
|
|
479
|
+
scope?: 'built-in';
|
|
480
|
+
id: TutorialId;
|
|
481
|
+
}
|
|
417
482
|
|
|
418
483
|
declare type ChildrenSpec = { type: "disallowed" } | { type: "allowed" } | { type: "closure"; signature: NodeSignature<Type> };
|
|
419
484
|
|
|
420
485
|
export declare type ClassDAO = components['schemas']['ClassDAO'];
|
|
421
486
|
|
|
422
|
-
/**
|
|
423
|
-
* Outputs the competitors of classes as a table.
|
|
424
|
-
*
|
|
425
|
-
* ```text
|
|
426
|
-
* multiple: ('roundrobin' | 'serpentine' | 'concat', ...Class) -> (Table<{}, Sorted>)
|
|
427
|
-
* ```
|
|
428
|
-
*/
|
|
429
|
-
declare type ClassesCompetitorsNode = null;
|
|
430
|
-
|
|
431
487
|
/**
|
|
432
488
|
* Identifies a class. Random ([Self::new_random]) from the endpoint, or derived by `ImportArchiveMutation`.
|
|
433
489
|
* Deserializing one only yields a reference to an existing class; it does not check that it exists.
|
|
@@ -436,6 +492,20 @@ export declare type ClassId = string & { readonly __brand: 'classId' };
|
|
|
436
492
|
|
|
437
493
|
export declare type ClassResponse = components['schemas']['ClassResponse'];
|
|
438
494
|
|
|
495
|
+
/**
|
|
496
|
+
* The signature of a script closure: no variadic ports, exactly one output and an input name per input. The names
|
|
497
|
+
* are distinct variable names.
|
|
498
|
+
*/
|
|
499
|
+
declare interface ClosureSignature {
|
|
500
|
+
signature: NodeSignature<Type>;
|
|
501
|
+
inputNames: VariableName[];
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
/**
|
|
505
|
+
* Where a node gets the closure it calls.
|
|
506
|
+
*/
|
|
507
|
+
declare type ClosureSource = "children" | "input" | "deterministic-input";
|
|
508
|
+
|
|
439
509
|
declare type CommonApiKeyId = Brand<number, 'commonApiKeyId'>;
|
|
440
510
|
|
|
441
511
|
export declare type CommonWorkspaceId = WorkspaceRootId | WorkspaceSelfHostedId;
|
|
@@ -555,6 +625,11 @@ declare interface components {
|
|
|
555
625
|
force: boolean;
|
|
556
626
|
/** @description The id of the new format, see [FormatId::new_random]. It must not exist yet. */
|
|
557
627
|
formatId: components["schemas"]["FormatId"];
|
|
628
|
+
/**
|
|
629
|
+
* @description Never changes afterwards.
|
|
630
|
+
* @default normal
|
|
631
|
+
*/
|
|
632
|
+
kind: components["schemas"]["FormatKind"];
|
|
558
633
|
};
|
|
559
634
|
AddFormatTestMutation: {
|
|
560
635
|
/** @default */
|
|
@@ -567,10 +642,19 @@ declare interface components {
|
|
|
567
642
|
};
|
|
568
643
|
AddGameFormatMutation: {
|
|
569
644
|
eventId: components["schemas"]["EventId"];
|
|
645
|
+
/** @description If true, saves the game format although its settings don't validate. Its game nodes are invalid then. */
|
|
646
|
+
force?: boolean;
|
|
570
647
|
gameFormat: components["schemas"]["GameFormatDTO"];
|
|
571
648
|
/** @description The id of the new game format, see [GameFormatId::new_random]. It must not exist yet. */
|
|
572
649
|
gameFormatId: components["schemas"]["GameFormatId"];
|
|
573
650
|
};
|
|
651
|
+
AddGameFormatQuery: {
|
|
652
|
+
/**
|
|
653
|
+
* @description If true, saves the game format although its settings don't validate. Its game nodes are invalid then.
|
|
654
|
+
* @default false
|
|
655
|
+
*/
|
|
656
|
+
force: boolean;
|
|
657
|
+
};
|
|
574
658
|
AddGameMutation: {
|
|
575
659
|
eventId: components["schemas"]["EventId"];
|
|
576
660
|
game: components["schemas"]["GameDTO"];
|
|
@@ -584,8 +668,13 @@ declare interface components {
|
|
|
584
668
|
tableId: components["schemas"]["TableId"];
|
|
585
669
|
variant: components["schemas"]["TableVariant"];
|
|
586
670
|
};
|
|
587
|
-
/** @description
|
|
588
|
-
|
|
671
|
+
/** @description Stores the definition even if it is invalid, with its errors. */
|
|
672
|
+
AddScoringDefinitionMutation: {
|
|
673
|
+
eventId: components["schemas"]["EventId"];
|
|
674
|
+
scoringDefinition: components["schemas"]["ScoringDefinitionDTO"];
|
|
675
|
+
/** @description The id of the new definition, see [ScoringDefinitionId::new_random]. It must not exist yet. */
|
|
676
|
+
scoringDefinitionId: components["schemas"]["ScoringDefinitionId"];
|
|
677
|
+
};
|
|
589
678
|
AddTarget: {
|
|
590
679
|
backendUrl: string;
|
|
591
680
|
/** @description Replicate into this existing remote workspace instead of creating a new one. */
|
|
@@ -643,7 +732,8 @@ declare interface components {
|
|
|
643
732
|
* Format: uuid
|
|
644
733
|
* @description The template the entry belongs to: installing it links the entity to it and reuses the entity of the event
|
|
645
734
|
* installed from it before, see [template_origin](crate::graphite_engine::template_origin). Without one, the entity
|
|
646
|
-
* is installed as a plain editable entity.
|
|
735
|
+
* is installed as a plain editable entity. Never set on [ArchiveData::Group] and root formats, and ignored for them:
|
|
736
|
+
* every import adds root formats anew as editable root formats.
|
|
647
737
|
*/
|
|
648
738
|
templateOrigin?: string | null;
|
|
649
739
|
/**
|
|
@@ -663,10 +753,10 @@ declare interface components {
|
|
|
663
753
|
*/
|
|
664
754
|
invalid: boolean;
|
|
665
755
|
/**
|
|
666
|
-
* @description
|
|
667
|
-
* @default
|
|
756
|
+
* @description The format gets imported with it.
|
|
757
|
+
* @default normal
|
|
668
758
|
*/
|
|
669
|
-
|
|
759
|
+
kind: components["schemas"]["FormatKind"];
|
|
670
760
|
tests: components["schemas"]["FormatTestArchive"][];
|
|
671
761
|
/** @description Maps ids from the format DTO to uuids of [Archive::dependencies] */
|
|
672
762
|
wiring: components["schemas"]["Wiring"];
|
|
@@ -674,7 +764,43 @@ declare interface components {
|
|
|
674
764
|
} | {
|
|
675
765
|
/** @constant */
|
|
676
766
|
type: "game-format";
|
|
677
|
-
|
|
767
|
+
/**
|
|
768
|
+
* @description Describes the shape of a game and how its result is post processed.
|
|
769
|
+
*
|
|
770
|
+
* `GameFormatSettings<Validated>` proves that every automation typechecks against the row type
|
|
771
|
+
* left behind by the automations before it.
|
|
772
|
+
*/
|
|
773
|
+
data: {
|
|
774
|
+
/** @default */
|
|
775
|
+
description: string;
|
|
776
|
+
attributesType: components["schemas"]["RecordTypeWithDefaults"];
|
|
777
|
+
customData?: {
|
|
778
|
+
[key: string]: string;
|
|
779
|
+
};
|
|
780
|
+
/**
|
|
781
|
+
* @description Settings by disqualification kind. May hold kinds no automation disqualifies under. Kinds without an entry have
|
|
782
|
+
* the default settings.
|
|
783
|
+
*/
|
|
784
|
+
disqualifications?: {
|
|
785
|
+
[key: string]: components["schemas"]["DqSettings"];
|
|
786
|
+
};
|
|
787
|
+
entryListColumns: components["schemas"]["RecordTypeWithDefaults"];
|
|
788
|
+
/** @description A group of game formats of the event. */
|
|
789
|
+
formatGroupId?: components["schemas"]["FormatGroupId"] | null;
|
|
790
|
+
name: string;
|
|
791
|
+
/** @description Run in order on every result row. */
|
|
792
|
+
postProcessingSteps: components["schemas"]["GameFormatStep_for_GameFormatPostProcessingStep"][];
|
|
793
|
+
/** @description Run in order on every row of the entry list, before the game. */
|
|
794
|
+
preProcessingSteps?: components["schemas"]["GameFormatStep_for_GameFormatPreProcessingStep"][];
|
|
795
|
+
resultListColumns: components["schemas"]["RecordTypeWithDefaults"];
|
|
796
|
+
tags?: components["schemas"]["Tags"];
|
|
797
|
+
/** @description Maps the game format's group to the uuid of its entry in [Archive::dependencies]. */
|
|
798
|
+
wiring?: components["schemas"]["Wiring"];
|
|
799
|
+
};
|
|
800
|
+
} | {
|
|
801
|
+
/** @constant */
|
|
802
|
+
type: "scoring-definition";
|
|
803
|
+
data: components["schemas"]["ScoringDefinitionDTO"];
|
|
678
804
|
} | {
|
|
679
805
|
/** @constant */
|
|
680
806
|
type: "class";
|
|
@@ -711,11 +837,65 @@ declare interface components {
|
|
|
711
837
|
workspaceId: components["schemas"]["CommonWorkspaceId"];
|
|
712
838
|
};
|
|
713
839
|
};
|
|
840
|
+
AutomationError: {
|
|
841
|
+
/** Format: uint */
|
|
842
|
+
automationIndex: number;
|
|
843
|
+
/**
|
|
844
|
+
* Format: uint
|
|
845
|
+
* @description Which expression of the step is invalid, in the order of [GameFormatPreProcessingStep::expressions]. Steps with
|
|
846
|
+
* one expression and errors not about an expression have `0`.
|
|
847
|
+
*/
|
|
848
|
+
expressionIndex?: number;
|
|
849
|
+
kind: components["schemas"]["AutomationErrorKind"];
|
|
850
|
+
/** @description Which steps `automation_index` indexes. */
|
|
851
|
+
stage: components["schemas"]["ProcessingStage"];
|
|
852
|
+
};
|
|
853
|
+
AutomationErrorKind: {
|
|
854
|
+
/** @constant */
|
|
855
|
+
type: "script";
|
|
856
|
+
data: components["schemas"]["AutomationScriptError"];
|
|
857
|
+
} | {
|
|
858
|
+
/** @constant */
|
|
859
|
+
type: "non-primitive-column-type";
|
|
860
|
+
} | {
|
|
861
|
+
/** @constant */
|
|
862
|
+
type: "empty-sit-out-output-name";
|
|
863
|
+
} | {
|
|
864
|
+
/** @constant */
|
|
865
|
+
type: "empty-dq-key";
|
|
866
|
+
};
|
|
867
|
+
AutomationScriptError: AutomationScriptError;
|
|
714
868
|
/** Format: int64 */
|
|
715
869
|
BIB: BIB;
|
|
716
870
|
BibNotUniqueError: components["schemas"]["BIB"];
|
|
717
871
|
/** @enum {string} */
|
|
718
872
|
BooleanOp: BooleanOp;
|
|
873
|
+
BranchDTO_for_CommonWorkspaceId: {
|
|
874
|
+
/** Format: date-time */
|
|
875
|
+
createdAt: string;
|
|
876
|
+
familyId: components["schemas"]["CommonWorkspaceId"];
|
|
877
|
+
/** @description The last log entry it shares with its parent. */
|
|
878
|
+
forkLogId?: components["schemas"]["LogId"] | null;
|
|
879
|
+
/** @description The last log entry of the branch. */
|
|
880
|
+
head: components["schemas"]["LogId"];
|
|
881
|
+
name: string;
|
|
882
|
+
parentWorkspaceId?: components["schemas"]["CommonWorkspaceId"] | null;
|
|
883
|
+
workspaceId: components["schemas"]["CommonWorkspaceId"];
|
|
884
|
+
};
|
|
885
|
+
BranchPathVariables_for_CommonWorkspaceId: {
|
|
886
|
+
branchId: components["schemas"]["CommonWorkspaceId"];
|
|
887
|
+
};
|
|
888
|
+
/** @description Query of every endpoint of a workspace. */
|
|
889
|
+
BranchQuery_for_CommonWorkspaceId: {
|
|
890
|
+
/** @description The branch of the workspace's family to use instead of its default branch (T-149). */
|
|
891
|
+
branch?: components["schemas"]["CommonWorkspaceId"] | null;
|
|
892
|
+
};
|
|
893
|
+
BranchesDTO_for_CommonWorkspaceId: {
|
|
894
|
+
/** @description The first one first. */
|
|
895
|
+
branches: components["schemas"]["BranchDTO_for_CommonWorkspaceId"][];
|
|
896
|
+
defaultBranch: components["schemas"]["CommonWorkspaceId"];
|
|
897
|
+
familyId: components["schemas"]["CommonWorkspaceId"];
|
|
898
|
+
};
|
|
719
899
|
/** @description The [CICManagedState] of a relation that is a membership, so all but `DeletedByUser`. */
|
|
720
900
|
CICMembershipState: "added-by-user" | "automation";
|
|
721
901
|
ChildrenSpec: ChildrenSpec;
|
|
@@ -833,13 +1013,12 @@ declare interface components {
|
|
|
833
1013
|
competitorCount: number;
|
|
834
1014
|
};
|
|
835
1015
|
/**
|
|
836
|
-
* @description
|
|
837
|
-
*
|
|
838
|
-
* ```text
|
|
839
|
-
* multiple: ('roundrobin' | 'serpentine' | 'concat', ...Class) -> (Table<{}, Sorted>)
|
|
840
|
-
* ```
|
|
1016
|
+
* @description The signature of a script closure: no variadic ports, exactly one output and an input name per input. The names
|
|
1017
|
+
* are distinct variable names.
|
|
841
1018
|
*/
|
|
842
|
-
|
|
1019
|
+
ClosureSignature: ClosureSignature;
|
|
1020
|
+
/** @description Where a node gets the closure it calls. */
|
|
1021
|
+
ClosureSource: ClosureSource;
|
|
843
1022
|
/** Format: int64 */
|
|
844
1023
|
CommonApiKeyId: CommonApiKeyId;
|
|
845
1024
|
CommonWorkspaceId: CommonWorkspaceId;
|
|
@@ -1074,13 +1253,20 @@ declare interface components {
|
|
|
1074
1253
|
/** @description If part of a group, the group will get included automatically. */
|
|
1075
1254
|
formatIds: components["schemas"]["FormatId"][];
|
|
1076
1255
|
gameFormatIds: components["schemas"]["GameFormatId"][];
|
|
1256
|
+
/** @description Formats include the definitions they use anyway. */
|
|
1257
|
+
scoringDefinitionIds?: components["schemas"]["ScoringDefinitionId"][];
|
|
1258
|
+
};
|
|
1259
|
+
CreateBranchBody: {
|
|
1260
|
+
/** @description The last log entry the branch shares with the branch it is branched off. */
|
|
1261
|
+
atEntry: components["schemas"]["LogId"];
|
|
1262
|
+
name: string;
|
|
1077
1263
|
};
|
|
1078
1264
|
CreatedTarget: {
|
|
1079
1265
|
apiKey: string;
|
|
1080
1266
|
workspaceId: components["schemas"]["CommonWorkspaceId"];
|
|
1081
1267
|
};
|
|
1082
1268
|
/** @enum {string} */
|
|
1083
|
-
CustomControl:
|
|
1269
|
+
CustomControl: CustomControl;
|
|
1084
1270
|
CustomDataEntity: {
|
|
1085
1271
|
/** @constant */
|
|
1086
1272
|
type: "game";
|
|
@@ -1300,6 +1486,22 @@ declare interface components {
|
|
|
1300
1486
|
/** @constant */
|
|
1301
1487
|
type: "unknown";
|
|
1302
1488
|
};
|
|
1489
|
+
DefaultChangeEvent_for_ScoringDefinitionId: {
|
|
1490
|
+
/** @constant */
|
|
1491
|
+
type: "created";
|
|
1492
|
+
data: components["schemas"]["ScoringDefinitionId"];
|
|
1493
|
+
} | {
|
|
1494
|
+
/** @constant */
|
|
1495
|
+
type: "updated";
|
|
1496
|
+
data: components["schemas"]["ScoringDefinitionId"];
|
|
1497
|
+
} | {
|
|
1498
|
+
/** @constant */
|
|
1499
|
+
type: "deleted";
|
|
1500
|
+
data: components["schemas"]["ScoringDefinitionId"];
|
|
1501
|
+
} | {
|
|
1502
|
+
/** @constant */
|
|
1503
|
+
type: "unknown";
|
|
1504
|
+
};
|
|
1303
1505
|
DefaultChangeEvent_for_TableId: {
|
|
1304
1506
|
/** @constant */
|
|
1305
1507
|
type: "created";
|
|
@@ -1351,10 +1553,16 @@ declare interface components {
|
|
|
1351
1553
|
};
|
|
1352
1554
|
/** @description What happens to the games and tables of node instances that get deleted. */
|
|
1353
1555
|
DeleteInstanceSettings: "errorOnContent" | "keepContentAsCopy" | "deleteContent";
|
|
1556
|
+
/** @description Definitions can only be deleted when no scoring node uses them. */
|
|
1557
|
+
DeleteScoringDefinitionMutation: {
|
|
1558
|
+
scoringDefinitionId: components["schemas"]["ScoringDefinitionId"];
|
|
1559
|
+
};
|
|
1354
1560
|
DeleteTableMutation: {
|
|
1355
1561
|
id: components["schemas"]["TableId"];
|
|
1356
1562
|
};
|
|
1357
1563
|
DetailedSupertypeDiagnostics_for_Type: DetailedSupertypeDiagnostics<Type>;
|
|
1564
|
+
/** @description A competitor's worst results that don't count towards their total. */
|
|
1565
|
+
Discards: Discards;
|
|
1358
1566
|
/**
|
|
1359
1567
|
* @description Disqualifies every row of the table it receives, throwing them all under `key` so that a
|
|
1360
1568
|
* [`GroupNode`](super::group_node::GroupNode) further up the graph can collect them.
|
|
@@ -1373,13 +1581,13 @@ declare interface components {
|
|
|
1373
1581
|
source: components["schemas"]["DivergedRows"];
|
|
1374
1582
|
target: components["schemas"]["DivergedRows"];
|
|
1375
1583
|
};
|
|
1376
|
-
/** @description What a node does by default with a disqualification it can throw. */
|
|
1377
|
-
DqDefaultStrategy: DqDefaultStrategy;
|
|
1378
1584
|
DqKey: DqKey;
|
|
1379
|
-
|
|
1585
|
+
DqKind: DqKind;
|
|
1586
|
+
DqRecord: DqRecord;
|
|
1587
|
+
/** @description What a game format says about one of its disqualification kinds. */
|
|
1380
1588
|
DqSettings: DqSettings;
|
|
1381
|
-
/** @description
|
|
1382
|
-
|
|
1589
|
+
/** @description Where a competitor got disqualified. */
|
|
1590
|
+
DqSource: DqSource;
|
|
1383
1591
|
/**
|
|
1384
1592
|
* @description How functions that combine tables from multiple competitor sources (e.g. merging or
|
|
1385
1593
|
* concatenating) should treat a competitor that appears in more than one of them.
|
|
@@ -1453,6 +1661,13 @@ declare interface components {
|
|
|
1453
1661
|
} & {
|
|
1454
1662
|
[key: string]: unknown;
|
|
1455
1663
|
};
|
|
1664
|
+
/** @description A log entry that changed an entity. */
|
|
1665
|
+
EntityChange: {
|
|
1666
|
+
description: string;
|
|
1667
|
+
logId: components["schemas"]["LogId"];
|
|
1668
|
+
/** Format: date-time */
|
|
1669
|
+
timestamp: string;
|
|
1670
|
+
};
|
|
1456
1671
|
EntityChangeEvent: {
|
|
1457
1672
|
/** @constant */
|
|
1458
1673
|
type: "event";
|
|
@@ -1469,6 +1684,10 @@ declare interface components {
|
|
|
1469
1684
|
/** @constant */
|
|
1470
1685
|
type: "game-format";
|
|
1471
1686
|
data: components["schemas"]["DefaultChangeEvent_for_GameFormatId"];
|
|
1687
|
+
} | {
|
|
1688
|
+
/** @constant */
|
|
1689
|
+
type: "scoring-definition";
|
|
1690
|
+
data: components["schemas"]["DefaultChangeEvent_for_ScoringDefinitionId"];
|
|
1472
1691
|
} | {
|
|
1473
1692
|
/** @constant */
|
|
1474
1693
|
type: "format-group";
|
|
@@ -1522,7 +1741,12 @@ declare interface components {
|
|
|
1522
1741
|
type: "content-in-event-folder";
|
|
1523
1742
|
};
|
|
1524
1743
|
/** @description Auto-generated discriminant enum variants */
|
|
1525
|
-
EntityChangeEventDiscriminants: ("Event" | "Game" | "Table" | "GameFormat" | "FormatGroup" | "Row" | "RowMutation" | "FormatNode" | "Format" | "Class" | "Extension" | "Competitor" | "FormatTest" | "Log" | "ContentInEventFolder") | "CompetitorInTeam" | "CompetitorInClass";
|
|
1744
|
+
EntityChangeEventDiscriminants: ("Event" | "Game" | "Table" | "GameFormat" | "ScoringDefinition" | "FormatGroup" | "Row" | "RowMutation" | "FormatNode" | "Format" | "Class" | "Extension" | "Competitor" | "FormatTest" | "Log" | "ContentInEventFolder") | "CompetitorInTeam" | "CompetitorInClass";
|
|
1745
|
+
EntityHistoryQuery: {
|
|
1746
|
+
entity: components["schemas"]["HistoryEntity"];
|
|
1747
|
+
/** @description The id of the entity, as the API writes it. */
|
|
1748
|
+
id: string;
|
|
1749
|
+
};
|
|
1526
1750
|
/** @description A scope portal that used to be there but got removed in order to be serializable */
|
|
1527
1751
|
ErasedScopedTypeRef_for_Type: ErasedScopedTypeRef<Type>;
|
|
1528
1752
|
EventCompetitorsNode: EventCompetitorsNode;
|
|
@@ -1538,11 +1762,6 @@ declare interface components {
|
|
|
1538
1762
|
/** @description All competitors in this event are forced to have these parameters. */
|
|
1539
1763
|
individualCompetitorTypes: components["schemas"]["RecordTypeWithDefaults"];
|
|
1540
1764
|
name: string;
|
|
1541
|
-
/**
|
|
1542
|
-
* @description should only be null when creating an event. The next
|
|
1543
|
-
* action should always be to create and set the root format.
|
|
1544
|
-
*/
|
|
1545
|
-
rootFormatId?: components["schemas"]["FormatId"] | null;
|
|
1546
1765
|
settings: components["schemas"]["EventSettings"];
|
|
1547
1766
|
/**
|
|
1548
1767
|
* Format: date
|
|
@@ -1568,7 +1787,8 @@ declare interface components {
|
|
|
1568
1787
|
/**
|
|
1569
1788
|
* @default {
|
|
1570
1789
|
* "duplicateCompetitorPolicy": "error",
|
|
1571
|
-
* "invalidLinkedFormatPolicy": "last-known-table"
|
|
1790
|
+
* "invalidLinkedFormatPolicy": "last-known-table",
|
|
1791
|
+
* "sport": "44cfa5f1-264f-4b3c-9734-8a93f647d7d8"
|
|
1572
1792
|
* }
|
|
1573
1793
|
*/
|
|
1574
1794
|
settings: components["schemas"]["EventSettings"];
|
|
@@ -1633,6 +1853,7 @@ declare interface components {
|
|
|
1633
1853
|
};
|
|
1634
1854
|
EventLineageRow: {
|
|
1635
1855
|
competitorId: components["schemas"]["CompetitorId"];
|
|
1856
|
+
dqs: components["schemas"]["DqRecord"][];
|
|
1636
1857
|
/** Format: int64 */
|
|
1637
1858
|
place?: number | null;
|
|
1638
1859
|
};
|
|
@@ -1669,7 +1890,7 @@ declare interface components {
|
|
|
1669
1890
|
rows: components["schemas"]["EventLineageRow"][];
|
|
1670
1891
|
tableId: components["schemas"]["TableId"];
|
|
1671
1892
|
};
|
|
1672
|
-
/** @description Settings of an event
|
|
1893
|
+
/** @description Settings of an event. Missing fields get their defaults. */
|
|
1673
1894
|
EventSettings: {
|
|
1674
1895
|
/**
|
|
1675
1896
|
* @description Whether nodes that combine tables from multiple competitor sources (e.g. merging or
|
|
@@ -1683,6 +1904,11 @@ declare interface components {
|
|
|
1683
1904
|
* @default last-known-table
|
|
1684
1905
|
*/
|
|
1685
1906
|
invalidLinkedFormatPolicy: components["schemas"]["InvalidLinkedFormatPolicy"];
|
|
1907
|
+
/**
|
|
1908
|
+
* @description Only clients read it, e.g. to name concepts the way the sport does ("races" instead of "games").
|
|
1909
|
+
* @default 44cfa5f1-264f-4b3c-9734-8a93f647d7d8
|
|
1910
|
+
*/
|
|
1911
|
+
sport: components["schemas"]["SportId"];
|
|
1686
1912
|
};
|
|
1687
1913
|
Example: {
|
|
1688
1914
|
/**
|
|
@@ -1795,6 +2021,8 @@ declare interface components {
|
|
|
1795
2021
|
data: components["schemas"]["GameWithTables"];
|
|
1796
2022
|
});
|
|
1797
2023
|
FolderPath: string[];
|
|
2024
|
+
/** @description What the nodes representing a format do with a disqualification it raises. */
|
|
2025
|
+
FormatCatch: FormatCatch;
|
|
1798
2026
|
FormatConnectionDTO: FormatConnectionDTO;
|
|
1799
2027
|
FormatDAO: {
|
|
1800
2028
|
description: string;
|
|
@@ -1807,9 +2035,11 @@ declare interface components {
|
|
|
1807
2035
|
customData: {
|
|
1808
2036
|
[key: string]: string;
|
|
1809
2037
|
};
|
|
2038
|
+
/** @default false */
|
|
2039
|
+
deterministic: boolean;
|
|
1810
2040
|
/** @default {} */
|
|
1811
2041
|
disqualificationKinds: {
|
|
1812
|
-
[key: string]: components["schemas"]["
|
|
2042
|
+
[key: string]: components["schemas"]["FormatDqKind"];
|
|
1813
2043
|
};
|
|
1814
2044
|
/** @description The default values in here are not guaranteed to be valid for the signature. */
|
|
1815
2045
|
docs: components["schemas"]["NodeVariantDoc"];
|
|
@@ -1817,12 +2047,13 @@ declare interface components {
|
|
|
1817
2047
|
eventId: components["schemas"]["EventId"];
|
|
1818
2048
|
formatGroupId?: components["schemas"]["FormatGroupId"] | null;
|
|
1819
2049
|
id: components["schemas"]["FormatId"];
|
|
2050
|
+
kind: components["schemas"]["FormatKind"];
|
|
1820
2051
|
name: string;
|
|
1821
2052
|
signature: components["schemas"]["NodeSignature_for_Type_and_ParamRef"];
|
|
1822
2053
|
/**
|
|
1823
2054
|
* @default {
|
|
1824
|
-
* "
|
|
1825
|
-
* "
|
|
2055
|
+
* "groups": [],
|
|
2056
|
+
* "nodes": {}
|
|
1826
2057
|
* }
|
|
1827
2058
|
*/
|
|
1828
2059
|
simplifiedView: components["schemas"]["SimplifiedView"];
|
|
@@ -1830,10 +2061,6 @@ declare interface components {
|
|
|
1830
2061
|
templateOrigin?: string | null;
|
|
1831
2062
|
valid: components["schemas"]["FormatValidity"];
|
|
1832
2063
|
};
|
|
1833
|
-
FormatDAOWithRoot: {
|
|
1834
|
-
format: components["schemas"]["FormatDAO"];
|
|
1835
|
-
isRoot: boolean;
|
|
1836
|
-
};
|
|
1837
2064
|
FormatDTO: {
|
|
1838
2065
|
/** @default */
|
|
1839
2066
|
description: string;
|
|
@@ -1841,6 +2068,8 @@ declare interface components {
|
|
|
1841
2068
|
customData?: {
|
|
1842
2069
|
[key: string]: string;
|
|
1843
2070
|
};
|
|
2071
|
+
/** @description Whether the format may contain only deterministic nodes, see [NodeType]. Its nodes are deterministic then. */
|
|
2072
|
+
deterministic?: boolean;
|
|
1844
2073
|
/**
|
|
1845
2074
|
* @description All disqualifications that can escape this format. Like checked exceptions, every
|
|
1846
2075
|
* uncaught disqualification has to be declared and every declared one has to be throwable.
|
|
@@ -1848,7 +2077,7 @@ declare interface components {
|
|
|
1848
2077
|
* @default {}
|
|
1849
2078
|
*/
|
|
1850
2079
|
disqualificationKinds: {
|
|
1851
|
-
[key: string]: components["schemas"]["
|
|
2080
|
+
[key: string]: components["schemas"]["FormatDqKind"];
|
|
1852
2081
|
};
|
|
1853
2082
|
/** @description There must be docs for every input and output. Otherwise formats get rejected. */
|
|
1854
2083
|
docs: components["schemas"]["NodeVariantDoc"];
|
|
@@ -1862,6 +2091,8 @@ declare interface components {
|
|
|
1862
2091
|
signature: components["schemas"]["NodeSignature_for_Type_and_ParamRef"];
|
|
1863
2092
|
simplifiedView?: components["schemas"]["SimplifiedView"];
|
|
1864
2093
|
};
|
|
2094
|
+
/** @description What a format says about a disqualification kind it raises. */
|
|
2095
|
+
FormatDqKind: FormatDqKind;
|
|
1865
2096
|
FormatError: {
|
|
1866
2097
|
/** @constant */
|
|
1867
2098
|
type: "format-reference-error";
|
|
@@ -1880,14 +2111,11 @@ declare interface components {
|
|
|
1880
2111
|
} | {
|
|
1881
2112
|
/** @constant */
|
|
1882
2113
|
type: "invalidate-parents";
|
|
1883
|
-
data: components["schemas"]["
|
|
2114
|
+
data: components["schemas"]["InvalidatedFormat"][];
|
|
1884
2115
|
} | {
|
|
1885
2116
|
/** @constant */
|
|
1886
2117
|
type: "node-has-content";
|
|
1887
2118
|
data: components["schemas"]["NodeHasContentError"];
|
|
1888
|
-
} | {
|
|
1889
|
-
/** @constant */
|
|
1890
|
-
type: "tried-to-delete-root-format";
|
|
1891
2119
|
} | {
|
|
1892
2120
|
/** @constant */
|
|
1893
2121
|
type: "referenced-by-format-node";
|
|
@@ -1909,21 +2137,21 @@ declare interface components {
|
|
|
1909
2137
|
type: "upload";
|
|
1910
2138
|
};
|
|
1911
2139
|
FormatGroupDAO: {
|
|
1912
|
-
category: components["schemas"]["NodeCategory"];
|
|
1913
2140
|
customData: {
|
|
1914
2141
|
[key: string]: string;
|
|
1915
2142
|
};
|
|
1916
2143
|
eventId: components["schemas"]["EventId"];
|
|
1917
2144
|
id: components["schemas"]["FormatGroupId"];
|
|
2145
|
+
members: components["schemas"]["FormatGroupMembers"];
|
|
1918
2146
|
name: string;
|
|
1919
2147
|
/** Format: uuid */
|
|
1920
2148
|
templateOrigin?: string | null;
|
|
1921
2149
|
};
|
|
1922
2150
|
FormatGroupDTO: {
|
|
1923
|
-
category: components["schemas"]["NodeCategory"];
|
|
1924
2151
|
customData?: {
|
|
1925
2152
|
[key: string]: string;
|
|
1926
2153
|
};
|
|
2154
|
+
members: components["schemas"]["FormatGroupMembers"];
|
|
1927
2155
|
name: string;
|
|
1928
2156
|
};
|
|
1929
2157
|
/**
|
|
@@ -1932,6 +2160,18 @@ declare interface components {
|
|
|
1932
2160
|
* Deserializing one only yields a reference to an existing format group; it does not check that it exists.
|
|
1933
2161
|
*/
|
|
1934
2162
|
FormatGroupId: FormatGroupId;
|
|
2163
|
+
/**
|
|
2164
|
+
* @description What a format group groups, fixed when the group is created. Formats and game formats can only be in a group of
|
|
2165
|
+
* their kind.
|
|
2166
|
+
*/
|
|
2167
|
+
FormatGroupMembers: {
|
|
2168
|
+
/** @constant */
|
|
2169
|
+
type: "formats";
|
|
2170
|
+
category: components["schemas"]["NodeCategory"];
|
|
2171
|
+
} | {
|
|
2172
|
+
/** @constant */
|
|
2173
|
+
type: "game-formats";
|
|
2174
|
+
};
|
|
1935
2175
|
FormatGroupPathVariables_for_CommonWorkspaceId: {
|
|
1936
2176
|
eventId: components["schemas"]["EventId"];
|
|
1937
2177
|
formatGroupId: components["schemas"]["FormatGroupId"];
|
|
@@ -2007,6 +2247,8 @@ declare interface components {
|
|
|
2007
2247
|
formatInstance: components["schemas"]["FormatInstanceDAO"];
|
|
2008
2248
|
nodeStates: components["schemas"]["NodeInstanceStateDTO"][];
|
|
2009
2249
|
};
|
|
2250
|
+
/** @description Set when the format is created and never changed: only the inputs that create a format take it. */
|
|
2251
|
+
FormatKind: "normal" | "root-format";
|
|
2010
2252
|
FormatNodeConnectionDAO: {
|
|
2011
2253
|
pins: components["schemas"]["ConnectionPin"][];
|
|
2012
2254
|
sourceFormatNodeId: components["schemas"]["FormatNodeId"];
|
|
@@ -2115,8 +2357,12 @@ declare interface components {
|
|
|
2115
2357
|
data: components["schemas"]["GameFormatId"];
|
|
2116
2358
|
} | {
|
|
2117
2359
|
/** @constant */
|
|
2118
|
-
type: "invalid-
|
|
2119
|
-
data: components["schemas"]["
|
|
2360
|
+
type: "invalid-input-table-link";
|
|
2361
|
+
data: components["schemas"]["FormatNodeId"];
|
|
2362
|
+
} | {
|
|
2363
|
+
/** @constant */
|
|
2364
|
+
type: "cyclic-input-table-link";
|
|
2365
|
+
data: components["schemas"]["FormatNodeId"];
|
|
2120
2366
|
} | {
|
|
2121
2367
|
/** @constant */
|
|
2122
2368
|
type: "invalid-portal-source";
|
|
@@ -2141,7 +2387,7 @@ declare interface components {
|
|
|
2141
2387
|
};
|
|
2142
2388
|
/** @description An action invalidated a format */
|
|
2143
2389
|
FormatRevalidationError: {
|
|
2144
|
-
invalidatedFormats: components["schemas"]["
|
|
2390
|
+
invalidatedFormats: components["schemas"]["InvalidatedFormat"][];
|
|
2145
2391
|
};
|
|
2146
2392
|
FormatTest: {
|
|
2147
2393
|
description: string;
|
|
@@ -2200,6 +2446,10 @@ declare interface components {
|
|
|
2200
2446
|
/** @constant */
|
|
2201
2447
|
type: "custom";
|
|
2202
2448
|
competitors: components["schemas"]["CompetitorDTO"][];
|
|
2449
|
+
} | {
|
|
2450
|
+
/** @constant */
|
|
2451
|
+
type: "custom-teams";
|
|
2452
|
+
competitors: components["schemas"]["CompetitorDTO"][];
|
|
2203
2453
|
};
|
|
2204
2454
|
FormatTestDTO: {
|
|
2205
2455
|
/** @default */
|
|
@@ -2364,7 +2614,6 @@ declare interface components {
|
|
|
2364
2614
|
formatInstanceId: components["schemas"]["FormatInstanceHash"];
|
|
2365
2615
|
formatNodeId: components["schemas"]["FormatNodeId"];
|
|
2366
2616
|
};
|
|
2367
|
-
GTFilterKind: GTFilterKind;
|
|
2368
2617
|
GameDAO: {
|
|
2369
2618
|
attributes: components["schemas"]["RecordValue_for_Primitive"];
|
|
2370
2619
|
customData: {
|
|
@@ -2390,6 +2639,11 @@ declare interface components {
|
|
|
2390
2639
|
gameFormatId: components["schemas"]["GameFormatId"];
|
|
2391
2640
|
name: string;
|
|
2392
2641
|
};
|
|
2642
|
+
/**
|
|
2643
|
+
* @description What a game node does with a disqualification kind of its game format: throw it on, or catch it with a
|
|
2644
|
+
* [LadderDqStrategy]. The game format sets the default for its game nodes, each node can override it.
|
|
2645
|
+
*/
|
|
2646
|
+
GameDqHandling: GameDqHandling;
|
|
2393
2647
|
/**
|
|
2394
2648
|
* @description Describes the shape of a game and how its result is post processed.
|
|
2395
2649
|
*
|
|
@@ -2411,13 +2665,20 @@ declare interface components {
|
|
|
2411
2665
|
};
|
|
2412
2666
|
entryListColumns: components["schemas"]["RecordTypeWithDefaults"];
|
|
2413
2667
|
eventId: components["schemas"]["EventId"];
|
|
2668
|
+
/** @description A group of game formats. */
|
|
2669
|
+
formatGroupId?: components["schemas"]["FormatGroupId"] | null;
|
|
2414
2670
|
id: components["schemas"]["GameFormatId"];
|
|
2415
2671
|
name: string;
|
|
2416
2672
|
/** @description Run in order on every result row. */
|
|
2417
|
-
postProcessingSteps: components["schemas"]["
|
|
2673
|
+
postProcessingSteps: components["schemas"]["GameFormatStep_for_GameFormatPostProcessingStep"][];
|
|
2674
|
+
/** @description Run in order on every row of the entry list, before the game. */
|
|
2675
|
+
preProcessingSteps?: components["schemas"]["GameFormatStep_for_GameFormatPreProcessingStep"][];
|
|
2418
2676
|
resultListColumns: components["schemas"]["RecordTypeWithDefaults"];
|
|
2677
|
+
tags: components["schemas"]["Tags"];
|
|
2419
2678
|
/** Format: uuid */
|
|
2420
2679
|
templateOrigin?: string | null;
|
|
2680
|
+
/** @description Whether `settings` validate. With force, game formats are saved although they don't: their game nodes are invalid. */
|
|
2681
|
+
valid: components["schemas"]["FormatValidity"];
|
|
2421
2682
|
};
|
|
2422
2683
|
/**
|
|
2423
2684
|
* @description Describes the shape of a game and how its result is post processed.
|
|
@@ -2440,10 +2701,15 @@ declare interface components {
|
|
|
2440
2701
|
[key: string]: components["schemas"]["DqSettings"];
|
|
2441
2702
|
};
|
|
2442
2703
|
entryListColumns: components["schemas"]["RecordTypeWithDefaults"];
|
|
2704
|
+
/** @description A group of game formats of the event. */
|
|
2705
|
+
formatGroupId?: components["schemas"]["FormatGroupId"] | null;
|
|
2443
2706
|
name: string;
|
|
2444
2707
|
/** @description Run in order on every result row. */
|
|
2445
|
-
postProcessingSteps: components["schemas"]["
|
|
2708
|
+
postProcessingSteps: components["schemas"]["GameFormatStep_for_GameFormatPostProcessingStep"][];
|
|
2709
|
+
/** @description Run in order on every row of the entry list, before the game. */
|
|
2710
|
+
preProcessingSteps?: components["schemas"]["GameFormatStep_for_GameFormatPreProcessingStep"][];
|
|
2446
2711
|
resultListColumns: components["schemas"]["RecordTypeWithDefaults"];
|
|
2712
|
+
tags?: components["schemas"]["Tags"];
|
|
2447
2713
|
};
|
|
2448
2714
|
/**
|
|
2449
2715
|
* Format: uuid
|
|
@@ -2456,12 +2722,14 @@ declare interface components {
|
|
|
2456
2722
|
gameFormatId: components["schemas"]["GameFormatId"];
|
|
2457
2723
|
workspaceId: components["schemas"]["CommonWorkspaceId"];
|
|
2458
2724
|
};
|
|
2459
|
-
/**
|
|
2460
|
-
|
|
2461
|
-
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
|
|
2725
|
+
/** @description A pre or post processing step with a description for the people reading the game format. */
|
|
2726
|
+
GameFormatStep_for_GameFormatPostProcessingStep: GameFormatStep<GameFormatPostProcessingStep>;
|
|
2727
|
+
/** @description A pre or post processing step with a description for the people reading the game format. */
|
|
2728
|
+
GameFormatStep_for_GameFormatPreProcessingStep: GameFormatStep<GameFormatPreProcessingStep>;
|
|
2729
|
+
GameFormatValidationError: {
|
|
2730
|
+
/** @description Not empty. */
|
|
2731
|
+
errors: components["schemas"]["AutomationError"][];
|
|
2732
|
+
};
|
|
2465
2733
|
/**
|
|
2466
2734
|
* Format: uuid
|
|
2467
2735
|
* @description Identifies a game, the primary key of `games`. Comes from one of:
|
|
@@ -2473,9 +2741,9 @@ declare interface components {
|
|
|
2473
2741
|
* Changing a derivation changes what replaying a log produces and needs an `ENGINE_VERSION` increment.
|
|
2474
2742
|
*/
|
|
2475
2743
|
GameId: GameId;
|
|
2476
|
-
GameNodeDTO: GameNodeDTO;
|
|
2477
2744
|
/** @description How many games a game node plays and how they depend on each other. */
|
|
2478
|
-
|
|
2745
|
+
GameModeKind: GameModeKind;
|
|
2746
|
+
GameNodeDTO: GameNodeDTO;
|
|
2479
2747
|
GamePathVariables_for_CommonWorkspaceId: {
|
|
2480
2748
|
eventId: components["schemas"]["EventId"];
|
|
2481
2749
|
gameId: components["schemas"]["GameId"];
|
|
@@ -2524,6 +2792,8 @@ declare interface components {
|
|
|
2524
2792
|
};
|
|
2525
2793
|
/** @description Location of a validation error in the graph. */
|
|
2526
2794
|
GraphLocation: GraphLocation;
|
|
2795
|
+
/** @description How a group outputs the disqualifications of a key it catches. */
|
|
2796
|
+
GroupCatch: GroupCatch;
|
|
2527
2797
|
/**
|
|
2528
2798
|
* @description Contains other nodes. It can add its name to the folder path of its descendants and catch the disqualifications
|
|
2529
2799
|
* they throw.
|
|
@@ -2577,6 +2847,13 @@ declare interface components {
|
|
|
2577
2847
|
});
|
|
2578
2848
|
/** @enum {string} */
|
|
2579
2849
|
HeaderStyle: "simple";
|
|
2850
|
+
/**
|
|
2851
|
+
* @description The kinds of entities with a history.
|
|
2852
|
+
* @enum {string}
|
|
2853
|
+
*/
|
|
2854
|
+
HistoryEntity: "event" | "game" | "table" | "game-format" | "scoring-definition" | "format-group" | "format" | "format-node" | "format-test" | "class" | "competitor";
|
|
2855
|
+
/** @description A note, serialized as a plain string, or a disqualification. */
|
|
2856
|
+
HistoryEntry: HistoryEntry;
|
|
2580
2857
|
ImportArchiveError: {
|
|
2581
2858
|
/** @constant */
|
|
2582
2859
|
type: "invalid-archive";
|
|
@@ -2589,9 +2866,6 @@ declare interface components {
|
|
|
2589
2866
|
/** @constant */
|
|
2590
2867
|
type: "missing-lookup-format-group";
|
|
2591
2868
|
data: components["schemas"]["FormatGroupId"];
|
|
2592
|
-
} | {
|
|
2593
|
-
/** @constant */
|
|
2594
|
-
type: "multiple-root-formats";
|
|
2595
2869
|
};
|
|
2596
2870
|
ImportArchiveMutation: {
|
|
2597
2871
|
archive: components["schemas"]["Archive"];
|
|
@@ -2603,9 +2877,11 @@ declare interface components {
|
|
|
2603
2877
|
* built; reusing a seed in the same event reproduces the same ids.
|
|
2604
2878
|
*/
|
|
2605
2879
|
nodeUuidSeed?: components["schemas"]["Seed"] | null;
|
|
2606
|
-
/** @default as-format */
|
|
2607
|
-
rootFormat: components["schemas"]["RootFormatImport"];
|
|
2608
2880
|
};
|
|
2881
|
+
/** @description Node types that aren't deterministic: they read or write the workspace, play games or raise disqualifications. */
|
|
2882
|
+
ImpureNodeType: ImpureNodeType;
|
|
2883
|
+
/** @description Auto-generated discriminant enum variants */
|
|
2884
|
+
ImpureNodeTypeDiscriminants: ("game" | "input-table" | "class" | "disqualify" | "split-by-class" | "event-competitors" | "classes-competitors") | "output-table";
|
|
2609
2885
|
/**
|
|
2610
2886
|
* @description The object provides metadata about the API.
|
|
2611
2887
|
* The metadata MAY be used by the clients if needed,
|
|
@@ -2639,8 +2915,14 @@ declare interface components {
|
|
|
2639
2915
|
} & {
|
|
2640
2916
|
[key: string]: unknown;
|
|
2641
2917
|
};
|
|
2918
|
+
/** @description Node types as deterministic as what they stand for. */
|
|
2919
|
+
InheritedNodeType: InheritedNodeType;
|
|
2920
|
+
/** @description Auto-generated discriminant enum variants */
|
|
2921
|
+
InheritedNodeTypeDiscriminants: "format" | "filter-table" | "table-map" | "array-map" | "repeat";
|
|
2642
2922
|
/** Format: uint16 */
|
|
2643
2923
|
InputIdx: InputIdx;
|
|
2924
|
+
/** @description The table an InputTableNode outputs. */
|
|
2925
|
+
InputTableLink: InputTableLink;
|
|
2644
2926
|
InstallExtensionBody: {
|
|
2645
2927
|
identifier: components["schemas"]["ExtensionIdentifier"];
|
|
2646
2928
|
kind: components["schemas"]["ExtensionKind"];
|
|
@@ -2663,6 +2945,16 @@ declare interface components {
|
|
|
2663
2945
|
};
|
|
2664
2946
|
InvalidLinkedFormatPolicy: "empty-table" | "node-error" | "last-known-table";
|
|
2665
2947
|
InvalidNodeReason: InvalidNodeReason;
|
|
2948
|
+
/** @description A valid format that an action would make invalid. */
|
|
2949
|
+
InvalidatedFormat: {
|
|
2950
|
+
/** @description Why it would turn invalid: its validation errors after the action. */
|
|
2951
|
+
errors: components["schemas"]["FormatValidationError"][];
|
|
2952
|
+
formatId: components["schemas"]["FormatId"];
|
|
2953
|
+
};
|
|
2954
|
+
/** @description How the finals of a ladder game node get their name or their attributes. */
|
|
2955
|
+
LadderInput: LadderInput;
|
|
2956
|
+
/** @description The finals of a ladder game node. */
|
|
2957
|
+
LadderNode: LadderNode;
|
|
2666
2958
|
/** @description License information for the exposed API. */
|
|
2667
2959
|
License: {
|
|
2668
2960
|
/** @description An [SPDX](https://spdx.org/spdx-specification-21-web-version#h.jxpfx0ykyb60) license expression for the API. The `identifier` field is mutually exclusive of the `url` field. */
|
|
@@ -2727,17 +3019,10 @@ declare interface components {
|
|
|
2727
3019
|
} | {
|
|
2728
3020
|
operationId: string;
|
|
2729
3021
|
});
|
|
2730
|
-
/** @description Links the entities a template was created from to its archive entries. */
|
|
3022
|
+
/** @description Links the entities a template was created from to its archive entries, except root formats, which are never linked. */
|
|
2731
3023
|
LinkToTemplateMutation: {
|
|
2732
3024
|
wiring: components["schemas"]["Wiring"];
|
|
2733
3025
|
};
|
|
2734
|
-
LoadArchiveQuery: {
|
|
2735
|
-
/**
|
|
2736
|
-
* @description What to do with a root format contained in the archive.
|
|
2737
|
-
* @default as-format
|
|
2738
|
-
*/
|
|
2739
|
-
rootFormat: components["schemas"]["RootFormatImport"];
|
|
2740
|
-
};
|
|
2741
3026
|
LocalExtensionPath: {
|
|
2742
3027
|
extensionIdent: components["schemas"]["ExtensionIdentifier"];
|
|
2743
3028
|
};
|
|
@@ -2772,6 +3057,11 @@ declare interface components {
|
|
|
2772
3057
|
};
|
|
2773
3058
|
/** Format: uuid */
|
|
2774
3059
|
LogBatchId: string;
|
|
3060
|
+
/** @description Log entries of a branch, in log order. */
|
|
3061
|
+
LogEntriesDTO: {
|
|
3062
|
+
branch: components["schemas"]["CommonWorkspaceId"];
|
|
3063
|
+
entries: components["schemas"]["LogEntrySmall"][];
|
|
3064
|
+
};
|
|
2775
3065
|
LogEntry: {
|
|
2776
3066
|
/** @constant */
|
|
2777
3067
|
type: "add-game-format";
|
|
@@ -2788,6 +3078,22 @@ declare interface components {
|
|
|
2788
3078
|
/** @constant */
|
|
2789
3079
|
type: "update-game-format";
|
|
2790
3080
|
data: components["schemas"]["UpdateGameFormatMutation"];
|
|
3081
|
+
} | {
|
|
3082
|
+
/** @constant */
|
|
3083
|
+
type: "add-scoring-definition";
|
|
3084
|
+
data: components["schemas"]["AddScoringDefinitionMutation"];
|
|
3085
|
+
} | {
|
|
3086
|
+
/** @constant */
|
|
3087
|
+
type: "rename-scoring-definition";
|
|
3088
|
+
data: components["schemas"]["RenameScoringDefinitionMutation"];
|
|
3089
|
+
} | {
|
|
3090
|
+
/** @constant */
|
|
3091
|
+
type: "delete-scoring-definition";
|
|
3092
|
+
data: components["schemas"]["DeleteScoringDefinitionMutation"];
|
|
3093
|
+
} | {
|
|
3094
|
+
/** @constant */
|
|
3095
|
+
type: "update-scoring-definition";
|
|
3096
|
+
data: components["schemas"]["UpdateScoringDefinitionMutation"];
|
|
2791
3097
|
} | {
|
|
2792
3098
|
/** @constant */
|
|
2793
3099
|
type: "add-class";
|
|
@@ -3028,9 +3334,35 @@ declare interface components {
|
|
|
3028
3334
|
};
|
|
3029
3335
|
/**
|
|
3030
3336
|
* @description What a continuation does with competitors of its parts that are missing from the previous result.
|
|
3031
|
-
*
|
|
3337
|
+
*
|
|
3338
|
+
* A continuation of a scoring's result, straight or through nodes that keep the table's metadata, scores like one
|
|
3339
|
+
* scoring node over all parts of the chain: the points of the earlier parts are carried, the discards and tie breaks of
|
|
3340
|
+
* the last node apply to all parts, `part.index` counts through the chain, and the result has the columns of all
|
|
3341
|
+
* parts. Each part's points come from the node that scores it. The direction must be the same along the chain. For
|
|
3342
|
+
* competitors new in a later node, only [Self::ScoredAsAbsent] is exactly like one node. Continuing a table that
|
|
3343
|
+
* doesn't come from a scoring only adds to its `total_points` and keeps its columns.
|
|
3344
|
+
*
|
|
3345
|
+
* If the previous result is empty, nobody is missing.
|
|
3032
3346
|
*/
|
|
3033
3347
|
MissingFromPrevious: MissingFromPrevious;
|
|
3348
|
+
/** @description Something a format uses that its [FormatRefs] lack. */
|
|
3349
|
+
MissingReference: {
|
|
3350
|
+
/** @constant */
|
|
3351
|
+
type: "format";
|
|
3352
|
+
data: components["schemas"]["FormatId"];
|
|
3353
|
+
} | {
|
|
3354
|
+
/** @constant */
|
|
3355
|
+
type: "game-format";
|
|
3356
|
+
data: components["schemas"]["GameFormatId"];
|
|
3357
|
+
} | {
|
|
3358
|
+
/** @constant */
|
|
3359
|
+
type: "scoring-definition";
|
|
3360
|
+
data: components["schemas"]["ScoringDefinitionId"];
|
|
3361
|
+
} | {
|
|
3362
|
+
/** @constant */
|
|
3363
|
+
type: "input-table-link";
|
|
3364
|
+
data: components["schemas"]["InputTableLink"];
|
|
3365
|
+
};
|
|
3034
3366
|
/** @enum {string} */
|
|
3035
3367
|
MultiplexingStrategy: MultiplexingStrategy;
|
|
3036
3368
|
NameQuery: {
|
|
@@ -3039,15 +3371,34 @@ declare interface components {
|
|
|
3039
3371
|
NoSupertypeLayerReason: NoSupertypeLayerReason;
|
|
3040
3372
|
NoSupertypeLayer_for_Type: NoSupertypeLayer<Type>;
|
|
3041
3373
|
/** @enum {string} */
|
|
3042
|
-
NodeCategory:
|
|
3374
|
+
NodeCategory: NodeCategory;
|
|
3043
3375
|
NodeConfigurationError: NodeConfigurationError;
|
|
3044
3376
|
NodeDocTest: {
|
|
3045
3377
|
description?: string | null;
|
|
3046
3378
|
format: components["schemas"]["FormatDTO"];
|
|
3379
|
+
dependencies: components["schemas"]["NodeDocTestDependencies"];
|
|
3047
3380
|
name?: string | null;
|
|
3048
3381
|
nodeType: components["schemas"]["NodeType"];
|
|
3049
3382
|
test: components["schemas"]["FormatTestDefinition"];
|
|
3050
3383
|
};
|
|
3384
|
+
/** @description What the format of a [NodeDocTest] refers to, by the ids it uses. The test imports them with the format. */
|
|
3385
|
+
NodeDocTestDependencies: {
|
|
3386
|
+
classes: {
|
|
3387
|
+
[key: string]: components["schemas"]["ClassDTO"];
|
|
3388
|
+
};
|
|
3389
|
+
formats: {
|
|
3390
|
+
[key: string]: components["schemas"]["FormatDTO"];
|
|
3391
|
+
};
|
|
3392
|
+
gameFormats: {
|
|
3393
|
+
[key: string]: components["schemas"]["GameFormatDTO"];
|
|
3394
|
+
};
|
|
3395
|
+
/** @description The prototypes of the Class and Format nodes of these, as an event with them has them. */
|
|
3396
|
+
prototypes: components["schemas"]["NodePrototype"][];
|
|
3397
|
+
/** @description The fundamental scorings the Scoring nodes use, by their archive ids, see [FundamentalScoring::archive_id]. */
|
|
3398
|
+
scoringDefinitions: {
|
|
3399
|
+
[key: string]: components["schemas"]["ScoringDefinitionDTO"];
|
|
3400
|
+
};
|
|
3401
|
+
};
|
|
3051
3402
|
NodeErrorState_for_NodeRuntimeError: {
|
|
3052
3403
|
/** @constant */
|
|
3053
3404
|
type: "ok";
|
|
@@ -3104,7 +3455,6 @@ declare interface components {
|
|
|
3104
3455
|
NodePlacement: {
|
|
3105
3456
|
group?: components["schemas"]["SimplifiedGroupId"] | null;
|
|
3106
3457
|
link?: components["schemas"]["NodeLinkId"] | null;
|
|
3107
|
-
section: components["schemas"]["SimplifiedSectionId"];
|
|
3108
3458
|
};
|
|
3109
3459
|
NodePrototype: {
|
|
3110
3460
|
/**
|
|
@@ -3138,9 +3488,15 @@ declare interface components {
|
|
|
3138
3488
|
NodeRuntimeError: {
|
|
3139
3489
|
/** @constant */
|
|
3140
3490
|
type: "table-kind-mismatch";
|
|
3491
|
+
} | {
|
|
3492
|
+
/** @constant */
|
|
3493
|
+
type: "scoring-direction-mismatch";
|
|
3141
3494
|
} | {
|
|
3142
3495
|
/** @constant */
|
|
3143
3496
|
type: "table-ownership-mismatch";
|
|
3497
|
+
} | {
|
|
3498
|
+
/** @constant */
|
|
3499
|
+
type: "linked-format-is-invalid";
|
|
3144
3500
|
} | {
|
|
3145
3501
|
/** @constant */
|
|
3146
3502
|
type: "game-not-found";
|
|
@@ -3170,6 +3526,9 @@ declare interface components {
|
|
|
3170
3526
|
} | {
|
|
3171
3527
|
/** @constant */
|
|
3172
3528
|
type: "integer-overflow";
|
|
3529
|
+
} | {
|
|
3530
|
+
/** @constant */
|
|
3531
|
+
type: "invalid-math-operands";
|
|
3173
3532
|
} | {
|
|
3174
3533
|
/** @constant */
|
|
3175
3534
|
type: "record-field-does-not-exist";
|
|
@@ -3190,17 +3549,26 @@ declare interface components {
|
|
|
3190
3549
|
/** Format: uint */
|
|
3191
3550
|
expectedRowLength: number;
|
|
3192
3551
|
/** Format: uint */
|
|
3193
|
-
foundRowLength
|
|
3552
|
+
foundRowLength: number;
|
|
3194
3553
|
/** Format: uint */
|
|
3195
3554
|
rowIndex: number;
|
|
3196
3555
|
};
|
|
3556
|
+
} | {
|
|
3557
|
+
/** @constant */
|
|
3558
|
+
type: "invalid-distribution";
|
|
3559
|
+
data: {
|
|
3560
|
+
/** Format: int64 */
|
|
3561
|
+
maxTableSize: number;
|
|
3562
|
+
/** Format: int64 */
|
|
3563
|
+
minTableSize: number;
|
|
3564
|
+
};
|
|
3197
3565
|
} | {
|
|
3198
3566
|
/** @constant */
|
|
3199
3567
|
type: "invalid-row-types";
|
|
3200
3568
|
data: components["schemas"]["RecordValueTypeValidationError"];
|
|
3201
3569
|
} | {
|
|
3202
3570
|
/** @constant */
|
|
3203
|
-
type: "
|
|
3571
|
+
type: "script-error";
|
|
3204
3572
|
data: components["schemas"]["RuntimeErrorKind"];
|
|
3205
3573
|
};
|
|
3206
3574
|
/**
|
|
@@ -3213,24 +3581,29 @@ declare interface components {
|
|
|
3213
3581
|
* Written in notation as `<T>(T) -> (T)` for the identity node.
|
|
3214
3582
|
*/
|
|
3215
3583
|
NodeSignature_for_Type_and_ParamRef: NodeSignature<Type, ParamRef>;
|
|
3584
|
+
/**
|
|
3585
|
+
* @description What a node does. Its purity says whether its nodes are deterministic: what they output depends only on their inputs,
|
|
3586
|
+
* their node type and the formats and scoring definitions they reference. Deterministic formats (see
|
|
3587
|
+
* [FormatInterface::deterministic]) and pipelines contain only deterministic nodes.
|
|
3588
|
+
*
|
|
3589
|
+
* Top level purity distinction to have that be a type system invariant from the start. Reduces invariants.
|
|
3590
|
+
*/
|
|
3216
3591
|
NodeType: NodeType;
|
|
3217
|
-
/** @description
|
|
3218
|
-
NodeTypeDiscriminants:
|
|
3219
|
-
|
|
3220
|
-
|
|
3221
|
-
|
|
3222
|
-
|
|
3223
|
-
|
|
3224
|
-
|
|
3225
|
-
|
|
3226
|
-
|
|
3227
|
-
|
|
3228
|
-
|
|
3229
|
-
|
|
3230
|
-
outputVargsToArrayCountLabel: components["schemas"]["PortLabelPart"][];
|
|
3231
|
-
outputs: components["schemas"]["PortsDoc"];
|
|
3232
|
-
variantLabel: string;
|
|
3592
|
+
/** @description The kind of a [NodeType] without its data: `{ "purity": "pure", "type": "math" }`. */
|
|
3593
|
+
NodeTypeDiscriminants: {
|
|
3594
|
+
type: components["schemas"]["PureNodeTypeDiscriminants"];
|
|
3595
|
+
/** @constant */
|
|
3596
|
+
purity: "pure";
|
|
3597
|
+
} | {
|
|
3598
|
+
type: components["schemas"]["ImpureNodeTypeDiscriminants"];
|
|
3599
|
+
/** @constant */
|
|
3600
|
+
purity: "impure";
|
|
3601
|
+
} | {
|
|
3602
|
+
type: components["schemas"]["InheritedNodeTypeDiscriminants"];
|
|
3603
|
+
/** @constant */
|
|
3604
|
+
purity: "inherited";
|
|
3233
3605
|
};
|
|
3606
|
+
NodeVariantDoc: NodeVariantDoc;
|
|
3234
3607
|
NodeVariantPrototype: {
|
|
3235
3608
|
childrenSpec: components["schemas"]["ChildrenSpec"];
|
|
3236
3609
|
/**
|
|
@@ -3241,8 +3614,6 @@ declare interface components {
|
|
|
3241
3614
|
/** Format: uint32 */
|
|
3242
3615
|
defaultOutputVargCount: number;
|
|
3243
3616
|
includeInSearch: boolean;
|
|
3244
|
-
/** @description These outputs emit warnings when not used */
|
|
3245
|
-
mustUseOutputs: components["schemas"]["OutputIdx"][];
|
|
3246
3617
|
/** @description Uniquely identifies a node variant */
|
|
3247
3618
|
nodeType: components["schemas"]["NodeType"];
|
|
3248
3619
|
/** @description Type of settings excluding the variant property. */
|
|
@@ -3864,49 +4235,20 @@ declare interface components {
|
|
|
3864
4235
|
Paths: {
|
|
3865
4236
|
[key: string]: components["schemas"]["ReferenceOr_for_PathItem"];
|
|
3866
4237
|
};
|
|
3867
|
-
PortDoc:
|
|
3868
|
-
|
|
3869
|
-
defaultValue?: components["schemas"]["Value_for_Primitive"] | null;
|
|
3870
|
-
/** @description CustomControls only get used when enabled with this property. */
|
|
3871
|
-
enabledCustomControls: components["schemas"]["CustomControl"][];
|
|
3872
|
-
/** @description Each port label part gets turned into a string and then concatenated to retrieve the full label. */
|
|
3873
|
-
label: components["schemas"]["PortLabelPart"][];
|
|
3874
|
-
/** @description Finite value options representing the value will get labeled with the string */
|
|
3875
|
-
valueLabels: [
|
|
3876
|
-
components["schemas"]["Value_for_Primitive"],
|
|
3877
|
-
string
|
|
3878
|
-
][];
|
|
3879
|
-
};
|
|
3880
|
-
PortLabelPart: {
|
|
3881
|
-
/** @constant */
|
|
3882
|
-
type: "idx-decimal";
|
|
3883
|
-
/** Format: int64 */
|
|
3884
|
-
data: number;
|
|
3885
|
-
} | {
|
|
3886
|
-
/** @constant */
|
|
3887
|
-
type: "idx-alphabetic";
|
|
3888
|
-
/** Format: int64 */
|
|
3889
|
-
data: number;
|
|
3890
|
-
} | {
|
|
3891
|
-
/** @constant */
|
|
3892
|
-
type: "idx-ordinal";
|
|
3893
|
-
/** Format: int64 */
|
|
3894
|
-
data: number;
|
|
3895
|
-
} | {
|
|
3896
|
-
/** @constant */
|
|
3897
|
-
type: "string";
|
|
3898
|
-
data: string;
|
|
3899
|
-
};
|
|
4238
|
+
PortDoc: PortDoc;
|
|
4239
|
+
PortLabelPart: PortLabelPart;
|
|
3900
4240
|
/** @description A list of port types, optionally with a variadic type (`...T`). */
|
|
3901
4241
|
PortTypes_for_Type_and_ErasedScopedTypeRef_for_Type: PortTypes<Type, components["schemas"]["ErasedScopedTypeRef_for_Type"]>;
|
|
3902
4242
|
/** @description A list of port types, optionally with a variadic type (`...T`). */
|
|
3903
4243
|
PortTypes_for_Type_and_ParamRef: PortTypes<Type, ParamRef>;
|
|
3904
|
-
PortsDoc:
|
|
3905
|
-
ports: components["schemas"]["PortDoc"][];
|
|
3906
|
-
varg?: components["schemas"]["PortDoc"] | null;
|
|
3907
|
-
};
|
|
4244
|
+
PortsDoc: PortsDoc;
|
|
3908
4245
|
PostFormatQuery: {
|
|
3909
4246
|
force: boolean;
|
|
4247
|
+
/**
|
|
4248
|
+
* @description Never changes afterwards.
|
|
4249
|
+
* @default normal
|
|
4250
|
+
*/
|
|
4251
|
+
kind: components["schemas"]["FormatKind"];
|
|
3910
4252
|
};
|
|
3911
4253
|
PostRandomCompetitorsQuery: {
|
|
3912
4254
|
count: components["schemas"]["LimitedInt_for_1_and_500"];
|
|
@@ -3918,6 +4260,15 @@ declare interface components {
|
|
|
3918
4260
|
};
|
|
3919
4261
|
/** @description Crate local version of [std::convert::Infallible] */
|
|
3920
4262
|
Primitive: Primitive;
|
|
4263
|
+
/**
|
|
4264
|
+
* @description The pre or post processing steps of a game format.
|
|
4265
|
+
* @enum {string}
|
|
4266
|
+
*/
|
|
4267
|
+
ProcessingStage: ProcessingStage;
|
|
4268
|
+
/** @description Deterministic node types. Input, output, group, portal and comment nodes only route values. */
|
|
4269
|
+
PureNodeType: PureNodeType;
|
|
4270
|
+
/** @description Auto-generated discriminant enum variants */
|
|
4271
|
+
PureNodeTypeDiscriminants: ("input" | "output" | "group" | "portal" | "comment" | "math" | "string-concat" | "string-format" | "sort-table" | "constant" | "merge-tables" | "divide-table" | "distribute-table" | "split-table" | "concat-tables" | "remove-places" | "transfer-history" | "length" | "boolean-op" | "record-field" | "record" | "record-access" | "fallback" | "comparison" | "ternary" | "separate-row" | "update-row" | "create-array" | "create-table" | "array-access" | "unpack-array" | "promotion-relegation" | "age-at" | "add-columns" | "matrix-transpose" | "scoring" | "script-closure") | "invalid" | "zip";
|
|
3921
4272
|
PushTableRowMutationsMutation: {
|
|
3922
4273
|
/**
|
|
3923
4274
|
* @description Challenge for a client to prevent accidentally
|
|
@@ -3938,6 +4289,10 @@ declare interface components {
|
|
|
3938
4289
|
classId: components["schemas"]["ClassId"];
|
|
3939
4290
|
seed: components["schemas"]["Seed"];
|
|
3940
4291
|
};
|
|
4292
|
+
/** @description Reads `keys` of a record, see [record_access_node_sig]. */
|
|
4293
|
+
RecordAccessNode: RecordAccessNode;
|
|
4294
|
+
/** @description What a record node adds its fields to. */
|
|
4295
|
+
RecordBase: RecordBase;
|
|
3941
4296
|
/** @enum {string} */
|
|
3942
4297
|
RecordFieldOp: RecordFieldOp;
|
|
3943
4298
|
RecordMakeValidMutation: RecordMakeValidMutation;
|
|
@@ -3955,6 +4310,8 @@ declare interface components {
|
|
|
3955
4310
|
/** @description The mutations that were applied to make the record valid. */
|
|
3956
4311
|
mutations: components["schemas"]["RecordMakeValidMutation"][];
|
|
3957
4312
|
};
|
|
4313
|
+
/** @description The record node: a record with `fields`, see [record_node_sig]. */
|
|
4314
|
+
RecordNode: RecordNode;
|
|
3958
4315
|
/** @description RecordTypes should **only** be manipulated though this helper to have a single source of truth for the structure. */
|
|
3959
4316
|
RecordTypeHelper_for_ParamRef: RecordTypeHelper<ParamRef>;
|
|
3960
4317
|
RecordTypeWithDefaults: RecordTypeWithDefaults;
|
|
@@ -4179,6 +4536,9 @@ declare interface components {
|
|
|
4179
4536
|
*/
|
|
4180
4537
|
force: boolean;
|
|
4181
4538
|
};
|
|
4539
|
+
RenameBranchBody: {
|
|
4540
|
+
name: string;
|
|
4541
|
+
};
|
|
4182
4542
|
RenameClassMutation: {
|
|
4183
4543
|
classId: components["schemas"]["ClassId"];
|
|
4184
4544
|
name: string;
|
|
@@ -4191,6 +4551,12 @@ declare interface components {
|
|
|
4191
4551
|
gameFormatId: components["schemas"]["GameFormatId"];
|
|
4192
4552
|
name: string;
|
|
4193
4553
|
};
|
|
4554
|
+
RenameScoringDefinitionMutation: {
|
|
4555
|
+
name: string;
|
|
4556
|
+
scoringDefinitionId: components["schemas"]["ScoringDefinitionId"];
|
|
4557
|
+
};
|
|
4558
|
+
/** @description What a repeat node runs its closure for. */
|
|
4559
|
+
RepeatOver: RepeatOver;
|
|
4194
4560
|
ReplicateWorkspaceQuery: {
|
|
4195
4561
|
logId: components["schemas"]["LogId"];
|
|
4196
4562
|
name: string;
|
|
@@ -4315,8 +4681,6 @@ declare interface components {
|
|
|
4315
4681
|
} & {
|
|
4316
4682
|
[key: string]: components["schemas"]["ReferenceOr_for_Response"];
|
|
4317
4683
|
};
|
|
4318
|
-
/** @description What happens to a format of the archive that was the root format of the exported event. */
|
|
4319
|
-
RootFormatImport: "as-format" | "overwrite" | "ignore";
|
|
4320
4684
|
RootFormatResponse: {
|
|
4321
4685
|
rootFormat: components["schemas"]["FullFormatDAO"];
|
|
4322
4686
|
/** @description None if the format was never executed */
|
|
@@ -4392,11 +4756,99 @@ declare interface components {
|
|
|
4392
4756
|
/** @description Additional external documentation for this schema. */
|
|
4393
4757
|
externalDocs?: components["schemas"]["ExternalDocumentation"] | null;
|
|
4394
4758
|
};
|
|
4395
|
-
/** @description
|
|
4396
|
-
|
|
4397
|
-
|
|
4398
|
-
|
|
4399
|
-
|
|
4759
|
+
/** @description A way to score a part, with parameters a node sets. An entity of an event, like a game format. */
|
|
4760
|
+
ScoringDefinition: ScoringDefinition;
|
|
4761
|
+
/** @description A scoring definition of an event. Can be stored invalid, like a format: then every format using it is invalid. */
|
|
4762
|
+
ScoringDefinitionDAO: {
|
|
4763
|
+
customData: {
|
|
4764
|
+
[key: string]: string;
|
|
4765
|
+
};
|
|
4766
|
+
definition: components["schemas"]["ScoringDefinition"];
|
|
4767
|
+
/** @description [ScoringDefinition::validate], empty for a valid definition. */
|
|
4768
|
+
errors: components["schemas"]["ScoringScriptError"][];
|
|
4769
|
+
eventId: components["schemas"]["EventId"];
|
|
4770
|
+
id: components["schemas"]["ScoringDefinitionId"];
|
|
4771
|
+
/** Format: uuid */
|
|
4772
|
+
templateOrigin?: string | null;
|
|
4773
|
+
valid: components["schemas"]["FormatValidity"];
|
|
4774
|
+
};
|
|
4775
|
+
/** @description A way to score a part, with parameters a node sets. An entity of an event, like a game format. */
|
|
4776
|
+
ScoringDefinitionDTO: {
|
|
4777
|
+
description: string;
|
|
4778
|
+
customData?: {
|
|
4779
|
+
[key: string]: string;
|
|
4780
|
+
};
|
|
4781
|
+
direction: components["schemas"]["ScoringDirection"];
|
|
4782
|
+
name: string;
|
|
4783
|
+
/** @description The documentation of each parameter, by name, like the ports of a node. */
|
|
4784
|
+
parameterDocs: {
|
|
4785
|
+
[key: string]: components["schemas"]["PortDoc"];
|
|
4786
|
+
};
|
|
4787
|
+
/** @description The script sees their values as `params`. Every parameter has a default. */
|
|
4788
|
+
parameters: components["schemas"]["RecordTypeWithDefaults"];
|
|
4789
|
+
/** @description The columns the rows of every part must have, the script sees them in `row.attributes`. */
|
|
4790
|
+
requiredColumns: components["schemas"]["RecordTypeHelper_for_ParamRef"];
|
|
4791
|
+
/** @description A graphite script, typechecked like [ScoringPoints::Custom]'s with `params` in addition. */
|
|
4792
|
+
script: string;
|
|
4793
|
+
/** @description Examples of what the definition scores, see [Self::run_test]. */
|
|
4794
|
+
tests: components["schemas"]["ScoringTest"][];
|
|
4795
|
+
};
|
|
4796
|
+
/**
|
|
4797
|
+
* Format: uuid
|
|
4798
|
+
* @description Identifies a scoring definition of an event. Random ([Self::new_random]) from the endpoint, derived for the
|
|
4799
|
+
* fundamental scorings of a new event, or derived by `ImportArchiveMutation`. Deserializing one only yields a
|
|
4800
|
+
* reference to an existing definition; it does not check that it exists.
|
|
4801
|
+
*/
|
|
4802
|
+
ScoringDefinitionId: ScoringDefinitionId;
|
|
4803
|
+
ScoringDefinitionPathVariables_for_CommonWorkspaceId: {
|
|
4804
|
+
eventId: components["schemas"]["EventId"];
|
|
4805
|
+
scoringDefinitionId: components["schemas"]["ScoringDefinitionId"];
|
|
4806
|
+
workspaceId: components["schemas"]["CommonWorkspaceId"];
|
|
4807
|
+
};
|
|
4808
|
+
ScoringDirection: ScoringDirection;
|
|
4809
|
+
/**
|
|
4810
|
+
* @description Scores competitors over several parts, e.g. the races of a series.
|
|
4811
|
+
*
|
|
4812
|
+
* ```text
|
|
4813
|
+
* <R0 extends {}, ...>(Table<R0, Sorted>, ...) -> (Table<{total_points: P, <part name>: P, ...}, Sorted>)
|
|
4814
|
+
* ```
|
|
4815
|
+
*
|
|
4816
|
+
* One input per part and one output table. Competitors are the union of all parts. The script of `points` computes
|
|
4817
|
+
* the points of every competitor in every part. `P` is `Integer` if the script returns integers whatever the
|
|
4818
|
+
* columns of the parts, else `Integer | Float`. If the points are `null` for a part, the competitor is left out of
|
|
4819
|
+
* the result. The total is the sum of the points, without the worst `discards`. The output is ranked by the total in
|
|
4820
|
+
* the direction of `points`, ties are broken by the `tie_breaks` in order, and competitors still tied share the
|
|
4821
|
+
* place.
|
|
4822
|
+
*
|
|
4823
|
+
* With `continues_previous`, the first input is the result of a previous scoring,
|
|
4824
|
+
* `Table<{total_points: Integer | Float}, Sorted>`, and the totals add this node's parts to the previous
|
|
4825
|
+
* `total_points`. The previous result's other columns are carried over, those named like a part are replaced. Ties
|
|
4826
|
+
* keep the previous result's order. Discards and tie breaks only see this node's parts.
|
|
4827
|
+
*/
|
|
4828
|
+
ScoringNode: ScoringNode;
|
|
4829
|
+
/** @description One scored part, e.g. a single race of a series. */
|
|
4830
|
+
ScoringPart: ScoringPart;
|
|
4831
|
+
/** @description The points of a scoring node. */
|
|
4832
|
+
ScoringPoints: ScoringPoints;
|
|
4833
|
+
/** @description The script of a scoring node does not parse or typecheck. */
|
|
4834
|
+
ScoringScriptError: ScoringScriptError;
|
|
4835
|
+
/** @description Parts scored with values of the parameters, and the result they are expected to score to. */
|
|
4836
|
+
ScoringTest: ScoringTest;
|
|
4837
|
+
ScoringTestPart: ScoringTestPart;
|
|
4838
|
+
/**
|
|
4839
|
+
* @description Outputs a deterministic closure (scripts are) with `signature`. Calling it runs `script` with each input bound to the
|
|
4840
|
+
* variable of its name, and what the script evaluates to is the closure's output.
|
|
4841
|
+
*
|
|
4842
|
+
* ```text
|
|
4843
|
+
* () -> (<signature>)
|
|
4844
|
+
* ```
|
|
4845
|
+
*/
|
|
4846
|
+
ScriptClosureNode: ScriptClosureNode;
|
|
4847
|
+
/** @description Only `[a-z0-9-]`, at least one character. */
|
|
4848
|
+
SecretName: string;
|
|
4849
|
+
SecretPath: {
|
|
4850
|
+
extensionIdent: components["schemas"]["ExtensionIdentifier"];
|
|
4851
|
+
name: components["schemas"]["SecretName"];
|
|
4400
4852
|
};
|
|
4401
4853
|
/** @description At most 16 KiB. Its [Debug] does not show the value. */
|
|
4402
4854
|
SecretValue: string;
|
|
@@ -4544,29 +4996,6 @@ declare interface components {
|
|
|
4544
4996
|
SetFormatsFormatGroupQuery: {
|
|
4545
4997
|
formatGroupId?: components["schemas"]["FormatGroupId"] | null;
|
|
4546
4998
|
};
|
|
4547
|
-
/**
|
|
4548
|
-
* @description Place 1 = 1 point, Place 2 = 2 points, etc.
|
|
4549
|
-
* On tie, whoever won the part with the highest priority wins.
|
|
4550
|
-
* If still tied, the next lower priority part is considered etc.
|
|
4551
|
-
*
|
|
4552
|
-
* ```text
|
|
4553
|
-
* (Table<{}, Sorted>, ...) -> (Table<{total_points: Integer, <part name>: Integer, ...}, Sorted>)
|
|
4554
|
-
* ```
|
|
4555
|
-
*
|
|
4556
|
-
* One input per part and one output table, sorted by ascending total points.
|
|
4557
|
-
* Competitors are the union of all parts: a competitor without a place in a part
|
|
4558
|
-
* (missing from the table of that part, or in it without a place) scores one point
|
|
4559
|
-
* more than that part has rows, so not finishing a part is always worse than
|
|
4560
|
-
* finishing it last. An empty part has not taken place yet and scores 0 for everyone.
|
|
4561
|
-
*
|
|
4562
|
-
* With `continues_previous`, the first input is the result of a previous scoring,
|
|
4563
|
-
* `Table<{total_points: Integer}, Sorted>`, and the totals add this node's parts to the previous `total_points`.
|
|
4564
|
-
* The previous result's other columns are carried over, those named like a part are replaced. Ties keep the
|
|
4565
|
-
* previous result's order.
|
|
4566
|
-
*/
|
|
4567
|
-
SimpleScoringNode: SimpleScoringNode;
|
|
4568
|
-
/** @description One scored part, e.g. a single race of a series. */
|
|
4569
|
-
SimpleScoringPart: SimpleScoringPart;
|
|
4570
4999
|
SimplifiedGroup: {
|
|
4571
5000
|
id: components["schemas"]["SimplifiedGroupId"];
|
|
4572
5001
|
name: string;
|
|
@@ -4576,25 +5005,19 @@ declare interface components {
|
|
|
4576
5005
|
* @description Unique per format, not only per section.
|
|
4577
5006
|
*/
|
|
4578
5007
|
SimplifiedGroupId: SimplifiedGroupId;
|
|
4579
|
-
SimplifiedSection: {
|
|
4580
|
-
/** @description In display order. */
|
|
4581
|
-
groups: components["schemas"]["SimplifiedGroup"][];
|
|
4582
|
-
id: components["schemas"]["SimplifiedSectionId"];
|
|
4583
|
-
name: string;
|
|
4584
|
-
};
|
|
4585
|
-
/** Format: uuid */
|
|
4586
|
-
SimplifiedSectionId: SimplifiedSectionId;
|
|
4587
5008
|
/**
|
|
4588
5009
|
* @description How the simplified view arranges the format's nodes. Only the simplified view interprets it: the backend stores it,
|
|
4589
5010
|
* keeps its references consistent ([Self::repaired]) and carries it over to copies with new node ids.
|
|
4590
5011
|
*/
|
|
4591
5012
|
SimplifiedView: {
|
|
5013
|
+
/** @description In display order. */
|
|
5014
|
+
groups: components["schemas"]["SimplifiedGroup"][];
|
|
4592
5015
|
nodes: {
|
|
4593
5016
|
[key: string]: components["schemas"]["NodePlacement"];
|
|
4594
5017
|
};
|
|
4595
|
-
/** @description In display order. */
|
|
4596
|
-
sections: components["schemas"]["SimplifiedSection"][];
|
|
4597
5018
|
};
|
|
5019
|
+
/** @description Where the rows of the competitors sitting out go. They keep no columns. */
|
|
5020
|
+
SitOutHandling: SitOutHandling;
|
|
4598
5021
|
SnapshotMultipart: {
|
|
4599
5022
|
/** Format: binary */
|
|
4600
5023
|
file: Blob;
|
|
@@ -4644,14 +5067,21 @@ declare interface components {
|
|
|
4644
5067
|
*
|
|
4645
5068
|
* for `Static { split_count }`:
|
|
4646
5069
|
* ```text
|
|
4647
|
-
* <C extends {}>(Table<C, Sorted>, Integer
|
|
5070
|
+
* <C extends {}>(table: Table<C, Sorted>, cut_1: Integer, …, cut_<split_count>: Integer)
|
|
5071
|
+
* -> (part_1: Table<C, Sorted>, …, part_<split_count + 1>: Table<C, Sorted>)
|
|
4648
5072
|
* ```
|
|
4649
5073
|
* for `Dynamic`:
|
|
4650
5074
|
* ```text
|
|
4651
|
-
* <C extends {}>(Table<C, Sorted>, Array<Integer>) -> (Array<Table<C, Sorted>>)
|
|
5075
|
+
* <C extends {}>(table: Table<C, Sorted>, cuts: Array<Integer>) -> (parts: Array<Table<C, Sorted>>)
|
|
4652
5076
|
* ```
|
|
4653
5077
|
*/
|
|
4654
5078
|
SplitTableNode: SplitTableNode;
|
|
5079
|
+
/**
|
|
5080
|
+
* Format: uuid
|
|
5081
|
+
* @description Identifies a sport, the content that the root server serves. Unknown ids are not refused: the event keeps
|
|
5082
|
+
* them, clients fall back to the generic sport.
|
|
5083
|
+
*/
|
|
5084
|
+
SportId: string;
|
|
4655
5085
|
/** @description A standalone table of the user. Its kind is always [TableKind::Other], its state is set like the state of any table. */
|
|
4656
5086
|
StandaloneTableDTO: {
|
|
4657
5087
|
columnTypes: components["schemas"]["RecordTypeWithDefaults"];
|
|
@@ -4688,24 +5118,26 @@ declare interface components {
|
|
|
4688
5118
|
*/
|
|
4689
5119
|
gameDepth: number;
|
|
4690
5120
|
id: components["schemas"]["TableId"];
|
|
4691
|
-
/** @description
|
|
4692
|
-
layerOneOwner: components["schemas"]["TableOwner"];
|
|
5121
|
+
/** @description Empty for the entry and result tables of game nodes: clients name game tables by their [Self::table_kind]. */
|
|
4693
5122
|
name: string;
|
|
5123
|
+
/** @description Who created the table. */
|
|
4694
5124
|
owner: components["schemas"]["ContentOwner"];
|
|
5125
|
+
ownership: components["schemas"]["TableOwnership"];
|
|
4695
5126
|
state: components["schemas"]["ContentState"];
|
|
4696
|
-
/** @description Set by nodes. */
|
|
4697
|
-
|
|
4698
|
-
/** @description
|
|
4699
|
-
|
|
5127
|
+
/** @description Set by nodes only. */
|
|
5128
|
+
stateNodes?: components["schemas"]["TableState"] | null;
|
|
5129
|
+
/** @description Set by users only, takes precedence over [Self::state_nodes]. See [Self::resolve_state]. */
|
|
5130
|
+
stateUser?: components["schemas"]["TableState"] | null;
|
|
4700
5131
|
tableKind: components["schemas"]["TableKind"];
|
|
4701
5132
|
variant: components["schemas"]["TableVariant"];
|
|
4702
5133
|
};
|
|
4703
5134
|
TableDTO: {
|
|
4704
5135
|
name: string;
|
|
4705
|
-
/** @description
|
|
5136
|
+
/** @description The [TableDAO::state_user]. */
|
|
4706
5137
|
state?: components["schemas"]["TableState"] | null;
|
|
4707
5138
|
tableKind: components["schemas"]["TableKind"];
|
|
4708
5139
|
};
|
|
5140
|
+
TableFilter: TableFilter;
|
|
4709
5141
|
/**
|
|
4710
5142
|
* Format: uuid
|
|
4711
5143
|
* @description Identifies a table, the primary key of `tables`. Comes from one of:
|
|
@@ -4766,8 +5198,11 @@ declare interface components {
|
|
|
4766
5198
|
/** @description The test id of the node reading the table. */
|
|
4767
5199
|
nodeId: components["schemas"]["FormatNodeTestId"];
|
|
4768
5200
|
};
|
|
4769
|
-
/**
|
|
4770
|
-
|
|
5201
|
+
/**
|
|
5202
|
+
* @description Who writes the rows of a table. Independent of who created it ([ContentOwner]): nodes create user owned tables too,
|
|
5203
|
+
* e.g. the result tables of their games, but a table the user created is always user owned.
|
|
5204
|
+
*/
|
|
5205
|
+
TableOwnership: "node-owned" | "user-owned";
|
|
4771
5206
|
TablePathVariables_for_CommonWorkspaceId: {
|
|
4772
5207
|
eventId: components["schemas"]["EventId"];
|
|
4773
5208
|
tableId: components["schemas"]["TableId"];
|
|
@@ -4821,6 +5256,8 @@ declare interface components {
|
|
|
4821
5256
|
} & {
|
|
4822
5257
|
[key: string]: unknown;
|
|
4823
5258
|
};
|
|
5259
|
+
/** @description A set of tags, each trimmed and not empty. Deserializing normalizes any list of strings into this. */
|
|
5260
|
+
Tags: string[];
|
|
4824
5261
|
TargetDTO: {
|
|
4825
5262
|
acknowledged: components["schemas"]["LogHead"];
|
|
4826
5263
|
backendUrl: string;
|
|
@@ -4938,7 +5375,13 @@ declare interface components {
|
|
|
4938
5375
|
/** @constant */
|
|
4939
5376
|
type: "format-group";
|
|
4940
5377
|
id: components["schemas"]["FormatGroupId"];
|
|
5378
|
+
} | {
|
|
5379
|
+
/** @constant */
|
|
5380
|
+
type: "scoring-definition";
|
|
5381
|
+
id: components["schemas"]["ScoringDefinitionId"];
|
|
4941
5382
|
};
|
|
5383
|
+
/** @description A rule deciding between competitors with the same total. */
|
|
5384
|
+
TieBreak: TieBreak;
|
|
4942
5385
|
/**
|
|
4943
5386
|
* @description The first value are the seconds of the delta, the second are nanoseconds.
|
|
4944
5387
|
* the nanoseconds are always 0 <= nanos < (1000000)
|
|
@@ -4947,6 +5390,11 @@ declare interface components {
|
|
|
4947
5390
|
number,
|
|
4948
5391
|
number
|
|
4949
5392
|
];
|
|
5393
|
+
/** @description Query of every endpoint that reads a running workspace. */
|
|
5394
|
+
TimeMachineQuery: {
|
|
5395
|
+
/** @description Shows the workspace as it was right after this log entry, read-only. `0` is the empty workspace. */
|
|
5396
|
+
atEntry?: components["schemas"]["LogId"] | null;
|
|
5397
|
+
};
|
|
4950
5398
|
/** @description One way a row got to where it is. */
|
|
4951
5399
|
Trail: Trail;
|
|
4952
5400
|
Type: Type;
|
|
@@ -5072,6 +5520,11 @@ declare interface components {
|
|
|
5072
5520
|
test: components["schemas"]["FormatTestDefinition"];
|
|
5073
5521
|
};
|
|
5074
5522
|
UpdateGameFormatMutation: {
|
|
5523
|
+
/**
|
|
5524
|
+
* @description If true, saves the game format although its settings don't validate, invalidating the formats using it and
|
|
5525
|
+
* with them their games. Implies `invalidate_formats`.
|
|
5526
|
+
*/
|
|
5527
|
+
force?: boolean;
|
|
5075
5528
|
gameFormat: components["schemas"]["GameFormatDTO"];
|
|
5076
5529
|
id: components["schemas"]["GameFormatId"];
|
|
5077
5530
|
/** @description If true, will proceed even if that invalidates formats. */
|
|
@@ -5082,6 +5535,12 @@ declare interface components {
|
|
|
5082
5535
|
modifyRows: boolean;
|
|
5083
5536
|
};
|
|
5084
5537
|
UpdateGameFormatQuery: {
|
|
5538
|
+
/**
|
|
5539
|
+
* @description If true, saves the game format although its settings don't validate, invalidating the formats using it and
|
|
5540
|
+
* with them their games. Implies `invalidateFormats`.
|
|
5541
|
+
* @default false
|
|
5542
|
+
*/
|
|
5543
|
+
force: boolean;
|
|
5085
5544
|
/**
|
|
5086
5545
|
* @description If true, will proceed even if that invalidates formats.
|
|
5087
5546
|
* @default false
|
|
@@ -5102,8 +5561,38 @@ declare interface components {
|
|
|
5102
5561
|
game: components["schemas"]["GameDTO"];
|
|
5103
5562
|
id: components["schemas"]["GameId"];
|
|
5104
5563
|
};
|
|
5564
|
+
/**
|
|
5565
|
+
* @description Stores the definition even if it is invalid, with its errors. The formats using it are revalidated, the parameters
|
|
5566
|
+
* of their scoring nodes made valid for the new parameters with the defaults.
|
|
5567
|
+
*/
|
|
5568
|
+
UpdateScoringDefinitionMutation: {
|
|
5569
|
+
id: components["schemas"]["ScoringDefinitionId"];
|
|
5570
|
+
/** @description If true, will proceed even if that invalidates formats, like an invalid definition does. */
|
|
5571
|
+
invalidateFormats: boolean;
|
|
5572
|
+
/** @description If true, will reset now incompatible parameters of the scoring nodes to their defaults. */
|
|
5573
|
+
modifyUsages: boolean;
|
|
5574
|
+
scoringDefinition: components["schemas"]["ScoringDefinitionDTO"];
|
|
5575
|
+
};
|
|
5576
|
+
UpdateScoringDefinitionQuery: {
|
|
5577
|
+
/**
|
|
5578
|
+
* @description If true, will proceed even if that invalidates formats.
|
|
5579
|
+
* @default false
|
|
5580
|
+
*/
|
|
5581
|
+
invalidateFormats: boolean;
|
|
5582
|
+
/**
|
|
5583
|
+
* @description If true, will reset now incompatible parameters of the scoring nodes to their defaults.
|
|
5584
|
+
* @default false
|
|
5585
|
+
*/
|
|
5586
|
+
modifyUsages: boolean;
|
|
5587
|
+
};
|
|
5105
5588
|
/** @description Renames a standalone table of the user and sets its column types. */
|
|
5106
5589
|
UpdateStandaloneTableMutation: {
|
|
5590
|
+
/**
|
|
5591
|
+
* @description Lets changed column types invalidate the formats whose InputTableNodes link the table. Without it, the update
|
|
5592
|
+
* fails if that would make any of them invalid.
|
|
5593
|
+
* @default false
|
|
5594
|
+
*/
|
|
5595
|
+
invalidateFormats: boolean;
|
|
5107
5596
|
/**
|
|
5108
5597
|
* @description Makes the rows and row mutations valid for changed column types, see [RecordTypeWithDefaults::make_valid].
|
|
5109
5598
|
* Without it, the update fails if that would change any of them.
|
|
@@ -5113,6 +5602,12 @@ declare interface components {
|
|
|
5113
5602
|
tableId: components["schemas"]["TableId"];
|
|
5114
5603
|
};
|
|
5115
5604
|
UpdateStandaloneTableQuery: {
|
|
5605
|
+
/**
|
|
5606
|
+
* @description If true, changed column types may make the formats invalid whose input table nodes link the table. Otherwise
|
|
5607
|
+
* the update fails with `format-revalidation` naming them.
|
|
5608
|
+
* @default false
|
|
5609
|
+
*/
|
|
5610
|
+
invalidateFormats: boolean;
|
|
5116
5611
|
/**
|
|
5117
5612
|
* @description If true, makes the rows and row mutations valid for changed column types (missing or mistyped columns get the
|
|
5118
5613
|
* column's default). Otherwise the update fails with `change-would-modify-rows` if that would change any of them.
|
|
@@ -5155,6 +5650,8 @@ declare interface components {
|
|
|
5155
5650
|
* @description Changes in here are breaking changes for logs
|
|
5156
5651
|
*/
|
|
5157
5652
|
Value_for_SerializableNonPrimitiveValue: Value<SerializableNonPrimitiveValue>;
|
|
5653
|
+
/** @description A name a script can refer to as a variable: an identifier that isn't a keyword. */
|
|
5654
|
+
VariableName: VariableName;
|
|
5158
5655
|
/**
|
|
5159
5656
|
* @description The ids inside an archive (in its format DTO and here) are archive-local join keys, not ids of a workspace: each
|
|
5160
5657
|
* maps to the [Archive::uuid] of the dependency it refers to. Importing gives the entities new ids.
|
|
@@ -5172,6 +5669,9 @@ declare interface components {
|
|
|
5172
5669
|
gameFormats: {
|
|
5173
5670
|
[key: string]: string;
|
|
5174
5671
|
};
|
|
5672
|
+
scoringDefinitions?: {
|
|
5673
|
+
[key: string]: string;
|
|
5674
|
+
};
|
|
5175
5675
|
scriptedNodes: {
|
|
5176
5676
|
[key: string]: string;
|
|
5177
5677
|
};
|
|
@@ -5200,6 +5700,8 @@ declare interface components {
|
|
|
5200
5700
|
/** @description Anything but normal makes the workspace read-only. */
|
|
5201
5701
|
state: components["schemas"]["WorkspaceState"];
|
|
5202
5702
|
};
|
|
5703
|
+
/** @description What a zip node does with lists of different lengths. */
|
|
5704
|
+
ZipLengths: ZipLengths;
|
|
5203
5705
|
};
|
|
5204
5706
|
responses: never;
|
|
5205
5707
|
parameters: never;
|
|
@@ -5262,6 +5764,27 @@ paginatedRowModel: (table: Table_2<any, any>) => () => RowModel<any, any>;
|
|
|
5262
5764
|
columnVisibilityFeature: TableFeature;
|
|
5263
5765
|
}, TData>;
|
|
5264
5766
|
|
|
5767
|
+
/**
|
|
5768
|
+
* A page of the create-event assistant. The assistant shows it after its own steps, once per contribution of the
|
|
5769
|
+
* extensions installed on the event, in install order. The extension stores what is entered itself, saving every change
|
|
5770
|
+
* right away like the rest of the assistant; the assistant only keeps the page's {@link CreateEventAssistantProgress},
|
|
5771
|
+
* shared by everyone working on the event.
|
|
5772
|
+
*/
|
|
5773
|
+
export declare interface CreateEventAssistantContribution {
|
|
5774
|
+
title: Record<Locales, string>;
|
|
5775
|
+
Component: FC<CreateEventAssistantProps>;
|
|
5776
|
+
}
|
|
5777
|
+
|
|
5778
|
+
/** Whether the user can go on from the page to the next step of the assistant (`done`) or not yet (`incomplete`). */
|
|
5779
|
+
export declare type CreateEventAssistantProgress = 'incomplete' | 'done';
|
|
5780
|
+
|
|
5781
|
+
export declare type CreateEventAssistantProps = EventPath & {
|
|
5782
|
+
progress: CreateEventAssistantProgress;
|
|
5783
|
+
onProgressChange: (progress: CreateEventAssistantProgress) => void;
|
|
5784
|
+
};
|
|
5785
|
+
|
|
5786
|
+
declare type CustomControl = "sort-criterion";
|
|
5787
|
+
|
|
5265
5788
|
export declare const DateTimeInput: FC<DateTimeInputProps>;
|
|
5266
5789
|
|
|
5267
5790
|
export declare interface DateTimeInputProps {
|
|
@@ -5294,22 +5817,45 @@ declare interface DetailedSupertypeDiagnostics<T> {
|
|
|
5294
5817
|
export declare interface DialogButton<T> {
|
|
5295
5818
|
value: T;
|
|
5296
5819
|
label: ReactNode;
|
|
5297
|
-
|
|
5820
|
+
/** Default: 'secondary'. */
|
|
5821
|
+
theme?: AppButtonType;
|
|
5822
|
+
}
|
|
5823
|
+
|
|
5824
|
+
/** What a dialog says: a short question or statement, the explanation of it and how serious it is. */
|
|
5825
|
+
export declare interface DialogMessage {
|
|
5826
|
+
title: ReactNode;
|
|
5827
|
+
body?: ReactNode;
|
|
5828
|
+
/** Default: 'plain', without an icon. 'danger' is for what destroys data or has failed. */
|
|
5829
|
+
tone?: DialogTone;
|
|
5298
5830
|
}
|
|
5299
5831
|
|
|
5300
|
-
declare interface DialogOptions {
|
|
5832
|
+
export declare interface DialogOptions {
|
|
5301
5833
|
/** Shows it in a window (see `ModalConfig.window`), for content with links that the user may follow first. */
|
|
5302
|
-
window?:
|
|
5303
|
-
title: ReactNode;
|
|
5304
|
-
};
|
|
5834
|
+
window?: WindowOptions;
|
|
5305
5835
|
}
|
|
5306
5836
|
|
|
5837
|
+
export declare type DialogTone = 'plain' | 'info' | 'warning' | 'danger';
|
|
5838
|
+
|
|
5307
5839
|
/**
|
|
5308
5840
|
* Greys out a disabled competitor wherever it is shown. Nodes don't spawn disabled competitors, but they can still be
|
|
5309
5841
|
* in classes and tables.
|
|
5310
5842
|
*/
|
|
5311
5843
|
export declare function disabledCompetitorClassName(competitor: Pick<CompetitorDAO, 'enabled'> | undefined): string | undefined;
|
|
5312
5844
|
|
|
5845
|
+
/**
|
|
5846
|
+
* A competitor's worst results that don't count towards their total.
|
|
5847
|
+
*/
|
|
5848
|
+
declare interface Discards {
|
|
5849
|
+
/**
|
|
5850
|
+
* How many results are discarded.
|
|
5851
|
+
*/
|
|
5852
|
+
count: number;
|
|
5853
|
+
/**
|
|
5854
|
+
* A result whose `dqs` (see [script_type_context]) hold one of these keys is never discarded.
|
|
5855
|
+
*/
|
|
5856
|
+
keep: DqKey[];
|
|
5857
|
+
}
|
|
5858
|
+
|
|
5313
5859
|
/**
|
|
5314
5860
|
* Disqualifies every row of the table it receives, throwing them all under `key` so that a
|
|
5315
5861
|
* [`GroupNode`](super::group_node::GroupNode) further up the graph can collect them.
|
|
@@ -5318,39 +5864,42 @@ declare interface DisqualifyNode {
|
|
|
5318
5864
|
key: DqKey;
|
|
5319
5865
|
}
|
|
5320
5866
|
|
|
5321
|
-
/**
|
|
5322
|
-
* What a node does by default with a disqualification it can throw.
|
|
5323
|
-
*/
|
|
5324
|
-
declare type DqDefaultStrategy = "throw" | "output-placed" | "output-unplaced" | "append-placed" | "append-unplaced";
|
|
5325
|
-
|
|
5326
5867
|
/** A caught disqualification. The strategy decides how multiple caught tables of the key get merged. */
|
|
5327
5868
|
declare interface DqEntry {
|
|
5328
5869
|
key: DqKey_2;
|
|
5329
5870
|
mergeStrategy: MultiplexingStrategy_2;
|
|
5871
|
+
/** Whether the caught competitors keep their places. Disqualified competitors are usually unplaced. */
|
|
5872
|
+
placed: boolean;
|
|
5330
5873
|
}
|
|
5331
5874
|
|
|
5332
|
-
declare type DqKey = string;
|
|
5875
|
+
export declare type DqKey = string;
|
|
5333
5876
|
|
|
5334
5877
|
declare type DqKey_2 = components['schemas']['DqKey'];
|
|
5335
5878
|
|
|
5879
|
+
export declare type DqKind = { type: "disqualified" };
|
|
5880
|
+
|
|
5881
|
+
export declare interface DqRecord {
|
|
5882
|
+
key: DqKey;
|
|
5883
|
+
at: DqSource;
|
|
5884
|
+
kind: DqKind;
|
|
5885
|
+
}
|
|
5886
|
+
|
|
5336
5887
|
/**
|
|
5337
|
-
* What a
|
|
5888
|
+
* What a game format says about one of its disqualification kinds.
|
|
5338
5889
|
*/
|
|
5339
5890
|
declare interface DqSettings {
|
|
5340
5891
|
description: string;
|
|
5341
5892
|
/**
|
|
5342
|
-
*
|
|
5893
|
+
* What the game nodes of the game format do with the disqualification by default. Each game node can override
|
|
5894
|
+
* it, see `GameNodeDTO::catches`.
|
|
5343
5895
|
*/
|
|
5344
|
-
|
|
5896
|
+
strategy: GameDqHandling;
|
|
5345
5897
|
}
|
|
5346
5898
|
|
|
5347
5899
|
/**
|
|
5348
|
-
*
|
|
5900
|
+
* Where a competitor got disqualified.
|
|
5349
5901
|
*/
|
|
5350
|
-
declare type
|
|
5351
|
-
|
|
5352
|
-
/** How a game or format node surfaces a disqualification it catches. */
|
|
5353
|
-
declare type DqStrategy_2 = components['schemas']['DqStrategy'];
|
|
5902
|
+
export declare type DqSource = { type: "game"; game: string; ladder: boolean; formatTags: string[] } | { type: "node"; node: string };
|
|
5354
5903
|
|
|
5355
5904
|
export declare type DraggableChildProps = React_2.HTMLAttributes<HTMLElement> & React_2.RefAttributes<HTMLElement>;
|
|
5356
5905
|
|
|
@@ -5374,7 +5923,9 @@ export declare type EngineQueryOptions<T> = UnusedSkipTokenOptions<T, Error, T,
|
|
|
5374
5923
|
*/
|
|
5375
5924
|
declare type ErasedScopedTypeRef<T> = { type: "Param"; data: ParamRef } | { type: "ScopedExpr"; data: { expr: TypeExpr<T, ErasedScopedTypeRef<T>> } };
|
|
5376
5925
|
|
|
5377
|
-
declare
|
|
5926
|
+
declare interface EventCompetitorsNode {
|
|
5927
|
+
competitorType: CompetitorType_2;
|
|
5928
|
+
}
|
|
5378
5929
|
|
|
5379
5930
|
export declare const eventFoldersByEventQueryOptions: (workspaceId: CommonWorkspaceId, eventId: EventId) => EngineQueryOptions<ContentInEventFolderDTO[]>;
|
|
5380
5931
|
|
|
@@ -5395,6 +5946,10 @@ export declare class ExpressionInContextWasm {
|
|
|
5395
5946
|
private constructor();
|
|
5396
5947
|
free(): void;
|
|
5397
5948
|
[Symbol.dispose](): void;
|
|
5949
|
+
/**
|
|
5950
|
+
* The type the expression evaluates to.
|
|
5951
|
+
*/
|
|
5952
|
+
returnType(): TypeExpr<Type, ParamRef>;
|
|
5398
5953
|
/**
|
|
5399
5954
|
* Runs the expression with the provided primitive values.
|
|
5400
5955
|
* @throws {ExpressionInContextError} if the expression is not valid or
|
|
@@ -5419,6 +5974,7 @@ export declare function extensionContribution<K extends keyof ExtensionContribut
|
|
|
5419
5974
|
|
|
5420
5975
|
/** Props the host passes when rendering an inject at each slot. */
|
|
5421
5976
|
export declare type ExtensionContributions = {
|
|
5977
|
+
'create-event-assistant': CreateEventAssistantContribution;
|
|
5422
5978
|
'game-format-page-bottom': GameFormatPageContribution;
|
|
5423
5979
|
'game-page': GamePageContribution;
|
|
5424
5980
|
'table-drop': TableDropContribution;
|
|
@@ -5488,6 +6044,15 @@ export declare interface ExtensionSidebarContribution {
|
|
|
5488
6044
|
|
|
5489
6045
|
export declare type ExtensionSidebarProps = EventPath;
|
|
5490
6046
|
|
|
6047
|
+
/**
|
|
6048
|
+
* A tutorial of the calling extension: its `id` only has to be unique within the extension, the state is stored as
|
|
6049
|
+
* preference `tutorial:ext:<identifier>/<id>`, `identifier` being the one the extension is installed under.
|
|
6050
|
+
*/
|
|
6051
|
+
export declare interface ExtensionTutorial {
|
|
6052
|
+
scope: 'extension';
|
|
6053
|
+
id: string;
|
|
6054
|
+
}
|
|
6055
|
+
|
|
5491
6056
|
declare type ExtractRecordFieldError<T> = { type: "field-does-not-exist"; data: string } | { type: "invalid-type"; data: { field: string; value: Value<T> | null } };
|
|
5492
6057
|
|
|
5493
6058
|
export declare interface FieldTypeWithDefault {
|
|
@@ -5496,6 +6061,10 @@ export declare interface FieldTypeWithDefault {
|
|
|
5496
6061
|
* Validated to be a subtype of field_type
|
|
5497
6062
|
*/
|
|
5498
6063
|
default: Value | null;
|
|
6064
|
+
/**
|
|
6065
|
+
* Never blank. Skipped when `None` so that types without one serialize (and hash) as before.
|
|
6066
|
+
*/
|
|
6067
|
+
description?: string;
|
|
5499
6068
|
}
|
|
5500
6069
|
|
|
5501
6070
|
/** Games and result tables live in folders, and folders in folders. */
|
|
@@ -5509,6 +6078,11 @@ declare type FolderContentRef = {
|
|
|
5509
6078
|
|
|
5510
6079
|
declare type FolderId = FormatNodeId;
|
|
5511
6080
|
|
|
6081
|
+
/**
|
|
6082
|
+
* What the nodes representing a format do with a disqualification it raises.
|
|
6083
|
+
*/
|
|
6084
|
+
declare type FormatCatch = "throw" | "output-unplaced";
|
|
6085
|
+
|
|
5512
6086
|
/**
|
|
5513
6087
|
* How a competitor is written out. Kept apart from the components that show competitors so both
|
|
5514
6088
|
* the picker and the selector can reach it without importing each other.
|
|
@@ -5523,6 +6097,23 @@ declare interface FormatConnectionDTO {
|
|
|
5523
6097
|
pins: ConnectionPin[];
|
|
5524
6098
|
}
|
|
5525
6099
|
|
|
6100
|
+
/**
|
|
6101
|
+
* What a format says about a disqualification kind it raises.
|
|
6102
|
+
*/
|
|
6103
|
+
declare interface FormatDqKind {
|
|
6104
|
+
description?: string;
|
|
6105
|
+
/**
|
|
6106
|
+
* What the nodes representing the format do with the disqualification.
|
|
6107
|
+
*/
|
|
6108
|
+
catch: FormatCatch;
|
|
6109
|
+
/**
|
|
6110
|
+
* The columns of the rows the format throws with the kind, which the nodes representing it throw them with. The
|
|
6111
|
+
* editor sets them to what it infers; the validator checks that what the graph throws has them. None known: rows
|
|
6112
|
+
* without columns.
|
|
6113
|
+
*/
|
|
6114
|
+
columns?: RecordTypeHelper;
|
|
6115
|
+
}
|
|
6116
|
+
|
|
5526
6117
|
declare type FormatGroupId = Brand<string, 'formatGroupId'>;
|
|
5527
6118
|
|
|
5528
6119
|
/**
|
|
@@ -5577,7 +6168,7 @@ declare type FormatTestId = Brand<string, 'formatTestId'>;
|
|
|
5577
6168
|
/**
|
|
5578
6169
|
* Represents a state in which the format is not valid for execution but can be stored in the db.
|
|
5579
6170
|
*/
|
|
5580
|
-
declare type FormatValidationError = { type: "uncaught-throw"; data: Record<DqKey, RowTypeHelper[]> } | { type: "unthrown-disqualification-kinds"; data: DqKey[] } | { type: "root-format-with-disqualification-kinds" } | { type: "graph-is-cyclic" } | { type: "too-many-inputs"; data: ParentType } | { type: "too-many-outputs"; data: ParentType } | { type: "invalid-node"; data: [FormatNodeId, InvalidNodeReason] } | { type: "too-many-closure-inputs" } | { type: "root-format-with-input-or-output" } | { type: "child-format-is-invalid"; data: FormatId } | { type: "root-format-referenced"; data: FormatId } | { type: "cyclic-parent-relation"; data: FormatNodeId[] } | { type: "illegal-child"; data: FormatNodeId } | { type: "parent-connected-to-child"; data: { parent: FormatNodeId; child: FormatNodeId } } | { type: "connection-escapes-scope"; data: { source: FormatNodeId; target: FormatNodeId; scope: FormatNodeId } } | { type: "input-or-output-node-with-parent" } | { type: "node-configuration-error"; data: NodeConfigurationError } | { type: "cyclic-format-dependency" } | { type: "type-validation-errors"; data: ValidationError<Type>[] } | { type: "static-input-received-non-static-connection" } | { type: "nodety-error"; data: NodetyError } | { type: "format-of-other-event-referenced"; data: FormatId } | { type: "invalid-signature" } | { type: "missing-output-node" };
|
|
6171
|
+
declare type FormatValidationError = { type: "uncaught-throw"; data: Record<DqKey, RowTypeHelper[]> } | { type: "unthrown-disqualification-kinds"; data: DqKey[] } | { type: "thrown-columns-not-as-declared"; data: { key: DqKey; thrown: RecordTypeHelper } } | { type: "root-format-with-disqualification-kinds" } | { type: "graph-is-cyclic" } | { type: "too-many-inputs"; data: ParentType } | { type: "too-many-outputs"; data: ParentType } | { type: "invalid-node"; data: [FormatNodeId, InvalidNodeReason] } | { type: "invalid-scoring-script"; data: [FormatNodeId, ScoringScriptError] } | { type: "scoring-definition-is-invalid"; data: [FormatNodeId, ScoringDefinitionId] } | { type: "scoring-direction-mismatch"; data: FormatNodeId } | { type: "too-many-closure-inputs" } | { type: "root-format-with-input-or-output" } | { type: "child-format-is-invalid"; data: FormatId } | { type: "root-format-referenced"; data: FormatId } | { type: "cyclic-parent-relation"; data: FormatNodeId[] } | { type: "illegal-child"; data: FormatNodeId } | { type: "parent-connected-to-child"; data: { parent: FormatNodeId; child: FormatNodeId } } | { type: "connection-escapes-scope"; data: { source: FormatNodeId; target: FormatNodeId; scope: FormatNodeId } } | { type: "input-or-output-node-with-parent" } | { type: "node-configuration-error"; data: NodeConfigurationError } | { type: "cyclic-format-dependency" } | { type: "type-validation-errors"; data: ValidationError<Type>[] } | { type: "static-input-received-non-static-connection" } | { type: "nodety-error"; data: NodetyError } | { type: "format-of-other-event-referenced"; data: FormatId } | { type: "invalid-signature" } | { type: "missing-output-node" } | { type: "effectful-node"; data: FormatNodeId };
|
|
5581
6172
|
|
|
5582
6173
|
declare type FormatValidity = "invalid" | "valid";
|
|
5583
6174
|
|
|
@@ -5590,11 +6181,11 @@ export declare type FormFieldHookId = object;
|
|
|
5590
6181
|
|
|
5591
6182
|
export declare interface FormFieldMeta {
|
|
5592
6183
|
/**
|
|
5593
|
-
* true if setValue has been called at least once since the last reset
|
|
6184
|
+
* true if setValue has been called at least once since the last reset, so the field shows a value of its own
|
|
5594
6185
|
*/
|
|
5595
6186
|
isTouched: boolean;
|
|
5596
6187
|
/**
|
|
5597
|
-
* true if the working value differs from the base value
|
|
6188
|
+
* true if the working value differs from the base value and is not being saved
|
|
5598
6189
|
*/
|
|
5599
6190
|
isChanged: boolean;
|
|
5600
6191
|
/**
|
|
@@ -5635,7 +6226,7 @@ export declare interface FormFieldProps<I, O = I> {
|
|
|
5635
6226
|
}
|
|
5636
6227
|
|
|
5637
6228
|
export declare interface FormFieldRegistry {
|
|
5638
|
-
registerFormField: (hookId: FormFieldHookId, formField:
|
|
6229
|
+
registerFormField: (hookId: FormFieldHookId, formField: GroupedFormField) => void;
|
|
5639
6230
|
unregisterFormField: (hookId: FormFieldHookId) => void;
|
|
5640
6231
|
/**
|
|
5641
6232
|
* `useFormField` bound to this registry. Follows the rules of hooks:
|
|
@@ -5662,13 +6253,21 @@ declare type GameDivision = {
|
|
|
5662
6253
|
type: 'fixed';
|
|
5663
6254
|
strategy: 'serpentine' | 'roundrobin';
|
|
5664
6255
|
count: number;
|
|
5665
|
-
}
|
|
6256
|
+
}
|
|
6257
|
+
/** The min and max table size of the distribute table node: `maxSize - minSize` are its backfill rounds. */
|
|
6258
|
+
| {
|
|
5666
6259
|
type: 'dynamic';
|
|
5667
6260
|
strategy: 'serpentine' | 'roundrobin';
|
|
6261
|
+
minSize: number;
|
|
5668
6262
|
maxSize: number;
|
|
5669
|
-
allowBackfill: boolean;
|
|
5670
6263
|
};
|
|
5671
6264
|
|
|
6265
|
+
/**
|
|
6266
|
+
* What a game node does with a disqualification kind of its game format: throw it on, or catch it with a
|
|
6267
|
+
* [LadderDqStrategy]. The game format sets the default for its game nodes, each node can override it.
|
|
6268
|
+
*/
|
|
6269
|
+
declare type GameDqHandling = "throw" | "output-unplaced" | "append-placed" | "append-unplaced" | "append-ladder-placed" | "append-ladder-unplaced";
|
|
6270
|
+
|
|
5672
6271
|
export declare type GameDTO = components['schemas']['GameDTO'];
|
|
5673
6272
|
|
|
5674
6273
|
export declare type GameFormatDTO = components['schemas']['GameFormatDTO'];
|
|
@@ -5692,34 +6291,56 @@ export declare type GameFormatPageProps = EventPath & {
|
|
|
5692
6291
|
* result, after the result has been entered. They never change the stored result of the game, only
|
|
5693
6292
|
* the result table the game node outputs.
|
|
5694
6293
|
*/
|
|
5695
|
-
declare type GameFormatPostProcessingStep = { type: "disqualify"; data: { key: DqKey; expression: string } } | { type: "set-output-column"; data: { column: string; columnType: TypeExpr<Type>; expression: string } };
|
|
6294
|
+
declare type GameFormatPostProcessingStep = { type: "disqualify"; data: { key: DqKey; expression: string } } | { type: "set-output-column"; data: { column: string; columnType: TypeExpr<Type>; expression: string } } | { type: "add-to-history"; data: { addToHistory: string } };
|
|
6295
|
+
|
|
6296
|
+
/**
|
|
6297
|
+
* One step of a game format's pre processing. Steps run in order on every row of a game's entry list, before the
|
|
6298
|
+
* game.
|
|
6299
|
+
*/
|
|
6300
|
+
declare type GameFormatPreProcessingStep = { type: "sit-out"; data: { condition: string; thenAddToHistory: string; handling: SitOutHandling } } | { type: "drop"; data: { condition: string } };
|
|
6301
|
+
|
|
6302
|
+
/**
|
|
6303
|
+
* A pre or post processing step with a description for the people reading the game format.
|
|
6304
|
+
*/
|
|
6305
|
+
declare type GameFormatStep<T> = T & { description?: string };
|
|
5696
6306
|
|
|
5697
6307
|
export declare type GameId = Brand<string, 'gameId'>;
|
|
5698
6308
|
|
|
5699
|
-
declare type GameKind =
|
|
6309
|
+
declare type GameKind =
|
|
6310
|
+
/** `catches` overrides what the game format does with its disqualification kinds, see `GameNodeDTO.catches`. */
|
|
6311
|
+
{
|
|
5700
6312
|
type: 'game-node';
|
|
5701
6313
|
gameFormatId: GameFormatId;
|
|
5702
|
-
|
|
6314
|
+
kind: GameNodeKind;
|
|
6315
|
+
catches?: Record<DqKey_2, GameDqHandling>;
|
|
5703
6316
|
} | {
|
|
5704
6317
|
type: 'gamified-format';
|
|
5705
6318
|
formatId: FormatId;
|
|
5706
6319
|
};
|
|
5707
6320
|
|
|
6321
|
+
/**
|
|
6322
|
+
* How many games a game node plays and how they depend on each other.
|
|
6323
|
+
*/
|
|
6324
|
+
declare type GameModeKind = "single" | "parallel" | "ladder";
|
|
6325
|
+
|
|
5708
6326
|
declare interface GameNodeDTO {
|
|
5709
|
-
variant: GameNodeVariant;
|
|
5710
6327
|
gameFormatId: GameFormatId;
|
|
6328
|
+
kind: GameModeKind;
|
|
6329
|
+
/**
|
|
6330
|
+
* The finals of a ladder node, nothing for other kinds.
|
|
6331
|
+
*/
|
|
6332
|
+
ladder?: LadderNode | null;
|
|
5711
6333
|
/**
|
|
5712
|
-
*
|
|
6334
|
+
* What the node does with a disqualification kind of its game format, overriding the game format's default for
|
|
6335
|
+
* it (its [DqSettings]). Only keys the game format raises, see [GameNodeKind::catch_dqs].
|
|
5713
6336
|
*/
|
|
5714
|
-
|
|
6337
|
+
catches?: Record<DqKey, GameDqHandling>;
|
|
5715
6338
|
}
|
|
5716
6339
|
|
|
5717
6340
|
/**
|
|
5718
|
-
*
|
|
6341
|
+
* What a game node plays: its kind with the node's settings for ladders.
|
|
5719
6342
|
*/
|
|
5720
|
-
declare type
|
|
5721
|
-
|
|
5722
|
-
declare type GameNodeVariant_2 = components['schemas']['GameNodeVariant'];
|
|
6343
|
+
declare type GameNodeKind = { type: "single" } | { type: "parallel" } | { type: "ladder"; data: LadderNode };
|
|
5723
6344
|
|
|
5724
6345
|
export declare type GamePageContribution = FormContribution<GamePageProps & {
|
|
5725
6346
|
game: WorkingGameDTO;
|
|
@@ -5729,7 +6350,7 @@ export declare type GamePageProps = EventPath & {
|
|
|
5729
6350
|
gameId: GameId | null;
|
|
5730
6351
|
};
|
|
5731
6352
|
|
|
5732
|
-
/** Where a game goes in the
|
|
6353
|
+
/** Where a game goes in the flow. */
|
|
5733
6354
|
declare type GamePlace = Omit<AddGameEdit, 'type' | 'game' | 'division'>;
|
|
5734
6355
|
|
|
5735
6356
|
export declare const gamesWithTablesMappedByEventQO: (workspaceId: CommonWorkspaceId, eventId: EventId) => EngineQueryOptions<Map<GameId, GameWithTables>>;
|
|
@@ -5763,6 +6384,28 @@ export declare const getTableByIdQueryOptions: (workspaceId: CommonWorkspaceId,
|
|
|
5763
6384
|
*/
|
|
5764
6385
|
declare type GraphLocation = { type: "Edge"; data: number } | { type: "InputPort"; data: { nodeIdx: number; inputIdx: number } };
|
|
5765
6386
|
|
|
6387
|
+
/**
|
|
6388
|
+
* How a group outputs the disqualifications of a key it catches.
|
|
6389
|
+
*/
|
|
6390
|
+
declare interface GroupCatch {
|
|
6391
|
+
/**
|
|
6392
|
+
* How multiple caught tables get merged.
|
|
6393
|
+
*/
|
|
6394
|
+
merge: MultiplexingStrategy;
|
|
6395
|
+
/**
|
|
6396
|
+
* Whether the merged competitors keep their places. Disqualified competitors are usually unplaced.
|
|
6397
|
+
*/
|
|
6398
|
+
placed: boolean;
|
|
6399
|
+
}
|
|
6400
|
+
|
|
6401
|
+
/** A field as its group sees it, to take its value through a save. */
|
|
6402
|
+
export declare interface GroupedFormField extends FormFieldMeta {
|
|
6403
|
+
/** Keeps showing the overwritten value, as saved and no longer persisted, until `settle`. */
|
|
6404
|
+
commit: () => void;
|
|
6405
|
+
/** Drops the committed value, once the base value holds what was saved. */
|
|
6406
|
+
settle: () => void;
|
|
6407
|
+
}
|
|
6408
|
+
|
|
5766
6409
|
/**
|
|
5767
6410
|
* Contains other nodes. It can add its name to the folder path of its descendants and catch the disqualifications
|
|
5768
6411
|
* they throw.
|
|
@@ -5774,10 +6417,9 @@ declare interface GroupNode {
|
|
|
5774
6417
|
*/
|
|
5775
6418
|
folder: boolean;
|
|
5776
6419
|
/**
|
|
5777
|
-
* The node has one output per catch key, in order.
|
|
5778
|
-
* caught tables of the same key get merged.
|
|
6420
|
+
* The node has one output per catch key, in order.
|
|
5779
6421
|
*/
|
|
5780
|
-
catches: Record<DqKey,
|
|
6422
|
+
catches: Record<DqKey, GroupCatch>;
|
|
5781
6423
|
}
|
|
5782
6424
|
|
|
5783
6425
|
/** The settings of a group node: BE-C's unified folder, group and catch-dq node. */
|
|
@@ -5794,22 +6436,32 @@ declare interface GroupSettings {
|
|
|
5794
6436
|
catches: DqEntry[];
|
|
5795
6437
|
}
|
|
5796
6438
|
|
|
5797
|
-
declare type GTFilterKind = { type: "class-filter" } | { type: "gender" } | { type: "comparison-filter"; data: ComparisonOp } | { type: "custom" };
|
|
5798
|
-
|
|
5799
6439
|
export declare const H1: FC<H1Props>;
|
|
5800
6440
|
|
|
5801
|
-
export declare
|
|
5802
|
-
children?: ReactNode;
|
|
6441
|
+
export declare type H1Props = {
|
|
5803
6442
|
className?: string;
|
|
5804
|
-
}
|
|
6443
|
+
} & HeadingContent;
|
|
5805
6444
|
|
|
5806
6445
|
export declare const H2: FC<H2Props>;
|
|
5807
6446
|
|
|
5808
|
-
export declare
|
|
5809
|
-
children?: ReactNode;
|
|
6447
|
+
export declare type H2Props = {
|
|
5810
6448
|
className?: string;
|
|
5811
6449
|
noMargin?: boolean;
|
|
5812
|
-
}
|
|
6450
|
+
} & HeadingContent;
|
|
6451
|
+
|
|
6452
|
+
/** A tutorial is named by its heading, so a heading with one has plain text. */
|
|
6453
|
+
export declare type HeadingContent = {
|
|
6454
|
+
children?: ReactNode;
|
|
6455
|
+
tutorial?: undefined;
|
|
6456
|
+
} | {
|
|
6457
|
+
children: string;
|
|
6458
|
+
tutorial?: Tutorial;
|
|
6459
|
+
};
|
|
6460
|
+
|
|
6461
|
+
/**
|
|
6462
|
+
* A note, serialized as a plain string, or a disqualification.
|
|
6463
|
+
*/
|
|
6464
|
+
export declare type HistoryEntry = string | DqRecord;
|
|
5813
6465
|
|
|
5814
6466
|
export declare function HR({ className }: HRProps): JSX.Element;
|
|
5815
6467
|
|
|
@@ -5817,6 +6469,16 @@ export declare type HRProps = {
|
|
|
5817
6469
|
className?: string;
|
|
5818
6470
|
};
|
|
5819
6471
|
|
|
6472
|
+
/**
|
|
6473
|
+
* Node types that aren't deterministic: they read or write the workspace, play games or raise disqualifications.
|
|
6474
|
+
*/
|
|
6475
|
+
declare type ImpureNodeType = ({ type: "game" } & GameNodeDTO) | { type: "output-table"; columnTypes?: RecordTypeWithDefaults } | { type: "input-table"; link: InputTableLink } | { type: "class"; classId: ClassId } | ({ type: "disqualify" } & DisqualifyNode) | { type: "split-by-class"; classCount: number } | ({ type: "event-competitors" } & EventCompetitorsNode) | { type: "classes-competitors" };
|
|
6476
|
+
|
|
6477
|
+
/**
|
|
6478
|
+
* Node types as deterministic as what they stand for.
|
|
6479
|
+
*/
|
|
6480
|
+
declare type InheritedNodeType = { type: "format"; formatId: FormatId; catches?: Record<DqKey, FormatCatch> } | { type: "filter-table"; filter: TableFilter } | { type: "table-map"; closure: ClosureSource } | { type: "array-map"; closure: ClosureSource } | { type: "repeat"; closure: ClosureSource; over: RepeatOver };
|
|
6481
|
+
|
|
5820
6482
|
declare type InputIdx = number & { readonly __brand: 'inputIdx' };
|
|
5821
6483
|
|
|
5822
6484
|
export declare enum InputLayout {
|
|
@@ -5826,10 +6488,17 @@ export declare enum InputLayout {
|
|
|
5826
6488
|
*/
|
|
5827
6489
|
Compact = 1,
|
|
5828
6490
|
/** Fills the parent (e.g. a table cell) without the browser's default ~20ch input min-width. */
|
|
5829
|
-
Fill = 2
|
|
6491
|
+
Fill = 2,
|
|
6492
|
+
/** As wide as its text, at most as wide as the parent. */
|
|
6493
|
+
Content = 3
|
|
5830
6494
|
}
|
|
5831
6495
|
|
|
5832
|
-
|
|
6496
|
+
/**
|
|
6497
|
+
* The table an InputTableNode outputs.
|
|
6498
|
+
*/
|
|
6499
|
+
declare type InputTableLink = { type: "table"; data: { tableId: TableId } } | { type: "output-table"; data: { nodeId: FormatNodeId } };
|
|
6500
|
+
|
|
6501
|
+
declare type InvalidNodeReason = { type: "invalid-node" } | { type: "node-is-not-variadic-but-vargs-to-array-set" } | { type: "illegal-control-values" } | ({ type: "node-configuration-error" } & NodeConfigurationError) | { type: "catching-disqualifications-of-variadic-format" } | { type: "appending-disqualifications-to-incompatible-output" } | { type: "game-result-not-assignable-to-entry" } | { type: "game-mode-ladder-mismatch" } | { type: "stale-dq-override" } | { type: "invalid-script"; error: AutomationScriptError } | { type: "invalid-game-format" };
|
|
5833
6502
|
|
|
5834
6503
|
/** Anything that can be selected and removed. A connection is identified by its target port: inputs take one connection. */
|
|
5835
6504
|
declare type ItemRef = {
|
|
@@ -5846,6 +6515,20 @@ declare type ItemRef = {
|
|
|
5846
6515
|
id: FormatNodeId;
|
|
5847
6516
|
};
|
|
5848
6517
|
|
|
6518
|
+
/**
|
|
6519
|
+
* How the finals of a ladder game node get their name or their attributes.
|
|
6520
|
+
*/
|
|
6521
|
+
declare type LadderInput = "per-game" | "shared";
|
|
6522
|
+
|
|
6523
|
+
/**
|
|
6524
|
+
* The finals of a ladder game node.
|
|
6525
|
+
*/
|
|
6526
|
+
declare interface LadderNode {
|
|
6527
|
+
gameCount: number;
|
|
6528
|
+
names: LadderInput;
|
|
6529
|
+
attributes: LadderInput;
|
|
6530
|
+
}
|
|
6531
|
+
|
|
5849
6532
|
/** Loads graphite-script from the host's wasm on demand, a static import would make this entry an async module. */
|
|
5850
6533
|
export declare const loadGraphiteScript: () => Promise<{
|
|
5851
6534
|
primValueToTypeExpr: typeof primValueToTypeExpr;
|
|
@@ -5887,14 +6570,11 @@ export declare interface LogOperation {
|
|
|
5887
6570
|
* connected to the first input of the new game or result table that its kind and type fit.
|
|
5888
6571
|
*/
|
|
5889
6572
|
declare type LoweredFormatEdit =
|
|
5890
|
-
/**
|
|
5891
|
-
* Into `section`, or into a new section of its own with null; connected into the input `connectTo` if given, replacing
|
|
5892
|
-
* its connection like `connect` does.
|
|
5893
|
-
*/
|
|
6573
|
+
/** Into `section`, connected into the input `connectTo` if given, replacing its connection like `connect` does. */
|
|
5894
6574
|
{
|
|
5895
6575
|
type: 'add-source';
|
|
5896
6576
|
source: SourceKind;
|
|
5897
|
-
section: SectionId
|
|
6577
|
+
section: SectionId;
|
|
5898
6578
|
connectTo?: ElementPortRef;
|
|
5899
6579
|
}
|
|
5900
6580
|
/** A new game or result table goes where `at` points, e.g. first, or where a connection was dropped. */
|
|
@@ -5994,22 +6674,20 @@ declare type LoweredFormatEdit =
|
|
|
5994
6674
|
}[];
|
|
5995
6675
|
order?: SimplifiedGroupId[];
|
|
5996
6676
|
}
|
|
5997
|
-
/**
|
|
6677
|
+
/** Refused with an empty name: a section is always named. */
|
|
5998
6678
|
| {
|
|
5999
|
-
type: 'copy-section';
|
|
6000
|
-
section: SectionId;
|
|
6001
|
-
} | {
|
|
6002
6679
|
type: 'rename-section';
|
|
6003
6680
|
section: SectionId;
|
|
6004
6681
|
name: string;
|
|
6005
6682
|
}
|
|
6006
6683
|
/**
|
|
6007
|
-
* A new, last section
|
|
6008
|
-
* among the others (see `withAgeGroupsInSync`).
|
|
6684
|
+
* A new, last section called `name`. An age group section starts with its groups, each with a class source of its
|
|
6685
|
+
* class, is named after its age group and goes among the others (see `withAgeGroupsInSync`).
|
|
6009
6686
|
*/
|
|
6010
6687
|
| {
|
|
6011
6688
|
type: 'add-section';
|
|
6012
6689
|
section: SectionId;
|
|
6690
|
+
name: string;
|
|
6013
6691
|
kind: NewSectionKind;
|
|
6014
6692
|
}
|
|
6015
6693
|
/** Makes the class sources of the age group section's groups those of another age group. */
|
|
@@ -6026,20 +6704,6 @@ declare type LoweredFormatEdit =
|
|
|
6026
6704
|
type: 'set-section-kind';
|
|
6027
6705
|
section: SectionId;
|
|
6028
6706
|
kind: SimplifiedSectionKind['type'];
|
|
6029
|
-
}
|
|
6030
|
-
/**
|
|
6031
|
-
* Moves the section one place up (-1) or down (1) in the order of sections, over all age group sections at once. Age
|
|
6032
|
-
* group sections go youngest first and aren't moved.
|
|
6033
|
-
*/
|
|
6034
|
-
| {
|
|
6035
|
-
type: 'move-section';
|
|
6036
|
-
section: SectionId;
|
|
6037
|
-
step: -1 | 1;
|
|
6038
|
-
}
|
|
6039
|
-
/** Removes the section with all its nodes. */
|
|
6040
|
-
| {
|
|
6041
|
-
type: 'delete-section';
|
|
6042
|
-
section: SectionId;
|
|
6043
6707
|
} | {
|
|
6044
6708
|
type: 'rename-group';
|
|
6045
6709
|
section: SectionId;
|
|
@@ -6145,13 +6809,6 @@ declare type LoweredFormatEdit =
|
|
|
6145
6809
|
game: ElementId;
|
|
6146
6810
|
to: GameKind;
|
|
6147
6811
|
}
|
|
6148
|
-
/** For game nodes and gamified formats alike; appending on gamified formats adds or updates their `Concat`. */
|
|
6149
|
-
| {
|
|
6150
|
-
type: 'set-game-dq';
|
|
6151
|
-
game: ElementId;
|
|
6152
|
-
key: DqKey_2;
|
|
6153
|
-
choice: CatchDqChoice;
|
|
6154
|
-
}
|
|
6155
6812
|
/**
|
|
6156
6813
|
* The steps of a stage's pipeline are the nodes of its chain. A new step goes in before the node at `index`, or after
|
|
6157
6814
|
* the last with the chain's length. Taking a step out connects what it got to what it fed, where the types fit.
|
|
@@ -6192,19 +6849,32 @@ export declare type MergePathParams<A, B> = {
|
|
|
6192
6849
|
|
|
6193
6850
|
/**
|
|
6194
6851
|
* What a continuation does with competitors of its parts that are missing from the previous result.
|
|
6195
|
-
*
|
|
6852
|
+
*
|
|
6853
|
+
* A continuation of a scoring's result, straight or through nodes that keep the table's metadata, scores like one
|
|
6854
|
+
* scoring node over all parts of the chain: the points of the earlier parts are carried, the discards and tie breaks of
|
|
6855
|
+
* the last node apply to all parts, `part.index` counts through the chain, and the result has the columns of all
|
|
6856
|
+
* parts. Each part's points come from the node that scores it. The direction must be the same along the chain. For
|
|
6857
|
+
* competitors new in a later node, only [Self::ScoredAsAbsent] is exactly like one node. Continuing a table that
|
|
6858
|
+
* doesn't come from a scoring only adds to its `total_points` and keeps its columns.
|
|
6859
|
+
*
|
|
6860
|
+
* If the previous result is empty, nobody is missing.
|
|
6196
6861
|
*/
|
|
6197
|
-
declare type MissingFromPrevious = "leave-out" | "worst-total-plus-one";
|
|
6862
|
+
declare type MissingFromPrevious = "leave-out" | "worst-total-plus-one" | "scored-as-absent";
|
|
6198
6863
|
|
|
6199
6864
|
export declare function Modal({ children, isOpen, onClose, closable, height, width, verticalPosition, horizontalPosition, lightbox, blockBackground, }: ModalProps): null;
|
|
6200
6865
|
|
|
6201
6866
|
/** Modal inner body: explicit width; shell uses `width: 'fit'` and shrink-wraps to this. */
|
|
6202
|
-
export declare const modalBodyNarrow = "p-6 w-[min(500px,calc(
|
|
6867
|
+
export declare const modalBodyNarrow = "p-6 w-[min(500px,calc(100vw_-_2rem))] min-w-0 md:min-w-[320px]";
|
|
6203
6868
|
|
|
6204
6869
|
export declare interface ModalConfig {
|
|
6205
6870
|
id: string;
|
|
6206
6871
|
content: ReactNode;
|
|
6207
6872
|
closable?: boolean;
|
|
6873
|
+
/**
|
|
6874
|
+
* Default: 'shown'. Whether a closable modal has an X in its top right corner. Hide it for content that has its own
|
|
6875
|
+
* button to close it, such as a dialog; ESC and a click outside still close it.
|
|
6876
|
+
*/
|
|
6877
|
+
xButton?: 'shown' | 'hidden';
|
|
6208
6878
|
height?: 'fit' | 'fill';
|
|
6209
6879
|
width?: 'fit' | 'fill';
|
|
6210
6880
|
verticalPosition?: 'center' | 'top' | 'bottom';
|
|
@@ -6212,13 +6882,13 @@ export declare interface ModalConfig {
|
|
|
6212
6882
|
lightbox?: boolean;
|
|
6213
6883
|
blockBackground?: boolean;
|
|
6214
6884
|
/**
|
|
6215
|
-
* Opens it as a window instead: one that the user drags around by this title
|
|
6216
|
-
* and that only its X closes. It stays open across navigation, so it suits content with
|
|
6217
|
-
* pointing at what caused them
|
|
6885
|
+
* Opens it as a window instead: one that the user drags around by this title and resizes by its corner, that leaves
|
|
6886
|
+
* the page behind it usable and that only its X closes. It stays open across navigation, so it suits content with
|
|
6887
|
+
* links, such as errors pointing at what caused them, and pages (see `WindowRouter`), whose route guards then ask
|
|
6888
|
+
* before the X closes it. Ignores the options about size, position and background. With `closable: false` it has no
|
|
6889
|
+
* X.
|
|
6218
6890
|
*/
|
|
6219
|
-
window?:
|
|
6220
|
-
title: ReactNode;
|
|
6221
|
-
};
|
|
6891
|
+
window?: WindowOptions;
|
|
6222
6892
|
onClose?: () => void;
|
|
6223
6893
|
}
|
|
6224
6894
|
|
|
@@ -6262,6 +6932,8 @@ declare type MultiplexingStrategy = "serpentine" | "round-robin";
|
|
|
6262
6932
|
|
|
6263
6933
|
declare type MultiplexingStrategy_2 = components['schemas']['MultiplexingStrategy'];
|
|
6264
6934
|
|
|
6935
|
+
export declare type NamedTable = Pick<TableDAO, 'name' | 'tableKind' | 'variant'>;
|
|
6936
|
+
|
|
6265
6937
|
declare type NewSectionKind = {
|
|
6266
6938
|
type: 'simple' | 'layered';
|
|
6267
6939
|
} | {
|
|
@@ -6269,6 +6941,8 @@ declare type NewSectionKind = {
|
|
|
6269
6941
|
classes: AgeGroupClasses;
|
|
6270
6942
|
};
|
|
6271
6943
|
|
|
6944
|
+
declare type NodeCategory = "logic" | "game" | "tables" | "arrays" | "math" | "class" | "input-output" | "invalid" | "other" | "root";
|
|
6945
|
+
|
|
6272
6946
|
declare type NodeConfigurationError = { type: "extract-record-field-error"; data: ExtractRecordFieldError<Primitive> } | { type: "invalid-value"; data: { identifier: string; message: string; givenValue: Value<SerializableNonPrimitiveValue> } } | { type: "node-is-not-variadic-but-vargs-to-array-set" } | { type: "found-closure-input-node-in-non-closure" } | { type: "invalid-node" } | { type: "illegal-vargs-to-array" } | { type: "illegal-control-values" };
|
|
6273
6947
|
|
|
6274
6948
|
declare type NodeInstanceHash = Brand<string, 'nodeInstanceHash'>;
|
|
@@ -6331,10 +7005,49 @@ export declare interface NodeSignature<T, R = ParamRef> {
|
|
|
6331
7005
|
|
|
6332
7006
|
declare type NodetyError = { type: "NodeHasChildren" } | { type: "ParentNotFound" } | { type: "NodeNotFound" } | { type: "CycleDetected" } | { type: "TypeExprValidationError"; error: TypeExprValidationError };
|
|
6333
7007
|
|
|
6334
|
-
|
|
7008
|
+
/**
|
|
7009
|
+
* What a node does. Its purity says whether its nodes are deterministic: what they output depends only on their inputs,
|
|
7010
|
+
* their node type and the formats and scoring definitions they reference. Deterministic formats (see
|
|
7011
|
+
* [FormatInterface::deterministic]) and pipelines contain only deterministic nodes.
|
|
7012
|
+
*
|
|
7013
|
+
* Top level purity distinction to have that be a type system invariant from the start. Reduces invariants.
|
|
7014
|
+
*/
|
|
7015
|
+
declare type NodeType = ({ purity: "pure" } & PureNodeType) | ({ purity: "impure" } & ImpureNodeType) | ({ purity: "inherited" } & InheritedNodeType);
|
|
6335
7016
|
|
|
6336
|
-
/**
|
|
6337
|
-
|
|
7017
|
+
/**
|
|
7018
|
+
* A change of a node's settings: its node type and its data, the values of its inputs or its variadic ports, which it
|
|
7019
|
+
* can collect into lists, or one of them to remove.
|
|
7020
|
+
*/
|
|
7021
|
+
declare type NodeUpdate = Partial<Pick<FormatNodeDTO_2, 'nodeType' | 'controlValues' | 'addedInputVargs' | 'addedOutputVargs' | 'inputVargsToArray' | 'outputVargsToArray'> & {
|
|
7022
|
+
removedInput: number;
|
|
7023
|
+
}>;
|
|
7024
|
+
|
|
7025
|
+
declare interface NodeVariantDoc {
|
|
7026
|
+
variantLabel: string;
|
|
7027
|
+
inputs: PortsDoc;
|
|
7028
|
+
outputs: PortsDoc;
|
|
7029
|
+
description?: string | null;
|
|
7030
|
+
/**
|
|
7031
|
+
* The label for the new input when vargs_to_array is enabled.
|
|
7032
|
+
*/
|
|
7033
|
+
outputVargsToArrayCountLabel: PortLabelPart[];
|
|
7034
|
+
/**
|
|
7035
|
+
* The label for the new output when vargs_to_array is enabled.
|
|
7036
|
+
*/
|
|
7037
|
+
outputVargsToArrayArrayLabel: PortLabelPart[];
|
|
7038
|
+
inputVargsToArrayArrayLabel: PortLabelPart[];
|
|
7039
|
+
category: NodeCategory;
|
|
7040
|
+
/**
|
|
7041
|
+
* If the node has `children_spec` set to `Closure`, this documents that closure
|
|
7042
|
+
*/
|
|
7043
|
+
closureDocs?: NodeVariantDoc | null;
|
|
7044
|
+
/**
|
|
7045
|
+
* The outputs the editor warns about while they aren't connected, with the reason: without them the node is
|
|
7046
|
+
* useless, like a value of a `#[must_use]` function in Rust. Not serialized while empty, so that log entries of
|
|
7047
|
+
* docs without must-use outputs keep their hashes.
|
|
7048
|
+
*/
|
|
7049
|
+
mustUse?: Record<number, string>;
|
|
7050
|
+
}
|
|
6338
7051
|
|
|
6339
7052
|
declare type NoMetadata = Record<never, never>;
|
|
6340
7053
|
|
|
@@ -6375,6 +7088,10 @@ export declare type OperatorOf<T> = Extract<TypeOperators[keyof TypeOperators],
|
|
|
6375
7088
|
|
|
6376
7089
|
declare interface Option_2<TVal> {
|
|
6377
7090
|
label: React_2.ReactNode;
|
|
7091
|
+
/** Shown before the label, in the list and when selected; one rendering nothing takes no room. */
|
|
7092
|
+
icon?: React_2.ReactNode;
|
|
7093
|
+
/** Explains the option where a control has room for it, like `AppRadioGroup`. */
|
|
7094
|
+
description?: React_2.ReactNode;
|
|
6378
7095
|
value: TVal;
|
|
6379
7096
|
disabled?: boolean;
|
|
6380
7097
|
}
|
|
@@ -6440,6 +7157,30 @@ export declare type PersistedStateOptions = {
|
|
|
6440
7157
|
version?: number;
|
|
6441
7158
|
};
|
|
6442
7159
|
|
|
7160
|
+
declare interface PortDoc {
|
|
7161
|
+
/**
|
|
7162
|
+
* Each port label part gets turned into a string and then concatenated to retrieve the full label.
|
|
7163
|
+
*/
|
|
7164
|
+
label: PortLabelPart[];
|
|
7165
|
+
description?: string | null;
|
|
7166
|
+
/**
|
|
7167
|
+
* Finite value options representing the value will get labeled with the string
|
|
7168
|
+
*/
|
|
7169
|
+
valueLabels: [Value, string][];
|
|
7170
|
+
/**
|
|
7171
|
+
* CustomControls only get used when enabled with this property.
|
|
7172
|
+
*/
|
|
7173
|
+
enabledCustomControls: CustomControl[];
|
|
7174
|
+
defaultValue?: Value | null;
|
|
7175
|
+
}
|
|
7176
|
+
|
|
7177
|
+
declare type PortLabelPart = { type: "idx-decimal"; data: number } | { type: "idx-alphabetic"; data: number } | { type: "idx-ordinal"; data: number } | { type: "string"; data: string };
|
|
7178
|
+
|
|
7179
|
+
declare interface PortsDoc {
|
|
7180
|
+
ports: PortDoc[];
|
|
7181
|
+
varg?: PortDoc | null;
|
|
7182
|
+
}
|
|
7183
|
+
|
|
6443
7184
|
/**
|
|
6444
7185
|
* A list of port types, optionally with a variadic type (`...T`).
|
|
6445
7186
|
*/
|
|
@@ -6455,6 +7196,16 @@ export declare type Primitive = never;
|
|
|
6455
7196
|
|
|
6456
7197
|
declare function primValueToTypeExpr(value: Value<Primitive>): TypeExpr<Type, ParamRef>;
|
|
6457
7198
|
|
|
7199
|
+
/**
|
|
7200
|
+
* The pre or post processing steps of a game format.
|
|
7201
|
+
*/
|
|
7202
|
+
declare type ProcessingStage = "pre-processing" | "post-processing";
|
|
7203
|
+
|
|
7204
|
+
/**
|
|
7205
|
+
* Deterministic node types. Input, output, group, portal and comment nodes only route values.
|
|
7206
|
+
*/
|
|
7207
|
+
declare type PureNodeType = { type: "invalid"; nodeType: NodeType } | { type: "input" } | { type: "output" } | ({ type: "group" } & GroupNode) | { type: "portal"; sourceNodeId: FormatNodeId; sourceOutput: OutputIdx } | { type: "comment"; comment: string; linkedNodeId?: FormatNodeId } | { type: "math"; op: MathNodeOp } | { type: "string-concat" } | { type: "string-format" } | { type: "sort-table" } | { type: "constant" } | { type: "merge-tables" } | { type: "divide-table" } | { type: "distribute-table" } | { type: "split-table"; split: SplitTableNode } | { type: "concat-tables"; sorted: boolean } | { type: "remove-places" } | { type: "transfer-history" } | { type: "length" } | { type: "boolean-op"; op: BooleanOp } | { type: "record-field"; op: RecordFieldOp } | ({ type: "record" } & RecordNode) | ({ type: "record-access" } & RecordAccessNode) | { type: "fallback" } | { type: "comparison"; op: ComparisonOp } | { type: "ternary" } | { type: "separate-row" } | { type: "update-row" } | { type: "create-array" } | { type: "create-table" } | { type: "array-access"; errorOnNotFound: boolean } | { type: "unpack-array"; errorOnNotFound: boolean } | { type: "promotion-relegation"; finalCount: number | null } | { type: "age-at" } | ({ type: "add-columns" } & AddColumnsNode) | { type: "matrix-transpose" } | { type: "zip"; lengths: ZipLengths } | ({ type: "scoring" } & ScoringNode) | ({ type: "script-closure" } & ScriptClosureNode);
|
|
7208
|
+
|
|
6458
7209
|
/**
|
|
6459
7210
|
* Replaces the rows a table holds on layer one.
|
|
6460
7211
|
*
|
|
@@ -6493,6 +7244,9 @@ export declare function putTableRows(workspaceId: CommonWorkspaceId, eventId: Ev
|
|
|
6493
7244
|
} | {
|
|
6494
7245
|
type: "change-would-modify-rows";
|
|
6495
7246
|
data: components["schemas"]["RecordModifications"];
|
|
7247
|
+
} | {
|
|
7248
|
+
type: "format-revalidation";
|
|
7249
|
+
data: components["schemas"]["FormatRevalidationError"];
|
|
6496
7250
|
};
|
|
6497
7251
|
}>;
|
|
6498
7252
|
|
|
@@ -6526,6 +7280,18 @@ export declare interface QuerySchema<Fields extends QueryFields> {
|
|
|
6526
7280
|
set<Key extends keyof Fields>(search: string, key: Key, value: QueryFieldValue<Fields[Key]>): string;
|
|
6527
7281
|
}
|
|
6528
7282
|
|
|
7283
|
+
/**
|
|
7284
|
+
* Reads `keys` of a record, see [record_access_node_sig].
|
|
7285
|
+
*/
|
|
7286
|
+
declare interface RecordAccessNode {
|
|
7287
|
+
keys: string[];
|
|
7288
|
+
}
|
|
7289
|
+
|
|
7290
|
+
/**
|
|
7291
|
+
* What a record node adds its fields to.
|
|
7292
|
+
*/
|
|
7293
|
+
declare type RecordBase = "extend" | "new";
|
|
7294
|
+
|
|
6529
7295
|
declare type RecordFieldOp = "read-field" | "write-field";
|
|
6530
7296
|
|
|
6531
7297
|
declare interface RecordMakeValidMutation {
|
|
@@ -6533,6 +7299,14 @@ declare interface RecordMakeValidMutation {
|
|
|
6533
7299
|
newValue: Value;
|
|
6534
7300
|
}
|
|
6535
7301
|
|
|
7302
|
+
/**
|
|
7303
|
+
* The record node: a record with `fields`, see [record_node_sig].
|
|
7304
|
+
*/
|
|
7305
|
+
declare interface RecordNode {
|
|
7306
|
+
fields: string[];
|
|
7307
|
+
base: RecordBase;
|
|
7308
|
+
}
|
|
7309
|
+
|
|
6536
7310
|
/**
|
|
6537
7311
|
* RecordTypes should **only** be manipulated though this helper to have a single source of truth for the structure.
|
|
6538
7312
|
*/
|
|
@@ -6553,6 +7327,11 @@ export declare interface RepeatedQueryField<T> {
|
|
|
6553
7327
|
codec: QueryCodec<T>;
|
|
6554
7328
|
}
|
|
6555
7329
|
|
|
7330
|
+
/**
|
|
7331
|
+
* What a repeat node runs its closure for.
|
|
7332
|
+
*/
|
|
7333
|
+
declare type RepeatOver = "count" | "list";
|
|
7334
|
+
|
|
6556
7335
|
export declare function ResizablePanel({ value, onChange, edge, min, max, hideWhenBelowMin, onClose, children, className, contentClassName, }: ResizablePanelProps): JSX.Element;
|
|
6557
7336
|
|
|
6558
7337
|
export declare interface ResizablePanelProps {
|
|
@@ -6604,6 +7383,8 @@ export declare interface RouterContextType {
|
|
|
6604
7383
|
register: (route: string) => boolean;
|
|
6605
7384
|
back: () => void;
|
|
6606
7385
|
unregister: (route: string) => void;
|
|
7386
|
+
/** What unloads the routes below, see `useGuardRoute`. */
|
|
7387
|
+
scope: RouterScope;
|
|
6607
7388
|
}
|
|
6608
7389
|
|
|
6609
7390
|
export declare interface RouterLocation {
|
|
@@ -6612,6 +7393,14 @@ export declare interface RouterLocation {
|
|
|
6612
7393
|
hash: string;
|
|
6613
7394
|
}
|
|
6614
7395
|
|
|
7396
|
+
/** The app's routes are unloaded by navigating, a window's (see `WindowRouter`) by closing it. */
|
|
7397
|
+
export declare type RouterScope = {
|
|
7398
|
+
type: 'app';
|
|
7399
|
+
} | {
|
|
7400
|
+
type: 'window';
|
|
7401
|
+
windowId: string;
|
|
7402
|
+
};
|
|
7403
|
+
|
|
6615
7404
|
/**
|
|
6616
7405
|
* Rows can only be created and moved by this crate, so that their [Origin] stays truthful.
|
|
6617
7406
|
*/
|
|
@@ -6622,6 +7411,11 @@ export declare interface Row {
|
|
|
6622
7411
|
competitorId: number;
|
|
6623
7412
|
place: number | null;
|
|
6624
7413
|
columns: RecordValue;
|
|
7414
|
+
/**
|
|
7415
|
+
* What happened to the competitor so far. Histories of the same competitor arriving on several paths are united
|
|
7416
|
+
* in table order. Left out when empty.
|
|
7417
|
+
*/
|
|
7418
|
+
history?: RowHistory;
|
|
6625
7419
|
}
|
|
6626
7420
|
|
|
6627
7421
|
export declare interface RowAction<T> {
|
|
@@ -6636,6 +7430,15 @@ export declare interface RowAction<T> {
|
|
|
6636
7430
|
readOnlySafe?: boolean;
|
|
6637
7431
|
}
|
|
6638
7432
|
|
|
7433
|
+
/**
|
|
7434
|
+
* What happened to a competitor on the way to a row, oldest first: the notes game format automations added and the
|
|
7435
|
+
* disqualifications the competitor collected.
|
|
7436
|
+
*
|
|
7437
|
+
* Holds every disqualification once (identity: key, source and kind), so uniting the histories of the same
|
|
7438
|
+
* competitor from several paths doesn't count any twice. Notes are concatenated.
|
|
7439
|
+
*/
|
|
7440
|
+
export declare type RowHistory = HistoryEntry[];
|
|
7441
|
+
|
|
6639
7442
|
declare type RowMutationIdx = Brand<number, 'rowMutationIdx'>;
|
|
6640
7443
|
|
|
6641
7444
|
declare type RowMutationKind = { type: "set-record-field"; field: string; value: Value } | { type: "push-unranked"; columns: RecordValue<Primitive> } | { type: "remove" } | { type: "set-place"; place: number } | { type: "set-unranked"; tiebraker: number } | { type: "set-place-and-tie-braker"; place: number; tiebraker: number };
|
|
@@ -6676,13 +7479,51 @@ declare interface RowTypeHelper<R = ParamRef> {
|
|
|
6676
7479
|
columns: RecordTypeHelper<R>;
|
|
6677
7480
|
}
|
|
6678
7481
|
|
|
6679
|
-
declare type RuntimeErrorKind = { type: "division-by-zero" } | { type: "variable-not-found"; data: { name: string } } | { type: "function-not-found"; data: { name: string } } | { type: "index-out-of-bounds" } | { type: "invalid-index" } | { type: "invalid-math-operands" } | { type: "non-boolean-condition" } | { type: "non-boolean-operand" } | { type: "invalid-comparison-operands" } | { type: "argument"; data: { expected: string; got: string } };
|
|
7482
|
+
declare type RuntimeErrorKind = { type: "division-by-zero" } | { type: "variable-not-found"; data: { name: string } } | { type: "function-not-found"; data: { name: string } } | { type: "index-out-of-bounds" } | { type: "invalid-index" } | { type: "invalid-math-operands" } | { type: "non-boolean-condition" } | { type: "non-boolean-operand" } | { type: "invalid-comparison-operands" } | { type: "argument"; data: { expected: string; got: string } } | { type: "function-failed"; data: { message: string } };
|
|
7483
|
+
|
|
7484
|
+
/**
|
|
7485
|
+
* A way to score a part, with parameters a node sets. An entity of an event, like a game format.
|
|
7486
|
+
*/
|
|
7487
|
+
declare interface ScoringDefinition {
|
|
7488
|
+
name: string;
|
|
7489
|
+
description: string;
|
|
7490
|
+
/**
|
|
7491
|
+
* The script sees their values as `params`. Every parameter has a default.
|
|
7492
|
+
*/
|
|
7493
|
+
parameters: RecordTypeWithDefaults;
|
|
7494
|
+
/**
|
|
7495
|
+
* The documentation of each parameter, by name, like the ports of a node.
|
|
7496
|
+
*/
|
|
7497
|
+
parameterDocs: Record<string, PortDoc>;
|
|
7498
|
+
/**
|
|
7499
|
+
* The columns the rows of every part must have, the script sees them in `row.attributes`.
|
|
7500
|
+
*/
|
|
7501
|
+
requiredColumns: RecordTypeHelper;
|
|
7502
|
+
direction: ScoringDirection;
|
|
7503
|
+
/**
|
|
7504
|
+
* A graphite script, typechecked like [ScoringPoints::Custom]'s with `params` in addition.
|
|
7505
|
+
*/
|
|
7506
|
+
script: string;
|
|
7507
|
+
/**
|
|
7508
|
+
* Examples of what the definition scores, see [Self::run_test].
|
|
7509
|
+
*/
|
|
7510
|
+
tests: ScoringTest[];
|
|
7511
|
+
}
|
|
7512
|
+
|
|
7513
|
+
/**
|
|
7514
|
+
* Identifies a scoring definition of an event. Random ([Self::new_random]) from the endpoint, derived for the
|
|
7515
|
+
* fundamental scorings of a new event, or derived by `ImportArchiveMutation`. Deserializing one only yields a
|
|
7516
|
+
* reference to an existing definition; it does not check that it exists.
|
|
7517
|
+
*/
|
|
7518
|
+
declare type ScoringDefinitionId = string & { readonly __brand: 'scoringDefinitionId' };
|
|
7519
|
+
|
|
7520
|
+
declare type ScoringDirection = "lower-is-better" | "higher-is-better";
|
|
6680
7521
|
|
|
6681
7522
|
/** A sequential scoring of fewer than two parts is a parallel one (see `ResultScoring`). */
|
|
6682
7523
|
declare interface ScoringEdit {
|
|
6683
7524
|
mode: ScoringMode;
|
|
6684
7525
|
parts: {
|
|
6685
|
-
part:
|
|
7526
|
+
part: ScoringPart_2;
|
|
6686
7527
|
from: number | null;
|
|
6687
7528
|
}[];
|
|
6688
7529
|
}
|
|
@@ -6694,6 +7535,105 @@ declare type ScoringMode = {
|
|
|
6694
7535
|
missing: MissingFromPrevious;
|
|
6695
7536
|
};
|
|
6696
7537
|
|
|
7538
|
+
/**
|
|
7539
|
+
* Scores competitors over several parts, e.g. the races of a series.
|
|
7540
|
+
*
|
|
7541
|
+
* ```text
|
|
7542
|
+
* <R0 extends {}, ...>(Table<R0, Sorted>, ...) -> (Table<{total_points: P, <part name>: P, ...}, Sorted>)
|
|
7543
|
+
* ```
|
|
7544
|
+
*
|
|
7545
|
+
* One input per part and one output table. Competitors are the union of all parts. The script of `points` computes
|
|
7546
|
+
* the points of every competitor in every part. `P` is `Integer` if the script returns integers whatever the
|
|
7547
|
+
* columns of the parts, else `Integer | Float`. If the points are `null` for a part, the competitor is left out of
|
|
7548
|
+
* the result. The total is the sum of the points, without the worst `discards`. The output is ranked by the total in
|
|
7549
|
+
* the direction of `points`, ties are broken by the `tie_breaks` in order, and competitors still tied share the
|
|
7550
|
+
* place.
|
|
7551
|
+
*
|
|
7552
|
+
* With `continues_previous`, the first input is the result of a previous scoring,
|
|
7553
|
+
* `Table<{total_points: Integer | Float}, Sorted>`, and the totals add this node's parts to the previous
|
|
7554
|
+
* `total_points`. The previous result's other columns are carried over, those named like a part are replaced. Ties
|
|
7555
|
+
* keep the previous result's order. Discards and tie breaks only see this node's parts.
|
|
7556
|
+
*/
|
|
7557
|
+
declare interface ScoringNode {
|
|
7558
|
+
parts: ScoringPart[];
|
|
7559
|
+
continuesPrevious?: MissingFromPrevious;
|
|
7560
|
+
points: ScoringPoints;
|
|
7561
|
+
discards: Discards;
|
|
7562
|
+
/**
|
|
7563
|
+
* Decide between competitors with the same total, in order.
|
|
7564
|
+
*/
|
|
7565
|
+
tieBreaks: TieBreak[];
|
|
7566
|
+
}
|
|
7567
|
+
|
|
7568
|
+
/**
|
|
7569
|
+
* One scored part, e.g. a single race of a series.
|
|
7570
|
+
*/
|
|
7571
|
+
declare interface ScoringPart {
|
|
7572
|
+
/**
|
|
7573
|
+
* Used as the name of the output column holding the points of this part.
|
|
7574
|
+
*/
|
|
7575
|
+
name: string;
|
|
7576
|
+
/**
|
|
7577
|
+
* [TieBreak::PartPriority] compares higher priority parts first.
|
|
7578
|
+
*/
|
|
7579
|
+
priority: number;
|
|
7580
|
+
}
|
|
7581
|
+
|
|
7582
|
+
declare type ScoringPart_2 = components['schemas']['ScoringPart'];
|
|
7583
|
+
|
|
7584
|
+
/**
|
|
7585
|
+
* The points of a scoring node.
|
|
7586
|
+
*/
|
|
7587
|
+
declare type ScoringPoints = { type: "definition"; data: { definition: ScoringDefinitionId; params: RecordValue } } | { type: "custom"; data: { script: string; direction: ScoringDirection } };
|
|
7588
|
+
|
|
7589
|
+
/**
|
|
7590
|
+
* The script of a scoring node does not parse or typecheck.
|
|
7591
|
+
*/
|
|
7592
|
+
declare interface ScoringScriptError {
|
|
7593
|
+
/**
|
|
7594
|
+
* The part the script fails to typecheck for, none if it does not parse.
|
|
7595
|
+
*/
|
|
7596
|
+
part: string | null;
|
|
7597
|
+
message: string;
|
|
7598
|
+
}
|
|
7599
|
+
|
|
7600
|
+
/**
|
|
7601
|
+
* Parts scored with values of the parameters, and the result they are expected to score to.
|
|
7602
|
+
*/
|
|
7603
|
+
declare interface ScoringTest {
|
|
7604
|
+
name: string;
|
|
7605
|
+
description: string;
|
|
7606
|
+
params: RecordValue;
|
|
7607
|
+
parts: ScoringTestPart[];
|
|
7608
|
+
/**
|
|
7609
|
+
* The scored rows, best first: the places and the columns, the points of every part and the total. Their
|
|
7610
|
+
* disqualifications and history are not compared.
|
|
7611
|
+
*/
|
|
7612
|
+
expected: Rows<Sorted>;
|
|
7613
|
+
}
|
|
7614
|
+
|
|
7615
|
+
declare interface ScoringTestPart {
|
|
7616
|
+
/**
|
|
7617
|
+
* The name of the column of its points.
|
|
7618
|
+
*/
|
|
7619
|
+
name: string;
|
|
7620
|
+
rows: Rows<Sorted>;
|
|
7621
|
+
}
|
|
7622
|
+
|
|
7623
|
+
/**
|
|
7624
|
+
* Outputs a deterministic closure (scripts are) with `signature`. Calling it runs `script` with each input bound to the
|
|
7625
|
+
* variable of its name, and what the script evaluates to is the closure's output.
|
|
7626
|
+
*
|
|
7627
|
+
* ```text
|
|
7628
|
+
* () -> (<signature>)
|
|
7629
|
+
* ```
|
|
7630
|
+
*/
|
|
7631
|
+
declare interface ScriptClosureNode {
|
|
7632
|
+
script: string;
|
|
7633
|
+
signature: ClosureSignature;
|
|
7634
|
+
docs: NodeVariantDoc;
|
|
7635
|
+
}
|
|
7636
|
+
|
|
6697
7637
|
export declare function SearchInput({ value, onChange, placeholder, className, autoFocus, ref, onKeyDown }: SearchInputProps): JSX.Element;
|
|
6698
7638
|
|
|
6699
7639
|
export declare type SearchInputProps = {
|
|
@@ -6706,11 +7646,8 @@ export declare type SearchInputProps = {
|
|
|
6706
7646
|
onKeyDown?: (event: KeyboardEvent_2<HTMLInputElement>) => void;
|
|
6707
7647
|
};
|
|
6708
7648
|
|
|
6709
|
-
/**
|
|
6710
|
-
|
|
6711
|
-
* node id of its island, which is a uuid like the ids of stored sections.
|
|
6712
|
-
*/
|
|
6713
|
-
declare type SectionId = SimplifiedSectionId;
|
|
7649
|
+
/** A section of the flow (see `SimplifiedView`): the id of its root format. */
|
|
7650
|
+
declare type SectionId = FormatId;
|
|
6714
7651
|
|
|
6715
7652
|
declare type SerializableNonPrimitiveValue = { type: "game-table"; data: Table<Unsorted, StateMetadata> } | { type: "game-table-sorted"; data: Table<Sorted, StateMetadata> } | { type: "row"; data: Row } | { type: "class"; data: string } | { type: "closure" };
|
|
6716
7653
|
|
|
@@ -6722,10 +7659,12 @@ declare type SerializableNonPrimitiveValue = { type: "game-table"; data: Table<U
|
|
|
6722
7659
|
export declare type Shortcut = readonly string[];
|
|
6723
7660
|
|
|
6724
7661
|
/**
|
|
6725
|
-
* Shows a dialog that can be dismissed (ESC, click outside
|
|
6726
|
-
*
|
|
7662
|
+
* Shows a dialog that can be dismissed (ESC, click outside; only the X of a window). The first primary button, or else
|
|
7663
|
+
* the first button, has the focus. Without buttons, it has a close button.
|
|
7664
|
+
*
|
|
7665
|
+
* @returns the value of the chosen button or null if dismissed
|
|
6727
7666
|
*/
|
|
6728
|
-
export declare function showDialog<T>(modal: ModalControls, buttons: DialogButton<T>[],
|
|
7667
|
+
export declare function showDialog<T>(modal: ModalControls, buttons: DialogButton<T>[], message: DialogMessage, { window }?: DialogOptions): Promise<T | null>;
|
|
6729
7668
|
|
|
6730
7669
|
/**
|
|
6731
7670
|
* A panel as a column of its own, next to the content. Keeping it out of the content gives toolbars the whole
|
|
@@ -6786,57 +7725,11 @@ export declare type SidePanelIcon = ComponentType<SVGProps<SVGSVGElement>>;
|
|
|
6786
7725
|
|
|
6787
7726
|
export declare type SidePanelVariant = 'dock' | 'drawer';
|
|
6788
7727
|
|
|
6789
|
-
/**
|
|
6790
|
-
* Place 1 = 1 point, Place 2 = 2 points, etc.
|
|
6791
|
-
* On tie, whoever won the part with the highest priority wins.
|
|
6792
|
-
* If still tied, the next lower priority part is considered etc.
|
|
6793
|
-
*
|
|
6794
|
-
* ```text
|
|
6795
|
-
* (Table<{}, Sorted>, ...) -> (Table<{total_points: Integer, <part name>: Integer, ...}, Sorted>)
|
|
6796
|
-
* ```
|
|
6797
|
-
*
|
|
6798
|
-
* One input per part and one output table, sorted by ascending total points.
|
|
6799
|
-
* Competitors are the union of all parts: a competitor without a place in a part
|
|
6800
|
-
* (missing from the table of that part, or in it without a place) scores one point
|
|
6801
|
-
* more than that part has rows, so not finishing a part is always worse than
|
|
6802
|
-
* finishing it last. An empty part has not taken place yet and scores 0 for everyone.
|
|
6803
|
-
*
|
|
6804
|
-
* With `continues_previous`, the first input is the result of a previous scoring,
|
|
6805
|
-
* `Table<{total_points: Integer}, Sorted>`, and the totals add this node's parts to the previous `total_points`.
|
|
6806
|
-
* The previous result's other columns are carried over, those named like a part are replaced. Ties keep the
|
|
6807
|
-
* previous result's order.
|
|
6808
|
-
*/
|
|
6809
|
-
declare interface SimpleScoringNode {
|
|
6810
|
-
parts: SimpleScoringPart[];
|
|
6811
|
-
/**
|
|
6812
|
-
* Missing means a scoring that continues none, so that nodes written before keep their serialization.
|
|
6813
|
-
*/
|
|
6814
|
-
continuesPrevious?: MissingFromPrevious;
|
|
6815
|
-
}
|
|
6816
|
-
|
|
6817
|
-
/**
|
|
6818
|
-
* One scored part, e.g. a single race of a series.
|
|
6819
|
-
*/
|
|
6820
|
-
declare interface SimpleScoringPart {
|
|
6821
|
-
/**
|
|
6822
|
-
* Used as the name of the output column holding the points of this part.
|
|
6823
|
-
*/
|
|
6824
|
-
name: string;
|
|
6825
|
-
/**
|
|
6826
|
-
* Higher priority parts break ties first.
|
|
6827
|
-
*/
|
|
6828
|
-
priority: number;
|
|
6829
|
-
}
|
|
6830
|
-
|
|
6831
|
-
declare type SimpleScoringPart_2 = components['schemas']['SimpleScoringPart'];
|
|
6832
|
-
|
|
6833
7728
|
/**
|
|
6834
7729
|
* Unique per format, not only per section.
|
|
6835
7730
|
*/
|
|
6836
7731
|
declare type SimplifiedGroupId = string & { readonly __brand: 'simplifiedGroupId' };
|
|
6837
7732
|
|
|
6838
|
-
declare type SimplifiedSectionId = string & { readonly __brand: 'simplifiedSectionId' };
|
|
6839
|
-
|
|
6840
7733
|
/** A `simple` section has no groups. An age group's classes are the values of its two groups' class sources, see `ageGroupOf`. */
|
|
6841
7734
|
declare type SimplifiedSectionKind = {
|
|
6842
7735
|
type: 'layered';
|
|
@@ -6850,6 +7743,11 @@ declare type SimplifiedSectionKind = {
|
|
|
6850
7743
|
};
|
|
6851
7744
|
};
|
|
6852
7745
|
|
|
7746
|
+
/**
|
|
7747
|
+
* Where the rows of the competitors sitting out go. They keep no columns.
|
|
7748
|
+
*/
|
|
7749
|
+
declare type SitOutHandling = { type: "append-placed" } | { type: "append-unplaced" } | { type: "append-ladder-placed" } | { type: "append-ladder-unplaced" } | { type: "output"; data: { name: string } } | { type: "throw"; data: { key: DqKey } };
|
|
7750
|
+
|
|
6853
7751
|
/**
|
|
6854
7752
|
* Sorted game tables have the following guarantees:
|
|
6855
7753
|
* - None places are last
|
|
@@ -6872,7 +7770,7 @@ declare type SourceKind = {
|
|
|
6872
7770
|
type: 'classes-competitors';
|
|
6873
7771
|
} | {
|
|
6874
7772
|
type: 'input-table';
|
|
6875
|
-
|
|
7773
|
+
link: InputTableLink;
|
|
6876
7774
|
};
|
|
6877
7775
|
|
|
6878
7776
|
/**
|
|
@@ -6888,11 +7786,12 @@ declare interface SourceLocation {
|
|
|
6888
7786
|
*
|
|
6889
7787
|
* for `Static { split_count }`:
|
|
6890
7788
|
* ```text
|
|
6891
|
-
* <C extends {}>(Table<C, Sorted>, Integer
|
|
7789
|
+
* <C extends {}>(table: Table<C, Sorted>, cut_1: Integer, …, cut_<split_count>: Integer)
|
|
7790
|
+
* -> (part_1: Table<C, Sorted>, …, part_<split_count + 1>: Table<C, Sorted>)
|
|
6892
7791
|
* ```
|
|
6893
7792
|
* for `Dynamic`:
|
|
6894
7793
|
* ```text
|
|
6895
|
-
* <C extends {}>(Table<C, Sorted>, Array<Integer>) -> (Array<Table<C, Sorted>>)
|
|
7794
|
+
* <C extends {}>(table: Table<C, Sorted>, cuts: Array<Integer>) -> (parts: Array<Table<C, Sorted>>)
|
|
6896
7795
|
* ```
|
|
6897
7796
|
*/
|
|
6898
7797
|
declare type SplitTableNode = { type: "static"; data: { splitCount: number } } | { type: "dynamic" };
|
|
@@ -6947,6 +7846,8 @@ export declare type TableDropTarget = EventPath & {
|
|
|
6947
7846
|
table: TableDAO;
|
|
6948
7847
|
};
|
|
6949
7848
|
|
|
7849
|
+
declare type TableFilter = { type: "comparison-filter"; data: ComparisonOp } | { type: "class-filter" } | { type: "gender" } | { type: "custom"; data: ClosureSource };
|
|
7850
|
+
|
|
6950
7851
|
/**
|
|
6951
7852
|
* Identifies a table, the primary key of `tables`. Comes from one of:
|
|
6952
7853
|
* - [Self::new_random]: a table the user adds. The endpoint picks the id and the mutation carries it.
|
|
@@ -7010,6 +7911,24 @@ declare type TableState = number;
|
|
|
7010
7911
|
|
|
7011
7912
|
export declare type TableWithType = components['schemas']['TableWithType'];
|
|
7012
7913
|
|
|
7914
|
+
/**
|
|
7915
|
+
* The names of the concepts that sports name differently, in one locale. Plain data, so it can come from anywhere.
|
|
7916
|
+
*
|
|
7917
|
+
* A translation takes a term as an argument that its formatter fills in, `{game?|game}`, or capitalized
|
|
7918
|
+
* `{Game?|Game}`; callers pass nothing. German translations use singular terms without articles or adjectives (the
|
|
7919
|
+
* gender differs between terms) and never in compounds.
|
|
7920
|
+
*/
|
|
7921
|
+
export declare type Terminology = Record<TermKey, string>;
|
|
7922
|
+
|
|
7923
|
+
export declare type TermKey = (typeof termKeys)[number];
|
|
7924
|
+
|
|
7925
|
+
declare const termKeys: readonly ["game", "games", "gameFormat", "gameFormats", "entryTable", "entryTables", "resultTable", "resultTables", "ladder", "ladders", "parallelGames", "bib", "bibs", "gameFlow", "competitors"];
|
|
7926
|
+
|
|
7927
|
+
/**
|
|
7928
|
+
* A rule deciding between competitors with the same total.
|
|
7929
|
+
*/
|
|
7930
|
+
declare type TieBreak = "part-priority" | "countback" | "last-part";
|
|
7931
|
+
|
|
7013
7932
|
export declare type TimeDelta = components['schemas']['TimeDeltaSchema'];
|
|
7014
7933
|
|
|
7015
7934
|
export declare const TimeDeltaInput: FC<TimeDeltaInputProps>;
|
|
@@ -7039,6 +7958,17 @@ declare interface Trail {
|
|
|
7039
7958
|
steps: Step[];
|
|
7040
7959
|
}
|
|
7041
7960
|
|
|
7961
|
+
/** Help on the section of the heading it belongs to. */
|
|
7962
|
+
export declare type Tutorial = {
|
|
7963
|
+
content: ReactNode;
|
|
7964
|
+
} & (BuiltInTutorial | ExtensionTutorial);
|
|
7965
|
+
|
|
7966
|
+
/**
|
|
7967
|
+
* Every place of the engine showing a tutorial has its own id, its state is stored per user as preference
|
|
7968
|
+
* `tutorial:<id>`. None starts with `ext:`, which is the namespace of the extensions' tutorials.
|
|
7969
|
+
*/
|
|
7970
|
+
export declare type TutorialId = 'game-format/tables' | 'game-format/variants' | 'game-format/pre-processing' | 'game-format/post-processing' | 'game-format/disqualifications' | 'scoring-definition/parameters' | 'scoring-definition/required-columns' | 'scoring-definition/script' | 'scoring-definition/tests' | 'game/manually-created' | 'game/add-competitors' | 'class/add-competitors' | 'team/add-members' | 'competitor/add-to-class' | 'archives/export';
|
|
7971
|
+
|
|
7042
7972
|
export declare type Type = { type: "integer"; data: { min: number | null; max: number | null } } | { type: "float" } | { type: "string"; data: string | null } | { type: "boolean" } | { type: "iterable" } | { type: "countable" } | { type: "comparable" } | { type: "sortable" } | { type: "unit" } | { type: "time-delta" } | { type: "date-time" } | { type: "date" } | { type: "primitive" } | { type: "competitor-id" } | { type: "array" } | { type: "record" } | { type: "table" } | { type: "row" } | { type: "table-sorting"; data: TableSorting } | { type: "class" };
|
|
7043
7973
|
|
|
7044
7974
|
/**
|
|
@@ -7060,7 +7990,7 @@ declare interface TypeError_2 {
|
|
|
7060
7990
|
location: SourceLocation;
|
|
7061
7991
|
}
|
|
7062
7992
|
|
|
7063
|
-
declare type TypeErrorKind = { type: "unknown-variable"; data: { name: string } } | { type: "unknown-function"; data: { name: string } } | { type: "wrong-arity"; data: { name: string; expected: number; got: number } } | { type: "type-mismatch"; data: { expected: string; got: string } } | { type: "non-integer-index" } | { type: "non-record-property-access" } | { type: "nodety"; data: { message: string } };
|
|
7993
|
+
declare type TypeErrorKind = { type: "unknown-variable"; data: { name: string } } | { type: "unknown-function"; data: { name: string } } | { type: "wrong-arity"; data: { name: string; expected: number; got: number } } | { type: "type-mismatch"; data: { expected: string; got: string } } | { type: "non-integer-index" } | { type: "non-record-property-access" } | { type: "unknown-method"; data: { name: string; receiver: string } } | { type: "misplaced-lambda" } | { type: "nodety"; data: { message: string } };
|
|
7064
7994
|
|
|
7065
7995
|
declare type TypeErrors = TypeError_2[];
|
|
7066
7996
|
|
|
@@ -7116,6 +8046,9 @@ declare type Unsorted = null;
|
|
|
7116
8046
|
/** The engine's active locale. Extensions ship their own dictionaries and select them by it. */
|
|
7117
8047
|
export declare function useEngineLocale(): Locales;
|
|
7118
8048
|
|
|
8049
|
+
/** The terms in the locale of the engine, or in `locale`. Extensions can name the concepts with them. */
|
|
8050
|
+
export declare function useEngineTerminology(locale?: Locales): Terminology;
|
|
8051
|
+
|
|
7119
8052
|
/** Returns a `fetch` for `path` (relative, e.g. `"items"`) on the calling extension's own backend in the current event. */
|
|
7120
8053
|
export declare function useExtensionBackend(): ExtensionHost['backend'];
|
|
7121
8054
|
|
|
@@ -7155,6 +8088,9 @@ export declare function useRouter(): RouterContextType;
|
|
|
7155
8088
|
*/
|
|
7156
8089
|
export declare function useRunLogBatch(): (workspaceId: CommonWorkspaceId, operations: LogOperation[], label: ReactNode) => Promise<boolean | null>;
|
|
7157
8090
|
|
|
8091
|
+
/** The names of tables as the engine shows them (see `tableName`), e.g. for extensions. */
|
|
8092
|
+
export declare function useTableName(): (table: NamedTable) => string;
|
|
8093
|
+
|
|
7158
8094
|
/** The `:` params that are uuids, by name. All other `:` params are numbers. Workspace ids are uuids on root only. */
|
|
7159
8095
|
declare type UuidPathParams = {
|
|
7160
8096
|
workspaceId: CommonWorkspaceId;
|
|
@@ -7164,6 +8100,7 @@ declare type UuidPathParams = {
|
|
|
7164
8100
|
formatTestId: FormatTestId;
|
|
7165
8101
|
gameFormatId: GameFormatId;
|
|
7166
8102
|
gameId: GameId;
|
|
8103
|
+
scoringDefinitionId: ScoringDefinitionId;
|
|
7167
8104
|
tableId: TableId;
|
|
7168
8105
|
};
|
|
7169
8106
|
|
|
@@ -7194,6 +8131,11 @@ export declare type Value<T = Primitive> = { type: "unit" } | { type: "float"; d
|
|
|
7194
8131
|
*/
|
|
7195
8132
|
export declare function valueIntoExportable(value: Value): ExportableValue;
|
|
7196
8133
|
|
|
8134
|
+
/**
|
|
8135
|
+
* A name a script can refer to as a variable: an identifier that isn't a keyword.
|
|
8136
|
+
*/
|
|
8137
|
+
declare type VariableName = string;
|
|
8138
|
+
|
|
7197
8139
|
export declare function Warning({ children, className }: WarningProps): JSX.Element;
|
|
7198
8140
|
|
|
7199
8141
|
export declare interface WarningProps {
|
|
@@ -7201,6 +8143,33 @@ export declare interface WarningProps {
|
|
|
7201
8143
|
className?: string;
|
|
7202
8144
|
}
|
|
7203
8145
|
|
|
8146
|
+
/** See `ModalConfig.window`. The user resizes a window by its bottom right corner, its content scrolls inside. */
|
|
8147
|
+
export declare interface WindowOptions {
|
|
8148
|
+
title: ReactNode;
|
|
8149
|
+
/** Its size until the user resizes it. Default: fit content. */
|
|
8150
|
+
size?: WindowStartSize;
|
|
8151
|
+
/**
|
|
8152
|
+
* Default: 'never'. With a bar, a button in its title bar hides it and `MinimizedWindowsBar` shows the bar next to a
|
|
8153
|
+
* button that restores it.
|
|
8154
|
+
*/
|
|
8155
|
+
minimize?: 'never' | {
|
|
8156
|
+
bar: ReactNode;
|
|
8157
|
+
};
|
|
8158
|
+
}
|
|
8159
|
+
|
|
8160
|
+
export declare interface WindowSize {
|
|
8161
|
+
width: number;
|
|
8162
|
+
height: number;
|
|
8163
|
+
}
|
|
8164
|
+
|
|
8165
|
+
/** The size a window opens with, until the user resizes it. */
|
|
8166
|
+
export declare type WindowStartSize = {
|
|
8167
|
+
type: 'fit-content';
|
|
8168
|
+
} | {
|
|
8169
|
+
type: 'initial';
|
|
8170
|
+
size: WindowSize;
|
|
8171
|
+
};
|
|
8172
|
+
|
|
7204
8173
|
/**
|
|
7205
8174
|
* Same as GameDTO but with gameFormatId optional
|
|
7206
8175
|
*/
|
|
@@ -7212,4 +8181,9 @@ export declare type WorkspaceRootId = Brand<string, 'workspaceRootId'>;
|
|
|
7212
8181
|
|
|
7213
8182
|
export declare type WorkspaceSelfHostedId = Brand<number, 'workspaceSelfHostedId'>;
|
|
7214
8183
|
|
|
8184
|
+
/**
|
|
8185
|
+
* What a zip node does with lists of different lengths.
|
|
8186
|
+
*/
|
|
8187
|
+
declare type ZipLengths = "longest" | "shortest" | "a";
|
|
8188
|
+
|
|
7215
8189
|
export { }
|