Ignore:
Timestamp:
12/12/24 17:06:06 (5 weeks ago)
Author:
stefan toskovski <stefantoska84@…>
Branches:
main
Parents:
d565449
Message:

Pred finalna verzija

File:
1 edited

Legend:

Unmodified
Added
Removed
  • imaps-frontend/node_modules/eslint-plugin-react/lib/rules/forbid-component-props.js

    rd565449 r0c6b92a  
    5353                    items: { type: 'string' },
    5454                  },
     55                  allowedForPatterns: {
     56                    type: 'array',
     57                    uniqueItems: true,
     58                    items: { type: 'string' },
     59                  },
    5560                  message: { type: 'string' },
    5661                },
     
    6772                    items: { type: 'string' },
    6873                  },
    69                   message: { type: 'string' },
    70                 },
    71                 required: ['disallowedFor'],
    72                 additionalProperties: false,
    73               },
    74 
     74                  disallowedForPatterns: {
     75                    type: 'array',
     76                    uniqueItems: true,
     77                    minItems: 1,
     78                    items: { type: 'string' },
     79                  },
     80                  message: { type: 'string' },
     81                },
     82                anyOf: [
     83                  { required: ['disallowedFor'] },
     84                  { required: ['disallowedForPatterns'] },
     85                ],
     86                additionalProperties: false,
     87              },
    7588              {
    7689                type: 'object',
     
    8295                    items: { type: 'string' },
    8396                  },
     97                  allowedForPatterns: {
     98                    type: 'array',
     99                    uniqueItems: true,
     100                    items: { type: 'string' },
     101                  },
    84102                  message: { type: 'string' },
    85103                },
     
    96114                    items: { type: 'string' },
    97115                  },
    98                   message: { type: 'string' },
    99                 },
    100                 required: ['disallowedFor'],
     116                  disallowedForPatterns: {
     117                    type: 'array',
     118                    uniqueItems: true,
     119                    minItems: 1,
     120                    items: { type: 'string' },
     121                  },
     122                  message: { type: 'string' },
     123                },
     124                anyOf: [
     125                  { required: ['disallowedFor'] },
     126                  { required: ['disallowedForPatterns'] },
     127                ],
    101128                additionalProperties: false,
    102129              },
     
    115142      const prop = propName || propPattern;
    116143      const options = {
    117         allowList: typeof value === 'string' ? [] : (value.allowedFor || []),
    118         disallowList: typeof value === 'string' ? [] : (value.disallowedFor || []),
     144        allowList: [].concat(value.allowedFor || []),
     145        allowPatternList: [].concat(value.allowedForPatterns || []),
     146        disallowList: [].concat(value.disallowedFor || []),
     147        disallowPatternList: [].concat(value.disallowedForPatterns || []),
    119148        message: typeof value === 'string' ? null : value.message,
    120149        isPattern: !!value.propNamePattern,
     
    141170      }
    142171
     172      function checkIsTagForbiddenByAllowOptions() {
     173        if (options.allowList.indexOf(tagName) !== -1) {
     174          return false;
     175        }
     176
     177        if (options.allowPatternList.length === 0) {
     178          return true;
     179        }
     180
     181        return options.allowPatternList.every(
     182          (pattern) => !minimatch(tagName, pattern)
     183        );
     184      }
     185
     186      function checkIsTagForbiddenByDisallowOptions() {
     187        if (options.disallowList.indexOf(tagName) !== -1) {
     188          return true;
     189        }
     190
     191        if (options.disallowPatternList.length === 0) {
     192          return false;
     193        }
     194
     195        return options.disallowPatternList.some(
     196          (pattern) => minimatch(tagName, pattern)
     197        );
     198      }
     199
     200      const hasDisallowOptions = options.disallowList.length > 0 || options.disallowPatternList.length > 0;
     201
    143202      // disallowList should have a least one item (schema configuration)
    144       const isTagForbidden = options.disallowList.length > 0
    145         ? options.disallowList.indexOf(tagName) !== -1
    146         : options.allowList.indexOf(tagName) === -1;
     203      const isTagForbidden = hasDisallowOptions
     204        ? checkIsTagForbiddenByDisallowOptions()
     205        : checkIsTagForbiddenByAllowOptions();
    147206
    148207      // if the tagName is undefined (`<this.something>`), we assume it's a forbidden element
Note: See TracChangeset for help on using the changeset viewer.