@hyprune/schema 0.5.1 → 0.6.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.
Files changed (47) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/README.md +21 -4
  3. package/bin/validate.mjs +4 -4
  4. package/extensions/blueprint.schema.json +29 -0
  5. package/lib/validate.d.mts +6 -0
  6. package/lib/validate.mjs +54 -2
  7. package/package.json +2 -2
  8. package/v0/common.schema.json +85 -0
  9. package/v0/extension.schema.json +121 -0
  10. package/v0/ipc.schema.json +1725 -0
  11. package/v0/screen-type.schema.json +115 -0
  12. package/v0/world.schema.json +363 -0
  13. package/v0.10/ipc.schema.json +8811 -0
  14. package/v0.11/ipc.schema.json +8863 -0
  15. package/v0.12/ipc.schema.json +9541 -0
  16. package/v0.13/ipc.schema.json +10032 -0
  17. package/v0.14/ipc.schema.json +10127 -0
  18. package/v0.15/ipc.schema.json +10534 -0
  19. package/v0.16/ipc.schema.json +10550 -0
  20. package/v0.17/ipc.schema.json +10703 -0
  21. package/v0.18/ipc.schema.json +10801 -0
  22. package/v0.19/ipc.schema.json +11587 -0
  23. package/v0.2/common.schema.json +86 -0
  24. package/v0.2/ipc.schema.json +3570 -0
  25. package/v0.2/world.schema.json +363 -0
  26. package/v0.20/ipc.schema.json +11800 -0
  27. package/v0.3/common.schema.json +477 -0
  28. package/v0.3/ipc.schema.json +4044 -0
  29. package/v0.3/world.schema.json +390 -0
  30. package/v0.4/common.schema.json +477 -0
  31. package/v0.4/ipc.schema.json +5561 -0
  32. package/v0.4/world.schema.json +496 -0
  33. package/v0.5/common.schema.json +477 -0
  34. package/v0.5/ipc.schema.json +5781 -0
  35. package/v0.5/world.schema.json +790 -0
  36. package/v0.6/common.schema.json +478 -0
  37. package/v0.6/input.schema.json +519 -0
  38. package/v0.6/ipc.schema.json +7375 -0
  39. package/v0.6/world.schema.json +1062 -0
  40. package/v0.7/common.schema.json +478 -0
  41. package/v0.7/ipc.schema.json +7905 -0
  42. package/v0.7/world.schema.json +1062 -0
  43. package/v0.8/common.schema.json +478 -0
  44. package/v0.8/ipc.schema.json +7945 -0
  45. package/v0.8/world.schema.json +1261 -0
  46. package/v0.9/input.schema.json +518 -0
  47. package/v0.9/ipc.schema.json +8613 -0
@@ -0,0 +1,790 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://hyprune.com/schema/v0.5/world.schema.json",
4
+ "title": "Hyprune world 0.5: ink and visibility areas",
5
+ "type": "object",
6
+ "properties": {
7
+ "formatVersion": {
8
+ "const": "0.5"
9
+ },
10
+ "id": {
11
+ "$ref": "common.schema.json#/$defs/id"
12
+ },
13
+ "version": {
14
+ "$ref": "common.schema.json#/$defs/version"
15
+ },
16
+ "name": {
17
+ "type": "string",
18
+ "minLength": 1,
19
+ "maxLength": 256
20
+ },
21
+ "description": {
22
+ "type": "string",
23
+ "minLength": 0,
24
+ "maxLength": 4096
25
+ },
26
+ "license": {
27
+ "type": "string",
28
+ "minLength": 1,
29
+ "maxLength": 256
30
+ },
31
+ "scene": {
32
+ "allOf": [
33
+ {
34
+ "$ref": "common.schema.json#/$defs/path"
35
+ },
36
+ {
37
+ "pattern": "\\.(gltf|glb)$",
38
+ "type": "string"
39
+ }
40
+ ]
41
+ },
42
+ "preview": {
43
+ "$ref": "common.schema.json#/$defs/path"
44
+ },
45
+ "defaultSpawn": {
46
+ "$ref": "common.schema.json#/$defs/slug"
47
+ },
48
+ "spawns": {
49
+ "type": "array",
50
+ "items": {
51
+ "type": "object",
52
+ "properties": {
53
+ "id": {
54
+ "$ref": "common.schema.json#/$defs/slug"
55
+ },
56
+ "pose": {
57
+ "$ref": "common.schema.json#/$defs/pose"
58
+ },
59
+ "node": {
60
+ "$ref": "common.schema.json#/$defs/index"
61
+ }
62
+ },
63
+ "required": [
64
+ "id",
65
+ "pose"
66
+ ],
67
+ "additionalProperties": false
68
+ },
69
+ "minItems": 1
70
+ },
71
+ "attribution": {
72
+ "type": "array",
73
+ "items": {
74
+ "type": "object",
75
+ "properties": {
76
+ "path": {
77
+ "anyOf": [
78
+ {
79
+ "$ref": "common.schema.json#/$defs/path"
80
+ },
81
+ {
82
+ "const": "."
83
+ }
84
+ ]
85
+ },
86
+ "author": {
87
+ "type": "string",
88
+ "minLength": 1,
89
+ "maxLength": 256
90
+ },
91
+ "license": {
92
+ "type": "string",
93
+ "minLength": 1,
94
+ "maxLength": 256
95
+ },
96
+ "source": {
97
+ "type": "string",
98
+ "minLength": 1,
99
+ "maxLength": 2048,
100
+ "pattern": "^https://"
101
+ }
102
+ },
103
+ "required": [
104
+ "path",
105
+ "author",
106
+ "license"
107
+ ],
108
+ "additionalProperties": false
109
+ },
110
+ "minItems": 1
111
+ },
112
+ "zones": {
113
+ "type": "array",
114
+ "items": {
115
+ "type": "object",
116
+ "properties": {
117
+ "id": {
118
+ "$ref": "common.schema.json#/$defs/slug"
119
+ },
120
+ "name": {
121
+ "type": "string",
122
+ "minLength": 1,
123
+ "maxLength": 256
124
+ },
125
+ "bounds": {
126
+ "type": "object",
127
+ "properties": {
128
+ "min": {
129
+ "type": "array",
130
+ "items": {
131
+ "type": "number"
132
+ },
133
+ "minItems": 3,
134
+ "maxItems": 3
135
+ },
136
+ "max": {
137
+ "type": "array",
138
+ "items": {
139
+ "type": "number"
140
+ },
141
+ "minItems": 3,
142
+ "maxItems": 3
143
+ }
144
+ },
145
+ "required": [
146
+ "min",
147
+ "max"
148
+ ],
149
+ "additionalProperties": false
150
+ }
151
+ },
152
+ "required": [
153
+ "id",
154
+ "name",
155
+ "bounds"
156
+ ],
157
+ "additionalProperties": false
158
+ },
159
+ "minItems": 0
160
+ },
161
+ "anchors": {
162
+ "type": "array",
163
+ "items": {
164
+ "type": "object",
165
+ "properties": {
166
+ "id": {
167
+ "$ref": "common.schema.json#/$defs/slug"
168
+ },
169
+ "pose": {
170
+ "$ref": "common.schema.json#/$defs/pose"
171
+ },
172
+ "size": {
173
+ "type": "array",
174
+ "items": {
175
+ "type": "number",
176
+ "exclusiveMinimum": 0
177
+ },
178
+ "minItems": 2,
179
+ "maxItems": 2
180
+ },
181
+ "screenType": {
182
+ "$ref": "common.schema.json#/$defs/id"
183
+ },
184
+ "node": {
185
+ "$ref": "common.schema.json#/$defs/index"
186
+ },
187
+ "mount": {
188
+ "$ref": "common.schema.json#/$defs/mount"
189
+ }
190
+ },
191
+ "required": [
192
+ "id",
193
+ "pose",
194
+ "size",
195
+ "screenType"
196
+ ],
197
+ "additionalProperties": false
198
+ },
199
+ "minItems": 0
200
+ },
201
+ "navigation": {
202
+ "type": "object",
203
+ "properties": {
204
+ "kind": {
205
+ "const": "mesh"
206
+ },
207
+ "node": {
208
+ "$ref": "common.schema.json#/$defs/index"
209
+ },
210
+ "agentRadius": {
211
+ "type": "number",
212
+ "exclusiveMinimum": 0
213
+ },
214
+ "agentHeight": {
215
+ "type": "number",
216
+ "exclusiveMinimum": 0
217
+ }
218
+ },
219
+ "required": [
220
+ "kind",
221
+ "node",
222
+ "agentRadius",
223
+ "agentHeight"
224
+ ],
225
+ "additionalProperties": false
226
+ },
227
+ "collision": {
228
+ "type": "array",
229
+ "items": {
230
+ "type": "object",
231
+ "properties": {
232
+ "node": {
233
+ "$ref": "common.schema.json#/$defs/index"
234
+ },
235
+ "shape": {
236
+ "enum": [
237
+ "mesh",
238
+ "convex"
239
+ ]
240
+ },
241
+ "layer": {
242
+ "const": "static"
243
+ }
244
+ },
245
+ "required": [
246
+ "node",
247
+ "shape",
248
+ "layer"
249
+ ],
250
+ "additionalProperties": false
251
+ },
252
+ "minItems": 0
253
+ },
254
+ "audio": {
255
+ "type": "array",
256
+ "items": {
257
+ "type": "object",
258
+ "properties": {
259
+ "id": {
260
+ "$ref": "common.schema.json#/$defs/slug"
261
+ },
262
+ "path": {
263
+ "allOf": [
264
+ {
265
+ "$ref": "common.schema.json#/$defs/path"
266
+ },
267
+ {
268
+ "pattern": "\\.(ogg|wav)$",
269
+ "type": "string"
270
+ }
271
+ ]
272
+ },
273
+ "position": {
274
+ "type": "array",
275
+ "items": {
276
+ "type": "number"
277
+ },
278
+ "minItems": 3,
279
+ "maxItems": 3
280
+ },
281
+ "radius": {
282
+ "type": "number",
283
+ "exclusiveMinimum": 0
284
+ },
285
+ "gain": {
286
+ "type": "number",
287
+ "minimum": 0,
288
+ "maximum": 1
289
+ },
290
+ "loop": {
291
+ "type": "boolean"
292
+ }
293
+ },
294
+ "required": [
295
+ "id",
296
+ "path",
297
+ "position",
298
+ "radius",
299
+ "gain",
300
+ "loop"
301
+ ],
302
+ "additionalProperties": false
303
+ },
304
+ "minItems": 0
305
+ },
306
+ "lightmaps": {
307
+ "type": "array",
308
+ "items": {
309
+ "type": "object",
310
+ "properties": {
311
+ "material": {
312
+ "$ref": "common.schema.json#/$defs/index"
313
+ },
314
+ "texture": {
315
+ "$ref": "common.schema.json#/$defs/index"
316
+ },
317
+ "texCoord": {
318
+ "const": 1
319
+ },
320
+ "encoding": {
321
+ "enum": [
322
+ "linear",
323
+ "srgb"
324
+ ]
325
+ },
326
+ "intensity": {
327
+ "type": "number",
328
+ "minimum": 0
329
+ }
330
+ },
331
+ "required": [
332
+ "material",
333
+ "texture",
334
+ "texCoord",
335
+ "encoding",
336
+ "intensity"
337
+ ],
338
+ "additionalProperties": false
339
+ },
340
+ "minItems": 0
341
+ },
342
+ "extensions": {
343
+ "$ref": "common.schema.json#/$defs/extensions"
344
+ },
345
+ "requiredExtensions": {
346
+ "type": "array",
347
+ "items": {
348
+ "$ref": "common.schema.json#/$defs/id"
349
+ },
350
+ "minItems": 0,
351
+ "uniqueItems": true
352
+ },
353
+ "areas": {
354
+ "type": "array",
355
+ "items": {
356
+ "$ref": "common.schema.json#/$defs/area"
357
+ },
358
+ "maxItems": 32
359
+ },
360
+ "atmosphere": {
361
+ "type": "object",
362
+ "properties": {
363
+ "fog": {
364
+ "type": "object",
365
+ "properties": {
366
+ "color": {
367
+ "$ref": "common.schema.json#/$defs/vec3"
368
+ },
369
+ "density": {
370
+ "type": "number",
371
+ "minimum": 0,
372
+ "maximum": 1
373
+ },
374
+ "heightFalloff": {
375
+ "type": "number",
376
+ "minimum": 0,
377
+ "maximum": 10
378
+ },
379
+ "baseHeight": {
380
+ "type": "number",
381
+ "minimum": -10000,
382
+ "maximum": 10000
383
+ },
384
+ "excludeUnlit": {
385
+ "type": "boolean"
386
+ }
387
+ },
388
+ "required": [
389
+ "color",
390
+ "density",
391
+ "heightFalloff",
392
+ "baseHeight",
393
+ "excludeUnlit"
394
+ ],
395
+ "additionalProperties": false
396
+ },
397
+ "sky": {
398
+ "type": "object",
399
+ "properties": {
400
+ "zenith": {
401
+ "$ref": "common.schema.json#/$defs/vec3"
402
+ },
403
+ "horizon": {
404
+ "$ref": "common.schema.json#/$defs/vec3"
405
+ },
406
+ "ground": {
407
+ "$ref": "common.schema.json#/$defs/vec3"
408
+ },
409
+ "sun": {
410
+ "type": "object",
411
+ "properties": {
412
+ "direction": {
413
+ "$ref": "common.schema.json#/$defs/vec3"
414
+ },
415
+ "color": {
416
+ "$ref": "common.schema.json#/$defs/vec3"
417
+ },
418
+ "intensity": {
419
+ "type": "number",
420
+ "minimum": 0,
421
+ "maximum": 10000
422
+ },
423
+ "angularRadius": {
424
+ "type": "number",
425
+ "minimum": 0.001,
426
+ "maximum": 1
427
+ }
428
+ },
429
+ "required": [
430
+ "direction",
431
+ "color",
432
+ "intensity",
433
+ "angularRadius"
434
+ ],
435
+ "additionalProperties": false
436
+ }
437
+ },
438
+ "required": [
439
+ "zenith",
440
+ "horizon",
441
+ "ground",
442
+ "sun"
443
+ ],
444
+ "additionalProperties": false
445
+ },
446
+ "environment": {
447
+ "type": "object",
448
+ "properties": {
449
+ "faces": {
450
+ "type": "array",
451
+ "items": {
452
+ "$ref": "common.schema.json#/$defs/path"
453
+ },
454
+ "minItems": 6,
455
+ "maxItems": 6
456
+ },
457
+ "encoding": {
458
+ "enum": [
459
+ "srgb",
460
+ "linear"
461
+ ]
462
+ },
463
+ "intensity": {
464
+ "type": "number",
465
+ "minimum": 0,
466
+ "maximum": 10000
467
+ },
468
+ "rotation": {
469
+ "type": "number",
470
+ "minimum": -6.283186,
471
+ "maximum": 6.283186
472
+ },
473
+ "maxResolution": {
474
+ "type": "integer",
475
+ "minimum": 16,
476
+ "maximum": 512
477
+ }
478
+ },
479
+ "required": [
480
+ "faces",
481
+ "encoding",
482
+ "intensity",
483
+ "rotation",
484
+ "maxResolution"
485
+ ],
486
+ "additionalProperties": false
487
+ },
488
+ "exposure": {
489
+ "type": "number",
490
+ "minimum": 0.01,
491
+ "maximum": 100
492
+ },
493
+ "toneMapping": {
494
+ "enum": [
495
+ "aces",
496
+ "reinhard",
497
+ "linear"
498
+ ]
499
+ },
500
+ "bloom": {
501
+ "type": "object",
502
+ "properties": {
503
+ "strength": {
504
+ "type": "number",
505
+ "minimum": 0,
506
+ "maximum": 2
507
+ },
508
+ "threshold": {
509
+ "type": "number",
510
+ "minimum": 0,
511
+ "maximum": 100
512
+ },
513
+ "radius": {
514
+ "type": "number",
515
+ "minimum": 1,
516
+ "maximum": 8
517
+ }
518
+ },
519
+ "required": [
520
+ "strength",
521
+ "threshold",
522
+ "radius"
523
+ ],
524
+ "additionalProperties": false
525
+ },
526
+ "outline": {
527
+ "type": "object",
528
+ "properties": {
529
+ "enabled": {
530
+ "type": "boolean"
531
+ },
532
+ "colour": {
533
+ "type": "array",
534
+ "items": {
535
+ "type": "number",
536
+ "minimum": 0,
537
+ "maximum": 1
538
+ },
539
+ "minItems": 3,
540
+ "maxItems": 3
541
+ },
542
+ "widthPx": {
543
+ "type": "number",
544
+ "minimum": 1,
545
+ "maximum": 4
546
+ },
547
+ "depthThreshold": {
548
+ "type": "number",
549
+ "minimum": 0.0001,
550
+ "maximum": 1
551
+ },
552
+ "normalThreshold": {
553
+ "type": "number",
554
+ "minimum": 0.001,
555
+ "maximum": 2
556
+ }
557
+ },
558
+ "required": [
559
+ "enabled",
560
+ "colour",
561
+ "widthPx",
562
+ "depthThreshold",
563
+ "normalThreshold"
564
+ ],
565
+ "additionalProperties": false
566
+ }
567
+ },
568
+ "required": [
569
+ "fog",
570
+ "sky",
571
+ "exposure",
572
+ "toneMapping",
573
+ "bloom"
574
+ ],
575
+ "additionalProperties": false
576
+ },
577
+ "placementZones": {
578
+ "type": "array",
579
+ "items": {
580
+ "$ref": "common.schema.json#/$defs/placementZone"
581
+ },
582
+ "maxItems": 32
583
+ },
584
+ "dataObjects": {
585
+ "type": "array",
586
+ "maxItems": 128,
587
+ "items": {
588
+ "$ref": "common.schema.json#/$defs/dataObject"
589
+ }
590
+ },
591
+ "climbables": {
592
+ "type": "array",
593
+ "maxItems": 128,
594
+ "items": {
595
+ "type": "object",
596
+ "properties": {
597
+ "id": {
598
+ "$ref": "common.schema.json#/$defs/slug"
599
+ },
600
+ "type": {
601
+ "enum": [
602
+ "ladder",
603
+ "rope",
604
+ "vines",
605
+ "chain-link"
606
+ ]
607
+ },
608
+ "bottom": {
609
+ "type": "array",
610
+ "items": {
611
+ "type": "number",
612
+ "minimum": -10000,
613
+ "maximum": 10000
614
+ },
615
+ "minItems": 3,
616
+ "maxItems": 3
617
+ },
618
+ "top": {
619
+ "type": "array",
620
+ "items": {
621
+ "type": "number",
622
+ "minimum": -10000,
623
+ "maximum": 10000
624
+ },
625
+ "minItems": 3,
626
+ "maxItems": 3
627
+ },
628
+ "facing": {
629
+ "type": "array",
630
+ "items": {
631
+ "type": "number",
632
+ "minimum": -10000,
633
+ "maximum": 10000
634
+ },
635
+ "minItems": 3,
636
+ "maxItems": 3
637
+ },
638
+ "width": {
639
+ "type": "number",
640
+ "minimum": 0.6,
641
+ "maximum": 32
642
+ },
643
+ "depth": {
644
+ "type": "number",
645
+ "minimum": 0.1,
646
+ "maximum": 2
647
+ },
648
+ "speed": {
649
+ "type": "number",
650
+ "minimum": 0.1,
651
+ "maximum": 8
652
+ },
653
+ "exits": {
654
+ "type": "object",
655
+ "properties": {
656
+ "top": {
657
+ "type": "array",
658
+ "items": {
659
+ "type": "number",
660
+ "minimum": -10000,
661
+ "maximum": 10000
662
+ },
663
+ "minItems": 3,
664
+ "maxItems": 3
665
+ },
666
+ "bottom": {
667
+ "type": "array",
668
+ "items": {
669
+ "type": "number",
670
+ "minimum": -10000,
671
+ "maximum": 10000
672
+ },
673
+ "minItems": 3,
674
+ "maxItems": 3
675
+ }
676
+ },
677
+ "required": [
678
+ "top",
679
+ "bottom"
680
+ ],
681
+ "additionalProperties": false
682
+ }
683
+ },
684
+ "required": [
685
+ "id",
686
+ "type",
687
+ "bottom",
688
+ "top",
689
+ "facing",
690
+ "width",
691
+ "depth",
692
+ "exits"
693
+ ],
694
+ "additionalProperties": false
695
+ }
696
+ },
697
+ "visibility": {
698
+ "type": "object",
699
+ "properties": {
700
+ "areas": {
701
+ "type": "array",
702
+ "maxItems": 256,
703
+ "items": {
704
+ "type": "object",
705
+ "properties": {
706
+ "id": {
707
+ "type": "string",
708
+ "minLength": 1,
709
+ "maxLength": 128
710
+ },
711
+ "bounds": {
712
+ "type": "object",
713
+ "properties": {
714
+ "min": {
715
+ "type": "array",
716
+ "items": {
717
+ "type": "number",
718
+ "minimum": -100000,
719
+ "maximum": 100000
720
+ },
721
+ "minItems": 3,
722
+ "maxItems": 3
723
+ },
724
+ "max": {
725
+ "type": "array",
726
+ "items": {
727
+ "type": "number",
728
+ "minimum": -100000,
729
+ "maximum": 100000
730
+ },
731
+ "minItems": 3,
732
+ "maxItems": 3
733
+ }
734
+ },
735
+ "required": [
736
+ "min",
737
+ "max"
738
+ ],
739
+ "additionalProperties": false
740
+ },
741
+ "nodes": {
742
+ "type": "array",
743
+ "items": {
744
+ "type": "integer",
745
+ "minimum": 0,
746
+ "maximum": 9999
747
+ },
748
+ "maxItems": 10000,
749
+ "uniqueItems": true
750
+ },
751
+ "visibleFrom": {
752
+ "type": "array",
753
+ "items": {
754
+ "type": "string",
755
+ "minLength": 1,
756
+ "maxLength": 128
757
+ },
758
+ "maxItems": 256,
759
+ "uniqueItems": true
760
+ }
761
+ },
762
+ "required": [
763
+ "id",
764
+ "bounds",
765
+ "nodes",
766
+ "visibleFrom"
767
+ ],
768
+ "additionalProperties": false
769
+ }
770
+ }
771
+ },
772
+ "required": [
773
+ "areas"
774
+ ],
775
+ "additionalProperties": false
776
+ }
777
+ },
778
+ "required": [
779
+ "formatVersion",
780
+ "id",
781
+ "version",
782
+ "name",
783
+ "license",
784
+ "scene",
785
+ "defaultSpawn",
786
+ "spawns",
787
+ "attribution"
788
+ ],
789
+ "additionalProperties": false
790
+ }