@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.
- package/LICENSE.md +1 -1
- package/jaf-amd.js +6 -6
- package/jaf.js +2 -2
- package/jafapi.js +2 -2
- package/lib/AST.js +1 -1
- package/lib/AST_Ts.js +2 -2
- package/lib/AstJson.js +1 -1
- package/lib/AstMd.js +6 -0
- package/lib/AstNodeTypes.js +2 -2
- package/lib/Comments.js +1 -1
- package/lib/ComponentSvcs.js +1 -1
- package/lib/Components.js +2 -2
- package/lib/Config.js +2 -2
- package/lib/ConfigLib.js +2 -2
- package/lib/CssLib.js +1 -1
- package/lib/CssUtils.js +1 -1
- package/lib/DomUtils.js +2 -2
- package/lib/FileIndex.js +1 -1
- package/lib/FileSet.js +1 -1
- package/lib/FsUtils.js +2 -2
- package/lib/Histo.js +2 -2
- package/lib/HtmlTree.js +2 -2
- package/lib/HtmlUtils.js +1 -1
- package/lib/Issue.js +2 -2
- package/lib/JafEvents.js +1 -1
- package/lib/JafLib.js +2 -2
- package/lib/Json.js +2 -2
- package/lib/JsonLoader.js +2 -2
- package/lib/Md.js +6 -0
- package/lib/MetaLib.js +2 -2
- package/lib/NetUtils.js +1 -1
- package/lib/NodeTypes.js +1 -1
- package/lib/Parser.js +2 -2
- package/lib/RegTypes.js +2 -2
- package/lib/Registry.js +2 -2
- package/lib/Reporter.js +2 -2
- package/lib/RuleContext.js +1 -1
- package/lib/RulePack.js +1 -1
- package/lib/RuleSet.js +2 -2
- package/lib/Rules.js +2 -2
- package/lib/Scope.js +2 -2
- package/lib/SemVer.js +1 -1
- package/lib/Server.js +1 -1
- package/lib/SevLib.js +1 -1
- package/lib/Severity.js +1 -1
- package/lib/Stats.js +1 -1
- package/lib/Ts.js +2 -2
- package/lib/Utils.js +2 -2
- package/lib/Watch.js +1 -1
- package/lib/Writer.js +1 -1
- package/lib/ZipUtils.js +1 -1
- package/lib/api.js +2 -2
- package/lib/builtinpacks.js +6 -0
- package/lib/cliStats.js +2 -2
- package/lib/clone.js +2 -2
- package/lib/cmdline.js +2 -2
- package/lib/colors.js +2 -2
- package/lib/defaults.js +6 -0
- package/lib/deflist.js +6 -0
- package/lib/dislist.js +6 -0
- package/lib/exportRules.js +1 -1
- package/lib/extends.js +2 -2
- package/lib/filetypes.js +2 -2
- package/lib/grouplist.js +6 -0
- package/lib/groups.js +2 -2
- package/lib/help.js +2 -2
- package/lib/jetver.js +2 -2
- package/lib/macros.js +1 -1
- package/lib/manual.js +6 -0
- package/lib/metaLoader.js +1 -1
- package/lib/metahist.js +1 -1
- package/lib/msgidLoader.js +1 -1
- package/lib/ns.js +2 -2
- package/lib/nslist.js +1 -1
- package/lib/outFormat.js +1 -1
- package/lib/outfile.js +1 -1
- package/lib/ruleLoader.js +1 -1
- package/lib/scaffold.js +2 -2
- package/lib/scaffoldRule.js +2 -2
- package/lib/schema.js +2 -2
- package/lib/scopewalker.js +2 -2
- package/lib/spinner.js +2 -2
- package/lib/spinnernoop.js +1 -1
- package/lib/tabs.js +1 -1
- package/libext/expparser.js +1 -1
- package/meta/11.1.0/jetauditmeta.js +1 -1
- package/meta/12.0.0/jetauditmeta.js +9 -0
- package/meta/12.1.0/jetauditmeta.js +9 -0
- package/meta/metaverlist.json +1 -1
- package/package.json +72 -68
- package/rulepacks/csp/csp-html-script-unsafe-inline.js +1 -1
- package/rulepacks/csp/csp-html-style-unsafe-inline.js +1 -1
- package/rulepacks/csp/csp-html-unsafe-expr.js +1 -1
- package/rulepacks/csp/csp-js-script-unsafe-eval.js +1 -1
- package/rulepacks/csp/csp-js-style-unsafe-inline.js +1 -1
- package/rulepacks/csp/csp-ts-script-unsafe-eval.js +1 -1
- package/rulepacks/csp/csp-ts-style-unsafe-inline.js +1 -1
- package/rulepacks/csp/msgid.json +1 -1
- package/rulepacks/csp/rules.json +1 -1
- package/rulepacks/jetwc/jetwc-absolute-jetversion.js +2 -2
- package/rulepacks/jetwc/jetwc-aria-redefinition.js +2 -2
- package/rulepacks/jetwc/jetwc-bootstrap.js +2 -2
- package/rulepacks/jetwc/jetwc-compjson-bp-ar.js +2 -2
- package/rulepacks/jetwc/jetwc-compjson-bp-obj.js +2 -2
- package/rulepacks/jetwc/jetwc-component-dependencies.js +2 -2
- package/rulepacks/jetwc/jetwc-component-displayname.js +2 -2
- package/rulepacks/jetwc/jetwc-component-foldername.js +2 -2
- package/rulepacks/jetwc/jetwc-component-location.js +2 -2
- package/rulepacks/jetwc/jetwc-component-type.js +2 -2
- package/rulepacks/jetwc/jetwc-css-oj-complete.js +6 -0
- package/rulepacks/jetwc/jetwc-data-property-prefix.js +2 -2
- package/rulepacks/jetwc/jetwc-deprecated-lifecycle.js +2 -2
- package/rulepacks/jetwc/jetwc-disabled-property.js +2 -2
- package/rulepacks/jetwc/jetwc-displayname.js +2 -2
- package/rulepacks/jetwc/jetwc-dynamic-slot-context.js +2 -2
- package/rulepacks/jetwc/jetwc-dynamic-slots-naming.js +2 -2
- package/rulepacks/jetwc/jetwc-event-displayname.js +2 -2
- package/rulepacks/jetwc/jetwc-events.js +2 -2
- package/rulepacks/jetwc/jetwc-jet-version.js +2 -2
- package/rulepacks/jetwc/jetwc-loader-file.js +2 -2
- package/rulepacks/jetwc/jetwc-markdown-link.js +6 -0
- package/rulepacks/jetwc/jetwc-method-displayname.js +2 -2
- package/rulepacks/jetwc/jetwc-methods.js +2 -2
- package/rulepacks/jetwc/jetwc-namespace.js +2 -2
- package/rulepacks/jetwc/jetwc-nested-defaults.js +2 -2
- package/rulepacks/jetwc/jetwc-nls-languages.js +2 -2
- package/rulepacks/jetwc/jetwc-nls-root.js +2 -2
- package/rulepacks/jetwc/jetwc-oj-register.js +2 -2
- package/rulepacks/jetwc/jetwc-ojcss.js +2 -2
- package/rulepacks/jetwc/jetwc-pack-children.js +2 -2
- package/rulepacks/jetwc/jetwc-packable-components.js +2 -2
- package/rulepacks/jetwc/jetwc-prerelease-dependencies.js +2 -2
- package/rulepacks/jetwc/jetwc-prerelease-pattern.js +2 -2
- package/rulepacks/jetwc/jetwc-prerelease-version.js +2 -2
- package/rulepacks/jetwc/jetwc-property-changed.js +2 -2
- package/rulepacks/jetwc/jetwc-property-displayname.js +2 -2
- package/rulepacks/jetwc/jetwc-property-nesting.js +2 -2
- package/rulepacks/jetwc/jetwc-public-modules.js +2 -2
- package/rulepacks/jetwc/jetwc-register-css.js +2 -2
- package/rulepacks/jetwc/jetwc-register-with-promises.js +2 -2
- package/rulepacks/jetwc/jetwc-require-paths.js +2 -2
- package/rulepacks/jetwc/jetwc-required-subproperty.js +2 -2
- package/rulepacks/jetwc/jetwc-reserved-property.js +2 -2
- package/rulepacks/jetwc/jetwc-schema.js +2 -2
- package/rulepacks/jetwc/jetwc-semantic-version.js +2 -2
- package/rulepacks/jetwc/jetwc-slot-displayname.js +2 -2
- package/rulepacks/jetwc/jetwc-slots.js +2 -2
- package/rulepacks/jetwc/jetwc-standard-files.js +2 -2
- package/rulepacks/jetwc/jetwc-subproperty-writeback.js +2 -2
- package/rulepacks/jetwc/jetwc-template-slots.js +2 -2
- package/rulepacks/jetwc/jetwc-unused-events.js +2 -2
- package/rulepacks/jetwc/jetwc-unused-slots.js +2 -2
- package/rulepacks/jetwc/jetwc-vb-category.js +2 -2
- package/rulepacks/jetwc/jetwc-vb-icon.js +2 -2
- package/rulepacks/jetwc/jetwc-vcomponent-jetversion.js +6 -0
- package/rulepacks/jetwc/jetwc-vcomponent-loader.js +6 -0
- package/rulepacks/jetwc/jetwc-vcomponent-version.js +6 -0
- package/rulepacks/jetwc/jetwc-version-openrange.js +2 -2
- package/rulepacks/jetwc/jetwc-writeback-required.js +2 -2
- package/rulepacks/jetwc/msgid.json +2 -2
- package/rulepacks/jetwc/rules.json +2 -2
- package/rulepacks/jetwc-lib/jetwcutils-auditComponentCacheManager.js +6 -0
- package/rulepacks/jetwc-lib/jetwcutils-commonListenerImpls.js +6 -0
- package/rulepacks/jetwc-lib/jetwcutils-componentAuditUtils.js +6 -0
- package/rulepacks/jetwc-lib/jetwcutils-componentFinder.js +6 -0
- package/rulepacks/jetwc-lib/jetwcutils-preCompiler.js +6 -0
- package/rulepacks/jetwc-lib/jetwcutils-tsxUtils.js +6 -0
- package/rulepacks/jetwco/jetwco-bootstrap.js +2 -2
- package/rulepacks/jetwco/jetwco-cacc-auditConstraints.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-dependencies.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-dynamicSlots.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-eventBubbles.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-eventCancelable.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-eventPayload.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-events.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-helpers.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-jetVer.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-methodParamTypes.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-methodParams.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-methodReturnType.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-methods.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-packBundle.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-packBundleContent.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-packContent.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-properties.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-propertyDefault.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-propertyEnumeration.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-propertyReadOnly.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-propertyRequired.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-propertyType.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-propertyWriteback.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-publicModules.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-slotDataVariable.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-slotDataVariableType.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-slots.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-styleClasses.js +6 -0
- package/rulepacks/jetwco/jetwco-cacc-styleVariables.js +6 -0
- package/rulepacks/jetwco/jetwco-compjson-ns-reg.js +2 -2
- package/rulepacks/jetwco/jetwco-component-api-baseline-changes.js +2 -2
- package/rulepacks/jetwco/jetwco-component-api-changes.js +2 -2
- package/rulepacks/jetwco/jetwco-component-api-controlled-changes.js +6 -0
- package/rulepacks/jetwco/jetwco-component-cdn.js +2 -2
- package/rulepacks/jetwco/jetwco-description-standards.js +6 -0
- package/rulepacks/jetwco/jetwco-displayname-standards.js +6 -0
- package/rulepacks/jetwco/jetwco-exchange-version-check.js +2 -2
- package/rulepacks/jetwco/jetwco-license-info.js +2 -2
- package/rulepacks/jetwco/jetwco-prerelease-cdn.js +2 -2
- package/rulepacks/jetwco/jetwco-thirdparty-ba.js +2 -2
- package/rulepacks/jetwco/msgid.json +2 -2
- package/rulepacks/jetwco/rules.json +2 -2
- package/rulepacks/spoc/msgid.json +1 -1
- package/rulepacks/spoc/rules.json +1 -1
- package/rulepacks/spoc/spoc-dom-manip-inv-tag.js +1 -1
- package/rulepacks/spoc/spoc-dom-manip-tag-pos.js +1 -1
- package/rulepacks/spoc/spoc-dom-manip.js +1 -1
- package/rulepacks/wdt/msgid.json +6 -0
- package/rulepacks/wdt/rules.json +6 -0
- package/rulepacks/wdt/wd-driver-sleep.js +6 -0
- package/rulepacks/wdt/wd-xpath.js +6 -0
- package/rules/jaf/jaf-css-diagnose.js +1 -1
- package/rules/jaf/jaf-html-diagnose.js +1 -1
- package/rules/jaf/jaf-init-schema.js +1 -1
- package/rules/jaf/jaf-js-diagnose.js +1 -1
- package/rules/jaf/jaf-ts-diagnose.js +1 -1
- package/rules/jaf/jaf-ts-walk.js +6 -0
- package/rules/jaf/msgid.json +2 -2
- package/rules/jaf/rules.json +2 -2
- package/rules/jet/helpers/acc-aria-label.js +1 -1
- package/rules/jet/helpers/bp-checkPropType.js +1 -1
- package/rules/jet/helpers/cssHelper.js +1 -1
- package/rules/jet/helpers/extractStylesFromClass.js +1 -1
- package/rules/jet/helpers/has-slot-name.js +2 -2
- package/rules/jet/helpers/has-slot.js +1 -1
- package/rules/jet/helpers/json-prop-pos.js +1 -1
- package/rules/jet/helpers/json-propname-pos.js +1 -1
- package/rules/jet/helpers/style-selector.js +1 -1
- package/rules/jet/helpers/valid-attr.js +1 -1
- package/rules/jet/helpers/vartrack.js +1 -1
- package/rules/jet/jet-css-ojselector.js +1 -1
- package/rules/jet/msgid.json +2 -2
- package/rules/jet/oj-acc-aria-labelledby.js +1 -1
- package/rules/jet/oj-acc-aria-prop.js +2 -2
- package/rules/jet/oj-acc-avatar-aria-role.js +2 -2
- package/rules/jet/oj-acc-combobox-aria-label.js +2 -2
- package/rules/jet/oj-acc-film-strip-aria-label.js +2 -2
- package/rules/jet/oj-acc-input-aria-label.js +2 -2
- package/rules/jet/oj-acc-select-aria-label.js +2 -2
- package/rules/jet/oj-cca-compjson-bp-ar.js +1 -1
- package/rules/jet/oj-cca-compjson-bp-dsplyname.js +1 -1
- package/rules/jet/oj-cca-compjson-bp-jetver.js +1 -1
- package/rules/jet/oj-cca-compjson-bp-obj.js +1 -1
- package/rules/jet/oj-cca-compjson-ns-reg.js +1 -1
- package/rules/jet/oj-css-bp-border-color.js +1 -1
- package/rules/jet/oj-css-bp-dir-flow.js +1 -1
- package/rules/jet/oj-css-bp-float.js +1 -1
- package/rules/jet/oj-css-bp-textalign.js +1 -1
- package/rules/jet/oj-css-style-abs-units.js +2 -2
- package/rules/jet/oj-css-style-bp-color.js +1 -1
- package/rules/jet/oj-css-style-bp-display.js +1 -1
- package/rules/jet/oj-css-style-bp-font-family.js +1 -1
- package/rules/jet/oj-css-style-bp-font.js +1 -1
- package/rules/jet/oj-css-style-deprecated.js +1 -1
- package/rules/jet/oj-css-style-override.js +2 -2
- package/rules/jet/oj-css-var-override.js +1 -1
- package/rules/jet/oj-form-maxcols.js +2 -2
- package/rules/jet/oj-html-5-attr-obs.js +1 -1
- package/rules/jet/oj-html-5-tag-obs.js +1 -1
- package/rules/jet/oj-html-alta-deprecated.js +6 -0
- package/rules/jet/oj-html-attr-$unique.js +1 -1
- package/rules/jet/oj-html-attr-2def.js +1 -1
- package/rules/jet/oj-html-attr-json.js +1 -1
- package/rules/jet/oj-html-attr-prefix-expr.js +1 -1
- package/rules/jet/oj-html-attr-prefix-ro.js +1 -1
- package/rules/jet/oj-html-attr-req.js +1 -1
- package/rules/jet/oj-html-bindforeach-data.js +2 -2
- package/rules/jet/oj-html-bindif-test.js +2 -2
- package/rules/jet/oj-html-binding-attr.js +2 -2
- package/rules/jet/oj-html-cca-count.js +1 -1
- package/rules/jet/oj-html-cca-tagname.js +2 -2
- package/rules/jet/oj-html-cdn.js +1 -1
- package/rules/jet/oj-html-combo-converter.js +1 -1
- package/rules/jet/oj-html-cspexpr.js +1 -1
- package/rules/jet/oj-html-databind-all.js +1 -1
- package/rules/jet/oj-html-dlg-title.js +2 -2
- package/rules/jet/oj-html-file-pick-accept.js +2 -2
- package/rules/jet/oj-html-form-bindif.js +1 -1
- package/rules/jet/oj-html-form-layout-maxcols.js +2 -2
- package/rules/jet/oj-html-form-noflex.js +1 -1
- package/rules/jet/oj-html-input-isodate.js +2 -2
- package/rules/jet/oj-html-invalid-doctype.js +2 -2
- package/rules/jet/oj-html-jq-databind.js +2 -2
- package/rules/jet/oj-html-ko-comment.js +1 -1
- package/rules/jet/oj-html-ko-databind.js +2 -2
- package/rules/jet/oj-html-label-for-prefix.js +1 -1
- package/rules/jet/oj-html-missing-doctype.js +1 -1
- package/rules/jet/oj-html-msgs-cat-text.js +6 -0
- package/rules/jet/oj-html-no-style-tag.js +6 -0
- package/rules/jet/oj-html-notag-style.js +6 -0
- package/rules/jet/oj-html-oj-lib.js +1 -1
- package/rules/jet/oj-html-ojattr-520.js +1 -1
- package/rules/jet/oj-html-ojattr-deprecated.js +2 -2
- package/rules/jet/oj-html-ojattr-enum-deprecated.js +2 -2
- package/rules/jet/oj-html-ojattr-evt-syntax.js +2 -2
- package/rules/jet/oj-html-ojattr-value.js +1 -1
- package/rules/jet/oj-html-ojattr.js +2 -2
- package/rules/jet/oj-html-ojevent.js +2 -2
- package/rules/jet/oj-html-ojslot.js +2 -2
- package/rules/jet/oj-html-ojstyle.js +1 -1
- package/rules/jet/oj-html-ojtag-datacmd.js +2 -2
- package/rules/jet/oj-html-ojtag-datactx.js +1 -1
- package/rules/jet/oj-html-ojtag-deprecated.js +2 -2
- package/rules/jet/oj-html-ojtag-globattr-noprefix.js +2 -2
- package/rules/jet/oj-html-ojtag-id.js +1 -1
- package/rules/jet/oj-html-ojtag-nonglobattr-prefix.js +2 -2
- package/rules/jet/oj-html-ojtag-ns.js +1 -1
- package/rules/jet/oj-html-picker-attrs.js +2 -2
- package/rules/jet/oj-html-redwood-cssnovars.js +1 -1
- package/rules/jet/oj-html-redwood-cssvars.js +1 -1
- package/rules/jet/oj-html-self-close.js +1 -1
- package/rules/jet/oj-html-slot-item-minmax.js +1 -1
- package/rules/jet/oj-html-slot-name.js +2 -2
- package/rules/jet/oj-html-slot-pref-content.js +2 -2
- package/rules/jet/oj-html-style-abs-units.js +1 -1
- package/rules/jet/oj-html-style-bp-color.js +1 -1
- package/rules/jet/oj-html-style-bp-display.js +1 -1
- package/rules/jet/oj-html-style-bp-font-family.js +1 -1
- package/rules/jet/oj-html-style-bp-font.js +1 -1
- package/rules/jet/oj-html-style-deprecated.js +2 -2
- package/rules/jet/oj-html-style.js +1 -1
- package/rules/jet/oj-html-stylesel.js +1 -1
- package/rules/jet/oj-html-tag-attr-noprefix.js +2 -2
- package/rules/jet/oj-html-template-index.js +2 -2
- package/rules/jet/oj-html-unsup-theme.js +1 -1
- package/rules/jet/oj-html-wctag-$props.js +1 -1
- package/rules/jet/oj-html-wctag-arialabelledby.js +1 -1
- package/rules/jet/oj-html-wctag-for.js +1 -1
- package/rules/jet/oj-html-wctag-id.js +2 -2
- package/rules/jet/oj-html-wctag-nested.js +6 -0
- package/rules/jet/oj-html-wctag-packprivate.js +1 -1
- package/rules/jet/oj-js-comp-attr-deprecated.js +2 -2
- package/rules/jet/oj-js-comp-meth-deprecated.js +2 -2
- package/rules/jet/oj-js-no-ext-final.js +1 -1
- package/rules/jet/oj-js-noconsole.js +1 -1
- package/rules/jet/oj-js-ojcomp-deprecated.js +2 -2
- package/rules/jet/oj-js-ojcomp-exist.js +1 -1
- package/rules/jet/oj-js-ojcomp-new.js +1 -1
- package/rules/jet/oj-js-poly-promise.js +1 -1
- package/rules/jet/oj-js-var-undef.js +1 -1
- package/rules/jet/oj-json-syntax.js +1 -1
- package/rules/jet/oj-ts-comp-attr-deprecated.js +2 -2
- package/rules/jet/oj-ts-comp-meth-deprecated.js +2 -2
- package/rules/jet/oj-ts-no-ext-final.js +1 -1
- package/rules/jet/oj-ts-noconsole.js +1 -1
- package/rules/jet/oj-ts-ojcomp-deprecated.js +2 -2
- package/rules/jet/oj-ts-ojcomp-exist.js +1 -1
- package/rules/jet/oj-ts-ojcomp-new.js +1 -1
- package/rules/jet/oj-ts-poly-promise.js +1 -1
- package/rules/jet/rules.json +2 -2
- package/schema/component-schema.json +4 -1
- package/src/JafCore.js +2 -2
- package/types/index.d.ts +122 -82
- package/lib/imanual.js +0 -6
- package/lib/xmanual.js +0 -6
- package/rulepacks/jetwc-lib/component-audit-utils.js +0 -6
package/meta/metaverlist.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"metaList":{"6.0.0":{"version":"6.0.1","date":"Friday Jul 12, 2019","time":"10:58am pdt"},"5.2.0":{"version":"5.2.3","date":"Friday Jul 12, 2019","time":"10:55am pdt"},"6.1.0":{"version":"6.1.3","date":"Friday Jul 12, 2019","time":"11:00am pdt"},"6.2.0":{"version":"6.2.2","date":"Friday Jul 12, 2019","time":"11:02am pdt"},"7.0.0":{"version":"7.0.1","date":"Friday Jul 12, 2019","time":"11:04am pdt"},"7.1.0":{"version":"7.1.0","date":"Friday Jul 12, 2019","time":"11:06am pdt"},"7.2.0":{"version":"7.2.0","date":"Sunday Feb 16, 2020","time":"10:13pm est"},"7.3.0":{"version":"7.3.0","date":"Tuesday May 05, 2020","time":"12:50am edt"},"8.0.0":{"version":"8.0.0","date":"Sunday Feb 16, 2020","time":"10:51pm est"},"8.1.0":{"version":"8.1.0","date":"Sunday Feb 16, 2020","time":"10:20pm est"},"8.2.0":{"version":"8.2.0","date":"Friday Apr 17, 2020","time":"1:08am utc"},"8.3.0":{"version":"8.3.0","date":"Monday May 04, 2020","time":"4:34pm edt"},"9.0.0":{"version":"9.0.0","date":"Friday Jun 12, 2020","time":"1:57am utc"},"9.1.0":{"version":"9.1.0","date":"Thursday Aug 06, 2020","time":"2:13am utc"},"9.2.0":{"version":"9.2.0","date":"Wednesday Oct 07, 2020","time":"5:41pm utc"},"10.0.0":{"version":"10.0.0","date":"Thursday Jan 07, 2021","time":"9:20pm utc"},"10.1.0":{"version":"10.1.0","date":"Saturday Apr 17, 2021","time":"4:01pm utc"},"11.0.0":{"version":"11.0.0","date":"Friday Jul 02, 2021","time":"3:02am utc"},"11.1.0":{"version":"11.1.
|
|
1
|
+
{"metaList":{"6.0.0":{"version":"6.0.1","date":"Friday Jul 12, 2019","time":"10:58am pdt"},"5.2.0":{"version":"5.2.3","date":"Friday Jul 12, 2019","time":"10:55am pdt"},"6.1.0":{"version":"6.1.3","date":"Friday Jul 12, 2019","time":"11:00am pdt"},"6.2.0":{"version":"6.2.2","date":"Friday Jul 12, 2019","time":"11:02am pdt"},"7.0.0":{"version":"7.0.1","date":"Friday Jul 12, 2019","time":"11:04am pdt"},"7.1.0":{"version":"7.1.0","date":"Friday Jul 12, 2019","time":"11:06am pdt"},"7.2.0":{"version":"7.2.0","date":"Sunday Feb 16, 2020","time":"10:13pm est"},"7.3.0":{"version":"7.3.0","date":"Tuesday May 05, 2020","time":"12:50am edt"},"8.0.0":{"version":"8.0.0","date":"Sunday Feb 16, 2020","time":"10:51pm est"},"8.1.0":{"version":"8.1.0","date":"Sunday Feb 16, 2020","time":"10:20pm est"},"8.2.0":{"version":"8.2.0","date":"Friday Apr 17, 2020","time":"1:08am utc"},"8.3.0":{"version":"8.3.0","date":"Monday May 04, 2020","time":"4:34pm edt"},"9.0.0":{"version":"9.0.0","date":"Friday Jun 12, 2020","time":"1:57am utc"},"9.1.0":{"version":"9.1.0","date":"Thursday Aug 06, 2020","time":"2:13am utc"},"9.2.0":{"version":"9.2.0","date":"Wednesday Oct 07, 2020","time":"5:41pm utc"},"10.0.0":{"version":"10.0.0","date":"Thursday Jan 07, 2021","time":"9:20pm utc"},"10.1.0":{"version":"10.1.0","date":"Saturday Apr 17, 2021","time":"4:01pm utc"},"11.0.0":{"version":"11.0.0","date":"Friday Jul 02, 2021","time":"3:02am utc"},"11.1.0":{"version":"11.1.0","date":"Thursday Sep 30, 2021","time":"9:33pm utc"},"12.0.0":{"version":"12.0.0","date":"Friday Feb 04, 2022","time":"2:29am utc"},"12.1.0":{"version":"12.1.0","date":"Saturday Apr 09, 2022","time":"7:54am utc"}}}
|
package/package.json
CHANGED
|
@@ -1,68 +1,72 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@oracle/oraclejet-audit",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "JET AUDIT FRAMEWORK",
|
|
5
|
-
"main": "jaf.js",
|
|
6
|
-
"files": [
|
|
7
|
-
"jafconfig.json",
|
|
8
|
-
"*.js",
|
|
9
|
-
"html",
|
|
10
|
-
"lib",
|
|
11
|
-
"libext",
|
|
12
|
-
"meta",
|
|
13
|
-
"schema",
|
|
14
|
-
"rulepacks",
|
|
15
|
-
"rules",
|
|
16
|
-
"src",
|
|
17
|
-
"tests",
|
|
18
|
-
"types"
|
|
19
|
-
],
|
|
20
|
-
"scripts": {
|
|
21
|
-
"start": "node jaf.js -e ",
|
|
22
|
-
"test": "node ./tests/test.js -ut -c ./tests/config/config_base.json",
|
|
23
|
-
"test-jetwc": "mocha ./tests/jetwc-tests/*.test.js",
|
|
24
|
-
"test-jetwco": "mocha ./tests/jetwco-tests/*.test.js --timeout 20000",
|
|
25
|
-
"build": "node ./build/build.js",
|
|
26
|
-
"metadel": "node ./build/metadel.js",
|
|
27
|
-
"buildmeta": "node ./build/metabuild.js --show"
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
"
|
|
31
|
-
},
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
"
|
|
43
|
-
|
|
44
|
-
"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
}
|
|
68
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@oracle/oraclejet-audit",
|
|
3
|
+
"version": "12.1.0",
|
|
4
|
+
"description": "JET AUDIT FRAMEWORK",
|
|
5
|
+
"main": "jaf.js",
|
|
6
|
+
"files": [
|
|
7
|
+
"jafconfig.json",
|
|
8
|
+
"*.js",
|
|
9
|
+
"html",
|
|
10
|
+
"lib",
|
|
11
|
+
"libext",
|
|
12
|
+
"meta",
|
|
13
|
+
"schema",
|
|
14
|
+
"rulepacks",
|
|
15
|
+
"rules",
|
|
16
|
+
"src",
|
|
17
|
+
"tests",
|
|
18
|
+
"types"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"start": "node jaf.js -e ",
|
|
22
|
+
"test": "node ./tests/test.js -ut -c ./tests/config/config_base.json",
|
|
23
|
+
"test-jetwc": "mocha ./tests/jetwc-tests/*.test.js --timeout 5000",
|
|
24
|
+
"test-jetwco": "mocha ./tests/jetwco-tests/*.test.js --timeout 20000",
|
|
25
|
+
"build": "node ./build/build.js",
|
|
26
|
+
"metadel": "node ./build/metadel.js",
|
|
27
|
+
"buildmeta": "node ./build/metabuild.js --show",
|
|
28
|
+
"test-oj-sample": "node ./tests/scripts/testCaseAudit oj-sample base",
|
|
29
|
+
"test-spectra": "node ./tests/scripts/testCaseAudit spectra-components base",
|
|
30
|
+
"test-cx-common": "node ./tests/scripts/testCaseAudit cx-common base"
|
|
31
|
+
},
|
|
32
|
+
"bin": {
|
|
33
|
+
"ojaf": "./jaf.js"
|
|
34
|
+
},
|
|
35
|
+
"keywords": [
|
|
36
|
+
"html",
|
|
37
|
+
"css",
|
|
38
|
+
"js",
|
|
39
|
+
"json",
|
|
40
|
+
"jet",
|
|
41
|
+
"audit",
|
|
42
|
+
"lint"
|
|
43
|
+
],
|
|
44
|
+
"Jaf": {
|
|
45
|
+
"version": "3.12.8"
|
|
46
|
+
},
|
|
47
|
+
"license": "UPL-1.0",
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"@typescript-eslint/typescript-estree": "4.9.1",
|
|
50
|
+
"adm-zip": "0.4.16",
|
|
51
|
+
"ajv": "6.12.6",
|
|
52
|
+
"css-tree": "1.0.0-alpha.39",
|
|
53
|
+
"decache": "4.6.0",
|
|
54
|
+
"espree": "7.3.1",
|
|
55
|
+
"glob": "7.1.6",
|
|
56
|
+
"htmlparser2": "3.10.1",
|
|
57
|
+
"markdown-it": "12.2.0",
|
|
58
|
+
"md5": "2.3.0",
|
|
59
|
+
"mock-http-server": "1.4.2",
|
|
60
|
+
"parserlib": "1.1.1",
|
|
61
|
+
"really-relaxed-json": "0.2.24",
|
|
62
|
+
"semver": "6.3.0",
|
|
63
|
+
"strip-json-comments": "2.0.1",
|
|
64
|
+
"sync-request": "6.1.0",
|
|
65
|
+
"tmp": "0.0.33",
|
|
66
|
+
"typescript": "4.1.2"
|
|
67
|
+
},
|
|
68
|
+
"devDependencies": {
|
|
69
|
+
"chai": "^4.2.0",
|
|
70
|
+
"mocha": "^7.2.0"
|
|
71
|
+
}
|
|
72
|
+
}
|
package/rulepacks/csp/msgid.json
CHANGED
package/rulepacks/csp/rules.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2018,
|
|
2
|
+
* Copyright (c) 2018, 2022, Oracle and/or its affiliates.
|
|
3
3
|
* Licensed under The Universal Permissive License (UPL), Version 1.0
|
|
4
4
|
* as shown at https://oss.oracle.com/licenses/upl/
|
|
5
5
|
*/
|
|
6
|
-
const Utils=require('../jetwc-lib/
|
|
6
|
+
const Utils=require('../jetwc-lib/jetwcutils-componentAuditUtils');const TsxUtils=require('../jetwc-lib/jetwcutils-tsxUtils');const ruleDef=function(){};ruleDef.prototype.getName=function(){return'jetwc-absolute-jetversion'};ruleDef.prototype.getShortDescription=function(){return'Verify support for some range of JET versions'};ruleDef.prototype.getDescription=function(){return'This rule checks that a component has not be hard-wired to a specific version of JET - e.g. specifies some form of range at least'};ruleDef.prototype.register=function(context){return{compjson:this._doAudit,Program:this._doVComponentAudit}};ruleDef.prototype._doAudit=function(context){if(context.suppData.obj){const meta=context.suppData.obj;const fullName=Utils.getComponentFullName(meta);if(context.suppData.obj.jetVersion){this._versionCheck(context,fullName,meta.jetVersion)}}};ruleDef.prototype._doVComponentAudit=function(context){const componentInfo=TsxUtils.matchToVComponentImpl(context,context.filepath);if(componentInfo&&componentInfo.jetVersion){this._versionCheck(context,componentInfo.fullName,componentInfo.jetVersion)}};ruleDef.prototype._versionCheck=function(context,fullName,version){if(context.utils.semVerUtils.isValid(version)){const issue=new context.Issue(`Component ${fullName} is hardwired to a specific JET version (${version}), not a range`);context.reporter.addIssue(issue,context)}};module.exports=ruleDef;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2018,
|
|
2
|
+
* Copyright (c) 2018, 2022, Oracle and/or its affiliates.
|
|
3
3
|
* Licensed under The Universal Permissive License (UPL), Version 1.0
|
|
4
4
|
* as shown at https://oss.oracle.com/licenses/upl/
|
|
5
5
|
*/
|
|
6
|
-
const Utils=require('../jetwc-lib/
|
|
6
|
+
const Utils=require('../jetwc-lib/jetwcutils-componentAuditUtils');const TsxUtils=require('../jetwc-lib/jetwcutils-tsxUtils');const ruleDef=function(){};ruleDef.prototype.getName=function(){return'jetwc-aria-redefinition'};ruleDef.prototype.getShortDescription=function(){return'Ensure that the component does not re-define any WAI-ARIA properties'};ruleDef.prototype.getDescription=function(){return'This rule checks that a component has not overridden or tries to introduce (any custom) WAI-ARIA attributes'};ruleDef.prototype.register=function(context){return{compjson:this._doAudit,Program:this._doVComponentAudit}};ruleDef.prototype._doAudit=function(context){if(context.suppData.obj){const meta=context.suppData.obj;const fullName=Utils.getComponentFullName(meta);const componentType=Utils.getComponentType(meta);if(componentType==='composite'){this._checkProps(context,fullName,meta.properties)}}};ruleDef.prototype._doVComponentAudit=function(context){const componentInfo=TsxUtils.matchToVComponentImpl(context,context.filepath);if(componentInfo){this._checkProps(context,componentInfo.fullName,componentInfo.properties)}};ruleDef.prototype._checkProps=function(context,fullName,properties){let issue;if(properties){const ariaDetect=/^aria[A-Z\-].*$/;Object.keys(properties).forEach(propName=>{if(ariaDetect.test(propName)){issue=new context.Issue(`Component ${fullName} defines a WAI-ARIA property ${propName} which is not allowed`);context.reporter.addIssue(issue,context)}})}};module.exports=ruleDef;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2018,
|
|
2
|
+
* Copyright (c) 2018, 2022, Oracle and/or its affiliates.
|
|
3
3
|
* Licensed under The Universal Permissive License (UPL), Version 1.0
|
|
4
4
|
* as shown at https://oss.oracle.com/licenses/upl/
|
|
5
5
|
*/
|
|
6
|
-
const path=require('path');const Utils=require('../jetwc-lib/
|
|
6
|
+
const path=require('path');const Utils=require('../jetwc-lib/jetwcutils-componentAuditUtils');const componentFinder=require('../jetwc-lib/jetwcutils-componentFinder');const TsxUtils=require('../jetwc-lib/jetwcutils-tsxUtils');const preCompiler=require('../jetwc-lib/jetwcutils-preCompiler');const ruleDef=function(){};ruleDef.prototype.getName=function(){return'jetwc-bootstrap'};ruleDef.prototype.getShortDescription=function(){return'Bootstrap processing for the JETWC rulset'};ruleDef.prototype.getDescription=function(){return'This rule is for internal use by the ruleset and should not be disabled'};ruleDef.prototype.register=function(context){this.componentRoots=context.config.components;this.auditBase=context.config.base;this.typeScriptCompile=context.config.typescript&&context.config.typescript.compile;return{startupRP:this._getAllVisibleComponents,closedownRP:this._reportDiagnostics}};ruleDef.prototype._getAllVisibleComponents=function(context){const{msgLib}=context.utils;msgLib.info(`builtinJetWcRules (${context.rulePack.getPackInfo().prefix}): ${context.rulePack.getPackInfo().version}`);const projectPathInfo=Utils.getKeyPathInfoForRulepack(context,this.auditBase);const componentRootFolder=context.rulePack.getRuleOptions().componentRoot||projectPathInfo.componentRootFolder;let precompileCache;if(this.typeScriptCompile){precompileCache=preCompiler.getPrecompileCacheIfNeeded(context,this.auditBase,projectPathInfo.tsSource,projectPathInfo.componentRootFolder)}const masterComponentList=componentFinder.findAllComponents(context,projectPathInfo,this.componentRoots,precompileCache);if(masterComponentList&&masterComponentList.length>0){const allComponentsMap=masterComponentList.reduce((wmap,component)=>{if(!projectPathInfo.isBuiltOutput||projectPathInfo.isBuiltOutput&&!wmap.has(component.fullName)){wmap.set(component.fullName,component)}return wmap},new Map);const referenceComponents=new Map;const componentPaths=new Map;allComponentsMap.forEach(component=>{component.language=Utils.detectComponentSourceType(context,component.rootFolder,component.vcomponent);switch(component.type){case'reference':referenceComponents.set(component.fullName,component.ba);break;case'composite':case'resource':if(component.local){if(component.dependencies){Object.values(component.dependencies).forEach(dependency=>{if(allComponentsMap.has(dependency.name)){const proxyPaths=allComponentsMap.get(dependency.name).requirePaths;proxyPaths.forEach(path=>{component.requirePaths.add(path)})}else{msgLib.debug(`JETWC: missing dependency lookup for ${dependency.name} when resolving requirePaths`)}})}componentPaths.set(component.rootFolder,component.fullName)}break;}});context.rulePack.setExtension({rulepackVersion:context.rulePack.getPackInfo().version,bootStrap:true,platform:Utils.isWindows?'Windows':'Unix-like',precompiled:this.typeScriptCompile,componentHome:`/${componentRootFolder}/`,auditBuildOutput:projectPathInfo.isBuiltOutput,discoveredPaths:projectPathInfo,componentRoots:this.componentRoots,allReferenceComponents:referenceComponents,allComponents:allComponentsMap,auditableComponentPaths:componentPaths,allAuditableFilePaths:new Map})}else{msgLib.error(`No components have been discovered from the JAF configuration for the ${context.rulePack.getPackInfo().prefix} ruleset to process. You will need to configure the "components" array to point at your component root folder`);Utils.disableRulePack(context)}};ruleDef.prototype._reportDiagnostics=function(context){const msg=context.utils.msgLib;const opts=context.rulePack.getRuleOptions();const diagnostics=context.rulePack.getExtension();if(!opts.testMode){let foundVMMapping=0;let candidateLocal=0;if(diagnostics&&diagnostics.allComponents&&diagnostics.allComponents.length>0){diagnostics.allComponents.forEach((component,compName)=>{if(component.local&&component.type==='composite'){candidateLocal++;if(component.viewModel&&component.viewModel.resolved){foundVMMapping++}}});if(foundVMMapping!==candidateLocal){msgLib.error(`Error: Audit was only able to map ${foundVMMapping} out of ${candidateLocal} components to their viewModels. Some audits will be unable to operate.`)}}}if(opts.debug&&opts.diagnosticFile&&diagnostics){msgLib.msg(`Writing JETWC diagnostics to ${opts.diagnosticFile}.json`);const dFile=Utils.toJAFPath(path.join(path.resolve('.'),opts.diagnosticFile+'.json'));context.utils.fsUtils.writeJsonSync(diagnostics,dFile,{spaces:2,replacer:Utils.diagnosticReplacer})}};module.exports=ruleDef;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2018,
|
|
2
|
+
* Copyright (c) 2018, 2022, Oracle and/or its affiliates.
|
|
3
3
|
* Licensed under The Universal Permissive License (UPL), Version 1.0
|
|
4
4
|
* as shown at https://oss.oracle.com/licenses/upl/
|
|
5
5
|
*/
|
|
6
|
-
const path=require('path');const Utils=require('../jetwc-lib/
|
|
6
|
+
const path=require('path');const Utils=require('../jetwc-lib/jetwcutils-componentAuditUtils');const helperProp=require('../../rules/jet/helpers/bp-checkPropType');const TsxUtils=require('../jetwc-lib/jetwcutils-tsxUtils');const ruleDef=function(){};ruleDef.prototype.getName=function(){return'jetwc-compjson-bp-ar'};ruleDef.prototype.getShortDescription=function(){return'Web component component.json metadata should follow best practices and avoid plain \'array\' type properties'};ruleDef.prototype.getDescription=function(){return'For best practices, web components should avoid use of unqualified property type \'array\', and provide a more complete definition of the API using a closure type definition'};ruleDef.prototype.register=function(context){if(context.rulePack.isRuleEnabled('oj-cca-compjson-bp-ar','JET')){return false}else{return{compjson:this._doAudit,Program:this._doVComponentAudit}}};ruleDef.prototype._doAudit=function(context){if(context.suppData.obj){const meta=context.suppData.obj;const fullName=Utils.getComponentFullName(meta);const componentType=Utils.getComponentType(meta);if(componentType==='composite'){this._checkProps(context,fullName,meta.properties)}}};ruleDef.prototype._doVComponentAudit=function(context){const componentInfo=TsxUtils.matchToVComponentImpl(context,context.filepath);if(componentInfo){this._checkProps(context,componentInfo.fullName,componentInfo.properties)}};ruleDef.prototype._checkProps=function(context,fullName,properties){if(properties){const arrayProps=helperProp(properties,'a');if(arrayProps){for(let i=0;i<arrayProps.length;i++){const checkProperty=arrayProps[i];const checkPropertyType=Utils.getPropertyAttributeFromPath(context,fullName,checkProperty,'type');if(checkPropertyType.toLowerCase()==='array'){if(!Utils.shouldIgnoreCheck(context,'jetwc-compjson-bp-ar',fullName,'properties',checkProperty)){const issue=new context.Issue(`property '${checkProperty}' is defined with unqualified type 'array'. Provide a more complete API definition using a closure type definition.`);context.reporter.addIssue(issue,context)}}}}}};module.exports=ruleDef;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2018,
|
|
2
|
+
* Copyright (c) 2018, 2022, Oracle and/or its affiliates.
|
|
3
3
|
* Licensed under The Universal Permissive License (UPL), Version 1.0
|
|
4
4
|
* as shown at https://oss.oracle.com/licenses/upl/
|
|
5
5
|
*/
|
|
6
|
-
const
|
|
6
|
+
const Utils=require('../jetwc-lib/jetwcutils-componentAuditUtils');const helperProp=require('../../rules/jet/helpers/bp-checkPropType');const TsxUtils=require('../jetwc-lib/jetwcutils-tsxUtils');const ruleDef=function(){};ruleDef.prototype.getName=function(){return'jetwc-compjson-bp-obj'};ruleDef.prototype.getShortDescription=function(){return'Web component component.json metadata should follow best practices and avoid \'object\' type properties'};ruleDef.prototype.getDescription=function(){return'For best practices, web components should avoid use of the property type \'object\' without sub-properties, and provide a more complete definition of the API either using sub-properties or using a closure type definition'};ruleDef.prototype.register=function(context){if(context.rulePack.isRuleEnabled('oj-cca-compjson-bp-obj','JET')){return false}else{return{compjson:this._doAudit,Program:this._doVComponentAudit}}};ruleDef.prototype._doAudit=function(context){if(context.suppData.obj){const meta=context.suppData.obj;const fullName=Utils.getComponentFullName(meta);const componentType=Utils.getComponentType(meta);if(componentType==='composite'){this._checkProps(context,fullName,meta.properties)}}};ruleDef.prototype._doVComponentAudit=function(context){const componentInfo=TsxUtils.matchToVComponentImpl(context,context.filepath);if(componentInfo){this._checkProps(context,componentInfo.fullName,componentInfo.properties)}};ruleDef.prototype._checkProps=function(context,fullName,properties){if(properties){const objectProps=helperProp(properties,'o');if(objectProps){for(let i=0;i<objectProps.length;i++){const checkProperty=objectProps[i];if(!this._hasSub_properties(properties,checkProperty)){if(!Utils.shouldIgnoreCheck(context,'jetwc-compjson-bp-obj',fullName,'properties',checkProperty)){const issue=new context.Issue(`property '${checkProperty}' of type 'object' has no sub-properties. Provide a more complete API definition using sub-properties or a closure type definition`);context.reporter.addIssue(issue,context)}}}}}};ruleDef.prototype._hasSub_properties=function(props,prop){var subprop,a,i;if(!prop.includes('.')){return!!props[prop].properties}a=prop.split('.');for(i=0;i<a.length;i++){subprop=props[a[i]];if(subprop&&subprop.properties){if(a.length-1===i){return true}props=subprop.properties;continue}break}return false};module.exports=ruleDef;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2018,
|
|
2
|
+
* Copyright (c) 2018, 2022, Oracle and/or its affiliates.
|
|
3
3
|
* Licensed under The Universal Permissive License (UPL), Version 1.0
|
|
4
4
|
* as shown at https://oss.oracle.com/licenses/upl/
|
|
5
5
|
*/
|
|
6
|
-
const Utils=require('../jetwc-lib/
|
|
6
|
+
const Utils=require('../jetwc-lib/jetwcutils-componentAuditUtils');const TsxUtils=require('../jetwc-lib/jetwcutils-tsxUtils');const ruleDef=function(){};ruleDef.prototype.getName=function(){return'jetwc-component-dependencies'};ruleDef.prototype.getShortDescription=function(){return'Validate the stated dependencies for a component'};ruleDef.prototype.getDescription=function(){return'This rule checks that any dependencies defined for a component actually exist in the context of the project and are correct'};ruleDef.prototype.register=function(context){return{compjson:this._doAudit,Program:this._doVComponentAudit}};ruleDef.prototype._doAudit=function(context){if(context.rulePack.getExtension()&&context.rulePack.getExtension().hasOwnProperty('allComponents')){const componentMetadata=context.suppData.obj;const componentType=Utils.getComponentType(componentMetadata);if(componentMetadata){let issue;if(componentMetadata.dependencies){Object.keys(componentMetadata.dependencies).forEach(dependency=>{const dependentVersion=componentMetadata.dependencies[dependency];if(componentType==='pack'){if(!context.utils.semVerUtils.isValid(dependentVersion)){issue=new context.Issue(`Pack dependency '${dependency}':'${componentMetadata.dependencies[dependency]}' in ${componentMetadata.name} must be an absolute semver version not a range`);issue.setMsgKey(context.ruleName+'_1');context.reporter.addIssue(issue,context)}}else{if(!context.utils.semVerUtils.isValidRange(dependentVersion)){issue=new context.Issue(`Component dependency '${dependency}':'${componentMetadata.dependencies[dependency]}' in ${componentMetadata.name} is not a valid semver or semver range`);issue.setMsgKey(context.ruleName+'_2');context.reporter.addIssue(issue,context)}else{if(componentMetadata.type&&componentMetadata.type==='demo'&&context.utils.semVerUtils.isValid(dependentVersion)){issue=new context.Issue(`Demo component ${componentMetadata.name} depends on an absolute version of '${dependency}':'${componentMetadata.dependencies[dependency]}', range support is preferred for demos`);issue.setMsgKey(context.ruleName+'_3');context.reporter.addIssue(issue,context,'info')}}}if(!issue){this._validateDependency(context,componentMetadata.name,dependency,componentMetadata.dependencies[dependency])}})}}}else{Utils.reportMissingBootstrapInfo(context,'allComponents')}};ruleDef.prototype._doVComponentAudit=function(context){const componentInfo=TsxUtils.matchToVComponentImpl(context,context.filepath);if(componentInfo){if(componentInfo.dependencies){componentInfo.dependencies.forEach(dependency=>{this._validateDependency(context,componentInfo.fullName,dependency.name,dependency.range)})}}};ruleDef.prototype._validateDependency=function(context,fullName,dependencyName,dependencyVersion){const allVisibleComponents=context.rulePack.getExtension().allComponents;if(!allVisibleComponents.has(dependencyName)){issue=new context.Issue(`Component dependency '${dependencyName}':'${dependencyVersion}' in '${fullName}' has no match in the project`);issue.setMsgKey(context.ruleName+'_4');context.reporter.addIssue(issue,context)}else{const availableVersion=allVisibleComponents.get(dependencyName).version;if(!context.utils.semVerUtils.satisfiesRange(availableVersion,dependencyVersion)){issue=new context.Issue(`Component dependency '${dependencyName}' in '${fullName}' exists in the project but the versions are mismatched. Requested:'${dependencyVersion}', version available in project: '${availableVersion}'`);issue.setMsgKey(context.ruleName+'_5');context.reporter.addIssue(issue,context)}}};module.exports=ruleDef;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2018,
|
|
2
|
+
* Copyright (c) 2018, 2022, Oracle and/or its affiliates.
|
|
3
3
|
* Licensed under The Universal Permissive License (UPL), Version 1.0
|
|
4
4
|
* as shown at https://oss.oracle.com/licenses/upl/
|
|
5
5
|
*/
|
|
6
|
-
const Utils=require('../jetwc-lib/
|
|
6
|
+
const Utils=require('../jetwc-lib/jetwcutils-componentAuditUtils');const TsxUtils=require('../jetwc-lib/jetwcutils-tsxUtils');const ruleDef=function(){};ruleDef.prototype.getName=function(){return'jetwc-component-displayname'};ruleDef.prototype.getShortDescription=function(){return'Check component has display name defined'};ruleDef.prototype.getDescription=function(){return'This rule checks that the component has a display name supplied to make the user experience in Visual Builder and Exchange as useful as possible'};ruleDef.prototype.register=function(context){if(context.rulePack.isRuleEnabled('oj-cca-compjson-bp-dsplyname','JET')){return false}else{return{compjson:this._doAudit,Program:this._doVComponentAudit}}};ruleDef.prototype._doAudit=function(context){if(context.suppData.obj){this._checkDisplayName(context,context.suppData.obj)}};ruleDef.prototype._checkDisplayName=function(context,meta){let issue;if(!meta.hasOwnProperty('displayName')||meta.displayName===undefined||meta.displayName.length===0){issue=new context.Issue(`displayName for component should be defined`);context.reporter.addIssue(issue,context)}};ruleDef.prototype._doVComponentAudit=function(context){const componentInfo=TsxUtils.matchToVComponentImpl(context,context.filepath);if(componentInfo){this._checkDisplayName(context,componentInfo)}};module.exports=ruleDef;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2018,
|
|
2
|
+
* Copyright (c) 2018, 2022, Oracle and/or its affiliates.
|
|
3
3
|
* Licensed under The Universal Permissive License (UPL), Version 1.0
|
|
4
4
|
* as shown at https://oss.oracle.com/licenses/upl/
|
|
5
5
|
*/
|
|
6
|
-
const path=require('path');const Utils=require('../jetwc-lib/
|
|
6
|
+
const path=require('path');const Utils=require('../jetwc-lib/jetwcutils-componentAuditUtils');const TsxUtils=require('../jetwc-lib/jetwcutils-tsxUtils');const ruleDef=function(){};ruleDef.prototype.getName=function(){return'jetwc-component-foldername'};ruleDef.prototype.getShortDescription=function(){return'Ensure components are defined in the correctly named folder'};ruleDef.prototype.getDescription=function(){return'This rule applies to both singleton and JET Pack components and verifies that they are correctly named in the folder structure based on their type'};ruleDef.prototype.register=function(context){return{compjson:this._doAudit,Program:this._doVComponentAudit}};ruleDef.prototype._doAudit=function(context){if(context.rulePack.getExtension()&&context.rulePack.getExtension().hasOwnProperty('auditBuildOutput')){if(context.suppData.obj){let issue;const meta=context.suppData.obj;const fullName=Utils.getComponentFullName(meta);const componentName=meta.name;const componentVersion=meta.version;const pathSegments=context.filepath.split('/');const componentFolder=pathSegments[pathSegments.length-2];const componentParentFolder=pathSegments[pathSegments.length-3];let expectedFolder;const processingBuilt=context.rulePack.getExtension().auditBuildOutput;if(!processingBuilt||meta.pack){expectedFolder=componentName}else{expectedFolder=componentVersion}if(componentFolder!==expectedFolder){issue=new context.Issue(`${processingBuilt?'For built output ':''}Component '${fullName}' should be defined in a folder called '${processingBuilt?componentName+path.sep:''}${expectedFolder}' not '${processingBuilt?componentParentFolder+path.sep:''}${componentFolder}' for referencing to work correctly`);context.reporter.addIssue(issue,context)}}}else{Utils.reportMissingBootstrapInfo(context,'auditBuildOutput')}};ruleDef.prototype._doVComponentAudit=function(context){const componentInfo=TsxUtils.matchToVComponentImpl(context,context.filepath);if(componentInfo){const fullName=componentInfo.fullName;let expectedPath=componentInfo.pack?componentInfo.name:componentInfo.fullName;const pathSegments=context.filepath.split('/');const componentFolder=pathSegments[pathSegments.length-2];const parentFolder=pathSegments[pathSegments.length-3];if(componentFolder!==expectedPath){issue=new context.Issue(`Component '${fullName}' should be defined in a folder called '${expectedPath}' not '${componentFolder}' for referencing to work correctly`);context.reporter.addIssue(issue,context)}}};module.exports=ruleDef;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2018,
|
|
2
|
+
* Copyright (c) 2018, 2022, Oracle and/or its affiliates.
|
|
3
3
|
* Licensed under The Universal Permissive License (UPL), Version 1.0
|
|
4
4
|
* as shown at https://oss.oracle.com/licenses/upl/
|
|
5
5
|
*/
|
|
6
|
-
const path=require('path');const Utils=require('../jetwc-lib/
|
|
6
|
+
const path=require('path');const Utils=require('../jetwc-lib/jetwcutils-componentAuditUtils');const TsxUtils=require('../jetwc-lib/jetwcutils-tsxUtils');const ruleDef=function(){};ruleDef.prototype.getName=function(){return'jetwc-component-location'};ruleDef.prototype.getShortDescription=function(){return'Ensure components are defined in the correct folder structure'};ruleDef.prototype.getDescription=function(){return'This rule applies to both singleton and JET Pack components and verifies that they are correctly placed in the folder structure based on their naming'};ruleDef.prototype.register=function(context){return{compjson:this._doAudit}};ruleDef.prototype._doAudit=function(context){if(context.rulePack.getExtension()&&context.rulePack.getExtension().hasOwnProperty('auditBuildOutput')){if(context.suppData.obj){let issue;const meta=context.suppData.obj;const componentParentPack=meta.pack;const componentName=meta.name;const fullName=Utils.getComponentFullName(meta);const pathSegments=context.filepath.split('/');const componentRoot=context.rulePack.getExtension().componentHome;const sepStrip=/\//g;const parentFolder=pathSegments[pathSegments.length-3];const grandParentFolder=pathSegments[pathSegments.length-4];let expectedParent;let expectedGrandParent;const processingBuilt=context.rulePack.getExtension().auditBuildOutput;if(processingBuilt){if(componentParentPack){expectedParent=Utils.componentInfo(context,componentParentPack).version;expectedGrandParent=componentParentPack}else{expectedParent=componentName;expectedGrandParent=componentRoot.replace(sepStrip,'')}}else{if(componentParentPack){expectedParent=componentParentPack;expectedGrandParent=componentRoot.replace(sepStrip,'')}else{expectedParent=componentRoot.replace(sepStrip,'')}}if(parentFolder!==expectedParent){if(!processingBuilt){issue=new context.Issue(`Component '${fullName}' should be defined in a folder which is a child of '${expectedParent}'`);issue.setMsgKey(context.ruleName+'_1')}else{issue=new context.Issue(`Built component '${fullName}' should be present in a folder which is a child of '${expectedGrandParent}${path.sep}${expectedParent}'`);issue.setMsgKey(context.ruleName+'_3')}}if(!issue){if(expectedGrandParent&&grandParentFolder!==expectedGrandParent){issue=new context.Issue(`Parent folder for ${processingBuilt?'built':''} component '${fullName}' should be present in a folder called '${expectedGrandParent}'`);issue.setMsgKey(context.ruleName+'_2')}}if(issue){context.reporter.addIssue(issue,context)}}}else{Utils.reportMissingBootstrapInfo(context,'auditBuildOutput')}};module.exports=ruleDef;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2018,
|
|
2
|
+
* Copyright (c) 2018, 2022, Oracle and/or its affiliates.
|
|
3
3
|
* Licensed under The Universal Permissive License (UPL), Version 1.0
|
|
4
4
|
* as shown at https://oss.oracle.com/licenses/upl/
|
|
5
5
|
*/
|
|
6
|
-
const Utils=require('../jetwc-lib/
|
|
6
|
+
const Utils=require('../jetwc-lib/jetwcutils-componentAuditUtils');const ruleDef=function(){};ruleDef.prototype.getName=function(){return'jetwc-component-type'};ruleDef.prototype.getShortDescription=function(){return'Check component has an explicit type defined'};ruleDef.prototype.getDescription=function(){return'This rule checks that the component explicitly defines a type attribute rather than relying on the original fallback behavior and assuming composite'};ruleDef.prototype.register=function(context){return{compjson:this._doAudit}};ruleDef.prototype._doAudit=function(context){if(context.suppData.obj){let issue;const meta=context.suppData.obj;if(!meta.hasOwnProperty('type')){issue=new context.Issue(`type for component should be explicitly defined rather than assuming the default`);context.reporter.addIssue(issue,context)}}};module.exports=ruleDef;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2018, 2022, 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 Utils=require('../jetwc-lib/jetwcutils-componentAuditUtils');const ruleDef=function(){};ruleDef.prototype.getName=function(){return'jetwc-css-oj-complete'};ruleDef.prototype.getShortDescription=function(){return'Verify that a component CSS implementation includes the standard definition for hiding itself before it is fully initialized'};ruleDef.prototype.getDescription=function(){return'All custom components should include a selector definition for the component tag that ensures that it is hidden until the oj-complete marker class is applied. This is managed through the use of the :not(.oj-complete) pseudo-class setting the visibility to hidden'};ruleDef.prototype.register=function(context){return{startaudit:this._ruleSetup,'css-selector':this._detectNotSelector,endaudit:this._reportUnmatchedComponents}};ruleDef.prototype._ruleSetup=function(context){this.validOjCompleteSelectors=new Set};ruleDef.prototype._detectNotSelector=function(context,selector){if(selector.type==='Selector'&&selector.children.length===2&&selector.children[0].type==='TypeSelector'&&selector.children[1].type==='PseudoClassSelector'&&selector.children[1].name==='not'){const selectorComponentName=selector.children[0].name;const componentInfo=Utils.componentInfo(context,selectorComponentName);if(componentInfo&&selector.children[1].children.length>0&&selector.children[1].children[0].type==='SelectorList'&&selector.children[1].children[0].children.length>0&&selector.children[1].children[0].children[0].type==='Selector'&&selector.children[1].children[0].children[0].children.length>0&&selector.children[1].children[0].children[0].children[0].type==='ClassSelector'&&selector.children[1].children[0].children[0].children[0].name==='oj-complete'){this.validOjCompleteSelectors.add(selectorComponentName)}}};ruleDef.prototype._reportUnmatchedComponents=function(context){const allComponents=context.rulePack.getExtension().allComponents;debugger;if(allComponents){for(const[componentName,componentDef]of allComponents.entries()){if(componentDef.type==='composite'){const fullName=componentDef.fullName;if(!this.validOjCompleteSelectors.has(fullName)){if(!Utils.shouldIgnoreCheck(context,this.getName(),fullName)){const issue=new context.Issue(`Component '${fullName}' does not have a defined CSS sector for :not(.oj-complete)`);context.reporter.addIssue(issue,context)}}}}}};module.exports=ruleDef;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2018,
|
|
2
|
+
* Copyright (c) 2018, 2022, Oracle and/or its affiliates.
|
|
3
3
|
* Licensed under The Universal Permissive License (UPL), Version 1.0
|
|
4
4
|
* as shown at https://oss.oracle.com/licenses/upl/
|
|
5
5
|
*/
|
|
6
|
-
const Utils=require('../jetwc-lib/
|
|
6
|
+
const Utils=require('../jetwc-lib/jetwcutils-componentAuditUtils');const TsxUtils=require('../jetwc-lib/jetwcutils-tsxUtils');const ruleDef=function(){};ruleDef.prototype.getName=function(){return'jetwc-data-property-prefix'};ruleDef.prototype.getShortDescription=function(){return'Ensure that the component does not define properties with a data* prefix'};ruleDef.prototype.getDescription=function(){return'This rule checks that a component has not defined any property that once translated to an attribute becomes a data-* attribute. This involves checking the property name of top level properties only for the prefix of data followed by an uppercase letter. The property name data on its own is OK'};ruleDef.prototype.register=function(context){return{compjson:this._doAudit,Program:this._doVComponentAudit}};ruleDef.prototype._doAudit=function(context){if(context.suppData.obj){const meta=context.suppData.obj;const fullName=Utils.getComponentFullName(meta);const componentType=Utils.getComponentType(meta);if(componentType==='composite'){this._checkProps(context,fullName,meta.properties)}}};ruleDef.prototype._doVComponentAudit=function(context){const componentInfo=TsxUtils.matchToVComponentImpl(context,context.filepath);if(componentInfo){this._checkProps(context,componentInfo.fullName,componentInfo.properties)}};ruleDef.prototype._checkProps=function(context,fullName,properties){let issue;if(properties){const dataDetect=/^data[A-Z\-].*$/;Object.keys(properties).forEach(propName=>{if(dataDetect.test(propName)){issue=new context.Issue(`Component ${fullName} defines a data prefixed property ${propName} which is not allowed`);context.reporter.addIssue(issue,context)}})}};module.exports=ruleDef;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2018,
|
|
2
|
+
* Copyright (c) 2018, 2022, Oracle and/or its affiliates.
|
|
3
3
|
* Licensed under The Universal Permissive License (UPL), Version 1.0
|
|
4
4
|
* as shown at https://oss.oracle.com/licenses/upl/
|
|
5
5
|
*/
|
|
6
|
-
const Utils=require('../jetwc-lib/
|
|
6
|
+
const Utils=require('../jetwc-lib/jetwcutils-componentAuditUtils');const ruleDef=function(){};ruleDef.prototype.getName=function(){return'jetwc-deprecated-lifecycle'};ruleDef.prototype.getShortDescription=function(){return'Checks for deprecated component lifecycle definitions'};ruleDef.prototype.getDescription=function(){return'This rule ensures that the component does not still declare deprecated lifecycle methods such as attached'};ruleDef.prototype.register=function(context){return{FunctionExpression:Utils.setupFileMethodMapping.bind(Utils),ArrowFunctionExpression:Utils.setupFileMethodMapping.bind(Utils),CallExpression:Utils.deriveViewModels.bind(Utils),MethodDefinition:Utils.setupFileMethodMappingFromMethodDefintion.bind(Utils),closedownRP:this._doAudit}};ruleDef.prototype._doAudit=function(context){let issue;if(context.rulePack.getExtension()){context.rulePack.getExtension().allComponents.forEach(compInfo=>{const vmMethods=Utils.getVMMethodsForLocalComposite(context,compInfo);if(vmMethods&&(vmMethods.has('attached')||vmMethods.has('detached')||vmMethods.has('initialize')||vmMethods.has('dispose'))){issue=new context.Issue(`Component '${compInfo.fullName}' still defines one or more of the following deprecated lifecycle methods: attached(), detached(), dispose(), initialize()`);context.reporter.addIssue(issue,context)}})}};module.exports=ruleDef;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2018,
|
|
2
|
+
* Copyright (c) 2018, 2022, Oracle and/or its affiliates.
|
|
3
3
|
* Licensed under The Universal Permissive License (UPL), Version 1.0
|
|
4
4
|
* as shown at https://oss.oracle.com/licenses/upl/
|
|
5
5
|
*/
|
|
6
|
-
const Utils=require('../jetwc-lib/
|
|
6
|
+
const Utils=require('../jetwc-lib/jetwcutils-componentAuditUtils');const ruleDef=function(){};ruleDef.prototype.getName=function(){return'jetwc-disabled-property'};ruleDef.prototype.getShortDescription=function(){return'Check component does not use the problematic disabled property'};ruleDef.prototype.getDescription=function(){return'This rule checks that a component does not define a property called disabled which can cause issues with IE'};ruleDef.prototype.register=function(context){return{compjson:this._doAudit}};ruleDef.prototype._doAudit=function(context){if(context.suppData.obj){let issue;const meta=context.suppData.obj;const fullName=Utils.getComponentFullName(meta);const componentType=Utils.getComponentType(meta);if(componentType==='composite'){if(meta.properties&&meta.properties.hasOwnProperty('disabled')){var deprecated=false;if(meta.properties.disabled.hasOwnProperty('status')){var statusArray=meta.properties.disabled.status;statusArray.forEach(status=>{if(status.hasOwnProperty('type')){if(status.type==='deprecated'){deprecated=true}}})}if(!deprecated){issue=new context.Issue(`Component ${fullName} defines a property called 'disabled' this can cause problems with Internet Explorer and we recommend 'disable' as a replacement property name`);context.reporter.addIssue(issue,context)}}}}};module.exports=ruleDef;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2018,
|
|
2
|
+
* Copyright (c) 2018, 2022, Oracle and/or its affiliates.
|
|
3
3
|
* Licensed under The Universal Permissive License (UPL), Version 1.0
|
|
4
4
|
* as shown at https://oss.oracle.com/licenses/upl/
|
|
5
5
|
*/
|
|
6
|
-
const Utils=require('../jetwc-lib/
|
|
6
|
+
const Utils=require('../jetwc-lib/jetwcutils-componentAuditUtils');const TsxUtils=require('../jetwc-lib/jetwcutils-tsxUtils');const ruleDef=function(){};ruleDef.prototype.getName=function(){return'jetwc-displayname'};ruleDef.prototype.getShortDescription=function(){return'Check component display name will work with Visual Builder'};ruleDef.prototype.getDescription=function(){return'This rule checks both the length and the number of words of the display name - configurable'};ruleDef.prototype.register=function(context){return{compjson:this._doAudit,Program:this._doVComponentAudit}};ruleDef.prototype._doAudit=function(context){if(context.suppData.obj){let issue;const meta=context.suppData.obj;const fullName=Utils.getComponentFullName(meta);const componentType=Utils.getComponentType(meta);this._checkDisplayNames(context,fullName,componentType,meta.displayName,meta.properties,meta.events,meta.slots)}};ruleDef.prototype._doVComponentAudit=function(context){const componentInfo=TsxUtils.matchToVComponentImpl(context,context.filepath);if(componentInfo){this._checkDisplayNames(context,componentInfo.fullName,componentInfo.type,componentInfo.displayName,componentInfo.properties,componentInfo.events,componentInfo.slots)}};ruleDef.prototype._checkDisplayNames=function(context,fullName,componentType,displayName,properties,events,slots){const ruleOptions=context.rulePack.getRuleOptions();let limits;let elimits;let plimits;let slimits;switch(componentType){case'composite':elimits=ruleOptions.limits.event;plimits=ruleOptions.limits.property;slimits=ruleOptions.limits.slot;case'vbcs-pattern':limits=ruleOptions.limits.component;break;case'vbcs-template':limits=ruleOptions.limits.template;break;}if(limits&&displayName){if(displayName.length>limits.length){this._lengthError(context,fullName,componentType,limits.length)}if(displayName.split(' ').length>limits.words){this._wordCountError(context,fullName,componentType,limits.words)}}if(plimits&&properties){this.checkByAttributeType(context,fullName,componentType,plimits,properties,'properties','property')}if(elimits&&events){this.checkByAttributeType(context,fullName,componentType,elimits,events,'events','event')}if(slimits&&slots){this.checkByAttributeType(context,fullName,componentType,slimits,slots,'slots','slot')}};ruleDef.prototype._lengthError=function(context,component,type,limit,scope){issue=new context.Issue(`displayName property for Component ${component}${scope?' ('+scope+')':''} exceeds the defined length limit of ${limit} for a ${type}`);issue.setMsgKey(context.ruleName+'_1');context.reporter.addIssue(issue,context)};ruleDef.prototype._wordCountError=function(context,component,type,limit,scope){issue=new context.Issue(`displayName property for Component ${component}${scope?' ('+scope+')':''} exceeds the defined word count of ${limit} for a ${type}`);issue.setMsgKey(context.ruleName+'_2');context.reporter.addIssue(issue,context)};ruleDef.prototype.checkByAttributeType=function(context,fullName,componentType,limits,meta,attributeType,typeName){Object.keys(meta).forEach(cName=>{const cDN=meta[cName].displayName;if(cDN){if(cDN.length>limits.length){this._lengthError(context,fullName,componentType+' '+typeName,limits.length,attributeType+'=>'+cName)}if(cDN.split(' ').length>limits.words){this._wordCountError(context,fullName,componentType+' '+typeName,limits.words,attributeType+'=>'+cName)}}})};module.exports=ruleDef;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2018,
|
|
2
|
+
* Copyright (c) 2018, 2022, Oracle and/or its affiliates.
|
|
3
3
|
* Licensed under The Universal Permissive License (UPL), Version 1.0
|
|
4
4
|
* as shown at https://oss.oracle.com/licenses/upl/
|
|
5
5
|
*/
|
|
6
|
-
const Utils=require('../jetwc-lib/
|
|
6
|
+
const Utils=require('../jetwc-lib/jetwcutils-componentAuditUtils');const ruleDef=function(){};ruleDef.prototype.getName=function(){return'jetwc-dynamic-slot-context'};ruleDef.prototype.getShortDescription=function(){return'Check properties have valid dynamicSlotDef values'};ruleDef.prototype.getDescription=function(){return'Ensures that any property that defines itself as a dynamic slot discriminant using the dynamicSlotDef attribute is using a valid context defined within the dynamicSlots set for the component'};ruleDef.prototype.register=function(context){return{compjson:this._doAudit}};ruleDef.prototype._doAudit=function(context){if(context.suppData.obj){const meta=context.suppData.obj;const fullName=Utils.getComponentFullName(meta);const componentType=Utils.getComponentType(meta);if(componentType==='composite'){if(meta.properties){Object.keys(meta.properties).forEach(propName=>{let issueNoticed=false;const prop=meta.properties[propName];if(prop.hasOwnProperty('dynamicSlotDef')){if(meta.dynamicSlots){if(!meta.dynamicSlots.hasOwnProperty(prop.dynamicSlotDef)){issueNoticed=true}}else{issueNoticed=true}}if(issueNoticed){const issue=new context.Issue(`Component ${fullName} property ${propName} references an invalid dynamic-slot`);context.reporter.addIssue(issue,context)}})}}}};module.exports=ruleDef;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2018,
|
|
2
|
+
* Copyright (c) 2018, 2022, Oracle and/or its affiliates.
|
|
3
3
|
* Licensed under The Universal Permissive License (UPL), Version 1.0
|
|
4
4
|
* as shown at https://oss.oracle.com/licenses/upl/
|
|
5
5
|
*/
|
|
6
|
-
const path=require("path");const Utils=require("../jetwc-lib/
|
|
6
|
+
const path=require("path");const Utils=require("../jetwc-lib/jetwcutils-componentAuditUtils");const ruleDef=function(){};ruleDef.prototype.getName=function(){return"jetwc-dynamic-slots-naming"};ruleDef.prototype.getShortDescription=function(){return"Verify dynamic slots are named correctly"};ruleDef.prototype.getDescription=function(){return"This rule checks that any dynamic slot contexts have the correct naming convention"};ruleDef.prototype.register=function(context){return{compjson:this._doAudit}};ruleDef.prototype._doAudit=function(context){if(context.suppData.obj){const meta=context.suppData.obj;const fullName=Utils.getComponentFullName(meta);const componentType=Utils.getComponentType(meta);if(componentType==="composite"){if(meta.dynamicSlots){Object.keys(meta.dynamicSlots).forEach(ctxName=>{if(!ctxName.endsWith("Context")){const issue=new context.Issue(`Component ${fullName} dynamicSlot ${ctxName} is not named according to the standards with a Context suffix`);context.reporter.addIssue(issue,context)}})}}}};module.exports=ruleDef;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2018,
|
|
2
|
+
* Copyright (c) 2018, 2022, Oracle and/or its affiliates.
|
|
3
3
|
* Licensed under The Universal Permissive License (UPL), Version 1.0
|
|
4
4
|
* as shown at https://oss.oracle.com/licenses/upl/
|
|
5
5
|
*/
|
|
6
|
-
const Utils=require('../jetwc-lib/
|
|
6
|
+
const Utils=require('../jetwc-lib/jetwcutils-componentAuditUtils');const TsxUtils=require('../jetwc-lib/jetwcutils-tsxUtils');const ruleDef=function(){};ruleDef.prototype.getName=function(){return'jetwc-event-displayname'};ruleDef.prototype.getShortDescription=function(){return'Check component has display name defined for events'};ruleDef.prototype.getDescription=function(){return'This rule checks that events have a display name supplied to make the user experience in Visual Builder as useful as possible'};ruleDef.prototype.register=function(context){return{compjson:this._doAudit,Program:this._doVComponentAudit}};ruleDef.prototype._doAudit=function(context){if(context.suppData.obj){const meta=context.suppData.obj;const componentType=Utils.getComponentType(meta);if(componentType==='composite'){this._checkEvents(context,meta.events)}}};ruleDef.prototype._doVComponentAudit=function(context){const componentInfo=TsxUtils.matchToVComponentImpl(context,context.filepath);if(componentInfo){this._checkEvents(context,componentInfo.events)}};ruleDef.prototype._checkEvents=function(context,events){let issue;if(events){Object.keys(events).forEach(eventName=>{if(!events[eventName].displayName){issue=new context.Issue(`displayName for event '${eventName}' should be defined`);context.reporter.addIssue(issue,context)}})}};module.exports=ruleDef;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2018,
|
|
2
|
+
* Copyright (c) 2018, 2022, Oracle and/or its affiliates.
|
|
3
3
|
* Licensed under The Universal Permissive License (UPL), Version 1.0
|
|
4
4
|
* as shown at https://oss.oracle.com/licenses/upl/
|
|
5
5
|
*/
|
|
6
|
-
const path=require('path');const Utils=require('../jetwc-lib/
|
|
6
|
+
const path=require('path');const Utils=require('../jetwc-lib/jetwcutils-componentAuditUtils');const ruleDef=function(){};ruleDef.prototype.getName=function(){return'jetwc-events'};ruleDef.prototype.getShortDescription=function(){return'Checks that any events raised are declared'};ruleDef.prototype.getDescription=function(){return'This rule ensures that all events omitted from a component are declared in the metadata'};ruleDef.prototype.register=function(context){return{CallExpression:this._doAudit}};ruleDef.prototype._doAudit=function(context,node){const NT=context.utils.AstUtils.getNodeTypes();let issue;if(node.callee.type===NT.MEMBER_EXPR&&node.callee.property.type===NT.IDENTIFIER&&node.callee.property.name==='dispatchEvent'){if(node.arguments[0].type===NT.CALL_EXPR||node.arguments[0].type===NT.NEW_EXPR){if(node.arguments[0].callee.name==='CustomEvent'){const eventNameNode=node.arguments[0].arguments[0];if(eventNameNode.type===NT.LITERAL){const eventName=eventNameNode.value;const withinComponent=Utils.matchComponentPath(context,path.dirname(context.filepath));const componentInfo=Utils.componentInfo(context,withinComponent);if(withinComponent&&componentInfo.type==='composite'){if(!componentInfo.events||!componentInfo.events.hasOwnProperty(eventName)){issue=new context.Issue(`Event '${eventName}' raised for component ${withinComponent} has not been declared in the component metadata`);issue.setMsgKey(context.ruleName+'_1');context.reporter.addIssue(issue,context)}}else{issue=new context.Issue(`Custom event '${eventName}' raised by code outside of a web component and so cannot be verified against any component API`);issue.setMsgKey(context.ruleName+'_2');context.reporter.addIssue(issue,context)}}}}}};module.exports=ruleDef;
|