@oracle/oraclejet-audit 18.1.4 → 19.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 (86) hide show
  1. package/corePackMigrator/corePackMigrator.js +1 -1
  2. package/corePackMigrator/metadata/badgeMetadata.json +66 -0
  3. package/corePackMigrator/metadata/checkboxsetMetadata.json +101 -0
  4. package/corePackMigrator/metadata/inputNumberMetadata.json +0 -3
  5. package/corePackMigrator/metadata/inputTextMetadata.json +0 -3
  6. package/corePackMigrator/metadata/labelMetadata.json +285 -222
  7. package/corePackMigrator/metadata/labelValueMetadata.json +226 -137
  8. package/corePackMigrator/metadata/listviewMetadata.json +7 -0
  9. package/corePackMigrator/metadata/radiosetMetadata.json +20 -9
  10. package/corePackMigrator/metadata/selectorMetadata.json +6 -0
  11. package/corePackMigrator/resource/astUtils.js +1 -1
  12. package/corePackMigrator/resource/componentMigrator.js +1 -1
  13. package/corePackMigrator/resource/fileScanner.js +1 -1
  14. package/corePackMigrator/resource/htmlUtils.js +1 -1
  15. package/corePackMigrator/resource/manifest.json +57 -49
  16. package/corePackMigrator/resource/migrationConfig.json +1 -1
  17. package/corePackMigrator/utilities/logging.js +2 -2
  18. package/jaf-amd.js +1 -1
  19. package/lib/Components.js +1 -1
  20. package/lib/Config.js +1 -1
  21. package/lib/FsUtils.js +1 -1
  22. package/lib/HtmlUtils.js +1 -1
  23. package/lib/JafLib.js +1 -1
  24. package/lib/MetaLib.js +1 -1
  25. package/lib/OjCPack.js +1 -1
  26. package/lib/RegTypes.js +1 -1
  27. package/lib/Registry.js +1 -1
  28. package/lib/Rules.js +1 -1
  29. package/lib/Ts.js +1 -1
  30. package/lib/TsUtils.js +1 -1
  31. package/lib/TsxUtils.js +1 -1
  32. package/lib/checkage.js +1 -1
  33. package/lib/defaults.js +1 -1
  34. package/lib/extends.js +1 -1
  35. package/lib/ns.js +1 -1
  36. package/lib/scaffold.js +1 -1
  37. package/lib/scopewalker.js +1 -1
  38. package/lib/sublib/precomp/Precompiler.js +1 -1
  39. package/libext/expparser.js +1 -1
  40. package/meta/18.0.0/jetauditmeta.js +1 -1
  41. package/meta/18.1.0/jetauditmeta.js +1 -1
  42. package/meta/19.0.0/jetauditmeta.js +9 -0
  43. package/meta/metaverlist.json +1 -1
  44. package/package.json +4 -4
  45. package/profiles/best-practice.json +3 -0
  46. package/profiles/redwood-strict.json +10 -1
  47. package/rulepacks/jetwc/jetwc-use-public-apis.js +6 -0
  48. package/rulepacks/jetwc/msgid.json +1 -1
  49. package/rulepacks/jetwc/rules.json +1 -1
  50. package/rulepacks/jetwc-lib/jetwcutils-componentAuditUtils.js +1 -1
  51. package/rulepacks/jetwc-lib/jetwcutils-componentFinder.js +1 -1
  52. package/rulepacks/jetwco/jetwco-cacc-properties.js +1 -1
  53. package/rulepacks/jetwco/rules.json +1 -1
  54. package/rules/jet/msgid.json +1 -1
  55. package/rules/jet/oj-acc-aria-accessible.js +1 -1
  56. package/rules/jet/oj-acc-aria-prop.js +1 -1
  57. package/rules/jet/oj-acc-navigable-link.js +6 -0
  58. package/rules/jet/oj-acc-select-aria-label.js +1 -1
  59. package/rules/jet/oj-cca-compjson-prop-conflict.js +6 -0
  60. package/rules/jet/oj-css-bp-zindex.js +7 -0
  61. package/rules/jet/oj-html-badge-maintenance.js +6 -0
  62. package/rules/jet/oj-html-binding-as-slot-child.js +1 -1
  63. package/rules/jet/oj-html-corequired.js +6 -0
  64. package/rules/jet/oj-html-nav-tab-nointeractive.js +6 -0
  65. package/rules/jet/oj-html-oj-ux-ico-slot.js +6 -0
  66. package/rules/jet/oj-html-ojtag-id.js +1 -1
  67. package/rules/jet/oj-html-redwood-ojoption-disabled.js +6 -0
  68. package/rules/jet/oj-html-slot-pref-content.js +1 -1
  69. package/rules/jet/oj-html-tabbar-progressive-popup.js +1 -1
  70. package/rules/jet/oj-html-wctag-for.js +1 -1
  71. package/rules/jet/oj-html-wctag-id.js +1 -1
  72. package/rules/jet/oj-html-wctag-maintenance.js +1 -1
  73. package/rules/jet/oj-html-wctag-packprivate.js +1 -1
  74. package/rules/jet/oj-js-poly-promise.js +1 -1
  75. package/rules/jet/oj-ts-poly-promise.js +1 -1
  76. package/rules/jet/oj-tsx-acc-navigable-link.js +6 -0
  77. package/rules/jet/oj-tsx-aria-prop.js +1 -1
  78. package/rules/jet/oj-tsx-corequired.js +6 -0
  79. package/rules/jet/oj-tsx-prop-ko-binding.js +6 -0
  80. package/rules/jet/oj-tsx-tabbar-progressive-popup.js +6 -0
  81. package/rules/jet/oj-tsx-wctag-packprivate.js +1 -1
  82. package/rules/jet/rules.json +1 -1
  83. package/schema/component-schema.json +1 -1
  84. package/src/JafCore.js +1 -1
  85. package/types/index.d.ts +5 -0
  86. package/corePackMigrator/metadata/messagesMetadata.json +0 -41
@@ -1 +1 @@
1
- {"metaList":{"8.3.0":{"version":"8.3.0","date":"Monday May 04, 2020","time":"4:34pm edt"},"13.0.0":{"version":"13.0.4","date":"Thursday Sep 22, 2022","time":"3:14am utc"},"13.1.0":{"version":"13.1.0","date":"Sunday Oct 02, 2022","time":"3:37am utc"},"14.0.0":{"version":"14.0.0","date":"Tuesday Jan 03, 2023","time":"8:54pm utc"},"14.1.0":{"version":"14.1.0","date":"Thursday Apr 06, 2023","time":"7:55pm utc"},"15.0.0":{"version":"15.0.0","date":"Saturday Jul 01, 2023","time":"2:08pm utc"},"15.1.0":{"version":"15.1.0","date":"Thursday Jul 06, 2023","time":"8:04pm utc"},"16.0.0":{"version":"16.0.0","date":"Saturday Feb 10, 2024","time":"4:36pm utc"},"16.1.0":{"version":"16.1.0","date":"Monday Feb 12, 2024","time":"8:58pm utc"},"17.0.0":{"version":"17.0.0","date":"Thursday Jul 25, 2024","time":"1:57am utc"},"17.1.0":{"version":"17.1.0","date":"Friday Nov 01, 2024","time":"11:30pm utc"},"18.0.0":{"version":"18.0.0","date":"Saturday Feb 08, 2025","time":"0:54am utc"},"18.1.0":{"version":"18.1.4","date":"Thursday Jul 03, 2025","time":"12:21am utc"}}}
1
+ {"metaList":{"8.3.0":{"version":"8.3.0","date":"Monday May 04, 2020","time":"4:34pm edt"},"13.0.0":{"version":"13.0.4","date":"Thursday Sep 22, 2022","time":"3:14am utc"},"13.1.0":{"version":"13.1.0","date":"Sunday Oct 02, 2022","time":"3:37am utc"},"14.0.0":{"version":"14.0.0","date":"Tuesday Jan 03, 2023","time":"8:54pm utc"},"14.1.0":{"version":"14.1.0","date":"Thursday Apr 06, 2023","time":"7:55pm utc"},"15.0.0":{"version":"15.0.0","date":"Saturday Jul 01, 2023","time":"2:08pm utc"},"15.1.0":{"version":"15.1.0","date":"Thursday Jul 06, 2023","time":"8:04pm utc"},"16.0.0":{"version":"16.0.0","date":"Saturday Feb 10, 2024","time":"4:36pm utc"},"16.1.0":{"version":"16.1.0","date":"Monday Feb 12, 2024","time":"8:58pm utc"},"17.0.0":{"version":"17.0.0","date":"Thursday Jul 25, 2024","time":"1:57am utc"},"17.1.0":{"version":"17.1.0","date":"Friday Nov 01, 2024","time":"11:30pm utc"},"18.0.0":{"version":"18.0.0","date":"Friday Jan 24, 2025","time":"8:56pm utc"},"18.1.0":{"version":"18.1.0","date":"Friday May 09, 2025","time":"4:40pm utc"},"19.0.0":{"version":"19.0.0","date":"Tuesday Aug 12, 2025","time":"4:59pm utc"}}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oracle/oraclejet-audit",
3
- "version": "18.1.4",
3
+ "version": "19.0.0",
4
4
  "description": "JET AUDIT FRAMEWORK",
5
5
  "main": "jaf.js",
6
6
  "files": [
@@ -44,13 +44,13 @@
44
44
  "lint"
45
45
  ],
46
46
  "Jaf": {
47
- "version": "11.13.6"
47
+ "version": "12.13.3"
48
48
  },
49
49
  "license": "UPL-1.0",
50
50
  "dependencies": {
51
51
  "@babel/generator": "^7.19.5",
52
52
  "@babel/parser": "^7.19.4",
53
- "@typescript-eslint/typescript-estree": "6.13.2",
53
+ "@typescript-eslint/typescript-estree": "8.31.0",
54
54
  "adm-zip": "0.4.16",
55
55
  "ajv": "8.12.0",
56
56
  "ast-traverse": "^0.1.1",
@@ -72,7 +72,7 @@
72
72
  "strip-json-comments": "2.0.1",
73
73
  "sync-request": "6.1.0",
74
74
  "tmp": "0.0.33",
75
- "typescript": "5.7.2"
75
+ "typescript": "5.8.3"
76
76
  },
77
77
  "devDependencies": {
78
78
  "@babel/traverse": "^7.19.6",
@@ -32,6 +32,7 @@
32
32
  "oj-html-style-bp-margin-padding",
33
33
  "oj-html-style-abs-units",
34
34
  "oj-html-tabbar-progressive-popup",
35
+ "oj-tsx-tabbar-progressive-popup",
35
36
  "oj-css-style-bp-color",
36
37
  "oj-css-style-bp-font",
37
38
  "oj-css-style-bp-display",
@@ -41,6 +42,7 @@
41
42
  "oj-css-bp-textalign",
42
43
  "oj-css-bp-bgcolor",
43
44
  "oj-css-bp-border-color",
45
+ "oj-css-bp-zindex",
44
46
  "oj-tsx-bp-button-xs-chroming"
45
47
  ],
46
48
  "disable": [
@@ -163,6 +165,7 @@
163
165
  "JET-7202": "blocker", // oj-tsx-style-bp-margin-padding
164
166
  "JET-7220": "blocker", // oj-tsx-bp-button-xs-chroming
165
167
  "JET-7230": "blocker", // oj-tsx-bp-title-to-tooltip
168
+ "JET-7285": "critical", // oj-tsx-tabbar-progressive-popup
166
169
  "JET-8035": "critical" // oj-html-tabbar-progressive-popup
167
170
  }
168
171
  }
@@ -12,15 +12,18 @@
12
12
  "enable":[
13
13
  // rules enabled here cannot be disabled by an inheriting config
14
14
  "oj-html-button-size-chroming",
15
+ "oj-html-msgs-cat-text",
15
16
  "oj-html-form-layout-colspan-wrap",
16
17
  "oj-html-redwood-bp-endslot",
17
18
  "oj-html-redwood-clear-icon",
18
19
  "oj-html-redwood-bp-btn-avatar",
20
+ "oj-html-redwood-ojoption-disabled",
19
21
  "oj-html-tabbar-progressive-popup",
20
22
  "oj-tsx-redwood-bp-btn-avatar",
21
23
  "oj-tsx-redwood-clear-icon",
22
24
  "oj-tsx-button-size-chroming",
23
- "oj-tsx-form-layout-colspan-wrap"
25
+ "oj-tsx-form-layout-colspan-wrap",
26
+ "oj-tsx-tabbar-progressive-popup"
24
27
  ]
25
28
  },
26
29
  "sevMap": {
@@ -30,12 +33,18 @@
30
33
  "JET-0157": "blocker", // oj-html-slot-minmax,
31
34
  "JET-0490": "blocker", // oj-html-notag-style
32
35
  "JET-0491": "blocker", // oj-html-notag-style
36
+ "JET-0495": "blocker", // oj-html-msgs-cat-text
37
+ "JET-0496": "blocker", // oj-html-msgs-cat-text
38
+ "JET-0497": "blocker", // oj-html-msgs-cat-text
39
+ "JET-0498": "blocker", // oj-html-msgs-cat-text
33
40
  "JET-5110": "blocker", // oj-html-no-pageopts-type
34
41
  "JET-5111": "blocker", // oj-html-no-pageopts-type
35
42
  "JET-5130": "blocker", // oj-html-button-size-chroming
36
43
  "JET-5131": "blocker", // oj-html-button-size-chroming
37
44
  "JET-6065": "blocker", // oj-css-var-override
38
45
  "JET-6066": "blocker", // oj-css-var-override
46
+ "JET-6075": "blocker", // oj-css-bp-zindex
47
+ "JET-6076": "blocker", // oj-css-bp-zindex
39
48
  "JET-0520": "blocker", // oj-html-rating-gauge-size
40
49
  "JET-0525": "blocker", // oj-html-rating-gauge-track-resize
41
50
  "JET-7215": "blocker", // oj-tsx-button-size-chroming
@@ -0,0 +1,6 @@
1
+ /*
2
+ * Copyright (c) 2018, 2025, Oracle and/or its affiliates.
3
+ * Licensed under The Universal Permissive License (UPL), Version 1.0
4
+ * as shown at https://oss.oracle.com/licenses/upl/
5
+ */
6
+ const path=require("path");const Utils=require("../jetwc-lib/jetwcutils-componentAuditUtils");const ruleDef=function(){};ruleDef.prototype.getName=function(){return"jetwc-use-public-apis"};ruleDef.prototype.getShortDescription=function(){return"Components cannot consume private components or APIs from other packs"};ruleDef.prototype.getDescription=function(){return"This rule checks that any components or APIs used by a component are either from within the same pack or are marked as public and from a declared dependency"};ruleDef.prototype.register=function(context){return{webcomp:this._doAuditTagUse,TsxWebComponent:this._doAuditTagUse,ImportDeclaration:this._doAuditImport,CallExpression:this._doAuditRequireStyle}};ruleDef.prototype._doAuditTagUse=function(context,tag){let issue;const componentName=Utils.matchComponentPath(context,path.dirname(context.filepath));if(componentName){const componentMetadata=Utils.componentInfo(context,componentName);const consumedTag=context.type==="TsxComponent"?tag.name:tag;const consumedComponentMeta=Utils.componentInfo(context,consumedTag);let proceedWithPrivateCheck=true;if(componentMetadata.pack&&componentMetadata.pack===consumedComponentMeta?.pack){proceedWithPrivateCheck=false}if(proceedWithPrivateCheck&&context.utils.metaLib.isTagPackPrivate(consumedTag)){issue=new context.Issue(`<${consumedTag}> is defined as private and cannot be used by the component <${componentName}>`);issue.setMsgKey(context.ruleName+"_1");context.reporter.addIssue(issue,context)}let consumerDependencies=componentMetadata.dependencies;let isMonoPackParent=false;if(componentMetadata.pack){const packInfo=Utils.componentInfo(context,componentMetadata.pack);if(packInfo.type==="mono-pack"){isMonoPackParent=true;if(packInfo.dependencies){consumerDependencies=packInfo.dependencies}}}if(context.utils.metaLib.isComponentTag(consumedTag)&&!consumerDependencies?.find(dep=>dep.name===consumedTag)){const dependencySuffix=isMonoPackParent?`the parent mono-pack ${componentMetadata.pack} for ${componentName}`:componentName;issue=new context.Issue(`<${consumedTag}> is used by the component <${componentName}>, however, ${dependencySuffix} does not declare ${consumedTag} as a dependency`);issue.setMsgKey(context.ruleName+"_2");context.reporter.addIssue(issue,context)}}};ruleDef.prototype._doAuditImport=function(context,node){const NT=context.utils.AstUtils.getNodeTypes();const withinComponent=Utils.matchComponentPath(context,path.dirname(context.filepath));const componentInfo=context.rulePack.getExtension().allComponents.get(withinComponent);const allowUIComponentExports=context.rulePack.getRuleCustomOption("allowUIComponentExports")??false;if(componentInfo){if(node.source&&node.source.type===NT.LITERAL){const sourcePath=node.source.value;this._verifyImportIsPublic(context,sourcePath,componentInfo,allowUIComponentExports,"import")}}};ruleDef.prototype._doAuditRequireStyle=function(context,node){const NT=context.utils.AstUtils.getNodeTypes();const withinComponent=Utils.matchComponentPath(context,path.dirname(context.filepath));const componentInfo=context.rulePack.getExtension().allComponents.get(withinComponent);const allowUIComponentExports=context.rulePack.getRuleCustomOption("allowUIComponentExports")??false;if(componentInfo){if(withinComponent&&node.callee.type===NT.IDENTIFIER&&(node.callee.name==="define"||node.callee.name==="require")){if(node.arguments[0].type===NT.ARRAY_EXPR&&node.arguments[0].elements.length>0){node.arguments[0].elements.forEach(arg=>{if(arg.value){this._verifyImportIsPublic(context,arg.value,componentInfo,allowUIComponentExports,`${node.callee.name} function mapping for`)}})}else if(node.arguments[0].type===NT.LITERAL&&node.arguments[0].value){this._verifyImportIsPublic(context,node.arguments[0].value,componentInfo,allowUIComponentExports,`${node.callee.name} function mapping for`)}}}};ruleDef.prototype._verifyImportIsPublic=function(context,pathToCheck,componentInfo,allowUIComponentExports,importType){if(pathToCheck&&typeof pathToCheck==="string"){if(pathToCheck.includes("/")){const[seg1,seg2,seg3]=pathToCheck.split("/");if(seg1===".."){if(this._doesCheckComponentBoundaryCross(componentInfo,context.filepath,pathToCheck)){issue=new context.Issue(`The ${importType} "${pathToCheck}" uses relative addressing that reaches outside of the component boundary. External dependencies should be referenced via a declared path`);issue.setMsgKey(context.ruleName+"_4");context.reporter.addIssue(issue,context)}}else{const importRepresentsComp=Utils.componentInfo(context,seg1);if(importRepresentsComp){if(["pack","mono-pack"].includes(importRepresentsComp?.type)){const sourceComponentForImport=Utils.componentInfo(context,`${seg1}-${seg2}`);if(!sourceComponentForImport){let looseModule=true;if(importRepresentsComp.type==="mono-pack"&&this._isMonopackModule(importRepresentsComp,pathToCheck)){looseModule=false}if(looseModule){issue=new context.Issue(`The ${importType} "${pathToCheck}" references a private API in the pack ${seg1}`);issue.setMsgKey(context.ruleName+"_3");context.reporter.addIssue(issue,context)}}else{if(sourceComponentForImport.fullName!==componentInfo.fullName){switch(sourceComponentForImport.type){case"composite":if(seg3!=="loader"&&!allowUIComponentExports&&seg3!=="types"){issue=new context.Issue(`The ${importType} "${pathToCheck}" references a private API in the component ${sourceComponentForImport.fullName}. UI components should only export a loader and no other modules`);issue.setMsgKey(context.ruleName+"_3");context.reporter.addIssue(issue,context)}break;case"resource":const moduleName=pathToCheck.slice(sourceComponentForImport.fullName.length+1);if(!sourceComponentForImport?.publicModules?.includes(moduleName)){issue=new context.Issue(`The ${importType} "${pathToCheck}" references a private API in the component ${sourceComponentForImport.fullName}. Only publicModules can be referenced from resource components`);issue.setMsgKey(context.ruleName+"_3");context.reporter.addIssue(issue,context)}else{if(sourceComponentForImport.subcomponentType==="packPrivate"&&sourceComponentForImport.pack!==componentInfo.pack){issue=new context.Issue(`The ${importType} "${pathToCheck}" references a private API in the component ${sourceComponentForImport.fullName}. The resource component ${sourceComponentForImport.fullName} is marked as private and cannot be used outside of the context of that pack`);issue.setMsgKey(context.ruleName+"_3");context.reporter.addIssue(issue,context)}}break;default:}}}}else{if(importRepresentsComp.type==="composite"&&importRepresentsComp.fullName!==componentInfo.fullName){if(seg2!=="loader"&&!allowUIComponentExports){issue=new context.Issue(`The ${importType} "${pathToCheck}" references a private API in the component ${seg1}. UI components should only export a loader and no other modules.`);issue.setMsgKey(context.ruleName+"_3");context.reporter.addIssue(issue,context)}}}}}}}};ruleDef.prototype._doesCheckComponentBoundaryCross=function(componentInfo,filepath,relativePath){const upSegmentCount=relativePath.split("/").filter(segment=>segment==="..").length;const componentSegments=componentInfo.rootFolder.split("/").length;const sourceSegments=filepath.split("/").length-1-upSegmentCount;if(componentSegments>sourceSegments){return true}return false};ruleDef.prototype._isMonopackModule=function(packInfo,importPath){return false};module.exports=ruleDef;
@@ -3,4 +3,4 @@
3
3
  * Licensed under The Universal Permissive License (UPL), Version 1.0
4
4
  * as shown at https://oss.oracle.com/licenses/upl/
5
5
  */
6
- {"jetwc-component-foldername":"0010","jetwc-component-location_1":"0011","jetwc-component-location_2":"0012","jetwc-pack-children_1":"0013","jetwc-pack-children_2":"0014","jetwc-pack-children_3":"0015","jetwc-pack-children_4":"0016","jetwc-packable-components_1":"0017","jetwc-packable-components_2":"0018","jetwc-packable-components_3":"0019","jetwc-component-dependencies_1":"0021","jetwc-component-dependencies_2":"0022","jetwc-component-dependencies_3":"0023","jetwc-component-dependencies_4":"0024","jetwc-component-dependencies_5":"0025","jetwc-prerelease-version":"0026","jetwc-prerelease-dependencies":"0027","jetwc-namespace":"0029","jetwc-vb-category_1":"0030","jetwc-vb-category_2":"0031","jetwc-jet-version_1":"0033","jetwc-jet-version_2":"0034","jetwc-absolute-jetversion":"0035","jetwc-semantic-version":"0040","jetwc-standard-files":"0041","jetwc-loader-file_1":"0044","jetwc-loader-file_2":"0045","jetwc-loader-file_3":"0046","jetwc-loader-file_4":"0047","jetwc-version-openrange_1":"0048","jetwc-version-openrange_2":"0049","jetwc-displayname_1":"0050","jetwc-displayname_2":"0051","jetwc-nls-root":"0052","jetwc-require-paths":"0053","jetwc-vb-icon_1":"0054","jetwc-vb-icon_2":"0055","jetwc-vb-icon_3":"0056","jetwc-vb-icon_4":"0057","jetwc-vb-icon_5":"0058","jetwc-vb-icon_6":"0059","jetwc-vb-icon_7":"0060","jetwc-vb-icon_8":"0061","jetwc-template-slots_1":"0062","jetwc-template-slots_2":"0063","jetwc-template-slots_3":"0064","jetwc-template-slots_4":"0065","jetwc-template-slots_5":"0066","jetwc-slots_1":"0067","jetwc-slots_2":"0068","jetwc-events_1":"0069","jetwc-events_2":"0070","jetwc-property-nesting":"0071","jetwc-nls-languages_1":"0072","jetwc-nls-languages_2":"0073","jetwc-nls-languages_3":"0074","jetwc-nls-languages_4":"0075","jetwc-event-displayname":"0076","jetwc-methods_1":"0077","jetwc-methods_2":"0078","jetwc-property-changed":"0079","jetwc-writeback-required_1":"0080","jetwc-writeback-required_2":"0081","jetwc-writeback-required_3":"0082","jetwc-writeback-required_4":"0083","jetwc-oj-register":"0084","jetwc-register-with-promises":"0085","jetwc-register-css":"0086","jetwc-deprecated-lifecycle":"0087","jetwc-aria-redefinition":"0088","jetwc-public-modules_1":"0089","jetwc-public-modules_2":"0090","jetwc-disabled-property":"0091","jetwc-reserved-property":"0092","jetwc-prerelease-pattern":"0093","jetwc-ojcss":"0094","jetwc-vb-icon_9":"0095","jetwc-component-location_3":"0096","jetwc-dynamic-slot-context":"0097","jetwc-dynamic-slots-naming":"0098","jetwc-unused-slots":"0099","jetwc-unused-events":"0100","jetwc-compjson-bp-obj":"0101","jetwc-compjson-bp-ar":"0102","jetwc-method-displayname":"0103","jetwc-slot-displayname":"0104","jetwc-component-displayname":"0105","jetwc-property-displayname":"0106","jetwc-data-property-prefix":"0107","jetwc-schema":"0108","jetwc-component-type":"0109","jetwc-subproperty-writeback":"0111","jetwc-nested-defaults":"0112","jetwc-required-subproperty":"0113","jetwc-vcomponent-jetversion_1":"0120","jetwc-vcomponent-jetversion_2":"0121","jetwc-vcomponent-version_1":"0130","jetwc-vcomponent-version_2":"0131","jetwc-vcomponent-version_3":"0132","jetwc-vcomponent-loader_1":"0140","jetwc-vcomponent-loader_2":"0141","jetwc-markdown-link_1":"0150","jetwc-markdown-link_2":"0151","jetwc-css-oj-complete":"0160","jetwc-supproperty-propagation":"0170","jetwc-css-scoping":"0180","jetwc-exchange-images_1":"0190","jetwc-exchange-images_2":"0191","jetwc-property-translatable":"0200","jetwc-status-since_1":"0210","jetwc-status-since_2":"0211","jetwc-status-since_3":"0212","jetwc-reference-npm-path":"0220","jetwc-css-pack-load-path":"0230","jetwc-well-formed-description":"0240"}
6
+ {"jetwc-component-foldername":"0010","jetwc-component-location_1":"0011","jetwc-component-location_2":"0012","jetwc-pack-children_1":"0013","jetwc-pack-children_2":"0014","jetwc-pack-children_3":"0015","jetwc-pack-children_4":"0016","jetwc-packable-components_1":"0017","jetwc-packable-components_2":"0018","jetwc-packable-components_3":"0019","jetwc-component-dependencies_1":"0021","jetwc-component-dependencies_2":"0022","jetwc-component-dependencies_3":"0023","jetwc-component-dependencies_4":"0024","jetwc-component-dependencies_5":"0025","jetwc-prerelease-version":"0026","jetwc-prerelease-dependencies":"0027","jetwc-namespace":"0029","jetwc-vb-category_1":"0030","jetwc-vb-category_2":"0031","jetwc-jet-version_1":"0033","jetwc-jet-version_2":"0034","jetwc-absolute-jetversion":"0035","jetwc-semantic-version":"0040","jetwc-standard-files":"0041","jetwc-loader-file_1":"0044","jetwc-loader-file_2":"0045","jetwc-loader-file_3":"0046","jetwc-loader-file_4":"0047","jetwc-version-openrange_1":"0048","jetwc-version-openrange_2":"0049","jetwc-displayname_1":"0050","jetwc-displayname_2":"0051","jetwc-nls-root":"0052","jetwc-require-paths":"0053","jetwc-vb-icon_1":"0054","jetwc-vb-icon_2":"0055","jetwc-vb-icon_3":"0056","jetwc-vb-icon_4":"0057","jetwc-vb-icon_5":"0058","jetwc-vb-icon_6":"0059","jetwc-vb-icon_7":"0060","jetwc-vb-icon_8":"0061","jetwc-template-slots_1":"0062","jetwc-template-slots_2":"0063","jetwc-template-slots_3":"0064","jetwc-template-slots_4":"0065","jetwc-template-slots_5":"0066","jetwc-slots_1":"0067","jetwc-slots_2":"0068","jetwc-events_1":"0069","jetwc-events_2":"0070","jetwc-property-nesting":"0071","jetwc-nls-languages_1":"0072","jetwc-nls-languages_2":"0073","jetwc-nls-languages_3":"0074","jetwc-nls-languages_4":"0075","jetwc-event-displayname":"0076","jetwc-methods_1":"0077","jetwc-methods_2":"0078","jetwc-property-changed":"0079","jetwc-writeback-required_1":"0080","jetwc-writeback-required_2":"0081","jetwc-writeback-required_3":"0082","jetwc-writeback-required_4":"0083","jetwc-oj-register":"0084","jetwc-register-with-promises":"0085","jetwc-register-css":"0086","jetwc-deprecated-lifecycle":"0087","jetwc-aria-redefinition":"0088","jetwc-public-modules_1":"0089","jetwc-public-modules_2":"0090","jetwc-disabled-property":"0091","jetwc-reserved-property":"0092","jetwc-prerelease-pattern":"0093","jetwc-ojcss":"0094","jetwc-vb-icon_9":"0095","jetwc-component-location_3":"0096","jetwc-dynamic-slot-context":"0097","jetwc-dynamic-slots-naming":"0098","jetwc-unused-slots":"0099","jetwc-unused-events":"0100","jetwc-compjson-bp-obj":"0101","jetwc-compjson-bp-ar":"0102","jetwc-method-displayname":"0103","jetwc-slot-displayname":"0104","jetwc-component-displayname":"0105","jetwc-property-displayname":"0106","jetwc-data-property-prefix":"0107","jetwc-schema":"0108","jetwc-component-type":"0109","jetwc-subproperty-writeback":"0111","jetwc-nested-defaults":"0112","jetwc-required-subproperty":"0113","jetwc-vcomponent-jetversion_1":"0120","jetwc-vcomponent-jetversion_2":"0121","jetwc-vcomponent-version_1":"0130","jetwc-vcomponent-version_2":"0131","jetwc-vcomponent-version_3":"0132","jetwc-vcomponent-loader_1":"0140","jetwc-vcomponent-loader_2":"0141","jetwc-markdown-link_1":"0150","jetwc-markdown-link_2":"0151","jetwc-css-oj-complete":"0160","jetwc-supproperty-propagation":"0170","jetwc-css-scoping":"0180","jetwc-exchange-images_1":"0190","jetwc-exchange-images_2":"0191","jetwc-property-translatable":"0200","jetwc-status-since_1":"0210","jetwc-status-since_2":"0211","jetwc-status-since_3":"0212","jetwc-reference-npm-path":"0220","jetwc-css-pack-load-path":"0230","jetwc-well-formed-description":"0240","jetwc-use-public-apis_1":"0250","jetwc-use-public-apis_2":"0251","jetwc-use-public-apis_3":"0252","jetwc-use-public-apis_4":"0253"}
@@ -3,4 +3,4 @@
3
3
  * Licensed under The Universal Permissive License (UPL), Version 1.0
4
4
  * as shown at https://oss.oracle.com/licenses/upl/
5
5
  */
6
- {"title":"Extended Audit Rules for JET Custom Component Authors","prefix":"JETWC","version":"1.29.2","rules":{"jetwc-bootstrap":{"group":"jetwc-do-not-disable","enabled":true,"severity":"info","$required":true,"filetype":["tsx","css","html","js","json","md","ts"],"amd":false,"customOpts":{"debug":false,"diagnosticFile":"jetwc-diagnostics","auditBuildOutput":false,"testMode":false}},"jetwc-component-foldername":{"group":"jetwc-structure","severity":"blocker","filetype":["json","tsx"],"amd":false},"jetwc-component-location":{"group":"jetwc-structure","severity":"blocker","filetype":["json","tsx"],"amd":false},"jetwc-pack-children":{"group":"jetwc-dependencies","severity":"blocker","filetype":["json"],"amd":false},"jetwc-packable-components":{"group":"jetwc-structure","severity":"blocker","filetype":["json"],"amd":false},"jetwc-component-dependencies":{"group":"jetwc-dependencies","severity":"blocker","filetype":["json","tsx"],"amd":false},"jetwc-prerelease-version":{"group":"jetwc-pre-release","severity":"info","filetype":["json","tsx"],"amd":false},"jetwc-prerelease-dependencies":{"group":"jetwc-pre-release","severity":"info","filetype":["json","tsx"],"amd":false},"jetwc-namespace":{"group":"jetwc-api","enabled":false,"severity":"blocker","filetype":["json","tsx"],"amd":false,"customOpts":{"namespaces":[]}},"jetwc-vb-category":{"group":"jetwc-vb","enabled":false,"severity":"minor","filetype":["json","tsx"],"amd":false,"customOpts":{"categories":[]}},"jetwc-jet-version":{"group":"jetwc-pre-release","enabled":false,"severity":"blocker","filetype":["json","tsx"],"amd":false,"customOpts":{"versionMatch":"upperLimit"}},"jetwc-absolute-jetversion":{"group":"jetwc-dependencies","enabled":true,"severity":"minor","filetype":["json","tsx"],"amd":false},"jetwc-semantic-version":{"group":"jetwc-dependencies","severity":"blocker","filetype":["json","tsx"],"amd":false},"jetwc-standard-files":{"group":"jetwc-structure","enabled":true,"severity":"info","filetype":["json","tsx"],"amd":false,"customOpts":{"files":["README.md","CHANGELOG.md"]}},"jetwc-loader-file":{"group":["jetwc-structure","jet-js"],"enabled":true,"severity":"critical","filetype":["json","js","ts","tsx"],"amd":false},"jetwc-version-openrange":{"group":"jetwc-dependencies","severity":"major","filetype":["json","tsx"],"amd":false},"jetwc-displayname":{"group":"jetwc-vb","enabled":true,"severity":"info","filetype":["json","tsx"],"amd":false,"customOpts":{"limits":{"component":{"length":30,"words":4},"property":{"length":30,"words":4},"event":{"length":30,"words":4},"slot":{"length":30,"words":4},"template":{"length":40,"words":8}}}},"jetwc-nls-root":{"group":"jetwc-nls","enabled":true,"severity":"info","filetype":["js","ts","tsx"],"amd":false},"jetwc-require-paths":{"group":"jetwc-dependencies","enabled":true,"severity":"blocker","filetype":["js","ts","tsx"],"amd":false,"customOpts":{"standardPaths":["require","exports","ojs","oj-c","knockout","hammerjs","persist","jquery","vb","preact","@opentelemetry"]}},"jetwc-vb-icon":{"group":"jetwc-vb","enabled":true,"severity":"major","filetype":["json","tsx"],"amd":false},"jetwc-template-slots":{"group":"jetwc-api","enabled":true,"severity":"major","filetype":["html","tsx"],"amd":false},"jetwc-slots":{"group":"jetwc-api","enabled":true,"severity":"major","filetype":["html","tsx"],"amd":false},"jetwc-events":{"group":"jetwc-api","enabled":true,"severity":"major","filetype":["js","ts","tsx"],"amd":false},"jetwc-property-nesting":{"group":"jetwc-api","enabled":true,"severity":"minor","filetype":["json","tsx"],"amd":false,"customOpts":{"depth":3}},"jetwc-nls-languages":{"group":"jetwc-nls","enabled":false,"severity":"major","filetype":["js","ts"],"amd":false,"customOpts":{"locales":[],"strict":false}},"jetwc-event-displayname":{"group":"jetwc-vb","enabled":true,"severity":"info","filetype":["json","tsx"],"amd":false},"jetwc-nested-defaults":{"group":"jetwc-api","enabled":true,"severity":"major","filetype":["json","tsx"],"amd":false},"jetwc-methods":{"group":"jetwc-api","enabled":true,"severity":"major","filetype":["js","ts"],"amd":false},"jetwc-property-changed":{"group":"jetwc-api","enabled":true,"severity":"minor","filetype":["js","ts"],"amd":false},"jetwc-writeback-required":{"group":"jetwc-api","enabled":true,"severity":"major","filetype":["js","ts"],"amd":false},"jetwc-oj-register":{"group":"jetwc-deprecations","enabled":true,"severity":"minor","filetype":["js","ts"],"amd":false},"jetwc-register-with-promises":{"group":"jetwc-deprecations","enabled":true,"severity":"minor","filetype":["js","ts"],"amd":false},"jetwc-register-css":{"group":"jetwc-deprecations","enabled":true,"severity":"minor","filetype":["js","ts"],"amd":false},"jetwc-deprecated-lifecycle":{"group":"jetwc-deprecations","enabled":true,"severity":"major","filetype":["js","ts"],"amd":false},"jetwc-aria-redefinition":{"group":"jetwc-api","enabled":true,"severity":"minor","filetype":["json","tsx"],"amd":false},"jetwc-public-modules":{"group":"jetwc-api","enabled":true,"severity":"major","filetype":["json"],"amd":false},"jetwc-disabled-property":{"group":"jetwc-api","enabled":true,"severity":"minor","filetype":["json"],"amd":false},"jetwc-reserved-property":{"group":"jetwc-api","enabled":true,"severity":"major","filetype":["json","tsx"],"amd":false,"customOpts":{"reserved":["slot","key","ref","children"]}},"jetwc-prerelease-pattern":{"group":"jetwc-api","enabled":true,"severity":"minor","filetype":["json","tsx"],"amd":false},"jetwc-ojcss":{"group":"jetwc-theming","enabled":true,"severity":"minor","filetype":["js","ts","tsx"],"amd":false},"jetwc-dynamic-slot-context":{"group":"jetwc-api","enabled":true,"severity":"major","filetype":["json"],"amd":false},"jetwc-dynamic-slots-naming":{"group":"jetwc-api","enabled":true,"severity":"minor","filetype":["json"],"amd":false},"jetwc-unused-slots":{"group":"jetwc-api","enabled":true,"severity":"info","filetype":["html"],"amd":false},"jetwc-unused-events":{"group":"jetwc-api","enabled":true,"severity":"info","filetype":["js","ts"],"amd":false},"jetwc-compjson-bp-obj":{"group":"jetwc-api","enabled":true,"severity":"info","filetype":["json","tsx"],"amd":false},"jetwc-compjson-bp-ar":{"group":"jetwc-api","enabled":true,"severity":"info","filetype":["json","tsx"],"amd":false},"jetwc-component-displayname":{"group":"jetwc-vb","enabled":true,"severity":"info","filetype":["json","tsx"],"amd":false},"jetwc-method-displayname":{"group":"jetwc-vb","enabled":true,"severity":"info","filetype":["json","tsx"],"amd":false},"jetwc-property-displayname":{"group":"jetwc-vb","enabled":true,"severity":"info","filetype":["json","tsx"],"amd":false},"jetwc-slot-displayname":{"group":"jetwc-vb","enabled":true,"severity":"info","filetype":["json","tsx"],"amd":false},"jetwc-data-property-prefix":{"group":"jetwc-api","enabled":true,"severity":"minor","filetype":["json","tsx"],"amd":false},"jetwc-schema":{"group":"jetwc-api","enabled":true,"severity":"blocker","filetype":["json","tsx"],"amd":false,"customOpts":{"ignoreAdditionalProperties":false}},"jetwc-component-type":{"group":"jetwc-api","enabled":true,"severity":"info","filetype":["json"],"amd":false},"jetwc-subproperty-writeback":{"group":"jetwc-api","enabled":true,"severity":"major","filetype":["html"],"amd":false},"jetwc-required-subproperty":{"group":"jetwc-api","enabled":true,"severity":"minor","filetype":["json"],"amd":false},"jetwc-vcomponent-jetversion":{"group":"jetwc-dependencies","enabled":true,"severity":"blocker","filetype":["tsx"],"amd":false},"jetwc-vcomponent-version":{"group":"jetwc-dependencies","enabled":true,"severity":"blocker","filetype":["tsx"],"amd":false},"jetwc-vcomponent-loader":{"group":"jetwc-structure","enabled":true,"severity":"blocker","filetype":["ts"],"amd":false},"jetwc-markdown-link":{"group":"jetwc-doc","enabled":true,"severity":"minor","filetype":["md"],"amd":false},"jetwc-css-oj-complete":{"group":"jetwc-css","enabled":true,"severity":"major","filetype":["css"],"amd":false},"jetwc-supproperty-propagation":{"group":"jetwc-api","enabled":true,"severity":"major","filetype":["html"],"amd":false},"jetwc-css-scoping":{"group":"jetwc-css","enabled":true,"severity":"blocker","filetype":["css"],"amd":false,"customOpts":{"allowPackScoping":true}},"jetwc-exchange-images":{"group":"jetwc-structure","enabled":true,"severity":"major","filetype":["json","tsx"],"amd":false},"jetwc-property-translatable":{"group":"jetwc-vb","enabled":false,"severity":"minor","filetype":["json","tsx"],"amd":false,"customOpts":{"translatableProperties":[],"expressionMatch":false}},"jetwc-status-since":{"group":"jetwc-api","enabled":true,"severity":"blocker","filetype":["json","tsx"],"amd":false},"jetwc-reference-npm-path":{"group":"jetwc-structure","enabled":true,"severity":"major","filetype":["json"],"amd":false},"jetwc-css-pack-load-path":{"group":"jetwc-dependencies","enabled":true,"severity":"blocker","filetype":["js","ts","tsx"],"amd":false},"jetwc-well-formed-description":{"group":"jetwc-api","enabled":false,"severity":"info","filetype":["json","tsx"],"amd":false}}}
6
+ {"title":"Extended Audit Rules for JET Custom Component Authors","prefix":"JETWC","version":"1.31.0","rules":{"jetwc-bootstrap":{"group":"jetwc-do-not-disable","enabled":true,"severity":"info","$required":true,"filetype":["tsx","css","html","js","json","md","ts"],"amd":false,"customOpts":{"debug":false,"diagnosticFile":"jetwc-diagnostics","auditBuildOutput":false,"testMode":false}},"jetwc-component-foldername":{"group":"jetwc-structure","severity":"blocker","filetype":["json","tsx"],"amd":false},"jetwc-component-location":{"group":"jetwc-structure","severity":"blocker","filetype":["json","tsx"],"amd":false},"jetwc-pack-children":{"group":"jetwc-dependencies","severity":"blocker","filetype":["json"],"amd":false},"jetwc-packable-components":{"group":"jetwc-structure","severity":"blocker","filetype":["json"],"amd":false},"jetwc-component-dependencies":{"group":"jetwc-dependencies","severity":"blocker","filetype":["json","tsx"],"amd":false},"jetwc-prerelease-version":{"group":"jetwc-pre-release","severity":"info","filetype":["json","tsx"],"amd":false},"jetwc-prerelease-dependencies":{"group":"jetwc-pre-release","severity":"info","filetype":["json","tsx"],"amd":false},"jetwc-namespace":{"group":"jetwc-api","enabled":false,"severity":"blocker","filetype":["json","tsx"],"amd":false,"customOpts":{"namespaces":[]}},"jetwc-vb-category":{"group":"jetwc-vb","enabled":false,"severity":"minor","filetype":["json","tsx"],"amd":false,"customOpts":{"categories":[]}},"jetwc-jet-version":{"group":"jetwc-pre-release","enabled":false,"severity":"blocker","filetype":["json","tsx"],"amd":false,"customOpts":{"versionMatch":"upperLimit"}},"jetwc-absolute-jetversion":{"group":"jetwc-dependencies","enabled":true,"severity":"minor","filetype":["json","tsx"],"amd":false},"jetwc-semantic-version":{"group":"jetwc-dependencies","severity":"blocker","filetype":["json","tsx"],"amd":false},"jetwc-standard-files":{"group":"jetwc-structure","enabled":true,"severity":"info","filetype":["json","tsx"],"amd":false,"customOpts":{"files":["README.md","CHANGELOG.md"]}},"jetwc-loader-file":{"group":["jetwc-structure","jet-js"],"enabled":true,"severity":"critical","filetype":["json","js","ts","tsx"],"amd":false},"jetwc-version-openrange":{"group":"jetwc-dependencies","severity":"major","filetype":["json","tsx"],"amd":false},"jetwc-displayname":{"group":"jetwc-vb","enabled":true,"severity":"info","filetype":["json","tsx"],"amd":false,"customOpts":{"limits":{"component":{"length":30,"words":4},"property":{"length":30,"words":4},"event":{"length":30,"words":4},"slot":{"length":30,"words":4},"template":{"length":40,"words":8}}}},"jetwc-nls-root":{"group":"jetwc-nls","enabled":true,"severity":"info","filetype":["js","ts","tsx"],"amd":false},"jetwc-require-paths":{"group":"jetwc-dependencies","enabled":true,"severity":"blocker","filetype":["js","ts","tsx"],"amd":false,"customOpts":{"standardPaths":["require","exports","ojs","oj-c","knockout","hammerjs","persist","jquery","vb","preact","@opentelemetry"]}},"jetwc-vb-icon":{"group":"jetwc-vb","enabled":true,"severity":"major","filetype":["json","tsx"],"amd":false},"jetwc-template-slots":{"group":"jetwc-api","enabled":true,"severity":"major","filetype":["html","tsx"],"amd":false},"jetwc-slots":{"group":"jetwc-api","enabled":true,"severity":"major","filetype":["html","tsx"],"amd":false},"jetwc-events":{"group":"jetwc-api","enabled":true,"severity":"major","filetype":["js","ts","tsx"],"amd":false},"jetwc-property-nesting":{"group":"jetwc-api","enabled":true,"severity":"minor","filetype":["json","tsx"],"amd":false,"customOpts":{"depth":3}},"jetwc-nls-languages":{"group":"jetwc-nls","enabled":false,"severity":"major","filetype":["js","ts"],"amd":false,"customOpts":{"locales":[],"strict":false}},"jetwc-event-displayname":{"group":"jetwc-vb","enabled":true,"severity":"info","filetype":["json","tsx"],"amd":false},"jetwc-nested-defaults":{"group":"jetwc-api","enabled":true,"severity":"major","filetype":["json","tsx"],"amd":false},"jetwc-methods":{"group":"jetwc-api","enabled":true,"severity":"major","filetype":["js","ts"],"amd":false},"jetwc-property-changed":{"group":"jetwc-api","enabled":true,"severity":"minor","filetype":["js","ts"],"amd":false},"jetwc-writeback-required":{"group":"jetwc-api","enabled":true,"severity":"major","filetype":["js","ts"],"amd":false},"jetwc-oj-register":{"group":"jetwc-deprecations","enabled":true,"severity":"minor","filetype":["js","ts"],"amd":false},"jetwc-register-with-promises":{"group":"jetwc-deprecations","enabled":true,"severity":"minor","filetype":["js","ts"],"amd":false},"jetwc-register-css":{"group":"jetwc-deprecations","enabled":true,"severity":"minor","filetype":["js","ts"],"amd":false},"jetwc-deprecated-lifecycle":{"group":"jetwc-deprecations","enabled":true,"severity":"major","filetype":["js","ts"],"amd":false},"jetwc-aria-redefinition":{"group":"jetwc-api","enabled":true,"severity":"minor","filetype":["json","tsx"],"amd":false},"jetwc-public-modules":{"group":"jetwc-api","enabled":true,"severity":"major","filetype":["json"],"amd":false},"jetwc-disabled-property":{"group":"jetwc-api","enabled":true,"severity":"minor","filetype":["json"],"amd":false},"jetwc-reserved-property":{"group":"jetwc-api","enabled":true,"severity":"major","filetype":["json","tsx"],"amd":false,"customOpts":{"reserved":["slot","key","ref","children"]}},"jetwc-prerelease-pattern":{"group":"jetwc-api","enabled":true,"severity":"minor","filetype":["json","tsx"],"amd":false},"jetwc-ojcss":{"group":"jetwc-theming","enabled":true,"severity":"minor","filetype":["js","ts","tsx"],"amd":false},"jetwc-dynamic-slot-context":{"group":"jetwc-api","enabled":true,"severity":"major","filetype":["json"],"amd":false},"jetwc-dynamic-slots-naming":{"group":"jetwc-api","enabled":true,"severity":"minor","filetype":["json"],"amd":false},"jetwc-unused-slots":{"group":"jetwc-api","enabled":true,"severity":"info","filetype":["html"],"amd":false},"jetwc-unused-events":{"group":"jetwc-api","enabled":true,"severity":"info","filetype":["js","ts"],"amd":false},"jetwc-compjson-bp-obj":{"group":"jetwc-api","enabled":true,"severity":"info","filetype":["json","tsx"],"amd":false},"jetwc-compjson-bp-ar":{"group":"jetwc-api","enabled":true,"severity":"info","filetype":["json","tsx"],"amd":false},"jetwc-component-displayname":{"group":"jetwc-vb","enabled":true,"severity":"info","filetype":["json","tsx"],"amd":false},"jetwc-method-displayname":{"group":"jetwc-vb","enabled":true,"severity":"info","filetype":["json","tsx"],"amd":false},"jetwc-property-displayname":{"group":"jetwc-vb","enabled":true,"severity":"info","filetype":["json","tsx"],"amd":false},"jetwc-slot-displayname":{"group":"jetwc-vb","enabled":true,"severity":"info","filetype":["json","tsx"],"amd":false},"jetwc-data-property-prefix":{"group":"jetwc-api","enabled":true,"severity":"minor","filetype":["json","tsx"],"amd":false},"jetwc-schema":{"group":"jetwc-api","enabled":true,"severity":"blocker","filetype":["json","tsx"],"amd":false,"customOpts":{"ignoreAdditionalProperties":false}},"jetwc-component-type":{"group":"jetwc-api","enabled":true,"severity":"info","filetype":["json"],"amd":false},"jetwc-subproperty-writeback":{"group":"jetwc-api","enabled":true,"severity":"major","filetype":["html"],"amd":false},"jetwc-required-subproperty":{"group":"jetwc-api","enabled":true,"severity":"minor","filetype":["json"],"amd":false},"jetwc-vcomponent-jetversion":{"group":"jetwc-dependencies","enabled":true,"severity":"blocker","filetype":["tsx"],"amd":false},"jetwc-vcomponent-version":{"group":"jetwc-dependencies","enabled":true,"severity":"blocker","filetype":["tsx"],"amd":false},"jetwc-vcomponent-loader":{"group":"jetwc-structure","enabled":true,"severity":"blocker","filetype":["ts"],"amd":false},"jetwc-markdown-link":{"group":"jetwc-doc","enabled":true,"severity":"minor","filetype":["md"],"amd":false},"jetwc-css-oj-complete":{"group":"jetwc-css","enabled":true,"severity":"major","filetype":["css"],"amd":false},"jetwc-supproperty-propagation":{"group":"jetwc-api","enabled":true,"severity":"major","filetype":["html"],"amd":false},"jetwc-css-scoping":{"group":"jetwc-css","enabled":true,"severity":"blocker","filetype":["css"],"amd":false,"customOpts":{"allowPackScoping":true}},"jetwc-exchange-images":{"group":"jetwc-structure","enabled":true,"severity":"major","filetype":["json","tsx"],"amd":false},"jetwc-property-translatable":{"group":"jetwc-vb","enabled":false,"severity":"minor","filetype":["json","tsx"],"amd":false,"customOpts":{"translatableProperties":[],"expressionMatch":false}},"jetwc-status-since":{"group":"jetwc-api","enabled":true,"severity":"blocker","filetype":["json","tsx"],"amd":false},"jetwc-reference-npm-path":{"group":"jetwc-structure","enabled":true,"severity":"major","filetype":["json"],"amd":false},"jetwc-css-pack-load-path":{"group":"jetwc-dependencies","enabled":true,"severity":"blocker","filetype":["js","ts","tsx"],"amd":false},"jetwc-well-formed-description":{"group":"jetwc-api","enabled":false,"severity":"info","filetype":["json","tsx"],"amd":false},"jetwc-use-public-apis":{"group":"jetwc-api","enabled":true,"severity":"blocker","filetype":["html","tsx","ts","js"],"amd":false,"customOpts":{"allowUIComponentExports":false}}}}
@@ -3,4 +3,4 @@
3
3
  * Licensed under The Universal Permissive License (UPL), Version 1.0
4
4
  * as shown at https://oss.oracle.com/licenses/upl/
5
5
  */
6
- const path=require("path");const Utils=function(){this.rootPoint=this.toJAFPath(path.resolve(".")).length+1;this.isWindows=path.sep!=="/";this.noJSWarnDone=false};Utils.prototype.getKeyPathInfoForRulepack=function(context,auditBase){const paths={isBuiltOutput:false,componentRootFolder:null,exchangeCacheFolder:null,generalSourceRoot:"src",jsSource:null,tsSource:null,base:null};let jetConfig=context.ojetConfig;if(!jetConfig&&auditBase){const remoteConfig=path.join(auditBase,"oraclejetconfig.json");if(context.utils.fsUtils.pathExistsSync(remoteConfig)){jetConfig=context.utils.fsUtils.readJsonSync(remoteConfig)}}let jsDir="js";let tsDir="ts";paths.isBuiltOutput=context.rulePack.getRuleCustomOption("auditBuildOutput");paths.base=path.resolve(auditBase);if(jetConfig){jsDir=jetConfig.paths.source.javascript||"js";tsDir=jetConfig.paths.source.typescript||"ts";paths.exchangeCacheFolder=jetConfig.paths.source.exchangeComponents||"jet_components";paths.componentRootFolder=jetConfig.paths.source.components||"jet-composites";if(!paths.isBuiltOutput){paths.generalSourceRoot=jetConfig.paths.source.common||"src"}else{paths.generalSourceRoot=jetConfig.paths.staging.web||"web"}}paths.jsSource=this.toJAFPath(path.join(paths.generalSourceRoot,jsDir));if(!paths.isBuiltOutput){paths.tsSource=this.toJAFPath(path.join(paths.generalSourceRoot,tsDir))}return paths};Utils.prototype.matchComponentPath=function(context,checkPathBase,recursion){let checkPath=this.toJAFPath(checkPathBase);let componentMatch;if(context.rulePack.getExtension()&&context.rulePack.getExtension().hasOwnProperty("allAuditableFilePaths")){if(context.rulePack.getExtension().allAuditableFilePaths.has(checkPath)){const x=context.rulePack.getExtension().allAuditableFilePaths;componentMatch=context.rulePack.getExtension().allAuditableFilePaths.get(checkPath)}else if(checkPath.includes(context.rulePack.getExtension().componentHome)){if(context.rulePack.getExtension().auditableComponentPaths.has(checkPath)){componentMatch=context.rulePack.getExtension().auditableComponentPaths.get(checkPath)}else{const parentPath=path.resolve(checkPathBase,".."+path.sep);componentMatch=this.matchComponentPath(context,parentPath,true)}if(!recursion){context.rulePack.getExtension().allAuditableFilePaths.set(checkPath,componentMatch)}}else{context.rulePack.getExtension().allAuditableFilePaths.set(checkPath)}}else{this.reportMissingBootstrapInfo(context,"allAuditableFilePaths")}return componentMatch};Utils.prototype.reportMissingBootstrapInfo=function(context,checkTopic){const msg=context.utils.msgLib;const extnContext=context.rulePack.getExtension();if(!extnContext||!extnContext.bootStrap){const bootstrapRule=context.rulePack.getPrefix().toLowerCase()+"-bootstrap";if(context.rulePack.isRuleDisabled(bootstrapRule)){msg.error(`You must enable the ${bootstrapRule} rule to run in order to carry out a full component set audit`)}else{msg.error(`Apparent bootstrap error, no information cached for ${checkTopic}`)}context.rulePack.setExtension({...extnContext,bootStrap:true})}};Utils.prototype.componentInfo=function(context,componentName){if(context.rulePack.getExtension()&&context.rulePack.getExtension().hasOwnProperty("allComponents")){return context.rulePack.getExtension().allComponents.get(componentName)}else{this.reportMissingBootstrapInfo(context,"allComponents")}return};Utils.prototype.getComponentFullName=function(metadata){return metadata.pack?`${metadata.pack}-${metadata.name}`:metadata.name};Utils.prototype.getComponentType=function(metadata){return metadata.type?metadata.type:"composite"};Utils.prototype.flattenComponentProperties=function(metaDef,valueAttribute,filterCondition,parentPath){let flattenedProps=[];if(metaDef.hasOwnProperty("properties")){const propArray=Object.keys(metaDef.properties);propArray.forEach(propertyName=>{const propertyMetadata=metaDef.properties[propertyName];let key;if(!parentPath){key=propertyName}else{key=parentPath+"."+propertyName}if(!filterCondition||filterCondition(propertyName,propertyMetadata)){flattenedProps.push({key:key,value:metaDef.properties[propertyName][valueAttribute]})}const subPropsArray=this.flattenComponentProperties(metaDef.properties[propertyName],valueAttribute,filterCondition,key);flattenedProps=flattenedProps.concat(subPropsArray)})}return flattenedProps};Utils.prototype.setupFileMethodMapping=function(context,node){const NT=context.utils.AstUtils.getNodeTypes();const fileName=context.filepath;const withinComponent=this.matchComponentPath(context,path.dirname(fileName));if(withinComponent&&node.parent){if(node.parent.type===NT.ASSIGNMENT_EXPR&&node.parent.operator==="="){if(node.parent.left&&node.parent.left.property&&node.parent.left.property.type==NT.IDENTIFIER&&node.parent.left.property.name){const methodDef={name:node.parent.left.property.name,parameters:node.params?node.params.length:0};this.cacheFileMethod(context,fileName,methodDef)}}else if(node.parent.type===NT.METH_DEF&&node.parent.kind==="method"){if(node.parent.key&&node.parent.key.name){const methodDef={name:node.parent.key.name,parameters:node.params?node.params.length:0};this.cacheFileMethod(context,fileName,methodDef)}}else if(node.parent.type===NT.CLASS_PROP||node.parent.type===NT.PROPERTY_DEF){if(node.parent.key&&node.parent.key.name){const methodDef={name:node.parent.key.name,parameters:node.params?node.params.length:0};this.cacheFileMethod(context,fileName,methodDef)}}}};Utils.prototype.setupFileMethodMappingFromMethodDefintion=function(context,node){const NT=context.utils.AstUtils.getNodeTypes();const fileName=context.filepath;const withinComponent=this.matchComponentPath(context,path.dirname(fileName));if(withinComponent){const methodDef={parameters:0};if(node.key&&node.key.type===NT.IDENTIFIER){methodDef.name=node.key.name;if(node.value&&node.value.type===NT.FUNC_EXPR&&node.value.params){methodDef.parameters=node.value.params.length}}if(methodDef.name){this.cacheFileMethod(context,fileName,methodDef)}}};Utils.prototype.cacheFileMethod=function(context,filePath,methodDef){if(!context.rulePack.getExtension().allDefinedFileMethods){context.rulePack.getExtension().allDefinedFileMethods=new Map}if(!context.rulePack.getExtension().allDefinedFileMethods.has(filePath)){context.rulePack.getExtension().allDefinedFileMethods.set(filePath,{methods:new Map})}if(!context.rulePack.getExtension().allDefinedFileMethods.get(filePath).methods.has(methodDef.name)){context.rulePack.getExtension().allDefinedFileMethods.get(filePath).methods.set(methodDef.name,methodDef)}};Utils.prototype.deriveViewModels=function(context,node){const fileName=context.filepath;if(context.rulePack.getExtension()&&context.rulePack.getExtension().hasOwnProperty("allComponents")){const withinComponent=this.matchComponentPath(context,path.dirname(fileName));const componentInfo=context.rulePack.getExtension().allComponents.get(withinComponent);if(withinComponent&&componentInfo&&componentInfo.type==="composite"&&!componentInfo.viewModel.resolved){const targetLoaderExt=componentInfo.language==="tsx"?".ts":`.${componentInfo.language}`;if(path.basename(fileName,targetLoaderExt)==="loader"){switch(componentInfo.language){case"js":case"ts":const registerInfo=this.getLoaderRegisterInfo(context,node);if(registerInfo){const vmRelativeFilePath=this._mapVMToImpl(context,node,registerInfo.viewModel,componentInfo.language==="ts");if(vmRelativeFilePath){const fullVMPath=this._expandPathInContext(context,withinComponent,vmRelativeFilePath);if(fullVMPath){componentInfo.viewModel={path:this.toJAFPath(path.resolve(".",`${fullVMPath}.${componentInfo.language}`)),resolved:true,skip:false}}}}break;case"tsx":break}}}}else{this.reportMissingBootstrapInfo(context,"allComponents")}};Utils.prototype.getLoaderRegisterInfo=function(context,node){const msg=context.utils.msgLib;const NT=context.utils.AstUtils.getNodeTypes();let registerInfo;if(node.callee.type=NT.MEMBER_EXPR&&node.callee.object&&node.arguments&&node.arguments.length>0){let isRegister=false;let oldStyle=false;switch(node.callee.object.type){case NT.IDENTIFIER:if(node.callee.object.name==="Composite"){isRegister=this._astPropertyIdentifierName(context,node.callee,"register")}break;case NT.MEMBER_EXPR:if(node.callee.property&&node.callee.property.type===NT.IDENTIFIER&&node.callee.property.name==="register"){if(this._astPropertyIdentifierName(context,node.callee.object,"Composite")){isRegister=node.callee.object.object&&node.callee.object.object.type===NT.IDENTIFIER&&node.callee.object.object.name==="oj";if(isRegister){oldStyle=true}}}break}if(isRegister){registerInfo={oldStyle:oldStyle};const tagArg=node.arguments[0];const def=node.arguments[1];registerInfo.tag=tagArg.type===NT.LITERAL?tagArg.value:"?";if(def.type===NT.OBJ_EXPR){vmProp=def.properties.filter(prop=>prop.key.name==="viewModel");if(vmProp.length===1){switch(vmProp[0].value.type){case NT.IDENTIFIER:registerInfo.viewModel=vmProp[0].value.name;break;case NT.OBJ_EXPR:if(vmProp[0].value.properties&&vmProp[0].value.properties[0]&&vmProp[0].value.properties[0].key.name==="inline"){registerInfo.viewModel=vmProp[0].value.properties[0].value.name;registerInfo.usesPromises=true}break;case NT.MEMBER_EXPR:if(vmProp[0].value.property&&vmProp[0].value.property.type===NT.IDENTIFIER){registerInfo.viewModel=vmProp[0].value.object.name;registerInfo.transpiled=true}break;case"TSAsExpression":if(vmProp[0].value.expression&&vmProp[0].value.expression.type===NT.IDENTIFIER){registerInfo.viewModel=vmProp[0].value.expression.name}else if(vmProp[0].value.expression&&vmProp[0].value.expression.type===NT.AS_EXPR){registerInfo.viewModel=vmProp[0].value.expression.expression.name;msg.msg(`WARNING: Component loader file ${context.filepath} attempts to redefine the composite.register viewModel interface`)}break}}const cssCheck=def.properties.filter(prop=>prop.key.name==="css");if(cssCheck.length>0){registerInfo.registerCSS=true}}}}return registerInfo};Utils.prototype._astPropertyIdentifierName=function(context,node,checkName){const NT=context.utils.AstUtils.getNodeTypes();return node&&node.property&&node.property.type===NT.IDENTIFIER&&node.property.name===checkName};Utils.prototype._mapVMToImpl=function(context,node,vmName,useImports){let vmPathDef;if(vmName){let rootNode=node;if(useImports){vmPathDef=this._getImportPath(context,rootNode,vmName)}else{vmPathDef=this._getDefineStatementPath(context,rootNode,vmName);if(!vmPathDef){vmPathDef=this._mapToRequireAssignment(context,node,vmName)}}}return vmPathDef};Utils.prototype._mapToRequireAssignment=function(context,node,vmName){const NT=context.utils.AstUtils.getNodeTypes();let requirePath;const vmDeclNode=this._locateDeclaration(context,node,vmName);if(vmDeclNode.type===NT.CALL_EXPR&&vmDeclNode.callee.type===NT.IDENTIFIER&&vmDeclNode.callee.name==="require"){if(vmDeclNode.arguments&&vmDeclNode.arguments.length===1&&vmDeclNode.arguments[0].type===NT.LITERAL){requirePath=vmDeclNode.arguments[0].value}}return requirePath};Utils.prototype._getImportPath=function(context,node,importAs){const NT=context.utils.AstUtils.getNodeTypes();const bodyNodeArray=context.utils.AstUtils.getBody();let definePath;for(let i=0;i<bodyNodeArray.length;i++){const testNode=bodyNodeArray[i];switch(testNode.type){case"ImportDeclaration":if(testNode.specifiers&&Array.isArray(testNode.specifiers)&&testNode.specifiers.length===1&&(testNode.specifiers[0].type===NT.IMPORT_DEF_SPECIFIER||testNode.specifiers[0].type===NT.IMPORT_SPECIFIER)&&testNode.specifiers[0].local&&testNode.specifiers[0].local.name===importAs){definePath=testNode.source.value}break;case"TSImportEqualsDeclaration":if(testNode.id&&testNode.id.type===NT.IDENTIFIER&&testNode.id.name===importAs&&testNode.moduleReference&&testNode.moduleReference.type===NT.EXTERN_MOD_REF&&testNode.moduleReference.expression&&testNode.moduleReference.expression.type===NT.LITERAL){definePath=testNode.moduleReference.expression.value}break}if(definePath){;break}}return definePath};Utils.prototype._getDefineStatementPath=function(context,node,defineParam){const NT=context.utils.AstUtils.getNodeTypes();let checkNode=node.parent;let definePath;while(checkNode){if(checkNode.type===NT.CALL_EXPR&&checkNode.callee.name==="define"){definePath=context.utils.AstUtils.parseDefine(checkNode)[defineParam]}checkNode=checkNode.parent}return definePath};Utils.prototype._expandPathInContext=function(context,componentName,requirePath){let targetPath=requirePath;const parsePluginParts=requirePath.split("!");if(parsePluginParts.length>1){targetPath=parsePluginParts[1]}let pathParts=targetPath.split("/");const decodeRoot=pathParts[0];if(decodeRoot==="."){pathParts[0]=this.rootPathForComponent(context,componentName)}else{const remotePart=this.rootPathForComponent(context,decodeRoot);if(!remotePart){pathParts=[]}else{pathParts[0]=remotePart}}return pathParts.join("/")};Utils.prototype.rootPathForComponent=function(context,componentName){if(context.rulePack.getExtension().allComponents.has(componentName)){return context.rulePack.getExtension().allComponents.get(componentName).rootFolder}};Utils.prototype.getVMMethodsForLocalComposite=function(context,component){let vmMethods;const msg=context.utils.msgLib;const opts=context.rulePack.getRuleCustomOptions();if(component.local&&component.type==="composite"){if(!component.viewModel.skip){if(!component.viewModel.resolved&&!component.viewModel.warned){if(!opts.testMode){msg.msg(`Warning: unable to derive the correct viewModel implementation for component ${component.fullName}, either your audit run does not include .js/.ts files, or you may need to set 'extension.audit.jetwc.viewModel' in the metadata to provide a hint`)}component.viewModel.warned=true}else{const rpState=context.rulePack.getExtension();if(rpState.allDefinedFileMethods&&rpState.allDefinedFileMethods.size>0){const vmMethodDef=rpState.allDefinedFileMethods.get(component.viewModel.path);if(vmMethodDef){vmMethods=vmMethodDef.methods}}else{if(!this.noJSWarnDone){msg.msg("Error: No JavaScript / TypeScript files have been processed. You need to ensure that your audit fileset includes .js, .ts, html and .json files to enable all audits in this rule-set. Use the ojaf --dryrun command to determine what files are covered by the audit");this.noJSWarnDone=true}}}}}return vmMethods};Utils.prototype.decomposeAssignment=function(auditContext,assignmentNode){const NT=auditContext.utils.AstUtils.getNodeTypes();const breakdown=[];this._walkAssignmentNodes(auditContext,assignmentNode.left,breakdown);if(!breakdown.includes("this")){const parentAssignment=breakdown[breakdown.length-1];const initialAssignmentNode=this._locateDeclaration(auditContext,assignmentNode,parentAssignment);if(initialAssignmentNode){if(initialAssignmentNode==="<parameter>"){breakdown.push("<parameter>")}else if(initialAssignmentNode.type===NT.THIS_EXPR){breakdown.push("this")}else if(initialAssignmentNode.type===NT.IDENTIFIER){breakdown.push(initialAssignmentNode.name);const indirectAssignmentNode=this._locateDeclaration(auditContext,assignmentNode,initialAssignmentNode.name);if(indirectAssignmentNode==="<parameter>"){breakdown.push("<parameter>")}else if(indirectAssignmentNode.type===NT.THIS_EXPR){breakdown.push("this")}}}}return breakdown};Utils.prototype._walkAssignmentNodes=function(context,node,accumulator){const NT=context.utils.AstUtils.getNodeTypes();switch(node.type){case NT.MEMBER_EXPR:accumulator.push(node.property.name);if(node.object){this._walkAssignmentNodes(context,node.object,accumulator)}break;case NT.IDENTIFIER:accumulator.push(node.name);break;case NT.THIS_EXPR:accumulator.push("this");break}};Utils.prototype._locateDeclaration=function(context,node,searchVariable){const NT=context.utils.AstUtils.getNodeTypes();let initialAssignment;let workingNode=node;while(!initialAssignment){if(workingNode.body&&workingNode.body.length>0){workingNode.body.forEach(bodyNode=>{if(bodyNode.type===NT.VAR_DECLARATION){bodyNode.declarations.forEach(declNode=>{if(declNode.id.type===NT.IDENTIFIER&&declNode.id.name===searchVariable){initialAssignment=declNode.init}})}})}else if(workingNode.params&&workingNode.params.length>0){workingNode.params.forEach(paramNode=>{if(paramNode.name===searchVariable){initialAssignment="<parameter>"}})}if(!workingNode.parent){break}else{workingNode=workingNode.parent}}return initialAssignment};Utils.prototype.extractComponentInfoFromJSONFile=function(auditContext,componentFolder,fileName,isLocal,fromPrecompile){const msg=auditContext.utils.msgLib;let componentInfo={};const mdFile=`${componentFolder}/${fileName}`;const compMetadata=auditContext.utils.fsUtils.readJsonSync(mdFile);if(compMetadata!==null){return this.extractComponentInfoFromMetadata(auditContext,compMetadata,componentFolder,isLocal,fromPrecompile)}else{msg.error(`Invalid JSON in component metadata ${mdFile}, component ignored`)}return};Utils.prototype.extractComponentInfoFromMetadata=function(auditContext,compMetadata,componentFolder,isLocal,fromPrecompile){const msg=auditContext.utils.msgLib;let componentInfo={};componentInfo.name=compMetadata.name;componentInfo.pack=compMetadata.pack;if(fromPrecompile&&compMetadata.pack){if(compMetadata.name.startsWith(`${compMetadata.pack}-`)){componentInfo.name=compMetadata.name.substring(compMetadata.pack.length+1)}}componentInfo.fullName=componentInfo.pack?`${componentInfo.pack}-${componentInfo.name}`:componentInfo.name;componentInfo.displayName=compMetadata.displayName;componentInfo.description=compMetadata.description;componentInfo.version=compMetadata.version;componentInfo.jetVersion=compMetadata.jetVersion;componentInfo.license=compMetadata.license;componentInfo.extension=compMetadata.extension;if(compMetadata.icon){componentInfo.icon=compMetadata.icon}componentInfo.type=compMetadata.type?compMetadata.type:"composite";componentInfo.subcomponentType=compMetadata.subcomponentType;componentInfo.local=isLocal;componentInfo.rootFolder=this.toJAFPath(componentFolder);componentInfo.requirePaths=new Set;switch(componentInfo.type){case"reference":if(compMetadata.extension&&compMetadata.extension.oracle&&compMetadata.extension.oracle.businessApprovals){componentInfo.ba=compMetadata.extension.oracle.businessApprovals}if(compMetadata.paths&&compMetadata.paths.name){componentInfo.requirePaths.add(compMetadata.paths.name)}else{const extractPathSegments=compMetadata.package.split("/");if(extractPathSegments.length>1){componentInfo.requirePaths.add(extractPathSegments[1])}else{componentInfo.requirePaths.add(extractPathSegments[0])}}break;case"composite":if(compMetadata.styleClasses){componentInfo.styleClasses=compMetadata.styleClasses}if(compMetadata.styleVariables){componentInfo.styleVariables=compMetadata.styleVariables}if(compMetadata.slots){componentInfo.slots=compMetadata.slots}if(compMetadata.properties){componentInfo.properties=compMetadata.properties}if(compMetadata.events){componentInfo.events=compMetadata.events}if(compMetadata.methods&&Object.keys(compMetadata.methods).length>0){componentInfo.methods=compMetadata.methods}componentInfo.viewModel={resolved:false};if(compMetadata&&compMetadata.extension&&compMetadata.extension.audit&&compMetadata.extension.audit.jetwc&&compMetadata.extension.audit.jetwc.hasOwnProperty("viewModel")){const overrideVM=compMetadata.extension.audit.jetwc.viewModel;if(overrideVM){componentInfo.viewModel={path:this.toJAFPath(path.resolve(".",componentInfo.rootFolder,overrideVM)),resolved:true,skip:false}}else{componentInfo.viewModel={skip:true}}}case"resource":componentInfo.requirePaths.add(".");if(compMetadata.pack){componentInfo.requirePaths.add(`${componentInfo.pack}/${componentInfo.name}`)}else{componentInfo.requirePaths.add(componentInfo.name)}if(compMetadata.dependencies){componentInfo.dependencies=[];Object.keys(compMetadata.dependencies).forEach(depname=>{componentInfo.dependencies.push({name:depname,range:compMetadata.dependencies[depname]})})}break}return componentInfo};Utils.prototype.diagnosticReplacer=function(key,value){if(value instanceof Map){return Array.from(value).map(([vKey,vValue])=>{return{[vKey]:vValue?vValue:""}})}if(value instanceof Set){return Array.from(value)}return value};Utils.prototype.toJAFPath=function(sourcePath){if(sourcePath&&this.isWindows){return sourcePath.replace(/\\\\|\\/g,"/")}return sourcePath};Utils.prototype.toNativePath=function(sourcePath){if(sourcePath&&this.isWindows){return sourcePath.replace(/\//g,"\\")}return sourcePath};Utils.prototype.getDirectoryName=function(filePath){return path.dirname(filePath)};Utils.prototype.shouldIgnoreCheck=function(context,auditName,componentName,scope,target){let ignore=false;const checkComponentDef=context.rulePack.getExtension().allComponents.get(componentName);if(checkComponentDef){let targetDef;if(scope&&checkComponentDef[scope]){if(target.includes(".")&&scope==="properties"){targetDef=this.getPropertyAttributeFromPath(context,componentName,target)}else{targetDef=checkComponentDef[scope][target==="__default__"?"":target]}}else{targetDef=checkComponentDef}if(targetDef&&targetDef.extension&&targetDef.extension.hasOwnProperty("audit")&&targetDef.extension.audit.hasOwnProperty("ignore")){const ignoreArray=targetDef.extension.audit.ignore;ignore=ignoreArray.includes(auditName)}}return ignore};Utils.prototype.getPropertyAttributeFromPath=function(context,componentName,targetPath,attribute){const checkComponentDef=context.rulePack.getExtension().allComponents.get(componentName);let targetDef;if(checkComponentDef&&checkComponentDef.properties){if(targetPath.includes(".")){const propPath=targetPath.split(".");targetDef=checkComponentDef.properties[propPath[0]];for(let i=1;i<propPath.length;i++){targetDef=targetDef.properties[propPath[i]]}}else{targetDef=checkComponentDef.properties[targetPath]}}if(attribute){return targetDef[attribute]}else{return targetDef}};Utils.prototype.detectComponentSourceType=function(context,componentPathRoot,isVComponent){let componentImplType;if(isVComponent){componentImplType="tsx"}else{const{fsUtils}=context.utils;if(fsUtils.fileExistsSync(`${componentPathRoot}/loader.js`)){componentImplType="js"}else if(fsUtils.fileExistsSync(path.join(componentPathRoot,"loader.ts"))){componentImplType="ts"}else{const pathSegs=componentPathRoot.toLowerCase().split("/");if(pathSegs.includes("js")){componentImplType="js"}else{componentImplType="ts"}}}return componentImplType};Utils.prototype.safeSetExtension=function(context,extnValue){let existingContext=context.rulePack.getExtension();if(!existingContext){existingContext={}}const newContext={...existingContext,...extnValue};context.rulePack.setExtension(newContext)};Utils.prototype.disableRulePack=function(context){const rulesInPack=context.rulePack.getEnabledRuleList();rulesInPack.forEach(rule=>{context.rulePack.disableRule(rule)})};Utils.prototype.isMonoPackMember=function(context,metadata){let mpMember=false;const owningPack=metadata.pack;if(owningPack){const packInfo=this.componentInfo(context,owningPack);if(packInfo&&packInfo.type==="mono-pack"){mpMember=true}}return mpMember};Utils.prototype.cloneObject=function(o){return JSON.parse(JSON.stringify(o))};module.exports=new Utils;
6
+ const path=require("path");const Utils=function(){this.rootPoint=this.toJAFPath(path.resolve(".")).length+1;this.isWindows=path.sep!=="/";this.noJSWarnDone=false};Utils.prototype.getKeyPathInfoForRulepack=function(context,auditBase){const paths={isBuiltOutput:false,componentRootFolder:null,exchangeCacheFolder:null,generalSourceRoot:"src",jsSource:null,tsSource:null,base:null};let jetConfig=context.ojetConfig;if(!jetConfig&&auditBase){const remoteConfig=path.join(auditBase,"oraclejetconfig.json");if(context.utils.fsUtils.pathExistsSync(remoteConfig)){jetConfig=context.utils.fsUtils.readJsonSync(remoteConfig)}}let jsDir="js";let tsDir="ts";paths.isBuiltOutput=context.rulePack.getRuleCustomOption("auditBuildOutput");paths.base=path.resolve(auditBase);if(jetConfig){jsDir=jetConfig.paths.source.javascript||"js";tsDir=jetConfig.paths.source.typescript||"ts";paths.exchangeCacheFolder=jetConfig.paths.source.exchangeComponents||"jet_components";paths.componentRootFolder=jetConfig.paths.source.components||"jet-composites";if(!paths.isBuiltOutput){paths.generalSourceRoot=jetConfig.paths.source.common||"src"}else{paths.generalSourceRoot=jetConfig.paths.staging.web||"web"}}paths.jsSource=this.toJAFPath(path.join(paths.generalSourceRoot,jsDir));if(!paths.isBuiltOutput){paths.tsSource=this.toJAFPath(path.join(paths.generalSourceRoot,tsDir))}return paths};Utils.prototype.matchComponentPath=function(context,checkPathBase,recursion){let checkPath=this.toJAFPath(checkPathBase);let componentMatch;if(context.rulePack.getExtension()&&context.rulePack.getExtension().hasOwnProperty("allAuditableFilePaths")){if(context.rulePack.getExtension().allAuditableFilePaths.has(checkPath)){const x=context.rulePack.getExtension().allAuditableFilePaths;componentMatch=context.rulePack.getExtension().allAuditableFilePaths.get(checkPath)}else if(checkPath.includes(context.rulePack.getExtension().componentHome)){if(context.rulePack.getExtension().auditableComponentPaths.has(checkPath)){componentMatch=context.rulePack.getExtension().auditableComponentPaths.get(checkPath)}else{const parentPath=path.resolve(checkPathBase,".."+path.sep);componentMatch=this.matchComponentPath(context,parentPath,true)}if(!recursion){context.rulePack.getExtension().allAuditableFilePaths.set(checkPath,componentMatch)}}else{context.rulePack.getExtension().allAuditableFilePaths.set(checkPath)}}else{this.reportMissingBootstrapInfo(context,"allAuditableFilePaths")}return componentMatch};Utils.prototype.reportMissingBootstrapInfo=function(context,checkTopic){const msg=context.utils.msgLib;const extnContext=context.rulePack.getExtension();if(!extnContext||!extnContext.bootStrap){const bootstrapRule=context.rulePack.getPrefix().toLowerCase()+"-bootstrap";if(context.rulePack.isRuleDisabled(bootstrapRule)){msg.error(`You must enable the ${bootstrapRule} rule to run in order to carry out a full component set audit`)}else{msg.error(`Apparent bootstrap error, no information cached for ${checkTopic}`)}context.rulePack.setExtension({...extnContext,bootStrap:true})}};Utils.prototype.componentInfo=function(context,componentName){if(context.rulePack.getExtension()&&context.rulePack.getExtension().hasOwnProperty("allComponents")){return context.rulePack.getExtension().allComponents.get(componentName)}else{this.reportMissingBootstrapInfo(context,"allComponents")}return};Utils.prototype.getComponentFullName=function(metadata){return metadata.pack?`${metadata.pack}-${metadata.name}`:metadata.name};Utils.prototype.getComponentType=function(metadata){return metadata.type?metadata.type:"composite"};Utils.prototype.flattenComponentProperties=function(metaDef,valueAttribute,filterCondition,parentPath){let flattenedProps=[];if(metaDef.hasOwnProperty("properties")){const propArray=Object.keys(metaDef.properties);propArray.forEach(propertyName=>{const propertyMetadata=metaDef.properties[propertyName];let key;if(!parentPath){key=propertyName}else{key=parentPath+"."+propertyName}if(!filterCondition||filterCondition(propertyName,propertyMetadata)){flattenedProps.push({key:key,value:metaDef.properties[propertyName][valueAttribute]})}const subPropsArray=this.flattenComponentProperties(metaDef.properties[propertyName],valueAttribute,filterCondition,key);flattenedProps=flattenedProps.concat(subPropsArray)})}return flattenedProps};Utils.prototype.setupFileMethodMapping=function(context,node){const NT=context.utils.AstUtils.getNodeTypes();const fileName=context.filepath;const withinComponent=this.matchComponentPath(context,path.dirname(fileName));if(withinComponent&&node.parent){if(node.parent.type===NT.ASSIGNMENT_EXPR&&node.parent.operator==="="){if(node.parent.left&&node.parent.left.property&&node.parent.left.property.type==NT.IDENTIFIER&&node.parent.left.property.name){const methodDef={name:node.parent.left.property.name,parameters:node.params?node.params.length:0};this.cacheFileMethod(context,fileName,methodDef)}}else if(node.parent.type===NT.METH_DEF&&node.parent.kind==="method"){if(node.parent.key&&node.parent.key.name){const methodDef={name:node.parent.key.name,parameters:node.params?node.params.length:0};this.cacheFileMethod(context,fileName,methodDef)}}else if(node.parent.type===NT.CLASS_PROP||node.parent.type===NT.PROPERTY_DEF){if(node.parent.key&&node.parent.key.name){const methodDef={name:node.parent.key.name,parameters:node.params?node.params.length:0};this.cacheFileMethod(context,fileName,methodDef)}}}};Utils.prototype.setupFileMethodMappingFromMethodDefintion=function(context,node){const NT=context.utils.AstUtils.getNodeTypes();const fileName=context.filepath;const withinComponent=this.matchComponentPath(context,path.dirname(fileName));if(withinComponent){const methodDef={parameters:0};if(node.key&&node.key.type===NT.IDENTIFIER){methodDef.name=node.key.name;if(node.value&&node.value.type===NT.FUNC_EXPR&&node.value.params){methodDef.parameters=node.value.params.length}}if(methodDef.name){this.cacheFileMethod(context,fileName,methodDef)}}};Utils.prototype.cacheFileMethod=function(context,filePath,methodDef){if(!context.rulePack.getExtension().allDefinedFileMethods){context.rulePack.getExtension().allDefinedFileMethods=new Map}if(!context.rulePack.getExtension().allDefinedFileMethods.has(filePath)){context.rulePack.getExtension().allDefinedFileMethods.set(filePath,{methods:new Map})}if(!context.rulePack.getExtension().allDefinedFileMethods.get(filePath).methods.has(methodDef.name)){context.rulePack.getExtension().allDefinedFileMethods.get(filePath).methods.set(methodDef.name,methodDef)}};Utils.prototype.deriveViewModels=function(context,node){const fileName=context.filepath;if(context.rulePack.getExtension()&&context.rulePack.getExtension().hasOwnProperty("allComponents")){const withinComponent=this.matchComponentPath(context,path.dirname(fileName));const componentInfo=context.rulePack.getExtension().allComponents.get(withinComponent);if(withinComponent&&componentInfo&&componentInfo.type==="composite"&&!componentInfo.viewModel.resolved){const targetLoaderExt=componentInfo.language==="tsx"?".ts":`.${componentInfo.language}`;if(path.basename(fileName,targetLoaderExt)==="loader"){switch(componentInfo.language){case"js":case"ts":const registerInfo=this.getLoaderRegisterInfo(context,node);if(registerInfo){const vmRelativeFilePath=this._mapVMToImpl(context,node,registerInfo.viewModel,componentInfo.language==="ts");if(vmRelativeFilePath){const fullVMPath=this._expandPathInContext(context,withinComponent,vmRelativeFilePath);if(fullVMPath){componentInfo.viewModel={path:this.toJAFPath(path.resolve(".",`${fullVMPath}.${componentInfo.language}`)),resolved:true,skip:false}}}}break;case"tsx":break}}}}else{this.reportMissingBootstrapInfo(context,"allComponents")}};Utils.prototype.getLoaderRegisterInfo=function(context,node){const msg=context.utils.msgLib;const NT=context.utils.AstUtils.getNodeTypes();let registerInfo;if(node.callee.type=NT.MEMBER_EXPR&&node.callee.object&&node.arguments&&node.arguments.length>0){let isRegister=false;let oldStyle=false;switch(node.callee.object.type){case NT.IDENTIFIER:if(node.callee.object.name==="Composite"){isRegister=this._astPropertyIdentifierName(context,node.callee,"register")}break;case NT.MEMBER_EXPR:if(node.callee.property&&node.callee.property.type===NT.IDENTIFIER&&node.callee.property.name==="register"){if(this._astPropertyIdentifierName(context,node.callee.object,"Composite")){isRegister=node.callee.object.object&&node.callee.object.object.type===NT.IDENTIFIER&&node.callee.object.object.name==="oj";if(isRegister){oldStyle=true}}}break}if(isRegister){registerInfo={oldStyle:oldStyle};const tagArg=node.arguments[0];const def=node.arguments[1];registerInfo.tag=tagArg.type===NT.LITERAL?tagArg.value:"?";if(def.type===NT.OBJ_EXPR){vmProp=def.properties.filter(prop=>prop.key.name==="viewModel");if(vmProp.length===1){switch(vmProp[0].value.type){case NT.IDENTIFIER:registerInfo.viewModel=vmProp[0].value.name;break;case NT.OBJ_EXPR:if(vmProp[0].value.properties&&vmProp[0].value.properties[0]&&vmProp[0].value.properties[0].key.name==="inline"){registerInfo.viewModel=vmProp[0].value.properties[0].value.name;registerInfo.usesPromises=true}break;case NT.MEMBER_EXPR:if(vmProp[0].value.property&&vmProp[0].value.property.type===NT.IDENTIFIER){registerInfo.viewModel=vmProp[0].value.object.name;registerInfo.transpiled=true}break;case"TSAsExpression":if(vmProp[0].value.expression&&vmProp[0].value.expression.type===NT.IDENTIFIER){registerInfo.viewModel=vmProp[0].value.expression.name}else if(vmProp[0].value.expression&&vmProp[0].value.expression.type===NT.AS_EXPR){registerInfo.viewModel=vmProp[0].value.expression.expression.name;msg.msg(`WARNING: Component loader file ${context.filepath} attempts to redefine the composite.register viewModel interface`)}break}}const cssCheck=def.properties.filter(prop=>prop.key.name==="css");if(cssCheck.length>0){registerInfo.registerCSS=true}}}}return registerInfo};Utils.prototype._astPropertyIdentifierName=function(context,node,checkName){const NT=context.utils.AstUtils.getNodeTypes();return node&&node.property&&node.property.type===NT.IDENTIFIER&&node.property.name===checkName};Utils.prototype._mapVMToImpl=function(context,node,vmName,useImports){let vmPathDef;if(vmName){let rootNode=node;if(useImports){vmPathDef=this._getImportPath(context,rootNode,vmName)}else{vmPathDef=this._getDefineStatementPath(context,rootNode,vmName);if(!vmPathDef){vmPathDef=this._mapToRequireAssignment(context,node,vmName)}}}return vmPathDef};Utils.prototype._mapToRequireAssignment=function(context,node,vmName){const NT=context.utils.AstUtils.getNodeTypes();let requirePath;const vmDeclNode=this._locateDeclaration(context,node,vmName);if(vmDeclNode.type===NT.CALL_EXPR&&vmDeclNode.callee.type===NT.IDENTIFIER&&vmDeclNode.callee.name==="require"){if(vmDeclNode.arguments&&vmDeclNode.arguments.length===1&&vmDeclNode.arguments[0].type===NT.LITERAL){requirePath=vmDeclNode.arguments[0].value}}return requirePath};Utils.prototype._getImportPath=function(context,node,importAs){const NT=context.utils.AstUtils.getNodeTypes();const bodyNodeArray=context.utils.AstUtils.getBody();let definePath;for(let i=0;i<bodyNodeArray.length;i++){const testNode=bodyNodeArray[i];switch(testNode.type){case"ImportDeclaration":if(testNode.specifiers&&Array.isArray(testNode.specifiers)&&testNode.specifiers.length===1&&(testNode.specifiers[0].type===NT.IMPORT_DEF_SPECIFIER||testNode.specifiers[0].type===NT.IMPORT_SPECIFIER)&&testNode.specifiers[0].local&&testNode.specifiers[0].local.name===importAs){definePath=testNode.source.value}break;case"TSImportEqualsDeclaration":if(testNode.id&&testNode.id.type===NT.IDENTIFIER&&testNode.id.name===importAs&&testNode.moduleReference&&testNode.moduleReference.type===NT.EXTERN_MOD_REF&&testNode.moduleReference.expression&&testNode.moduleReference.expression.type===NT.LITERAL){definePath=testNode.moduleReference.expression.value}break}if(definePath){;break}}return definePath};Utils.prototype._getDefineStatementPath=function(context,node,defineParam){const NT=context.utils.AstUtils.getNodeTypes();let checkNode=node.parent;let definePath;while(checkNode){if(checkNode.type===NT.CALL_EXPR&&checkNode.callee.name==="define"){definePath=context.utils.AstUtils.parseDefine(checkNode)[defineParam]}checkNode=checkNode.parent}return definePath};Utils.prototype._expandPathInContext=function(context,componentName,requirePath){let targetPath=requirePath;const parsePluginParts=requirePath.split("!");if(parsePluginParts.length>1){targetPath=parsePluginParts[1]}let pathParts=targetPath.split("/");const decodeRoot=pathParts[0];if(decodeRoot==="."){pathParts[0]=this.rootPathForComponent(context,componentName)}else{const remotePart=this.rootPathForComponent(context,decodeRoot);if(!remotePart){pathParts=[]}else{pathParts[0]=remotePart}}return pathParts.join("/")};Utils.prototype.rootPathForComponent=function(context,componentName){if(context.rulePack.getExtension().allComponents.has(componentName)){return context.rulePack.getExtension().allComponents.get(componentName).rootFolder}};Utils.prototype.getVMMethodsForLocalComposite=function(context,component){let vmMethods;const msg=context.utils.msgLib;const opts=context.rulePack.getRuleCustomOptions();if(component.local&&component.type==="composite"){if(!component.viewModel.skip){if(!component.viewModel.resolved&&!component.viewModel.warned){if(!opts.testMode){msg.msg(`Warning: unable to derive the correct viewModel implementation for component ${component.fullName}, either your audit run does not include .js/.ts files, or you may need to set 'extension.audit.jetwc.viewModel' in the metadata to provide a hint`)}component.viewModel.warned=true}else{const rpState=context.rulePack.getExtension();if(rpState.allDefinedFileMethods&&rpState.allDefinedFileMethods.size>0){const vmMethodDef=rpState.allDefinedFileMethods.get(component.viewModel.path);if(vmMethodDef){vmMethods=vmMethodDef.methods}}else{if(!this.noJSWarnDone){msg.msg("Error: No JavaScript / TypeScript files have been processed. You need to ensure that your audit fileset includes .js, .ts, html and .json files to enable all audits in this rule-set. Use the ojaf --dryrun command to determine what files are covered by the audit");this.noJSWarnDone=true}}}}}return vmMethods};Utils.prototype.decomposeAssignment=function(auditContext,assignmentNode){const NT=auditContext.utils.AstUtils.getNodeTypes();const breakdown=[];this._walkAssignmentNodes(auditContext,assignmentNode.left,breakdown);if(!breakdown.includes("this")){const parentAssignment=breakdown[breakdown.length-1];const initialAssignmentNode=this._locateDeclaration(auditContext,assignmentNode,parentAssignment);if(initialAssignmentNode){if(initialAssignmentNode==="<parameter>"){breakdown.push("<parameter>")}else if(initialAssignmentNode.type===NT.THIS_EXPR){breakdown.push("this")}else if(initialAssignmentNode.type===NT.IDENTIFIER){breakdown.push(initialAssignmentNode.name);const indirectAssignmentNode=this._locateDeclaration(auditContext,assignmentNode,initialAssignmentNode.name);if(indirectAssignmentNode==="<parameter>"){breakdown.push("<parameter>")}else if(indirectAssignmentNode.type===NT.THIS_EXPR){breakdown.push("this")}}}}return breakdown};Utils.prototype._walkAssignmentNodes=function(context,node,accumulator){const NT=context.utils.AstUtils.getNodeTypes();switch(node.type){case NT.MEMBER_EXPR:accumulator.push(node.property.name);if(node.object){this._walkAssignmentNodes(context,node.object,accumulator)}break;case NT.IDENTIFIER:accumulator.push(node.name);break;case NT.THIS_EXPR:accumulator.push("this");break}};Utils.prototype._locateDeclaration=function(context,node,searchVariable){const NT=context.utils.AstUtils.getNodeTypes();let initialAssignment;let workingNode=node;while(!initialAssignment){if(workingNode.body&&workingNode.body.length>0){workingNode.body.forEach(bodyNode=>{if(bodyNode.type===NT.VAR_DECLARATION){bodyNode.declarations.forEach(declNode=>{if(declNode.id.type===NT.IDENTIFIER&&declNode.id.name===searchVariable){initialAssignment=declNode.init}})}})}else if(workingNode.params&&workingNode.params.length>0){workingNode.params.forEach(paramNode=>{if(paramNode.name===searchVariable){initialAssignment="<parameter>"}})}if(!workingNode.parent){break}else{workingNode=workingNode.parent}}return initialAssignment};Utils.prototype.extractComponentInfoFromJSONFile=function(auditContext,componentFolder,fileName,isLocal,fromPrecompile){const msg=auditContext.utils.msgLib;let componentInfo={};const mdFile=`${componentFolder}/${fileName}`;const compMetadata=auditContext.utils.fsUtils.readJsonSync(mdFile);if(compMetadata!==null){return this.extractComponentInfoFromMetadata(auditContext,compMetadata,componentFolder,isLocal,fromPrecompile)}else{msg.error(`Invalid JSON in component metadata ${mdFile}, component ignored`)}return};Utils.prototype.extractComponentInfoFromMetadata=function(auditContext,compMetadata,componentFolder,isLocal,fromPrecompile){const msg=auditContext.utils.msgLib;let componentInfo={};componentInfo.name=compMetadata.name;componentInfo.pack=compMetadata.pack;if(fromPrecompile&&compMetadata.pack){if(compMetadata.name.startsWith(`${compMetadata.pack}-`)){componentInfo.name=compMetadata.name.substring(compMetadata.pack.length+1)}}componentInfo.fullName=componentInfo.pack?`${componentInfo.pack}-${componentInfo.name}`:componentInfo.name;componentInfo.displayName=compMetadata.displayName;componentInfo.description=compMetadata.description;componentInfo.version=compMetadata.version;componentInfo.jetVersion=compMetadata.jetVersion;componentInfo.license=compMetadata.license;componentInfo.extension=compMetadata.extension;if(compMetadata.icon){componentInfo.icon=compMetadata.icon}componentInfo.type=compMetadata.type?compMetadata.type:"composite";componentInfo.subcomponentType=compMetadata.subcomponentType;if(compMetadata.dependencies&&compMetadata?.type!=="pack"){componentInfo.dependencies=[];Object.keys(compMetadata.dependencies).forEach(depname=>{componentInfo.dependencies.push({name:depname,range:compMetadata.dependencies[depname]})})}componentInfo.local=isLocal;componentInfo.rootFolder=this.toJAFPath(componentFolder);componentInfo.requirePaths=new Set;switch(componentInfo.type){case"mono-pack":componentInfo.contents=compMetadata.contents;break;case"reference":if(compMetadata.extension&&compMetadata.extension.oracle&&compMetadata.extension.oracle.businessApprovals){componentInfo.ba=compMetadata.extension.oracle.businessApprovals}if(compMetadata.paths&&compMetadata.paths.name){componentInfo.requirePaths.add(compMetadata.paths.name)}else{const extractPathSegments=compMetadata.package.split("/");if(extractPathSegments.length>1){componentInfo.requirePaths.add(extractPathSegments[1])}else{componentInfo.requirePaths.add(extractPathSegments[0])}}break;case"composite":if(compMetadata.styleClasses){componentInfo.styleClasses=compMetadata.styleClasses}if(compMetadata.styleVariables){componentInfo.styleVariables=compMetadata.styleVariables}if(compMetadata.slots){componentInfo.slots=compMetadata.slots}if(compMetadata.properties){componentInfo.properties=compMetadata.properties}if(compMetadata.events){componentInfo.events=compMetadata.events}if(compMetadata.methods&&Object.keys(compMetadata.methods).length>0){componentInfo.methods=compMetadata.methods}componentInfo.viewModel={resolved:false};if(compMetadata&&compMetadata.extension&&compMetadata.extension.audit&&compMetadata.extension.audit.jetwc&&compMetadata.extension.audit.jetwc.hasOwnProperty("viewModel")){const overrideVM=compMetadata.extension.audit.jetwc.viewModel;if(overrideVM){componentInfo.viewModel={path:this.toJAFPath(path.resolve(".",componentInfo.rootFolder,overrideVM)),resolved:true,skip:false}}else{componentInfo.viewModel={skip:true}}}case"resource":componentInfo.requirePaths.add(".");if(compMetadata.pack){componentInfo.requirePaths.add(`${componentInfo.pack}/${componentInfo.name}`)}else{componentInfo.requirePaths.add(componentInfo.name)}componentInfo.publicModules=compMetadata.publicModules;break}return componentInfo};Utils.prototype.diagnosticReplacer=function(key,value){if(value instanceof Map){return Array.from(value).map(([vKey,vValue])=>{return{[vKey]:vValue?vValue:""}})}if(value instanceof Set){return Array.from(value)}return value};Utils.prototype.toJAFPath=function(sourcePath){if(sourcePath&&this.isWindows){return sourcePath.replace(/\\\\|\\/g,"/")}return sourcePath};Utils.prototype.toNativePath=function(sourcePath){if(sourcePath&&this.isWindows){return sourcePath.replace(/\//g,"\\")}return sourcePath};Utils.prototype.getDirectoryName=function(filePath){return path.dirname(filePath)};Utils.prototype.shouldIgnoreCheck=function(context,auditName,componentName,scope,target){let ignore=false;const checkComponentDef=context.rulePack.getExtension().allComponents.get(componentName);if(checkComponentDef){let targetDef;if(scope&&checkComponentDef[scope]){if(target.includes(".")&&scope==="properties"){targetDef=this.getPropertyAttributeFromPath(context,componentName,target)}else{targetDef=checkComponentDef[scope][target==="__default__"?"":target]}}else{targetDef=checkComponentDef}if(targetDef&&targetDef.extension&&targetDef.extension.hasOwnProperty("audit")&&targetDef.extension.audit.hasOwnProperty("ignore")){const ignoreArray=targetDef.extension.audit.ignore;ignore=ignoreArray.includes(auditName)}}return ignore};Utils.prototype.getPropertyAttributeFromPath=function(context,componentName,targetPath,attribute){const checkComponentDef=context.rulePack.getExtension().allComponents.get(componentName);let targetDef;if(checkComponentDef&&checkComponentDef.properties){if(targetPath.includes(".")){const propPath=targetPath.split(".");targetDef=checkComponentDef.properties[propPath[0]];for(let i=1;i<propPath.length;i++){targetDef=targetDef.properties[propPath[i]]}}else{targetDef=checkComponentDef.properties[targetPath]}}if(attribute){return targetDef[attribute]}else{return targetDef}};Utils.prototype.detectComponentSourceType=function(context,componentPathRoot,isVComponent){let componentImplType;if(isVComponent){componentImplType="tsx"}else{const{fsUtils}=context.utils;if(fsUtils.fileExistsSync(`${componentPathRoot}/loader.js`)){componentImplType="js"}else if(fsUtils.fileExistsSync(path.join(componentPathRoot,"loader.ts"))){componentImplType="ts"}else{const pathSegs=componentPathRoot.toLowerCase().split("/");if(pathSegs.includes("js")){componentImplType="js"}else{componentImplType="ts"}}}return componentImplType};Utils.prototype.safeSetExtension=function(context,extnValue){let existingContext=context.rulePack.getExtension();if(!existingContext){existingContext={}}const newContext={...existingContext,...extnValue};context.rulePack.setExtension(newContext)};Utils.prototype.disableRulePack=function(context){const rulesInPack=context.rulePack.getEnabledRuleList();rulesInPack.forEach(rule=>{context.rulePack.disableRule(rule)})};Utils.prototype.isMonoPackMember=function(context,metadata){let mpMember=false;const owningPack=metadata.pack;if(owningPack){const packInfo=this.componentInfo(context,owningPack);if(packInfo&&packInfo.type==="mono-pack"){mpMember=true}}return mpMember};Utils.prototype.cloneObject=function(o){return JSON.parse(JSON.stringify(o))};module.exports=new Utils;
@@ -3,4 +3,4 @@
3
3
  * Licensed under The Universal Permissive License (UPL), Version 1.0
4
4
  * as shown at https://oss.oracle.com/licenses/upl/
5
5
  */
6
- const path=require("path");const Utils=require("./jetwcutils-componentAuditUtils");const tsxUtils=require("./jetwcutils-tsxUtils");const ComponentFinder=function(){this.runOnce=false};ComponentFinder.prototype.findAllComponents=function(auditContext,auditBase,projectPathInfo,componentRoots){const msg=auditContext.utils.msgLib;const metadataPatches=this._readPatchFile(auditContext,auditBase);let masterComponentList=[];if(!this.runOnce||auditContext.rulePack.getRuleCustomOption("testMode")){if(projectPathInfo.exchangeCacheFolder){masterComponentList=masterComponentList.concat(this._discoverComponentsFromRoot(path.join(projectPathInfo.base,projectPathInfo.exchangeCacheFolder),false,false,auditContext,null,metadataPatches))}if(componentRoots&&componentRoots.length>0){componentRoots.forEach(root=>{let target=root;if(auditContext.utils.fsUtils.getFileTypeSync(target)==="f"){target=path.dirname(root);msg.msg(`Warning: Incorrectly defined "components" array entry in JAF configuration file. Entries should list folders only not explicit file names.\n Bad entry: "${root}"\nAudit will process the "${target}" folder instead.\n`)}masterComponentList=masterComponentList.concat(this._discoverComponentsFromRoot(target,true,projectPathInfo.isBuiltOutput,auditContext,null,metadataPatches))})}else{if(projectPathInfo.componentRootFolder){masterComponentList=masterComponentList.concat(this._discoverComponentsFromRoot(path.join(projectPathInfo.base,projectPathInfo.jsSource,projectPathInfo.componentRootFolder),true,projectPathInfo.isBuiltOutput,auditContext,null,metadataPatches));if(projectPathInfo.tsSource&&projectPathInfo.tsSource!==projectPathInfo.jsSource){masterComponentList=masterComponentList.concat(this._discoverComponentsFromRoot(path.join(projectPathInfo.base,projectPathInfo.tsSource,projectPathInfo.componentRootFolder),true,false,auditContext,null,metadataPatches))}}}this.runOnce=true;this.masterComponentList=masterComponentList}return this.masterComponentList};ComponentFinder.prototype._discoverComponentsFromRoot=function(rootDir,isLocal,builtOutput,auditContext,parentPack,metadataPatches){const msg=auditContext.utils.msgLib;let componentArray=[];if(auditContext.utils.fsUtils.pathExistsSync(rootDir)){const compFileStructure=auditContext.utils.fsUtils.readDir(rootDir);compFileStructure.forEach(l1file=>{let componentInfo;if(!l1file.isFile&&l1file.files.length>0){l1file.files.forEach(l2file=>{if(!builtOutput){if(l2file.isFile&&l2file.name==="component.json"){componentInfo=Utils.extractComponentInfoFromJSONFile(auditContext,path.join(rootDir,l1file.name),"component.json",isLocal,false);componentArray.push(componentInfo);if(componentInfo.type&&componentInfo.type==="pack"){const packMembers=this._discoverComponentsFromRoot(Utils.toJAFPath(path.join(rootDir,l1file.name)),isLocal,false,auditContext,componentInfo.name,metadataPatches);componentArray=componentArray.concat(packMembers)}}else if(l2file.isFile&&path.extname(l2file.name)===".tsx"){componentInfo=tsxUtils.extractComponentInfoFromTSXFile(auditContext,path.join(rootDir,l1file.name),l2file.name,metadataPatches);if(componentInfo){componentArray.push(componentInfo)}}}else{if(!l2file.isFile&&l2file.files.length>0){l2file.files.forEach(l3file=>{if(l3file.isFile&&l3file.name==="component.json"){componentInfo=Utils.extractComponentInfoFromJSONFile(auditContext,path.join(rootDir,l1file.name,l2file.name),"component.json",isLocal,false);if(!componentInfo.pack){componentArray.push(componentInfo);if(componentInfo.type==="pack"){const packMembers=this._discoverComponentsFromRoot(Utils.toJAFPath(path.join(rootDir,l1file.name,l2file.name)),isLocal,false,auditContext,componentInfo.name,metadataPatches);componentArray=componentArray.concat(packMembers)}}}else if(l3file.isFile&&path.extname(l3file.name)===".tsx"){componentInfo=tsxUtils.extractComponentInfoFromTSXFile(auditContext,path.join(rootDir,l1file.name,l2file.name),l3file.name,metadataPatches);if(componentInfo){componentArray.push(componentInfo)}}})}}})}else{if(l1file.isFile&&l1file.name==="component.json"){componentInfo=Utils.extractComponentInfoFromJSONFile(auditContext,rootDir,"component.json",isLocal,false);if(componentInfo.type!=="pack"||componentInfo.name!==parentPack){componentArray.push(componentInfo)}}else if(l1file.isFile&&path.extname(l1file.name)===".tsx"){componentInfo=tsxUtils.extractComponentInfoFromTSXFile(auditContext,rootDir,l1file.name,metadataPatches);if(componentInfo){componentArray.push(componentInfo)}}}})}return componentArray};ComponentFinder.prototype._readPatchFile=function(auditContext,auditBase){const{fsUtils,msgLib}=auditContext.utils;const metadataPatchInstructionFile=auditContext.userDefs?.VComponentMetadataPatches;let actualPatchFilePath;if(metadataPatchInstructionFile){if(fsUtils.fileExistsSync(metadataPatchInstructionFile)){actualPatchFilePath=metadataPatchInstructionFile}else if(fsUtils.fileExistsSync(path.join(auditBase,metadataPatchInstructionFile))){actualPatchFilePath=path.join(auditBase,metadataPatchInstructionFile)}}if(actualPatchFilePath){return fsUtils.readJsonSync(actualPatchFilePath)}return};module.exports=new ComponentFinder;
6
+ const path=require("path");const Utils=require("./jetwcutils-componentAuditUtils");const tsxUtils=require("./jetwcutils-tsxUtils");const ComponentFinder=function(){this.runOnce=false};ComponentFinder.prototype.findAllComponents=function(auditContext,auditBase,projectPathInfo,componentRoots){const msg=auditContext.utils.msgLib;const metadataPatches=this._readPatchFile(auditContext,auditBase);let masterComponentList=[];if(!this.runOnce||auditContext.rulePack.getRuleCustomOption("testMode")){if(projectPathInfo.exchangeCacheFolder){masterComponentList=masterComponentList.concat(this._discoverComponentsFromRoot(path.join(projectPathInfo.base,projectPathInfo.exchangeCacheFolder),false,false,auditContext,null,metadataPatches))}if(componentRoots&&componentRoots.length>0){componentRoots.forEach(root=>{let target=root;if(auditContext.utils.fsUtils.getFileTypeSync(target)==="f"){target=path.dirname(root);msg.msg(`Warning: Incorrectly defined "components" array entry in JAF configuration file. Entries should list folders only not explicit file names.\n Bad entry: "${root}"\nAudit will process the "${target}" folder instead.\n`)}masterComponentList=masterComponentList.concat(this._discoverComponentsFromRoot(target,true,projectPathInfo.isBuiltOutput,auditContext,null,metadataPatches))})}else{if(projectPathInfo.componentRootFolder){masterComponentList=masterComponentList.concat(this._discoverComponentsFromRoot(path.join(projectPathInfo.base,projectPathInfo.jsSource,projectPathInfo.componentRootFolder),true,projectPathInfo.isBuiltOutput,auditContext,null,metadataPatches));if(projectPathInfo.tsSource&&projectPathInfo.tsSource!==projectPathInfo.jsSource){masterComponentList=masterComponentList.concat(this._discoverComponentsFromRoot(path.join(projectPathInfo.base,projectPathInfo.tsSource,projectPathInfo.componentRootFolder),true,false,auditContext,null,metadataPatches))}}}this.runOnce=true;this.masterComponentList=masterComponentList}return this.masterComponentList};ComponentFinder.prototype._discoverComponentsFromRoot=function(rootDir,isLocal,builtOutput,auditContext,parentPack,metadataPatches){const msg=auditContext.utils.msgLib;let componentArray=[];if(auditContext.utils.fsUtils.pathExistsSync(rootDir)){const compFileStructure=auditContext.utils.fsUtils.readDir(rootDir);compFileStructure.forEach(l1file=>{let componentInfo;if(!l1file.isFile&&l1file.files.length>0){l1file.files.forEach(l2file=>{if(!builtOutput){if(l2file.isFile&&l2file.name==="component.json"){componentInfo=Utils.extractComponentInfoFromJSONFile(auditContext,path.join(rootDir,l1file.name),"component.json",isLocal,false);componentArray.push(componentInfo);if(componentInfo?.type==="pack"||componentInfo?.type==="mono-pack"){const packMembers=this._discoverComponentsFromRoot(Utils.toJAFPath(path.join(rootDir,l1file.name)),isLocal,false,auditContext,componentInfo.name,metadataPatches);componentArray=componentArray.concat(packMembers)}}else if(l2file.isFile&&path.extname(l2file.name)===".tsx"){componentInfo=tsxUtils.extractComponentInfoFromTSXFile(auditContext,path.join(rootDir,l1file.name),l2file.name,metadataPatches);if(componentInfo){componentArray.push(componentInfo)}}}else{if(!l2file.isFile&&l2file.files.length>0){l2file.files.forEach(l3file=>{if(l3file.isFile&&l3file.name==="component.json"){componentInfo=Utils.extractComponentInfoFromJSONFile(auditContext,path.join(rootDir,l1file.name,l2file.name),"component.json",isLocal,false);if(!componentInfo.pack){componentArray.push(componentInfo);if(componentInfo?.type==="pack"||componentInfo?.type==="mono-pack"){const packMembers=this._discoverComponentsFromRoot(Utils.toJAFPath(path.join(rootDir,l1file.name,l2file.name)),isLocal,false,auditContext,componentInfo.name,metadataPatches);componentArray=componentArray.concat(packMembers)}}}else if(l3file.isFile&&path.extname(l3file.name)===".tsx"){componentInfo=tsxUtils.extractComponentInfoFromTSXFile(auditContext,path.join(rootDir,l1file.name,l2file.name),l3file.name,metadataPatches);if(componentInfo){componentArray.push(componentInfo)}}})}}})}else{if(l1file.isFile&&l1file.name==="component.json"){componentInfo=Utils.extractComponentInfoFromJSONFile(auditContext,rootDir,"component.json",isLocal,false);if(componentInfo.type!=="pack"||componentInfo.name!==parentPack){componentArray.push(componentInfo)}}else if(l1file.isFile&&path.extname(l1file.name)===".tsx"){componentInfo=tsxUtils.extractComponentInfoFromTSXFile(auditContext,rootDir,l1file.name,metadataPatches);if(componentInfo){componentArray.push(componentInfo)}}}})}return componentArray};ComponentFinder.prototype._readPatchFile=function(auditContext,auditBase){const{fsUtils,msgLib}=auditContext.utils;const metadataPatchInstructionFile=auditContext.userDefs?.VComponentMetadataPatches;let actualPatchFilePath;if(metadataPatchInstructionFile){if(fsUtils.fileExistsSync(metadataPatchInstructionFile)){actualPatchFilePath=metadataPatchInstructionFile}else if(fsUtils.fileExistsSync(path.join(auditBase,metadataPatchInstructionFile))){actualPatchFilePath=path.join(auditBase,metadataPatchInstructionFile)}}if(actualPatchFilePath){return fsUtils.readJsonSync(actualPatchFilePath)}return};module.exports=new ComponentFinder;
@@ -3,4 +3,4 @@
3
3
  * Licensed under The Universal Permissive License (UPL), Version 1.0
4
4
  * as shown at https://oss.oracle.com/licenses/upl/
5
5
  */
6
- const CaccHelpers=require("./jetwco-cacc-helpers");function controlCallback(controlRuleName,controlRuleDef,semver,cacheManager,metadata,compareMetadata,componentVersionDiff,baselines,componentType,componentName,errorMsgContext,overrideTypeMappings){if(componentType==="composite"){const{add:addConstraint,remove:removeConstraint,mutate:mutateConstraint}=controlRuleDef;const removeControlMetadata=CaccHelpers.deriveConstraintMetadata(baselines,removeConstraint);return recurseThroughProps(controlRuleName,componentName,metadata,compareMetadata,removeControlMetadata,["properties"],addConstraint,removeConstraint,componentVersionDiff,cacheManager,errorMsgContext).join("\n")}return};function recurseThroughProps(controlRuleName,componentName,metadata,compareMetadata,removeControlMetadata,compareScope,addConstraint,removeConstraint,componentVersionDiff,cacheManager,errorMsgContext){let errorConditions=[];const printScope=CaccHelpers.getPrintScope(compareScope);const diffs=CaccHelpers.apiDiff(CaccHelpers.castToScope(metadata,compareScope),CaccHelpers.castToScope(compareMetadata,compareScope));if(CaccHelpers.checkConstraintPatchMajor(diffs.add,addConstraint,componentVersionDiff)){errorConditions.push(`Properties ${printScope}${diffs.add.map(prop=>prop.name).join(", ")} added to${errorMsgContext}'${addConstraint}'`)}const removeErrors=CaccHelpers.checkConstraintMajorWithDeprecation(diffs.remove,removeConstraint,componentVersionDiff,cacheManager,componentName,removeControlMetadata,diff=>{return compareScope.concat([diff.name])});if(removeErrors.length>0){errorConditions.push(`Properties ${printScope}${diffs.remove.map(prop=>prop.name).join(", ")} removed from${errorMsgContext}'${removeConstraint}'`)}if(diffs.mutate.length>0){diffs.mutate.forEach(mutation=>{let newScope=compareScope.slice().concat([mutation.name,"properties"]);const mutateErrors=recurseThroughProps(controlRuleName,componentName,metadata,compareMetadata,removeControlMetadata,newScope,addConstraint,removeConstraint,componentVersionDiff,cacheManager,errorMsgContext);if(mutateErrors){errorConditions=errorConditions.concat(mutateErrors)}})}return errorConditions}module.exports=controlCallback;
6
+ const CaccHelpers=require("./jetwco-cacc-helpers");function controlCallback(controlRuleName,controlRuleDef,semver,cacheManager,metadata,compareMetadata,componentVersionDiff,baselines,componentType,componentName,errorMsgContext,overrideTypeMappings){if(componentType==="composite"){const{add:addConstraint,remove:removeConstraint,mutate:mutateConstraint}=controlRuleDef;const removeControlMetadata=CaccHelpers.deriveConstraintMetadata(baselines,removeConstraint);return recurseThroughProps(controlRuleName,componentName,metadata,compareMetadata,removeControlMetadata,["properties"],addConstraint,removeConstraint,componentVersionDiff,cacheManager,errorMsgContext).join("\n")}return};function recurseThroughProps(controlRuleName,componentName,metadata,compareMetadata,removeControlMetadata,compareScope,addConstraint,removeConstraint,componentVersionDiff,cacheManager,errorMsgContext){let errorConditions=[];const printScope=CaccHelpers.getPrintScope(compareScope);const diffs=CaccHelpers.apiDiff(CaccHelpers.castToScope(metadata,compareScope),CaccHelpers.castToScope(compareMetadata,compareScope));if(CaccHelpers.checkConstraintPatchMajor(diffs.add,addConstraint,componentVersionDiff)){errorConditions.push(`Properties ${printScope}${diffs.add.map(prop=>prop.name).join(", ")} added to${errorMsgContext}'${addConstraint}'`)}const cleanedRemoveDiffs=diffs.remove.filter(prop=>{return!_isExemptedGlobalProperty(prop.name)});const removeErrors=CaccHelpers.checkConstraintMajorWithDeprecation(cleanedRemoveDiffs,removeConstraint,componentVersionDiff,cacheManager,componentName,removeControlMetadata,diff=>{return compareScope.concat([diff.name])});if(removeErrors.length>0){errorConditions.push(`Properties ${printScope}${cleanedRemoveDiffs.map(prop=>prop.name).join(", ")} removed from${errorMsgContext}'${removeConstraint}'`)}if(diffs.mutate.length>0){diffs.mutate.forEach(mutation=>{let newScope=compareScope.slice().concat([mutation.name,"properties"]);const mutateErrors=recurseThroughProps(controlRuleName,componentName,metadata,compareMetadata,removeControlMetadata,newScope,addConstraint,removeConstraint,componentVersionDiff,cacheManager,errorMsgContext);if(mutateErrors){errorConditions=errorConditions.concat(mutateErrors)}})}return errorConditions}function _isExemptedGlobalProperty(propertyName){return["autofocus","autoFocus"].includes(propertyName)}module.exports=controlCallback;
@@ -3,4 +3,4 @@
3
3
  * Licensed under The Universal Permissive License (UPL), Version 1.0
4
4
  * as shown at https://oss.oracle.com/licenses/upl/
5
5
  */
6
- {"title":"Oracle Internal Audit Rules for JET Custom Component Authors","prefix":"JETWCO","version":"1.18.1","rules":{"jetwco-bootstrap":{"group":"jetwco-do-not-disable","enabled":true,"severity":"info","filetype":["tsx","css","html","js","json","md","ts"],"$required":true,"amd":false,"customOpts":{"debug":false,"diagnosticFile":"jetwco-diagnostics","auditBuildOutput":false,"testMode":false}},"jetwco-component-cdn":{"group":"jetwco-pre-release","severity":"major","filetype":["json"],"amd":false},"jetwco-prerelease-cdn":{"group":"jetwco-pre-release","enabled":true,"severity":"blocker","filetype":["json"],"amd":false,"customOpts":{"cdnRoot":"https://static.oracle.com/cdn/"}},"jetwco-thirdparty-ba":{"group":"jetwco-pre-release","enabled":true,"severity":"major","filetype":["json","tsx"],"amd":false},"jetwco-license-info":{"group":"jetwco-pre-release","enabled":true,"severity":"blocker","filetype":["json","tsx"],"amd":false,"customOpts":{"allowedLicenseURLs":[]}},"jetwco-exchange-version-check":{"group":"jetwco-api","enabled":false,"severity":"info","filetype":["json","tsx"],"amd":false},"jetwco-component-api-changes":{"group":"jetwco-api","enabled":false,"severity":"blocker","filetype":["json","tsx"],"amd":false,"status":"deprecated","customOpts":{"clearCache":false}},"jetwco-compjson-ns-reg":{"group":"jetwco-api","enabled":true,"severity":"major","filetype":["json","tsx"],"amd":false},"jetwco-component-api-baseline-changes":{"group":"jetwco-api","enabled":false,"severity":"blocker","filetype":["json","tsx"],"amd":false,"status":"deprecated","customOpts":{"baseline":{},"clearCache":false}},"jetwco-displayname-standards":{"group":"jetwco-doc","enabled":true,"severity":"minor","filetype":["json","tsx"],"amd":false},"jetwco-description-standards":{"group":"jetwco-doc","enabled":true,"severity":"minor","filetype":["json","tsx"],"amd":false},"jetwco-component-api-controlled-changes":{"group":"jetwco-api","enabled":false,"severity":"blocker","filetype":["json","tsx"],"amd":false,"customOpts":{"clearCache":false,"controls":{},"ignorePackPrivate":false,"tolerantAPICompare":false}},"jetwco-validate-applied-audits":{"group":"jetwco-pre-release","enabled":false,"severity":"blocker","filetype":["json","tsx"],"amd":false,"customOpts":{"auditRuleBundles":[]}}}}
6
+ {"title":"Oracle Internal Audit Rules for JET Custom Component Authors","prefix":"JETWCO","version":"1.18.2","rules":{"jetwco-bootstrap":{"group":"jetwco-do-not-disable","enabled":true,"severity":"info","filetype":["tsx","css","html","js","json","md","ts"],"$required":true,"amd":false,"customOpts":{"debug":false,"diagnosticFile":"jetwco-diagnostics","auditBuildOutput":false,"testMode":false}},"jetwco-component-cdn":{"group":"jetwco-pre-release","severity":"major","filetype":["json"],"amd":false},"jetwco-prerelease-cdn":{"group":"jetwco-pre-release","enabled":true,"severity":"blocker","filetype":["json"],"amd":false,"customOpts":{"cdnRoot":"https://static.oracle.com/cdn/"}},"jetwco-thirdparty-ba":{"group":"jetwco-pre-release","enabled":true,"severity":"major","filetype":["json","tsx"],"amd":false},"jetwco-license-info":{"group":"jetwco-pre-release","enabled":true,"severity":"blocker","filetype":["json","tsx"],"amd":false,"customOpts":{"allowedLicenseURLs":[]}},"jetwco-exchange-version-check":{"group":"jetwco-api","enabled":false,"severity":"info","filetype":["json","tsx"],"amd":false},"jetwco-component-api-changes":{"group":"jetwco-api","enabled":false,"severity":"blocker","filetype":["json","tsx"],"amd":false,"status":"deprecated","customOpts":{"clearCache":false}},"jetwco-compjson-ns-reg":{"group":"jetwco-api","enabled":true,"severity":"major","filetype":["json","tsx"],"amd":false},"jetwco-component-api-baseline-changes":{"group":"jetwco-api","enabled":false,"severity":"blocker","filetype":["json","tsx"],"amd":false,"status":"deprecated","customOpts":{"baseline":{},"clearCache":false}},"jetwco-displayname-standards":{"group":"jetwco-doc","enabled":true,"severity":"minor","filetype":["json","tsx"],"amd":false},"jetwco-description-standards":{"group":"jetwco-doc","enabled":true,"severity":"minor","filetype":["json","tsx"],"amd":false},"jetwco-component-api-controlled-changes":{"group":"jetwco-api","enabled":false,"severity":"blocker","filetype":["json","tsx"],"amd":false,"customOpts":{"clearCache":false,"controls":{},"ignorePackPrivate":false,"tolerantAPICompare":false}},"jetwco-validate-applied-audits":{"group":"jetwco-pre-release","enabled":false,"severity":"blocker","filetype":["json","tsx"],"amd":false,"customOpts":{"auditRuleBundles":[]}}}}
@@ -3,4 +3,4 @@
3
3
  * Licensed under The Universal Permissive License (UPL), Version 1.0
4
4
  * as shown at https://oss.oracle.com/licenses/upl/
5
5
  */
6
- {"oj-html-ojtag-deprecated":"0010","oj-html-ojtag-deprecated_user":"0011","oj-html-wctag-maintenance":"0014","oj-html-wctag-supersedes":"0015","oj-html-attr-json_1":"0020","oj-html-attr-json_2":"0021","oj-html-ojattr":"0040","oj-html-ojattr_1":"0041","oj-html-ojattr-value":"0060","oj-html-attr-2def":"0070","oj-html-attr-prefix-ro":"0073","oj-html-attr-prefix-expr":"0075","oj-html-attr-req":"0077","oj-html-ojattr-deprecated":"0080","oj-html-ojattr-deprecated_1":"0081","oj-html-ojattr-deprecated_2":"0082","oj-html-ojattr-deprecated_3":"0083","oj-html-ojattr-enum-deprecated":"0085","oj-html-ojattr-enum-deprecated_user":"0086","oj-html-ojevent":"0090","oj-html-jq-databind_1":"0100","oj-html-jq-databind_2":"0110","oj-html-jq-databind_3":"0120","oj-html-databind-all":"0130","oj-html-ojslot":"0140","oj-html-slot-deprecated":"0145","oj-html-slot-deprecated_user":"0146","oj-html-slot-name":"0150","oj-html-slot-pref-content":"0153","oj-html-slot-item-minmax":"0156","oj-html-slot-item-minmax_1":"0157","oj-html-binding-attr":"0160","oj-html-bindif-test":"0163","oj-html-bindforeach-data":"0165","oj-html-dlg-title":"0168","oj-html-attr-$unique_1":"0170","oj-html-attr-$unique_2":"0180","oj-html-tag-attr-noprefix":"0190","oj-html-label-for-prefix":"0195","oj-html-ojtag-globattr-noprefix":"0200","oj-html-ojtag-nonglobattr-prefix":"0210","oj-html-invalid-doctype":"0220","oj-html-invalid-doctype_1":"0221","oj-html-missing-doctype":"0230","oj-html-oj-lib":"0240","oj-html-ko-comment":"0250","oj-html-ko-comment_1":"0251","oj-html-ko-databind":"0260","oj-html-cca-count":"0270","oj-html-cca-count_1":"0271","oj-html-cdn":"0280","oj-html-ojattr-evt-syntax":"0290","oj-html-ojtag-datacmd":"0310","oj-html-ojtag-datacmd_1":"0311","oj-html-ojtag-datacmd_2":"0312","oj-html-ojtag-datacmd_3":"0313","oj-html-ojtag-datactx":"0320","oj-html-wctag-id":"0330","oj-html-wctag-id_1":"0331","oj-html-wctag-id_2":"0332","oj-html-wctag-for":"0340","oj-html-wctag-arialabelledby":"0350","oj-html-wctag-$props":"0360","oj-html-wctag-$props_1":"0361","oj-html-wctag-$props_2":"0362","oj-html-wctag-$props_3":"0363","oj-html-form-bindif":"0370","oj-html-ojtag-ns":"0385","oj-html-ojtag-ns_1":"0386","oj-html-unsup-theme":"0390","oj-html-unsup-theme_1":"0391","oj-html-form-noflex":"0395","oj-html-5-tag-obs":"0400","oj-html-5-attr-obs_1":"0410","oj-html-5-attr-obs_2":"0411","oj-html-redwood-cssvars":"0420","oj-html-redwood-cssnovars":"0421","oj-html-redwood-bp-endslot":"0422","oj-html-template-index":"0425","oj-form-maxcols":"0430","oj-form-maxcols_1":"0431","oj-form-maxcols_2":"0432","oj-html-form-layout-maxcols":"0435","oj-html-file-pick-accept":"0450","oj-html-file-pick-accept_1":"0451","oj-html-file-pick-accept_2":"0452","oj-html-wctag-packprivate":"0465","oj-html-picker-attrs":"0470","oj-html-wctag-nested":"0480","oj-html-notag-style":"0490","oj-html-notag-style_1":"0491","oj-html-msgs-cat-text":"0495","oj-html-msgs-cat-text_1":"0496","oj-html-msgs-cat-text_2":"0497","oj-html-msgs-cat-text_3":"0498","oj-html-no-style":"0505","oj-html-no-style-tag":"0505","oj-html-alta-deprecated":"0510","oj-html-rating-gauge-size":"0520","oj-html-rating-gauge-track-resize":"0525","oj-html-slot-default":"0530","oj-html-redwood-clear-icon":"0535","oj-acc-input-aria-label_1":"2000","oj-acc-input-aria-label_2":"2010","oj-acc-input-aria-label_3":"2020","oj-acc-input-aria-label_4":"2030","oj-acc-input-aria-label_5":"2031","oj-acc-input-aria-label_6":"2032","oj-acc-select-aria-label_1":"2040","oj-acc-select-aria-label_2":"2050","oj-acc-select-aria-label_3":"2060","oj-acc-select-aria-label_4":"2070","oj-acc-select-aria-label_5":"2071","oj-acc-select-aria-label_6":"2072","oj-acc-combobox-aria-label_1":"2080","oj-acc-combobox-aria-label_2":"2090","oj-acc-combobox-aria-label_3":"2100","oj-acc-combobox-aria-label_4":"2120","oj-acc-combobox-aria-label_5":"2121","oj-acc-combobox-aria-label_6":"2122","oj-acc-aria-labelledby":"2130","oj-acc-avatar-aria-role":"2140","oj-acc-film-strip-aria-label":"2150","oj-acc-aria-prop":"2160","oj-acc-aria-ojselector-labelledby":"2170","oj-acc-button-onclick":"2180","oj-acc-button-label":"2185","oj-html-cca-tagname":"2200","oj-html-cca-tagname_1":"2201","oj-html-attr-expr-delims":"2211","oj-html-tabbar-edge":"2215","oj-html-tabbar-edge_1":"2216","oj-html-wctag-anti-pattern":"2220","oj-html-prop-anti-pattern":"2225","oj-html-prop-anti-pattern_1":"2226","oj-html-attr-expr-writeback":"2235","oj-html-event-focus-blur":"2240","oj-js-ojcomp-deprecated":"3000","oj-js-comp-meth-deprecated":"3020","oj-js-comp-meth-deprecated_1":"3022","oj-js-comp-meth-deprecated_2":"3023","oj-js-comp-attr-deprecated":"3025","oj-js-comp-attr-deprecated_1":"3026","oj-js-comp-attr-deprecated_2":"3027","oj-js-ojcomp-new":"3060","oj-js-ojcomp-exist":"3070","oj-js-ojcomp-exist_1":"3071","oj-js-var-undef":"3080","oj-js-var-undef_1":"3082","oj-js-poly-promise":"3090","oj-js-noconsole":"3100","oj-js-no-ext-final":"3200","oj-js-public-api":"3205","oj-js-public-api_1":"3206","oj-js-public-api_2":"3207","oj-js-public-api_3":"3208","oj-ts-ojcomp-deprecated":"3400","oj-ts-comp-meth-deprecated":"3420","oj-ts-comp-meth-deprecated_1":"3422","oj-ts-comp-meth-deprecated_2":"3423","oj-ts-comp-attr-deprecated":"3425","oj-ts-comp-attr-deprecated_1":"3426","oj-ts-comp-attr-deprecated_2":"3427","oj-ts-ojcomp-new":"3440","oj-ts-ojcomp-exist":"3445","oj-ts-ojcomp-exist_1":"3450","oj-ts-poly-promise":"3455","oj-ts-noconsole":"3460","oj-ts-no-ext-final":"3465","oj-ts-numconv-pattern":"3470","oj-json-syntax":"4000","oj-html-style":"5000","oj-html-style_1":"5001","oj-html-style-deprecated":"5010","oj-html-ojstyle":"5015","oj-html-style-bp-color":"5020","oj-html-style-bp-font":"5025","oj-html-style-bp-display":"5030","oj-html-self-close":"5035","oj-html-style-bp-font-family":"5040","oj-html-style-abs-units":"5045","oj-html-style-abs-units_1":"5046","oj-html-style-abs-units_2":"5047","oj-html-stylesel":"5080","oj-html-stylesel_1":"5081","oj-html-stylesel_2":"5082","oj-html-stylesel_3":"5083","oj-html-stylesel_4":"5084","oj-html-stylesel_5":"5085","oj-html-stylesel_6":"5086","oj-html-stylesel_7":"5087","oj-html-input-isodate":"5095","oj-html-input-isodate_1":"5096","oj-html-input-isodate_2":"5097","oj-html-input-isodate_3":"5098","oj-html-input-isodate_4":"5099","oj-html-input-isodate_5":"5100","oj-html-input-isodate_6":"5101","oj-html-input-isodate_7":"5102","oj-html-input-isodate_8":"5103","oj-html-input-isodate_9":"5104","oj-html-pageopts-type":"5110","oj-html-pageopts-type_2":"5111","oj-html-style-bp-margin-padding":"5120","oj-html-style-bp-margin-padding_1":"5121","oj-html-style-bp-margin-padding_2":"5122","oj-html-button-size-chroming":"5130","oj-html-button-size-chroming_1":"5131","oj-html-bp-button-xs-chroming":"5135","oj-html-bp-title-to-tooltip":"5140","oj-html-slot-deprecated_aged":"5800","oj-html-ojtag-deprecated_aged":"5805","oj-html-ojattr-deprecated_aged":"5810","oj-html-ojattr-deprecated_1_aged":"5811","oj-html-ojattr-deprecated_2_aged":"5812","oj-html-ojattr-deprecated_3_aged":"5813","oj-html-ojattr-deprecated_user":"5814","oj-html-ojattr-deprecated_1_user":"5815","oj-html-ojattr-deprecated_2_user":"5816","oj-html-ojattr-deprecated_3_user":"5817","oj-html-ojattr-enum-deprecated_aged":"5820","oj-html-alta-deprecated_aged":"5825","oj-js-numconv-pattern":"5830","oj-html-treeview-actionable-content":"5835","oj-html-binding-as-slot-child":"5840","oj-html-binding-as-slot-child_1":"5841","oj-tsx-ojtag-deprecated_aged":"5845","oj-tsx-slot-deprecated_aged":"5850","oj-tsx-ojattr-enum-deprecated_aged":"5855","oj-tsx-ojattr-deprecated_aged":"5860","oj-tsx-ojattr-deprecated_1_aged":"5861","oj-tsx-ojattr-deprecated_2_aged":"5862","oj-tsx-ojattr-deprecated_3_aged":"5863","oj-tsx-ojattr-deprecated_user":"5870","oj-tsx-ojattr-deprecated_1_user":"5871","oj-tsx-ojattr-deprecated_2_user":"5872","oj-tsx-ojattr-deprecated_3_user":"5873","oj-css-style-override_1":"6010","oj-css-style-override_2":"6011","oj-css-style-bp-color":"6015","oj-css-style-deprecated":"6020","oj-css-style-bp-font":"6025","oj-css-style-bp-display":"6030","oj-css-style-bp-font-family":"6035","oj-css-style-abs-units":"6040","oj-css-style-abs-units_1":"6041","oj-css-bp-float":"6045","oj-css-bp-float_1":"6046","oj-css-bp-textalign":"6050","oj-css-bp-textalign_1":"6051","oj-css-bp-border-color":"6060","oj-css-bp-border-color_1":"6061","oj-css-var-override":"6065","oj-css-var-override_1":"6066","oj-css-bp-dir-flow":"6070","oj-tsx-wctag-packprivate":"7000","oj-tsx-ojtag-deprecated":"7010","oj-tsx-ojtag-deprecated_user":"7011","oj-tsx-cca-tagname":"7015","oj-tsx-cca-tagname_1":"7016","oj-tsx-ojattr":"7020","oj-tsx-ojattr_1":"7021","oj-tsx-ojattr_2":"7022","oj-tsx-ojattr-value":"7025","oj-tsx-attr-req":"7030","oj-tsx-5-tag-obs":"7035","oj-tsx-prop-inline-definition":"7040","oj-tsx-aria-ojselector-labelledby":"7050","oj-tsx-aria-prop":"7055","oj-tsx-rating-gauge-size":"7060","oj-tsx-input-isodate":"7065","oj-tsx-input-isodate_1":"7066","oj-tsx-input-isodate_2":"7067","oj-tsx-input-isodate_3":"7068","oj-tsx-input-isodate_4":"7069","oj-tsx-input-isodate_5":"7070","oj-tsx-input-isodate_6":"7071","oj-tsx-input-isodate_7":"7072","oj-tsx-input-isodate_8":"7073","oj-tsx-input-isodate_9":"7074","oj-tsx-unsup-theme":"7080","oj-tsx-unsup-theme_1":"7081","oj-tsx-pageopts-type":"7085","oj-tsx-pageopts-type_1":"7086","oj-tsx-pageopts-type_2":"7087","oj-tsx-pageopts-type_3":"7088","oj-tsx-picker-attrs":"7090","oj-tsx-wctag-nested":"7095","oj-tsx-dlg-title":"7100","oj-tsx-acc-button-onclick":"7105","oj-tsx-acc-avatar-aria-role":"7110","oj-tsx-databind-all":"7115","oj-tsx-wctag-maintenance":"7120","oj-tsx-slot-deprecated":"7125","oj-tsx-slot-deprecated_user":"7126","oj-tsx-ojattr-deprecated":"7130","oj-tsx-ojattr-deprecated_1":"7131","oj-tsx-ojattr-deprecated_2":"7132","oj-tsx-ojattr-deprecated_3":"7133","oj-tsx-jsx-prop":"7135","oj-tsx-jsx-prop_1":"7136","oj-tsx-form-bindif":"7140","oj-tsx-form-noflex":"7145","oj-tsx-rating-gauge-track-resize":"7150","oj-tsx-slot-pref-content":"7155","oj-tsx-slot-pref-content_1":"7156","oj-tsx-ojtag-ns":"7160","oj-tsx-ojtag-ns_1":"7161","oj-tsx-ojattr-enum-deprecated":"7165","oj-tsx-ojattr-enum-deprecated_user":"7166","oj-tsx-tabbar-edge":"7170","oj-tsx-tabbar-edge_1":"7171","oj-tsx-wctag-anti-pattern":"7175","oj-tsx-prop-anti-pattern":"7180","oj-tsx-prop-anti-pattern_1":"7181","oj-tsx-treeview-actionable-content":"7185","oj-tsx-popup-sibling":"7190","oj-tsx-event":"7195","oj-tsx-style-bp-margin-padding":"7200","oj-tsx-style-bp-margin-padding_1":"7201","oj-tsx-style-bp-margin-padding_2":"7202","oj-tsx-style-abs-units":"7210","oj-tsx-style-abs-units_1":"7211","oj-tsx-style-abs-units_2":"7212","oj-tsx-button-size-chroming":"7215","oj-tsx-button-size-chroming_1":"7216","oj-tsx-bp-button-xs-chroming":"7220","oj-tsx-acc-button-label":"7225","oj-tsx-bp-title-to-tooltip":"7230","oj-tsx-slot-default":"7235","oj-tsx-ojtag-datacmd":"7240","oj-tsx-ojtag-datacmd_1":"7241","oj-tsx-ojtag-datacmd_2":"7242","oj-tsx-ojtag-datacmd_3":"7243","oj-tsx-slot-item-minmax":"7250","oj-tsx-slot-item-minmax_1":"7251","oj-tsx-ojoption-text":"7255","oj-tsx-redwood-bp-btn-avatar":"7260","oj-tsx-acc-aria-accessible":"7265","oj-tsx-form-layout-colspan-wrap":"7270","oj-tsx-redwood-clear-icon":"8000","oj-html-ojoption-text":"8005","oj-html-redwood-bp-btn-avatar":"8010","oj-html-public-api":"8015","oj-html-btn-display-icon":"8020","oj-acc-aria-accessible":"8025","oj-html-form-layout-colspan-wrap":"8030","oj-html-tabbar-progressive-popup":"8035","oj-cca-comp-json-file":"9000","oj-cca-comp-json-schema":"9005","oj-cca-comp-json-compdeps":"9010","oj-cca-comp-zip":"9015","oj-cca-comp-zip-type":"9020","oj-cca-comp-zip-content":"9025","oj-cca-comp-zip-content-case":"9030","oj-cca-compjson-bp-obj":"9040","oj-cca-compjson-bp-ar":"9043","oj-cca-compjson-ns-reg":"9046","oj-cca-compjson-ns-reg_1":"9047","oj-cca-compjson-bp-jetver":"9049","oj-cca-compjson-bp-dsplyname":"9052"}
6
+ {"oj-html-ojtag-deprecated":"0010","oj-html-ojtag-deprecated_user":"0011","oj-html-wctag-maintenance":"0014","oj-html-wctag-supersedes":"0015","oj-html-badge-maintenance":"0017","oj-html-attr-json_1":"0020","oj-html-attr-json_2":"0021","oj-html-ojattr":"0040","oj-html-ojattr_1":"0041","oj-html-ojattr-value":"0060","oj-html-attr-2def":"0070","oj-html-attr-prefix-ro":"0073","oj-html-attr-prefix-expr":"0075","oj-html-attr-req":"0077","oj-html-ojattr-deprecated":"0080","oj-html-ojattr-deprecated_1":"0081","oj-html-ojattr-deprecated_2":"0082","oj-html-ojattr-deprecated_3":"0083","oj-html-ojattr-enum-deprecated":"0085","oj-html-ojattr-enum-deprecated_user":"0086","oj-html-ojevent":"0090","oj-html-jq-databind_1":"0100","oj-html-jq-databind_2":"0110","oj-html-jq-databind_3":"0120","oj-html-databind-all":"0130","oj-html-ojslot":"0140","oj-html-slot-deprecated":"0145","oj-html-slot-deprecated_user":"0146","oj-html-slot-name":"0150","oj-html-slot-pref-content":"0153","oj-html-slot-item-minmax":"0156","oj-html-slot-item-minmax_1":"0157","oj-html-binding-attr":"0160","oj-html-bindif-test":"0163","oj-html-bindforeach-data":"0165","oj-html-dlg-title":"0168","oj-html-attr-$unique_1":"0170","oj-html-attr-$unique_2":"0180","oj-html-tag-attr-noprefix":"0190","oj-html-label-for-prefix":"0195","oj-html-ojtag-globattr-noprefix":"0200","oj-html-ojtag-nonglobattr-prefix":"0210","oj-html-invalid-doctype":"0220","oj-html-invalid-doctype_1":"0221","oj-html-missing-doctype":"0230","oj-html-oj-lib":"0240","oj-html-ko-comment":"0250","oj-html-ko-comment_1":"0251","oj-html-ko-databind":"0260","oj-html-cca-count":"0270","oj-html-cca-count_1":"0271","oj-html-cdn":"0280","oj-html-ojattr-evt-syntax":"0290","oj-html-ojtag-datacmd":"0310","oj-html-ojtag-datacmd_1":"0311","oj-html-ojtag-datacmd_2":"0312","oj-html-ojtag-datacmd_3":"0313","oj-html-ojtag-datactx":"0320","oj-html-wctag-id":"0330","oj-html-wctag-id_1":"0331","oj-html-wctag-id_2":"0332","oj-html-wctag-for":"0340","oj-html-wctag-arialabelledby":"0350","oj-html-wctag-$props":"0360","oj-html-wctag-$props_1":"0361","oj-html-wctag-$props_2":"0362","oj-html-wctag-$props_3":"0363","oj-html-form-bindif":"0370","oj-html-ojtag-ns":"0385","oj-html-ojtag-ns_1":"0386","oj-html-unsup-theme":"0390","oj-html-unsup-theme_1":"0391","oj-html-form-noflex":"0395","oj-html-5-tag-obs":"0400","oj-html-5-attr-obs_1":"0410","oj-html-5-attr-obs_2":"0411","oj-html-redwood-cssvars":"0420","oj-html-redwood-cssnovars":"0421","oj-html-redwood-bp-endslot":"0422","oj-html-template-index":"0425","oj-form-maxcols":"0430","oj-form-maxcols_1":"0431","oj-form-maxcols_2":"0432","oj-html-form-layout-maxcols":"0435","oj-html-file-pick-accept":"0450","oj-html-file-pick-accept_1":"0451","oj-html-file-pick-accept_2":"0452","oj-html-wctag-packprivate":"0465","oj-html-picker-attrs":"0470","oj-html-wctag-nested":"0480","oj-html-notag-style":"0490","oj-html-notag-style_1":"0491","oj-html-msgs-cat-text":"0495","oj-html-msgs-cat-text_1":"0496","oj-html-msgs-cat-text_2":"0497","oj-html-msgs-cat-text_3":"0498","oj-html-no-style":"0505","oj-html-no-style-tag":"0505","oj-html-alta-deprecated":"0510","oj-html-rating-gauge-size":"0520","oj-html-rating-gauge-track-resize":"0525","oj-html-slot-default":"0530","oj-html-redwood-clear-icon":"0535","oj-acc-input-aria-label_1":"2000","oj-acc-input-aria-label_2":"2010","oj-acc-input-aria-label_3":"2020","oj-acc-input-aria-label_4":"2030","oj-acc-input-aria-label_5":"2031","oj-acc-input-aria-label_6":"2032","oj-acc-select-aria-label_1":"2040","oj-acc-select-aria-label_2":"2050","oj-acc-select-aria-label_3":"2060","oj-acc-select-aria-label_4":"2070","oj-acc-select-aria-label_5":"2071","oj-acc-select-aria-label_6":"2072","oj-acc-combobox-aria-label_1":"2080","oj-acc-combobox-aria-label_2":"2090","oj-acc-combobox-aria-label_3":"2100","oj-acc-combobox-aria-label_4":"2120","oj-acc-combobox-aria-label_5":"2121","oj-acc-combobox-aria-label_6":"2122","oj-acc-aria-labelledby":"2130","oj-acc-avatar-aria-role":"2140","oj-acc-film-strip-aria-label":"2150","oj-acc-aria-prop":"2160","oj-acc-aria-ojselector-labelledby":"2170","oj-acc-button-onclick":"2180","oj-acc-button-label":"2185","oj-acc-navigable-link":"2190","oj-html-cca-tagname":"2200","oj-html-cca-tagname_1":"2201","oj-html-attr-expr-delims":"2211","oj-html-tabbar-edge":"2215","oj-html-tabbar-edge_1":"2216","oj-html-wctag-anti-pattern":"2220","oj-html-prop-anti-pattern":"2225","oj-html-prop-anti-pattern_1":"2226","oj-html-attr-expr-writeback":"2235","oj-html-event-focus-blur":"2240","oj-html-corequired":"2260","oj-js-ojcomp-deprecated":"3000","oj-js-comp-meth-deprecated":"3020","oj-js-comp-meth-deprecated_1":"3022","oj-js-comp-meth-deprecated_2":"3023","oj-js-comp-attr-deprecated":"3025","oj-js-comp-attr-deprecated_1":"3026","oj-js-comp-attr-deprecated_2":"3027","oj-js-ojcomp-new":"3060","oj-js-ojcomp-exist":"3070","oj-js-ojcomp-exist_1":"3071","oj-js-var-undef":"3080","oj-js-var-undef_1":"3082","oj-js-poly-promise":"3090","oj-js-noconsole":"3100","oj-js-no-ext-final":"3200","oj-js-public-api":"3205","oj-js-public-api_1":"3206","oj-js-public-api_2":"3207","oj-js-public-api_3":"3208","oj-ts-ojcomp-deprecated":"3400","oj-ts-comp-meth-deprecated":"3420","oj-ts-comp-meth-deprecated_1":"3422","oj-ts-comp-meth-deprecated_2":"3423","oj-ts-comp-attr-deprecated":"3425","oj-ts-comp-attr-deprecated_1":"3426","oj-ts-comp-attr-deprecated_2":"3427","oj-ts-ojcomp-new":"3440","oj-ts-ojcomp-exist":"3445","oj-ts-ojcomp-exist_1":"3450","oj-ts-poly-promise":"3455","oj-ts-noconsole":"3460","oj-ts-no-ext-final":"3465","oj-ts-numconv-pattern":"3470","oj-json-syntax":"4000","oj-html-style":"5000","oj-html-style_1":"5001","oj-html-style-deprecated":"5010","oj-html-ojstyle":"5015","oj-html-style-bp-color":"5020","oj-html-style-bp-font":"5025","oj-html-style-bp-display":"5030","oj-html-self-close":"5035","oj-html-style-bp-font-family":"5040","oj-html-style-abs-units":"5045","oj-html-style-abs-units_1":"5046","oj-html-style-abs-units_2":"5047","oj-html-stylesel":"5080","oj-html-stylesel_1":"5081","oj-html-stylesel_2":"5082","oj-html-stylesel_3":"5083","oj-html-stylesel_4":"5084","oj-html-stylesel_5":"5085","oj-html-stylesel_6":"5086","oj-html-stylesel_7":"5087","oj-html-input-isodate":"5095","oj-html-input-isodate_1":"5096","oj-html-input-isodate_2":"5097","oj-html-input-isodate_3":"5098","oj-html-input-isodate_4":"5099","oj-html-input-isodate_5":"5100","oj-html-input-isodate_6":"5101","oj-html-input-isodate_7":"5102","oj-html-input-isodate_8":"5103","oj-html-input-isodate_9":"5104","oj-html-pageopts-type":"5110","oj-html-pageopts-type_2":"5111","oj-html-style-bp-margin-padding":"5120","oj-html-style-bp-margin-padding_1":"5121","oj-html-style-bp-margin-padding_2":"5122","oj-html-button-size-chroming":"5130","oj-html-button-size-chroming_1":"5131","oj-html-bp-button-xs-chroming":"5135","oj-html-bp-title-to-tooltip":"5140","oj-html-slot-deprecated_aged":"5800","oj-html-ojtag-deprecated_aged":"5805","oj-html-ojattr-deprecated_aged":"5810","oj-html-ojattr-deprecated_1_aged":"5811","oj-html-ojattr-deprecated_2_aged":"5812","oj-html-ojattr-deprecated_3_aged":"5813","oj-html-ojattr-deprecated_user":"5814","oj-html-ojattr-deprecated_1_user":"5815","oj-html-ojattr-deprecated_2_user":"5816","oj-html-ojattr-deprecated_3_user":"5817","oj-html-ojattr-enum-deprecated_aged":"5820","oj-html-alta-deprecated_aged":"5825","oj-js-numconv-pattern":"5830","oj-html-treeview-actionable-content":"5835","oj-html-binding-as-slot-child":"5840","oj-html-binding-as-slot-child_1":"5841","oj-tsx-ojtag-deprecated_aged":"5845","oj-tsx-slot-deprecated_aged":"5850","oj-tsx-ojattr-enum-deprecated_aged":"5855","oj-tsx-ojattr-deprecated_aged":"5860","oj-tsx-ojattr-deprecated_1_aged":"5861","oj-tsx-ojattr-deprecated_2_aged":"5862","oj-tsx-ojattr-deprecated_3_aged":"5863","oj-tsx-ojattr-deprecated_user":"5870","oj-tsx-ojattr-deprecated_1_user":"5871","oj-tsx-ojattr-deprecated_2_user":"5872","oj-tsx-ojattr-deprecated_3_user":"5873","oj-css-style-override_1":"6010","oj-css-style-override_2":"6011","oj-css-style-bp-color":"6015","oj-css-style-deprecated":"6020","oj-css-style-bp-font":"6025","oj-css-style-bp-display":"6030","oj-css-style-bp-font-family":"6035","oj-css-style-abs-units":"6040","oj-css-style-abs-units_1":"6041","oj-css-bp-float":"6045","oj-css-bp-float_1":"6046","oj-css-bp-textalign":"6050","oj-css-bp-textalign_1":"6051","oj-css-bp-border-color":"6060","oj-css-bp-border-color_1":"6061","oj-css-var-override":"6065","oj-css-var-override_1":"6066","oj-css-bp-dir-flow":"6070","oj-css-bp-zindex":"6075","oj-css-bp-zindex_1":"6076","oj-tsx-wctag-packprivate":"7000","oj-tsx-ojtag-deprecated":"7010","oj-tsx-ojtag-deprecated_user":"7011","oj-tsx-cca-tagname":"7015","oj-tsx-cca-tagname_1":"7016","oj-tsx-ojattr":"7020","oj-tsx-ojattr_1":"7021","oj-tsx-ojattr_2":"7022","oj-tsx-ojattr-value":"7025","oj-tsx-attr-req":"7030","oj-tsx-5-tag-obs":"7035","oj-tsx-prop-inline-definition":"7040","oj-tsx-aria-ojselector-labelledby":"7050","oj-tsx-aria-prop":"7055","oj-tsx-rating-gauge-size":"7060","oj-tsx-input-isodate":"7065","oj-tsx-input-isodate_1":"7066","oj-tsx-input-isodate_2":"7067","oj-tsx-input-isodate_3":"7068","oj-tsx-input-isodate_4":"7069","oj-tsx-input-isodate_5":"7070","oj-tsx-input-isodate_6":"7071","oj-tsx-input-isodate_7":"7072","oj-tsx-input-isodate_8":"7073","oj-tsx-input-isodate_9":"7074","oj-tsx-unsup-theme":"7080","oj-tsx-unsup-theme_1":"7081","oj-tsx-pageopts-type":"7085","oj-tsx-pageopts-type_1":"7086","oj-tsx-pageopts-type_2":"7087","oj-tsx-pageopts-type_3":"7088","oj-tsx-picker-attrs":"7090","oj-tsx-wctag-nested":"7095","oj-tsx-dlg-title":"7100","oj-tsx-acc-button-onclick":"7105","oj-tsx-acc-avatar-aria-role":"7110","oj-tsx-databind-all":"7115","oj-tsx-wctag-maintenance":"7120","oj-tsx-slot-deprecated":"7125","oj-tsx-slot-deprecated_user":"7126","oj-tsx-ojattr-deprecated":"7130","oj-tsx-ojattr-deprecated_1":"7131","oj-tsx-ojattr-deprecated_2":"7132","oj-tsx-ojattr-deprecated_3":"7133","oj-tsx-jsx-prop":"7135","oj-tsx-jsx-prop_1":"7136","oj-tsx-form-bindif":"7140","oj-tsx-form-noflex":"7145","oj-tsx-rating-gauge-track-resize":"7150","oj-tsx-slot-pref-content":"7155","oj-tsx-slot-pref-content_1":"7156","oj-tsx-ojtag-ns":"7160","oj-tsx-ojtag-ns_1":"7161","oj-tsx-ojattr-enum-deprecated":"7165","oj-tsx-ojattr-enum-deprecated_user":"7166","oj-tsx-tabbar-edge":"7170","oj-tsx-tabbar-edge_1":"7171","oj-tsx-wctag-anti-pattern":"7175","oj-tsx-prop-anti-pattern":"7180","oj-tsx-prop-anti-pattern_1":"7181","oj-tsx-treeview-actionable-content":"7185","oj-tsx-popup-sibling":"7190","oj-tsx-event":"7195","oj-tsx-style-bp-margin-padding":"7200","oj-tsx-style-bp-margin-padding_1":"7201","oj-tsx-style-bp-margin-padding_2":"7202","oj-tsx-style-abs-units":"7210","oj-tsx-style-abs-units_1":"7211","oj-tsx-style-abs-units_2":"7212","oj-tsx-button-size-chroming":"7215","oj-tsx-button-size-chroming_1":"7216","oj-tsx-bp-button-xs-chroming":"7220","oj-tsx-acc-button-label":"7225","oj-tsx-bp-title-to-tooltip":"7230","oj-tsx-slot-default":"7235","oj-tsx-ojtag-datacmd":"7240","oj-tsx-ojtag-datacmd_1":"7241","oj-tsx-ojtag-datacmd_2":"7242","oj-tsx-ojtag-datacmd_3":"7243","oj-tsx-slot-item-minmax":"7250","oj-tsx-slot-item-minmax_1":"7251","oj-tsx-ojoption-text":"7255","oj-tsx-redwood-bp-btn-avatar":"7260","oj-tsx-acc-aria-accessible":"7265","oj-tsx-form-layout-colspan-wrap":"7270","oj-tsx-prop-ko-binding":"7275","oj-tsx-acc-navigable-link":"7278","oj-tsx-corequired":"7280","oj-tsx-tabbar-progressive-popup":"7285","oj-tsx-redwood-clear-icon":"8000","oj-html-ojoption-text":"8005","oj-html-redwood-bp-btn-avatar":"8010","oj-html-public-api":"8015","oj-html-btn-display-icon":"8020","oj-acc-aria-accessible":"8025","oj-html-form-layout-colspan-wrap":"8030","oj-html-tabbar-progressive-popup":"8035","oj-html-oj-ux-ico-slot":"8040","oj-cca-compjson-prop-conflict":"8045","oj-cca-compjson-prop-conflict_1":"8046","oj-cca-compjson-prop-conflict_2":"8047","oj-html-nav-tab-nointeractive":"8050","oj-html-redwood-ojoption-disabled":"8055","oj-cca-comp-json-file":"9000","oj-cca-comp-json-schema":"9005","oj-cca-comp-json-compdeps":"9010","oj-cca-comp-zip":"9015","oj-cca-comp-zip-type":"9020","oj-cca-comp-zip-content":"9025","oj-cca-comp-zip-content-case":"9030","oj-cca-compjson-bp-obj":"9040","oj-cca-compjson-bp-ar":"9043","oj-cca-compjson-ns-reg":"9046","oj-cca-compjson-ns-reg_1":"9047","oj-cca-compjson-bp-jetver":"9049","oj-cca-compjson-bp-dsplyname":"9052"}
@@ -3,4 +3,4 @@
3
3
  * Licensed under The Universal Permissive License (UPL), Version 1.0
4
4
  * as shown at https://oss.oracle.com/licenses/upl/
5
5
  */
6
- const RULENAME="oj-acc-aria-accessible";const DESCRIPTION="For components <oj-c-rating-gauge>, <oj-c-meter-bar>, or <oj-c-meter-circle> to be "+"accessible, one of the following WAI-ARIA attributes:<br>"+"1) 'aria-label', 'aria-labelledby', or 'aria-describedby'<br>"+"or one of these attributes:<br>"+"2) 'labelled-by', or 'described-by'<br>"+"is required.";const SHORT_DESCRIPTION="<oj-c-rating-gauge>, <oj-c-meter-bar>, or <oj-c-meter-circle> require one of these attributes - 'aria-label', 'aria-labelledby', "+"'aria-describedby', 'labelled-by', or 'described-by', to be accessible";const ARIA_ATTRIBS=["aria-label","aria-labelledby","aria-describedby","labelled-by","described-by"];class Rule{getName(){return RULENAME}getDescription(){return DESCRIPTION}getShortDescription(){return SHORT_DESCRIPTION}register(){return{"<oj-c-rating-gauge>":this._onComp,"<oj-c-meter-bar>":this._onComp,"<oj-c-meter-circle>":this._onComp}}_onComp(ruleCtx){var attribs,attrib;if(attribs=ruleCtx.tagNode.attribs){for(attrib in attribs){if(ARIA_ATTRIBS.includes(attrib)){return}}this._emitIssue(ruleCtx)}}_emitIssue(ruleCtx){var issue,msg;msg=`For <${ruleCtx.tagNode.name}> accessibility, either 'aria-label', 'aria-labelledby', 'aria-describedby', 'labelled-by' or 'described-by' must be set.`;issue=new ruleCtx.Issue(msg);ruleCtx.reporter.addIssue(issue,ruleCtx)}}module.exports=Rule;
6
+ const RULENAME="oj-acc-aria-accessible";const DESCRIPTION="For components <oj-c-rating-gauge>, <oj-c-meter-bar>, or <oj-c-meter-circle> to be "+"accessible, one of the following WAI-ARIA attributes:<br>"+"1) 'aria-label', 'aria-labelledby', or 'aria-describedby'<br>"+"or one of these attributes:<br>"+"2) 'labelled-by', or 'described-by'<br>"+"is required.";const SHORT_DESCRIPTION="<oj-c-rating-gauge>, <oj-c-meter-bar>, or <oj-c-meter-circle> require one of these attributes - 'aria-label', 'aria-labelledby', "+"'aria-describedby', 'labelled-by', or 'described-by', to be accessible";const ARIA_ATTRIBS=["aria-label","aria-labelledby","aria-describedby","labelled-by","described-by"];const COLON=":";class Rule{getName(){return RULENAME}getDescription(){return DESCRIPTION}getShortDescription(){return SHORT_DESCRIPTION}register(){return{"<oj-c-rating-gauge>":this._onComp,"<oj-c-meter-bar>":this._onComp,"<oj-c-meter-circle>":this._onComp}}_onComp(ruleCtx){var attribs,attrib;if(attribs=ruleCtx.tagNode.attribs){for(attrib in attribs){if(attrib.charAt(0)===COLON){attrib=attrib.substring(1)}if(ARIA_ATTRIBS.includes(attrib)){return}}this._emitIssue(ruleCtx)}}_emitIssue(ruleCtx){var issue,msg;msg=`For <${ruleCtx.tagNode.name}> accessibility, either 'aria-label', 'aria-labelledby', 'aria-describedby', 'labelled-by' or 'described-by' must be set.`;issue=new ruleCtx.Issue(msg);ruleCtx.reporter.addIssue(issue,ruleCtx)}}module.exports=Rule;
@@ -3,4 +3,4 @@
3
3
  * Licensed under The Universal Permissive License (UPL), Version 1.0
4
4
  * as shown at https://oss.oracle.com/licenses/upl/
5
5
  */
6
- const RULE_NAME="oj-acc-aria-prop";const DESCRIPTION="Attributes beginning with <i>'aria-'</i> must be valid WAI-ARIA definitions.";const ARIA="aria-";function getName(){return RULE_NAME};function getShortDescription(){return DESCRIPTION};function getDescription(){return DESCRIPTION};function register(){return{"elem":_onElem}};function _onElem(ruleCtx){var attribs,attrib;attribs=ruleCtx.tagNode.attribs;if(attribs){for(attrib in attribs){let DomUtils=ruleCtx.utils.DomUtils;if(attrib.startsWith(ARIA)){if(!DomUtils.isAriaAttr(attrib)){let issue=new ruleCtx.Issue("<"+ruleCtx.tagNode.name+"> '"+attrib+"' is not a valid WAI-ARIA definition");let attrPos=DomUtils.getAttribPosition(ruleCtx.data,ruleCtx.node,attrib);issue.setPosition(attrPos.row,attrPos.col,attrPos.start,attrPos.end);ruleCtx.reporter.addIssue(issue,ruleCtx)}}}}};module.exports={getName,getDescription,getShortDescription,register};
6
+ const RULE_NAME="oj-acc-aria-prop";const DESCRIPTION="Attributes beginning with <i>'aria-'</i> must be valid WAI-ARIA definitions.";const ARIA="aria-";function getName(){return RULE_NAME};function getShortDescription(){return DESCRIPTION};function getDescription(){return DESCRIPTION};function register(){return{"attr-aria":_onAriaAttrib}};function _onAriaAttrib(ruleCtx,attrName){if(!this._DomUtils){this._DomUtils=ruleCtx.utils.DomUtils}if(!this._DomUtils.isAriaAttr(attrName)){let issue=new ruleCtx.Issue("<"+ruleCtx.tagNode.name+"> '"+attrName+"' is not a valid WAI-ARIA definition");let attrPos=this._DomUtils.getAttribPosition(ruleCtx.data,ruleCtx.tagNode,attrName);issue.setPosition(attrPos.row,attrPos.col,attrPos.start,attrPos.end);ruleCtx.reporter.addIssue(issue,ruleCtx)}};module.exports={getName,getDescription,getShortDescription,register};
@@ -0,0 +1,6 @@
1
+ /*
2
+ * Copyright (c) 2018, 2025, Oracle and/or its affiliates.
3
+ * Licensed under The Universal Permissive License (UPL), Version 1.0
4
+ * as shown at https://oss.oracle.com/licenses/upl/
5
+ */
6
+ const RULENAME="oj-acc-navigable-link";const DESCRIPTION="In order to be keyboard accessible, hyperlinks must be defined with either an 'href' or a 'tabindex' property (or both).";const SHORT_DESCRIPTION="Ensure that hyperlinks on the page are keyboard accessible";const HREF="href";const TABINDEX="tabindex";const COLON=":";class Rule{getName(){return RULENAME}getDescription(){return DESCRIPTION}getShortDescription(){return SHORT_DESCRIPTION}register(){return{"globtag(a)":this._onAnchor}}_onAnchor(ruleCtx,tagName){var attribs;if(attribs=ruleCtx.node.attribs){let a=Object.keys(attribs);let attrib,i;for(i=0;i<a.length;i++){attrib=a[i];attrib=attrib.charAt(0)===COLON?attrib.substring(1):attrib;if(attrib===HREF||attrib===TABINDEX){return}}}let msg="<a> must have an 'href' or 'tabindex' property to be keyboard accessible.";ruleCtx.reporter.addIssue(new ruleCtx.Issue(msg),ruleCtx)}}module.exports=Rule;
@@ -3,4 +3,4 @@
3
3
  * Licensed under The Universal Permissive License (UPL), Version 1.0
4
4
  * as shown at https://oss.oracle.com/licenses/upl/
5
5
  */
6
- const helper=require("./helpers/acc-aria-label");const RULE_NAME="oj-acc-select-aria-label";const DESCRIPTION="For accessibility, a select element must have a matching <oj-label> with a <i>'for'</i> matching the select element <i>'id'</i>"+", or an <i>aria-label</i> attribute.<br>If 'label-hint' is specified and 'label-edge' is not, the default "+"value for 'label-edge' is theme dependant (refer to configuration property 'theme'), and label generation may be affected.<br>"+"Set 'label-hint' or associate an 'oj-label'. If there is no visible label, then to make this accessible to screen readers, set "+"'label-hint' and label-edge='none' - this will render an 'aria-label' with the 'label-hint' text.";const SHORT_DESCRIPTION="For accessibility, a select element must have a matching <oj-label> with a 'for' matching the select 'id'";class Rule{getName(){return RULE_NAME}getDescription(){return DESCRIPTION}getShortDescription(){return SHORT_DESCRIPTION}register(regCtx){this._theme=regCtx.config.theme;return{"<oj-select-many>":this._onSelect,"<oj-select-single>":this._onSelect,"<oj-select-one>":this._onSelect,"<oj-c-select-multiple>":this._onSelect,"<oj-c-select-single>":this._onSelect}}_onSelect(ruleCtx,tagName){var issues;if(issues=helper(ruleCtx,tagName,this._theme)){issues.forEach(issue=>{ruleCtx.reporter.addIssue(issue,ruleCtx)})}}}module.exports=Rule;
6
+ const helper=require("./helpers/acc-aria-label");const RULE_NAME="oj-acc-select-aria-label";const DESCRIPTION="For accessibility, a select element must have a matching <oj-label> with a <i>'for'</i> matching the select element <i>'id'</i>"+", or an <i>aria-label</i> attribute.<br>If 'label-hint' is specified and 'label-edge' is not, the default "+"value for 'label-edge' is theme dependant (refer to configuration property 'theme'), and label generation may be affected.<br>"+"Set 'label-hint' or associate an 'oj-label'. If there is no visible label, then to make this accessible to screen readers, set "+"'label-hint' and label-edge='none' - this will render an 'aria-label' with the 'label-hint' text.";const SHORT_DESCRIPTION="For accessibility, a select element must have a matching <oj-label> with a 'for' matching the select 'id'";class Rule{getName(){return RULE_NAME}getDescription(){return DESCRIPTION}getShortDescription(){return SHORT_DESCRIPTION}register(regCtx){this._theme=regCtx.config.theme;return{"<oj-select-many>":this._onSelect,"<oj-select-single>":this._onSelect,"<oj-select-one>":this._onSelect}}_onSelect(ruleCtx,tagName){var issues;if(issues=helper(ruleCtx,tagName,this._theme)){issues.forEach(issue=>{ruleCtx.reporter.addIssue(issue,ruleCtx)})}}}module.exports=Rule;