@oracle/oraclejet-audit 10.0.0 → 11.1.3
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/jaf-amd.js +12 -4
- package/jaf.js +6 -1
- package/jafapi.js +6 -1
- package/lib/AST.js +6 -1
- package/lib/AST_Ts.js +6 -1
- package/lib/AstJson.js +6 -1
- package/lib/AstNodeTypes.js +6 -1
- package/lib/Comments.js +6 -1
- package/lib/ComponentSvcs.js +5 -0
- package/lib/Components.js +6 -1
- package/lib/Config.js +6 -1
- package/lib/ConfigLib.js +6 -1
- package/lib/CssLib.js +5 -0
- package/lib/CssUtils.js +5 -0
- package/lib/DomUtils.js +6 -1
- package/lib/FileIndex.js +5 -0
- package/lib/FileSet.js +5 -0
- package/lib/FsUtils.js +6 -1
- package/lib/Histo.js +6 -0
- package/lib/HtmlTree.js +6 -1
- package/lib/HtmlUtils.js +5 -0
- package/lib/Issue.js +5 -0
- package/lib/JafEvents.js +5 -0
- package/lib/JafLib.js +6 -1
- package/lib/Json.js +6 -0
- package/lib/JsonLoader.js +6 -1
- package/lib/MetaLib.js +6 -1
- package/lib/NetUtils.js +5 -0
- package/lib/NodeTypes.js +5 -0
- package/lib/Parser.js +6 -1
- package/lib/RegTypes.js +5 -0
- package/lib/Registry.js +5 -0
- package/lib/Reporter.js +5 -0
- package/lib/RuleContext.js +5 -0
- package/lib/RulePack.js +5 -0
- package/lib/RuleSet.js +6 -1
- package/lib/Rules.js +6 -1
- package/lib/Scope.js +6 -1
- package/lib/SemVer.js +5 -0
- package/lib/Server.js +5 -0
- package/lib/SevLib.js +5 -0
- package/lib/Severity.js +6 -1
- package/lib/Stats.js +6 -0
- package/lib/Ts.js +6 -1
- package/lib/Utils.js +6 -1
- package/lib/Watch.js +5 -0
- package/lib/Writer.js +5 -0
- package/lib/ZipUtils.js +5 -0
- package/lib/api.js +6 -0
- package/lib/cliStats.js +6 -0
- package/lib/clone.js +5 -0
- package/lib/cmdline.js +6 -1
- package/lib/colors.js +5 -0
- package/lib/exportRules.js +6 -0
- package/lib/extends.js +6 -0
- package/lib/filetypes.js +6 -0
- package/lib/groups.js +6 -0
- package/lib/help.js +6 -1
- package/lib/imanual.js +6 -0
- package/lib/jetver.js +6 -1
- package/lib/macros.js +6 -0
- package/lib/metaLoader.js +5 -0
- package/lib/metahist.js +5 -0
- package/lib/msgidLoader.js +6 -1
- package/lib/ns.js +6 -1
- package/lib/nslist.js +6 -1
- package/lib/outFormat.js +6 -0
- package/lib/outfile.js +5 -0
- package/lib/ruleLoader.js +5 -0
- package/lib/scaffold.js +6 -1
- package/lib/scaffoldRule.js +6 -1
- package/lib/schema.js +5 -0
- package/lib/scopewalker.js +6 -0
- package/lib/spinner.js +5 -0
- package/lib/spinnernoop.js +5 -0
- package/lib/tabs.js +5 -0
- package/lib/xmanual.js +6 -0
- package/libext/expparser.js +6 -1
- package/meta/10.1.0/jetauditmeta.js +9 -0
- package/meta/11.0.0/jetauditmeta.js +9 -0
- package/meta/11.1.0/jetauditmeta.js +9 -0
- package/meta/metaverlist.json +1 -1
- package/package.json +2 -3
- package/rulepacks/csp/csp-html-script-unsafe-inline.js +5 -0
- package/rulepacks/csp/csp-html-style-unsafe-inline.js +5 -0
- package/rulepacks/csp/csp-html-unsafe-expr.js +5 -0
- package/rulepacks/csp/csp-js-script-unsafe-eval.js +6 -1
- package/rulepacks/csp/csp-js-style-unsafe-inline.js +5 -0
- package/rulepacks/csp/csp-ts-script-unsafe-eval.js +6 -0
- package/rulepacks/csp/csp-ts-style-unsafe-inline.js +6 -0
- package/rulepacks/csp/msgid.json +6 -1
- package/rulepacks/csp/rules.json +6 -1
- package/rulepacks/jetwc/jetwc-absolute-jetversion.js +6 -1
- package/rulepacks/jetwc/jetwc-aria-redefinition.js +6 -1
- package/rulepacks/jetwc/jetwc-bootstrap.js +6 -1
- package/rulepacks/jetwc/jetwc-compjson-bp-ar.js +6 -1
- package/rulepacks/jetwc/jetwc-compjson-bp-obj.js +6 -1
- package/rulepacks/jetwc/jetwc-component-dependencies.js +6 -1
- package/rulepacks/jetwc/jetwc-component-displayname.js +6 -1
- package/rulepacks/jetwc/jetwc-component-foldername.js +6 -1
- package/rulepacks/jetwc/jetwc-component-location.js +6 -1
- package/rulepacks/jetwc/jetwc-component-type.js +6 -1
- package/rulepacks/jetwc/jetwc-data-property-prefix.js +6 -1
- package/rulepacks/jetwc/jetwc-deprecated-lifecycle.js +6 -1
- package/rulepacks/jetwc/jetwc-disabled-property.js +6 -1
- package/rulepacks/jetwc/jetwc-displayname.js +6 -1
- package/rulepacks/jetwc/jetwc-dynamic-slot-context.js +6 -1
- package/rulepacks/jetwc/jetwc-dynamic-slots-naming.js +6 -1
- package/rulepacks/jetwc/jetwc-event-displayname.js +6 -1
- package/rulepacks/jetwc/jetwc-events.js +6 -1
- package/rulepacks/jetwc/jetwc-jet-version.js +6 -1
- package/rulepacks/jetwc/jetwc-loader-file.js +6 -1
- package/rulepacks/jetwc/jetwc-method-displayname.js +6 -1
- package/rulepacks/jetwc/jetwc-methods.js +6 -1
- package/rulepacks/jetwc/jetwc-namespace.js +6 -1
- package/rulepacks/jetwc/jetwc-nested-defaults.js +6 -1
- package/rulepacks/jetwc/jetwc-nls-languages.js +6 -1
- package/rulepacks/jetwc/jetwc-nls-root.js +6 -1
- package/rulepacks/jetwc/jetwc-oj-register.js +6 -1
- package/rulepacks/jetwc/jetwc-ojcss.js +6 -1
- package/rulepacks/jetwc/jetwc-pack-children.js +6 -1
- package/rulepacks/jetwc/jetwc-packable-components.js +6 -1
- package/rulepacks/jetwc/jetwc-prerelease-dependencies.js +6 -1
- package/rulepacks/jetwc/jetwc-prerelease-pattern.js +6 -1
- package/rulepacks/jetwc/jetwc-prerelease-version.js +6 -1
- package/rulepacks/jetwc/jetwc-property-changed.js +6 -1
- package/rulepacks/jetwc/jetwc-property-displayname.js +6 -1
- package/rulepacks/jetwc/jetwc-property-nesting.js +6 -1
- package/rulepacks/jetwc/jetwc-public-modules.js +6 -1
- package/rulepacks/jetwc/jetwc-register-css.js +6 -1
- package/rulepacks/jetwc/jetwc-register-with-promises.js +6 -1
- package/rulepacks/jetwc/jetwc-require-paths.js +6 -1
- package/rulepacks/jetwc/jetwc-required-subproperty.js +6 -0
- package/rulepacks/jetwc/jetwc-reserved-property.js +6 -1
- package/rulepacks/jetwc/jetwc-schema.js +6 -1
- package/rulepacks/jetwc/jetwc-semantic-version.js +6 -1
- package/rulepacks/jetwc/jetwc-slot-displayname.js +6 -1
- package/rulepacks/jetwc/jetwc-slots.js +6 -1
- package/rulepacks/jetwc/jetwc-standard-files.js +6 -1
- package/rulepacks/jetwc/jetwc-subproperty-writeback.js +6 -0
- package/rulepacks/jetwc/jetwc-template-slots.js +6 -1
- package/rulepacks/jetwc/jetwc-unused-events.js +6 -1
- package/rulepacks/jetwc/jetwc-unused-slots.js +6 -1
- package/rulepacks/jetwc/jetwc-vb-category.js +6 -1
- package/rulepacks/jetwc/jetwc-vb-icon.js +6 -1
- package/rulepacks/jetwc/jetwc-version-openrange.js +6 -1
- package/rulepacks/jetwc/jetwc-writeback-required.js +6 -1
- package/rulepacks/jetwc/msgid.json +6 -0
- package/rulepacks/jetwc/rules.json +6 -1
- package/rulepacks/jetwc-lib/component-audit-utils.js +6 -1
- package/rulepacks/jetwco/jetwco-bootstrap.js +6 -1
- package/rulepacks/jetwco/jetwco-compjson-ns-reg.js +6 -1
- package/rulepacks/jetwco/jetwco-component-api-baseline-changes.js +6 -0
- package/rulepacks/jetwco/jetwco-component-api-changes.js +6 -1
- package/rulepacks/jetwco/jetwco-component-cdn.js +6 -1
- package/rulepacks/jetwco/jetwco-exchange-version-check.js +6 -1
- package/rulepacks/jetwco/jetwco-license-info.js +6 -1
- package/rulepacks/jetwco/jetwco-prerelease-cdn.js +6 -1
- package/rulepacks/jetwco/jetwco-thirdparty-ba.js +6 -1
- package/rulepacks/jetwco/msgid.json +6 -0
- package/rulepacks/jetwco/rules.json +6 -1
- package/rulepacks/spoc/msgid.json +5 -0
- package/rulepacks/spoc/rules.json +5 -0
- package/rulepacks/spoc/spoc-dom-manip-inv-tag.js +5 -0
- package/rulepacks/spoc/spoc-dom-manip-tag-pos.js +5 -0
- package/rulepacks/spoc/spoc-dom-manip.js +5 -0
- package/rules/jaf/jaf-css-diagnose.js +5 -0
- package/rules/jaf/jaf-html-diagnose.js +5 -0
- package/rules/jaf/jaf-init-schema.js +5 -0
- package/rules/jaf/jaf-js-diagnose.js +5 -0
- package/rules/jaf/jaf-ts-diagnose.js +6 -0
- package/rules/jaf/msgid.json +6 -1
- package/rules/jaf/rules.json +6 -1
- package/rules/jet/helpers/acc-aria-label.js +6 -1
- package/rules/jet/helpers/bp-checkPropType.js +5 -0
- package/rules/jet/helpers/cssHelper.js +6 -1
- package/rules/jet/helpers/extractStylesFromClass.js +6 -1
- package/rules/jet/helpers/has-slot-name.js +6 -1
- package/rules/jet/helpers/has-slot.js +5 -0
- package/rules/jet/helpers/json-prop-pos.js +5 -0
- package/rules/jet/helpers/json-propname-pos.js +5 -0
- package/rules/jet/helpers/style-selector.js +6 -1
- package/rules/jet/helpers/valid-attr.js +5 -0
- package/rules/jet/helpers/vartrack.js +5 -0
- package/rules/jet/jet-css-ojselector.js +5 -0
- package/rules/jet/msgid.json +6 -1
- package/rules/jet/oj-acc-aria-labelledby.js +5 -0
- package/rules/jet/oj-acc-aria-prop.js +5 -0
- package/rules/jet/oj-acc-avatar-aria-role.js +5 -0
- package/rules/jet/oj-acc-combobox-aria-label.js +6 -1
- package/rules/jet/oj-acc-film-strip-aria-label.js +5 -0
- package/rules/jet/oj-acc-input-aria-label.js +6 -1
- package/rules/jet/oj-acc-select-aria-label.js +6 -1
- package/rules/jet/oj-cca-compjson-bp-ar.js +5 -0
- package/rules/jet/oj-cca-compjson-bp-dsplyname.js +5 -0
- package/rules/jet/oj-cca-compjson-bp-jetver.js +5 -0
- package/rules/jet/oj-cca-compjson-bp-obj.js +5 -0
- package/rules/jet/oj-cca-compjson-ns-reg.js +5 -0
- package/rules/jet/oj-css-bp-border-color.js +5 -0
- package/rules/jet/oj-css-bp-dir-flow.js +6 -1
- package/rules/jet/oj-css-bp-float.js +5 -0
- package/rules/jet/oj-css-bp-textalign.js +5 -0
- package/rules/jet/oj-css-style-abs-units.js +5 -0
- package/rules/jet/oj-css-style-bp-color.js +6 -1
- package/rules/jet/oj-css-style-bp-display.js +6 -1
- package/rules/jet/oj-css-style-bp-font-family.js +6 -1
- package/rules/jet/oj-css-style-bp-font.js +5 -0
- package/rules/jet/oj-css-style-deprecated.js +6 -1
- package/rules/jet/oj-css-style-override.js +6 -1
- package/rules/jet/oj-css-var-override.js +5 -0
- package/rules/jet/oj-form-maxcols.js +6 -0
- package/rules/jet/oj-html-5-attr-obs.js +5 -0
- package/rules/jet/oj-html-5-tag-obs.js +5 -0
- package/rules/jet/oj-html-attr-$unique.js +5 -0
- package/rules/jet/oj-html-attr-2def.js +5 -0
- package/rules/jet/oj-html-attr-json.js +6 -1
- package/rules/jet/oj-html-attr-prefix-expr.js +6 -1
- package/rules/jet/oj-html-attr-prefix-ro.js +5 -0
- package/rules/jet/oj-html-attr-req.js +5 -0
- package/rules/jet/oj-html-bindforeach-data.js +5 -0
- package/rules/jet/oj-html-bindif-test.js +5 -0
- package/rules/jet/oj-html-binding-attr.js +5 -0
- package/rules/jet/oj-html-cca-count.js +5 -0
- package/rules/jet/oj-html-cca-tagname.js +6 -1
- package/rules/jet/oj-html-cdn.js +5 -0
- package/rules/jet/oj-html-combo-converter.js +5 -0
- package/rules/jet/oj-html-cspexpr.js +6 -1
- package/rules/jet/oj-html-databind-all.js +5 -0
- package/rules/jet/oj-html-dlg-title.js +5 -0
- package/rules/jet/oj-html-file-pick-accept.js +6 -0
- package/rules/jet/oj-html-form-bindif.js +6 -1
- package/rules/jet/oj-html-form-layout-maxcols.js +6 -0
- package/rules/jet/oj-html-form-noflex.js +5 -0
- package/rules/jet/oj-html-input-isodate.js +6 -0
- package/rules/jet/oj-html-invalid-doctype.js +6 -1
- package/rules/jet/oj-html-jq-databind.js +6 -1
- package/rules/jet/oj-html-ko-comment.js +5 -0
- package/rules/jet/oj-html-ko-databind.js +5 -0
- package/rules/jet/oj-html-label-for-prefix.js +5 -0
- package/rules/jet/oj-html-missing-doctype.js +6 -1
- package/rules/jet/oj-html-oj-lib.js +5 -0
- package/rules/jet/oj-html-ojattr-520.js +6 -1
- package/rules/jet/oj-html-ojattr-deprecated.js +6 -1
- package/rules/jet/oj-html-ojattr-enum-deprecated.js +6 -1
- package/rules/jet/oj-html-ojattr-evt-syntax.js +5 -0
- package/rules/jet/oj-html-ojattr-value.js +6 -1
- package/rules/jet/oj-html-ojattr.js +6 -1
- package/rules/jet/oj-html-ojevent.js +6 -1
- package/rules/jet/oj-html-ojslot.js +5 -0
- package/rules/jet/oj-html-ojstyle.js +5 -0
- package/rules/jet/oj-html-ojtag-datacmd.js +6 -1
- package/rules/jet/oj-html-ojtag-datactx.js +5 -0
- package/rules/jet/oj-html-ojtag-deprecated.js +6 -1
- package/rules/jet/oj-html-ojtag-globattr-noprefix.js +5 -0
- package/rules/jet/oj-html-ojtag-id.js +5 -0
- package/rules/jet/oj-html-ojtag-nonglobattr-prefix.js +5 -0
- package/rules/jet/oj-html-ojtag-ns.js +5 -0
- package/rules/jet/oj-html-picker-attrs.js +6 -0
- package/rules/jet/oj-html-redwood-cssnovars.js +6 -0
- package/rules/jet/oj-html-redwood-cssvars.js +6 -0
- package/rules/jet/oj-html-self-close.js +5 -0
- package/rules/jet/oj-html-slot-item-minmax.js +6 -0
- package/rules/jet/oj-html-slot-name.js +6 -1
- package/rules/jet/oj-html-slot-pref-content.js +6 -0
- package/rules/jet/oj-html-style-abs-units.js +5 -0
- package/rules/jet/oj-html-style-bp-color.js +5 -0
- package/rules/jet/oj-html-style-bp-display.js +6 -1
- package/rules/jet/oj-html-style-bp-font-family.js +5 -0
- package/rules/jet/oj-html-style-bp-font.js +5 -0
- package/rules/jet/oj-html-style-deprecated.js +5 -0
- package/rules/jet/oj-html-style.js +6 -1
- package/rules/jet/oj-html-stylesel.js +6 -1
- package/rules/jet/oj-html-tag-attr-noprefix.js +5 -0
- package/rules/jet/oj-html-template-index.js +6 -0
- package/rules/jet/oj-html-unsup-theme.js +6 -1
- package/rules/jet/oj-html-wctag-$props.js +6 -1
- package/rules/jet/oj-html-wctag-arialabelledby.js +5 -0
- package/rules/jet/oj-html-wctag-for.js +5 -0
- package/rules/jet/oj-html-wctag-id.js +5 -0
- package/rules/jet/oj-html-wctag-packprivate.js +6 -0
- package/rules/jet/oj-js-comp-attr-deprecated.js +5 -0
- package/rules/jet/oj-js-comp-meth-deprecated.js +5 -0
- package/rules/jet/oj-js-no-ext-final.js +5 -0
- package/rules/jet/oj-js-noconsole.js +5 -0
- package/rules/jet/oj-js-ojcomp-deprecated.js +6 -1
- package/rules/jet/oj-js-ojcomp-exist.js +5 -0
- package/rules/jet/oj-js-ojcomp-new.js +5 -0
- package/rules/jet/oj-js-poly-promise.js +6 -1
- package/rules/jet/oj-js-var-undef.js +5 -0
- package/rules/jet/oj-json-syntax.js +6 -1
- package/rules/jet/oj-ts-comp-attr-deprecated.js +5 -0
- package/rules/jet/oj-ts-comp-meth-deprecated.js +5 -0
- package/rules/jet/oj-ts-no-ext-final.js +6 -0
- package/rules/jet/oj-ts-noconsole.js +6 -1
- package/rules/jet/oj-ts-ojcomp-deprecated.js +6 -1
- package/rules/jet/oj-ts-ojcomp-exist.js +6 -1
- package/rules/jet/oj-ts-ojcomp-new.js +6 -1
- package/rules/jet/oj-ts-poly-promise.js +6 -1
- package/rules/jet/rules.json +6 -1
- package/schema/component-schema.json +122 -2
- package/src/JafCore.js +6 -1
- package/types/index.d.ts +144 -35
- package/lib/manual.js +0 -1
- package/lib/stats.js +0 -1
- package/rules/exch/helpers/json-prop-pos.js +0 -1
- package/rules/exch/msgid.json +0 -1
- package/rules/exch/oj-cca-comp-zip-content-composite.js +0 -1
- package/rules/exch/oj-cca-comp-zip-content-pack.js +0 -1
- package/rules/exch/oj-cca-comp-zip-expand.js +0 -1
- package/rules/exch/oj-cca-compjson-evnames.js +0 -1
- package/rules/exch/oj-cca-compjson-file.js +0 -1
- package/rules/exch/oj-cca-compjson-prefix.js +0 -1
- package/rules/exch/oj-cca-compjson-prop-compdeps.js +0 -1
- package/rules/exch/oj-cca-compjson-prop-deps.js +0 -1
- package/rules/exch/oj-cca-compjson-prop-jetver.js +0 -1
- package/rules/exch/oj-cca-compjson-prop-obs.js +0 -1
- package/rules/exch/oj-cca-compjson-prop-type.js +0 -1
- package/rules/exch/oj-cca-compjson-prop-types.js +0 -1
- package/rules/exch/oj-cca-compjson-prop-undef.js +0 -1
- package/rules/exch/oj-cca-compjson-prop-version.js +0 -1
- package/rules/exch/oj-cca-compjson-schema.js +0 -1
- package/rules/exch/oj-cca-zip-compjson.js +0 -1
- package/rules/exch/rules.json +0 -1
- package/rules/jet/oj-css-bp-bgcolor.js +0 -1
- package/tests/components/attr-req-test/component.json +0 -1
- package/tests/components/demo-analog-clock/component.json +0 -1
- package/tests/components/demo-analog-clock/demo-analog-clock-viewModel.js +0 -1
- package/tests/components/demo-analog-clock/extension/demo/js/viewModels/demo.js +0 -1
- package/tests/components/demo-analog-clock/loader.js +0 -1
- package/tests/components/demo-card/component.json +0 -1
- package/tests/components/demo-chart-orientation-control/component.json +0 -1
- package/tests/components/demo-chart-stack-control/component.json +0 -1
- package/tests/components/made-up/component.json +0 -1
- package/tests/components/oj-made-up/component.json +0 -1
- package/tests/components/sp-activity-item/component.json +0 -1
- package/tests/config/config_base.json +0 -1
- package/tests/golden/10.0.0/golden_base.json +0 -1
- package/tests/golden/8.1.0/golden_base.json +0 -1
- package/tests/golden/9.0.0/golden_base.json +0 -1
- package/tests/rulepacks/hooks/hook-rpext.js +0 -1
- package/tests/rulepacks/hooks/hook-start-close-rulepack.js +0 -1
- package/tests/rulepacks/hooks/rule-rpext.js +0 -1
- package/tests/rulepacks/hooks/rules.json +0 -1
- package/tests/rulepacks/tags/proc_directive.js +0 -1
- package/tests/rulepacks/tags/rules.json +0 -1
- package/tests/rulepacks/tags/tag-count-setup.js +0 -1
- package/tests/rulepacks/tags/tag-count.js +0 -1
- package/tests/rules/bugs/JET-4770_PASS_1.html +0 -9
- package/tests/rules/comments/com_FAIL_1.js +0 -57
- package/tests/rules/comments/com_FAIL_2.js +0 -96
- package/tests/rules/comments/com_PASS_1.js +0 -42
- package/tests/rules/comments/com_PASS_2.js +0 -63
- package/tests/rules/comments/com_PASS_3.js +0 -40
- package/tests/rules/comments/com_PASS_4.js +0 -36
- package/tests/rules/comments/com_PASS_5.js +0 -19
- package/tests/rules/csp/html-script-unsafe-inline/FAIL_1.html +0 -11
- package/tests/rules/csp/html-script-unsafe-inline/FAIL_2.html +0 -8
- package/tests/rules/csp/html-script-unsafe-inline/PASS_1.html +0 -8
- package/tests/rules/csp/html-script-unsafe-inline/PASS_2.html +0 -8
- package/tests/rules/csp/html-script-unsafe-inline/PASS_3.html +0 -8
- package/tests/rules/csp/html-style-unsafe-inline/FAIL_1.html +0 -11
- package/tests/rules/csp/html-style-unsafe-inline/PASS_1.html +0 -11
- package/tests/rules/csp/html-unsafe-expr/FAIL_1.html +0 -14
- package/tests/rules/csp/html-unsafe-expr/PASS_1.html +0 -23
- package/tests/rules/csp/js-script-unsafe-eval/FAIL_1.js +0 -17
- package/tests/rules/csp/js-script-unsafe-eval/FAIL_2.js +0 -40
- package/tests/rules/csp/js-script-unsafe-eval/FAIL_3.js +0 -22
- package/tests/rules/csp/js-script-unsafe-eval/PASS_1.js +0 -20
- package/tests/rules/csp/js-script-unsafe-eval/PASS_2.js +0 -44
- package/tests/rules/csp/js-script-unsafe-eval/PASS_3.js +0 -16
- package/tests/rules/csp/js-style-unsafe-inline/FAIL_1.js +0 -25
- package/tests/rules/csp/js-style-unsafe-inline/PASS.js +0 -22
- package/tests/rules/demo/noself_FAIL_1.js +0 -101
- package/tests/rules/import/import_FAIL_1.js +0 -11
- package/tests/rules/import/import_PASS_1.js +0 -10
- package/tests/rules/jet-composites/demo-buttonset-enum/component.json +0 -57
- package/tests/rules/jet-composites/demo-buttonset-enum/loader.js +0 -19
- package/tests/rules/jet-composites/demo-buttonset-enum/view.html +0 -48
- package/tests/rules/jet-composites/demo-card/component.json +0 -28
- package/tests/rules/jet-composites/demo-card/loader.js +0 -16
- package/tests/rules/jet-composites/demo-card/view.html +0 -30
- package/tests/rules/jet-composites/demo-card/viewModel.js +0 -46
- package/tests/rules/jet-composites/demo-card/view_PASS_1.html +0 -21
- package/tests/rules/jet-composites/demo-contact-form/component.json +0 -23
- package/tests/rules/jet-composites/demo-contact-form/loader.js +0 -16
- package/tests/rules/jet-composites/demo-contact-form/view.html +0 -9
- package/tests/rules/jet-composites/demo-grocery-list/component.json +0 -18
- package/tests/rules/jet-composites/demo-grocery-list/loader.js +0 -19
- package/tests/rules/jet-composites/demo-grocery-list/view.html +0 -22
- package/tests/rules/jet-composites/demo-grocery-list/viewModel.js +0 -48
- package/tests/rules/jet-composites/dummy-component-1/component.json +0 -82
- package/tests/rules/jet-composites/dummy-component-2/component.json +0 -72
- package/tests/rules/jet-composites/foo-my-cca/component.json +0 -14
- package/tests/rules/jet-composites/foo-unsup-theme/component.json +0 -29
- package/tests/rules/jet-composites/header/component.json +0 -12
- package/tests/rules/jet-composites/oj-cgbu-omc/attribute-selection/component.json +0 -154
- package/tests/rules/jet-composites/oj-cgbu-omc/component.json +0 -11
- package/tests/rules/jet-composites/oj-cgbu-omc/reference/component.json +0 -185
- package/tests/rules/jet-composites/oj-cgbu-omc/wctag_props_FAIL_1.html +0 -34
- package/tests/rules/jet-composites/oj-enum-depr/component.json +0 -69
- package/tests/rules/jet-composites/oj-html-wctag-id/id_FAIL_1.html +0 -10
- package/tests/rules/jet-composites/oj-html-wctag-id/id_PASS_1.html +0 -6
- package/tests/rules/misc/oj.js +0 -12
- package/tests/rules/oj-acc-aria-labelledby/aria_labelledby_FAIL_1.html +0 -23
- package/tests/rules/oj-acc-aria-labelledby/aria_labelledby_FAIL_2.html +0 -22
- package/tests/rules/oj-acc-aria-labelledby/aria_labelledby_PASS_1.html +0 -23
- package/tests/rules/oj-acc-aria-labelledby/aria_labelledby_PASS_2.html +0 -22
- package/tests/rules/oj-acc-aria-labelledby/aria_labelledby_PASS_3.html +0 -22
- package/tests/rules/oj-acc-aria-labelledby/aria_labelledby_PASS_4.html +0 -22
- package/tests/rules/oj-acc-aria-labelledby/aria_labelledby_PASS_5.html +0 -22
- package/tests/rules/oj-acc-aria-prop/aria_prop_FAIL_1.html +0 -22
- package/tests/rules/oj-acc-avatar-aria-role/aria_avatar_role_FAIL_1.html +0 -20
- package/tests/rules/oj-acc-avatar-aria-role/aria_avatar_role_PASS_1.html +0 -23
- package/tests/rules/oj-acc-avatar-aria-role/aria_avatar_role_PASS_2.html +0 -24
- package/tests/rules/oj-acc-avatar-aria-role/aria_avatar_role_PASS_3.html +0 -21
- package/tests/rules/oj-acc-avatar-aria-role/aria_avatar_role_PASS_4.html +0 -22
- package/tests/rules/oj-acc-avatar-aria-role/aria_avatar_role_PASS_5.html +0 -22
- package/tests/rules/oj-acc-combobox-aria-label/aria_combo_many_FAIL_1.html +0 -20
- package/tests/rules/oj-acc-combobox-aria-label/aria_combo_many_FAIL_2.html +0 -21
- package/tests/rules/oj-acc-combobox-aria-label/aria_combo_many_PASS_1.html +0 -20
- package/tests/rules/oj-acc-combobox-aria-label/aria_combo_one_FAIL_1.html +0 -21
- package/tests/rules/oj-acc-combobox-aria-label/aria_combo_one_FAIL_2.html +0 -22
- package/tests/rules/oj-acc-combobox-aria-label/aria_combo_one_PASS_1.html +0 -22
- package/tests/rules/oj-acc-film-strip-aria-label/aria_filmstrip_FAIL_1.html +0 -18
- package/tests/rules/oj-acc-film-strip-aria-label/aria_filmstrip_FAIL_2.html +0 -18
- package/tests/rules/oj-acc-film-strip-aria-label/aria_filmstrip_PASS_1.html +0 -18
- package/tests/rules/oj-acc-film-strip-aria-label/aria_filmstrip_PASS_2.html +0 -19
- package/tests/rules/oj-acc-film-strip-aria-label/aria_filmstrip_PASS_3.html +0 -22
- package/tests/rules/oj-acc-input-aria-label/oj_input_date_FAIL_1.html +0 -21
- package/tests/rules/oj-acc-input-aria-label/oj_input_date_FAIL_2.html +0 -22
- package/tests/rules/oj-acc-input-aria-label/oj_input_date_PASS_1.html +0 -16
- package/tests/rules/oj-acc-input-aria-label/oj_input_date_PASS_2.html +0 -17
- package/tests/rules/oj-acc-input-aria-label/oj_input_date_PASS_3.html +0 -26
- package/tests/rules/oj-acc-input-aria-label/oj_input_date_time_FAIL_1.html +0 -19
- package/tests/rules/oj-acc-input-aria-label/oj_input_date_time_FAIL_2.html +0 -20
- package/tests/rules/oj-acc-input-aria-label/oj_input_date_time_PASS_1.html +0 -19
- package/tests/rules/oj-acc-input-aria-label/oj_input_number_FAIL_1.html +0 -17
- package/tests/rules/oj-acc-input-aria-label/oj_input_number_FAIL_2.html +0 -18
- package/tests/rules/oj-acc-input-aria-label/oj_input_number_PASS_1.html +0 -17
- package/tests/rules/oj-acc-input-aria-label/oj_input_password_FAIL_1.html +0 -17
- package/tests/rules/oj-acc-input-aria-label/oj_input_password_FAIL_2.html +0 -17
- package/tests/rules/oj-acc-input-aria-label/oj_input_password_PASS_1.html +0 -17
- package/tests/rules/oj-acc-input-aria-label/oj_input_text_3_PASS_1.html +0 -20
- package/tests/rules/oj-acc-input-aria-label/oj_input_text_FAIL_1.html +0 -20
- package/tests/rules/oj-acc-input-aria-label/oj_input_text_FAIL_2.html +0 -21
- package/tests/rules/oj-acc-input-aria-label/oj_input_text_PASS_2.html +0 -62
- package/tests/rules/oj-acc-input-aria-label/oj_input_text_nolabel_PASS_2.html +0 -17
- package/tests/rules/oj-acc-input-aria-label/oj_input_time_FAIL_1.html +0 -19
- package/tests/rules/oj-acc-input-aria-label/oj_input_time_FAIL_2.html +0 -20
- package/tests/rules/oj-acc-input-aria-label/oj_input_time_PASS_1.html +0 -19
- package/tests/rules/oj-acc-select-aria-label/aria_selectmany_FAIL_1.html +0 -19
- package/tests/rules/oj-acc-select-aria-label/aria_selectmany_FAIL_2.html +0 -20
- package/tests/rules/oj-acc-select-aria-label/aria_selectmany_PASS_1.html +0 -19
- package/tests/rules/oj-acc-select-aria-label/aria_selectone_FAIL_1.html +0 -20
- package/tests/rules/oj-acc-select-aria-label/aria_selectone_FAIL_2.html +0 -21
- package/tests/rules/oj-cca-comp-zip/zip_FAIL_1.zip +0 -1
- package/tests/rules/oj-cca-comp-zip/zip_FAIL_2.zip +0 -0
- package/tests/rules/oj-cca-comp-zip/zip_FAIL_3.zip +0 -0
- package/tests/rules/oj-cca-comp-zip/zip_FAIL_4.zip +0 -0
- package/tests/rules/oj-cca-comp-zip/zip_FAIL_5.zip +0 -0
- package/tests/rules/oj-cca-comp-zip/zip_FAIL_6.zip +0 -0
- package/tests/rules/oj-cca-comp-zip/zip_FAIL_7.zip +0 -0
- package/tests/rules/oj-cca-comp-zip/zip_FAIL_8.zip +0 -0
- package/tests/rules/oj-cca-comp-zip/zip_PASS_1.zip +0 -0
- package/tests/rules/oj-cca-ns-reg/oj-cca-ns-FAIL_1/component.json +0 -19
- package/tests/rules/oj-cca-ns-reg/oj-cca-ns-PASS_1/component.json +0 -19
- package/tests/rules/oj-cgbu-omc_tests/html_ojevent_FAIL_1.html +0 -15
- package/tests/rules/oj-cgbu-omc_tests/html_ojevent_PASS_1.html +0 -17
- package/tests/rules/oj-compjson-syntax/ojcomp-FAIL_1/component.json +0 -16
- package/tests/rules/oj-compjson-syntax/ojcomp-FAIL_10/component.json +0 -103
- package/tests/rules/oj-compjson-syntax/ojcomp-FAIL_11/component.json +0 -24
- package/tests/rules/oj-compjson-syntax/ojcomp-FAIL_12/component.json +0 -17
- package/tests/rules/oj-compjson-syntax/ojcomp-FAIL_13/component.json +0 -17
- package/tests/rules/oj-compjson-syntax/ojcomp-FAIL_14/component.json +0 -40
- package/tests/rules/oj-compjson-syntax/ojcomp-FAIL_15/component.json +0 -24
- package/tests/rules/oj-compjson-syntax/ojcomp-FAIL_16/component.json +0 -44
- package/tests/rules/oj-compjson-syntax/ojcomp-FAIL_17/component.json +0 -8
- package/tests/rules/oj-compjson-syntax/ojcomp-FAIL_18/component.json +0 -8
- package/tests/rules/oj-compjson-syntax/ojcomp-FAIL_19/component.json +0 -8
- package/tests/rules/oj-compjson-syntax/ojcomp-FAIL_2/component.json +0 -15
- package/tests/rules/oj-compjson-syntax/ojcomp-FAIL_20/component.json +0 -18
- package/tests/rules/oj-compjson-syntax/ojcomp-FAIL_21/component.json +0 -16
- package/tests/rules/oj-compjson-syntax/ojcomp-FAIL_22/component.json +0 -19
- package/tests/rules/oj-compjson-syntax/ojcomp-FAIL_3/component.json +0 -15
- package/tests/rules/oj-compjson-syntax/ojcomp-FAIL_4/component.json +0 -16
- package/tests/rules/oj-compjson-syntax/ojcomp-FAIL_5/component.json +0 -16
- package/tests/rules/oj-compjson-syntax/ojcomp-FAIL_6/component.json +0 -18
- package/tests/rules/oj-compjson-syntax/ojcomp-FAIL_7/component.json +0 -15
- package/tests/rules/oj-compjson-syntax/ojcomp-FAIL_8/component.json +0 -15
- package/tests/rules/oj-compjson-syntax/ojcomp-FAIL_9/component.json +0 -52
- package/tests/rules/oj-compjson-syntax/ojcomp-PASS_1/component.json +0 -17
- package/tests/rules/oj-compjson-syntax/ojcomp-PASS_2/component.json +0 -88
- package/tests/rules/oj-compjson-syntax/ojcomp-PASS_3/component.json +0 -19
- package/tests/rules/oj-css-bp-dir-flow/dirflow_FAIL_1.html +0 -22
- package/tests/rules/oj-css-bp-dir-flow/dirflow_FAIL_2.html +0 -22
- package/tests/rules/oj-css-diagnose/css_FAIL_1.html +0 -14
- package/tests/rules/oj-css-diagnose/css_PASS_1.html +0 -14
- package/tests/rules/oj-css-var-override/varovr_FAIL_1.html +0 -8
- package/tests/rules/oj-html-5-attr-depr/attrdepr_FAIL_1.html +0 -16
- package/tests/rules/oj-html-5-attr-depr/attrdepr_PASS_1.html +0 -16
- package/tests/rules/oj-html-5-tag-depr/tagdepr_FAIL_1.html +0 -9
- package/tests/rules/oj-html-attr/attr_FAIL_1.html +0 -27
- package/tests/rules/oj-html-attr-$unique/attr_$unique1_FAIL_1.html +0 -19
- package/tests/rules/oj-html-attr-$unique/attr_$unique_FAIL_2.html +0 -25
- package/tests/rules/oj-html-attr-2def/attr2def_FAIL_1.html +0 -10
- package/tests/rules/oj-html-attr-2def/attr2def_PASS_1.html +0 -10
- package/tests/rules/oj-html-attr-json/attr-json_FAIL_1.html +0 -20
- package/tests/rules/oj-html-attr-json/attr-json_FAIL_2.html +0 -20
- package/tests/rules/oj-html-attr-json/attr-json_FAIL_3.html +0 -20
- package/tests/rules/oj-html-attr-json/attr-json_PASS_1.html +0 -20
- package/tests/rules/oj-html-attr-json/attr-json_PASS_2.html +0 -20
- package/tests/rules/oj-html-attr-json/attr-json_PASS_3.html +0 -8
- package/tests/rules/oj-html-attr-prefix-expr/attrprefixexpr_FAIL_1.html +0 -10
- package/tests/rules/oj-html-attr-prefix-expr/attrprefixexpr_PASS_1.html +0 -10
- package/tests/rules/oj-html-attr-prefix-ro/attrprefixro_FAIL_1.html +0 -10
- package/tests/rules/oj-html-attr-prefix-ro/attrprefixro_PASS_1.html +0 -10
- package/tests/rules/oj-html-attr-req/attrreq_FAIL_1.html +0 -17
- package/tests/rules/oj-html-attr-req/attrreq_FAIL_2.html +0 -13
- package/tests/rules/oj-html-attr-req/attrreq_FAIL_3.html +0 -8
- package/tests/rules/oj-html-attr-req/attrreq_FAIL_4.html +0 -13
- package/tests/rules/oj-html-attr-req/attrreq_FAIL_5.html +0 -17
- package/tests/rules/oj-html-attr-req/attrreq_PASS_1.html +0 -24
- package/tests/rules/oj-html-attr-req/attrreq_PASS_2.html +0 -24
- package/tests/rules/oj-html-attr-req/attrreq_PASS_3.html +0 -10
- package/tests/rules/oj-html-attr-req/attrreq_PASS_4.html +0 -11
- package/tests/rules/oj-html-bindforeach-data/bindforeach_data_FAIL_1.html +0 -19
- package/tests/rules/oj-html-bindforeach-data/bindforeach_data_PASS_1.html +0 -10
- package/tests/rules/oj-html-bindif-test/bindif_test_FAIL_1.html +0 -22
- package/tests/rules/oj-html-bindif-test/bindif_test_PASS_1.html +0 -11
- package/tests/rules/oj-html-binding-attr/binding-foreach_FAIL_2.html +0 -28
- package/tests/rules/oj-html-binding-attr/binding-if_FAIL_1.html +0 -23
- package/tests/rules/oj-html-binding-attr/binding-if_PASS_1.html +0 -23
- package/tests/rules/oj-html-cca-count/cca-count_FAIL_1.html +0 -119
- package/tests/rules/oj-html-cca-tagname/ccatag_FAIL_1.html +0 -7
- package/tests/rules/oj-html-cca-tagname/ccatag_PASS_1.html +0 -7
- package/tests/rules/oj-html-cca-tagname/tag_ns_FAIL_1.html +0 -8
- package/tests/rules/oj-html-cca-tagname/tag_ns_FAIL_2.html +0 -8
- package/tests/rules/oj-html-cca-tagname/tag_ns_FAIL_3.html +0 -8
- package/tests/rules/oj-html-cca-tagname/tag_ns_PASS_1.html +0 -10
- package/tests/rules/oj-html-cdn/html_cdn_FAIL_1.html +0 -18
- package/tests/rules/oj-html-cspexpr/cspexpr_FAIL_1.html +0 -14
- package/tests/rules/oj-html-cspexpr/cspexpr_FAIL_2.html +0 -10
- package/tests/rules/oj-html-cspexpr/cspexpr_PASS_1.html +0 -23
- package/tests/rules/oj-html-cspexpr/cspexpr_PASS_2.html +0 -10
- package/tests/rules/oj-html-cspexpr/cspexpr_PASS_3.html +0 -13
- package/tests/rules/oj-html-dlg-title/dlgtitle_FAIL_1.html +0 -12
- package/tests/rules/oj-html-dlg-title/dlgtitle_PASS_1.html +0 -12
- package/tests/rules/oj-html-form-noflex/noflex_FAIL_1.html +0 -10
- package/tests/rules/oj-html-invalid-doctype/doctype_invalid_FAIL_1.html +0 -20
- package/tests/rules/oj-html-invalid-doctype/doctype_invalid_FAIL_2.html +0 -13
- package/tests/rules/oj-html-invalid-doctype/doctype_invalid_FAIL_3.html +0 -16
- package/tests/rules/oj-html-invalid-doctype/doctype_invalid_FAIL_4.html +0 -13
- package/tests/rules/oj-html-invalid-doctype/doctype_invalid_PASS_1.html +0 -6
- package/tests/rules/oj-html-invalid-doctype/doctype_invalid_PASS_2.html +0 -7
- package/tests/rules/oj-html-invalid-doctype/doctype_invalid_PASS_3.html +0 -7
- package/tests/rules/oj-html-jq-databind/jq-databind_FAIL_1.html +0 -37
- package/tests/rules/oj-html-jq-databind/jq-databind_FAIL_2.html +0 -34
- package/tests/rules/oj-html-jq-databind/jq-databind_FAIL_3.html +0 -27
- package/tests/rules/oj-html-jq-databind/jq-databind_PASS_1.html +0 -30
- package/tests/rules/oj-html-ko-comment/ko-comment_FAIL_1.html +0 -47
- package/tests/rules/oj-html-ko-comment/ko-comment_FAIL_2.html +0 -36
- package/tests/rules/oj-html-ko-databind/ko-databind_FAIL_1.html +0 -24
- package/tests/rules/oj-html-ko-databind/ko-databind_FAIL_2.html +0 -36
- package/tests/rules/oj-html-ko-databind/ko-databind_FAIL_3.html +0 -29
- package/tests/rules/oj-html-label-for-prefix/for_FAIL_1.html +0 -8
- package/tests/rules/oj-html-label-for-prefix/for_PASS_1.html +0 -8
- package/tests/rules/oj-html-missing-doctype/doctype_missing_FAIL_1.html +0 -12
- package/tests/rules/oj-html-missing-doctype/doctype_missing_FAIL_2.html +0 -11
- package/tests/rules/oj-html-missing-doctype/doctype_missing_PASS_1.html +0 -14
- package/tests/rules/oj-html-missing-doctype/doctype_missing_PASS_2.html +0 -5
- package/tests/rules/oj-html-missing-doctype/doctype_missing_PASS_3.html +0 -12
- package/tests/rules/oj-html-missing-doctype/doctype_missing_PASS_5.html +0 -6
- package/tests/rules/oj-html-nonvoid-close/close_FAIL_1.html +0 -28
- package/tests/rules/oj-html-nonvoid-close/close_FAIL_2.html +0 -14
- package/tests/rules/oj-html-nonvoid-close/close_FAIL_3.html +0 -13
- package/tests/rules/oj-html-nonvoid-close/close_FAIL_5.html +0 -28
- package/tests/rules/oj-html-nonvoid-close/close_FAIL_6.html +0 -28
- package/tests/rules/oj-html-nonvoid-close/close_PASS_1.html +0 -7
- package/tests/rules/oj-html-oj-lib/oj_lib_FAIL_1.html +0 -15
- package/tests/rules/oj-html-ojattr/ojattr_PASS_1.html +0 -8
- package/tests/rules/oj-html-ojattr/ojattr_PASS_2.html +0 -10
- package/tests/rules/oj-html-ojattr/ojattr_PASS_3.html +0 -7
- package/tests/rules/oj-html-ojattr/ojattr_PASS_4.html +0 -7
- package/tests/rules/oj-html-ojattr-deprecated/ojattr-dep_FAIL1.html +0 -156
- package/tests/rules/oj-html-ojattr-enum-deprecated/enum_FAIL_1.html +0 -19
- package/tests/rules/oj-html-ojattr-enum-deprecated/enum_FAIL_2.html +0 -20
- package/tests/rules/oj-html-ojattr-enum-deprecated/enum_PASS_1.html +0 -25
- package/tests/rules/oj-html-ojattr-evt-syntax/evt-attr-syntax_FAIL_1.html +0 -6
- package/tests/rules/oj-html-ojattr-evt-syntax/evt-attr-syntax_PASS_1.html +0 -6
- package/tests/rules/oj-html-ojattr-value/attr-value_FAIL_1.html +0 -26
- package/tests/rules/oj-html-ojattr-value/attr-value_FAIL_2.html +0 -26
- package/tests/rules/oj-html-ojattr-value/attr-value_FAIL_3.html +0 -8
- package/tests/rules/oj-html-ojattr-value/attr-value_FAIL_4.html +0 -8
- package/tests/rules/oj-html-ojattr-value/attr-value_FAIL_5.html +0 -8
- package/tests/rules/oj-html-ojattr-value/attr-value_PASS_1.html +0 -26
- package/tests/rules/oj-html-ojattr-value/attr-value_PASS_2.html +0 -8
- package/tests/rules/oj-html-ojattr-value/attr-value_PASS_3.html +0 -7
- package/tests/rules/oj-html-ojattr-value/attr-value_PASS_6.html +0 -7
- package/tests/rules/oj-html-ojattr-value/attr-value_PASS_7.html +0 -10
- package/tests/rules/oj-html-ojattr-value/attr_value_PASS_4.html +0 -7
- package/tests/rules/oj-html-ojattr-value/attr_value_PASS_5.html +0 -9
- package/tests/rules/oj-html-ojslot/ojslot_FAIL_1.html +0 -11
- package/tests/rules/oj-html-ojslot/ojslot_PASS_1.html +0 -12
- package/tests/rules/oj-html-ojstyle/style_FAIL_1.html +0 -103
- package/tests/rules/oj-html-ojstyle/style_PASS_2.html +0 -7
- package/tests/rules/oj-html-ojtag-datacmd/datacmd_FAIL_1.html +0 -10
- package/tests/rules/oj-html-ojtag-datacmd/datacmd_FAIL_2.html +0 -18
- package/tests/rules/oj-html-ojtag-datacmd/datacmd_FAIL_3.html +0 -10
- package/tests/rules/oj-html-ojtag-datacmd/datacmd_PASS_1.html +0 -28
- package/tests/rules/oj-html-ojtag-datacmd/datacmd_PASS_2.html +0 -15
- package/tests/rules/oj-html-ojtag-datactx/datactx_FAIL_1.html +0 -14
- package/tests/rules/oj-html-ojtag-datactx/datactx_PASS_1.html +0 -14
- package/tests/rules/oj-html-ojtag-globattr-noprefix/globattr-noprefix_FAIL_1.html +0 -36
- package/tests/rules/oj-html-ojtag-nonglobattr-prefix/nonglobattr-prefix_FAIL_1.html +0 -26
- package/tests/rules/oj-html-slot-name/slot_name.FAIL_1.html +0 -24
- package/tests/rules/oj-html-slot-name/slot_name.FAIL_2.html +0 -46
- package/tests/rules/oj-html-slot-name/slot_name.FAIL_3.html +0 -10
- package/tests/rules/oj-html-slot-name/slot_name.PASS_1.html +0 -24
- package/tests/rules/oj-html-slot-name/slot_name.PASS_2.html +0 -39
- package/tests/rules/oj-html-slot-name/slot_name.PASS_3.html +0 -10
- package/tests/rules/oj-html-slot-name/slot_name_PASS_4.html +0 -16
- package/tests/rules/oj-html-slot-name/slot_name_PASS_5.html +0 -11
- package/tests/rules/oj-html-slot-name/slot_name_PASS_6.html +0 -14
- package/tests/rules/oj-html-slot-name/slot_name_PASS_7.html +0 -10
- package/tests/rules/oj-html-style/style_FAIL_1.html +0 -7
- package/tests/rules/oj-html-style/style_PASS_1.html +0 -12
- package/tests/rules/oj-html-style/style_PASS_2.html +0 -7
- package/tests/rules/oj-html-style-bp-color/color-FAIL_1.html +0 -17
- package/tests/rules/oj-html-style-bp-color/color-FAIL_2.html +0 -15
- package/tests/rules/oj-html-style-bp-color/color-FAIL_3.html +0 -7
- package/tests/rules/oj-html-style-bp-color/color-PASS_1.html +0 -7
- package/tests/rules/oj-html-style-bp-font-family/fam_FAIL_1.html +0 -23
- package/tests/rules/oj-html-tag-attr-noprefix/attr-noprefix_FAIL_1.html +0 -15
- package/tests/rules/oj-html-tag-attr-noprefix/attr-noprefix_FAIL_2.html +0 -9
- package/tests/rules/oj-html-tag-attr-noprefix/attr-noprefix_PASS_1.html +0 -9
- package/tests/rules/oj-html-unsup-theme/unsup_FAIL_1.html +0 -8
- package/tests/rules/oj-html-wctag-for/for_FAIL_1.html +0 -8
- package/tests/rules/oj-html-wctag-for/for_PASS_1.html +0 -8
- package/tests/rules/oj-js-comp-attr-deprecated/attr-del_FAIL_1.js +0 -20
- package/tests/rules/oj-js-comp-attr-deprecated/attr-dep_FAIL_1.js +0 -20
- package/tests/rules/oj-js-comp-meth-deprecated/meth-del_FAIL_1.js +0 -20
- package/tests/rules/oj-js-comp-meth-deprecated/meth-dep_FAIL_1.js +0 -20
- package/tests/rules/oj-js-define-promise/def-prom_FAIL_1.js +0 -16
- package/tests/rules/oj-js-define-promise/def-prom_FAIL_2.js +0 -16
- package/tests/rules/oj-js-diagnose/es6_PASS_1.js +0 -24
- package/tests/rules/oj-js-diagnose/js_FAIL_1.js +0 -12
- package/tests/rules/oj-js-no-ext-final/noextfinal_FAIL_1.js +0 -30
- package/tests/rules/oj-js-no-ext-final/noextfinal_FAIL_2.js +0 -23
- package/tests/rules/oj-js-no-ext-final/noextfinal_FAIL_3.js +0 -22
- package/tests/rules/oj-js-no-ext-final/noextfinal_FAIL_4.js +0 -20
- package/tests/rules/oj-js-no-ext-final/noextfinal_FAIL_5.js +0 -24
- package/tests/rules/oj-js-no-ext-final/noextfinal_FAIL_6.js +0 -30
- package/tests/rules/oj-js-no-ext-final/noextfinal_FAIL_7.js +0 -15
- package/tests/rules/oj-js-no-ext-final/noextfinal_FAIL_8.js +0 -16
- package/tests/rules/oj-js-no-ext-final/noextfinal_PASS_1.js +0 -17
- package/tests/rules/oj-js-no-ext-final/noextfinal_PASS_2.js +0 -17
- package/tests/rules/oj-js-noconsole/nocons_FAIL_1.js +0 -11
- package/tests/rules/oj-js-ojcomp-deprecated/jscomp_FAIL_1.js +0 -27
- package/tests/rules/oj-json-syntax/json_FAIL_1.json +0 -8
- package/tests/rules/oj-json-syntax/json_FAIL_2.json +0 -12
- package/tests/rules/oj-json-syntax/json_PASS_1.json +0 -25
- package/tests/rules/oj-json-syntax/json_PASS_2.json +0 -12
- package/tests/rules/oj-json-syntax/json_PASS_3.json +0 -14
- package/tests/rules/ojcompjson/attrreq_FAIL_1/component.json +0 -69
- package/tests/rules/pack-compjson/audit-pack/component-1/component-1-view.html +0 -6
- package/tests/rules/pack-compjson/audit-pack/component-1/component-1-viewModel.js +0 -56
- package/tests/rules/pack-compjson/audit-pack/component-1/component.json +0 -13
- package/tests/rules/pack-compjson/audit-pack/component-1/loader.js +0 -20
- package/tests/rules/pack-compjson/audit-pack/component-1/resources/nls/component-1-strings.js +0 -18
- package/tests/rules/pack-compjson/audit-pack/component-2/component-2-view.html +0 -5
- package/tests/rules/pack-compjson/audit-pack/component-2/component-2-viewModel.js +0 -56
- package/tests/rules/pack-compjson/audit-pack/component-2/component.json +0 -13
- package/tests/rules/pack-compjson/audit-pack/component-2/loader.js +0 -20
- package/tests/rules/pack-compjson/audit-pack/component-2/resources/nls/component-1-strings.js +0 -18
- package/tests/rules/pack-compjson/audit-pack/component.json +0 -12
- package/tests/rules/pack-compjson/audit-singleton-1/audit-singleton-1-view.html +0 -5
- package/tests/rules/pack-compjson/audit-singleton-1/audit-singleton-1-viewModel.js +0 -56
- package/tests/rules/pack-compjson/audit-singleton-1/component.json +0 -20
- package/tests/rules/pack-compjson/audit-singleton-1/loader.js +0 -20
- package/tests/rules/pack-compjson/audit-singleton-1/resources/nls/audit-singleton-1-strings.js +0 -18
- package/tests/rules/pack-compjson/audit-singleton-2/audit-singleton-2-view.html +0 -8
- package/tests/rules/pack-compjson/audit-singleton-2/audit-singleton-2-viewModel.js +0 -56
- package/tests/rules/pack-compjson/audit-singleton-2/component.json +0 -15
- package/tests/rules/pack-compjson/audit-singleton-2/loader.js +0 -20
- package/tests/rules/pack-compjson/audit-singleton-2/resources/nls/audit-singleton-2-strings.js +0 -18
- package/tests/rules/parse-html/proc_instr.html +0 -9
- package/tests/rules/spoc-dom-manip/dom-manip_FAIL_1.js +0 -113
- package/tests/rules/spoc-dom-manip/dom-manip_FAIL_2.js +0 -151
- package/tests/rules/spoc-dom-manip/dom-manip_PASS_1.js +0 -149
- package/tests/rules/spoc-dom-manip/dom-manip_PASS_2.js +0 -147
- package/tests/rules/spoc-dom-manip/dom-manip_PASS_3.js +0 -147
- package/tests/rules/spoc-dom-manip/dom-manip_PASS_4.js +0 -20
- package/tests/rules/spoc-dom-manip/dom-manip_PASS_5.js +0 -246
- package/tests/rules/tab-tests/tab-test_FAIL_1.html +0 -37
- package/tests/rules/tab-tests/tab-test_FAIL_2.html +0 -8
- package/tests/rules/webcomptests/jet-composites/oj-html-wctag-$props/prop_PASS_1.html +0 -8
- package/tests/rules/webcomptests/jet-composites/oj-html-wctag-$props/prop_PASS_2.html +0 -8
- package/tests/rules/webcomptests/jet-composites/oj-html-wctag-for/for_FAIL_1.html +0 -8
- package/tests/rules/webcomptests/jet-composites/oj-html-wctag-for/for_PASS_1.html +0 -8
- package/tests/src/JetTest.js +0 -1
- package/tests/src/server.js +0 -1
- package/tests/test.js +0 -1
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
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 RULE_NAME="oj-css-style-deprecated";const SHORT="Deprecated JET CSS style class selectors should not be used";const LONG="Deprecated JET CSS style class selectors should not be used";const OJ="oj-";const EXCEPTION_LIST=["oj-tabbar-stack-icon-label"];function Rule(){this._checkList=null;this._isAccept=false};Rule.prototype.getName=function(){return RULE_NAME};Rule.prototype.getShortDescription=function(){return SHORT};Rule.prototype.getDescription=function(){return LONG};Rule.prototype.register=function(regCtx){if(!this._checkAcceptReject(regCtx)){return false}return{"css-rule":this._onRule}};Rule.prototype._onRule=function(ruleCtx,rule){var sels,sel,dep,descr,issue,i;sels=_getOjClassSelectors(rule);if(!sels.length){return}for(i=0;i<sels.length;i+=2){sel=sels[i];if(this._OkSel(sel)){dep=ruleCtx.utils.metaLib.isStyleDeprecated(sel);if(dep){descr=dep.description?dep.description.trim():null;if(descr&&!descr.endsWith(".")){descr+="."}issue=new ruleCtx.Issue("JET CSS class selector '"+sel+"' is deprecated"+(dep.since?" (since "+dep.since+")":"")+"."+(descr?" "+descr:""));issue.setPosition(ruleCtx.utils.CssUtils.getPosition(ruleCtx,sels[i+1]));ruleCtx.reporter.addIssue(issue,ruleCtx)}}}};function _getOjClassSelectors(rule){var sels,sel,a,c,i,j,ret=[];if(!(rule.prelude&&rule.prelude.children)||rule.prelude.type!=="SelectorList"){return ret}a=rule.prelude.children;for(i=0;i<a.length;i++){sels=a[i];if(sels.type==="Selector"){c=sels.children;for(j=0;j<c.length;j++){sel=c[j];if(sel.type==="ClassSelector"&&sel.name.startsWith(OJ)){ret.push(sel.name);ret.push(sel.loc)}}}}return ret};Rule.prototype._OkSel=function(sel){if(EXCEPTION_LIST.includes(sel)){return false}if(this._checkList){for(let i=0;i<this._checkList.length;i++){if(this._checkList[i].test(sel)){return this._isAccept}}return!this._isAccept}return true};Rule.prototype._checkAcceptReject=function(regCtx){var accept=regCtx.ruleOpts["accept"];var reject=regCtx.ruleOpts["reject"];if(accept||reject){if(accept&&reject){regCtx.utils.msgLib.error("Rule "+RULE_NAME+": options 'accept' and 'reject' are mutually exclusive");return false}if(accept){this._checkList=accept;this._isAccept=true}else{this._checkList=reject}if(!Array.isArray(this._checkList)){regCtx.utils.msgLib.error("Rule "+RULE_NAME+": option '"+(accept?"accept":"reject")+"' is not an array");return false}for(let i=0;i<this._checkList.length;i++){if(typeof this._checkList[i]==="string"){this._checkList[i]=new RegExp(this._checkList[i].trim())}}}return true};module.exports=Rule;
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
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 RULE_NAME="oj-css-style-override";const SHORT_DESCRIPT="JET CSS style classes should not be overridden";const DESCRIPT=SHORT_DESCRIPT;const OJ_DASH="oj-";const SELECTOR_LIST="SelectorList";const CLASS_SELECTOR="ClassSelector";const TYPE_SELECTOR="TypeSelector";const PSEUDO_CLASS_SELECTOR="PseudoClassSelector";const NOT_CLASSES=["oj-complete"];const OVERRIDE_LIST=["oj-buttonset-one","oj-buttonset-many","oj-color-invert","oj-badge-sm","oj-navigationlist-vertical","oj-navigationlist-horizontal","oj-navigationlist-icon-only","oj-navigationlist-stack-icon-label","oj-input-search-hero","oj-avatar-bg-purple","oj-avatar-bg-orange","oj-avatar-bg-teal","oj-avatar-bg-green","oj-avatar-bg-pink","oj-avatar-bg-slate","oj-avatar-bg-blue","oj-avatar-bg-lilac","oj-avatar-bg-gray","oj-avatar-xxs","oj-avatar-xs","oj-avatar-sm","oj-avatar-lg","oj-avatar-xl","oj-avatar-xxl","oj-tabbar-vertical","oj-tabbar-horizontal","oj-tabbar-icon-only","oj-tabbar-stack-icon-label","oj-invalid-drop"];const OVERRIDE_LIST_PREFIX=["oj-animate-inline-"];function Rule(){this._checkList=null;this._isAccept=false};Rule.prototype.getName=function(){return RULE_NAME};Rule.prototype.getShortDescription=function(){return SHORT_DESCRIPT};Rule.prototype.getDescription=function(){return DESCRIPT};Rule.prototype.register=function(regCtx){if(!this._checkAcceptReject(regCtx)){return false}this._metaLib=regCtx.utils.metaLib;if(!this._metaLib.hasJetStylePrefixes()){return false}return{"css-rule":this._onRule}};Rule.prototype._onRule=function(ruleCtx,rule){var sels,sel,t,i;sels=this._getOjSelectors(rule,this._metaLib);if(!sels.length){return}for(i=0;i<sels.length;i+=3){sel=sels[i];t=sels[i+1];if(_isBuiltinOverride(sel)){continue}if(this._checkList){if(this._OkSel(sel)){this._emitIssue(ruleCtx,t,sel,sels[i+2])}}else if(t===CLASS_SELECTOR||t===TYPE_SELECTOR&&this._metaLib.isJetTag(sel)){this._emitIssue(ruleCtx,t,sel,sels[i+2])}};};Rule.prototype._emitIssue=function(ruleCtx,type,sel,loc){var tag,issue;if(type===TYPE_SELECTOR){issue=new ruleCtx.Issue(`type Selector '${sel}' must not be overridden.`);issue.setMsgKey(ruleCtx.ruleName+"_2")}else{tag=ruleCtx.utils.metaLib.getJetTagFromStyle(sel);issue=new ruleCtx.Issue(`class selector '.${sel}' ${tag?"(for <"+tag+">) ":""}must not be overridden.`);issue.setMsgKey(ruleCtx.ruleName+"_1")}issue.setPosition(ruleCtx.utils.CssUtils.getPosition(ruleCtx,loc));ruleCtx.reporter.addIssue(issue,ruleCtx)};Rule.prototype._getOjSelectors=function(rule){var sels,sel,a,c,i,j,ret=[];if(!(rule.prelude&&rule.prelude.children)||rule.prelude.type!=="SelectorList"){return ret}a=rule.prelude.children;for(i=0;i<a.length;i++){sels=a[i];if(sels.type==="Selector"){c=sels.children;for(j=0;j<c.length;j++){sel=c[j];if(sel.type===CLASS_SELECTOR&&this._metaLib.isJetStylePrefix(sel.name)||sel.type===TYPE_SELECTOR&&this._metaLib.isJetTag(sel.name)){ret.push(sel.name);ret.push(sel.type);ret.push(sel.loc)}else if(sel.type===PSEUDO_CLASS_SELECTOR){this._evalPseudoClassSelector(sel,ret,sel.name)}}}}return ret};Rule.prototype._evalPseudoClassSelector=function(sel,a,pseudo){var c,o,l,e,i,j;c=sel.children;if(!c){return}for(i=0;i<c.length;i++){o=c[i];if(o.type==="Selector"){l=o.children;if(l){for(j=0;j<l.length;j++){e=l[j];if(e.type===CLASS_SELECTOR&&this._metaLib.isJetStylePrefix(e.name)||e.type===TYPE_SELECTOR&&this._metaLib.isJetTag(e.name)){if(!_checkNotClasses(e.name)){a.push(e.name);a.push(e.type);a.push(e.loc)}}}}continue}else{if(o.type!==SELECTOR_LIST){continue}}this._evalPseudoClassSelector(o,a,pseudo)}};Rule.prototype._OkSel=function(sel){if(this._checkList){for(let i=0;i<this._checkList.length;i++){if(this._checkList[i].test(sel)){return this._isAccept}}return!this._isAccept}return true};Rule.prototype._checkAcceptReject=function(regCtx){var accept=regCtx.ruleOpts["accept"];var reject=regCtx.ruleOpts["reject"];if(accept||reject){if(accept&&reject){regCtx.utils.msgLib.error(`Rule ${RULE_NAME}: options 'accept' and 'reject' are mutually exclusive`);return false}if(accept){this._checkList=accept;this._isAccept=true}else{this._checkList=reject}if(!Array.isArray(this._checkList)){regCtx.utils.msgLib.error(`Rule ${RULE_NAME}: option '${accept?"accept":"reject"}' is not an array`);return false}for(let i=0;i<this._checkList.length;i++){if(typeof this._checkList[i]==="string"){this._checkList[i]=new RegExp(this._checkList[i].trim())}}}return true};function _isBuiltinOverride(sel){var i;if(OVERRIDE_LIST.includes(sel)){return true}for(i=0;i<OVERRIDE_LIST_PREFIX.length;i++){if(sel.startsWith(OVERRIDE_LIST_PREFIX[i])){return true}}return false};function _checkNotClasses(name){return NOT_CLASSES.includes(name)};module.exports=Rule;
|
|
@@ -1 +1,6 @@
|
|
|
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
|
+
*/
|
|
1
6
|
const RULENAME="oj-css-var-override";const DESCRIPTION="CSS Vars may be available for use on the client, but they cannot be overriden in this project.";const SHORT_DESCRIPTION="CSS Vars may be available for use on the client, but they cannot be overriden in this project.";const DECLARATION="Declaration";const VAR_PREFIX="--";const COLON=":";class Rule{getName(){return RULENAME}getDescription(){return DESCRIPTION}getShortDescription(){return SHORT_DESCRIPTION}register(regCtx){if(!this._checkRuleOptions(regCtx)){return false}return{"css-rule":this._onRule,"style":this._onStyle}}_onRule(ruleCtx,rule){var block,decl,issue,i;if(!(rule.prelude&&rule.prelude.children&&rule.prelude.children.length)){return}block=rule.block.children;for(i=0;i<block.length;i++){decl=block[i];if(decl.type===DECLARATION&&decl.property.startsWith(VAR_PREFIX)){if(this._okProp(decl)){issue=new ruleCtx.Issue(`CSS var '${decl.property}' should not be overridden`);ruleCtx.reporter.addIssue(issue,ruleCtx)}}}}_onStyle(ruleCtx,attr,attrVal){var csv,issue,i,x;for(i=0;i<attrVal.length;i++){csv=attrVal[i];if(csv.startsWith(VAR_PREFIX)){x=csv.indexOf(COLON);if(x>0){csv=csv.substring(2,x).trimRight();issue=new ruleCtx.Issue(`CSS var '${csv}' in 'style' attribute should not be overridden`);issue.setMsgKey(RULENAME+"_1");ruleCtx.reporter.addIssue(issue,ruleCtx)}}}}_okProp(decl){var cvar,list,i;cvar=decl.property;list=this._ignore||this._accept;if(!list){return true}for(i=0;i<list.length;i++){if(list[i].test(cvar)){return!!this._accept}}return!!this._accept}_checkRuleOptions(regCtx){var cvars,accept,ign,b;cvars=regCtx.ruleOpts["vars"];if(cvars){if(!regCtx.utils.utils.isObject(cvars)){regCtx.utils.msgLib.error(`Rule ${regCtx.ruleName} : option 'vars' is not an object`);this._fail=true;return false}accept=cvars.accept;ign=cvars.ignore;if(accept&&ign){regCtx.utils.msgLib.error(`Rule ${regCtx.ruleName} : option 'vars' - sub-properties 'accept' and 'ignore are mutually exclusive`);b=true}if(!b){if(accept){this._accept=this._getOptionVars(regCtx,"accept",accept)}else if(ign){this._ignore=this._getOptionVars(regCtx,"ignore",ign)}}}return this._fail?false:!b}_getOptionVars(regCtx,prop,val){var i;if(typeof val==="string"){val=[val]}else if(!Array.isArray(val)){return null}for(i=0;i<val.length;i++){if(typeof val[i]==="string"){try{val[i]=new RegExp(val[i])}catch(e){regCtx.utils.msgLib.error(`Rule ${regCtx.ruleName} '${prop}' : invalid reg. expression '${val[i]}' at position ${i}`);this._fail=true}}}return this._fail?null:val}}module.exports=Rule;
|
|
@@ -0,0 +1,6 @@
|
|
|
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 RULE_NAME="oj-form-maxcols";const DESCRIPTION="Prior to JET 10.0.0, maxColumns in 'row' direction was not responsive, so that the "+"number of columns was exactly equal to maxColumns. In JET 10.0.0 and later, maxColumns "+"<b>is</b> responsive, so that the actual number of columns may now be less, depending on the "+"space available to the form.<br>If the app needs to preserve the old fixed-columns behavior, "+"then it should remove any 'max-columns' attribute (which is deprecated in dynamic UI 10.0.0) "+"from <oj-dynamic-form>, and set the new 'columns' property in the layout.";const SHORT_DESCRIPTION="The 'max-columns' attribute for <oj-dynamic-form>, or the 'maxColumns' property for layout, may have a behavioral change in JET 10.0.0.";var path;const LAYOUT_JSON="layout.json";const FORM="form";const LAYOUTS="layouts";const DYN_FORM="oj-dynamic-form";const MAX_COLUMNS="max-columns";const COLUMN="column";const DIRECTION="direction";const ID="id";const SEV_CRITICAL="critical";const ISSUE="<@tag@id> with 'max-columns' may have a behavior change in JET 10.0.0.";class Rule{getName(){return RULE_NAME}getDescription(){return DESCRIPTION}getShortDescription(){return SHORT_DESCRIPTION}register(){path=require("path");return{"json":this._onJson,"ojtag":this._onTag}}_onJson(ruleCtx){var json,layouts,name,obj,layouts,layout,olayouts,issue,pos;if(path.basename(ruleCtx.filepath)!==LAYOUT_JSON){return}json=ruleCtx.suppData.obj;if(ruleCtx.suppData.msg){if(!ruleCtx.rulePack.isRuleEnabled("oj-json-syntax","JET")){issue=new ruleCtx.Issue(ruleCtx.suppData.msg);issue.setPosition(ruleCtx.suppData.line,ruleCtx.suppData.col,ruleCtx.suppData.position,ruleCtx.suppData.position+3);issue.setMsgKey(RULE_NAME+"_2");issue.setSeverity(SEV_CRITICAL);ruleCtx.reporter.addIssue(issue,ruleCtx);return}}if(!(layouts=json.layouts)){return}for(name in layouts){obj=layouts[name];if(obj.layoutType!==FORM){continue}if(!(olayouts=obj.layouts)){continue}for(layout in olayouts){obj=olayouts[layout];if(obj.layoutType===FORM&&obj.layout){if(obj.layout.maxColumns>1){if(!obj.layout.columns||obj.layout.direction!==COLUMN){issue=new ruleCtx.Issue(`layout '${name}' : '${layout}' with maxColumns may have behavior change in JET 10.0.x.`);if(pos=_getPos(ruleCtx.suppData.ast,name,layout)){issue.setPosition(pos.row,pos.col,pos.start,pos.end)}issue.setMsgKey(RULE_NAME+"_1");ruleCtx.reporter.addIssue(issue,ruleCtx)}}}}}}_onTag(ruleCtx,tag){if(tag===DYN_FORM){if(_isGT(_getTagAttr(ruleCtx,MAX_COLUMNS),1)&&_getTagAttr(ruleCtx,DIRECTION)!==COLUMN){let id=_getTagAttr(ruleCtx,ID);id=id?" id='"+id+"'":"";let msg=ISSUE.replace("@tag",tag).replace("@id",id);let issue=new ruleCtx.Issue(msg);let pos=ruleCtx.utils.DomUtils.getAttrPosition(ruleCtx.data,ruleCtx.node,MAX_COLUMNS);issue.setPosition(pos.row,pos.col,pos.start,pos.end);ruleCtx.reporter.addIssue(issue,ruleCtx)}}}}function _getLayout(member,name,layoutName){var layouts,mems,mem,lo,ar,i,j,k;layouts=member.value.members;for(i=0;i<layouts.length;i++){if(layouts[i].name===name){lo=layouts[i];if(lo.value&&lo.value.type==="Object"){mems=lo.value.members;if(mems){for(j=0;j<mems.length;j++){mem=mems[j];if(mem.name===LAYOUTS){if(mem.value.type==="Object"){ar=mem.value.members;for(k=0;k<ar.length;k++){if(ar[k].name===layoutName){return ar[k]}}}}}}}}}};function _getPos(ast,name,layoutName){var members,member,layout,mems,pos,i,j;members=ast.members;for(i=0;i<members.length;i++){member=members[i];if(member.name===LAYOUTS&&member.value){if(layout=_getLayout(member,name,layoutName)){if(layout&&layout.value&&layout.value.type==="Object"){mems=layout.value.members;for(j=0;j<mems.length;j++){if(mems[j].name==="layout"){pos=mems[j].pos;return{row:pos.row,col:pos.col,start:pos.index,end:pos.index+layoutName.length}}}}}}}return null};function _getTagAttr(ruleCtx,attr){var attrs=ruleCtx.tagNode.attribs;return attrs?attrs[attr]:null}function _isGT(val,n){val=parseInt(val);return!isNaN(val)&&val>n}module.exports=Rule;
|
|
@@ -1 +1,6 @@
|
|
|
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
|
+
*/
|
|
1
6
|
const RULE_NAME="oj-html-5-attr-obs";const POSSIBLE_CONFORMING_ATTRS={"border":["img"],"charset":["script"],"language":["script"],"type":["script","style"],"name":["a"],"maxlength":["input"],"size":["input"]};function getName(){return RULE_NAME};function getShortDescription(){return"HTML5 obsolete attributes must not be used"};function getDescription(){return"HTML5 obsolete attributes must not be used."};function register(){return{"tag":_handleTag}};function _handleTag(ruleCtx,tagName){var attribs,attrName,attrValue,issue,attrPos,possibleConformingAttr;attribs=ruleCtx.node.attribs;if(!attribs){return}for(attrName in attribs){issue=null;attrName=attrName.charAt(0)!==":"?attrName:attrName.substring(1);possibleConformingAttr=_isPossibleConformingAttr(attrName);if(ruleCtx.utils.DomUtils.isHtml5ObsoleteAttr(tagName,attrName)){attrValue=attribs[attrName];if(_isConformingException(tagName,attrName,attrValue,attribs)){continue}issue=new ruleCtx.Issue("Attribute '"+attrName+"' is obsolete "+(possibleConformingAttr?"(but conforming) ":"")+"for <"+tagName+"> in HTML5")}else if(possibleConformingAttr){if(!_isConformingException(tagName,attrName,attrValue,attribs)){issue=new ruleCtx.Issue("Attribute '"+attrName+"' is obsolete but conforming <"+tagName+"> in HTML5")}}if(issue){attrPos=ruleCtx.utils.DomUtils.getAttrPosition(ruleCtx.data,ruleCtx.node,attrName);issue.setPosition(attrPos.row,attrPos.col,attrPos.start,attrPos.end);issue.setMsgKey(RULE_NAME+(possibleConformingAttr?"_2":"_1"));ruleCtx.reporter.addIssue(issue,ruleCtx)}}};function _isConformingException(tagName,attrName,attrValue,attribs){var ret=false;if(tagName==="a"&&attrName==="name"){ret=_checkAnchor(attrValue,attribs)}else if(tagName==="img"&&attrName==="border"){ret=_checkImg(attrValue)}else if(tagName==="script"){if(attrName==="language"){ret=_checkScriptLanguage(attrValue,attribs)}else if(attrName==="charset"){ret=_checkScriptCharSet(attrValue,attribs)}}else if(tagName==="style"&&attrName==="type"){ret=_checkStyleType(attrValue,attribs)}return ret};function _checkAnchor(nameValue,attribs){var Id;if(nameValue==="")return true;Id=attribs.id;if(Id&&nameValue===Id)return true;return false};function _checkImg(borderValue){return borderValue==="0"};function _checkScriptLanguage(languageValue,attribs){if(languageValue.toLowerCase()==="javascript"){return!attribs.type||attribs.type.toLowerCase()==="text/javascript"}return true};function _checkScriptCharSet(charSetValue,attribs){return charSetValue.toLowerCase()==="utf-8"};function _checkStyleType(typeValue,attribs){return typeValue.toLowerCase()==="text/css"};function _isPossibleConformingAttr(attrName){};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
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
|
+
*/
|
|
1
6
|
const RULE_NAME="oj-html-5-tag-obs";function getName(){return RULE_NAME};function getShortDescription(){return"HTML5 obsolete elements must not be used"};function getDescription(){return"HTML5 obsolete elements must not be used."};function register(){return{"tag":_handleTag}};function _handleTag(ruleCtx,tagName){if(ruleCtx.utils.DomUtils.isHtml5ObsoleteElem(tagName)){var issue=new ruleCtx.Issue("Element <"+tagName+"> is obsolete in HTML5");ruleCtx.reporter.addIssue(issue,ruleCtx)}};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
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
|
+
*/
|
|
1
6
|
const RULE_NAME="oj-html-attr-$unique";const $UNIQUE="$unique";const ID="id";const DATABIND="data-bind";const ATTR="attr";const EXPLAIN="When generating or referencing element IDs in web components, $uniqueId should be used in preference to $unique to guarantee stable UI's for testing.";function getName(){return RULE_NAME};function getShortDescription(){return"Use $uniqueid instead of $unique in Knockout and web component syntax"};function getDescription(){return EXPLAIN};function register(){return{"attr":_handleAttr}};function _handleAttr(ruleCtx,attrName,attrValue){var tagName,issue;tagName=ruleCtx.tag;if(attrName===DATABIND&&attrValue.startsWith(ATTR)){if(_is$Unique(attrValue)){issue=new ruleCtx.Issue("<"+tagName+"> data-bind attribute uses $unique. "+EXPLAIN);issue.setMsgKey(RULE_NAME+"_1");ruleCtx.reporter.addIssue(issue,ruleCtx)}return}if(_is$Unique(attrValue)){issue=new ruleCtx.Issue("<"+tagName+"> - found use of $unique. "+EXPLAIN);issue.setMsgKey(RULE_NAME+"_2");ruleCtx.reporter.addIssue(issue,ruleCtx)}};function _is$Unique(s){var x,end,isIssue=false;x=s.indexOf($UNIQUE);if(x>=0){if(s.length>=x+$UNIQUE.length+ID.length){end=s.substr(x+$UNIQUE.length,2).toLowerCase();if(end!==ID){isIssue=true}}else{isIssue=true}}return isIssue};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
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
|
+
*/
|
|
1
6
|
const RULE_NAME="oj-html-attr-2def";const DOUBLE_BRACE="{{";const DOUBLE_BRACKET="[[";const EXEMPT=["style","class"];const EXPLAIN="A tag should not contain both an attribute and a colon-prefixed attribute of the same name."+"<p>For example:<p>"+"<div id=\"id1\" :id=\"[[mydiv]]\">";function getName(){return RULE_NAME};function getShortDescription(){return"Check tag does not contain an attribute and a colon-prefixed attribute of the same name"};function getDescription(){return EXPLAIN};function register(){return{"elem":_fnTags}};function _fnTags(ruleCtx,tagName){var attribs,attr,attr2,a,attrPos,issue;attribs=ruleCtx.node.attribs;for(attr in attribs){if(attr.charAt(0)===":"||EXEMPT.includes(attr)){continue}attr2=":"+attr;for(a in attribs){if(a===attr2){issue=new ruleCtx.Issue("<"+tagName+"> contains attributes '"+attr+"' and '"+attr2+"'");attrPos=ruleCtx.utils.DomUtils.getAttrPosition(ruleCtx.data,ruleCtx.node,attr);issue.setPosition(attrPos.row,attrPos.col,attrPos.start,attrPos.end);ruleCtx.reporter.addIssue(issue,ruleCtx)}}}};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
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 RULE_NAME="oj-html-attr-json";const DOUBLE_BRACE="{{";const DOUBLE_BRACKET="[[";const EXPLAIN="When defining a JSON string as an attribute value for a component tag, the JSON must be valid. Expressions enclosed by [[ ]] or {{ }} are not validated."+"<p>"+"When defining a JSON string as an attribute value, the JSON property names (and values where appropriate) must be enclosed with double quotes. "+"This requires that the entire JSON string be delimited with single quotes<br>. For example:<br>"+"<i>options-keys=\"{'label': 'email', 'value': 'id'}\"</i> is invalid, and should be specified as "+"<i>options-keys='{\"label\": \"email\", \"value\": \"id\"}'</i>.<p>"+"Note: this does not apply when an expression is enclosed within [[ ]] or {{ }}, so these are valid:<br>"+"options-keys='[[ {label: 'email', value: 'id'} ]]'<br>"+"options-keys='[[ {label: \"email\", value: \"id\"} ]]'";function getName(){return RULE_NAME};function getShortDescription(){return"Check attribute for starting quote and containing well formed json"};function getDescription(){return EXPLAIN};function register(){return{"webcomp":_onWComp}};function _onWComp(ruleCtx,tag){var attrs,attr;if(ruleCtx.tagNode.attribs){attrs=ruleCtx.tagNode.attribs;for(attr in attrs){_checkAttr(ruleCtx,tag,attr,attrs[attr])}}};function _checkAttr(ruleCtx,tag,attr,attrValue){var rc,issue,val,attrRawVal,start;val=attrValue.replace(/^\s+/g,"");start=val.charAt(0);if(start!=="{"&&start!=="["||_isExprStart(attrValue)||attr=="data-bind"){return}rc=ruleCtx.utils.DomUtils.isValidJson(attrValue);if(typeof rc==="string"){attrRawVal=ruleCtx.utils.DomUtils.getAttribRawValue(ruleCtx,attr);if(attrRawVal.charAt(0)!=="'"){issue=new ruleCtx.Issue("<"+tag+"> attribute '"+attr+"' containing JSON must be delimited with single-quotes.");issue.setMsgKey(RULE_NAME+"_1")}else{issue=new ruleCtx.Issue("<"+tag+"> attribute '"+attr+"' JSON error : ("+rc+")");issue.setMsgKey(RULE_NAME+"_2")}}if(issue){let attrPos=ruleCtx.utils.DomUtils.getAttrPosition(ruleCtx.data,ruleCtx.tagNode,attr);issue.setPosition(attrPos.row,attrPos.col,attrPos.start,attrPos.end);ruleCtx.reporter.addIssue(issue,ruleCtx)}};function _isExprStart(attrValue){return attrValue.startsWith(DOUBLE_BRACKET)||attrValue.startsWith(DOUBLE_BRACE)};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
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 isValidAttr=require("./helpers/valid-attr");const RULE_NAME="oj-html-attr-prefix-expr";const COLON=":";const STYLE="style";const STYLE_DOT="style.";const CLASS="class";const TYPE="type";const ON_OJ_EVENT="on-oj-";function getName(){return RULE_NAME};function getShortDescription(){return"Colon-prefixed attribute should specify a '[[...]]' or '{{...}}' expression."};function getDescription(){return"Attributes prefixed with the late-binding indicator <b>':'</b?, should refer to a read-only expression <b>'[[. . .]]'</b>, or a read-write expression '{{. . .}}'</b>."};function register(){return{"elem":_onElem}};function _onElem(ruleCtx,tag){var attrs,attr,val;if(ruleCtx.tagNode.attribs){attrs=ruleCtx.tagNode.attribs;for(attr in attrs){if(attr.charAt(0)===COLON&&typeof(val=attrs[attr])==="string"){attr=attr.substring(1);if(attr===CLASS||attr===TYPE||attr.startsWith(ON_OJ_EVENT)){continue}if(attr===STYLE||attr.startsWith(STYLE_DOT)){continue}if(!isValidAttr(attr)){continue}_checkAttr(ruleCtx,tag,":"+attr,val)}}}};function _checkAttr(ruleCtx,tag,attr,attrValue){let val=attrValue.trim();if(!val.startsWith("{{")&&!val.startsWith("[[")){let issue=new ruleCtx.Issue(`Colon-prefixed attribute '${attr}' is not a read-only '[[...]]', or read-write '{{...}} expression`);let attrPos=ruleCtx.utils.DomUtils.getAttrPosition(ruleCtx.data,ruleCtx.tagNode,attr);issue.setPosition(attrPos.row,attrPos.col,attrPos.start,attrPos.end);ruleCtx.reporter.addIssue(issue,ruleCtx)}};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
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
|
+
*/
|
|
1
6
|
const RULE_NAME="oj-html-attr-prefix-ro";function getName(){return RULE_NAME};function getShortDescription(){return"Colon-prefixed attribute should specify a non-RW expression."};function getDescription(){return"Attributes prefixed with the late-binding indicator <b>':'</b?, should refer to a read-only expression <b>'[[. . .]]'</b> in preference to '{{. . .}}'</b>. "+"Although use of the form '{{...}}' is functional, it is misleading to use a read/write expression that can only be read-only."};function register(){return{"attrexpr":_fnAttr}};function _fnAttr(ruleCtx,attrName,attrValue){var issue,attrPos;if(attrName.charAt(0)===":"&&typeof attrValue==="string"){if(attrValue.trim().startsWith("{{")){issue=new ruleCtx.Issue("Colon-prefixed attribute '"+attrName+"' should use read-only '[[...]]' in preference to '{{...}}'");attrPos=ruleCtx.utils.DomUtils.getAttrPosition(ruleCtx.data,ruleCtx.tagNode,attrName);issue.setPosition(attrPos.row,attrPos.col,attrPos.start,attrPos.end);ruleCtx.reporter.addIssue(issue,ruleCtx)}}};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
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
|
+
*/
|
|
1
6
|
const RULE_NAME="oj-html-attr-req";const SHORT_DESCR="Check that a webcomponent element contains all mandatory attributes";const LONG_DESCR="A Web Component attribute which is mandatory, must be declared on the web component element.";const DOUBLE_BRACE="{{";const DOUBLE_BRACKET="[[";function getName(){return RULE_NAME};function getShortDescription(){return SHORT_DESCR};function getDescription(){return LONG_DESCR};function register(){return{webcomp:_fnTag}};function _fnTag(ruleCtx,tagName){var node,req,attribs,attrib,attrReq,sub,val,i,x,tmp,issue,n,found;req=ruleCtx.utils.metaLib.getRequiredAttrs(tagName);if(!req||!req.length){return}node=ruleCtx.tagNode;if(!ruleCtx.utils.utils.hasAnyProps(node.attribs)){if(req.length){val=req.length+" required attribute"+(req.length>1?"s":"")+": ";for(i=0;i<req.length;i++){val+=i?", ":"";val+="'"+req[i]+"'"}val+=" missing on <"+tagName+">";issue=new ruleCtx.Issue(val)}ruleCtx.reporter.addIssue(issue,ruleCtx);return}attribs=node.attribs;n=0;for(i=0;i<req.length;i++){attrReq=req[i];found=false;for(attrib in attribs){attrib=attrib.charAt(0)===":"?attrib.substring(1):attrib;if(attrib===attrReq){n++;found=true;break}}if(n===req.length){return}if(found){continue}tmp=attrReq;while((x=tmp.lastIndexOf("."))>0){sub=tmp=tmp.substring(0,x);val=_isAttrMatch(node.attribs,sub);if(val){if(_isExpr(val)){return}if(_isJson(val)){if(_resolveWithObj(attrReq,sub,val)){return}}else{break}}}issue=new ruleCtx.Issue(`Required attribute '${attrReq}' is missing on <${tagName}>`);issue._msgEx={reqAttr:attrReq};ruleCtx.reporter.addIssue(issue,ruleCtx)}};function _isAttrMatch(attribs,attr){var attrib,ret=false;for(attrib in attribs){attrib=attrib.charAt(0)===":"?attrib.substring(1):attrib;if(attrib===attr){ret=attribs[attrib];break}}return ret};function _resolveWithObj(attrReq,sub,json){var obj,prop;try{obj=JSON.parse(json);for(prop in obj){if(attrReq===sub+"."+prop)return true}}catch(e){}return false};function _isExpr(s){s=s.trim();return s.startsWith("[[")||s.startsWith("{{")};function _isJson(s){var start=s.charAt(0);return(start==="{"||start!=="[")&&!_isExprStart(s)};function _isExprStart(s){return s.startsWith(DOUBLE_BRACKET)||s.startsWith(DOUBLE_BRACE)};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
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
|
+
*/
|
|
1
6
|
const RULE_NAME="oj-html-bindforeach-data";const SHORT_DESCRIPT="The 'data' attribute of an <oj-bind-for-each> must be a '[[...]]' expression";const LONG_DESCRIPT="The 'data' attribute of an <oj-bind-for-each> tag must be a '[[...]]' expression and not a literal.";const TAGNAME="oj-bind-for-each";const ATTRNAME="data";const PREFIX_ATTRNAME=":data";const PREFERRED="preferred";const EXPECTED="expected";const MSG="<oj-bind-for-each> 'data' attribute : read-only '[[...]]' expression ";var what;function getName(){return RULE_NAME};function getShortDescription(){return SHORT_DESCRIPT};function getDescription(){return LONG_DESCRIPT};function register(){return{ojtag:_fnTag}};function _fnTag(ruleCtx,tagName){var attribs,val,valType,attrName,attrPos,issue;if(tagName!==TAGNAME){return}if(ruleCtx.tagNode.attribs){attribs=ruleCtx.tagNode.attribs;val=attribs[ATTRNAME];valType=typeof val;if(valType!=="undefined"){attrName=ATTRNAME}else{val=attribs[PREFIX_ATTRNAME];valType=typeof val;if(valType!=="undefined"){attrName=PREFIX_ATTRNAME}}if(valType==="undefined"){issue=new ruleCtx.Issue("<oj-bind-for-each> 'data' attribute missing");ruleCtx.reporter.addIssue(issue,ruleCtx);return}if(valType==="string"&&val.startsWith("[[")){return}what=valType==="string"&&val.startsWith("{{")?PREFERRED:EXPECTED;issue=new ruleCtx.Issue(MSG+what);attrPos=ruleCtx.utils.DomUtils.getAttrPosition(ruleCtx.data,ruleCtx.tagNode,attrName);issue.setPosition(attrPos.row,attrPos.col,attrPos.start,attrPos.end);if(what===PREFERRED){issue.setSeverity("minor")}ruleCtx.reporter.addIssue(issue,ruleCtx)}};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
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
|
+
*/
|
|
1
6
|
const RULE_NAME="oj-html-bindif-test";const SHORT_DESCRIPT="'test' attribute of an <oj-bind-if> must be a '[[...]]' expression";const LONG_DESCRIPT="The 'test' attribute of an <oj-bind-if> tag must be a '[[...]]' expression and not a literal.";const TAGNAME="oj-bind-if";const ATTRNAME="test";const PREFIX_ATTRNAME=":test";const PREFERRED="preferred";const EXPECTED="expected";const MSG="<oj-bind-if> 'test' attribute : read-only '[[...]]' expression ";function getName(){return RULE_NAME};function getShortDescription(){return SHORT_DESCRIPT};function getDescription(){return LONG_DESCRIPT};function register(){return{ojtag:_fnTag}};function _fnTag(ruleCtx,tagName){var attribs,val,valType,attrName,attrPos,issue,what;if(tagName!==TAGNAME){return}if(ruleCtx.tagNode.attribs){attribs=ruleCtx.tagNode.attribs;val=attribs[ATTRNAME];valType=typeof val;if(valType!=="undefined"){attrName=ATTRNAME}else{val=attribs[PREFIX_ATTRNAME];valType=typeof val;if(valType!=="undefined"){attrName=PREFIX_ATTRNAME}}if(valType==="undefined"){issue=new ruleCtx.Issue("<oj-bind-if> 'test' attribute missing");ruleCtx.reporter.addIssue(issue,ruleCtx);return}if(valType==="string"){if(val.startsWith("[[")||val==="true"||val==="false"){return}what=val.startsWith("{{")?PREFERRED:EXPECTED}issue=new ruleCtx.Issue(MSG+what);attrPos=ruleCtx.utils.DomUtils.getAttrPosition(ruleCtx.data,ruleCtx.tagNode,attrName);issue.setPosition(attrPos.row,attrPos.col,attrPos.start,attrPos.end);if(what===PREFERRED){issue.setSeverity("minor")}ruleCtx.reporter.addIssue(issue,ruleCtx)}};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
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
|
+
*/
|
|
1
6
|
const RULE_NAME="oj-html-binding-attr";const SHORT_DESCRIPT="JET binding elements should not use global attributes";const LONG_DESCRIPT="The binding elements in JET (e.g. <b><i>oj-bind-for-each</i></b>, <b><i>oj-bind-if</i></b>, <b><i>oj-bind-slot</i></b>, <b><i>oj-bind-text</i></b>) are run through "+"a preprocessor and replaced with comment nodes when bindings are applied. As a result, the global HTML "+"attributes which are typically supported on all elements (e.g. <i>style</i>, <i>id</i>, etc.) are meaningless when applied "+"to binding elements.";function getName(){return RULE_NAME};function getShortDescription(){return SHORT_DESCRIPT};function getDescription(){return LONG_DESCRIPT};function register(){return{"ojtag":_handleTag}};function _handleTag(ruleCtx,tagName){var attribs,attrib,issue,attrPos;if(!ruleCtx.utils.metaLib.isBindingTag(tagName)){return}attribs=ruleCtx.node.attribs;if(!attribs){return}for(attrib in attribs){if(ruleCtx.utils.DomUtils.isCommonAttr(attrib)||attrib.startsWith("aria")){issue=new ruleCtx.Issue("Use of attribute '"+attrib+"' is meaningless for binding element <"+tagName+">");attrPos=ruleCtx.utils.DomUtils.getAttrPosition(ruleCtx.data,ruleCtx.node,attrib);issue.setPosition(attrPos.row,attrPos.col,attrPos.start,attrPos.end);ruleCtx.reporter.addIssue(issue,ruleCtx)}}};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
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
|
+
*/
|
|
1
6
|
function getName(){return"oj-html-cca-count"};function getShortDescription(){return"Pages should not use an excessive number of web components"};function getDescription(){return"For optimal performance, a page should not contain an excessive number of web components, since this can negatively affect the loading time of the page. Refer to the Oracle JET Toolkit Documention, section \"Add Performance Optimization to an Oracle JET Application\""+"<br>The threshold values are defined in the options for rule 'oj-html-cca-count'."};function register(regCtx){return _getOptionCounts(regCtx)?{"file":_onFile}:false};function _onFile(ruleCtx){var thresholds=ruleCtx.rulePack.getRuleOption("thresholds");var threshCount=thresholds?thresholds.$total:0;var tags=ruleCtx.utils.DomUtils.getComponentElems();var compCount=0;var tagName,issue;thresholds=typeof threshCount==="number"?thresholds:0;for(tagName in tags){tagName=tags[tagName].name;if(tagName.toLowerCase().startsWith("oj-")){if(tagName!=="oj-option"&&tagName!=="oj-label"){compCount++}}}for(tagName in thresholds){_checkComponentThreshold(ruleCtx,tags,thresholds,tagName)}if(threshCount&&compCount>threshCount){issue=new ruleCtx.Issue("Performance - page exceeds recommended threshold count ("+threshCount+") of web components by "+(compCount-threshCount));ruleCtx.reporter.addIssue(issue,ruleCtx)}};function _checkComponentThreshold(context,tags,thresholds,tagName){var tagThreshold,tagCount,issue;if(tagName!=="$total"){tagThreshold=thresholds[tagName];if(tagThreshold!==undefined){tagCount=_count(tags,tagName);if(tagCount>tagThreshold){issue=new context.Issue("Page exceeds recommended web component threshold count for <"+tagName+"> ("+tagThreshold+") by "+(tagCount-tagThreshold));context.reporter.addIssue(issue,context)}}}};function _count(tags,tagName){var count=0,regex;if(tagName.indexOf("*")>=0){regex=new RegExp("^"+tagName.split("*").join(".*")+"$");tags.forEach(function(x){count+=regex.test(x.name)?1:0})}else{tags.forEach(function(x){count+=x.name===tagName?1:0})}return count};function _getOptionCounts(regCtx){var opts,prop,total=0;opts=regCtx.ruleOpts.thresholds;if(opts&&typeof opts==="object"){for(prop in opts){total+=opts[prop]}}return total};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
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 RULE_NAME="oj-html-cca-tagname";const SHORT_DESCRIPT="Web component element names must be defined";const LONG_DESCRIPT="This web component is unknown. Component element names must be defined by associated component.json metadata. Check spelling or review the component.json. This may also occur because the component makes use of an unregistered namespace, or because the metadata has not been declared to JAF via the configuration property 'components'.";const IGNORE_LIST=["oj-slot","oj-dynamic-form"];function getName(){return RULE_NAME};function getShortDescription(){return SHORT_DESCRIPT};function getDescription(){return LONG_DESCRIPT};function register(){return{"tag":_handleTag,"ojtag":_handleTag}};function _handleTag(ruleCtx,tagName){if(ruleCtx.utils.DomUtils.isCommonElem(tagName)||ruleCtx.utils.DomUtils.isHtml5ObsoleteElem(tagName)||tagName==="template"||_isSvg(ruleCtx,tagName)){return}if(!ruleCtx.utils.metaLib.isWCTag(tagName)&&!IGNORE_LIST.includes(tagName)){if(ruleCtx.type==="ojtag"&&ruleCtx.utils.DomUtils.isNamespaceTag(tagName)){return}let b=tagName.includes("-");let s=b?"web component":"tag";var issue=new ruleCtx.Issue(`<${ruleCtx.tag}> is not a known ${s}`);if(b){issue.setMsgKey(RULE_NAME+"_1")}ruleCtx.reporter.addIssue(issue,ruleCtx)}};function _isSvg(ruleCtx,elem){var ret=false,n;if(elem==="svg"){return true}if(ruleCtx.utils.DomUtils.isSvgElem(elem)){n=ruleCtx.tagNode;while(n){n=n.parent;if(!n){break}if(n.name&&n.name==="svg"){ret=true;break}}}return ret};module.exports={getName,getDescription,getShortDescription,register};
|
package/rules/jet/oj-html-cdn.js
CHANGED
|
@@ -1 +1,6 @@
|
|
|
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
|
+
*/
|
|
1
6
|
const RULE_NAME="oj-html-cdn";const LONG_DESCRIPT="For improved performance, production status pages referred to in <b><i><link></i></b> or <b></i><script></i></b> elements should load from the Content Delivery Network (<b>CDN</b>).";const SHORT_DESCRIPT="Production status pages should preferably load from the CDN.";function getName(){return RULE_NAME};function getShortDescription(){return SHORT_DESCRIPT};function getDescription(){return LONG_DESCRIPT};function register(){return{"script":_handle,"link":_handle}};function _handle(ruleCtx,tagName){var attribs=ruleCtx.tagNode.attribs;var url,issue;if(attribs){if(attribs.src){url=attribs.src}else if(attribs.href){url=attribs.href}if(url){if(url.toLowerCase().indexOf("/cdn/jet/v")>=0){issue=new ruleCtx.Issue("Performance: <"+tagName+"> does not refer to the Content Delivery Network (CDN)");ruleCtx.reporter.addIssue(issue,ruleCtx)}}}};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
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
|
+
*/
|
|
1
6
|
const RULENAME="oj-html-combo-converter";const SHORT_DESCRIPTION="Starting in JET 10.0.0, oj-combobox-one/many will not apply the converter to format the display label of the dropdown items";const DESCRIPTION=SHORT_DESCRIPTION+" It will be the application's responsibility to provide option items with already-formatted labels, potentially by calling the converter instance directly.";const CONVERTER="converter";class Rule{getName(){return RULENAME}getDescription(){return DESCRIPTION}getShortDescription(){return SHORT_DESCRIPTION}register(){return{ojtag:this._onOjTag}}_onOjTag(ruleCtx,tag){var issue;if(!tag.startsWith("oj-combobox-")){return}let attribs=ruleCtx.tagNode.attribs;if(attribs[CONVERTER]){issue=new ruleCtx.Issue(`<${tag}> use of 'converter' - in 10.0.0 this will not format the display label of the dropdown items`);let attrPos=ruleCtx.utils.DomUtils.getAttrPosition(ruleCtx.data,ruleCtx.tagNode,CONVERTER);issue.setPosition(attrPos.row,attrPos.col,attrPos.start,attrPos.end);ruleCtx.reporter.addIssue(issue,ruleCtx)}}}module.exports=Rule;
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
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
|
+
var exprEval;const RULE_NAME="oj-html-cspexpr";const LONG="Expressions of this format are unsupported if the content_security_policy does not have an exception for unsafe eval";function getName(){return RULE_NAME};function getShortDescription(){return LONG};function getDescription(){return LONG};function register(regCtx){if(regCtx.runMode==="api"&®Ctx.VsCodeExtHint){if(exprEval){regCtx.decache(exprEval)}}exprEval=require("../../libext/expparser");exprEval=new exprEval;return{"attrexpr":_handle}};function _handle(ruleCtx,attrName,attrValue){var p,issue,msg;attrValue=attrValue.trim();if(attrName.charAt(0)===":"){attrName=attrName.substring(1)}if(_badExprDelims(attrValue)){issue=new ruleCtx.Issue("Attribute '"+attrName+"' has unmatched expression delimiters");issue.setMsgKey(RULE_NAME+"_1");ruleCtx.reporter.addIssue(issue,ruleCtx);return}attrValue=" "+attrValue.substring(2,attrValue.length-2).trimRight();try{p=exprEval.parse(attrValue)}catch(e){msg=_cleanUp(e.message);issue=new ruleCtx.Issue("Attribute '"+attrName+"' contains an expression that may not be compatible with all Content Security policies: "+msg);ruleCtx.reporter.addIssue(issue,ruleCtx)}};function _badExprDelims(expr){return expr.startsWith("[[")&&!expr.endsWith("]]")||expr.startsWith("{{")&&!expr.endsWith("}}")};function _cleanUp(msg){msg=msg.replace("character","attribute value position");return msg}module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
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
|
+
*/
|
|
1
6
|
const RULE_NAME="oj-html-databind-all";function getName(){return RULE_NAME};function getShortDescription(){return"Report usage of the 'data-bind' attribute on any element"};function getDescription(){return"Reports usage of the 'data-bind' attribute on any element"};function register(){return{"attr":function(ruleCtx,attrName,attrValue){if(attrName==="data-bind"){var issue=new ruleCtx.Issue("element <"+ruleCtx.tag+"> uses the 'data-bind' attribute.");ruleCtx.reporter.addIssue(issue,ruleCtx)}}}};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
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
|
+
*/
|
|
1
6
|
const RULE_NAME="oj-html-dlg-title";const SHORT_DESCR="Check that <oj-dialog> attribute is not specified";const LONG_DESCR="<oj-dialog> : 'title' attribute should not be used - use 'dialog-title' instead.";const OJ_DIALOG="oj-dialog";const MSG="<oj-dialog> attribute 'title' should be replaced with 'dialog-title'";function getName(){return RULE_NAME};function getShortDescription(){return SHORT_DESCR};function getDescription(){return LONG_DESCR};function register(){return{"ojtag":_fnTag}};function _fnTag(ruleCtx,tagName){if(tagName===OJ_DIALOG){let attribs,attrName;attribs=ruleCtx.tagNode.attribs;if(attribs){for(attrName in attribs){if(attrName==="title"||attrName===":title"){let issue=new ruleCtx.Issue(MSG);let attrPos=ruleCtx.utils.DomUtils.getAttrPosition(ruleCtx.data,ruleCtx.tagNode,attrName);issue.setPosition(attrPos.row,attrPos.col,attrPos.start,attrPos.end);ruleCtx.reporter.addIssue(issue,ruleCtx)}}}}};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2018, 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 RULE_NAME="oj-html-file-pick-accept";const DESCRIPTION="Valid array entries for the 'accept' attribute of <oj-file-picker> are:<p>"+"1) a file suffix beginning with a period, e.g. \".xxx\"<br>"+"2) an empty string<br>"+"3) an audio, video, or image file, e.g. \"image/*\" or \"audio/*\", or \"video/*\".";const SHORT_DESCRIPTION="Array entries for <oj-file-picker accept=' . . .'> attribute should be valid file strings.";const BASE_MSG="<oj-file-picker> attribute 'accept'";const FILE_PICKER="oj-file-picker";const ACCEPT="accept";const RO_EXPR="[[";const RW_EXPR="{{";const ARRAY_LEFT="[";const ARRAY_RIGHT="]";const GOOD_VALS=[".","audio/","video/","image/"];class Rule{getName(){return RULE_NAME}getDescription(){return DESCRIPTION}getShortDescription(){return SHORT_DESCRIPTION}register(){return{ojtag:this._onTag}}_onTag(ruleCtx,tag){if(tag===FILE_PICKER){let accept;accept=ruleCtx.tagNode.attribs;accept=accept?accept[ACCEPT]:null;if(accept){let avals=this._checkAttr(ruleCtx,accept);if(avals){this._checkArray(ruleCtx,avals)}}}}_emitIssue(ruleCtx,msgNum,info,val){var msg,issue;switch(msgNum){case 0:msg=`${BASE_MSG} is not an array of strings`;break;case 1:msg=`${BASE_MSG} syntax : ${info.msg} at index ${info.startIndex}`;break;case 2:msg=`${BASE_MSG} : invalid array entry \"${val}\"`;break;}if(msg){issue=new ruleCtx.Issue(msg);if(msgNum){issue.setMsgKey(RULE_NAME+"_"+msgNum)}let pos=ruleCtx.utils.DomUtils.getAttrPosition(ruleCtx.data,ruleCtx.node,ACCEPT);issue.setPosition(pos.row,pos.col,pos.start,pos.end);ruleCtx.reporter.addIssue(issue,ruleCtx)}}_checkArray(ruleCtx,avals){var v,i,j;for(i=0;i<avals.length;i++){v=avals[i];if(typeof v!=="string"){this._emitIssue(ruleCtx,2,null,v);continue}for(j=0;j<GOOD_VALS.length;j++){if(v.startsWith(GOOD_VALS[j])||v===""){break}}if(j>=GOOD_VALS.length){this._emitIssue(ruleCtx,2,i,v)}}}_checkAttr(ruleCtx,s){if(s.startsWith(RO_EXPR)||s.startsWith(RW_EXPR)){return}if(s.charAt(0)!==ARRAY_LEFT&&s.charAt(s.length-1)!==ARRAY_RIGHT){this._emitIssue(ruleCtx,0);return}let o=ruleCtx.utils.utils.parseJson(s,false);if(o.msg){this._emitIssue(ruleCtx,1,o);return}return o.obj}}module.exports=Rule;
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
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 RULENAME="oj-html-form-bindif";const DESCRIPTION="<oj-form-layout> is meant to have static content only. The use of <oj-bind-for-each> or <oj-bind-if> is not supported";const SHORT_DESCRIPTION="The use of <oj-bind-for-each> or <oj-bind-if> inside <oj-form-layout> is not supported";const OJ_BIND_IF="oj-bind-if";const OJ_BIND_FOR_EACH="oj-bind-for-each";const OJ_FORM_LAYOUT="oj-form-layout";class Rule{getName(){return RULENAME}getDescription(){return DESCRIPTION}getShortDescription(){return SHORT_DESCRIPTION}register(){return{ojtag:this._onElem}}_onElem(ruleCtx,tag){if(tag===OJ_FORM_LAYOUT){let node=ruleCtx.tagNode;let attribs=node.attribs;if(this._attrVal(attribs,"direction")!=="column"){let maxcol=this._attrVal(attribs,"max-columns");if(isNaN(maxcol)||maxcol>1){this._walkDomChildren(ruleCtx,node)}}}}_emit(ruleCtx,node){let issue=new ruleCtx.Issue(`<oj-form-layout> is meant to have static content only. The use of <${node.name}> is not supported`);issue.setPosition(null,null,node.startIndex+1,node.startIndex+node.name.length);ruleCtx.reporter.addIssue(issue,ruleCtx)}_walkDomChildren(ruleCtx,node){var ch,n,i,ok=true;;ch=node.children;if(ch){for(i=0;i<ch.length;i++){n=ch[i];if(n.type==="tag"){if(n.name===OJ_BIND_FOR_EACH){ok=false;this._emit(ruleCtx,n)}else if(n.name===OJ_BIND_IF){if(n.children&&n.children.length>1){ok=false;this._emit(ruleCtx,n)}}}}}return ok}_attrVal(attribs,attr){var v=attribs[attr];switch(attr){case"max-columns":v=parseInt(v);break;}return v}}module.exports=Rule;
|
|
@@ -0,0 +1,6 @@
|
|
|
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 RULE_NAME="oj-html-form-layout-maxcols";const DESCRIPTION="Prior to JET 10.0.0, maxColumns in 'row' direction was not responsive, so that the "+"number of columns was exactly equal to maxColumns. In JET 10.0.0 and later, maxColumns "+"<b>is</b> responsive, so that the actual number of columns may now be less, depending on the "+"space available to the form.<br>If the app needs to preserve the old fixed-columns behavior, "+"then the <oj-form-layout> 'max-columns' attribute should be replaced with the new "+"'columns' attribute.";const SHORT_DESCRIPTION="For <oj-form-layout>, the 'max-columns' attribute may have a behavioral change in JET 10.0.0.";const FORM_LAYOUT="oj-form-layout";const MAX_COLUMNS="max-columns";const COLUMNS="columns";const COLUMN="column";const DIRECTION="direction";const ISSUE="<oj-form-layout> with 'max-columns' may have a behavior change in JET 10.0.0.";class Rule{getName(){return RULE_NAME}getDescription(){return DESCRIPTION}getShortDescription(){return SHORT_DESCRIPTION}register(){return{"ojtag":this._onTag}}_onTag(ruleCtx,tag){if(tag===FORM_LAYOUT){if(_isGT(_getTagAttr(ruleCtx,MAX_COLUMNS),1)){if(!_hasTagAttr(ruleCtx,COLUMNS)||_getTagAttr(ruleCtx,DIRECTION)===COLUMN){let issue=new ruleCtx.Issue(ISSUE);let pos=ruleCtx.utils.DomUtils.getAttrPosition(ruleCtx.data,ruleCtx.node,MAX_COLUMNS);issue.setPosition(pos.row,pos.col,pos.start,pos.end);ruleCtx.reporter.addIssue(issue,ruleCtx)}}}}}function _hasTagAttr(ruleCtx,attr){var attrs=ruleCtx.tagNode.attribs;return attrs?attrs.hasOwnProperty(attr):false}function _getTagAttr(ruleCtx,attr){var attrs=ruleCtx.tagNode.attribs;return attrs?attrs[attr]:null}function _isGT(val,n){val=parseInt(val);return!isNaN(val)&&val>n}module.exports=Rule;
|
|
@@ -1 +1,6 @@
|
|
|
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
|
+
*/
|
|
1
6
|
const RULENAME="oj-html-form-noflex";const DESCRIPTION="Flex styling, as indicated by the 'oj-flex class', should only be applied in cases where the developer can then "+"indicate any managed child elements using the 'oj-flex-item' class. It cannot be applied to JET components "+"where the developer has no direct access to any child elements, for example, form controls. Doing so may "+"inadvertently interfere with the internal layout of those components.";const SHORT_DESCRIPTION="Flex styling, as indicated by the 'oj-flex' class, should only be applied in cases where the developer can then "+"indicate any managed child elements using the oj-flex-item class.";const FORM_CONTROLS=["oj-checkboxset","oj-radioset","oj-slider","oj-switch","oj-text-area"];class Rule{getName(){return RULENAME}getDescription(){return DESCRIPTION}getShortDescription(){return SHORT_DESCRIPTION}register(){return{ojtag:this._onOjTag}}_onOjTag(ruleCtx,tag){var attrs,clazz,flex;if(!_isFormControl(tag)){return}attrs=ruleCtx.node.attribs;if(attrs){clazz=attrs["class"];if(clazz){flex=_isOjFlex(clazz);if(flex){let issue=new ruleCtx.Issue(`"Form control <${tag}> should not use JET flex class '${flex}'`);let attrPos=ruleCtx.utils.DomUtils.getAttrPosition(ruleCtx.data,ruleCtx.tagNode,"class");issue.setPosition(attrPos.row,attrPos.col,attrPos.start,attrPos.end);ruleCtx.reporter.addIssue(issue,ruleCtx)}}}}}function _isOjFlex(clazz){var ar,attr,ret,i;ar=clazz.split(" ");for(i=0;i<ar.length;i++){attr=ar[i].trim();if(attr==="oj-flex"){ret=attr;break}}return ret};function _isFormControl(tag){return tag.startsWith("oj-input-")||tag.startsWith("oj-combobox-")||tag.startsWith("oj-label-")||tag.startsWith("oj-select-")||tag.startsWith("oj-color-")||FORM_CONTROLS.includes(tag)};module.exports=Rule;
|
|
@@ -0,0 +1,6 @@
|
|
|
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 RULENAME="oj-html-input-isodate";const DESCRIPTION="Date/time strings used in the 'value', 'min, and 'max' attributes of web components "+"<oj-input-date>, oj-input-date-time>, <oj-input-time>, <oj-date-picker>, and <oj-date-time-picker>, "+"must be valid ISO-8061 strings, and have the same format type - zulu, offset, or local. ";const SHORT_DESCRIPTION="Date/time strings used in the 'value', 'min, and 'max' attributes of <oj-date-*> and <oj-input-date-*>, "+"must have the same format type - zulu, offset, or local. ";const ISO_DATE_REGEXP=/^[+-]?\d{4}(?:-\d{2}(?:-\d{2})?)?(?:T\d{2}:\d{2}(?::\d{2}(?:\.\d{1,3})?)?(Z|[+-]\d{2}(?::?\d{2})?)?)?$|^T\d{2}:\d{2}(?::\d{2}(?:\.\d{1,3})?)?(Z|[+-]\d{2}(?::?\d{2})?)?$/;const TAGS=["oj-input-date","oj-input-date-time","oj-input-time","oj-date-picker","oj-date-time-picker"];class Rule{getName(){return RULENAME}getDescription(){return DESCRIPTION}getShortDescription(){return SHORT_DESCRIPTION}register(){return{ojtag:this._onOjTag}}_onOjTag(ruleCtx,tag){if(!TAGS.includes(tag)){return}let min,max,value;this._isErr=this._isValExpr=this._isMinExpr=this._isMaxExpr=false;value=_getAttrib(ruleCtx,"value");min=_getAttrib(ruleCtx,"min");max=_getAttrib(ruleCtx,"max");this._isValid(ruleCtx,value,min,max)}_isValid(ruleCtx,value,min,max){if(value){this._isValExpr=_isExpr(value);if(!this._isValExpr&&!ISO_DATE_REGEXP.test(value)){this._emitIssue(ruleCtx,"value",value,1)}}if(min){this._isMinExpr=_isExpr(min);if(!this._isMinExpr&&!ISO_DATE_REGEXP.test(min)){this._emitIssue(ruleCtx,"min",min,2)}}if(max){this._isMaxExpr=_isExpr(max);if(!this._isMaxExpr&&!ISO_DATE_REGEXP.test(max)){this._emitIssue(ruleCtx,"max",max,3)}}if(this._isErr){return}this._checkZone(ruleCtx,value,min,max);if(!this._isErr){this._isMinGtMax(ruleCtx,min,max);this._isTimeOnlyValue(ruleCtx,value,min,max)}}_checkZone(ruleCtx,value,min,max){var fmtValue,fmtMin,fmtMax,fmtErr;if(value&&!this._isValExpr){fmtValue=this._getISOStrFormatType(value);if(fmtValue===null){fmtErr="value"}}if(min&&!this._isMinExpr){fmtMin=this._getISOStrFormatType(min);if(fmtMin===null){fmtErr="min"}}if(max&&!this._isMaxExpr){fmtMax=this._getISOStrFormatType(max);if(fmtMax===null){fmtErr="max"}}if(fmtErr){this._emitIssue(ruleCtx,fmtErr,null,9);return}if(value&&fmtValue){if(min&&fmtMin&&max&&fmtMax&&!(fmtValue===fmtMin&&fmtValue===fmtMax)){this._emitIssue(ruleCtx,fmtValue,null,5)}else{if(min&&fmtMin&&!(fmtValue===fmtMin)){this._emitIssue(ruleCtx,fmtValue,null,6)}if(max&&fmtMax&&!(fmtValue===fmtMax)){this._emitIssue(ruleCtx,fmtValue,null,7)}}}if(min&&fmtMin&&max&&fmtMax&&!(fmtMin===fmtMax)){this._emitIssue(ruleCtx,fmtValue,fmtMax,8)}}_isTimeOnlyValue(ruleCtx,value,min,max){if(value&&!this._isValExpr&&value.startsWith("T")){if(min&&!this._isMinExpr&&!min.startsWith("T")){this._emitIssue(ruleCtx,"min",null,10)}if(max&&!this._isMaxExpr&&!min.startsWith("T")){this._emitIssue(ruleCtx,"max",null,10)}}}_isMinGtMax(ruleCtx,min,max){if(min&&!this._isMinExpr&&max&&!this._isMaxExpr){if(_compareISODates(max,min)<=0){this._emitIssue(ruleCtx,null,null,4)}}}_getISOStrFormatType(isoStr){let format=null;var exe=ISO_DATE_REGEXP.exec(isoStr);if(exe){if(exe[1]===undefined&&exe[2]===undefined){format="local"}else{let timeZone=exe[1]!==undefined?exe[1]:exe[2];format=timeZone==="Z"?"zulu":"offset"}}return format}_emitIssue(ruleCtx,str,val,id){var issue,attrPos;switch(id){case 1:case 2:case 3:issue=new ruleCtx.Issue(`Attrib '${str}' : Invalid ISO-8601 time/date string`);attrPos=ruleCtx.utils.DomUtils.getAttrPosition(ruleCtx.data,ruleCtx.node,str);issue.setPosition(attrPos.row,attrPos.col,attrPos.start,attrPos.end);break;case 4:issue=new ruleCtx.Issue(`min' attribute value is greater than 'max'`);break;case 5:issue=new ruleCtx.Issue(`'min' and 'max' must be same ISO string format as 'value' (${str})`);break;case 6:issue=new ruleCtx.Issue(`'min' must be same ISO string format as 'value' (${str})`);break;case 7:issue=new ruleCtx.Issue(`'max' must be same ISO string format as 'value' (${str}))`);break;case 8:issue=new ruleCtx.Issue(`'min' and 'max' must be same ISO string format. 'min'= ${str}, 'max'=${val}`);break;case 9:issue=new ruleCtx.Issue(`Error determining ISO string format of '${str}'`);break;case 10:issue=new ruleCtx.Issue(`value' is a time-only string, but '${str}' includes a date`);break;}if(issue){this._isErr=true;if(id>1){issue.setMsgKey(RULENAME+"_"+(id-1))}ruleCtx.reporter.addIssue(issue,ruleCtx)}}}function _isExpr(s){return s.startsWith("[[")||s.startsWith("{{")};function _compareISODates(maxIso,minIso){const today=new Date;const month=today.getMonth()+1;let monthStr=_zeroPad(month.toString(),2);const day=today.getDate();let dayStr=_zeroPad(day.toString(),2);const todayIsoDate=today.getFullYear()+"-"+monthStr+"-"+dayStr;let isoString1=maxIso;let isoString2=minIso;const maxStartsWithT=maxIso.indexOf("T")===0;const minStartsWithT=minIso.indexOf("T")===0;const maxHasNoT=maxIso.indexOf("T")===-1;const minHasNoT=minIso.indexOf("T")===-1;const zeroTime="T00:00:00";if(maxStartsWithT){isoString1=todayIsoDate+isoString1}else if(maxHasNoT){isoString1+=zeroTime}if(minStartsWithT){isoString2=todayIsoDate+isoString2}else if(minHasNoT){isoString2+=zeroTime}const dateMax=new Date(isoString1);const dateMin=new Date(isoString2);return dateMax.getTime()-dateMin.getTime()};function _getAttrib(ruleCtx,attr){return _getNodeAttrib(ruleCtx,ruleCtx.node,attr)};function _getNodeAttrib(ruleCtx,node,attr){var du=ruleCtx.utils.DomUtils;return du.getAttribValue(node,attr)||du.getAttribValue(node,":"+attr)};function _zeroPad(s,n){s=s.trim(s);if(s.length<n){s="0".repeat(n-s.length)+s}return s};module.exports=Rule;
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
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 RULE_NAME="oj-html-invalid-doctype";function getName(){return RULE_NAME};function getShortDescription(){return"HTML page should specify 'html' in the <!doctype> declaration"};function getDescription(){return"JET requires HTML5 standards mode. To ensure that this mode is enabled in every browser, you should specify 'html' in the <!doctype> declaration"};function register(){return{"file":_handleFile}};function _handleFile(ruleCtx){var node,siblings,data,i;var DomUtils=ruleCtx.utils.DomUtils;var NodeType=ruleCtx.NodeTypes;node=ruleCtx.node;data=node.data;if(node.type===NodeType.DIRECTIVE){if(_isDocType(data)){if(DomUtils.isNonFragmentJetPage(ruleCtx)){_isDocTypeHtml(data,ruleCtx,node);return}}}siblings=DomUtils.getSiblings(node);for(i=0;i<siblings.length;i++){node=siblings[i];if(node.type===NodeType.DIRECTIVE){if(_isDocType(node.data)){if(DomUtils.isNonFragmentJetPage(ruleCtx)){_isDocTypeHtml(node.data,ruleCtx,node);return}}}if(node.type===NodeType.TAG||node.type===NodeType.SCRIPT){break}}};function _emitIssue(data,ruleCtx,node){var issue,pos;ruleCtx.clearPosition();issue=new ruleCtx.Issue("'<!doctype>' does not specify 'html'");pos=_applyfix(ruleCtx,node);issue.setPosition(null,null,pos,pos+7);ruleCtx.reporter.addIssue(issue,ruleCtx)};function _isDocTypeHtml(data,ruleCtx,node){if(_getNodeData(data)!=="html"){_emitIssue(data,ruleCtx,node)}};function _isDocType(s){s=s?s.substr(1).trim().toLowerCase():s;return s.startsWith("doctype")};function _getNodeData(s){if(s){s=s.replace(/!/g,"").substr(7).trim().toLowerCase()}return s};function _applyfix(ruleCtx,node){var x,i,d;x=node.startIndex;d=ruleCtx.rawData;x=ruleCtx.utils.utils.eatWhitespace(d,x);d=d.substring(x);for(i=0;i<d.length;i++){if(d.charAt(i)==="!"){return x+i}}return node.startIndex};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
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 RULE_NAME="oj-html-jq-databind";const OJ_PREFIX="oj.";function getName(){return RULE_NAME};function getShortDescription(){return"Discontinue instantiation of JET JQUI components using 'data-bind'"};function getDescription(){return"Discontinue instantiation of JET JQUI components using '<i>data-bind</i>'. For example, in place of <i>oj.ojButton</i>, use JET custom component syntax <i><oj-button></i>."};function register(){return{"attr":_handleAttr}};function _handleAttr(ruleCtx,attrName,attrValue){var issue,componentName,suggestion,ojElem,fullClass,msg;if(attrName!=="data-bind"||attrValue.indexOf("ojComponent")<0){return}componentName=ruleCtx.utils.DomUtils.extractComponentFromDataBind(attrValue);fullClass=OJ_PREFIX+componentName;if(componentName){suggestion=ruleCtx.utils.metaLib.isClassDeprecated(fullClass);if(suggestion&&typeof suggestion==="object"){suggestion=suggestion.description}}if(componentName){ojElem=ruleCtx.utils.metaLib.getTagFromClass(fullClass);msg="JQUI data-bind instantiation of "+componentName+" found in <"+ruleCtx.tag+">";if(ojElem){if(ojElem==="oj-tree"){ojElem="oj-tree-view"}msg+=". Use <"+ojElem+">."}issue=new ruleCtx.Issue(msg);issue.setMsgKey(RULE_NAME+"_1")}else{issue=new ruleCtx.Issue("JQUI data-bind invocation of unknown JET component found in <"+ruleCtx.tag+">");issue.setMsgKey(RULE_NAME+"_2")}if(issue){ruleCtx.reporter.addIssue(issue,ruleCtx)}if(suggestion){issue=new ruleCtx.Issue("JQUI data-bind invocation for deprecated JET component '"+componentName+"'. "+suggestion);issue.setMsgKey(RULE_NAME+"_3");ruleCtx.reporter.addIssue(issue,ruleCtx)}};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
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
|
+
*/
|
|
1
6
|
const RULE_NAME="oj-html-ko-comment";function getName(){return RULE_NAME};function getShortDescription(){return"Jet binding elements should be used in place of Knockout comment bindings"};function getDescription(){return"JET binding elements should be used in place of Knockout comment bindings wherever possible"};function register(){return{"comment":_handleComment}};function _handleComment(ruleCtx,comment){var issue,binding,i,suggest;if(comment.length===0){return}if(comment.toLowerCase().startsWith("ko ")){i=_eatWhite(comment,3);if(i>=0){comment=comment.substring(i);i=comment.indexOf(":");binding=i>0?comment.substring(0,i).trim():"";suggest=_getSuggested(binding);issue=new ruleCtx.Issue("Knockout comment binding \""+binding+":\" found"+(suggest?". Use of JET "+suggest+" recommended.":""));ruleCtx.reporter.addIssue(issue,ruleCtx)}}};function _getSuggested(binding){var suggest;binding=binding.toLowerCase();if(binding==="foreach"){suggest="<oj-bind-for-each>"}else if(binding==="if"||binding==="ifnot"){suggest="<oj-bind-if>"}else if(binding==="text"){suggest="<oj-bind-text>"}return suggest};function _eatWhite(str,startIndex){var i,len,ret=-1;startIndex=startIndex?startIndex:0;len=str?str.length:0;for(i=startIndex;i<len;i++){if(!_isWhite(str.charAt(i))){ret=i;break}}return ret};function _isWhite(c){return" \t\n\r\x0B".indexOf(c)>=0};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
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
|
+
*/
|
|
1
6
|
const RULE_NAME="oj-html-ko-databind";function getName(){return RULE_NAME};function getShortDescription(){return"Jet binding elements should be used in place of Knockout 'data-bind' bindings"};function getDescription(){return"JET binding elements should be used in place of Knockout 'data-bind' bindings wherever possible."};function register(){return{"attr":function(ruleCtx,attrName,attrValue){if(attrName==="data-bind"){_handleDataBind(ruleCtx,attrValue)}}}};function _handleDataBind(ruleCtx,attrValue){var issue,aBindings,binding,i,x,suggest;attrValue=attrValue.trim();if(attrValue.length===0){return}attrValue=attrValue.toLowerCase();aBindings=attrValue.split(",");for(i=0;i<aBindings.length;i++){binding=aBindings[i].trim();x=binding.indexOf(":");if(x<0){continue}binding=binding.substring(0,x).trim();suggest=_getSuggested(binding);if(suggest){issue=new ruleCtx.Issue("Knockout data-bind \""+binding+":\" binding found. Use of JET "+suggest+" recommended.");ruleCtx.reporter.addIssue(issue,ruleCtx)}}};function _getSuggested(binding){var suggest;if(binding==="foreach"){suggest="<oj-bind-for-each>"}else if(binding==="if"||binding==="ifnot"){suggest="<oj-bind-if>"}else if(binding==="text"){suggest="<oj-bind-text>"}else if(binding==="css"){suggest=":class binding"}return suggest};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
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
|
+
*/
|
|
1
6
|
const RULE_NAME="oj-html-label-for-prefix";const SHORT_DESCRIPT="<oj-label> 'for' attributes should not be prefixed with a ':'";const LONG_DESCRIPT="The <oj-label> 'for' attribute should not be prefixed with a ':'. The 'for' attribute is an explicit property of <oj-label> and is not a global attribute.";const COLON_FOR=":for";function getName(){return RULE_NAME};function getShortDescription(){return SHORT_DESCRIPT};function getDescription(){return LONG_DESCRIPT};function register(){return{"ojtag":_handle}}function _handle(ruleCtx,tagName){var attribs,attrPos,issue,attrPos;if(tagName!=="oj-label"||ruleCtx.filepath.includes("jet-composites")||!ruleCtx.tagNode.attribs){return}attribs=ruleCtx.tagNode.attribs;if(attribs.hasOwnProperty(COLON_FOR)){issue=new ruleCtx.Issue("<"+ruleCtx.tag+"> ':for' should be unprefixed");attrPos=ruleCtx.utils.DomUtils.getAttrPosition(ruleCtx.data,ruleCtx.node,COLON_FOR);issue.setPosition(attrPos.row,attrPos.col,attrPos.start,attrPos.end);ruleCtx.reporter.addIssue(issue,ruleCtx)}};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
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 RULE_NAME="oj-html-missing-doctype";function getName(){return RULE_NAME};function getShortDescription(){return"The HTML document type declaration should be specified"};function getDescription(){return"JET requires HTML5 standards mode. To ensure that this mode is enabled in every browser, you should specify the HTML5 document type declaration <!doctype html>"};function register(){return{"file":_handleFile}};function _handleFile(ruleCtx){var issue;var node,siblings,i;var DomUtils=ruleCtx.utils.DomUtils;var NodeType=ruleCtx.NodeTypes;node=ruleCtx.node;if(node.type===NodeType.DIRECTIVE&&_isDocType(node.data)){return}siblings=DomUtils.getSiblings(node);for(i=0;i<siblings.length;i++){node=siblings[i];if(node.type===NodeType.DIRECTIVE){if(_isDocType(node.data)){break}}if(node.type===NodeType.TAG||node.type===NodeType.SCRIPT){if(DomUtils.isNonFragmentJetPage(ruleCtx)){issue=new ruleCtx.Issue("Missing '<!doctype html>'");ruleCtx.reporter.addIssue(issue,ruleCtx);break}}}};function _isDocType(s){s=s?s.replace(/!/g,"").trim().toLowerCase():s;return s.startsWith("doctype")};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
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
|
+
*/
|
|
1
6
|
const RULE_NAME="oj-html-oj-lib";const DONT_LOAD=["ojcorebundle.js","oj3rdpartybundle.js","ojcommoncomponentbundle.js"];function getName(){return RULE_NAME};function getShortDescription(){return"Use of the oj.js script should be discontinued"};function getDescription(){return"The <i>oj.js</i> script has been <b>deprecated</b>. Applications should use <i>Require.js</i> for <a href=\"https://docs.oracle.com/en/middleware/jet/6/develop/using-requirejs-modular-development.html\">modular development</a>."};function register(){return{"script":_handleTag}};function _handleTag(ruleCtx,tagName,data){var node,attribs,attrib,src,issue;var attrPos;node=ruleCtx.node;attribs=node?node.attribs:null;if(!attribs){return}for(attrib in attribs){if(attrib.toLowerCase()==="src"){src=attribs[attrib].toLowerCase();if(src.endsWith("oj.js")){issue=new ruleCtx.Issue("<"+tagName+"> loads full library 'oj.js' - do not use - deprecated!")}if(issue){attrPos=ruleCtx.utils.DomUtils.getAttrPosition(ruleCtx.data,ruleCtx.node,attrib);issue.setPosition(attrPos.row,attrPos.col,attrPos.start,attrPos.end);ruleCtx.reporter.addIssue(issue,ruleCtx)}}}};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
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 isValidAttr=require("./helpers/valid-attr");const RULE_NAME="oj-html-ojattr-520";const OJ_EVENT_PREFIX="on-oj-";const SLOT="slot";const DATABIND="data-bind";function getName(){return RULE_NAME};function getShortDescription(){return"JET component attribute must be valid"};function getDescription(){return"JET component attribute must be a defined attribute for the component"};function register(){return{"attr":_handleAttr}};function _handleAttr(ruleCtx,attrName,attrValue){var tagName,origName,attrPos,issue,metaLib;metaLib=ruleCtx.utils.metaLib;tagName=ruleCtx.tag;origName=attrName;attrName=attrName.charAt(0)===":"?attrName.substr(1):attrName;if(!isValidAttr(attrName)){issue=new ruleCtx.Issue("Invalid attribute '"+origName+"'");attrPos=ruleCtx.utils.DomUtils.getAttrPosition(ruleCtx.data,ruleCtx.tagNode,origName);issue.setPosition(attrPos.row,attrPos.col,attrPos.start,attrPos.end);issue.setMsgKey(RULE_NAME+"_1");ruleCtx.reporter.addIssue(issue,ruleCtx);return}if(!ruleCtx.ojTag||ruleCtx.utils.DomUtils.isCommonAttr(attrName)||ruleCtx.utils.DomUtils.isCommonEventAttr(attrName)||attrName===SLOT||attrName===DATABIND||attrName.startsWith(OJ_EVENT_PREFIX)){return}if(!metaLib.isTagAttr(tagName,attrName)){if(!metaLib.isTagEvent(tagName,attrName)){if(!_whiteList(ruleCtx,tagName,attrName)){issue=new ruleCtx.Issue("<"+tagName+"> attribute '"+attrName+"' is unknown");ruleCtx.reporter.addIssue(issue,ruleCtx)}}}};function _whiteList(ruleCtx,tagName,attrName){var info,ret=false;if(tagName==="oj-label"&&(attrName==="help.definition"||attrName==="help.source")){info=ruleCtx.utils.metaLib.getRevisionInfo();if(info.jetVersion==="5.2.0"){ret=true}}return ret};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
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 RULE_NAME="oj-html-ojattr-deprecated";const OJ_EVENT_PREFIX="on-oj-";const ON_EVENT_PREFIX="on-";const CHANGED="-changed";const DATABIND="data-bind";function getName(){return RULE_NAME};function getShortDescription(){return"Deprecated web component attributes should not be used"};function getDescription(){return"Deprecated web component attributes, or event attributes referring to a deprecated attribute, should not be used. Refer to the API doc for potential removal date."};function register(){return{"webcomp":_onWComp}};function _onWComp(ruleCtx,tag){var attrs,attr;if(ruleCtx.tagNode.attribs){attrs=ruleCtx.tagNode.attribs;for(attr in attrs){if(ruleCtx.utils.DomUtils.isCommonAttr(attr)||ruleCtx.utils.DomUtils.isCommonEventAttr(attr)||attr.startsWith(OJ_EVENT_PREFIX)||attr===DATABIND){continue}_checkAttr(ruleCtx,tag,attr)}}};function _checkAttr(ruleCtx,tag,attr){var isEvent,dep,since,issue,help,attrPos,metaLib;metaLib=ruleCtx.utils.metaLib;if(attr.startsWith(ON_EVENT_PREFIX)){if(attr.endsWith(CHANGED)){dep=metaLib.isTagEventDeprecated(tag,attr);isEvent=true}}else{dep=metaLib.isTagAttrDeprecated(tag,attr)}if(!dep){return}if(typeof dep==="object"){since=dep.since?" (since "+dep.since+")":"";help=dep.description?" "+dep.description:"";if(isEvent){issue=new ruleCtx.Issue(`'${attr}' refers to deprecated${since} <${tag}> attribute '${_getAttrFromEvent(attr)}'. ${help}`)}else{issue=new ruleCtx.Issue(`<${tag}> attribute '${attr}' is deprecated${since}!${help}`)}}else{if(isEvent){issue=new ruleCtx.Issue(`'${attr}' refers to deprecated <${tag}> attribute '${_getAttrFromEvent(attr)}'. ${dep}`)}else{issue=new ruleCtx.Issue(`<${tag}> attribute '${attr}' is deprecated! ${dep}`)}}attrPos=ruleCtx.utils.DomUtils.getAttrPosition(ruleCtx.data,ruleCtx.tagNode,attr);issue.setPosition(attrPos.row,attrPos.col,attrPos.start,attrPos.end);if(isEvent){issue.setMsgKey(RULE_NAME+"_1")}ruleCtx.reporter.addIssue(issue,ruleCtx)};function _getAttrFromEvent(attr){var x1,x2;if((x1=attr.indexOf("-"))<0){return attr}attr=attr.substring(x1+1);if((x2=attr.indexOf("-"))>=0){attr=attr.substring(0,x2)}return attr};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
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 RULE_NAME="oj-html-ojattr-enum-deprecated";function getName(){return RULE_NAME};function getShortDescription(){return"Deprecated enumerated attribute values should not be used."};function getDescription(){return"Web component attributes that are assigned a deprecated enumerated value should not be used."};function register(){return{"webcomp":_onWc}};function _onWc(ruleCtx,tagName){var attribs,attrName,enumValue,issue,metaLib,o,since,help;metaLib=ruleCtx.utils.metaLib;attribs=ruleCtx.node.attribs;if(!attribs){return}for(attrName in attribs){issue=null;attrName=attrName.charAt(0)!==":"?attrName:attrName.substring(1);if(!(enumValue=attribs[attrName])){if(!(enumValue=attribs[":"+attrName])){return}}if(_isExpr(enumValue)){return}o=metaLib.isTagAttrEnumValueDeprecated(tagName,attrName,enumValue);if(o){help=o.description?" "+o.description.trim():"";since=o.since?" (since "+o.since+")":"";issue=new ruleCtx.Issue(`<${tagName}> attribute '${attrName}' enumerated value '${enumValue}' is deprecated${since}.${help}`);let attrPos=ruleCtx.utils.DomUtils.getAttrPosition(ruleCtx.data,ruleCtx.tagNode,attrName);issue.setPosition(attrPos.row,attrPos.col,attrPos.start,attrPos.end);ruleCtx.reporter.addIssue(issue,ruleCtx)}}};function _isExpr(s){var start=s.substring(0,2);return start==="[["||start==="{{";_}module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
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
|
+
*/
|
|
1
6
|
const RULE_NAME="oj-html-ojattr-evt-syntax";function getName(){return RULE_NAME};function getShortDescription(){return"Web component event listener attributes should not use {{...}} notation"};function getDescription(){return"A web component event listener attribute cannot use '{{ . . . }}' notation because writeback is inapplicable. Use '[[. . .]]' notation."+"<p>For example, change:<br>"+" <oj-accordion on-oj-before-collapse='{{listener}}'></oj-accordion><br>"+"to:<br>"+" <oj-accordion on-oj-before-collapse='[[listener]]'></oj-accordion><br>"};function register(){return{"event":_handleEvent}};function _handleEvent(ruleCtx,evtName,evtValue){var issue;if(evtValue.val.startsWith("{{")){issue=new ruleCtx.Issue("Event attribute '"+evtName+"' cannot use writeback notation - replace with [[...]]");ruleCtx.reporter.addIssue(issue,ruleCtx)}};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
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 RULE_NAME="oj-html-ojattr-value";const DATABIND="data-bind";function getName(){return RULE_NAME};function getShortDescription(){return"Custom component attribute value must be a defined value"};function getDescription(){return"Custom component attribute value must be a defined value for the component"};function register(){return{"webcomp":_onWComp}};function _onWComp(ruleCtx,tag,attr){var attrs,attr,val;if(ruleCtx.tagNode.attribs){attrs=ruleCtx.tagNode.attribs;for(attr in attrs){val=attrs[attr];if(val.startsWith("{{")||val.startsWith("[[")||val.charAt(0)==="{"){continue}_checkAttr(ruleCtx,tag,attr,val)}}};function _checkAttr(ruleCtx,tag,attr,val){var issue,metaLib,DomUtils,aVals,aVal,i;metaLib=ruleCtx.utils.metaLib;DomUtils=ruleCtx.utils.DomUtils;if(DomUtils.isCommonAttr(attr)||DomUtils.isCommonEventAttr(attr)||attr===DATABIND){return}if(metaLib.isTagAttr(tag,attr)){try{if(val.charAt(0)==="["){aVals=JSON.parse(val)}else{aVals=[val]}}catch(e){}if(!aVals){return true}if(!metaLib.hasTagAttrValues(tag,attr)){return}for(i=0;i<aVals.length;i++){aVal=aVals[i];if(!metaLib.isTagAttrValue(tag,attr,aVal)){if(!_checkSpecialCases(ruleCtx,tag,attr,aVal)){let attrPos;issue=new ruleCtx.Issue(`<${tag}> attribute '${attr}' refers to undefined value '${aVal}'`);attrPos=DomUtils.getAttrPosition(ruleCtx.data,ruleCtx.tagNode,attr);issue.setPosition(attrPos.row,attrPos.col,attrPos.start,attrPos.end);ruleCtx.reporter.addIssue(issue,ruleCtx)}}}}};function _checkSpecialCases(ruleCtx,tag,attr,attrValue){if(tag==="oj-led-gauge"&&attr==="type"){return ruleCtx.utils.DomUtils.isSvgPath(attrValue)}return false};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
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 isValidAttr=require("./helpers/valid-attr");const RULE_NAME="oj-html-ojattr";const OJ_EVENT_PREFIX="on-oj-";const EVENT_PREFIX="on-";const SLOT="slot";const DATABIND="data-bind";const DATACMD="data-oj-command";const DATACONTEXT="data-oj-context";function getName(){return RULE_NAME};function getShortDescription(){return"JET component attribute must be known"};function getDescription(){return"JET component attribute must be a defined attribute for the component"};function register(){return{"webcomp":_onWComp}};function _onWComp(ruleCtx,tag){var attrs,attr;if(ruleCtx.tagNode.attribs){attrs=ruleCtx.tagNode.attribs;for(attr in attrs){_checkAttr(ruleCtx,tag,attr)}}}function _checkAttr(ruleCtx,tag,attr){var issue,origAttr,attrPos,utils;utils=ruleCtx.utils;origAttr=attr;attr=attr.charAt(0)===":"?attr.substr(1):attr;if(attr==="\""){return}if(!isValidAttr(attr)){issue=new ruleCtx.Issue(`<${tag}> - invalid ${origAttr.charAt(0)===":"?"colon-prefixed":""} attribute '${origAttr}'`);attrPos=utils.DomUtils.getAttrPosition(ruleCtx.data,ruleCtx.tagNode,origAttr);issue.setPosition(attrPos.row,attrPos.col,attrPos.start,attrPos.end);issue.setMsgKey(RULE_NAME+"_1");ruleCtx.reporter.addIssue(issue,ruleCtx);return}utils=ruleCtx.utils;if(utils.DomUtils.isCommonAttr(attr)||utils.DomUtils.isCommonEventAttr(attr)||attr===SLOT||attr===DATABIND||attr===DATACMD||attr===DATACONTEXT||attr.startsWith(OJ_EVENT_PREFIX)||attr.startsWith(EVENT_PREFIX)){return}if(!utils.metaLib.isTagAttr(tag,attr)){if(!utils.metaLib.isTagEvent(tag,attr)){issue=new ruleCtx.Issue(`<${tag}> attribute '${attr}' is unknown`);attrPos=utils.DomUtils.getAttrPosition(ruleCtx.data,ruleCtx.tagNode,origAttr);issue.setPosition(attrPos.row,attrPos.col,attrPos.start,attrPos.end);ruleCtx.reporter.addIssue(issue,ruleCtx)}}};module.exports={getName,getDescription,getShortDescription,register};
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
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 RULE_NAME="oj-html-ojevent";function getName(){return RULE_NAME};function getShortDescription(){return"Web component event attribute must be valid"};function getDescription(){return"Web component event attribute (e.g. \"on-oj-action\") must be a defined event for the component."};function register(){return{"event":_handleAttr}};function _handleAttr(ruleCtx,attrName){var tagName,issue,metaLib;metaLib=ruleCtx.utils.metaLib;tagName=ruleCtx.tag;if(metaLib.isWCTag(tagName)){if(!metaLib.isTagEvent(tagName,attrName)){if(!_specialCase(tagName,attrName)){issue=new ruleCtx.Issue("<"+tagName+"> event '"+attrName+"' is unknown");ruleCtx.reporter.addIssue(issue,ruleCtx)}}}};function _specialCase(tagName,attrName){if(tagName==="oj-messages"&&attrName==="on-oj-close"){return true}return false};module.exports={getName,getDescription,getShortDescription,register};
|