@nxtedition/types 23.0.60 → 23.0.62

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.
Files changed (37) hide show
  1. package/dist/common/asset-indexer.d.ts +98 -0
  2. package/dist/common/asset-indexer.js +1 -0
  3. package/dist/common/index.d.ts +4 -0
  4. package/dist/common/index.js +4 -0
  5. package/dist/common/panel-property.d.ts +29 -0
  6. package/dist/common/panel-property.js +1 -0
  7. package/dist/common/schema-property.d.ts +12 -0
  8. package/dist/common/schema-property.js +1 -0
  9. package/dist/common/settings.d.ts +16 -0
  10. package/dist/common/subtitle.d.ts +4 -0
  11. package/dist/common/subtitle.js +1 -0
  12. package/dist/nxtpression.d.ts +295 -6
  13. package/dist/records/domains/asset.d.ts +11 -2
  14. package/dist/records/domains/device.d.ts +16 -0
  15. package/dist/records/domains/device.js +1 -0
  16. package/dist/records/domains/folder.d.ts +6 -0
  17. package/dist/records/domains/folder.js +1 -0
  18. package/dist/records/domains/index.d.ts +9 -1
  19. package/dist/records/domains/index.js +4 -0
  20. package/dist/records/domains/ingestschedule.d.ts +45 -0
  21. package/dist/records/domains/ingestschedule.js +1 -0
  22. package/dist/records/domains/note.d.ts +6 -0
  23. package/dist/records/domains/note.js +1 -0
  24. package/dist/records/domains/panel.d.ts +1 -28
  25. package/dist/records/domains/settings.d.ts +5 -0
  26. package/dist/records/exact/asset.d.ts +18 -1
  27. package/dist/records/exact/media.d.ts +40 -1
  28. package/dist/records/validate/assert-guard.js +3018 -1066
  29. package/dist/records/validate/assert.js +3030 -1068
  30. package/dist/records/validate/is.js +89 -8
  31. package/dist/records/validate/schemas.js +1932 -530
  32. package/dist/records/validate/stringify.js +252 -13
  33. package/dist/records/validate/utils.js +2 -2
  34. package/dist/records/validate/validate-equals.js +4737 -1738
  35. package/dist/records/validate/validate.js +1968 -230
  36. package/dist/rpc.d.ts +3 -2
  37. package/package.json +1 -1
@@ -0,0 +1,98 @@
1
+ import type { IsoTimestamp } from './index.ts';
2
+ export interface AssetIndexerCoreFields {
3
+ id: string;
4
+ title?: string;
5
+ description?: string;
6
+ created?: IsoTimestamp;
7
+ createdBy?: string;
8
+ createdByTitle?: string;
9
+ origin?: string;
10
+ modified?: IsoTimestamp;
11
+ modifiedBy?: string;
12
+ modifiedByAll?: string[];
13
+ modifiedByTitle?: string;
14
+ duration?: number;
15
+ tags?: string[];
16
+ deadlines?: IsoTimestamp[];
17
+ deadlinesCount?: number;
18
+ deadlines_date_range?: Array<{
19
+ gte: IsoTimestamp;
20
+ lte: IsoTimestamp;
21
+ }>;
22
+ assignees?: string[];
23
+ assigneesCount?: number;
24
+ locations?: Array<{
25
+ lat: number;
26
+ lon: number;
27
+ }>;
28
+ locationsCount?: number;
29
+ types?: string[];
30
+ primaryType?: string;
31
+ rawTypes?: string[];
32
+ status?: {
33
+ messages?: Array<{
34
+ code?: string;
35
+ level?: number;
36
+ }>;
37
+ };
38
+ published?: IsoTimestamp[];
39
+ publishedCount?: number;
40
+ storage?: {
41
+ files?: string[];
42
+ replicas?: string[];
43
+ locations?: string[];
44
+ zones?: string[];
45
+ uploading?: boolean;
46
+ size?: number;
47
+ filesCount?: number;
48
+ replicasCount?: number;
49
+ locationsCount?: number;
50
+ };
51
+ refs?: number;
52
+ refsByType?: Record<string, number>;
53
+ recurrence_date_range?: {
54
+ gte: IsoTimestamp;
55
+ lte: IsoTimestamp | null;
56
+ };
57
+ media_date_range?: {
58
+ gte: IsoTimestamp;
59
+ lte: IsoTimestamp;
60
+ };
61
+ ingestschedule_date_range?: {
62
+ gte: IsoTimestamp;
63
+ lte: IsoTimestamp | null;
64
+ };
65
+ ingestschedule?: {
66
+ type?: string;
67
+ sources?: string[];
68
+ routes?: string[];
69
+ };
70
+ username?: string;
71
+ user?: string;
72
+ "note.text"?: string;
73
+ subtitles?: string;
74
+ graphics?: string;
75
+ story?: {
76
+ content?: string;
77
+ graphics?: string[];
78
+ };
79
+ storyboard?: {
80
+ content?: unknown[];
81
+ };
82
+ /**
83
+ * These fields are populated from the provided `{id}:asset.media?` record as
84
+ * configured in the `asset.media` record. Due to the dynamic nature of that record,
85
+ * it's hard to type these fields more specifically. For now we only list a few
86
+ * (probably) expected fields.
87
+ */
88
+ media?: {
89
+ audio?: unknown;
90
+ video?: unknown;
91
+ timecode?: unknown;
92
+ language?: unknown;
93
+ transcribe?: unknown;
94
+ };
95
+ embedding?: Array<{
96
+ vector: number[];
97
+ }>;
98
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,3 +1,4 @@
1
+ export * from './asset-indexer.ts';
1
2
  export * from './block.ts';
2
3
  export * from './clone.ts';
3
4
  export * from './date.ts';
@@ -6,6 +7,7 @@ export * from './location.ts';
6
7
  export * from './nxtpression.ts';
7
8
  export * from './lock.ts';
8
9
  export * from './media.ts';
10
+ export * from './panel-property.ts';
9
11
  export * from './pipeline.ts';
10
12
  export * from './promoted-tag.ts';
11
13
  export * from './render-preset.ts';
@@ -13,9 +15,11 @@ export * from './render-profile.ts';
13
15
  export * from './render-query.ts';
14
16
  export * from './render-scene.ts';
15
17
  export * from './rule.ts';
18
+ export * from './schema-property.ts';
16
19
  export * from './search.ts';
17
20
  export * from './settings.ts';
18
21
  export * from './subtitle-style.ts';
22
+ export * from './subtitle.ts';
19
23
  export * from './error.ts';
20
24
  export * from './user-notification.ts';
21
25
  export interface Message {
@@ -1,3 +1,4 @@
1
+ export * from "./asset-indexer.js";
1
2
  export * from "./block.js";
2
3
  export * from "./clone.js";
3
4
  export * from "./date.js";
@@ -6,6 +7,7 @@ export * from "./location.js";
6
7
  export * from "./nxtpression.js";
7
8
  export * from "./lock.js";
8
9
  export * from "./media.js";
10
+ export * from "./panel-property.js";
9
11
  export * from "./pipeline.js";
10
12
  export * from "./promoted-tag.js";
11
13
  export * from "./render-preset.js";
@@ -13,8 +15,10 @@ export * from "./render-profile.js";
13
15
  export * from "./render-query.js";
14
16
  export * from "./render-scene.js";
15
17
  export * from "./rule.js";
18
+ export * from "./schema-property.js";
16
19
  export * from "./search.js";
17
20
  export * from "./settings.js";
18
21
  export * from "./subtitle-style.js";
22
+ export * from "./subtitle.js";
19
23
  export * from "./error.js";
20
24
  export * from "./user-notification.js";
@@ -0,0 +1,29 @@
1
+ import type { Nxtpression } from './nxtpression.ts';
2
+ export interface PanelProperty<Value = unknown> {
3
+ /** Specifying what type of data will be entered into the field. */
4
+ type: "array" | "asset" | "boolean" | "datetime" | "number" | "string" | "object" | "rpc";
5
+ /** User-friendly title of the property. This will be used as the field's label in the UI. */
6
+ title?: string;
7
+ description?: string;
8
+ domain?: string;
9
+ path?: string;
10
+ computed?: Nxtpression<Value>;
11
+ /** An object specifying where to index the data. Adding this will effectively make the data searchable. */
12
+ index?: {
13
+ /** A string specifying the user-friendly title of the search property. This is what users will see when creating search filters and bookmarks. */
14
+ label: string;
15
+ /** A string specifying where to store the data in the search index. Note that this should be a globally unique value in the system. Typically you'd use `{domain}.{path}` and you should prefer English in camel case */
16
+ path: string;
17
+ };
18
+ /** If present, indicates that the user must specify a value for the asset to be treated as valid. */
19
+ required?: boolean;
20
+ oneOf?: Array<{
21
+ const?: Value;
22
+ title?: string;
23
+ }>;
24
+ anyOf?: Array<{
25
+ const?: Value;
26
+ title?: string;
27
+ }>;
28
+ enum?: Value[];
29
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,12 @@
1
+ import type { PanelProperty, Nxtpression } from '../';
2
+ export interface SchemaProperty extends PanelProperty {
3
+ recordName?: Nxtpression<string, {
4
+ id: string;
5
+ }>;
6
+ setter?: Nxtpression<(value: unknown) => void, {
7
+ id: string;
8
+ value: unknown;
9
+ }>;
10
+ default?: unknown;
11
+ const?: unknown;
12
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -106,6 +106,7 @@ export interface Settings {
106
106
  };
107
107
  rundown?: {
108
108
  eventThumbnails?: boolean;
109
+ scriptEventFolding: "folded" | "unfoldedUntilFolded";
109
110
  };
110
111
  gallery?: {
111
112
  dimOnBlur?: boolean;
@@ -220,6 +221,15 @@ export interface Settings {
220
221
  };
221
222
  edit?: {
222
223
  thumbnailView?: "filmStrip" | "thumbnail" | "none";
224
+ normalize?: {
225
+ presets?: Array<{
226
+ id: string;
227
+ title: string;
228
+ i: number;
229
+ tp: number;
230
+ }>;
231
+ defaultPresetId?: string;
232
+ };
223
233
  voiceOver?: {
224
234
  inputDevice?: string;
225
235
  inputGainDb?: number;
@@ -329,6 +339,12 @@ export interface Settings {
329
339
  subscribeSearchHits?: boolean;
330
340
  parseRegex?: boolean;
331
341
  };
342
+ display?: {
343
+ disableHotArea?: boolean;
344
+ };
345
+ bookmarks?: {
346
+ refreshInterval?: number;
347
+ };
332
348
  }
333
349
  export type SettingsPaths = Paths<Settings>;
334
350
  interface ModuleTabs {
@@ -0,0 +1,4 @@
1
+ export type ApplySubtitleSource = string | {
2
+ type: "file";
3
+ file: string;
4
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -137,6 +137,7 @@ declare interface AssetDomainRecords {
137
137
  ":asset.media?": AssetDomainMediaProvidedRecord;
138
138
  ":asset.presence?": AssetDomainPresenceProvidedRecord;
139
139
  ":asset.comments?": AssetCommentsRecord;
140
+ ":asset.record?": AssetRecordProvidedRecord;
140
141
  }
141
142
 
142
143
  declare interface AssetDomainStatusProvidedRecord {
@@ -157,6 +158,10 @@ declare interface AssetDurationRecord {
157
158
  dynamic?: Dynamic;
158
159
  }
159
160
 
161
+ declare interface AssetDynamicPropertiesProvidedRecord {
162
+ value?: DynamicProperty[];
163
+ }
164
+
160
165
  declare interface AssetEmbeddingRecord {
161
166
  value?: Nxtpression<string, {
162
167
  id: string;
@@ -175,6 +180,104 @@ declare interface AssetIconRecord {
175
180
  dynamic?: Dynamic;
176
181
  }
177
182
 
183
+ declare interface AssetIndexerCoreFields {
184
+ id: string;
185
+ title?: string;
186
+ description?: string;
187
+ created?: IsoTimestamp;
188
+ createdBy?: string;
189
+ createdByTitle?: string;
190
+ origin?: string;
191
+ modified?: IsoTimestamp;
192
+ modifiedBy?: string;
193
+ modifiedByAll?: string[];
194
+ modifiedByTitle?: string;
195
+ duration?: number;
196
+ tags?: string[];
197
+ deadlines?: IsoTimestamp[];
198
+ deadlinesCount?: number;
199
+ deadlines_date_range?: Array<{
200
+ gte: IsoTimestamp;
201
+ lte: IsoTimestamp;
202
+ }>;
203
+ assignees?: string[];
204
+ assigneesCount?: number;
205
+ locations?: Array<{
206
+ lat: number;
207
+ lon: number;
208
+ }>;
209
+ locationsCount?: number;
210
+ types?: string[];
211
+ primaryType?: string;
212
+ rawTypes?: string[];
213
+ status?: {
214
+ messages?: Array<{
215
+ code?: string;
216
+ level?: number;
217
+ }>;
218
+ };
219
+ published?: IsoTimestamp[];
220
+ publishedCount?: number;
221
+ storage?: {
222
+ files?: string[];
223
+ replicas?: string[];
224
+ locations?: string[];
225
+ zones?: string[];
226
+ uploading?: boolean;
227
+ size?: number;
228
+ filesCount?: number;
229
+ replicasCount?: number;
230
+ locationsCount?: number;
231
+ };
232
+ refs?: number;
233
+ refsByType?: Record<string, number>;
234
+ recurrence_date_range?: {
235
+ gte: IsoTimestamp;
236
+ lte: IsoTimestamp | null;
237
+ };
238
+ media_date_range?: {
239
+ gte: IsoTimestamp;
240
+ lte: IsoTimestamp;
241
+ };
242
+ ingestschedule_date_range?: {
243
+ gte: IsoTimestamp;
244
+ lte: IsoTimestamp | null;
245
+ };
246
+ ingestschedule?: {
247
+ type?: string;
248
+ sources?: string[];
249
+ routes?: string[];
250
+ };
251
+ username?: string;
252
+ user?: string;
253
+ "note.text"?: string;
254
+ subtitles?: string;
255
+ graphics?: string;
256
+ story?: {
257
+ content?: string;
258
+ graphics?: string[];
259
+ };
260
+ storyboard?: {
261
+ content?: unknown[];
262
+ };
263
+ /**
264
+ * These fields are populated from the provided `{id}:asset.media?` record as
265
+ * configured in the `asset.media` record. Due to the dynamic nature of that record,
266
+ * it's hard to type these fields more specifically. For now we only list a few
267
+ * (probably) expected fields.
268
+ */
269
+ media?: {
270
+ audio?: unknown;
271
+ video?: unknown;
272
+ timecode?: unknown;
273
+ language?: unknown;
274
+ transcribe?: unknown;
275
+ };
276
+ embedding?: Array<{
277
+ vector: number[];
278
+ }>;
279
+ }
280
+
178
281
  declare interface AssetLocationsRecord {
179
282
  value?: Nxtpression<Array<{
180
283
  lat: number;
@@ -208,11 +311,21 @@ declare interface AssetRawTypesProvidedRecord {
208
311
  value?: string[];
209
312
  }
210
313
 
314
+ /**
315
+ * Elasticsearch indexed record for an asset.
316
+ * Extends core fields with dynamic properties from panels and schemas.
317
+ */
318
+ declare interface AssetRecordProvidedRecord extends AssetIndexerCoreFields {
319
+ /** Dynamic properties from panels and schemas (keys defined by property.index.path) */
320
+ [dynamicProperty: string]: unknown;
321
+ }
322
+
211
323
  declare interface AssetRecords {
212
324
  "asset.assignees": AssetAssigneesRecord;
213
325
  "asset.clone": AssetCloneRecord;
214
326
  "asset.deadlines": AssetDeadlinesRecord;
215
327
  "asset.duration": AssetDurationRecord;
328
+ "asset.dynamicProperties?": AssetDynamicPropertiesProvidedRecord;
216
329
  "asset.embedding": AssetEmbeddingRecord;
217
330
  "asset.icon": AssetIconRecord;
218
331
  "asset.locations": AssetLocationsRecord;
@@ -244,7 +357,7 @@ declare interface AssetTagsRecord {
244
357
  }
245
358
 
246
359
  declare interface AssetTitleProvidedRecord {
247
- value?: string;
360
+ value?: string | null;
248
361
  }
249
362
 
250
363
  declare interface AssetTitleRecord {
@@ -505,11 +618,44 @@ declare interface DesignViewRow<Id = string, Key = string, Value = void> {
505
618
  value: Value;
506
619
  }
507
620
 
508
- declare interface DomainRecords extends AssetDomainRecords, AuthDomainRecords, BundleDomainRecords, CalendarEventDomainRecords, CloneDomainRecords, CommentReactionDomainRecords, CommentReadMarkDomainRecords, CommentDomainRecords, ConditionDomainRecords, ConnectionDomainRecords, ContactDomainRecords, DeepstreamDomainRecords, DesignDomainRecords, EditDomainRecords, EventDomainRecords, FileDomainRecords, GeneralDomainRecords, HarvestDomainRecords, IngestclipDomainRecords, MediaDomainRecords, MonitorDomainRecords, PanelDomainRecords, PermissionDomainRecords, PipelinePresetDomainRecords, PipelineDomainRecords, PlanningDomainRecords, PrompterDomainRecords, PublishDomainRecords, PublishedDomainRecords, RenderPresetDomainRecords, RenderDomainRecords, RevsDomainRecords, RoleDomainRecords, ScriptDomainRecords, SearchDomainRecords, SettingsDomainRecords, ShotboxDomainRecords, StoryboardDomainRecords, SubtitleStyleDomainRecords, SubtitleDomainRecords, TemplateDomainRecords, UserNotificationStatusDomainRecords, UserNotificationDomainRecords, UserDomainRecords, UsernameDomainRecords {
621
+ declare interface DeviceDomainRecord {
622
+ type?: "display";
623
+ display?: {
624
+ activeAsset?: string;
625
+ editor?: string;
626
+ };
627
+ }
628
+
629
+ declare interface DeviceDomainRecords {
630
+ ":device": DeviceDomainRecord;
631
+ ":device.status?": DeviceDomainStatusRecord;
632
+ }
633
+
634
+ declare interface DeviceDomainStatusRecord {
635
+ since?: string;
636
+ heartbeat?: string;
637
+ version?: string;
638
+ }
639
+
640
+ declare interface DomainRecords extends AssetDomainRecords, AuthDomainRecords, BundleDomainRecords, CalendarEventDomainRecords, CloneDomainRecords, CommentReactionDomainRecords, CommentReadMarkDomainRecords, CommentDomainRecords, ConditionDomainRecords, ConnectionDomainRecords, ContactDomainRecords, DeepstreamDomainRecords, DesignDomainRecords, DeviceDomainRecords, EditDomainRecords, EventDomainRecords, FileDomainRecords, FolderDomainRecords, GeneralDomainRecords, HarvestDomainRecords, IngestclipDomainRecords, IngestScheduleDomainRecords, MediaDomainRecords, MonitorDomainRecords, NoteDomainRecords, PanelDomainRecords, PermissionDomainRecords, PipelinePresetDomainRecords, PipelineDomainRecords, PlanningDomainRecords, PrompterDomainRecords, PublishDomainRecords, PublishedDomainRecords, RenderPresetDomainRecords, RenderDomainRecords, RevsDomainRecords, RoleDomainRecords, ScriptDomainRecords, SearchDomainRecords, SettingsDomainRecords, ShotboxDomainRecords, StoryboardDomainRecords, SubtitleStyleDomainRecords, SubtitleDomainRecords, TemplateDomainRecords, UserNotificationStatusDomainRecords, UserNotificationDomainRecords, UserDomainRecords, UsernameDomainRecords {
509
641
  }
510
642
 
511
643
  declare type Dynamic = false | string[];
512
644
 
645
+ /**
646
+ * Dynamic property definition.
647
+ * Properties come from :panel assets or :schema assets.
648
+ */
649
+ declare interface DynamicProperty extends Omit<PanelProperty, "path">, Omit<SchemaProperty, "path"> {
650
+ /** ID of the panel asset that defines this property (for panel-sourced properties) */
651
+ panel?: string;
652
+ /** ID of the schema asset that defines this property (for schema-sourced properties) */
653
+ schema?: string;
654
+ /** List of asset types this property supports */
655
+ supports: string[];
656
+ path: string;
657
+ }
658
+
513
659
  declare interface EditDomainRecords {
514
660
  ":edit": EditRecord;
515
661
  }
@@ -948,6 +1094,14 @@ declare interface FileStats extends File_2 {
948
1094
  complete: boolean;
949
1095
  }
950
1096
 
1097
+ declare interface FolderDomainRecords {
1098
+ ":folder.items": FolderItemsDomainRecord;
1099
+ }
1100
+
1101
+ declare interface FolderItemsDomainRecord {
1102
+ value: string[];
1103
+ }
1104
+
951
1105
  declare interface FontFace_2 {
952
1106
  name: string;
953
1107
  family: string;
@@ -1207,6 +1361,48 @@ declare interface IngestclipDomainRecords {
1207
1361
  ":ingestclip": IngestclipDomainRecord;
1208
1362
  }
1209
1363
 
1364
+ declare interface IngestIo {
1365
+ route?: string;
1366
+ /** List of connection IDs */
1367
+ publish?: string[];
1368
+ }
1369
+
1370
+ declare interface IngestScheduleDomainRecord {
1371
+ io?: {
1372
+ [id: string]: IngestIo;
1373
+ };
1374
+ sourcesHint?: string;
1375
+ enabled?: boolean;
1376
+ clipname?: Nxtpression<string>;
1377
+ autoTags?: string[];
1378
+ storyboard?: string | null;
1379
+ pipeline?: string | null;
1380
+ type?: "instant" | "repeat" | "salami";
1381
+ salami?: {
1382
+ gallery?: string | null;
1383
+ tag?: string;
1384
+ };
1385
+ repeat?: IngestScheduleRepeat;
1386
+ }
1387
+
1388
+ declare interface IngestScheduleDomainRecords {
1389
+ ":ingestschedule": IngestScheduleDomainRecord;
1390
+ ":ingestschedule.stats?": IngestScheduleDomainStatsRecord;
1391
+ }
1392
+
1393
+ declare interface IngestScheduleDomainStatsRecord {
1394
+ error?: unknown;
1395
+ }
1396
+
1397
+ declare interface IngestScheduleRepeat {
1398
+ freq?: RepeatFreq;
1399
+ until?: string;
1400
+ start?: string;
1401
+ tzid?: string;
1402
+ duration?: number;
1403
+ byweekday?: number[];
1404
+ }
1405
+
1210
1406
  /**
1211
1407
  The actual implementation of `IsUnion`.
1212
1408
  */
@@ -1429,6 +1625,7 @@ declare interface MediaProbeRecord {
1429
1625
  declare interface MediaRecords {
1430
1626
  "media.subtitles": MediaSubtitlesRecord;
1431
1627
  "media.subtitles?": MediaSubtitlesProvidedRecord;
1628
+ "media.transcribe": MediaTranscribeRecord;
1432
1629
  "media.transcribe?": MediaTranscribeProvidedRecord;
1433
1630
  "media.fonts?": MediaFonts;
1434
1631
  "media.consolidate": MediaConsolidateRecord;
@@ -1474,6 +1671,16 @@ declare interface MediaTranscribeProvidedRecord {
1474
1671
  translate?: {
1475
1672
  languages: Record<string, string>;
1476
1673
  };
1674
+ replacers?: Record<string, TranscribeReplacer | TranscribeReplacer[]>;
1675
+ }
1676
+
1677
+ declare interface MediaTranscribeRecord {
1678
+ engines: Record<string, string>;
1679
+ languages: Record<string, string>;
1680
+ translate?: {
1681
+ languages: Record<string, string>;
1682
+ };
1683
+ replacers?: Record<string, TranscribeReplacer | TranscribeReplacer[]>;
1477
1684
  }
1478
1685
 
1479
1686
  declare type MediaTranscriptChangesRecord = {
@@ -1682,6 +1889,14 @@ declare const NODE_STATE_KEY = "$";
1682
1889
 
1683
1890
  declare type NodeContent = EventNodeContent | TextNodeContent | ParagraphNodeContent | CommentNodeContent | ListNodeContent | ListItemNodeContent | HeadingNodeContent | HorizontalRuleContent | QuoteNodeContent;
1684
1891
 
1892
+ declare interface NoteDomainRecord {
1893
+ value: string;
1894
+ }
1895
+
1896
+ declare interface NoteDomainRecords {
1897
+ ":note": NoteDomainRecord;
1898
+ }
1899
+
1685
1900
  declare type NotificationReason = "mentioned" | "assigned" | "author" | "participated" | "always";
1686
1901
 
1687
1902
  declare type Numeric<T extends bigint> = `${T}` extends `${infer N extends number}` ? N : never;
@@ -2005,7 +2220,7 @@ declare interface PanelLayoutItem {
2005
2220
  widget?: LayoutWidget;
2006
2221
  }
2007
2222
 
2008
- declare interface PanelProperty {
2223
+ declare interface PanelProperty<Value = unknown> {
2009
2224
  /** Specifying what type of data will be entered into the field. */
2010
2225
  type: "array" | "asset" | "boolean" | "datetime" | "number" | "string" | "object" | "rpc";
2011
2226
  /** User-friendly title of the property. This will be used as the field's label in the UI. */
@@ -2013,7 +2228,7 @@ declare interface PanelProperty {
2013
2228
  description?: string;
2014
2229
  domain?: string;
2015
2230
  path?: string;
2016
- computed?: Nxtpression<unknown>;
2231
+ computed?: Nxtpression<Value>;
2017
2232
  /** An object specifying where to index the data. Adding this will effectively make the data searchable. */
2018
2233
  index?: {
2019
2234
  /** A string specifying the user-friendly title of the search property. This is what users will see when creating search filters and bookmarks. */
@@ -2024,13 +2239,14 @@ declare interface PanelProperty {
2024
2239
  /** If present, indicates that the user must specify a value for the asset to be treated as valid. */
2025
2240
  required?: boolean;
2026
2241
  oneOf?: Array<{
2027
- const?: unknown;
2242
+ const?: Value;
2028
2243
  title?: string;
2029
2244
  }>;
2030
2245
  anyOf?: Array<{
2031
- const?: unknown;
2246
+ const?: Value;
2032
2247
  title?: string;
2033
2248
  }>;
2249
+ enum?: Value[];
2034
2250
  }
2035
2251
 
2036
2252
  declare interface ParagraphNodeContent extends ElementNodeContent {
@@ -2470,6 +2686,13 @@ declare interface RenderSceneObject {
2470
2686
  };
2471
2687
  }
2472
2688
 
2689
+ /**
2690
+ * 0 = Monthly
2691
+ * 2 = Weekly
2692
+ * 3 = Daily
2693
+ */
2694
+ declare type RepeatFreq = 0 | 2 | 3;
2695
+
2473
2696
  declare interface ReplaceOperation {
2474
2697
  op: 'replace';
2475
2698
  path: string;
@@ -2516,6 +2739,18 @@ declare interface RpcPermission {
2516
2739
  tags?: undefined;
2517
2740
  }
2518
2741
 
2742
+ declare interface SchemaProperty extends PanelProperty {
2743
+ recordName?: Nxtpression<string, {
2744
+ id: string;
2745
+ }>;
2746
+ setter?: Nxtpression<(value: unknown) => void, {
2747
+ id: string;
2748
+ value: unknown;
2749
+ }>;
2750
+ default?: unknown;
2751
+ const?: unknown;
2752
+ }
2753
+
2519
2754
  /**
2520
2755
  * A record for non-script automation assets that can have child events.
2521
2756
  */
@@ -2830,6 +3065,7 @@ declare interface Settings {
2830
3065
  };
2831
3066
  rundown?: {
2832
3067
  eventThumbnails?: boolean;
3068
+ scriptEventFolding: "folded" | "unfoldedUntilFolded";
2833
3069
  };
2834
3070
  gallery?: {
2835
3071
  dimOnBlur?: boolean;
@@ -2944,6 +3180,15 @@ declare interface Settings {
2944
3180
  };
2945
3181
  edit?: {
2946
3182
  thumbnailView?: "filmStrip" | "thumbnail" | "none";
3183
+ normalize?: {
3184
+ presets?: Array<{
3185
+ id: string;
3186
+ title: string;
3187
+ i: number;
3188
+ tp: number;
3189
+ }>;
3190
+ defaultPresetId?: string;
3191
+ };
2947
3192
  voiceOver?: {
2948
3193
  inputDevice?: string;
2949
3194
  inputGainDb?: number;
@@ -3053,12 +3298,24 @@ declare interface Settings {
3053
3298
  subscribeSearchHits?: boolean;
3054
3299
  parseRegex?: boolean;
3055
3300
  };
3301
+ display?: {
3302
+ disableHotArea?: boolean;
3303
+ };
3304
+ bookmarks?: {
3305
+ refreshInterval?: number;
3306
+ };
3056
3307
  }
3057
3308
 
3058
3309
  declare interface SettingsDomainRecords {
3059
3310
  ":settings": SettingsRecord;
3311
+ ":settings.node": SettingsNodeRecord;
3060
3312
  }
3061
3313
 
3314
+ declare type SettingsNodeRecord = Record<string, {
3315
+ collapsed: boolean;
3316
+ hidden: boolean;
3317
+ }>;
3318
+
3062
3319
  declare interface SettingsPanelStoreTab extends ModuleTabsSettingsValue {
3063
3320
  activeSectionIndex?: number;
3064
3321
  }
@@ -3568,6 +3825,38 @@ declare interface TextNodeContent {
3568
3825
  format?: number;
3569
3826
  }
3570
3827
 
3828
+ declare interface TranscribeForEachWordReplacer {
3829
+ type: "items";
3830
+ items: string[];
3831
+ _comment?: string;
3832
+ replacers: Array<{
3833
+ /** Expression that should return RegExp or string arg to new RegExp */
3834
+ pattern: Nxtpression<unknown, {
3835
+ item: string;
3836
+ }>;
3837
+ replacement: Nxtpression<string | ((...args: unknown[]) => string), {
3838
+ item: string;
3839
+ }>;
3840
+ flags?: string;
3841
+ _comment?: string;
3842
+ }>;
3843
+ }
3844
+
3845
+ declare type TranscribeReplacer = TranscribeReplaceReplacer | TranscribeForEachWordReplacer;
3846
+
3847
+ declare interface TranscribeReplaceReplacer {
3848
+ type?: "replace";
3849
+ /** Expression that should return RegExp or string arg to new RegExp */
3850
+ pattern: Nxtpression<unknown, {
3851
+ item: string;
3852
+ }>;
3853
+ replacement: Nxtpression<string | ((...args: unknown[]) => string), {
3854
+ item: string;
3855
+ }>;
3856
+ flags?: string;
3857
+ _comment?: string;
3858
+ }
3859
+
3571
3860
  /**
3572
3861
  * Type tag for specifying numeric bit-width representations.
3573
3862
  *