@oracle/oraclejet-audit 11.1.3 → 12.1.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 (364) hide show
  1. package/LICENSE.md +1 -1
  2. package/jaf-amd.js +6 -6
  3. package/jaf.js +2 -2
  4. package/jafapi.js +2 -2
  5. package/lib/AST.js +1 -1
  6. package/lib/AST_Ts.js +2 -2
  7. package/lib/AstJson.js +1 -1
  8. package/lib/AstMd.js +6 -0
  9. package/lib/AstNodeTypes.js +2 -2
  10. package/lib/Comments.js +1 -1
  11. package/lib/ComponentSvcs.js +1 -1
  12. package/lib/Components.js +2 -2
  13. package/lib/Config.js +2 -2
  14. package/lib/ConfigLib.js +2 -2
  15. package/lib/CssLib.js +1 -1
  16. package/lib/CssUtils.js +1 -1
  17. package/lib/DomUtils.js +2 -2
  18. package/lib/FileIndex.js +1 -1
  19. package/lib/FileSet.js +1 -1
  20. package/lib/FsUtils.js +2 -2
  21. package/lib/Histo.js +2 -2
  22. package/lib/HtmlTree.js +2 -2
  23. package/lib/HtmlUtils.js +1 -1
  24. package/lib/Issue.js +2 -2
  25. package/lib/JafEvents.js +1 -1
  26. package/lib/JafLib.js +2 -2
  27. package/lib/Json.js +2 -2
  28. package/lib/JsonLoader.js +2 -2
  29. package/lib/Md.js +6 -0
  30. package/lib/MetaLib.js +2 -2
  31. package/lib/NetUtils.js +1 -1
  32. package/lib/NodeTypes.js +1 -1
  33. package/lib/Parser.js +2 -2
  34. package/lib/RegTypes.js +2 -2
  35. package/lib/Registry.js +2 -2
  36. package/lib/Reporter.js +2 -2
  37. package/lib/RuleContext.js +1 -1
  38. package/lib/RulePack.js +1 -1
  39. package/lib/RuleSet.js +2 -2
  40. package/lib/Rules.js +2 -2
  41. package/lib/Scope.js +2 -2
  42. package/lib/SemVer.js +1 -1
  43. package/lib/Server.js +1 -1
  44. package/lib/SevLib.js +1 -1
  45. package/lib/Severity.js +1 -1
  46. package/lib/Stats.js +1 -1
  47. package/lib/Ts.js +2 -2
  48. package/lib/Utils.js +2 -2
  49. package/lib/Watch.js +1 -1
  50. package/lib/Writer.js +1 -1
  51. package/lib/ZipUtils.js +1 -1
  52. package/lib/api.js +2 -2
  53. package/lib/builtinpacks.js +6 -0
  54. package/lib/cliStats.js +2 -2
  55. package/lib/clone.js +2 -2
  56. package/lib/cmdline.js +2 -2
  57. package/lib/colors.js +2 -2
  58. package/lib/defaults.js +6 -0
  59. package/lib/deflist.js +6 -0
  60. package/lib/dislist.js +6 -0
  61. package/lib/exportRules.js +1 -1
  62. package/lib/extends.js +2 -2
  63. package/lib/filetypes.js +2 -2
  64. package/lib/grouplist.js +6 -0
  65. package/lib/groups.js +2 -2
  66. package/lib/help.js +2 -2
  67. package/lib/jetver.js +2 -2
  68. package/lib/macros.js +1 -1
  69. package/lib/manual.js +6 -0
  70. package/lib/metaLoader.js +1 -1
  71. package/lib/metahist.js +1 -1
  72. package/lib/msgidLoader.js +1 -1
  73. package/lib/ns.js +2 -2
  74. package/lib/nslist.js +1 -1
  75. package/lib/outFormat.js +1 -1
  76. package/lib/outfile.js +1 -1
  77. package/lib/ruleLoader.js +1 -1
  78. package/lib/scaffold.js +2 -2
  79. package/lib/scaffoldRule.js +2 -2
  80. package/lib/schema.js +2 -2
  81. package/lib/scopewalker.js +2 -2
  82. package/lib/spinner.js +2 -2
  83. package/lib/spinnernoop.js +1 -1
  84. package/lib/tabs.js +1 -1
  85. package/libext/expparser.js +1 -1
  86. package/meta/11.1.0/jetauditmeta.js +1 -1
  87. package/meta/12.0.0/jetauditmeta.js +9 -0
  88. package/meta/12.1.0/jetauditmeta.js +9 -0
  89. package/meta/metaverlist.json +1 -1
  90. package/package.json +72 -68
  91. package/rulepacks/csp/csp-html-script-unsafe-inline.js +1 -1
  92. package/rulepacks/csp/csp-html-style-unsafe-inline.js +1 -1
  93. package/rulepacks/csp/csp-html-unsafe-expr.js +1 -1
  94. package/rulepacks/csp/csp-js-script-unsafe-eval.js +1 -1
  95. package/rulepacks/csp/csp-js-style-unsafe-inline.js +1 -1
  96. package/rulepacks/csp/csp-ts-script-unsafe-eval.js +1 -1
  97. package/rulepacks/csp/csp-ts-style-unsafe-inline.js +1 -1
  98. package/rulepacks/csp/msgid.json +1 -1
  99. package/rulepacks/csp/rules.json +1 -1
  100. package/rulepacks/jetwc/jetwc-absolute-jetversion.js +2 -2
  101. package/rulepacks/jetwc/jetwc-aria-redefinition.js +2 -2
  102. package/rulepacks/jetwc/jetwc-bootstrap.js +2 -2
  103. package/rulepacks/jetwc/jetwc-compjson-bp-ar.js +2 -2
  104. package/rulepacks/jetwc/jetwc-compjson-bp-obj.js +2 -2
  105. package/rulepacks/jetwc/jetwc-component-dependencies.js +2 -2
  106. package/rulepacks/jetwc/jetwc-component-displayname.js +2 -2
  107. package/rulepacks/jetwc/jetwc-component-foldername.js +2 -2
  108. package/rulepacks/jetwc/jetwc-component-location.js +2 -2
  109. package/rulepacks/jetwc/jetwc-component-type.js +2 -2
  110. package/rulepacks/jetwc/jetwc-css-oj-complete.js +6 -0
  111. package/rulepacks/jetwc/jetwc-data-property-prefix.js +2 -2
  112. package/rulepacks/jetwc/jetwc-deprecated-lifecycle.js +2 -2
  113. package/rulepacks/jetwc/jetwc-disabled-property.js +2 -2
  114. package/rulepacks/jetwc/jetwc-displayname.js +2 -2
  115. package/rulepacks/jetwc/jetwc-dynamic-slot-context.js +2 -2
  116. package/rulepacks/jetwc/jetwc-dynamic-slots-naming.js +2 -2
  117. package/rulepacks/jetwc/jetwc-event-displayname.js +2 -2
  118. package/rulepacks/jetwc/jetwc-events.js +2 -2
  119. package/rulepacks/jetwc/jetwc-jet-version.js +2 -2
  120. package/rulepacks/jetwc/jetwc-loader-file.js +2 -2
  121. package/rulepacks/jetwc/jetwc-markdown-link.js +6 -0
  122. package/rulepacks/jetwc/jetwc-method-displayname.js +2 -2
  123. package/rulepacks/jetwc/jetwc-methods.js +2 -2
  124. package/rulepacks/jetwc/jetwc-namespace.js +2 -2
  125. package/rulepacks/jetwc/jetwc-nested-defaults.js +2 -2
  126. package/rulepacks/jetwc/jetwc-nls-languages.js +2 -2
  127. package/rulepacks/jetwc/jetwc-nls-root.js +2 -2
  128. package/rulepacks/jetwc/jetwc-oj-register.js +2 -2
  129. package/rulepacks/jetwc/jetwc-ojcss.js +2 -2
  130. package/rulepacks/jetwc/jetwc-pack-children.js +2 -2
  131. package/rulepacks/jetwc/jetwc-packable-components.js +2 -2
  132. package/rulepacks/jetwc/jetwc-prerelease-dependencies.js +2 -2
  133. package/rulepacks/jetwc/jetwc-prerelease-pattern.js +2 -2
  134. package/rulepacks/jetwc/jetwc-prerelease-version.js +2 -2
  135. package/rulepacks/jetwc/jetwc-property-changed.js +2 -2
  136. package/rulepacks/jetwc/jetwc-property-displayname.js +2 -2
  137. package/rulepacks/jetwc/jetwc-property-nesting.js +2 -2
  138. package/rulepacks/jetwc/jetwc-public-modules.js +2 -2
  139. package/rulepacks/jetwc/jetwc-register-css.js +2 -2
  140. package/rulepacks/jetwc/jetwc-register-with-promises.js +2 -2
  141. package/rulepacks/jetwc/jetwc-require-paths.js +2 -2
  142. package/rulepacks/jetwc/jetwc-required-subproperty.js +2 -2
  143. package/rulepacks/jetwc/jetwc-reserved-property.js +2 -2
  144. package/rulepacks/jetwc/jetwc-schema.js +2 -2
  145. package/rulepacks/jetwc/jetwc-semantic-version.js +2 -2
  146. package/rulepacks/jetwc/jetwc-slot-displayname.js +2 -2
  147. package/rulepacks/jetwc/jetwc-slots.js +2 -2
  148. package/rulepacks/jetwc/jetwc-standard-files.js +2 -2
  149. package/rulepacks/jetwc/jetwc-subproperty-writeback.js +2 -2
  150. package/rulepacks/jetwc/jetwc-template-slots.js +2 -2
  151. package/rulepacks/jetwc/jetwc-unused-events.js +2 -2
  152. package/rulepacks/jetwc/jetwc-unused-slots.js +2 -2
  153. package/rulepacks/jetwc/jetwc-vb-category.js +2 -2
  154. package/rulepacks/jetwc/jetwc-vb-icon.js +2 -2
  155. package/rulepacks/jetwc/jetwc-vcomponent-jetversion.js +6 -0
  156. package/rulepacks/jetwc/jetwc-vcomponent-loader.js +6 -0
  157. package/rulepacks/jetwc/jetwc-vcomponent-version.js +6 -0
  158. package/rulepacks/jetwc/jetwc-version-openrange.js +2 -2
  159. package/rulepacks/jetwc/jetwc-writeback-required.js +2 -2
  160. package/rulepacks/jetwc/msgid.json +2 -2
  161. package/rulepacks/jetwc/rules.json +2 -2
  162. package/rulepacks/jetwc-lib/jetwcutils-auditComponentCacheManager.js +6 -0
  163. package/rulepacks/jetwc-lib/jetwcutils-commonListenerImpls.js +6 -0
  164. package/rulepacks/jetwc-lib/jetwcutils-componentAuditUtils.js +6 -0
  165. package/rulepacks/jetwc-lib/jetwcutils-componentFinder.js +6 -0
  166. package/rulepacks/jetwc-lib/jetwcutils-preCompiler.js +6 -0
  167. package/rulepacks/jetwc-lib/jetwcutils-tsxUtils.js +6 -0
  168. package/rulepacks/jetwco/jetwco-bootstrap.js +2 -2
  169. package/rulepacks/jetwco/jetwco-cacc-auditConstraints.js +6 -0
  170. package/rulepacks/jetwco/jetwco-cacc-dependencies.js +6 -0
  171. package/rulepacks/jetwco/jetwco-cacc-dynamicSlots.js +6 -0
  172. package/rulepacks/jetwco/jetwco-cacc-eventBubbles.js +6 -0
  173. package/rulepacks/jetwco/jetwco-cacc-eventCancelable.js +6 -0
  174. package/rulepacks/jetwco/jetwco-cacc-eventPayload.js +6 -0
  175. package/rulepacks/jetwco/jetwco-cacc-events.js +6 -0
  176. package/rulepacks/jetwco/jetwco-cacc-helpers.js +6 -0
  177. package/rulepacks/jetwco/jetwco-cacc-jetVer.js +6 -0
  178. package/rulepacks/jetwco/jetwco-cacc-methodParamTypes.js +6 -0
  179. package/rulepacks/jetwco/jetwco-cacc-methodParams.js +6 -0
  180. package/rulepacks/jetwco/jetwco-cacc-methodReturnType.js +6 -0
  181. package/rulepacks/jetwco/jetwco-cacc-methods.js +6 -0
  182. package/rulepacks/jetwco/jetwco-cacc-packBundle.js +6 -0
  183. package/rulepacks/jetwco/jetwco-cacc-packBundleContent.js +6 -0
  184. package/rulepacks/jetwco/jetwco-cacc-packContent.js +6 -0
  185. package/rulepacks/jetwco/jetwco-cacc-properties.js +6 -0
  186. package/rulepacks/jetwco/jetwco-cacc-propertyDefault.js +6 -0
  187. package/rulepacks/jetwco/jetwco-cacc-propertyEnumeration.js +6 -0
  188. package/rulepacks/jetwco/jetwco-cacc-propertyReadOnly.js +6 -0
  189. package/rulepacks/jetwco/jetwco-cacc-propertyRequired.js +6 -0
  190. package/rulepacks/jetwco/jetwco-cacc-propertyType.js +6 -0
  191. package/rulepacks/jetwco/jetwco-cacc-propertyWriteback.js +6 -0
  192. package/rulepacks/jetwco/jetwco-cacc-publicModules.js +6 -0
  193. package/rulepacks/jetwco/jetwco-cacc-slotDataVariable.js +6 -0
  194. package/rulepacks/jetwco/jetwco-cacc-slotDataVariableType.js +6 -0
  195. package/rulepacks/jetwco/jetwco-cacc-slots.js +6 -0
  196. package/rulepacks/jetwco/jetwco-cacc-styleClasses.js +6 -0
  197. package/rulepacks/jetwco/jetwco-cacc-styleVariables.js +6 -0
  198. package/rulepacks/jetwco/jetwco-compjson-ns-reg.js +2 -2
  199. package/rulepacks/jetwco/jetwco-component-api-baseline-changes.js +2 -2
  200. package/rulepacks/jetwco/jetwco-component-api-changes.js +2 -2
  201. package/rulepacks/jetwco/jetwco-component-api-controlled-changes.js +6 -0
  202. package/rulepacks/jetwco/jetwco-component-cdn.js +2 -2
  203. package/rulepacks/jetwco/jetwco-description-standards.js +6 -0
  204. package/rulepacks/jetwco/jetwco-displayname-standards.js +6 -0
  205. package/rulepacks/jetwco/jetwco-exchange-version-check.js +2 -2
  206. package/rulepacks/jetwco/jetwco-license-info.js +2 -2
  207. package/rulepacks/jetwco/jetwco-prerelease-cdn.js +2 -2
  208. package/rulepacks/jetwco/jetwco-thirdparty-ba.js +2 -2
  209. package/rulepacks/jetwco/msgid.json +2 -2
  210. package/rulepacks/jetwco/rules.json +2 -2
  211. package/rulepacks/spoc/msgid.json +1 -1
  212. package/rulepacks/spoc/rules.json +1 -1
  213. package/rulepacks/spoc/spoc-dom-manip-inv-tag.js +1 -1
  214. package/rulepacks/spoc/spoc-dom-manip-tag-pos.js +1 -1
  215. package/rulepacks/spoc/spoc-dom-manip.js +1 -1
  216. package/rulepacks/wdt/msgid.json +6 -0
  217. package/rulepacks/wdt/rules.json +6 -0
  218. package/rulepacks/wdt/wd-driver-sleep.js +6 -0
  219. package/rulepacks/wdt/wd-xpath.js +6 -0
  220. package/rules/jaf/jaf-css-diagnose.js +1 -1
  221. package/rules/jaf/jaf-html-diagnose.js +1 -1
  222. package/rules/jaf/jaf-init-schema.js +1 -1
  223. package/rules/jaf/jaf-js-diagnose.js +1 -1
  224. package/rules/jaf/jaf-ts-diagnose.js +1 -1
  225. package/rules/jaf/jaf-ts-walk.js +6 -0
  226. package/rules/jaf/msgid.json +2 -2
  227. package/rules/jaf/rules.json +2 -2
  228. package/rules/jet/helpers/acc-aria-label.js +1 -1
  229. package/rules/jet/helpers/bp-checkPropType.js +1 -1
  230. package/rules/jet/helpers/cssHelper.js +1 -1
  231. package/rules/jet/helpers/extractStylesFromClass.js +1 -1
  232. package/rules/jet/helpers/has-slot-name.js +2 -2
  233. package/rules/jet/helpers/has-slot.js +1 -1
  234. package/rules/jet/helpers/json-prop-pos.js +1 -1
  235. package/rules/jet/helpers/json-propname-pos.js +1 -1
  236. package/rules/jet/helpers/style-selector.js +1 -1
  237. package/rules/jet/helpers/valid-attr.js +1 -1
  238. package/rules/jet/helpers/vartrack.js +1 -1
  239. package/rules/jet/jet-css-ojselector.js +1 -1
  240. package/rules/jet/msgid.json +2 -2
  241. package/rules/jet/oj-acc-aria-labelledby.js +1 -1
  242. package/rules/jet/oj-acc-aria-prop.js +2 -2
  243. package/rules/jet/oj-acc-avatar-aria-role.js +2 -2
  244. package/rules/jet/oj-acc-combobox-aria-label.js +2 -2
  245. package/rules/jet/oj-acc-film-strip-aria-label.js +2 -2
  246. package/rules/jet/oj-acc-input-aria-label.js +2 -2
  247. package/rules/jet/oj-acc-select-aria-label.js +2 -2
  248. package/rules/jet/oj-cca-compjson-bp-ar.js +1 -1
  249. package/rules/jet/oj-cca-compjson-bp-dsplyname.js +1 -1
  250. package/rules/jet/oj-cca-compjson-bp-jetver.js +1 -1
  251. package/rules/jet/oj-cca-compjson-bp-obj.js +1 -1
  252. package/rules/jet/oj-cca-compjson-ns-reg.js +1 -1
  253. package/rules/jet/oj-css-bp-border-color.js +1 -1
  254. package/rules/jet/oj-css-bp-dir-flow.js +1 -1
  255. package/rules/jet/oj-css-bp-float.js +1 -1
  256. package/rules/jet/oj-css-bp-textalign.js +1 -1
  257. package/rules/jet/oj-css-style-abs-units.js +2 -2
  258. package/rules/jet/oj-css-style-bp-color.js +1 -1
  259. package/rules/jet/oj-css-style-bp-display.js +1 -1
  260. package/rules/jet/oj-css-style-bp-font-family.js +1 -1
  261. package/rules/jet/oj-css-style-bp-font.js +1 -1
  262. package/rules/jet/oj-css-style-deprecated.js +1 -1
  263. package/rules/jet/oj-css-style-override.js +2 -2
  264. package/rules/jet/oj-css-var-override.js +1 -1
  265. package/rules/jet/oj-form-maxcols.js +2 -2
  266. package/rules/jet/oj-html-5-attr-obs.js +1 -1
  267. package/rules/jet/oj-html-5-tag-obs.js +1 -1
  268. package/rules/jet/oj-html-alta-deprecated.js +6 -0
  269. package/rules/jet/oj-html-attr-$unique.js +1 -1
  270. package/rules/jet/oj-html-attr-2def.js +1 -1
  271. package/rules/jet/oj-html-attr-json.js +1 -1
  272. package/rules/jet/oj-html-attr-prefix-expr.js +1 -1
  273. package/rules/jet/oj-html-attr-prefix-ro.js +1 -1
  274. package/rules/jet/oj-html-attr-req.js +1 -1
  275. package/rules/jet/oj-html-bindforeach-data.js +2 -2
  276. package/rules/jet/oj-html-bindif-test.js +2 -2
  277. package/rules/jet/oj-html-binding-attr.js +2 -2
  278. package/rules/jet/oj-html-cca-count.js +1 -1
  279. package/rules/jet/oj-html-cca-tagname.js +2 -2
  280. package/rules/jet/oj-html-cdn.js +1 -1
  281. package/rules/jet/oj-html-combo-converter.js +1 -1
  282. package/rules/jet/oj-html-cspexpr.js +1 -1
  283. package/rules/jet/oj-html-databind-all.js +1 -1
  284. package/rules/jet/oj-html-dlg-title.js +2 -2
  285. package/rules/jet/oj-html-file-pick-accept.js +2 -2
  286. package/rules/jet/oj-html-form-bindif.js +1 -1
  287. package/rules/jet/oj-html-form-layout-maxcols.js +2 -2
  288. package/rules/jet/oj-html-form-noflex.js +1 -1
  289. package/rules/jet/oj-html-input-isodate.js +2 -2
  290. package/rules/jet/oj-html-invalid-doctype.js +2 -2
  291. package/rules/jet/oj-html-jq-databind.js +2 -2
  292. package/rules/jet/oj-html-ko-comment.js +1 -1
  293. package/rules/jet/oj-html-ko-databind.js +2 -2
  294. package/rules/jet/oj-html-label-for-prefix.js +1 -1
  295. package/rules/jet/oj-html-missing-doctype.js +1 -1
  296. package/rules/jet/oj-html-msgs-cat-text.js +6 -0
  297. package/rules/jet/oj-html-no-style-tag.js +6 -0
  298. package/rules/jet/oj-html-notag-style.js +6 -0
  299. package/rules/jet/oj-html-oj-lib.js +1 -1
  300. package/rules/jet/oj-html-ojattr-520.js +1 -1
  301. package/rules/jet/oj-html-ojattr-deprecated.js +2 -2
  302. package/rules/jet/oj-html-ojattr-enum-deprecated.js +2 -2
  303. package/rules/jet/oj-html-ojattr-evt-syntax.js +2 -2
  304. package/rules/jet/oj-html-ojattr-value.js +1 -1
  305. package/rules/jet/oj-html-ojattr.js +2 -2
  306. package/rules/jet/oj-html-ojevent.js +2 -2
  307. package/rules/jet/oj-html-ojslot.js +2 -2
  308. package/rules/jet/oj-html-ojstyle.js +1 -1
  309. package/rules/jet/oj-html-ojtag-datacmd.js +2 -2
  310. package/rules/jet/oj-html-ojtag-datactx.js +1 -1
  311. package/rules/jet/oj-html-ojtag-deprecated.js +2 -2
  312. package/rules/jet/oj-html-ojtag-globattr-noprefix.js +2 -2
  313. package/rules/jet/oj-html-ojtag-id.js +1 -1
  314. package/rules/jet/oj-html-ojtag-nonglobattr-prefix.js +2 -2
  315. package/rules/jet/oj-html-ojtag-ns.js +1 -1
  316. package/rules/jet/oj-html-picker-attrs.js +2 -2
  317. package/rules/jet/oj-html-redwood-cssnovars.js +1 -1
  318. package/rules/jet/oj-html-redwood-cssvars.js +1 -1
  319. package/rules/jet/oj-html-self-close.js +1 -1
  320. package/rules/jet/oj-html-slot-item-minmax.js +1 -1
  321. package/rules/jet/oj-html-slot-name.js +2 -2
  322. package/rules/jet/oj-html-slot-pref-content.js +2 -2
  323. package/rules/jet/oj-html-style-abs-units.js +1 -1
  324. package/rules/jet/oj-html-style-bp-color.js +1 -1
  325. package/rules/jet/oj-html-style-bp-display.js +1 -1
  326. package/rules/jet/oj-html-style-bp-font-family.js +1 -1
  327. package/rules/jet/oj-html-style-bp-font.js +1 -1
  328. package/rules/jet/oj-html-style-deprecated.js +2 -2
  329. package/rules/jet/oj-html-style.js +1 -1
  330. package/rules/jet/oj-html-stylesel.js +1 -1
  331. package/rules/jet/oj-html-tag-attr-noprefix.js +2 -2
  332. package/rules/jet/oj-html-template-index.js +2 -2
  333. package/rules/jet/oj-html-unsup-theme.js +1 -1
  334. package/rules/jet/oj-html-wctag-$props.js +1 -1
  335. package/rules/jet/oj-html-wctag-arialabelledby.js +1 -1
  336. package/rules/jet/oj-html-wctag-for.js +1 -1
  337. package/rules/jet/oj-html-wctag-id.js +2 -2
  338. package/rules/jet/oj-html-wctag-nested.js +6 -0
  339. package/rules/jet/oj-html-wctag-packprivate.js +1 -1
  340. package/rules/jet/oj-js-comp-attr-deprecated.js +2 -2
  341. package/rules/jet/oj-js-comp-meth-deprecated.js +2 -2
  342. package/rules/jet/oj-js-no-ext-final.js +1 -1
  343. package/rules/jet/oj-js-noconsole.js +1 -1
  344. package/rules/jet/oj-js-ojcomp-deprecated.js +2 -2
  345. package/rules/jet/oj-js-ojcomp-exist.js +1 -1
  346. package/rules/jet/oj-js-ojcomp-new.js +1 -1
  347. package/rules/jet/oj-js-poly-promise.js +1 -1
  348. package/rules/jet/oj-js-var-undef.js +1 -1
  349. package/rules/jet/oj-json-syntax.js +1 -1
  350. package/rules/jet/oj-ts-comp-attr-deprecated.js +2 -2
  351. package/rules/jet/oj-ts-comp-meth-deprecated.js +2 -2
  352. package/rules/jet/oj-ts-no-ext-final.js +1 -1
  353. package/rules/jet/oj-ts-noconsole.js +1 -1
  354. package/rules/jet/oj-ts-ojcomp-deprecated.js +2 -2
  355. package/rules/jet/oj-ts-ojcomp-exist.js +1 -1
  356. package/rules/jet/oj-ts-ojcomp-new.js +1 -1
  357. package/rules/jet/oj-ts-poly-promise.js +1 -1
  358. package/rules/jet/rules.json +2 -2
  359. package/schema/component-schema.json +4 -1
  360. package/src/JafCore.js +2 -2
  361. package/types/index.d.ts +122 -82
  362. package/lib/imanual.js +0 -6
  363. package/lib/xmanual.js +0 -6
  364. package/rulepacks/jetwc-lib/component-audit-utils.js +0 -6
package/types/index.d.ts CHANGED
@@ -287,6 +287,7 @@
287
287
  export interface ElementListenerContext extends AuditListenerContext {
288
288
  tag: string,
289
289
  node: DomNode,
290
+ tagNode: DomNode,
290
291
  position: {line?:number, col?:number, start?:number, end?:number},
291
292
  elemStack: Array<DomNode>,
292
293
  ojTag: boolean,
@@ -417,6 +418,13 @@
417
418
  index:number
418
419
  }
419
420
 
421
+ export interface AttribPos {
422
+ row: number,
423
+ col: number,
424
+ start: number,
425
+ end: number
426
+ }
427
+
420
428
 
421
429
 
422
430
  // Interfaces for utility classes available to audit authors -----------------------------------
@@ -522,15 +530,25 @@
522
530
  getSiblings(node: DomNode): Array<DomNode>,
523
531
  getAttribs(node: DomNode): DomNodeAttribs,
524
532
  getAttribValue(node: DomNode, attrName: string): string,
533
+ getAttribPosition(data: string, node: DomNode, attrName: string): AttribPos,
534
+ getAttribValuePosition(data: string, node: DomNode, attrName: string): AttribPos,
535
+ getAttribIndex(data: string, node: DomNode, attrName: string): number,
525
536
  hasAttrib(node: DomNode, attrName: string): boolean,
526
537
  hasChildren(node: DomNode): boolean,
527
538
  hasNext(node: DomNode): boolean,
528
539
  getFirst(): DomNode,
529
540
  getFirstElement(): DomNode,
530
541
  getLast(): DomNode,
542
+ getBody(): DomNode,
543
+ getHead(): DomNode,
544
+ getLinks(): Array<DomNode>,
545
+ getScripts(): Array<DomNode>,
531
546
  getElemsByName(elemName: string): Array<DomNode>,
532
547
  getElemById(id: string): DomNode,
533
- getElems(): Array<DomNode>
548
+ getElems(): Array<DomNode>,
549
+
550
+ isExpression(val: string): boolean,
551
+ getExpression(val: string): string|null
534
552
  }
535
553
 
536
554
  /**
@@ -547,7 +565,8 @@
547
565
  isTagAttrValue(tag:string, attrName:string, value:string):boolean,
548
566
  hasTagAttrValues(tag:string, attrName:string):boolean,
549
567
  hasTagSlot(tag:string):boolean,
550
- isTagSlotValue(tag:string, slotValue:string):boolean,
568
+ isTagSlotName(tag:string, slotName:string):boolean,
569
+ isTagSlotValue(tag:string, slotValue:string):boolean, // DEPRECATED
551
570
  isTagEvent(tag:string, eventName:string):boolean,
552
571
  isTagSupportedInTheme(tag:string):boolean,
553
572
  isAttrSupportedInTheme(tag:string, attrName:string):boolean,
@@ -622,86 +641,107 @@
622
641
  [parameterName:string]:string
623
642
  }
624
643
  export interface AstNodeTypeExports {
625
- ARRAY_EXPR : string,
626
- ARROW_FUNC_EXPR : string,
627
- ASSIGN_PATTERN : string,
628
- ASSIGN_EXPR : string,
629
- ASSIGNMENT_EXPR : string,
630
- AWAIT_EXPR : string,
631
- BINARY_EXPR : string,
632
- BLOCK_STMT : string,
633
- BREAK_STMT : string,
634
- CALL_EXPR : string,
635
- CATCH_CLAUSE : string,
636
- CLASS_BODY : string,
637
- CLASS_DECLARATION : string,
638
- CLASS_EXPR : string,
639
- CONDITIONAL_EXPR : string,
640
- CONTINUE_STMT : string,
641
- DO_WHILE_STMT : string,
642
- DEBUG_STMT : string,
643
- EMPTY_STMT : string,
644
- EX_REST_PROP : string,
645
- EX_SPREAD_STMT : string,
646
- EXPR_STMT : string,
647
- FOR_STMT : string,
648
- FOR_IN_STMT : string,
649
- FOR_OF_STMT : string,
650
- FUNC_DECLARATION : string,
651
- FUNC_EXPR : string,
652
- IDENTIFIER : string,
653
- IF_STMT : string,
654
- LOGIC_EXPR : string,
655
- LABELED_STMT : string,
656
- LITERAL : string,
657
- MEMBER_EXPR : string,
658
- META_PROP : string,
659
- METH_DEF : string,
660
- NEW_EXPR : string,
661
- OBJ_EXPR : string,
662
- OBJ_PATTERN : string,
663
- PROGRAM : string,
664
- PROPERTY : string,
665
- REST_ELEM : string,
666
- RETURN_STMT : string,
667
- SEQUENCE_EXPR : string,
668
- SPREAD_ELEM : string,
669
- SUPER : string,
670
- SWITCH_CASE : string,
671
- SWITCH_STMT : string,
672
- TAGGED_TEMPLATE_EXPR : string,
673
- TEMPLATE_ELEM : string,
674
- TEMPLATE_LIT : string,
675
- THIS_EXPR : string,
676
- THROW_EXPR : string,
677
- TRY_STMT : string,
678
- UNARY_EXPR : string,
679
- UPDATE_EXPR : string,
680
- VAR_DECLARATION : string,
681
- VAR_DECLARATOR : string,
682
- WHILE_STMT : string,
683
- WITH_STMT : string,
684
- YIELD_EXPR : string,
685
- JSX_ID : string,
686
- JSX_NS_NAME : string,
687
- JSX_EMPTY_EXPR : string,
688
- JSX_EXPR_CONTAINER : string,
689
- JSX_ELEM : string,
690
- JSX_CLOSING_ELEM : string,
691
- JSX_OPENING_ELEM : string,
692
- JSX_ATTRIB : string,
693
- JSX_SPREAD_ATTRIB : string,
694
- JSX_TEXT : string,
695
- EXPORT_DEFAULT_DECL : string,
696
- EXPORT_NAMED_DECL : string,
697
- EXPORT_ALL_DECL : string,
698
- EXPORT_SPECIFIER : string,
699
- IMPORT_DECL : string,
700
- IMPORT_EQUALS_DECL : string,
701
- IMPORT_SPECIFIER : string,
702
- IMPORT_DEF_SPECIFIER : string,
703
- IMPORT_NS_SPECIFIER : string,
704
- EXTERN_MOD_REF : string
644
+ ARRAY_EXPR : string,
645
+ ARROW_FUNC_EXPR : string,
646
+ ASSIGN_PATTERN : string,
647
+ ASSIGN_EXPR : string,
648
+ ASSIGNMENT_EXPR : string,
649
+ AWAIT_EXPR : string,
650
+ BINARY_EXPR : string,
651
+ BLOCK_STMT : string,
652
+ BREAK_STMT : string,
653
+ CALL_EXPR : string,
654
+ CATCH_CLAUSE : string,
655
+ CLASS_BODY : string,
656
+ CLASS_DECLARATION : string,
657
+ CLASS_EXPR : string,
658
+ CLASS_PROP : string,
659
+ CONDITIONAL_EXPR : string,
660
+ CONTINUE_STMT : string,
661
+ DO_WHILE_STMT : string,
662
+ DEBUG_STMT : string,
663
+ EMPTY_STMT : string,
664
+ EX_REST_PROP : string,
665
+ EX_SPREAD_STMT : string,
666
+ EXPR_STMT : string,
667
+ FOR_STMT : string,
668
+ FOR_IN_STMT : string,
669
+ FOR_OF_STMT : string,
670
+ FUNC_DECLARATION : string,
671
+ FUNC_EXPR : string,
672
+ IDENTIFIER : string,
673
+ IF_STMT : string,
674
+ LOGIC_EXPR : string,
675
+ LABELED_STMT : string,
676
+ LITERAL : string,
677
+ MEMBER_EXPR : string,
678
+ META_PROP : string,
679
+ METH_DEF : string,
680
+ NEW_EXPR : string,
681
+ OBJ_EXPR : string,
682
+ OBJ_PATTERN : string,
683
+ PROGRAM : string,
684
+ PROPERTY : string,
685
+ REST_ELEM : string,
686
+ RETURN_STMT : string,
687
+ SEQUENCE_EXPR : string,
688
+ SPREAD_ELEM : string,
689
+ SUPER : string,
690
+ SWITCH_CASE : string,
691
+ SWITCH_STMT : string,
692
+ TAGGED_TEMPLATE_EXPR : string,
693
+ TEMPLATE_ELEM : string,
694
+ TEMPLATE_LIT : string,
695
+ THIS_EXPR : string,
696
+ THROW_EXPR : string,
697
+ TRY_STMT : string,
698
+ UNARY_EXPR : string,
699
+ UPDATE_EXPR : string,
700
+ VAR_DECLARATION : string,
701
+ VAR_DECLARATOR : string,
702
+ WHILE_STMT : string,
703
+ WITH_STMT : string,
704
+ YIELD_EXPR : string,
705
+ JSX_ID : string,
706
+ JSX_NS_NAME : string,
707
+ JSX_EMPTY_EXPR : string,
708
+ JSX_EXPR_CONTAINER : string,
709
+ JSX_ELEM : string,
710
+ JSX_CLOSING_ELEM : string,
711
+ JSX_OPENING_ELEM : string,
712
+ JSX_ATTRIB : string,
713
+ JSX_SPREAD_ATTRIB : string,
714
+ JSX_TEXT : string,
715
+ EXPORT_DEFAULT_DECL : string,
716
+ EXPORT_NAMED_DECL : string,
717
+ EXPORT_ALL_DECL : string,
718
+ EXPORT_ASSIGNMENT : string,
719
+ EXPORT_SPECIFIER : string,
720
+ IMPORT_DECL : string,
721
+ IMPORT_EQUALS_DECL : string,
722
+ IMPORT_SPECIFIER : string,
723
+ IMPORT_DEF_SPECIFIER : string,
724
+ IMPORT_NS_SPECIFIER : string,
725
+ ANY_KEYWORD : string,
726
+ ARRAY_TYPE : string,
727
+ AS_EXPR : string,
728
+ BOOLEAN_KEYWORD : string,
729
+ EXTERN_MOD_REF : string,
730
+ FUNCTION_TYPE : string,
731
+ INTERFACE_BODY : string,
732
+ INTERFACE_DECL : string,
733
+ INTERSECTION_TYPE : string,
734
+ LITERAL_TYPE : string,
735
+ NUMBER_KEYWORD : string,
736
+ OBJECT_KEYWORD : string,
737
+ OPTIONAL_TYPE : string,
738
+ PROPERTY_SIGNATURE : string,
739
+ STRING_KEYWORD : string,
740
+ TUPLE_TYPE : string,
741
+ TYPE_ALIAS_DECL : string,
742
+ TYPE_LITERAL : string,
743
+ TYPE_REF : string,
744
+ UNION_TYPE : string
705
745
  }
706
746
 
707
747
  /**
package/lib/imanual.js DELETED
@@ -1,6 +0,0 @@
1
- /*
2
- * Copyright (c) 2018, 2021, 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 PREFIX=["jet","jaf","csp","jetwc","jetwco"];const RP_PREFIX=["csp","jetwc","jetwco"];const RULES_JSON="rules.json";const MSGID_JSON="msgid.json";const JS=".js";const RE_WS=/^\s*$/;const RE_MARKUP=/<[^>]*>/g;const RE_MARKUP2=/\s{2,}/g;const EMPTY="";const LINELEN=100;var _nd;var _error;var _path;var _rDir;var _rpDir;var _isMsgId;var _prefix;var _msgNum;var _arg;var _sev;var _multiIDs=[];var _isColor;function showMsgHelp(nd,arg,isColor,msgCtx){var rc=_init(nd,arg,isColor,msgCtx);if(rc>0){return _process()}else{return rc===0}};function _process(){var meta;_rDir=_path.join(__dirname,"../rules");_rpDir=_path.join(__dirname,"../rulepacks");if(!(meta=_loadRuleMetadata())){return true}return _isMsgId?_processMsgId(meta):_processRuleName(meta)};function _processMsgId(meta){var mjson=meta.mjson;var rname,r,x;for(r in mjson){if(_msgNum===mjson[r]){rname=r;break}}if(!rname){_error(`No rule found for message ID ${_prefix}-${_msgNum}.`);return true}x=rname.indexOf("_");if(x>=0){rname=rname.substring(0,x)}return _displayIt(rname,_prefix,meta)};function _processRuleName(meta){var rname,rjson,r;rname=_arg.toLowerCase();rjson=meta.rjson.rules;for(r in rjson){if(r===rname){return _displayIt(rname,_prefix,meta)}}_error(`Rule ${rname} is not a core rule`);return!rname.startsWith("oj-")};function _displayIt(rname,prefix,meta){var rule,r,mjson,rjson,prefix;mjson=meta.mjson;for(r in mjson){if(r.startsWith(rname)){_multiIDs.push(mjson[r])}}rjson=meta.rjson;for(r in rjson.rules){if(r===rname){_sev=rjson.rules[r].severity;break}}_sev=_sev||"unknown";if(rule=_loadRule(rname,meta)){let o={descrip:rule.getDescription(),rule:rname,prefix:prefix,sev:_sev,idList:_multiIDs};display(o,_isColor?_nd.colors:null);return true}return false};function _loadRule(rname,meta){var rule,ruleJS,fp;try{fp=_nd.path.join(meta.rdir,rname+JS);ruleJS=_nd.ruleLoader(fp);if(ruleJS.prototype||!ruleJS.getName){try{rule=new ruleJS}catch(e){_error(`Failed to instantiate rule ${rname}`)}}else{rule=ruleJS}return rule}catch(e){_error(`Failed to load rule ${rname}`)}};function _loadRuleMetadata(){var meta,fp;fp=RP_PREFIX.includes(_prefix)?_nd.path.join(_rpDir,_prefix):_nd.path.join(_rDir,_prefix);meta=_loadRulesJson(fp);return meta}function _loadRulesJson(dir){var rjson,mjson,fp;fp=_nd.path.join(dir,RULES_JSON);if(_nd.fsUtils.fileExists(fp)){rjson=_nd.jsonLoader.load(fp,_nd,m=>{_error(m)},true,_nd.utils)}else{_error(`Internal error: rule manifest for ${_prefix} not found`);return false}fp=_nd.path.join(dir,MSGID_JSON);if(_nd.fsUtils.fileExists(fp)){mjson=_nd.jsonLoader.load(fp,_nd,m=>{_error(m)},true,_nd.utils)}else{if(!RP_PREFIX.includes(_prefix)){_error(`Internal error: rule message ID manifest for ${_prefix} not found`);return false}}if(rjson){return{rjson:rjson,mjson:mjson,rdir:dir}}};function _init(nd,arg,isColor,msgCtx){var x;_nd=nd;_isColor=isColor;_error=msgCtx.error;_path=nd.path;_arg=arg;arg=arg.toLowerCase();x=arg.indexOf("-");if(x<0){if(!isNaN(parseInt(arg))){arg="jet-"+arg;x=3}else{_error("Expected a message ID or rulename to follow --help");return 0}}_prefix=arg.substring(0,x);_msgNum=arg.substring(x+1);x=parseInt(_msgNum);_isMsgId=!isNaN(x);if(_isMsgId){if(_msgNum.length<4){_msgNum="0".repeat(4-_msgNum.length)+_msgNum}}else{_msgNum=null;if(arg.startsWith("oj-")){_prefix="jet"}}if(PREFIX.includes(_prefix)){return 1}return-1};function display(o,color){var start,end,line,s,s1,s2,s3,c,x;var multiSev=o.idList.length>1;function nop(s){return s};color=color?color:{BRIGHTGREEN:nop,BRIGHTYELLOW:nop,CYAN:nop};s=color.BRIGHTGREEN("Rule: ");s1=color.BRIGHTGREEN("Severity: ");s2=color.BRIGHTGREEN("Message ID");s3=color.BRIGHTYELLOW("\xB9");line="\n"+s+color.BRIGHTYELLOW(o.rule)+" "+s1+color.BRIGHTYELLOW(o.sev)+(multiSev?s3:EMPTY)+" "+s2+(multiSev?"'s":EMPTY)+": "+o.prefix+"-"+o.idList.join(", ");console.log(line);s=_removeMarkup(o.descrip);s=_removeColorMarkup(s);start=0;end=LINELEN;while(end<s.length){x=_NL(s,start,end);if(x>=0){line=s.substring(start,x).trim();console.log(color.CYAN(line));start=x+1;end=start+LINELEN;continue}c=s.charAt(end);if(RE_WS.test(c)){line=s.substring(start,end).trim();console.log(color.CYAN(line));start=end;end+=LINELEN;continue}else{end--}}if(start<end){line=s.substring(start,end).trim();console.log(color.CYAN(line))}if(multiSev){s="\n"+s3+color.BRIGHTYELLOW(" Possibility of more than 1 severity since there are "+o.idList.length+" message ID's");console.log(s)}console.log("")};function _removeMarkup(s){s=s.replace(/<oj-/g,"@@1").replace(/<\/oj-/g,"@@2").replace(/<br>/g,"@@3").replace(/<p>/g,"@@3@@3").replace(/<b>/g,"@@4").replace(/<em>/g,"@@4").replace(/<i>/g,"@@5").replace(/<\/b>/g,"@@6").replace(/<\/em>/g,"@@6").replace(/<\/i>/g,"@@6").replace(/<div/g,"@@7").replace(/<\/div>/g,"@@8").replace(RE_MARKUP,EMPTY).replace(RE_MARKUP2," ").trimRight().replace(/@@1/g,"<oj-").replace(/@@2/g,"</oj-").replace(/@@3/g,"\n").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&nbsp;/g,EMPTY).replace(/@@7/g,"<div").replace(/@@8/g,"</div>");if(!_isColor){s=s.replace(/@@4/g,EMPTY).replace(/@@5/g,EMPTY).replace(/@@6/g,EMPTY)}return s.trim();;};function _removeColorMarkup(s){if(_isColor){s=s.replace(/@@4/g,EMPTY).replace(/@@5/g,EMPTY).replace(/@@6/g,EMPTY)}return s.trim()};function _NL(s,start,end){while(start<end){if(s.charAt(start)==="\n"){return start}start++}return-1};module.exports.showMsgHelp=showMsgHelp;module.exports.display=display;
package/lib/xmanual.js DELETED
@@ -1,6 +0,0 @@
1
- /*
2
- * Copyright (c) 2018, 2021, 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 imanual=require("./imanual");function checkMsgHelp(rules,manCheckL,manCheckS,color,msgCtx){var check,temp,isShort,o,x,ret=false;check=manCheckL||manCheckS;if(check){temp=check.toLowerCase();x=temp.indexOf("-");check=x>=0?temp.substring(0,x):"";check=check.toUpperCase()+temp.substring(x);isShort=!!manCheckS;if(rules.getRSIByRuleName(temp)>=0){o=rules.getRuleDescriptionEx(null,temp,isShort)}else{o=rules.getRuleDescriptionEx(check,null,isShort)}if(o&&o.descrip){imanual.display(o,color)}else{msgCtx.error(`Unable to locate '${temp}' via the configuration file.`)}ret=true}return ret};module.exports.checkMsgHelp=checkMsgHelp;
@@ -1,6 +0,0 @@
1
- /*
2
- * Copyright (c) 2018, 2021, 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=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};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.getRuleOptions().auditBuildOutput;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=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=this.toJAFPath(path.resolve(checkPath,'..'+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 extnContext=context.rulePack.getExtension();if(!extnContext||!extnContext.bootStrap){const bootstrapRule=context.rulePack.getPrefix().toLowerCase()+'-bootstrap';if(context.rulePack.isRuleDisabled(bootstrapRule)){console.error(`ERROR: You must enable the ${bootstrapRule} rule to run in order to carry out a full component set audit`)}else{console.error(`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.isExpressionString=function(value){if(value){const bindingExpr=/^(?:\[{2})(.*)(?:\]{2})$|^(?:\{{2})(.*)(?:\}{2})$/g;return bindingExpr.test(value.trim())}return false};Utils.prototype.setupFileMethodMapping=function(context,node){const fileName=context.filepath;const withinComponent=this.matchComponentPath(context,path.dirname(fileName));if(withinComponent){if(node.parent&&node.parent.type==='AssignmentExpression'&&node.parent.operator==='='){if(node.parent.left&&node.parent.left.property&&node.parent.left.property.type=='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&&node.parent.type==='MethodDefinition'&&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&&node.parent.type==='ClassProperty'){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 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(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(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==='TSAsExpression'){registerInfo.viewModel=vmProp[0].value.expression.expression.name;console.warn(`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(node,checkName){return node&&node.property&&node.property.type==='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(node,vmName)}}}return vmPathDef};Utils.prototype._mapToRequireAssignment=function(node,vmName){let requirePath;const vmDeclNode=this._locateDeclaration(node,vmName);if(vmDeclNode.type==='CallExpression'&&vmDeclNode.callee.type==='Identifier'&&vmDeclNode.callee.name==='require'){if(vmDeclNode.arguments&&vmDeclNode.arguments.length===1&&vmDeclNode.arguments[0].type==='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==='ImportDefaultSpecifier'||testNode.specifiers[0].type==='ImportSpecifier')&&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==='TSExternalModuleReference'&&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 opts=context.rulePack.getRuleOptions();if(component.local&&component.type==='composite'){if(!component.viewModel.skip){if(!component.viewModel.resolved&&!component.viewModel.warned){if(!opts.testMode){console.log(`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){console.log('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(assignmentNode){const breakdown=[];this._walkAssignmentNodes(assignmentNode.left,breakdown);if(!breakdown.includes('this')){const parentAssignment=breakdown[breakdown.length-1];const initialAssignmentNode=this._locateDeclaration(assignmentNode,parentAssignment);if(initialAssignmentNode){if(initialAssignmentNode==='<parameter>'){breakdown.push('<parameter>')}else if(initialAssignmentNode.type==='ThisExpression'){breakdown.push('this')}else if(initialAssignmentNode.type==='Identifier'){breakdown.push(initialAssignmentNode.name);const indirectAssignmentNode=this._locateDeclaration(assignmentNode,initialAssignmentNode.name);if(indirectAssignmentNode==='<parameter>'){breakdown.push('<parameter>')}else if(indirectAssignmentNode.type==='ThisExpression'){breakdown.push('this')}}}}return breakdown};Utils.prototype._walkAssignmentNodes=function(node,accumulator){switch(node.type){case'MemberExpression':accumulator.push(node.property.name);if(node.object){this._walkAssignmentNodes(node.object,accumulator)}break;case'Identifier':accumulator.push(node.name);break;case'ThisExpression':accumulator.push('this');break;}};Utils.prototype._locateDeclaration=function(node,searchVariable){let initialAssignment;let workingNode=node;while(!initialAssignment){if(workingNode.body&&workingNode.body.length>0){workingNode.body.forEach(bodyNode=>{if(bodyNode.type==='VariableDeclaration'){bodyNode.declarations.forEach(declNode=>{if(declNode.id.type==='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){let componentInfo={};const mdFile=this.toJAFPath(path.join(componentFolder,fileName));const compMetadata=auditContext.utils.fsUtils.readJsonSync(mdFile);if(compMetadata!==null){componentInfo.fullName=this.getComponentFullName(compMetadata);componentInfo.pack=compMetadata.pack;componentInfo.name=compMetadata.name;componentInfo.version=compMetadata.version;componentInfo.extension=compMetadata.extension;componentInfo.type=compMetadata.type?compMetadata.type:'composite';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.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(`${compMetadata.pack}/${compMetadata.name}`)}else{componentInfo.requirePaths.add(compMetadata.name)}if(compMetadata.dependencies){componentInfo.dependencies=Object.keys(compMetadata.dependencies)}break;}return componentInfo}else{console.error(`Error Invalid JSON in component metadata ${mdFile}, component ignored`)}return};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(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){const fs=context.utils.fsUtils;let componentImplType;if(fs.fileExistsSync(path.join(componentPathRoot,'loader.js'))){componentImplType='js'}else if(fs.fileExistsSync(path.join(componentPathRoot,'loader.ts'))){componentImplType=this._lookForTSorTSX(context,componentPathRoot)}else{const pathSegs=componentPathRoot.toLowerCase().split('/');if(pathSegs.includes('ts')){componentImplType=this._lookForTSorTSX(context,componentPathRoot)}else{componentImplType='js'}}return componentImplType};Utils.prototype._lookForTSorTSX=function(context,searchFolder,files){const fs=context.utils.fsUtils;let detectedType;let folderContents;if(!files){folderContents=fs.readDirSync(searchFolder)}else{folderContents=files}let fileCount=folderContents.length;let i=0;do{if(folderContents[i].isFile){const extn=fs.getFileExtSync(folderContents[i].name).toLowerCase();if(extn==='tsx'){detectedType='tsx';break}else if(extn==='ts'){detectedType='ts'}}else{const folderDrillType=this._lookForTSorTSX(context,null,folderContents[i].files);if(folderDrillType==='tsx'){detectedType='tsx';break}else if(folderDrillType==='ts'){detectedType='ts'}}i++}while(i<fileCount);return detectedType};Utils.prototype.getComponentCacheFolderName=function(context){return`jaftmp@-${context.rulePack.getPrefix()}`};Utils.prototype.ensureLocalCache=function(context){const cacheFolder=this.getComponentCacheFolderName(context);if(!context.utils.fsUtils.pathExistsSync(cacheFolder)){context.utils.fsUtils.createFolderSync(cacheFolder)}};Utils.prototype.removeLocalCache=function(context){const cacheFolder=this.getComponentCacheFolderName(context);if(context.utils.fsUtils.pathExistsSync(cacheFolder)){context.utils.fsUtils.deleteFolderSync(cacheFolder,true)}};Utils.prototype.generateComponentCachePath=function(context,component,componentVersion){const cacheFolder=this.getComponentCacheFolderName(context);const mungedVersion=componentVersion.replace(/\./g,'-');return path.join(cacheFolder,`${component}@${mungedVersion}-component.json`)};Utils.prototype.existsInComponentCache=function(context,component,componentVersion){const cacheFile=this.generateComponentCachePath(context,component,componentVersion);return context.utils.fsUtils.fileExistsSync(cacheFile)};Utils.prototype.writeToComponentCache=function(context,component,componentVersion,metadata){if(metadata){const cacheFile=this.generateComponentCachePath(context,component,componentVersion);context.utils.fsUtils.writeJsonSync(metadata,cacheFile)}};Utils.prototype.readFromComponentCache=function(context,component,componentVersion){let readMetadata;const cacheFile=this.generateComponentCachePath(context,component,componentVersion);return context.utils.fsUtils.readJsonSync(cacheFile)};Utils.prototype.getObjectHashSignature=function(sourceObject){const sourceAsStringArray=Array.from(JSON.stringify(sourceObject));return sourceAsStringArray.reduce((hash,c)=>Math.imul(31,hash)+c.charCodeAt(0)|0,0)};Utils.prototype.safeSetExtension=function(context,extnValue){let existingContext=context.rulePack.getExtension();if(!existingContext){existingContext={}}const newContext={...existingContext,...extnValue};context.rulePack.setExtension(newContext)};module.exports=new Utils;