UNPKG

stylelint

Version:

A mighty CSS linter that helps you avoid errors and enforce conventions.

181 lines (173 loc) 5.39 kB
/** @type {Map<string, Promise<import('stylelint').Rule>>} */ const ruleCache = new Map(); /** * Returns a cached Promise for the rule, avoiding async overhead for rules that * have already been loaded. * * @param {string} ruleName * @returns {Promise<import('stylelint').Rule>} */ function getCachedRule(ruleName) { let rule = ruleCache.get(ruleName); if (!rule) { rule = import(`./${ruleName}/index.mjs`).then((m) => m.default); ruleCache.set(ruleName, rule); } return rule; } const ruleNames = [ 'alpha-value-notation', 'annotation-no-unknown', 'at-rule-allowed-list', 'at-rule-descriptor-no-unknown', 'at-rule-descriptor-value-no-unknown', 'at-rule-disallowed-list', 'at-rule-empty-line-before', 'at-rule-no-deprecated', 'at-rule-no-unknown', 'at-rule-no-vendor-prefix', 'at-rule-prelude-no-invalid', 'at-rule-property-required-list', 'block-no-empty', 'block-no-redundant-nested-style-rules', 'color-function-alias-notation', 'color-function-notation', 'color-hex-alpha', 'color-hex-length', 'color-named', 'color-no-hex', 'color-no-invalid-hex', 'comment-empty-line-before', 'comment-no-empty', 'comment-pattern', 'comment-whitespace-inside', 'comment-word-disallowed-list', 'container-name-pattern', 'custom-media-pattern', 'custom-property-empty-line-before', 'custom-property-no-missing-var-function', 'custom-property-pattern', 'declaration-block-no-duplicate-custom-properties', 'declaration-block-no-duplicate-properties', 'declaration-block-no-redundant-longhand-properties', 'declaration-block-no-shorthand-property-overrides', 'declaration-block-single-line-max-declarations', 'declaration-empty-line-before', 'declaration-no-important', 'declaration-property-max-values', 'declaration-property-unit-allowed-list', 'declaration-property-unit-disallowed-list', 'declaration-property-value-allowed-list', 'declaration-property-value-disallowed-list', 'declaration-property-value-keyword-no-deprecated', 'declaration-property-value-no-unknown', 'display-notation', 'font-family-name-quotes', 'font-family-no-duplicate-names', 'font-family-no-missing-generic-family-keyword', 'font-weight-notation', 'function-allowed-list', 'function-calc-no-unspaced-operator', 'function-disallowed-list', 'function-linear-gradient-no-nonstandard-direction', 'function-name-case', 'function-no-unknown', 'function-url-no-scheme-relative', 'function-url-quotes', 'function-url-scheme-allowed-list', 'function-url-scheme-disallowed-list', 'hue-degree-notation', 'import-notation', 'keyframe-block-no-duplicate-selectors', 'keyframe-declaration-no-important', 'keyframe-selector-notation', 'keyframes-name-pattern', 'layer-name-pattern', 'length-zero-no-unit', 'lightness-notation', 'max-nesting-depth', 'media-feature-name-allowed-list', 'media-feature-name-disallowed-list', 'media-feature-name-no-unknown', 'media-feature-name-no-vendor-prefix', 'media-feature-name-unit-allowed-list', 'media-feature-name-value-allowed-list', 'media-feature-name-value-no-unknown', 'media-feature-range-notation', 'media-query-no-invalid', 'media-type-no-deprecated', 'named-grid-areas-no-invalid', 'nesting-selector-no-missing-scoping-root', 'no-descending-specificity', 'no-duplicate-at-import-rules', 'no-duplicate-selectors', 'no-empty-source', 'no-invalid-double-slash-comments', 'no-invalid-position-at-import-rule', 'no-invalid-position-declaration', 'no-irregular-whitespace', 'no-unknown-animations', 'no-unknown-custom-media', 'no-unknown-custom-properties', 'number-max-precision', 'property-allowed-list', 'property-disallowed-list', 'property-no-deprecated', 'property-no-unknown', 'property-no-vendor-prefix', 'rule-empty-line-before', 'rule-nesting-at-rule-required-list', 'rule-selector-property-disallowed-list', 'selector-anb-no-unmatchable', 'selector-attribute-name-disallowed-list', 'selector-attribute-operator-allowed-list', 'selector-attribute-operator-disallowed-list', 'selector-attribute-quotes', 'selector-class-pattern', 'selector-combinator-allowed-list', 'selector-combinator-disallowed-list', 'selector-disallowed-list', 'selector-id-pattern', 'selector-max-attribute', 'selector-max-class', 'selector-max-combinators', 'selector-max-compound-selectors', 'selector-max-id', 'selector-max-pseudo-class', 'selector-max-specificity', 'selector-max-type', 'selector-max-universal', 'selector-nested-pattern', 'selector-no-qualifying-type', 'selector-no-vendor-prefix', 'selector-not-notation', 'selector-pseudo-class-allowed-list', 'selector-pseudo-class-disallowed-list', 'selector-pseudo-class-no-unknown', 'selector-pseudo-element-allowed-list', 'selector-pseudo-element-colon-notation', 'selector-pseudo-element-disallowed-list', 'selector-pseudo-element-no-unknown', 'selector-type-case', 'selector-type-no-unknown', 'shorthand-property-no-redundant-values', 'string-no-newline', 'syntax-string-no-invalid', 'time-min-milliseconds', 'unit-allowed-list', 'unit-disallowed-list', 'unit-no-unknown', 'value-keyword-case', 'value-no-vendor-prefix', ]; const rules = /** @type {import('stylelint').PublicApi['rules']} */ ({}); for (const name of ruleNames) { Object.defineProperty(rules, name, { get() { return getCachedRule(name); }, enumerable: true, configurable: true, }); } export default rules;