@oracle/oraclejet-audit 11.1.3 → 12.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 (362) 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 +1 -1
  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 +1 -1
  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/metaverlist.json +1 -1
  89. package/package.json +72 -68
  90. package/rulepacks/csp/csp-html-script-unsafe-inline.js +1 -1
  91. package/rulepacks/csp/csp-html-style-unsafe-inline.js +1 -1
  92. package/rulepacks/csp/csp-html-unsafe-expr.js +1 -1
  93. package/rulepacks/csp/csp-js-script-unsafe-eval.js +1 -1
  94. package/rulepacks/csp/csp-js-style-unsafe-inline.js +1 -1
  95. package/rulepacks/csp/csp-ts-script-unsafe-eval.js +1 -1
  96. package/rulepacks/csp/csp-ts-style-unsafe-inline.js +1 -1
  97. package/rulepacks/csp/msgid.json +1 -1
  98. package/rulepacks/csp/rules.json +1 -1
  99. package/rulepacks/jetwc/jetwc-absolute-jetversion.js +2 -2
  100. package/rulepacks/jetwc/jetwc-aria-redefinition.js +2 -2
  101. package/rulepacks/jetwc/jetwc-bootstrap.js +2 -2
  102. package/rulepacks/jetwc/jetwc-compjson-bp-ar.js +2 -2
  103. package/rulepacks/jetwc/jetwc-compjson-bp-obj.js +2 -2
  104. package/rulepacks/jetwc/jetwc-component-dependencies.js +2 -2
  105. package/rulepacks/jetwc/jetwc-component-displayname.js +2 -2
  106. package/rulepacks/jetwc/jetwc-component-foldername.js +2 -2
  107. package/rulepacks/jetwc/jetwc-component-location.js +2 -2
  108. package/rulepacks/jetwc/jetwc-component-type.js +2 -2
  109. package/rulepacks/jetwc/jetwc-css-oj-complete.js +6 -0
  110. package/rulepacks/jetwc/jetwc-data-property-prefix.js +2 -2
  111. package/rulepacks/jetwc/jetwc-deprecated-lifecycle.js +2 -2
  112. package/rulepacks/jetwc/jetwc-disabled-property.js +2 -2
  113. package/rulepacks/jetwc/jetwc-displayname.js +2 -2
  114. package/rulepacks/jetwc/jetwc-dynamic-slot-context.js +2 -2
  115. package/rulepacks/jetwc/jetwc-dynamic-slots-naming.js +2 -2
  116. package/rulepacks/jetwc/jetwc-event-displayname.js +2 -2
  117. package/rulepacks/jetwc/jetwc-events.js +2 -2
  118. package/rulepacks/jetwc/jetwc-jet-version.js +2 -2
  119. package/rulepacks/jetwc/jetwc-loader-file.js +2 -2
  120. package/rulepacks/jetwc/jetwc-markdown-link.js +6 -0
  121. package/rulepacks/jetwc/jetwc-method-displayname.js +2 -2
  122. package/rulepacks/jetwc/jetwc-methods.js +2 -2
  123. package/rulepacks/jetwc/jetwc-namespace.js +2 -2
  124. package/rulepacks/jetwc/jetwc-nested-defaults.js +2 -2
  125. package/rulepacks/jetwc/jetwc-nls-languages.js +2 -2
  126. package/rulepacks/jetwc/jetwc-nls-root.js +2 -2
  127. package/rulepacks/jetwc/jetwc-oj-register.js +2 -2
  128. package/rulepacks/jetwc/jetwc-ojcss.js +2 -2
  129. package/rulepacks/jetwc/jetwc-pack-children.js +2 -2
  130. package/rulepacks/jetwc/jetwc-packable-components.js +2 -2
  131. package/rulepacks/jetwc/jetwc-prerelease-dependencies.js +2 -2
  132. package/rulepacks/jetwc/jetwc-prerelease-pattern.js +2 -2
  133. package/rulepacks/jetwc/jetwc-prerelease-version.js +2 -2
  134. package/rulepacks/jetwc/jetwc-property-changed.js +2 -2
  135. package/rulepacks/jetwc/jetwc-property-displayname.js +2 -2
  136. package/rulepacks/jetwc/jetwc-property-nesting.js +2 -2
  137. package/rulepacks/jetwc/jetwc-public-modules.js +2 -2
  138. package/rulepacks/jetwc/jetwc-register-css.js +2 -2
  139. package/rulepacks/jetwc/jetwc-register-with-promises.js +2 -2
  140. package/rulepacks/jetwc/jetwc-require-paths.js +2 -2
  141. package/rulepacks/jetwc/jetwc-required-subproperty.js +2 -2
  142. package/rulepacks/jetwc/jetwc-reserved-property.js +2 -2
  143. package/rulepacks/jetwc/jetwc-schema.js +2 -2
  144. package/rulepacks/jetwc/jetwc-semantic-version.js +2 -2
  145. package/rulepacks/jetwc/jetwc-slot-displayname.js +2 -2
  146. package/rulepacks/jetwc/jetwc-slots.js +2 -2
  147. package/rulepacks/jetwc/jetwc-standard-files.js +2 -2
  148. package/rulepacks/jetwc/jetwc-subproperty-writeback.js +2 -2
  149. package/rulepacks/jetwc/jetwc-template-slots.js +2 -2
  150. package/rulepacks/jetwc/jetwc-unused-events.js +2 -2
  151. package/rulepacks/jetwc/jetwc-unused-slots.js +2 -2
  152. package/rulepacks/jetwc/jetwc-vb-category.js +2 -2
  153. package/rulepacks/jetwc/jetwc-vb-icon.js +2 -2
  154. package/rulepacks/jetwc/jetwc-vcomponent-jetversion.js +6 -0
  155. package/rulepacks/jetwc/jetwc-vcomponent-loader.js +6 -0
  156. package/rulepacks/jetwc/jetwc-vcomponent-version.js +6 -0
  157. package/rulepacks/jetwc/jetwc-version-openrange.js +2 -2
  158. package/rulepacks/jetwc/jetwc-writeback-required.js +2 -2
  159. package/rulepacks/jetwc/msgid.json +2 -2
  160. package/rulepacks/jetwc/rules.json +2 -2
  161. package/rulepacks/jetwc-lib/jetwcutils-auditComponentCacheManager.js +6 -0
  162. package/rulepacks/jetwc-lib/jetwcutils-commonListenerImpls.js +6 -0
  163. package/rulepacks/jetwc-lib/jetwcutils-componentAuditUtils.js +6 -0
  164. package/rulepacks/jetwc-lib/jetwcutils-componentFinder.js +6 -0
  165. package/rulepacks/jetwc-lib/jetwcutils-preCompiler.js +6 -0
  166. package/rulepacks/jetwc-lib/jetwcutils-tsxUtils.js +6 -0
  167. package/rulepacks/jetwco/jetwco-bootstrap.js +2 -2
  168. package/rulepacks/jetwco/jetwco-cacc-auditConstraints.js +6 -0
  169. package/rulepacks/jetwco/jetwco-cacc-dependencies.js +6 -0
  170. package/rulepacks/jetwco/jetwco-cacc-dynamicSlots.js +6 -0
  171. package/rulepacks/jetwco/jetwco-cacc-eventBubbles.js +6 -0
  172. package/rulepacks/jetwco/jetwco-cacc-eventCancelable.js +6 -0
  173. package/rulepacks/jetwco/jetwco-cacc-eventPayload.js +6 -0
  174. package/rulepacks/jetwco/jetwco-cacc-events.js +6 -0
  175. package/rulepacks/jetwco/jetwco-cacc-helpers.js +6 -0
  176. package/rulepacks/jetwco/jetwco-cacc-jetVer.js +6 -0
  177. package/rulepacks/jetwco/jetwco-cacc-methodParamTypes.js +6 -0
  178. package/rulepacks/jetwco/jetwco-cacc-methodParams.js +6 -0
  179. package/rulepacks/jetwco/jetwco-cacc-methodReturnType.js +6 -0
  180. package/rulepacks/jetwco/jetwco-cacc-methods.js +6 -0
  181. package/rulepacks/jetwco/jetwco-cacc-packBundle.js +6 -0
  182. package/rulepacks/jetwco/jetwco-cacc-packBundleContent.js +6 -0
  183. package/rulepacks/jetwco/jetwco-cacc-packContent.js +6 -0
  184. package/rulepacks/jetwco/jetwco-cacc-properties.js +6 -0
  185. package/rulepacks/jetwco/jetwco-cacc-propertyDefault.js +6 -0
  186. package/rulepacks/jetwco/jetwco-cacc-propertyEnumeration.js +6 -0
  187. package/rulepacks/jetwco/jetwco-cacc-propertyReadOnly.js +6 -0
  188. package/rulepacks/jetwco/jetwco-cacc-propertyRequired.js +6 -0
  189. package/rulepacks/jetwco/jetwco-cacc-propertyType.js +6 -0
  190. package/rulepacks/jetwco/jetwco-cacc-propertyWriteback.js +6 -0
  191. package/rulepacks/jetwco/jetwco-cacc-publicModules.js +6 -0
  192. package/rulepacks/jetwco/jetwco-cacc-slotDataVariable.js +6 -0
  193. package/rulepacks/jetwco/jetwco-cacc-slotDataVariableType.js +6 -0
  194. package/rulepacks/jetwco/jetwco-cacc-slots.js +6 -0
  195. package/rulepacks/jetwco/jetwco-cacc-styleClasses.js +6 -0
  196. package/rulepacks/jetwco/jetwco-cacc-styleVariables.js +6 -0
  197. package/rulepacks/jetwco/jetwco-compjson-ns-reg.js +2 -2
  198. package/rulepacks/jetwco/jetwco-component-api-baseline-changes.js +2 -2
  199. package/rulepacks/jetwco/jetwco-component-api-changes.js +2 -2
  200. package/rulepacks/jetwco/jetwco-component-api-controlled-changes.js +6 -0
  201. package/rulepacks/jetwco/jetwco-component-cdn.js +2 -2
  202. package/rulepacks/jetwco/jetwco-description-standards.js +6 -0
  203. package/rulepacks/jetwco/jetwco-displayname-standards.js +6 -0
  204. package/rulepacks/jetwco/jetwco-exchange-version-check.js +2 -2
  205. package/rulepacks/jetwco/jetwco-license-info.js +2 -2
  206. package/rulepacks/jetwco/jetwco-prerelease-cdn.js +2 -2
  207. package/rulepacks/jetwco/jetwco-thirdparty-ba.js +2 -2
  208. package/rulepacks/jetwco/msgid.json +2 -2
  209. package/rulepacks/jetwco/rules.json +2 -2
  210. package/rulepacks/spoc/msgid.json +1 -1
  211. package/rulepacks/spoc/rules.json +1 -1
  212. package/rulepacks/spoc/spoc-dom-manip-inv-tag.js +1 -1
  213. package/rulepacks/spoc/spoc-dom-manip-tag-pos.js +1 -1
  214. package/rulepacks/spoc/spoc-dom-manip.js +1 -1
  215. package/rulepacks/wdt/msgid.json +6 -0
  216. package/rulepacks/wdt/rules.json +6 -0
  217. package/rulepacks/wdt/wd-driver-sleep.js +6 -0
  218. package/rulepacks/wdt/wd-xpath.js +6 -0
  219. package/rules/jaf/jaf-css-diagnose.js +1 -1
  220. package/rules/jaf/jaf-html-diagnose.js +1 -1
  221. package/rules/jaf/jaf-init-schema.js +1 -1
  222. package/rules/jaf/jaf-js-diagnose.js +1 -1
  223. package/rules/jaf/jaf-ts-diagnose.js +1 -1
  224. package/rules/jaf/msgid.json +1 -1
  225. package/rules/jaf/rules.json +1 -1
  226. package/rules/jet/helpers/acc-aria-label.js +1 -1
  227. package/rules/jet/helpers/bp-checkPropType.js +1 -1
  228. package/rules/jet/helpers/cssHelper.js +1 -1
  229. package/rules/jet/helpers/extractStylesFromClass.js +1 -1
  230. package/rules/jet/helpers/has-slot-name.js +2 -2
  231. package/rules/jet/helpers/has-slot.js +1 -1
  232. package/rules/jet/helpers/json-prop-pos.js +1 -1
  233. package/rules/jet/helpers/json-propname-pos.js +1 -1
  234. package/rules/jet/helpers/style-selector.js +1 -1
  235. package/rules/jet/helpers/valid-attr.js +1 -1
  236. package/rules/jet/helpers/vartrack.js +1 -1
  237. package/rules/jet/jet-css-ojselector.js +1 -1
  238. package/rules/jet/msgid.json +2 -2
  239. package/rules/jet/oj-acc-aria-labelledby.js +1 -1
  240. package/rules/jet/oj-acc-aria-prop.js +2 -2
  241. package/rules/jet/oj-acc-avatar-aria-role.js +2 -2
  242. package/rules/jet/oj-acc-combobox-aria-label.js +2 -2
  243. package/rules/jet/oj-acc-film-strip-aria-label.js +2 -2
  244. package/rules/jet/oj-acc-input-aria-label.js +2 -2
  245. package/rules/jet/oj-acc-select-aria-label.js +2 -2
  246. package/rules/jet/oj-cca-compjson-bp-ar.js +1 -1
  247. package/rules/jet/oj-cca-compjson-bp-dsplyname.js +1 -1
  248. package/rules/jet/oj-cca-compjson-bp-jetver.js +1 -1
  249. package/rules/jet/oj-cca-compjson-bp-obj.js +1 -1
  250. package/rules/jet/oj-cca-compjson-ns-reg.js +1 -1
  251. package/rules/jet/oj-css-bp-border-color.js +1 -1
  252. package/rules/jet/oj-css-bp-dir-flow.js +1 -1
  253. package/rules/jet/oj-css-bp-float.js +1 -1
  254. package/rules/jet/oj-css-bp-textalign.js +1 -1
  255. package/rules/jet/oj-css-style-abs-units.js +2 -2
  256. package/rules/jet/oj-css-style-bp-color.js +1 -1
  257. package/rules/jet/oj-css-style-bp-display.js +1 -1
  258. package/rules/jet/oj-css-style-bp-font-family.js +1 -1
  259. package/rules/jet/oj-css-style-bp-font.js +1 -1
  260. package/rules/jet/oj-css-style-deprecated.js +1 -1
  261. package/rules/jet/oj-css-style-override.js +2 -2
  262. package/rules/jet/oj-css-var-override.js +1 -1
  263. package/rules/jet/oj-form-maxcols.js +2 -2
  264. package/rules/jet/oj-html-5-attr-obs.js +1 -1
  265. package/rules/jet/oj-html-5-tag-obs.js +1 -1
  266. package/rules/jet/oj-html-alta-deprecated.js +6 -0
  267. package/rules/jet/oj-html-attr-$unique.js +1 -1
  268. package/rules/jet/oj-html-attr-2def.js +1 -1
  269. package/rules/jet/oj-html-attr-json.js +1 -1
  270. package/rules/jet/oj-html-attr-prefix-expr.js +1 -1
  271. package/rules/jet/oj-html-attr-prefix-ro.js +1 -1
  272. package/rules/jet/oj-html-attr-req.js +1 -1
  273. package/rules/jet/oj-html-bindforeach-data.js +2 -2
  274. package/rules/jet/oj-html-bindif-test.js +2 -2
  275. package/rules/jet/oj-html-binding-attr.js +2 -2
  276. package/rules/jet/oj-html-cca-count.js +1 -1
  277. package/rules/jet/oj-html-cca-tagname.js +2 -2
  278. package/rules/jet/oj-html-cdn.js +1 -1
  279. package/rules/jet/oj-html-combo-converter.js +1 -1
  280. package/rules/jet/oj-html-cspexpr.js +1 -1
  281. package/rules/jet/oj-html-databind-all.js +1 -1
  282. package/rules/jet/oj-html-dlg-title.js +2 -2
  283. package/rules/jet/oj-html-file-pick-accept.js +2 -2
  284. package/rules/jet/oj-html-form-bindif.js +1 -1
  285. package/rules/jet/oj-html-form-layout-maxcols.js +2 -2
  286. package/rules/jet/oj-html-form-noflex.js +1 -1
  287. package/rules/jet/oj-html-input-isodate.js +2 -2
  288. package/rules/jet/oj-html-invalid-doctype.js +2 -2
  289. package/rules/jet/oj-html-jq-databind.js +2 -2
  290. package/rules/jet/oj-html-ko-comment.js +1 -1
  291. package/rules/jet/oj-html-ko-databind.js +2 -2
  292. package/rules/jet/oj-html-label-for-prefix.js +1 -1
  293. package/rules/jet/oj-html-missing-doctype.js +1 -1
  294. package/rules/jet/oj-html-msgs-cat-text.js +6 -0
  295. package/rules/jet/oj-html-no-style-tag.js +6 -0
  296. package/rules/jet/oj-html-notag-style.js +6 -0
  297. package/rules/jet/oj-html-oj-lib.js +1 -1
  298. package/rules/jet/oj-html-ojattr-520.js +1 -1
  299. package/rules/jet/oj-html-ojattr-deprecated.js +2 -2
  300. package/rules/jet/oj-html-ojattr-enum-deprecated.js +2 -2
  301. package/rules/jet/oj-html-ojattr-evt-syntax.js +2 -2
  302. package/rules/jet/oj-html-ojattr-value.js +1 -1
  303. package/rules/jet/oj-html-ojattr.js +2 -2
  304. package/rules/jet/oj-html-ojevent.js +2 -2
  305. package/rules/jet/oj-html-ojslot.js +2 -2
  306. package/rules/jet/oj-html-ojstyle.js +1 -1
  307. package/rules/jet/oj-html-ojtag-datacmd.js +2 -2
  308. package/rules/jet/oj-html-ojtag-datactx.js +1 -1
  309. package/rules/jet/oj-html-ojtag-deprecated.js +2 -2
  310. package/rules/jet/oj-html-ojtag-globattr-noprefix.js +2 -2
  311. package/rules/jet/oj-html-ojtag-id.js +1 -1
  312. package/rules/jet/oj-html-ojtag-nonglobattr-prefix.js +2 -2
  313. package/rules/jet/oj-html-ojtag-ns.js +1 -1
  314. package/rules/jet/oj-html-picker-attrs.js +2 -2
  315. package/rules/jet/oj-html-redwood-cssnovars.js +1 -1
  316. package/rules/jet/oj-html-redwood-cssvars.js +1 -1
  317. package/rules/jet/oj-html-self-close.js +1 -1
  318. package/rules/jet/oj-html-slot-item-minmax.js +1 -1
  319. package/rules/jet/oj-html-slot-name.js +2 -2
  320. package/rules/jet/oj-html-slot-pref-content.js +2 -2
  321. package/rules/jet/oj-html-style-abs-units.js +1 -1
  322. package/rules/jet/oj-html-style-bp-color.js +1 -1
  323. package/rules/jet/oj-html-style-bp-display.js +1 -1
  324. package/rules/jet/oj-html-style-bp-font-family.js +1 -1
  325. package/rules/jet/oj-html-style-bp-font.js +1 -1
  326. package/rules/jet/oj-html-style-deprecated.js +2 -2
  327. package/rules/jet/oj-html-style.js +1 -1
  328. package/rules/jet/oj-html-stylesel.js +1 -1
  329. package/rules/jet/oj-html-tag-attr-noprefix.js +2 -2
  330. package/rules/jet/oj-html-template-index.js +2 -2
  331. package/rules/jet/oj-html-unsup-theme.js +1 -1
  332. package/rules/jet/oj-html-wctag-$props.js +1 -1
  333. package/rules/jet/oj-html-wctag-arialabelledby.js +1 -1
  334. package/rules/jet/oj-html-wctag-for.js +1 -1
  335. package/rules/jet/oj-html-wctag-id.js +2 -2
  336. package/rules/jet/oj-html-wctag-nested.js +6 -0
  337. package/rules/jet/oj-html-wctag-packprivate.js +1 -1
  338. package/rules/jet/oj-js-comp-attr-deprecated.js +2 -2
  339. package/rules/jet/oj-js-comp-meth-deprecated.js +2 -2
  340. package/rules/jet/oj-js-no-ext-final.js +1 -1
  341. package/rules/jet/oj-js-noconsole.js +1 -1
  342. package/rules/jet/oj-js-ojcomp-deprecated.js +2 -2
  343. package/rules/jet/oj-js-ojcomp-exist.js +1 -1
  344. package/rules/jet/oj-js-ojcomp-new.js +1 -1
  345. package/rules/jet/oj-js-poly-promise.js +1 -1
  346. package/rules/jet/oj-js-var-undef.js +1 -1
  347. package/rules/jet/oj-json-syntax.js +1 -1
  348. package/rules/jet/oj-ts-comp-attr-deprecated.js +2 -2
  349. package/rules/jet/oj-ts-comp-meth-deprecated.js +2 -2
  350. package/rules/jet/oj-ts-no-ext-final.js +1 -1
  351. package/rules/jet/oj-ts-noconsole.js +1 -1
  352. package/rules/jet/oj-ts-ojcomp-deprecated.js +2 -2
  353. package/rules/jet/oj-ts-ojcomp-exist.js +1 -1
  354. package/rules/jet/oj-ts-ojcomp-new.js +1 -1
  355. package/rules/jet/oj-ts-poly-promise.js +1 -1
  356. package/rules/jet/rules.json +2 -2
  357. package/schema/component-schema.json +4 -1
  358. package/src/JafCore.js +2 -2
  359. package/types/index.d.ts +111 -82
  360. package/lib/imanual.js +0 -6
  361. package/lib/xmanual.js +0 -6
  362. package/rulepacks/jetwc-lib/component-audit-utils.js +0 -6
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;