@oracle/oraclejet-audit 12.1.0 → 13.0.2

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 (112) hide show
  1. package/jaf-amd.js +2 -20
  2. package/jaf.js +1 -1
  3. package/jafapi.js +1 -1
  4. package/lib/AstJson.js +1 -1
  5. package/lib/AstMd.js +1 -1
  6. package/lib/Cli.js +6 -0
  7. package/lib/Color.js +6 -0
  8. package/lib/Comments.js +1 -1
  9. package/lib/ComponentSvcs.js +1 -1
  10. package/lib/Components.js +1 -1
  11. package/lib/Config.js +1 -1
  12. package/lib/ConfigLib.js +1 -1
  13. package/lib/CssUtils.js +1 -1
  14. package/lib/FileSet.js +1 -1
  15. package/lib/FsUtils.js +1 -1
  16. package/lib/Issue.js +1 -1
  17. package/lib/JafEvents.js +1 -1
  18. package/lib/JafLib.js +1 -1
  19. package/lib/Json.js +1 -1
  20. package/lib/JsonLoader.js +1 -1
  21. package/lib/Md.js +1 -1
  22. package/lib/MetaLib.js +1 -1
  23. package/lib/OjCPack.js +6 -0
  24. package/lib/OjetLib.js +6 -0
  25. package/lib/Registry.js +1 -1
  26. package/lib/RuleSet.js +1 -1
  27. package/lib/Rules.js +1 -1
  28. package/lib/Scope.js +1 -1
  29. package/lib/Utils.js +1 -1
  30. package/lib/ZipUtils.js +1 -1
  31. package/lib/amdlist.js +6 -0
  32. package/lib/api.js +1 -1
  33. package/lib/betalist.js +6 -0
  34. package/lib/builtinpacks.js +1 -1
  35. package/lib/checkage.js +6 -0
  36. package/lib/cliStats.js +1 -1
  37. package/lib/cmdline.js +1 -1
  38. package/lib/defaults.js +1 -1
  39. package/lib/deflist.js +1 -1
  40. package/lib/dislist.js +1 -1
  41. package/lib/exportRules.js +1 -1
  42. package/lib/extends.js +1 -1
  43. package/lib/grouplist.js +1 -1
  44. package/lib/groups.js +1 -1
  45. package/lib/help.js +1 -1
  46. package/lib/jetver.js +1 -1
  47. package/lib/manpage.js +6 -0
  48. package/lib/manual.js +1 -1
  49. package/lib/metaLoader.js +1 -1
  50. package/lib/metahist.js +1 -1
  51. package/lib/msgidLoader.js +1 -1
  52. package/lib/ns.js +1 -1
  53. package/lib/outfile.js +1 -1
  54. package/lib/proflist.js +6 -0
  55. package/lib/rlolist.js +6 -0
  56. package/lib/scaffold.js +1 -1
  57. package/lib/scaffoldRule.js +1 -1
  58. package/lib/schema.js +1 -1
  59. package/meta/13.0.0/jetauditmeta.js +9 -0
  60. package/meta/metaverlist.json +1 -1
  61. package/package.json +6 -4
  62. package/profiles/best-practice.json +146 -0
  63. package/profiles/redwood-strict.json +31 -0
  64. package/rulepacks/jetwc/jetwc-bootstrap.js +1 -1
  65. package/rulepacks/jetwc/jetwc-css-oj-complete.js +1 -1
  66. package/rulepacks/jetwc/jetwc-pack-children.js +1 -1
  67. package/rulepacks/jetwc/jetwc-schema.js +1 -1
  68. package/rulepacks/jetwc/jetwc-supproperty-propagation.js +6 -0
  69. package/rulepacks/jetwc/msgid.json +1 -1
  70. package/rulepacks/jetwc/rules.json +1 -1
  71. package/rulepacks/jetwc-lib/jetwcutils-componentFinder.js +1 -1
  72. package/rulepacks/jetwco/jetwco-bootstrap.js +1 -1
  73. package/rulepacks/jetwco/jetwco-component-api-controlled-changes.js +1 -1
  74. package/rulepacks/jetwco/rules.json +1 -1
  75. package/rules/jaf/jaf-sys-age.js +6 -0
  76. package/rules/jaf/msgid.json +1 -1
  77. package/rules/jaf/rules.json +1 -1
  78. package/rules/jet/helpers/extractStylesFromClass.js +1 -1
  79. package/rules/jet/helpers/has-slot-name.js +1 -1
  80. package/rules/jet/msgid.json +1 -1
  81. package/rules/jet/oj-acc-aria-ojselector-labelledby.js +6 -0
  82. package/rules/jet/oj-acc-aria-prop.js +1 -1
  83. package/rules/jet/oj-c-acc-avatar-aria-role.js +6 -0
  84. package/rules/jet/oj-cca-compjson-bp-jetver.js +1 -1
  85. package/rules/jet/oj-css-var-override.js +1 -1
  86. package/rules/jet/oj-html-alta-deprecated.js +1 -1
  87. package/rules/jet/oj-html-attr-2def.js +1 -1
  88. package/rules/jet/oj-html-attr-req.js +1 -1
  89. package/rules/jet/oj-html-cca-tagname.js +1 -1
  90. package/rules/jet/oj-html-cdn.js +1 -1
  91. package/rules/jet/oj-html-combo-converter.js +1 -1
  92. package/rules/jet/oj-html-file-pick-accept.js +1 -1
  93. package/rules/jet/oj-html-notag-style.js +1 -1
  94. package/rules/jet/oj-html-ojattr-deprecated.js +1 -1
  95. package/rules/jet/oj-html-ojattr-enum-deprecated.js +1 -1
  96. package/rules/jet/oj-html-ojattr-evt-syntax.js +1 -1
  97. package/rules/jet/oj-html-ojattr-value.js +1 -1
  98. package/rules/jet/oj-html-ojattr.js +1 -1
  99. package/rules/jet/oj-html-ojtag-datacmd.js +1 -1
  100. package/rules/jet/oj-html-ojtag-deprecated.js +1 -1
  101. package/rules/jet/oj-html-pageopts-type.js +6 -0
  102. package/rules/jet/oj-html-rating-gauge-size.js +6 -0
  103. package/rules/jet/oj-html-redwood-bp-endslot.js +6 -0
  104. package/rules/jet/oj-html-slot-deprecated.js +6 -0
  105. package/rules/jet/oj-html-slot-pref-content.js +1 -1
  106. package/rules/jet/oj-html-wctag-$props.js +1 -1
  107. package/rules/jet/oj-html-wctag-maintenance.js +6 -0
  108. package/rules/jet/rules.json +1 -1
  109. package/schema/component-schema.json +1 -1482
  110. package/src/JafCore.js +1 -1
  111. package/types/index.d.ts +42 -10
  112. package/lib/colors.js +0 -6
@@ -1,1482 +1 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "component-schema.json",
4
- "title": "JSON Schema for Oracle JET component.json files",
5
-
6
- "type": "object",
7
-
8
- "definitions": {
9
-
10
- "extensionDef": {
11
- "type": "object",
12
- "properties": {
13
- "vbdt": {
14
- "type": "object"
15
- },
16
- "jet": {
17
- "$ref": "#/definitions/extensionJetDef"
18
- },
19
- "themes": {
20
- "$ref": "#/definitions/extensionThemesDef"
21
- },
22
- "webelement": {
23
- "$ref": "#/definitions/extensionWebElementExceptionStatusDef"
24
- }
25
- }
26
- },
27
-
28
- "extensionJetDef": {
29
- "type": "object",
30
- "properties": {
31
- "unsupportedBrowsers": {
32
- "type": "array",
33
- "items": {
34
- "type": "string",
35
- "enum": ["IE11"]
36
- }
37
- }
38
- }
39
- },
40
-
41
- "extensionThemesDef": {
42
- "type": "object",
43
- "properties": {
44
- "unsupportedThemes": {
45
- "type": "array",
46
- "items": {
47
- "type": "string",
48
- "enum": ["Alta", "Redwood", "Stable"]
49
- }
50
- }
51
- }
52
- },
53
-
54
- "extensionComponentDef": {
55
- "type": "object",
56
- "properties": {
57
- "vbdt": {
58
- "type": "object",
59
- "properties" : {
60
- "audits": {
61
- "type": "string"
62
- },
63
- "defaultColumns": {
64
- "type": "number",
65
- "multipleOf": 1.0,
66
- "minimum": 1.0,
67
- "maximum": 12.0
68
- },
69
- "minColumns": {
70
- "type": "number",
71
- "multipleOf": 1.0,
72
- "minimum": 1.0,
73
- "maximum": 12.0
74
- }
75
- }
76
- },
77
- "jet": {
78
- "$ref": "#/definitions/extensionJetDef"
79
- },
80
- "themes": {
81
- "$ref": "#/definitions/extensionThemesDef"
82
- }
83
- }
84
- },
85
-
86
- "extensionPropsDef": {
87
- "type": "object",
88
- "properties": {
89
- "vbdt": {
90
- "type": "object",
91
- "properties" : {
92
- "itemProperties": {
93
- "$ref": "#/definitions/propsDef"
94
- },
95
- "slotData" : {
96
- "$ref": "#/definitions/slotDataDef"
97
- }
98
- }
99
- },
100
- "jet": {
101
- "$ref": "#/definitions/extensionJetDef"
102
- },
103
- "themes": {
104
- "$ref": "#/definitions/extensionThemesDef"
105
- },
106
- "webelement": {
107
- "$ref": "#/definitions/extensionWebElementExceptionStatusDef"
108
- }
109
- }
110
- },
111
-
112
- "extensionCatalogDef": {
113
- "type": "object",
114
- "properties": {
115
- "catalog": {
116
- "type": "object",
117
- "properties": {
118
- "audits": {
119
- "type": "string"
120
- },
121
- "category": {
122
- "type": "string"
123
- },
124
- "coverImage": {
125
- "type": "string"
126
- },
127
- "docUrl": {
128
- "type": "string",
129
- "format": "uri"
130
- },
131
- "extraInfo": {
132
- "type": "object"
133
- },
134
- "readme": {
135
- "type": "string"
136
- },
137
- "screenshots": {
138
- "type": "object",
139
- "patternProperties": {
140
- "^(0|([1-9]{1}[0-9]*))$": {
141
- "type": "string"
142
- }
143
- },
144
- "additionalProperties": false
145
- },
146
- "tags": {
147
- "type": "array",
148
- "items": {
149
- "type": "string"
150
- }
151
- }
152
- }
153
- }
154
- }
155
- },
156
-
157
- "extensionWebElementDef": {
158
- "type": "object",
159
- "properties": {
160
- "webelement": {
161
- "type": "object",
162
- "properties": {
163
- "package": {
164
- "$comment": "WebElement npm pkg name, with optional scope",
165
- "type": "string"
166
- },
167
- "version": {
168
- "$ref": "#/definitions/semverRangeDef"
169
- },
170
- "docUrl": {
171
- "type": "string",
172
- "format": "uri"
173
- }
174
- }
175
- }
176
- }
177
- },
178
-
179
- "extensionWebElementExceptionStatusDef": {
180
- "type": "object",
181
- "properties": {
182
- "exceptionStatus": {
183
- "type": "array",
184
- "items": {
185
- "type": "object",
186
- "properties": {
187
- "type": {
188
- "type": "string",
189
- "enum": ["deprecated", "getterOnly", "unsupported"]
190
- },
191
- "since": {
192
- "$ref": "#/definitions/semverExactDef"
193
- },
194
- "description": {
195
- "type": "string"
196
- }
197
- }
198
- }
199
- }
200
- }
201
- },
202
-
203
- "extensionOracleDef": {
204
- "type": "object",
205
- "properties": {
206
- "oracle": {
207
- "type": "object",
208
- "properties": {
209
- "businessApprovals": {
210
- "type": "object",
211
- "additionalProperties": {
212
- "type": "string"
213
- }
214
- },
215
- "uxSpecs": {
216
- "type": "array",
217
- "items": {
218
- "type": "string"
219
- }
220
- }
221
- }
222
- }
223
- }
224
- },
225
-
226
- "iconsDef": {
227
- "type": "object",
228
- "properties": {
229
- "iconPath": {
230
- "type": "string"
231
- },
232
- "selectedIconPath": {
233
- "type": "string"
234
- },
235
- "hoverIconPath": {
236
- "type": "string"
237
- }
238
- },
239
- "additionalProperties": false
240
- },
241
-
242
- "paramsDef": {
243
- "type": "array",
244
- "items": {
245
- "type": "object",
246
- "properties": {
247
- "description": {
248
- "type": "string"
249
- },
250
- "name": {
251
- "type": "string"
252
- },
253
- "status": {
254
- "$ref": "#/definitions/statusDef"
255
- },
256
- "type": {
257
- "type": "string"
258
- }
259
- },
260
- "additionalProperties": false
261
- }
262
- },
263
-
264
- "bindingDef": {
265
- "type": "object",
266
- "properties": {
267
- "consume": {
268
- "type": "object",
269
- "properties": {
270
- "name": {
271
- "type": "string"
272
- }
273
- },
274
- "additionalProperties": false
275
- },
276
- "provide": {
277
- "type": "array",
278
- "items": {
279
- "type": "object",
280
- "properties": {
281
- "name": {
282
- "type": "string"
283
- },
284
- "default": {
285
- "type": ["string", "number", "boolean", "null"]
286
- },
287
- "transform": {
288
- "type": "object",
289
- "additionalProperties": {
290
- "type": ["string", "number", "boolean", "null"]
291
- }
292
- }
293
- },
294
- "required": ["name"],
295
- "additionalProperties": false
296
- }
297
- }
298
- },
299
- "additionalProperties": false
300
- },
301
-
302
- "minCapabilitiesDef": {
303
- "type": "object",
304
- "properties": {
305
- "filter": {
306
- "type": "object",
307
- "properties": {
308
- "textFilter": {
309
- "type": "boolean"
310
- }
311
- },
312
- "additionalProperties": false
313
- }
314
- },
315
- "additionalProperties": false
316
- },
317
-
318
- "propsDef": {
319
- "type": "object",
320
-
321
- "$comment": "property names follow HTML attribute name restrictions",
322
- "patternProperties": {
323
- "^([^\t\n\f \u002f\u003e\u0022\u0027=]+)$": {
324
- "type": "object",
325
- "properties": {
326
- "enumValues": {
327
- "type": "array",
328
- "items": {
329
- "type": "string"
330
- }
331
- },
332
- "properties": {
333
- "$ref": "#/definitions/propsDef"
334
- },
335
- "readOnly": {
336
- "type": "boolean"
337
- },
338
- "type": {
339
- "type": "string"
340
- },
341
- "value": {
342
- "type": ["array", "boolean", "number", "null", "object", "string"]
343
- },
344
- "writeback": {
345
- "type": "boolean"
346
- },
347
- "binding": {
348
- "$ref": "#/definitions/bindingDef"
349
- },
350
- "description": {
351
- "type": "string"
352
- },
353
- "displayName": {
354
- "type": "string"
355
- },
356
- "dynamicSlotDef": {
357
- "type": "string"
358
- },
359
- "eventGroup": {
360
- "type": "string"
361
- },
362
- "exclusiveMaximum": {
363
- "type": ["number", "string"]
364
- },
365
- "exclusiveMinimum": {
366
- "type": ["number", "string"]
367
- },
368
- "extension" : {
369
- "$ref": "#/definitions/extensionPropsDef"
370
- },
371
- "format": {
372
- "type": "string",
373
- "enum": ["double", "float", "int32", "int64", "binary", "byte", "color",
374
- "date", "date-time", "email", "time", "password", "uri"]
375
- },
376
- "help": {
377
- "type": "string"
378
- },
379
- "maximum": {
380
- "type": ["number", "string"]
381
- },
382
- "minimum": {
383
- "type": ["number", "string"]
384
- },
385
- "minCapabilities": {
386
- "$ref": "#/definitions/minCapabilitiesDef"
387
- },
388
- "pattern": {
389
- "type": "string",
390
- "format": "regex"
391
- },
392
- "placeholder": {
393
- "type": "string"
394
- },
395
- "propertyEditorValues": {
396
- "type": "object",
397
- "patternProperties": {
398
- "^([A-Za-z0-9_\u002d])*$": {
399
- "type": "object",
400
- "properties": {
401
- "description": {
402
- "type": "string"
403
- },
404
- "displayName": {
405
- "type": "string"
406
- },
407
- "icon": {
408
- "$ref": "#/definitions/iconsDef"
409
- }
410
- },
411
- "additionalProperties": false
412
- }
413
- },
414
- "additionalProperties": false
415
- },
416
- "propertyGroup": {
417
- "type": "string"
418
- },
419
- "required": {
420
- "type": "boolean"
421
- },
422
- "status": {
423
- "$ref": "#/definitions/statusDef"
424
- },
425
- "translatable": {
426
- "type": "boolean"
427
- },
428
- "units": {
429
- "type": "string"
430
- },
431
- "visible": {
432
- "type": "boolean"
433
- }
434
- },
435
- "required": ["type"],
436
- "additionalProperties": false
437
- }
438
- },
439
- "additionalProperties": false
440
- },
441
-
442
- "methodsDef": {
443
- "type": "object",
444
-
445
- "$comment": "method names follow HTML attribute name restrictions",
446
- "patternProperties": {
447
- "^([^\t\n\f \u002f\u003e\u0022\u0027=]+)$": {
448
- "type": "object",
449
- "properties": {
450
- "internalName": {
451
- "type": "string",
452
-
453
- "$comment": "method internalNames cannot conflict with reserved JS keywords",
454
- "not": {
455
- "enum": ["await", "break", "case", "class", "catch", "const", "continue",
456
- "debugger", "default", "delete", "do", "else", "enum", "export",
457
- "extends", "false", "finally", "for", "function", "if", "implements",
458
- "import", "in", "instanceof", "interface", "let", "new", "null",
459
- "package", "private", "protected", "public", "return", "super",
460
- "static", "switch", "this", "throw", "true", "try", "typeof",
461
- "var", "void", "while", "with", "yield"]
462
- }
463
- },
464
- "description": {
465
- "type": "string"
466
- },
467
- "displayName": {
468
- "type": "string"
469
- },
470
- "extension": {
471
- "$ref": "#/definitions/extensionDef"
472
- },
473
- "help": {
474
- "type": "string"
475
- },
476
- "params": {
477
- "$ref": "#/definitions/paramsDef"
478
- },
479
- "return": {
480
- "type": "string"
481
- },
482
- "status": {
483
- "$ref": "#/definitions/statusDef"
484
- },
485
- "visible": {
486
- "type": "boolean"
487
- }
488
- },
489
- "additionalProperties": false
490
- }
491
- },
492
- "additionalProperties": false
493
- },
494
-
495
- "eventsDef": {
496
- "type": "object",
497
-
498
- "$comment": "event names follow HTML attribute name restrictions",
499
- "patternProperties": {
500
- "^([^\t\n\f \u002f\u003e\u0022\u0027=]+)$": {
501
- "properties": {
502
- "bubbles": {
503
- "type": "boolean"
504
- },
505
- "cancelable": {
506
- "type": "boolean"
507
- },
508
- "description": {
509
- "type": "string"
510
- },
511
- "detail": {
512
- "type": "object",
513
- "patternProperties": {
514
- "^([A-Za-z0-9_\u002d])+$": {
515
- "type": "object",
516
- "properties": {
517
- "description": {
518
- "type": "string"
519
- },
520
- "type": {
521
- "type": "string"
522
- },
523
- "enumValues": {
524
- "type": "array",
525
- "items": {
526
- "type": "string"
527
- }
528
- },
529
- "eventGroup": {
530
- "type": "string"
531
- },
532
- "extension" : {
533
- "$ref": "#/definitions/extensionPropsDef"
534
- },
535
- "properties": {
536
- "$ref": "#/definitions/propsDef"
537
- },
538
- "status": {
539
- "$ref": "#/definitions/statusDef"
540
- }
541
- },
542
- "additionalProperties": false
543
- }
544
- },
545
- "additionalProperties": false
546
- },
547
- "displayName": {
548
- "type": "string"
549
- },
550
- "eventGroup": {
551
- "type": "string"
552
- },
553
- "extension": {
554
- "$ref": "#/definitions/extensionDef"
555
- },
556
- "help": {
557
- "type": "string"
558
- },
559
- "status": {
560
- "$ref": "#/definitions/statusDef"
561
- },
562
- "visible": {
563
- "type": "boolean"
564
- }
565
- },
566
- "additionalProperties": false
567
- }
568
- },
569
- "propertyNames": {
570
-
571
- "$comment": "event names, which become 'on<name>' attributes at runtime, also cannot conflict with HTML GlobalEventHandlers",
572
- "not": {
573
- "enum": ["abort", "animationcancel", "animationend", "animationiteration", "animationstart",
574
- "auxclick", "blur", "cancel", "canplay", "canplaythrough", "change", "click", "close",
575
- "contextmenu", "copy", "cuechange", "cut", "dblclick", "drag", "dragend", "dragenter",
576
- "dragexit", "dragleave", "dragover", "dragstart", "drop", "durationchange", "emptied",
577
- "ended", "error", "focus", "gotpointercapture", "input", "invalid", "keydown", "keypress", "keyup",
578
- "load", "loadeddata", "loadedmetadata", "loadstart", "lostpointercapture", "mousedown", "mouseenter",
579
- "mouseleave", "mousemove", "mouseout", "mouseover", "mouseup", "paste", "pause", "play", "playing",
580
- "pointercancel", "pointerdown", "pointerenter", "pointerleave", "pointermove", "pointerout",
581
- "pointerover", "pointerup", "progress", "ratechange", "reset", "resize", "scroll",
582
- "securitypolicyviolation", "seeked", "seeking", "select", "slotchange", "stalled", "submit",
583
- "suspend", "timeupdate", "toggle", "touchcancel", "touchend", "touchmove", "touchstart",
584
- "volumechange", "waiting", "wheel"]
585
- }
586
- },
587
- "additionalProperties": false
588
- },
589
-
590
- "slotDataDef": {
591
- "type": "object",
592
- "patternProperties": {
593
- "^([A-Za-z0-9_\u002d])+$": {
594
- "type": "object",
595
- "properties": {
596
- "description": {
597
- "type": "string"
598
- },
599
- "type": {
600
- "type": "string"
601
- },
602
- "extension": {
603
- "$ref": "#/definitions/extensionDef"
604
- },
605
- "properties": {
606
- "$ref": "#/definitions/propsDef"
607
- },
608
- "status": {
609
- "$ref": "#/definitions/statusDef"
610
- }
611
- },
612
- "additionalProperties": false
613
- }
614
- },
615
- "additionalProperties": false
616
- },
617
-
618
- "slotsDef": {
619
- "type": "object",
620
-
621
- "$comment": "slot names & dynamic slot definition names follow HTML attribute name restrictions",
622
- "patternProperties": {
623
- "^([^\t\n\f \u002f\u003e\u0022\u0027=]*)$": {
624
- "type": "object",
625
- "properties": {
626
- "data": {
627
- "$ref": "#/definitions/slotDataDef"
628
- },
629
- "description": {
630
- "type": "string"
631
- },
632
- "displayName": {
633
- "type": "string"
634
- },
635
- "extension": {
636
- "$ref": "#/definitions/extensionDef"
637
- },
638
- "help": {
639
- "type": "string"
640
- },
641
- "maxItems": {
642
- "type": "number",
643
- "multipleOf": 1.0
644
- },
645
- "minItems": {
646
- "type": "number",
647
- "multipleOf": 1.0,
648
- "minimum": 0.0
649
- },
650
- "preferredContent": {
651
- "type": "array",
652
- "items": {
653
- "type": "string"
654
- }
655
- },
656
- "status": {
657
- "$ref": "#/definitions/statusDef"
658
- },
659
- "visible": {
660
- "type": "boolean"
661
- }
662
- },
663
- "additionalProperties": false
664
- }
665
- },
666
- "additionalProperties": false
667
- },
668
-
669
- "pathsDef": {
670
- "type": "object",
671
- "properties": {
672
- "cdn": {
673
- "type": "object",
674
- "properties": {
675
- "min": {
676
- "type": "string",
677
- "format": "uri"
678
- },
679
- "debug": {
680
- "type": "string",
681
- "format": "uri"
682
- }
683
- },
684
- "additionalProperties": false
685
- },
686
- "npm": {
687
- "type": "object",
688
- "properties": {
689
- "min": {
690
- "type": "string"
691
- },
692
- "debug": {
693
- "type": "string"
694
- }
695
- },
696
- "additionalProperties": false
697
- },
698
- "name": {
699
- "type": "string"
700
- }
701
- },
702
- "additionalProperties": false
703
- },
704
-
705
- "propertyGroupObjDef": {
706
- "type": "object",
707
- "properties": {
708
- "propertyGroup": {
709
- "type": "string"
710
- },
711
- "displayName": {
712
- "type": "string"
713
- },
714
- "items": {
715
- "type": "array",
716
- "items": {
717
- "anyOf": [
718
- {"type": "string"},
719
- {"$ref": "#/definitions/propertyGroupObjDef"}
720
- ]
721
- }
722
- }
723
- },
724
- "additionalProperties": false
725
- },
726
-
727
- "semverExactDef": {
728
- "type": "string",
729
-
730
- "$comment": "validates an EXACT semver string -- MAJOR.MINOR.PATCH[-PRERELEASE][+BUILD], PRERELEASE and BUILD are optional -- see https://semver.org for details",
731
- "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"
732
- },
733
-
734
- "semverRangeDef": {
735
- "type": "string",
736
-
737
- "$comment": "validates a semver range -- see https://github.com/npm/node-semver#ranges, https://github.com/npm/node-semver#advanced-range-syntax for details",
738
- "pattern": "^(((=|>=|<=|=>|=<|>|<|!=|~|\\^)?(0|x|X|\\*|[1-9]\\d*)(\\.(0|x|X|\\*|[1-9]\\d*)){0,2}(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?)(\\s|\\s\\|\\|\\s|\\s-\\s)?)+$"
739
- },
740
-
741
- "statusDef": {
742
- "type": "array",
743
- "items": {
744
- "type": "object",
745
- "properties": {
746
- "type": {
747
- "type": "string",
748
- "enum": ["deprecated"]
749
- },
750
- "since": {
751
- "$ref": "#/definitions/semverExactDef"
752
- },
753
- "description": {
754
- "type": "string"
755
- },
756
- "target": {
757
- "type": "string",
758
- "enum": ["propertyType", "parameterType", "returnType", "propertyValue"]
759
- },
760
- "value": {
761
- "type": "array",
762
- "items": {
763
- "type": "string"
764
- }
765
- }
766
- },
767
- "additionalProperties": false
768
- }
769
- },
770
-
771
- "styleClassItemDef": {
772
- "$comment": "Union of styleClass, styleSet, and styleTemplate properties, allowing for effective auto-completion in code editors",
773
-
774
- "type": "object",
775
- "properties": {
776
- "name": {
777
- "type": "string"
778
- },
779
- "kind": {
780
- "type": "string",
781
- "enum": ["class", "set", "template"]
782
- },
783
- "displayName": {
784
- "type": "string"
785
- },
786
- "description": {
787
- "type": "string"
788
- },
789
- "extension": {
790
- "$ref": "#/definitions/extensionDef"
791
- },
792
- "help": {
793
- "type": "string"
794
- },
795
- "scope": {
796
- "type": "string",
797
- "enum": ["public", "protected"]
798
- },
799
- "status": {
800
- "$ref": "#/definitions/statusDef"
801
- },
802
- "styleRelation": {
803
- "type": "string",
804
- "enum": ["exclusive", "inclusive"]
805
- },
806
- "styleSelector": {
807
- "type": "string"
808
- },
809
- "styleItems": {
810
- "type": "array",
811
- "items": {
812
- "$ref": "#/definitions/styleClassItemDef"
813
- }
814
- },
815
- "tokens": {
816
- "type": "array",
817
- "items": {
818
- "$ref": "#/definitions/styleTemplateTokenDef"
819
- }
820
- }
821
- }
822
- },
823
-
824
- "styleClassStrictDef": {
825
- "$comment": "Strict styleClass definition (for conditional validation)",
826
-
827
- "type": "object",
828
- "properties": {
829
- "name": {
830
- "type": "string"
831
- },
832
- "kind": {
833
- "type": "string",
834
- "enum": ["class"]
835
- },
836
- "displayName": {
837
- "type": "string"
838
- },
839
- "description": {
840
- "type": "string"
841
- },
842
- "extension": {
843
- "$ref": "#/definitions/extensionDef"
844
- },
845
- "help": {
846
- "type": "string"
847
- },
848
- "scope": {
849
- "type": "string",
850
- "enum": ["public", "protected"]
851
- },
852
- "status": {
853
- "$ref": "#/definitions/statusDef"
854
- },
855
- "styleSelector": {
856
- "type": "string"
857
- }
858
- },
859
- "required": ["name", "kind"],
860
- "additionalProperties": false
861
- },
862
-
863
- "styleSetStrictDef": {
864
- "$comment": "Strict styleSet definition (for conditional validation)",
865
-
866
- "type": "object",
867
- "properties": {
868
- "name": {
869
- "type": "string"
870
- },
871
- "kind": {
872
- "type": "string",
873
- "enum": ["set"]
874
- },
875
- "displayName": {
876
- "type": "string"
877
- },
878
- "description": {
879
- "type": "string"
880
- },
881
- "extension": {
882
- "$ref": "#/definitions/extensionDef"
883
- },
884
- "help": {
885
- "type": "string"
886
- },
887
- "scope": {
888
- "type": "string",
889
- "enum": ["public", "protected"]
890
- },
891
- "status": {
892
- "$ref": "#/definitions/statusDef"
893
- },
894
- "styleRelation": {
895
- "type": "string",
896
- "enum": ["exclusive", "inclusive"]
897
- },
898
- "styleItems": {
899
- "type": "array",
900
- "items": {
901
- "anyOf": [
902
- {"$ref": "#/definitions/styleClassStrictDef"},
903
- {"$ref": "#/definitions/styleSetStrictDef"},
904
- {"$ref": "#/definitions/styleTemplateStrictDef"}
905
- ]
906
- }
907
- }
908
- },
909
- "required": ["name", "kind", "styleRelation", "styleItems"],
910
- "additionalProperties": false
911
- },
912
-
913
- "styleTemplateStrictDef": {
914
- "$comment": "Strict styleTemplate definition (for conditional validation)",
915
-
916
- "type": "object",
917
- "properties": {
918
- "name": {
919
- "type": "string"
920
- },
921
- "kind": {
922
- "type": "string",
923
- "enum": ["template"]
924
- },
925
- "displayName": {
926
- "type": "string"
927
- },
928
- "description": {
929
- "type": "string"
930
- },
931
- "extension": {
932
- "$ref": "#/definitions/extensionDef"
933
- },
934
- "help": {
935
- "type": "string"
936
- },
937
- "scope": {
938
- "type": "string",
939
- "enum": ["public", "protected"]
940
- },
941
- "status": {
942
- "$ref": "#/definitions/statusDef"
943
- },
944
- "styleSelector": {
945
- "type": "string"
946
- },
947
- "tokens": {
948
- "type": "array",
949
- "items": {
950
- "$ref": "#/definitions/styleTemplateTokenDef"
951
- }
952
- }
953
- },
954
- "required": ["name", "kind", "tokens"],
955
- "additionalProperties": false
956
- },
957
-
958
- "styleTemplateTokenDef": {
959
- "type": "object",
960
- "properties": {
961
- "name": {
962
- "type": "string"
963
- },
964
- "displayName": {
965
- "type": "string"
966
- },
967
- "description": {
968
- "type": "string"
969
- },
970
- "styleRelation": {
971
- "type": "string",
972
- "enum": ["exclusive", "inclusive"]
973
- },
974
- "values": {
975
- "type": "array",
976
- "items": {
977
- "$ref": "#/definitions/styleTemplateTokenValueDef"
978
- }
979
- }
980
- },
981
- "required": ["name", "styleRelation", "values"],
982
- "additionalProperties": false
983
- },
984
-
985
- "styleTemplateTokenValueDef": {
986
- "type": "object",
987
- "properties": {
988
- "name": {
989
- "type": "string"
990
- },
991
- "displayName": {
992
- "type": "string"
993
- },
994
- "description": {
995
- "type": "string"
996
- },
997
- "status": {
998
- "$ref": "#/definitions/statusDef"
999
- }
1000
- },
1001
- "required": ["name"],
1002
- "additionalProperties": false
1003
- },
1004
-
1005
- "deprecatedStyleGroupDef": {
1006
- "$comment": "DEPRECATED IN RELEASE 8.0.0. SHOULD BE REMOVED WHEN THAT RELEASE REACHES ITS END-OF-LIFE.",
1007
-
1008
- "type": "object",
1009
- "properties": {
1010
- "styleGroup": {
1011
- "type": "array",
1012
- "items": {
1013
- "type": "string"
1014
- }
1015
- },
1016
- "description": {
1017
- "type": "string"
1018
- }
1019
- },
1020
- "additionalProperties": false
1021
- },
1022
-
1023
- "styleVariableDef": {
1024
- "type": "object",
1025
- "properties": {
1026
- "name": {
1027
- "type": "string"
1028
- },
1029
- "displayName": {
1030
- "type": "string"
1031
- },
1032
- "description": {
1033
- "type": "string"
1034
- },
1035
- "extension": {
1036
- "$ref": "#/definitions/extensionDef"
1037
- },
1038
- "formats": {
1039
- "type": "array",
1040
- "items": {
1041
- "type": "string",
1042
- "enum": ["color", "font_weight", "length", "number", "percentage", "rgb_values", "time"]
1043
- }
1044
- },
1045
- "help": {
1046
- "type": "string"
1047
- },
1048
- "keywords": {
1049
- "type": "array",
1050
- "items": {
1051
- "type": "string"
1052
- }
1053
- },
1054
- "status": {
1055
- "$ref": "#/definitions/statusDef"
1056
- }
1057
- },
1058
- "required": ["name"],
1059
- "additionalProperties": false
1060
- }
1061
-
1062
- },
1063
-
1064
- "properties": {
1065
- "name": {
1066
- "type": "string",
1067
- "pattern": "^([a-z][a-z0-9_\u002d]*)$",
1068
- "not": {
1069
- "enum": ["annotation-xml", "color-profile", "font-face", "font-face-src",
1070
- "font-face-uri", "font-face-format", "font-face-name", "missing-glyph"]
1071
- }
1072
- },
1073
- "version": {
1074
- "$ref": "#/definitions/semverExactDef"
1075
- },
1076
- "jetVersion": {
1077
- "$ref": "#/definitions/semverRangeDef"
1078
- },
1079
- "actionParams": {
1080
- "$ref": "#/definitions/paramsDef"
1081
- },
1082
- "actionResult": {
1083
- "type": "string"
1084
- },
1085
- "bundles": {
1086
- "type": "object",
1087
- "patternProperties": {
1088
- "^([A-Za-z0-9_\u002f\u002d])+$": {
1089
- "type": "array",
1090
- "items": {
1091
- "type": "string"
1092
- }
1093
- }
1094
- },
1095
- "additionalProperties": false
1096
- },
1097
- "dependencies": {
1098
- "type": "object",
1099
- "additionalProperties": {
1100
- "$comment": "values in 'dependencies' key-value pairs are USUALLY valid semver ranges, but JET Packs require exact semvers -- see conditional rules below",
1101
- "type": "string"
1102
- }
1103
- },
1104
- "demoFor": {
1105
- "type": "array",
1106
- "items": {
1107
- "type": "string"
1108
- }
1109
- },
1110
- "description": {
1111
- "type": "string"
1112
- },
1113
- "displayName": {
1114
- "type": "string"
1115
- },
1116
- "properties": {
1117
- "allOf": [
1118
- {"$ref": "#/definitions/propsDef"},
1119
- {
1120
- "propertyNames": {
1121
- "$comment": "top-level property names cannot conflict with HTML global attribute names",
1122
- "not": {
1123
- "enum": ["accesskey", "accessKey", "accessKeyLabel", "autocapitalize", "autoCapitalize",
1124
- "class", "className", "contenteditable", "contentEditable", "dir", "draggable",
1125
- "enterkeyhint", "enterKeyHint", "hidden", "id", "inputmode", "inputMode", "is",
1126
- "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "nonce", "role",
1127
- "slot", "spellcheck", "style", "tabindex", "tabIndex", "title", "translate"]
1128
- }
1129
- }
1130
- }
1131
- ]
1132
- },
1133
- "methods": {
1134
- "$ref": "#/definitions/methodsDef"
1135
- },
1136
- "events": {
1137
- "$ref": "#/definitions/eventsDef"
1138
- },
1139
- "slots": {
1140
- "$ref": "#/definitions/slotsDef"
1141
- },
1142
- "dynamicSlots": {
1143
- "$ref": "#/definitions/slotsDef"
1144
- },
1145
- "extension": {
1146
- "anyOf": [
1147
- {"$ref": "#/definitions/extensionComponentDef"},
1148
- {"$ref": "#/definitions/extensionCatalogDef"},
1149
- {"$ref": "#/definitions/extensionWebElementDef"},
1150
- {"$ref": "#/definitions/extensionOracleDef"}
1151
- ]
1152
- },
1153
- "help": {
1154
- "type": "string"
1155
- },
1156
- "icon": {
1157
- "$ref": "#/definitions/iconsDef"
1158
- },
1159
- "implements": {
1160
- "type": "array",
1161
- "items": {
1162
- "type": "string"
1163
- }
1164
- },
1165
- "license": {
1166
- "type": "string"
1167
- },
1168
- "pack": {
1169
- "type": "string",
1170
- "pattern": "^([a-z][a-z0-9_\u002d]*)$"
1171
- },
1172
- "package": {
1173
- "type": "string"
1174
- },
1175
- "paths": {
1176
- "oneOf": [
1177
- {"$ref": "#/definitions/pathsDef"},
1178
- {
1179
- "type": "array",
1180
- "items": {"$ref": "#/definitions/pathsDef"}
1181
- }
1182
- ]
1183
- },
1184
- "propertyLayout": {
1185
- "type": "array",
1186
- "items": {"$ref": "#/definitions/propertyGroupObjDef"}
1187
- },
1188
- "publicModules": {
1189
- "type": "array",
1190
- "items": {
1191
- "type": "string"
1192
- }
1193
- },
1194
- "since": {
1195
- "$ref": "#/definitions/semverExactDef"
1196
- },
1197
- "status": {
1198
- "$ref": "#/definitions/statusDef"
1199
- },
1200
- "styleClasses": {
1201
- "type": "array",
1202
- "items": {
1203
- "$ref": "#/definitions/styleClassItemDef"
1204
- }
1205
- },
1206
- "styleVariables": {
1207
- "type": "array",
1208
- "items": {
1209
- "$ref": "#/definitions/styleVariableDef"
1210
- }
1211
- },
1212
- "subcomponentType": {
1213
- "type": "string",
1214
- "enum": ["data", "patternImpl", "packPrivate"]
1215
- },
1216
- "type": {
1217
- "type": "string",
1218
- "enum": ["composite", "core", "pack", "reference", "resource", "demo", "stripe", "vbcs-pattern", "vbcs-template", "vbcs-action"]
1219
- }
1220
- },
1221
- "patternProperties": {
1222
- "^x-.+$": {
1223
- "$comment": "Also allow OpenAPI extension properties at the top level."
1224
- }
1225
- },
1226
- "required": ["name", "version"],
1227
- "additionalProperties": false,
1228
-
1229
- "$comment": "the following 'allOf' array entries specify conditional validation rules, per JSON Schema draft-07",
1230
- "allOf": [
1231
-
1232
- {
1233
- "$comment": "if the 'type' property is absent OR is explicitly set to 'core' or 'component', then the 'jetVersion' property is required; else 'implements' property is invalid",
1234
- "if": {
1235
- "oneOf": [
1236
- {"not": { "required": ["type"] }},
1237
- {
1238
- "properties": {
1239
- "type": {
1240
- "enum": ["core", "composite"]
1241
- }
1242
- },
1243
- "required": ["type"]
1244
- }
1245
- ]
1246
- },
1247
- "then": {
1248
- "required": ["jetVersion"]
1249
- },
1250
- "else": {
1251
- "propertyNames": {
1252
- "not": {
1253
- "enum": ["implements"]
1254
- }
1255
- }
1256
- }
1257
- },
1258
-
1259
- {
1260
- "$comment": "if the component type is explicitly set to 'core', then the 'since' property is required; else the 'since' property is invalid",
1261
- "if": {
1262
- "properties": {
1263
- "type": {
1264
- "const": "core"
1265
- }
1266
- },
1267
- "required": ["type"]
1268
- },
1269
- "then": {
1270
- "required": ["since"]
1271
- },
1272
- "else": {
1273
- "propertyNames": {
1274
- "not": {
1275
- "enum": ["since"]
1276
- }
1277
- }
1278
- }
1279
- },
1280
-
1281
- {
1282
- "$comment": "if the component type is explicitly set to 'reference', then the 'package' property is required; else 'package' property is invalid",
1283
- "if": {
1284
- "properties": {
1285
- "type": {
1286
- "const": "reference"
1287
- }
1288
- },
1289
- "required": ["type"]
1290
- },
1291
- "then": {
1292
- "required": ["package"]
1293
- },
1294
- "else": {
1295
- "propertyNames": {
1296
- "not": {
1297
- "enum": ["package"]
1298
- }
1299
- }
1300
- }
1301
- },
1302
-
1303
- {
1304
- "$comment": "if the component type is explicitly NOT 'resource', then the 'publicModules' property is invalid",
1305
- "if": {
1306
- "properties": {
1307
- "type": {
1308
- "not": { "const": "resource" }
1309
- }
1310
- },
1311
- "required": ["type"]
1312
- },
1313
- "then": {
1314
- "propertyNames": {
1315
- "not": {
1316
- "enum": ["publicModules"]
1317
- }
1318
- }
1319
- }
1320
- },
1321
-
1322
- {
1323
- "$comment": "if the component type is explicitly set to 'pack', then values of 'dependencies' property key-value pairs must be exact semver strings AND 'pack' property is invalid (nested JET Packs not allowed)",
1324
- "if": {
1325
- "properties": {
1326
- "type": {
1327
- "const": "pack"
1328
- }
1329
- },
1330
- "required": ["type"]
1331
- },
1332
- "then": {
1333
- "properties": {
1334
- "dependencies": {
1335
- "type": "object",
1336
- "additionalProperties": {
1337
- "$ref": "#/definitions/semverExactDef"
1338
- }
1339
- }
1340
- },
1341
- "propertyNames": {
1342
- "not": {
1343
- "enum": ["pack"]
1344
- }
1345
- }
1346
- },
1347
- "else": {
1348
- "$comment": "otherwise, the values of 'dependencies' property key-value pairs must be a semver range string",
1349
- "properties": {
1350
- "dependencies": {
1351
- "type": "object",
1352
- "additionalProperties": {
1353
- "$ref": "#/definitions/semverRangeDef"
1354
- }
1355
- }
1356
- }
1357
- }
1358
- },
1359
-
1360
- {
1361
- "$comment": "if the component type is explicitly set to 'stripe', then 'pack' property is invalid (stripe components are always singletons)",
1362
- "if": {
1363
- "properties": {
1364
- "type": {
1365
- "const": "stripe"
1366
- }
1367
- },
1368
- "required": ["type"]
1369
- },
1370
- "then": {
1371
- "propertyNames": {
1372
- "not": {
1373
- "enum": ["pack"]
1374
- }
1375
- }
1376
- }
1377
- },
1378
-
1379
- {
1380
- "$comment": "if the component type is explicitly set to either 'reference', 'vbcs-pattern', 'vbcs-template', or 'vbcs-action', then the 'jetVersion' property is invalid",
1381
- "if": {
1382
- "properties": {
1383
- "type": {
1384
- "enum": ["reference", "vbcs-pattern", "vbcs-template", "vbcs-action"]
1385
- }
1386
- },
1387
- "required": ["type"]
1388
- },
1389
- "then": {
1390
- "propertyNames": {
1391
- "not": {
1392
- "enum": ["jetVersion"]
1393
- }
1394
- }
1395
- }
1396
- },
1397
-
1398
- {
1399
- "$comment": "if the component type is explicitly set to 'demo', then the 'demoFor' property is required; else the 'demoFor' property is invalid",
1400
- "if": {
1401
- "properties": {
1402
- "type": {
1403
- "const": "demo"
1404
- }
1405
- },
1406
- "required": ["type"]
1407
- },
1408
- "then": {
1409
- "required": ["demoFor"]
1410
- },
1411
- "else": {
1412
- "propertyNames": {
1413
- "not": {
1414
- "enum": ["demoFor"]
1415
- }
1416
- }
1417
- }
1418
- },
1419
-
1420
- {
1421
- "$comment": "if the component type is explicitly set to 'vbcs-action', then the 'actionParams' and 'actionResult' properties are required; otherwise they are invalid",
1422
- "if": {
1423
- "properties": {
1424
- "type": {
1425
- "const": "vbcs-action"
1426
- }
1427
- },
1428
- "required": ["type"]
1429
- },
1430
- "then": {
1431
- "required": ["actionParams", "actionResult"]
1432
- },
1433
- "else": {
1434
- "propertyNames": {
1435
- "not": {
1436
- "enum": ["actionParams", "actionResult"]
1437
- }
1438
- }
1439
- }
1440
- },
1441
-
1442
- {
1443
- "$comment": "if optional 'styleClasses' metadata exists, then apply strict validation rules",
1444
- "if": {
1445
- "required": ["styleClasses"]
1446
- },
1447
- "then": {
1448
- "$comment": "stricter rules for 'styleClasses' metadata for validation purposes -- this will simplify once deprecated 'styleGroup' reaches end-of-life",
1449
- "oneOf": [
1450
- {
1451
- "$comment": "EITHER an array in which all items are instances of new 'styleClasses' metadata...",
1452
- "properties": {
1453
- "styleClasses": {
1454
- "type": "array",
1455
- "items": {
1456
- "anyOf": [
1457
- {"$ref": "#/definitions/styleClassStrictDef"},
1458
- {"$ref": "#/definitions/styleSetStrictDef"},
1459
- {"$ref": "#/definitions/styleTemplateStrictDef"}
1460
- ]
1461
- }
1462
- }
1463
- }
1464
- },
1465
- {
1466
- "$comment": "...OR an array in which all items are instances of old, deprecated 'styleGroup' metadata",
1467
- "properties": {
1468
- "styleClasses": {
1469
- "type": "array",
1470
- "items": {
1471
- "$ref": "#/definitions/deprecatedStyleGroupDef"
1472
- }
1473
- }
1474
- }
1475
- }
1476
- ]
1477
- }
1478
- }
1479
-
1480
- ]
1481
-
1482
- }
1
+ {"$schema":"http://json-schema.org/draft-07/schema#","$id":"component-schema.json","title":"JSON Schema for Oracle JET component.json files","type":"object","definitions":{"jetCustomElementNameDef":{"$comment":"central definition for JET custom element names","type":"string","pattern":"^([a-z][a-z0-9_-]*)$","not":{"enum":["annotation-xml","color-profile","font-face","font-face-src","font-face-uri","font-face-format","font-face-name","missing-glyph"]}},"extensionDef":{"type":"object","properties":{"vbdt":{"type":"object"},"jet":{"$ref":"#/definitions/extensionJetDef"},"themes":{"$ref":"#/definitions/extensionThemesDef"},"webelement":{"$ref":"#/definitions/extensionWebElementExceptionStatusDef"}}},"extensionJetDef":{"type":"object","properties":{"unsupportedBrowsers":{"type":"array","items":{"type":"string","enum":["IE11"]}}}},"extensionThemesDef":{"type":"object","properties":{"unsupportedThemes":{"type":"array","items":{"type":"string","enum":["Alta","Redwood","Stable"]}}}},"extensionComponentDef":{"type":"object","properties":{"vbdt":{"type":"object","properties":{"audits":{"type":"string"},"defaultColumns":{"type":"number","multipleOf":1,"minimum":1,"maximum":12},"minColumns":{"type":"number","multipleOf":1,"minimum":1,"maximum":12}}},"jet":{"$ref":"#/definitions/extensionJetDef"},"themes":{"$ref":"#/definitions/extensionThemesDef"}}},"extensionPropsDef":{"type":"object","properties":{"vbdt":{"type":"object","properties":{"itemProperties":{"$ref":"#/definitions/propsDef"},"slotData":{"$ref":"#/definitions/slotDataDef"}}},"jet":{"$ref":"#/definitions/extensionJetDef"},"themes":{"$ref":"#/definitions/extensionThemesDef"},"webelement":{"$ref":"#/definitions/extensionWebElementExceptionStatusDef"}}},"extensionCatalogDef":{"type":"object","properties":{"catalog":{"type":"object","properties":{"audits":{"type":"string"},"category":{"type":"string"},"coverImage":{"type":"string"},"docUrl":{"type":"string","format":"uri"},"extraInfo":{"type":"object"},"readme":{"type":"string"},"screenshots":{"type":"object","patternProperties":{"^(0|([1-9]{1}[0-9]*))$":{"type":"string"}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string"}}}}}},"extensionWebElementDef":{"type":"object","properties":{"webelement":{"type":"object","properties":{"package":{"$comment":"WebElement npm pkg name, with optional scope","type":"string"},"version":{"$ref":"#/definitions/semverRangeDef"},"docUrl":{"type":"string","format":"uri"}}}}},"extensionWebElementExceptionStatusDef":{"type":"object","properties":{"exceptionStatus":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["deprecated","getterOnly","unsupported"]},"since":{"$ref":"#/definitions/semverExactDef"},"description":{"type":"string"}}}}}},"extensionOracleDef":{"type":"object","properties":{"oracle":{"type":"object","properties":{"businessApprovals":{"type":"object","additionalProperties":{"type":"string"}},"uxSpecs":{"type":"array","items":{"type":"string"}}}}}},"iconsDef":{"type":"object","properties":{"iconPath":{"type":"string"},"selectedIconPath":{"type":"string"},"hoverIconPath":{"type":"string"}},"additionalProperties":false},"paramsDef":{"type":"array","items":{"type":"object","properties":{"description":{"type":"string"},"name":{"type":"string"},"status":{"$ref":"#/definitions/statusDef"},"type":{"type":"string"}},"additionalProperties":false}},"bindingDef":{"type":"object","properties":{"consume":{"type":"object","properties":{"name":{"type":"string"}},"additionalProperties":false},"provide":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"default":{"type":["string","number","boolean","null"]},"transform":{"type":"object","additionalProperties":{"type":["string","number","boolean","null"]}}},"required":["name"],"additionalProperties":false}}},"additionalProperties":false},"minCapabilitiesDef":{"type":"object","properties":{"filter":{"type":"object","properties":{"textFilter":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false},"propsDef":{"type":"object","$comment":"property names follow HTML attribute name restrictions","patternProperties":{"^([^\t\n\f />\"'=]+)$":{"type":"object","properties":{"enumValues":{"type":"array","items":{"type":"string"}},"properties":{"$ref":"#/definitions/propsDef"},"readOnly":{"type":"boolean"},"type":{"type":"string"},"value":{"type":["array","boolean","number","null","object","string"]},"writeback":{"type":"boolean"},"binding":{"$ref":"#/definitions/bindingDef"},"description":{"type":"string"},"displayName":{"type":"string"},"dynamicSlotDef":{"type":"string"},"eventGroup":{"type":"string"},"exclusiveMaximum":{"type":["number","string"]},"exclusiveMinimum":{"type":["number","string"]},"extension":{"$ref":"#/definitions/extensionPropsDef"},"format":{"type":"string","enum":["double","float","int32","int64","binary","byte","color","date","date-time","email","time","password","uri"]},"help":{"type":"string"},"maximum":{"type":["number","string"]},"minimum":{"type":["number","string"]},"minCapabilities":{"$ref":"#/definitions/minCapabilitiesDef"},"pattern":{"type":"string","format":"regex"},"placeholder":{"type":"string"},"propertyEditorValues":{"type":"object","patternProperties":{"^([A-Za-z0-9_-])*$":{"type":"object","properties":{"description":{"type":"string"},"displayName":{"type":"string"},"icon":{"$ref":"#/definitions/iconsDef"}},"additionalProperties":false}},"additionalProperties":false},"propertyGroup":{"type":"string"},"required":{"type":"boolean"},"status":{"$ref":"#/definitions/statusDef"},"translatable":{"type":"boolean"},"units":{"type":"string"},"visible":{"type":"boolean"}},"required":["type"],"additionalProperties":false}},"additionalProperties":false},"methodsDef":{"type":"object","$comment":"method names follow HTML attribute name restrictions","patternProperties":{"^([^\t\n\f />\"'=]+)$":{"type":"object","properties":{"internalName":{"type":"string","$comment":"method internalNames cannot conflict with reserved JS keywords","not":{"enum":["await","break","case","class","catch","const","continue","debugger","default","delete","do","else","enum","export","extends","false","finally","for","function","if","implements","import","in","instanceof","interface","let","new","null","package","private","protected","public","return","super","static","switch","this","throw","true","try","typeof","var","void","while","with","yield"]}},"description":{"type":"string"},"displayName":{"type":"string"},"extension":{"$ref":"#/definitions/extensionDef"},"help":{"type":"string"},"params":{"$ref":"#/definitions/paramsDef"},"return":{"type":"string"},"status":{"$ref":"#/definitions/statusDef"},"visible":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false},"eventsDef":{"type":"object","$comment":"event names follow HTML attribute name restrictions","patternProperties":{"^([^\t\n\f />\"'=]+)$":{"properties":{"bubbles":{"type":"boolean"},"cancelable":{"type":"boolean"},"description":{"type":"string"},"detail":{"type":"object","patternProperties":{"^([A-Za-z0-9_-])+$":{"type":"object","properties":{"description":{"type":"string"},"type":{"type":"string"},"enumValues":{"type":"array","items":{"type":"string"}},"eventGroup":{"type":"string"},"extension":{"$ref":"#/definitions/extensionPropsDef"},"properties":{"$ref":"#/definitions/propsDef"},"status":{"$ref":"#/definitions/statusDef"}},"additionalProperties":false}},"additionalProperties":false},"displayName":{"type":"string"},"eventGroup":{"type":"string"},"extension":{"$ref":"#/definitions/extensionDef"},"help":{"type":"string"},"status":{"$ref":"#/definitions/statusDef"},"visible":{"type":"boolean"}},"additionalProperties":false}},"propertyNames":{"$comment":"event names, which become 'on<name>' attributes at runtime, also cannot conflict with HTML GlobalEventHandlers","not":{"enum":["abort","animationcancel","animationend","animationiteration","animationstart","auxclick","blur","cancel","canplay","canplaythrough","change","click","close","contextmenu","copy","cuechange","cut","dblclick","drag","dragend","dragenter","dragexit","dragleave","dragover","dragstart","drop","durationchange","emptied","ended","error","focus","gotpointercapture","input","invalid","keydown","keypress","keyup","load","loadeddata","loadedmetadata","loadstart","lostpointercapture","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","paste","pause","play","playing","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup","progress","ratechange","reset","resize","scroll","securitypolicyviolation","seeked","seeking","select","slotchange","stalled","submit","suspend","timeupdate","toggle","touchcancel","touchend","touchmove","touchstart","volumechange","waiting","wheel"]}},"additionalProperties":false},"slotDataDef":{"type":"object","patternProperties":{"^([A-Za-z0-9_-])+$":{"type":"object","properties":{"description":{"type":"string"},"type":{"type":"string"},"extension":{"$ref":"#/definitions/extensionDef"},"properties":{"$ref":"#/definitions/propsDef"},"status":{"$ref":"#/definitions/statusDef"}},"additionalProperties":false}},"additionalProperties":false},"slotsDef":{"type":"object","$comment":"slot names & dynamic slot definition names follow HTML attribute name restrictions","patternProperties":{"^([^\t\n\f />\"'=]*)$":{"type":"object","properties":{"data":{"$ref":"#/definitions/slotDataDef"},"description":{"type":"string"},"displayName":{"type":"string"},"extension":{"$ref":"#/definitions/extensionDef"},"help":{"type":"string"},"maxItems":{"type":"number","multipleOf":1},"minItems":{"type":"number","multipleOf":1,"minimum":0},"preferredContent":{"type":"array","items":{"type":"string"}},"status":{"$ref":"#/definitions/statusDef"},"visible":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false},"pathsDef":{"type":"object","properties":{"cdn":{"type":"object","properties":{"min":{"type":"string","format":"uri"},"debug":{"type":"string","format":"uri"}},"additionalProperties":false},"npm":{"type":"object","properties":{"min":{"type":"string"},"debug":{"type":"string"}},"additionalProperties":false},"name":{"type":"string"}},"additionalProperties":false},"propertyGroupObjDef":{"type":"object","properties":{"propertyGroup":{"type":"string"},"displayName":{"type":"string"},"items":{"type":"array","items":{"anyOf":[{"type":"string"},{"$ref":"#/definitions/propertyGroupObjDef"}]}}},"additionalProperties":false},"semverExactDef":{"type":"string","$comment":"validates an EXACT semver string -- MAJOR.MINOR.PATCH[-PRERELEASE][+BUILD], PRERELEASE and BUILD are optional -- see https://semver.org for details","pattern":"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"},"semverRangeDef":{"type":"string","$comment":"validates a semver range -- see https://github.com/npm/node-semver#ranges, https://github.com/npm/node-semver#advanced-range-syntax for details","pattern":"^(((=|>=|<=|=>|=<|>|<|!=|~|\\^)?(0|x|X|\\*|[1-9]\\d*)(\\.(0|x|X|\\*|[1-9]\\d*)){0,2}(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?)(\\s|\\s\\|\\|\\s|\\s-\\s)?)+$"},"statusDef":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["deprecated","maintenance","supersedes"]},"since":{"$ref":"#/definitions/semverExactDef"},"description":{"type":"string"},"target":{"type":"string","enum":["propertyType","parameterType","returnType","propertyValue"]},"value":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}},"styleClassItemDef":{"$comment":"Union of styleClass, styleSet, and styleTemplate properties, allowing for effective auto-completion in code editors","type":"object","properties":{"name":{"type":"string"},"kind":{"type":"string","enum":["class","set","template"]},"displayName":{"type":"string"},"description":{"type":"string"},"extension":{"$ref":"#/definitions/extensionDef"},"help":{"type":"string"},"scope":{"type":"string","enum":["public","protected"]},"status":{"$ref":"#/definitions/statusDef"},"styleRelation":{"type":"string","enum":["exclusive","inclusive"]},"styleSelector":{"type":"string"},"styleItems":{"type":"array","items":{"$ref":"#/definitions/styleClassItemDef"}},"tokens":{"type":"array","items":{"$ref":"#/definitions/styleTemplateTokenDef"}}}},"styleClassStrictDef":{"$comment":"Strict styleClass definition (for conditional validation)","type":"object","properties":{"name":{"type":"string"},"kind":{"type":"string","enum":["class"]},"displayName":{"type":"string"},"description":{"type":"string"},"extension":{"$ref":"#/definitions/extensionDef"},"help":{"type":"string"},"scope":{"type":"string","enum":["public","protected"]},"status":{"$ref":"#/definitions/statusDef"},"styleSelector":{"type":"string"}},"required":["name","kind"],"additionalProperties":false},"styleSetStrictDef":{"$comment":"Strict styleSet definition (for conditional validation)","type":"object","properties":{"name":{"type":"string"},"kind":{"type":"string","enum":["set"]},"displayName":{"type":"string"},"description":{"type":"string"},"extension":{"$ref":"#/definitions/extensionDef"},"help":{"type":"string"},"scope":{"type":"string","enum":["public","protected"]},"status":{"$ref":"#/definitions/statusDef"},"styleRelation":{"type":"string","enum":["exclusive","inclusive"]},"styleItems":{"type":"array","items":{"anyOf":[{"$ref":"#/definitions/styleClassStrictDef"},{"$ref":"#/definitions/styleSetStrictDef"},{"$ref":"#/definitions/styleTemplateStrictDef"}]}}},"required":["name","kind","styleRelation","styleItems"],"additionalProperties":false},"styleTemplateStrictDef":{"$comment":"Strict styleTemplate definition (for conditional validation)","type":"object","properties":{"name":{"type":"string"},"kind":{"type":"string","enum":["template"]},"displayName":{"type":"string"},"description":{"type":"string"},"extension":{"$ref":"#/definitions/extensionDef"},"help":{"type":"string"},"scope":{"type":"string","enum":["public","protected"]},"status":{"$ref":"#/definitions/statusDef"},"styleSelector":{"type":"string"},"tokens":{"type":"array","items":{"$ref":"#/definitions/styleTemplateTokenDef"}}},"required":["name","kind","tokens"],"additionalProperties":false},"styleTemplateTokenDef":{"type":"object","properties":{"name":{"type":"string"},"displayName":{"type":"string"},"description":{"type":"string"},"styleRelation":{"type":"string","enum":["exclusive","inclusive"]},"values":{"type":"array","items":{"$ref":"#/definitions/styleTemplateTokenValueDef"}}},"required":["name","styleRelation","values"],"additionalProperties":false},"styleTemplateTokenValueDef":{"type":"object","properties":{"name":{"type":"string"},"displayName":{"type":"string"},"description":{"type":"string"},"status":{"$ref":"#/definitions/statusDef"}},"required":["name"],"additionalProperties":false},"deprecatedStyleGroupDef":{"$comment":"DEPRECATED IN RELEASE 8.0.0. SHOULD BE REMOVED WHEN THAT RELEASE REACHES ITS END-OF-LIFE.","type":"object","properties":{"styleGroup":{"type":"array","items":{"type":"string"}},"description":{"type":"string"}},"additionalProperties":false},"styleVariableDef":{"type":"object","properties":{"name":{"type":"string"},"displayName":{"type":"string"},"description":{"type":"string"},"extension":{"$ref":"#/definitions/extensionDef"},"formats":{"type":"array","items":{"type":"string","enum":["color","font_weight","length","number","percentage","rgb_values","time"]}},"help":{"type":"string"},"keywords":{"type":"array","items":{"type":"string"}},"status":{"$ref":"#/definitions/statusDef"}},"required":["name"],"additionalProperties":false},"contentItemsDef":{"type":"object","properties":{"name":{"type":"string"},"defaultExport":{"type":"boolean"},"description":{"type":"string"},"displayName":{"type":"string"},"exports":{"type":"array","items":{"type":"string"}},"readme":{"type":"string"},"status":{"$ref":"#/definitions/statusDef"},"type":{"type":"string","enum":["component","module","resource"]}},"required":["name"],"if":{"$comment":"if the content type is 'component' (default) or 'resource', then apply JET custom element naming rules AND 'defaultExport' is invalid (only applicable to 'module' content)","oneOf":[{"not":{"required":["type"]}},{"properties":{"type":{"enum":["component","resource"]}},"required":["type"]}]},"then":{"properties":{"name":{"$ref":"#/definitions/jetCustomElementNameDef"}},"propertyNames":{"not":{"enum":["defaultExport"]}}},"else":{"$comment":"otherwise if the content type is explicitly set to 'resource', then 'exports' is invalid (only applicable to 'component' or 'module')","if":{"properties":{"type":{"const":"resource"}},"required":["type"]},"then":{"propertyNames":{"not":{"enum":["exports"]}}}},"additionalProperties":false},"contentsDef":{"type":"array","items":{"$comment":"either an @components@ token string OR a contentItems object","anyOf":[{"const":"@components@"},{"$ref":"#/definitions/contentItemsDef"}]}}},"properties":{"name":{"$ref":"#/definitions/jetCustomElementNameDef"},"version":{"$ref":"#/definitions/semverExactDef"},"jetVersion":{"$ref":"#/definitions/semverRangeDef"},"actionParams":{"$ref":"#/definitions/paramsDef"},"actionResult":{"type":"string"},"bundles":{"type":"object","patternProperties":{"^([A-Za-z0-9_/-])+$":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"contents":{"$ref":"#/definitions/contentsDef"},"dependencies":{"$comment":"either an @dependencies@ token string OR an object with key-value pairs","oneOf":[{"const":"@dependencies@"},{"type":"object","additionalProperties":{"$comment":"values in 'dependencies' key-value pairs are USUALLY valid semver ranges, but JET Packs require exact semvers -- see conditional rules below","type":"string"}}]},"demoFor":{"type":"array","items":{"type":"string"}},"description":{"type":"string"},"displayName":{"type":"string"},"properties":{"allOf":[{"$ref":"#/definitions/propsDef"},{"propertyNames":{"$comment":"top-level property names cannot conflict with HTML global attribute names","not":{"enum":["accesskey","accessKey","accessKeyLabel","autocapitalize","autoCapitalize","class","className","contenteditable","contentEditable","dir","draggable","enterkeyhint","enterKeyHint","hidden","id","inputmode","inputMode","is","itemid","itemprop","itemref","itemscope","itemtype","lang","nonce","role","slot","spellcheck","style","tabindex","tabIndex","title","translate"]}}}]},"methods":{"$ref":"#/definitions/methodsDef"},"events":{"$ref":"#/definitions/eventsDef"},"slots":{"$ref":"#/definitions/slotsDef"},"dynamicSlots":{"$ref":"#/definitions/slotsDef"},"extension":{"anyOf":[{"$ref":"#/definitions/extensionComponentDef"},{"$ref":"#/definitions/extensionCatalogDef"},{"$ref":"#/definitions/extensionWebElementDef"},{"$ref":"#/definitions/extensionOracleDef"}]},"help":{"type":"string"},"icon":{"$ref":"#/definitions/iconsDef"},"implements":{"type":"array","items":{"type":"string"}},"license":{"type":"string"},"main":{"type":"string"},"pack":{"type":"string","pattern":"^([a-z][a-z0-9_-]*)$"},"package":{"type":"string"},"paths":{"oneOf":[{"$ref":"#/definitions/pathsDef"},{"type":"array","items":{"$ref":"#/definitions/pathsDef"}}]},"propertyLayout":{"type":"array","items":{"$ref":"#/definitions/propertyGroupObjDef"}},"publicModules":{"type":"array","items":{"type":"string"}},"since":{"$ref":"#/definitions/semverExactDef"},"status":{"$ref":"#/definitions/statusDef"},"styleClasses":{"type":"array","items":{"$ref":"#/definitions/styleClassItemDef"}},"styleVariables":{"type":"array","items":{"$ref":"#/definitions/styleVariableDef"}},"subcomponentType":{"type":"string","enum":["data","patternImpl","packPrivate"]},"type":{"type":"string","enum":["composite","core","pack","mono-pack","reference","resource","demo","stripe","vbcs-pattern","vbcs-template","vbcs-action"]}},"patternProperties":{"^x-.+$":{"$comment":"Also allow OpenAPI extension properties at the top level."}},"required":["name"],"additionalProperties":false,"$comment":"the following 'allOf' array entries specify conditional validation rules, per JSON Schema draft-07","allOf":[{"$comment":"if the 'type' property is explicitly set to anything other than 'composite' or 'core', then 'implements' and 'main' properties are invalid","if":{"properties":{"type":{"not":{"enum":["core","composite"]}}},"required":["type"]},"then":{"propertyNames":{"not":{"enum":["implements","main"]}}}},{"$comment":"if the component type is explicitly set to 'core', then the 'since' property is required","if":{"properties":{"type":{"const":"core"}},"required":["type"]},"then":{"required":["since"]}},{"$comment":"if the component type is explicitly set to 'reference', then the 'package' property is required","if":{"properties":{"type":{"const":"reference"}},"required":["type"]},"then":{"required":["package"]},"else":{"$comment":"otherwise, if the component type is not explicitly set to 'mono-pack', then 'package' property is invalid","if":{"not":{"properties":{"type":{"const":"mono-pack"}},"required":["type"]}},"then":{"propertyNames":{"not":{"enum":["package"]}}}}},{"$comment":"if the component type is explicitly NOT 'resource', then the 'publicModules' property is invalid","if":{"properties":{"type":{"not":{"const":"resource"}}},"required":["type"]},"then":{"propertyNames":{"not":{"enum":["publicModules"]}}}},{"$comment":"if the component type is explicitly set to 'pack', then values of 'dependencies' property key-value pairs must be exact semver strings AND 'pack' property is invalid (nested JET Packs not allowed)","if":{"properties":{"type":{"const":"pack"}},"required":["type"]},"then":{"properties":{"dependencies":{"oneOf":[{"const":"@dependencies@"},{"type":"object","additionalProperties":{"$ref":"#/definitions/semverExactDef"}}]}},"propertyNames":{"not":{"enum":["pack"]}}},"else":{"$comment":"otherwise, the values of 'dependencies' property key-value pairs must be a semver range string","properties":{"dependencies":{"oneOf":[{"const":"@dependencies@"},{"type":"object","additionalProperties":{"$ref":"#/definitions/semverRangeDef"}}]}}}},{"$comment":"if the component type is explicitly set to 'mono-pack', then the 'contents', 'jetVersion', and 'version' properties are required AND 'pack' property is invalid (nested JET Packs not allowed)","if":{"properties":{"type":{"const":"mono-pack"}},"required":["type"]},"then":{"required":["contents","jetVersion","version"],"propertyNames":{"not":{"enum":["pack"]}}},"else":{"$comment":"otherwise, the 'contents' property is invalid (reserved for mono-packs)","propertyNames":{"not":{"enum":["contents"]}}}},{"$comment":"if the component type is explicitly set to 'stripe', then 'pack' property is invalid (stripe components are always singletons)","if":{"properties":{"type":{"const":"stripe"}},"required":["type"]},"then":{"propertyNames":{"not":{"enum":["pack"]}}}},{"$comment":"if the component type is explicitly set to either 'reference', 'vbcs-pattern', 'vbcs-template', or 'vbcs-action', then the 'jetVersion' property is invalid","if":{"properties":{"type":{"enum":["reference","vbcs-pattern","vbcs-template","vbcs-action"]}},"required":["type"]},"then":{"propertyNames":{"not":{"enum":["jetVersion"]}}}},{"$comment":"if the component type is explicitly set to 'demo', then the 'demoFor' property is required; else the 'demoFor' property is invalid","if":{"properties":{"type":{"const":"demo"}},"required":["type"]},"then":{"required":["demoFor"]},"else":{"propertyNames":{"not":{"enum":["demoFor"]}}}},{"$comment":"if the component type is explicitly set to 'vbcs-action', then the 'actionParams' and 'actionResult' properties are required; otherwise they are invalid","if":{"properties":{"type":{"const":"vbcs-action"}},"required":["type"]},"then":{"required":["actionParams","actionResult"]},"else":{"propertyNames":{"not":{"enum":["actionParams","actionResult"]}}}},{"$comment":"if optional 'styleClasses' metadata exists, then apply strict validation rules","if":{"required":["styleClasses"]},"then":{"$comment":"stricter rules for 'styleClasses' metadata for validation purposes -- this will simplify once deprecated 'styleGroup' reaches end-of-life","oneOf":[{"$comment":"EITHER an array in which all items are instances of new 'styleClasses' metadata...","properties":{"styleClasses":{"type":"array","items":{"anyOf":[{"$ref":"#/definitions/styleClassStrictDef"},{"$ref":"#/definitions/styleSetStrictDef"},{"$ref":"#/definitions/styleTemplateStrictDef"}]}}}},{"$comment":"...OR an array in which all items are instances of old, deprecated 'styleGroup' metadata","properties":{"styleClasses":{"type":"array","items":{"$ref":"#/definitions/deprecatedStyleGroupDef"}}}}]}}]}