@oracle/oraclejet-audit 16.1.4 → 17.0.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 (145) hide show
  1. package/corePackMigrator/cli.js +1 -1
  2. package/corePackMigrator/corePackMigrator.js +2 -2
  3. package/corePackMigrator/metadata/actionCardMetadata.json +10 -0
  4. package/corePackMigrator/metadata/avatarMetadata.json +11 -1
  5. package/corePackMigrator/metadata/bindIfMetadata.json +4 -0
  6. package/corePackMigrator/metadata/buttonMetadata.json +65 -49
  7. package/corePackMigrator/metadata/chartMetadata.json +53 -0
  8. package/corePackMigrator/metadata/collapsibleMetadata.json +27 -12
  9. package/corePackMigrator/metadata/conveyorBeltMetadata.json +34 -0
  10. package/corePackMigrator/metadata/datePickerMetadata.json +43 -0
  11. package/corePackMigrator/metadata/drawerLayoutMetadata.json +18 -0
  12. package/corePackMigrator/metadata/drawerPopupMetadata.json +27 -14
  13. package/corePackMigrator/metadata/filePickerMetadata.json +20 -7
  14. package/corePackMigrator/metadata/formLayoutMetadata.json +11 -1
  15. package/corePackMigrator/metadata/highlightTextMetadata.json +10 -0
  16. package/corePackMigrator/metadata/inputDateMetadata.json +110 -0
  17. package/corePackMigrator/metadata/inputNumberMetadata.json +107 -75
  18. package/corePackMigrator/metadata/inputPasswordMetadata.json +111 -75
  19. package/corePackMigrator/metadata/inputTextMetadata.json +118 -81
  20. package/corePackMigrator/metadata/labelValueMetadata.json +245 -0
  21. package/corePackMigrator/metadata/legendItemMetadata.json +11 -1
  22. package/corePackMigrator/metadata/legendMetadata.json +59 -49
  23. package/corePackMigrator/metadata/listItemLayoutMetadata.json +11 -1
  24. package/corePackMigrator/metadata/listviewMetadata.json +104 -63
  25. package/corePackMigrator/metadata/messageBannerMetadata.json +10 -0
  26. package/corePackMigrator/metadata/messagesMetadata.json +11 -1
  27. package/corePackMigrator/metadata/progressBarMetadata.json +11 -1
  28. package/corePackMigrator/metadata/progressCircleMetadata.json +10 -0
  29. package/corePackMigrator/metadata/radiosetMetadata.json +11 -1
  30. package/corePackMigrator/metadata/ratingGaugeMetadata.json +113 -87
  31. package/corePackMigrator/metadata/selectManyMetadata.json +72 -42
  32. package/corePackMigrator/metadata/selectSingleMetadata.json +61 -46
  33. package/corePackMigrator/metadata/selectorMetadata.json +1 -1
  34. package/corePackMigrator/metadata/statusMeterGaugeMetadata.json +1 -1
  35. package/corePackMigrator/metadata/tagCloudMetadata.json +10 -0
  36. package/corePackMigrator/metadata/textAreaMetadata.json +88 -46
  37. package/corePackMigrator/resource/astUtils.js +1 -1
  38. package/corePackMigrator/resource/componentMigrator.js +1 -1
  39. package/corePackMigrator/resource/fileScanner.js +1 -1
  40. package/corePackMigrator/resource/htmlUtils.js +1 -1
  41. package/corePackMigrator/resource/manifest.json +137 -36
  42. package/corePackMigrator/resource/testUtils.js +6 -0
  43. package/corePackMigrator/templates/componentMetaData.json +118 -14
  44. package/corePackMigrator/templates/migrationConfig.json +4 -0
  45. package/corePackMigrator/utilities/deltaWebElementAPIs.js +6 -0
  46. package/corePackMigrator/utilities/logging.js +1 -1
  47. package/jaf-amd.js +1 -1
  48. package/lib/AstJson.js +1 -1
  49. package/lib/Components.js +1 -1
  50. package/lib/Config.js +1 -1
  51. package/lib/ConfigEx.js +6 -0
  52. package/lib/ConfigLib.js +1 -1
  53. package/lib/MetaLib.js +1 -1
  54. package/lib/OjCPack.js +1 -1
  55. package/lib/RegTypes.js +1 -1
  56. package/lib/RulePack.js +1 -1
  57. package/lib/RuleSet.js +1 -1
  58. package/lib/Rules.js +1 -1
  59. package/lib/TsxUtils.js +1 -1
  60. package/lib/checkage.js +1 -1
  61. package/lib/defaults.js +1 -1
  62. package/lib/extends.js +1 -1
  63. package/lib/migrator.js +1 -1
  64. package/lib/ns.js +1 -1
  65. package/libext/expparser.js +1 -1
  66. package/meta/16.1.0/jetauditmeta.js +1 -1
  67. package/meta/17.0.0/jetauditmeta.js +9 -0
  68. package/meta/metaverlist.json +1 -1
  69. package/package.json +3 -3
  70. package/profiles/best-practice.json +97 -78
  71. package/profiles/redwood-strict.json +22 -14
  72. package/rulepacks/csp/csp-json-unsafe-expr.js +1 -1
  73. package/rulepacks/jetwc/jetwc-bootstrap.js +1 -1
  74. package/rulepacks/jetwc/jetwc-css-scoping.js +1 -1
  75. package/rulepacks/jetwc/jetwc-displayname.js +1 -1
  76. package/rulepacks/jetwc/jetwc-jet-version.js +1 -1
  77. package/rulepacks/jetwc/jetwc-markdown-link.js +1 -1
  78. package/rulepacks/jetwc/jetwc-namespace.js +1 -1
  79. package/rulepacks/jetwc/jetwc-nls-languages.js +1 -1
  80. package/rulepacks/jetwc/jetwc-property-nesting.js +1 -1
  81. package/rulepacks/jetwc/jetwc-property-translatable.js +1 -1
  82. package/rulepacks/jetwc/jetwc-require-paths.js +1 -1
  83. package/rulepacks/jetwc/jetwc-reserved-property.js +1 -1
  84. package/rulepacks/jetwc/jetwc-schema.js +1 -1
  85. package/rulepacks/jetwc/jetwc-standard-files.js +1 -1
  86. package/rulepacks/jetwc/jetwc-vb-category.js +1 -1
  87. package/rulepacks/jetwc/rules.json +1 -1
  88. package/rulepacks/jetwc-lib/jetwcutils-auditComponentCacheManager.js +1 -1
  89. package/rulepacks/jetwc-lib/jetwcutils-commonListenerImpls.js +1 -1
  90. package/rulepacks/jetwc-lib/jetwcutils-componentAuditUtils.js +1 -1
  91. package/rulepacks/jetwc-lib/jetwcutils-componentFinder.js +1 -1
  92. package/rulepacks/jetwc-lib/jetwcutils-tsxUtils.js +1 -1
  93. package/rulepacks/jetwco/jetwco-bootstrap.js +1 -1
  94. package/rulepacks/jetwco/jetwco-component-api-baseline-changes.js +1 -1
  95. package/rulepacks/jetwco/jetwco-component-api-changes.js +1 -1
  96. package/rulepacks/jetwco/jetwco-component-api-controlled-changes.js +1 -1
  97. package/rulepacks/jetwco/jetwco-license-info.js +1 -1
  98. package/rulepacks/jetwco/jetwco-prerelease-cdn.js +1 -1
  99. package/rulepacks/jetwco/jetwco-validate-applied-audits.js +1 -1
  100. package/rulepacks/jetwco/rules.json +1 -1
  101. package/rules/jet/helpers/cssHelper.js +1 -1
  102. package/rules/jet/helpers/has-attrib-value.js +6 -0
  103. package/rules/jet/helpers/tsx/has-prop-value.js +6 -0
  104. package/rules/jet/msgid.json +1 -1
  105. package/rules/jet/oj-acc-button-label.js +6 -0
  106. package/rules/jet/oj-css-style-bp-display.js +1 -1
  107. package/rules/jet/oj-html-attr-expr-writeback.js +1 -1
  108. package/rules/jet/oj-html-bindif-test.js +1 -1
  109. package/rules/jet/oj-html-binding-as-slot-child.js +1 -1
  110. package/rules/jet/oj-html-bp-button-xs-chroming.js +6 -0
  111. package/rules/jet/oj-html-bp-title-to-tooltip.js +6 -0
  112. package/rules/jet/oj-html-button-size-chroming.js +6 -0
  113. package/rules/jet/oj-html-dlg-title.js +1 -1
  114. package/rules/jet/oj-html-form-bindif.js +1 -1
  115. package/rules/jet/oj-html-ko-comment.js +1 -1
  116. package/rules/jet/oj-html-ko-databind.js +1 -1
  117. package/rules/jet/oj-html-ojattr-value.js +1 -1
  118. package/rules/jet/oj-html-ojtag-ns.js +1 -1
  119. package/rules/jet/oj-html-redwood-clear-icon.js +6 -0
  120. package/rules/jet/oj-html-slot-default.js +1 -1
  121. package/rules/jet/oj-html-slot-pref-content.js +1 -1
  122. package/rules/jet/oj-html-style-abs-units.js +1 -1
  123. package/rules/jet/oj-html-style-bp-color.js +1 -1
  124. package/rules/jet/oj-html-style-bp-display.js +1 -1
  125. package/rules/jet/oj-html-style-bp-font-family.js +1 -1
  126. package/rules/jet/oj-html-style-bp-font.js +1 -1
  127. package/rules/jet/oj-html-style-bp-margin-padding.js +6 -0
  128. package/rules/jet/oj-html-wctag-maintenance.js +1 -1
  129. package/rules/jet/oj-tsx-acc-button-label.js +6 -0
  130. package/rules/jet/oj-tsx-bp-button-xs-chroming.js +6 -0
  131. package/rules/jet/oj-tsx-bp-title-to-tooltip.js +6 -0
  132. package/rules/jet/oj-tsx-button-size-chroming.js +6 -0
  133. package/rules/jet/oj-tsx-dlg-title.js +1 -1
  134. package/rules/jet/oj-tsx-form-bindif.js +1 -1
  135. package/rules/jet/oj-tsx-ojtag-ns.js +1 -1
  136. package/rules/jet/oj-tsx-redwood-clear-icon.js +6 -0
  137. package/rules/jet/oj-tsx-slot-default.js +6 -0
  138. package/rules/jet/oj-tsx-slot-pref-content.js +1 -1
  139. package/rules/jet/oj-tsx-style-abs-units.js +6 -0
  140. package/rules/jet/oj-tsx-style-bp-margin-padding.js +6 -0
  141. package/rules/jet/oj-tsx-wctag-maintenance.js +1 -1
  142. package/rules/jet/rules.json +1 -1
  143. package/schema/component-schema.json +1 -1
  144. package/src/JafCore.js +1 -1
  145. package/types/index.d.ts +3 -0
@@ -1 +1 @@
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"]}},"propNameRestrictionsDef":{"$comment":"web component property names cannot conflict with HTML global attribute names","propertyNames":{"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"]}}},"eventNameRestrictionsDef":{"$comment":"web component event names, which become 'on<name>' attributes at runtime, cannot conflict with HTML GlobalEventHandlers","propertyNames":{"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"]}}},"extensionApiDecorationDef":{"type":"object","properties":{"type":{"type":"string"},"description":{"type":"string"},"enumValues":{"type":"array","items":{"type":"string"}},"visible":{"type":"boolean"},"properties":{"type":"object","additionalProperties":{"$ref":"#/definitions/extensionApiDecorationDef"}}}},"extensionDataProviderPropsDef":{"type":"object","$comment":"DataProvider property names follow JavaScript identifer naming restrictions","patternProperties":{"^[a-zA-Z_$][0-9a-zA-Z_$]*$":{"type":"object","properties":{"type":{"type":"string"},"description":{"type":"string"},"required":{"type":"boolean"},"value":{"type":["array","boolean","number","null","object","string"]},"key":{"type":"boolean"},"properties":{"$ref":"#/definitions/extensionDataProviderPropsDef"}},"required":["type"]}}},"extensionDef":{"type":"object","properties":{"vbdt":{"type":"object"},"catalog":{"type":"object","properties":{"apiDecoration":{"$ref":"#/definitions/extensionApiDecorationDef"}}},"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":{"$ref":"#/definitions/availableThemesDef"}}}},"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"}}},"catalog":{"type":"object","properties":{"apiDecoration":{"$ref":"#/definitions/extensionApiDecorationDef"},"dataProviderProperties":{"$ref":"#/definitions/extensionDataProviderPropsDef"}}},"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"},"referenceModules":{"type":"array","items":{"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"}},"icon":{"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"},"extension":{"$ref":"#/definitions/extensionDef"},"name":{"type":"string"},"status":{"$ref":"#/definitions/statusDef"},"type":{"type":"string"}},"required":["name","type"],"additionalProperties":false}},"returnDef":{"type":"object","properties":{"type":{"type":"string"},"description":{"type":"string"},"status":{"$ref":"#/definitions/statusDef"},"properties":{"patternProperties":{"^[a-zA-Z_$][0-9a-zA-Z_$]*$":{"type":"object","properties":{"type":{"type":"string"},"description":{"type":"string"},"status":{"$ref":"#/definitions/statusDef"}},"additionalProperties":false}}}},"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":{"nestedFilter":{"type":"boolean"},"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}},"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"},"implicitBusyContext":{"type":"boolean"},"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":["antiPattern","deprecated","maintenance","supersedes"]},"since":{"$ref":"#/definitions/semverExactDef"},"description":{"type":"string"},"target":{"type":"string","enum":["propertyType","parameterType","returnType","propertyValue"]},"themes":{"type":"array","items":{"$ref":"#/definitions/availableThemesDef"}},"value":{"type":"array","items":{"type":"string"}}},"additionalProperties":false,"allOf":[{"if":{"$comment":"if the Status 'type' is explicitly set to anything other than 'antiPattern', then 'themes' is invalid","properties":{"type":{"not":{"const":"antiPattern"}}},"required":["type"]},"then":{"propertyNames":{"not":{"const":"themes"}}},"else":{"if":{"$comment":"otherwise if the Status 'type' is explicitly set to 'antiPattern', then 'themes' is required","properties":{"type":{"const":"antiPattern"}},"required":["type"]},"then":{"required":["themes"]}}}]}},"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":{"$ref":"#/definitions/jetCustomElementNameDef"},"defaultExport":{"type":"boolean"},"description":{"type":"string"},"displayName":{"type":"string"},"export":{"type":"string"},"help":{"type":"string"},"main":{"type":"string"},"readme":{"type":"string"},"status":{"$ref":"#/definitions/statusDef"},"type":{"type":"string","enum":["component","resource","vdom","hook","util","vbcs-pattern","vbcs-fragment"]},"metadata":{"type":"string"}},"required":["name"],"allOf":[{"$comment":"if the content type is 'component' (default), 'resource', 'vdom', 'hook', 'vbcs-pattern', or 'vbcs-fragment' then 'defaultExport' is invalid","if":{"oneOf":[{"not":{"required":["type"]}},{"properties":{"type":{"enum":["component","resource","vdom","hook","vbcs-pattern","vbcs-fragment"]}},"required":["type"]}]},"then":{"propertyNames":{"not":{"enum":["defaultExport"]}}}},{"$comment":"if the content type is not explicitly set to 'vdom', 'hook', 'vbcs-pattern', or 'vbcs-fragment' then 'metadata' is invalid","if":{"properties":{"type":{"not":{"enum":["vdom","hook","vbcs-pattern","vbcs-fragment"]}}},"required":["type"]},"then":{"propertyNames":{"not":{"enum":["metadata"]}}}},{"$comment":"if the content type is explicitly set to 'resource', 'vbcs-pattern', or 'vbcs-fragment' then 'export' is invalid","if":{"properties":{"type":{"enum":["resource","vbcs-pattern","vbcs-fragment"]}},"required":["type"]},"then":{"propertyNames":{"not":{"enum":["export"]}}}}],"additionalProperties":false},"contentsDef":{"type":"array","items":{"$comment":"either an @contents@ token string OR a contentItems object","anyOf":[{"const":"@contents@"},{"$ref":"#/definitions/contentItemsDef"}]}},"commonContentsPropsDef":{"enum":["name","type","description","displayName","main","since","status","version","jetVersion","pack","license","extension","help","icon"]},"preferredParentItemDef":{"type":"object","properties":{"parentInterface":{"type":"string"},"isDirectParent":{"type":"boolean"},"extension":{"$ref":"#/definitions/extensionDef"},"status":{"$ref":"#/definitions/statusDef"}},"required":["parentInterface"]},"availableThemesDef":{"anyOf":[{"type":"string","enum":["Alta","Redwood","Stable"]},{"type":"string"}]}},"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"},"demoFor":{"type":"array","items":{"type":"string"}},"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"}}]},"dependencyScope":{"type":"string","enum":["installable","provided","runtime"]},"description":{"type":"string"},"displayName":{"type":"string"},"properties":{"$ref":"#/definitions/propsDef"},"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"},"params":{"$comment":"needed for 'hook' type","$ref":"#/definitions/paramsDef"},"paths":{"oneOf":[{"$ref":"#/definitions/pathsDef"},{"type":"array","items":{"$ref":"#/definitions/pathsDef"}}]},"preferredParent":{"type":"array","items":{"$ref":"#/definitions/preferredParentItemDef"}},"propertyLayout":{"type":"array","items":{"$ref":"#/definitions/propertyGroupObjDef"}},"publicModules":{"type":"array","items":{"type":"string"}},"return":{"$comment":"needed for 'hook' type","$ref":"#/definitions/returnDef"},"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"]},"translationBundle":{"type":"string"},"type":{"type":"string","enum":["composite","core","pack","mono-pack","reference","resource","demo","stripe","vdom","hook","vbcs-pattern","vbcs-template","vbcs-action","vbcs-fragment"]},"typesRoot":{"type":"string"}},"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 'preferredParent' are invalid","if":{"properties":{"type":{"not":{"enum":["core","composite"]}}},"required":["type"]},"then":{"propertyNames":{"not":{"enum":["implements","preferredParent"]}}}},{"$comment":"if the 'type' property is explicitly set to anything other than 'composite', 'core', 'vdom' or 'hook', then 'main' is invalid","if":{"properties":{"type":{"not":{"enum":["core","composite","vdom","hook"]}}},"required":["type"]},"then":{"propertyNames":{"not":{"enum":["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 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"}}}}]}},{"$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' and 'typesRoot' properties are invalid (reserved for mono-packs)","propertyNames":{"not":{"enum":["contents","typesRoot"]}}}},{"$comment":"if the component type is explicitly set to 'reference', then the 'jetVersion' property is invalid","if":{"properties":{"type":{"const":["reference"]}},"required":["type"]},"then":{"propertyNames":{"not":{"enum":["jetVersion"]}}}},{"$comment":"if the component type is explicitly neither 'mono-pack' nor 'reference', then the 'translationBundle' property is invalid","if":{"properties":{"type":{"not":{"enum":["mono-pack","reference"]}}},"required":["type"]},"then":{"propertyNames":{"not":{"enum":["translationBundle"]}}}},{"$comment":"if the component type is explicitly set to 'vdom', then only a subset of metadata properties are supported","if":{"properties":{"type":{"const":"vdom"}},"required":["type"]},"then":{"allOf":[{"propertyNames":{"anyOf":[{"$ref":"#/definitions/commonContentsPropsDef"},{"enum":["properties"]}]}},{"properties":{"properties":{"$comment":"vdom (Preact) property names follow JavaScript identifer naming restrictions","patternProperties":{"^[a-zA-Z_$][0-9a-zA-Z_$]*$":{"type":"object","$comment":"only support a subset of metadata properties for vdom (Preact) Props","propertyNames":{"enum":["type","description","status","value"]}}}}}}]}},{"$comment":"if the component type is explicitly set to 'hook', then only a subset of metadata properties are supported","if":{"properties":{"type":{"const":"hook"}},"required":["type"]},"then":{"propertyNames":{"anyOf":[{"$ref":"#/definitions/commonContentsPropsDef"},{"enum":["params","return"]}]}},"else":{"$comment":"otherwise, the 'params' and 'return' properties are invalid (reserved for 'hooks')","propertyNames":{"not":{"enum":["params","return"]}}}},{"$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 '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 '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 the component type is NOT 'vbcs-fragment', then apply additional restrictions to property, event names; otherwise 'methods' is invalid","if":{"oneOf":[{"not":{"required":["type"]}},{"properties":{"type":{"not":{"const":"vbcs-fragment"}}},"required":["type"]}]},"then":{"properties":{"properties":{"$ref":"#/definitions/propNameRestrictionsDef"},"events":{"$ref":"#/definitions/eventNameRestrictionsDef"}}},"else":{"propertyNames":{"not":{"enum":["methods"]}}}}]}
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"]}},"propNameRestrictionsDef":{"$comment":"web component property names cannot conflict with HTML global attribute names","propertyNames":{"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"]}}},"eventNameRestrictionsDef":{"$comment":"web component event names, which become 'on<name>' attributes at runtime, cannot conflict with HTML GlobalEventHandlers","propertyNames":{"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"]}}},"extensionApiDecorationDef":{"type":"object","properties":{"type":{"type":"string"},"description":{"type":"string"},"enumValues":{"type":"array","items":{"type":"string"}},"visible":{"type":"boolean"},"properties":{"type":"object","additionalProperties":{"$ref":"#/definitions/extensionApiDecorationDef"}}}},"extensionDataProviderPropsDef":{"type":"object","$comment":"DataProvider property names follow JavaScript identifer naming restrictions","patternProperties":{"^[a-zA-Z_$][0-9a-zA-Z_$]*$":{"type":"object","properties":{"type":{"type":"string"},"description":{"type":"string"},"required":{"type":"boolean"},"value":{"type":["array","boolean","number","null","object","string"]},"key":{"type":"boolean"},"properties":{"$ref":"#/definitions/extensionDataProviderPropsDef"}},"required":["type"]}}},"extensionDef":{"type":"object","properties":{"vbdt":{"type":"object"},"catalog":{"type":"object","properties":{"apiDecoration":{"$ref":"#/definitions/extensionApiDecorationDef"}}},"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":{"$ref":"#/definitions/availableThemesDef"}}}},"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"}}},"catalog":{"type":"object","properties":{"apiDecoration":{"$ref":"#/definitions/extensionApiDecorationDef"},"dataProviderProperties":{"$ref":"#/definitions/extensionDataProviderPropsDef"}}},"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"},"referenceModules":{"type":"array","items":{"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"}},"icon":{"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"},"extension":{"$ref":"#/definitions/extensionDef"},"name":{"type":"string"},"status":{"$ref":"#/definitions/statusDef"},"type":{"type":"string"}},"required":["name","type"],"additionalProperties":false}},"returnDef":{"type":"object","properties":{"type":{"type":"string"},"description":{"type":"string"},"status":{"$ref":"#/definitions/statusDef"},"properties":{"patternProperties":{"^[a-zA-Z_$][0-9a-zA-Z_$]*$":{"type":"object","properties":{"type":{"type":"string"},"description":{"type":"string"},"status":{"$ref":"#/definitions/statusDef"}},"additionalProperties":false}}}},"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":{"nestedFilter":{"type":"boolean"},"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"},"templateSlotRenderType":{"type":"string"},"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}},"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"},"implicitBusyContext":{"type":"boolean"},"maxItems":{"type":"number","multipleOf":1},"minItems":{"type":"number","multipleOf":1,"minimum":0},"preferredContent":{"type":"array","items":{"type":"string"}},"status":{"$ref":"#/definitions/statusDef"},"templateSlotRenderType":{"type":"string"},"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":["antiPattern","candidate","deprecated","maintenance","production","supersedes"]},"since":{"$ref":"#/definitions/semverExactDef"},"description":{"type":"string"},"target":{"type":"string","enum":["propertyType","parameterType","returnType","propertyValue"]},"themes":{"type":"array","items":{"$ref":"#/definitions/availableThemesDef"}},"value":{"type":"array","items":{"type":"string"}}},"additionalProperties":false,"allOf":[{"if":{"$comment":"if the Status 'type' is explicitly set to anything other than 'antiPattern', then 'themes' is invalid","properties":{"type":{"not":{"const":"antiPattern"}}},"required":["type"]},"then":{"propertyNames":{"not":{"const":"themes"}}},"else":{"if":{"$comment":"otherwise if the Status 'type' is explicitly set to 'antiPattern', then 'themes' is required","properties":{"type":{"const":"antiPattern"}},"required":["type"]},"then":{"required":["themes"]}}},{"if":{"$comment":"if the Status 'type' is explicitly set to 'candidate', 'maintenance', 'production', or 'supersedes', then 'target' is invalid","properties":{"type":{"enum":["candidate","maintenance","production","supersedes"]}},"required":["type"]},"then":{"propertyNames":{"not":{"const":"target"}}}}]}},"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":{"$ref":"#/definitions/jetCustomElementNameDef"},"defaultExport":{"type":"boolean"},"description":{"type":"string"},"displayName":{"type":"string"},"export":{"type":"string"},"help":{"type":"string"},"main":{"type":"string"},"readme":{"type":"string"},"status":{"$ref":"#/definitions/statusDef"},"type":{"type":"string","enum":["component","resource","vdom","hook","util","vbcs-pattern","vbcs-fragment"]},"metadata":{"type":"string"}},"required":["name"],"allOf":[{"$comment":"if the content type is 'component' (default), 'resource', 'vdom', 'hook', 'vbcs-pattern', or 'vbcs-fragment' then 'defaultExport' is invalid","if":{"oneOf":[{"not":{"required":["type"]}},{"properties":{"type":{"enum":["component","resource","vdom","hook","vbcs-pattern","vbcs-fragment"]}},"required":["type"]}]},"then":{"propertyNames":{"not":{"enum":["defaultExport"]}}}},{"$comment":"if the content type is not explicitly set to 'vdom', 'hook', 'vbcs-pattern', or 'vbcs-fragment' then 'metadata' is invalid","if":{"properties":{"type":{"not":{"enum":["vdom","hook","vbcs-pattern","vbcs-fragment"]}}},"required":["type"]},"then":{"propertyNames":{"not":{"enum":["metadata"]}}}},{"$comment":"if the content type is explicitly set to 'resource', 'vbcs-pattern', or 'vbcs-fragment' then 'export' is invalid","if":{"properties":{"type":{"enum":["resource","vbcs-pattern","vbcs-fragment"]}},"required":["type"]},"then":{"propertyNames":{"not":{"enum":["export"]}}}}],"additionalProperties":false},"contentsDef":{"type":"array","items":{"$comment":"either an @contents@ token string OR a contentItems object","anyOf":[{"const":"@contents@"},{"$ref":"#/definitions/contentItemsDef"}]}},"commonContentsPropsDef":{"enum":["name","type","description","displayName","defaultExport","export","main","since","status","version","jetVersion","pack","license","extension","help","icon"]},"preferredParentItemDef":{"type":"object","properties":{"parentInterface":{"type":"string"},"isDirectParent":{"type":"boolean"},"extension":{"$ref":"#/definitions/extensionDef"},"status":{"$ref":"#/definitions/statusDef"}},"required":["parentInterface"]},"availableThemesDef":{"anyOf":[{"type":"string","enum":["Alta","Redwood","Stable"]},{"type":"string"}]}},"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"},"defaultExport":{"type":"boolean"},"demoFor":{"type":"array","items":{"type":"string"}},"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"}}]},"dependencyScope":{"type":"string","enum":["installable","provided","runtime"]},"description":{"type":"string"},"displayName":{"type":"string"},"export":{"type":"string"},"properties":{"$ref":"#/definitions/propsDef"},"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"},"params":{"$comment":"needed for 'hook' type","$ref":"#/definitions/paramsDef"},"paths":{"oneOf":[{"$ref":"#/definitions/pathsDef"},{"type":"array","items":{"$ref":"#/definitions/pathsDef"}}]},"preferredParent":{"type":"array","items":{"$ref":"#/definitions/preferredParentItemDef"}},"propertyLayout":{"type":"array","items":{"$ref":"#/definitions/propertyGroupObjDef"}},"publicModules":{"type":"array","items":{"type":"string"}},"return":{"$comment":"needed for 'hook' type","$ref":"#/definitions/returnDef"},"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"]},"translationBundle":{"type":"string"},"type":{"type":"string","enum":["composite","core","pack","mono-pack","reference","resource","demo","stripe","vdom","hook","vbcs-pattern","vbcs-template","vbcs-action","vbcs-fragment"]},"typesRoot":{"type":"string"}},"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 'preferredParent' are invalid","if":{"properties":{"type":{"not":{"enum":["core","composite"]}}},"required":["type"]},"then":{"propertyNames":{"not":{"enum":["implements","preferredParent"]}}}},{"$comment":"if the 'type' property is explicitly set to anything other than 'composite', 'core', 'vdom' or 'hook', then 'main' is invalid","if":{"properties":{"type":{"not":{"enum":["core","composite","vdom","hook"]}}},"required":["type"]},"then":{"propertyNames":{"not":{"enum":["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 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"}}}}]}},{"$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' and 'typesRoot' properties are invalid (reserved for mono-packs)","propertyNames":{"not":{"enum":["contents","typesRoot"]}}}},{"$comment":"if the component type is explicitly set to 'reference', then the 'jetVersion' property is invalid","if":{"properties":{"type":{"const":["reference"]}},"required":["type"]},"then":{"propertyNames":{"not":{"enum":["jetVersion"]}}}},{"$comment":"if the component type is explicitly neither 'mono-pack' nor 'reference', then the 'translationBundle' property is invalid","if":{"properties":{"type":{"not":{"enum":["mono-pack","reference"]}}},"required":["type"]},"then":{"propertyNames":{"not":{"enum":["translationBundle"]}}}},{"$comment":"if the component type is explicitly set to 'vdom', then only a subset of metadata properties are supported","if":{"properties":{"type":{"const":"vdom"}},"required":["type"]},"then":{"allOf":[{"propertyNames":{"anyOf":[{"$ref":"#/definitions/commonContentsPropsDef"},{"enum":["properties"]}]}},{"properties":{"properties":{"$comment":"vdom (Preact) property names follow JavaScript identifer naming restrictions","patternProperties":{"^[a-zA-Z_$][0-9a-zA-Z_$]*$":{"type":"object","$comment":"only support a subset of metadata properties for vdom (Preact) Props","propertyNames":{"enum":["type","description","required","status","value"]}}}}}}]}},{"$comment":"if the component type is explicitly set to 'hook', then only a subset of metadata properties are supported","if":{"properties":{"type":{"const":"hook"}},"required":["type"]},"then":{"propertyNames":{"anyOf":[{"$ref":"#/definitions/commonContentsPropsDef"},{"enum":["params","return"]}]}},"else":{"$comment":"otherwise, the 'params' and 'return' properties are invalid (reserved for 'hooks')","propertyNames":{"not":{"enum":["params","return"]}}}},{"$comment":"if the component type is explicitly neither 'vdom' nor 'hook', then the 'defaultExport' and 'export' properties are invalid","if":{"oneOf":[{"not":{"required":["type"]}},{"properties":{"type":{"not":{"enum":["vdom","hook"]}}},"required":["type"]}]},"then":{"propertyNames":{"not":{"enum":["defaultExport","export"]}}}},{"$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 '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 '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 the component type is NOT 'vbcs-fragment', then apply additional restrictions to property, event names; otherwise 'methods' is invalid","if":{"oneOf":[{"not":{"required":["type"]}},{"properties":{"type":{"not":{"const":"vbcs-fragment"}}},"required":["type"]}]},"then":{"properties":{"properties":{"$ref":"#/definitions/propNameRestrictionsDef"},"events":{"$ref":"#/definitions/eventNameRestrictionsDef"}}},"else":{"propertyNames":{"not":{"enum":["methods"]}}}}]}