{"version":3,"file":"index.cjs","names":["ts","decoratorName","componentNode: any","TOKEN_TO_TEXT: { readonly [P in ts.SyntaxKind]?: string }","rule: Rule.RuleModule","rule","rule: Rule.RuleModule","rule","DEFAULTS","rule: Rule.RuleModule","rule","rule: Rule.RuleModule","rule","rule: Rule.RuleModule","rule","DEFAULTS: DecoratorsStyleOptions","rule: Rule.RuleModule","DEFAULTS","rule","rule: Rule.RuleModule","rule","rule: Rule.RuleModule","rule","rule: Rule.RuleModule","rule","rule: Rule.RuleModule","rule","rule: Rule.RuleModule","rule","rule: Rule.RuleModule","rule","rule: Rule.RuleModule","eventName","rule","rule: Rule.RuleModule","rule","rule: Rule.RuleModule","ts","rule","rule: Rule.RuleModule","rule","rule: Rule.RuleModule","rule","rule: Rule.RuleModule","rule","rule: Rule.RuleModule","decoratorName","JSDOM","rule","rule: Rule.RuleModule","ts","rule","rule: Rule.RuleModule","rule","rule: Rule.RuleModule","rule","rule: Rule.RuleModule","ts","rule","rule: Rule.RuleModule","rule","rule: Rule.RuleModule","SUGGESTIONS: {[importName: string]: string}","banSideEffects","banDefaultTrue","banExportedConstEnums","dependencySuggestions","strictBooleanConditions","asyncMethods","banPrefix","classPattern","decoratorsContext","decoratorsStyle","elementType","hostDataDeprecated","methodsMustBePublic","noUnusedWatch","ownMethodsMustBePrivate","ownPropsMustBePrivate","preferVdomListener","propsMustBePublic","propsMustBeReadonly","renderReturnsHost","requiredJsdoc","requiredPrefix","reservedMemberNames","singleExport","strictMutable","configs","react"],"sources":["../src/utils.ts","../src/rules/async-methods.ts","../src/rules/ban-default-true.ts","../src/rules/ban-prefix.ts","../src/rules/class-pattern.ts","../src/rules/decorators-context.ts","../src/rules/decorators-style.ts","../src/rules/element-type.ts","../src/rules/host-data-deprecated.ts","../src/rules/methods-must-be-public.ts","../src/rules/no-unused-watch.ts","../src/rules/own-methods-must-be-private.ts","../src/rules/own-props-must-be-private.ts","../src/rules/prefer-vdom-listener.ts","../src/rules/props-must-be-public.ts","../src/rules/props-must-be-readonly.ts","../src/rules/render-returns-host.ts","../src/rules/required-jsdoc.ts","../src/rules/required-prefix.ts","../src/rules/reserved-member-names.ts","../src/rules/single-export.ts","../src/rules/strict-mutable.ts","../src/rules/ban-side-effects.ts","../src/rules/strict-boolean-conditions.ts","../src/rules/ban-exported-const-enums.ts","../src/rules/dependency-suggestions.ts","../src/rules/index.ts","../src/configs/base.ts","../src/configs/recommended.ts","../src/configs/strict.ts","../src/configs/index.ts","../src/index.ts"],"sourcesContent":["import ts from 'typescript';\nimport { getStaticValue } from 'eslint-utils';\n\nconst SyntaxKind = ts.SyntaxKind;\n\nexport function isPrivate(originalNode: ts.Node) {\n  const modifiers = ts.canHaveModifiers(originalNode)\n    ? ts.getModifiers(originalNode)\n    : undefined;\n  if (modifiers) {\n    return modifiers.some(\n      (m) =>\n        m.kind === ts.SyntaxKind.PrivateKeyword ||\n        m.kind === ts.SyntaxKind.ProtectedKeyword\n    );\n  }\n  // detect private identifier (#)\n  const firstChildNode = originalNode.getChildAt(0);\n  return firstChildNode ? firstChildNode.kind === SyntaxKind.PrivateIdentifier : false;\n}\n\nexport function getDecoratorList(\n  originalNode: ts.Node\n): readonly ts.Decorator[] | undefined {\n  const decorators = ts.canHaveDecorators(originalNode)\n    ? ts.getDecorators(originalNode)\n    : undefined;\n  return decorators;\n}\n\nexport function getDecorator(node: any, decoratorName?: string): any | any[] {\n  if (decoratorName) {\n    return node.decorators && node.decorators.find(isDecoratorNamed(decoratorName));\n  }\n  return node.decorators ? node.decorators.filter((dec: any) => dec.expression) : [];\n}\n\nexport function parseDecorator(decorator: any) {\n  if (decorator && decorator.expression && decorator.expression.type === 'CallExpression') {\n    return decorator.expression.arguments.map((a: any) => {\n      const parsed = getStaticValue(a);\n      return parsed ? parsed.value : undefined;\n    });\n  }\n  return [];\n}\n\nexport function decoratorName(dec: any): string {\n  return dec.expression && dec.expression.callee.name;\n}\n\nexport function isDecoratorNamed(propName: string) {\n  return (dec: any): boolean => {\n    return decoratorName(dec) === propName;\n  };\n}\n\nexport function stencilComponentContext() {\n  let componentNode: any;\n  return {\n    rules: {\n      'ClassDeclaration': (node: any) => {\n        const component = getDecorator(node, 'Component');\n        if (component) {\n          componentNode = component;\n        }\n      },\n      'ClassDeclaration:exit': (node: any) => {\n        if (componentNode === node) {\n          componentNode = undefined;\n        }\n      }\n    },\n    isComponent() {\n      return !!componentNode;\n    }\n  };\n}\n\nexport function getType(node: any) {\n  return node.typeAnnotation?.typeAnnotation?.typeName?.name;\n}\n\nexport const stencilDecorators = ['Component', 'Prop', 'State', 'Watch', 'Element', 'Method', 'Event', 'Listen', 'AttachInternals'];\n\nexport const stencilLifecycle = [\n  'connectedCallback',\n  'disconnectedCallback',\n  'componentWillLoad',\n  'componentDidLoad',\n  'componentWillRender',\n  'componentDidRender',\n  'componentShouldUpdate',\n  'componentWillUpdate',\n  'componentDidUpdate',\n  'formAssociatedCallback',\n  'formDisabledCallback',\n  'formResetCallback',\n  'formStateRestoreCallback',\n  'render'\n];\n\nconst TOKEN_TO_TEXT: { readonly [P in ts.SyntaxKind]?: string } = {\n  [SyntaxKind.OpenBraceToken]: '{',\n  [SyntaxKind.CloseBraceToken]: '}',\n  [SyntaxKind.OpenParenToken]: '(',\n  [SyntaxKind.CloseParenToken]: ')',\n  [SyntaxKind.OpenBracketToken]: '[',\n  [SyntaxKind.CloseBracketToken]: ']',\n  [SyntaxKind.DotToken]: '.',\n  [SyntaxKind.DotDotDotToken]: '...',\n  [SyntaxKind.SemicolonToken]: ',',\n  [SyntaxKind.CommaToken]: ',',\n  [SyntaxKind.LessThanToken]: '<',\n  [SyntaxKind.GreaterThanToken]: '>',\n  [SyntaxKind.LessThanEqualsToken]: '<=',\n  [SyntaxKind.GreaterThanEqualsToken]: '>=',\n  [SyntaxKind.EqualsEqualsToken]: '==',\n  [SyntaxKind.ExclamationEqualsToken]: '!=',\n  [SyntaxKind.EqualsEqualsEqualsToken]: '===',\n  [SyntaxKind.InstanceOfKeyword]: 'instanceof',\n  [SyntaxKind.ExclamationEqualsEqualsToken]: '!==',\n  [SyntaxKind.EqualsGreaterThanToken]: '=>',\n  [SyntaxKind.PlusToken]: '+',\n  [SyntaxKind.MinusToken]: '-',\n  [SyntaxKind.AsteriskToken]: '*',\n  [SyntaxKind.AsteriskAsteriskToken]: '**',\n  [SyntaxKind.SlashToken]: '/',\n  [SyntaxKind.PercentToken]: '%',\n  [SyntaxKind.PlusPlusToken]: '++',\n  [SyntaxKind.MinusMinusToken]: '--',\n  [SyntaxKind.LessThanLessThanToken]: '<<',\n  [SyntaxKind.LessThanSlashToken]: '</',\n  [SyntaxKind.GreaterThanGreaterThanToken]: '>>',\n  [SyntaxKind.GreaterThanGreaterThanGreaterThanToken]: '>>>',\n  [SyntaxKind.AmpersandToken]: '&',\n  [SyntaxKind.BarToken]: '|',\n  [SyntaxKind.CaretToken]: '^',\n  [SyntaxKind.ExclamationToken]: '!',\n  [SyntaxKind.TildeToken]: '~',\n  [SyntaxKind.AmpersandAmpersandToken]: '&&',\n  [SyntaxKind.BarBarToken]: '||',\n  [SyntaxKind.QuestionToken]: '?',\n  [SyntaxKind.ColonToken]: ':',\n  [SyntaxKind.EqualsToken]: '=',\n  [SyntaxKind.PlusEqualsToken]: '+=',\n  [SyntaxKind.MinusEqualsToken]: '-=',\n  [SyntaxKind.AsteriskEqualsToken]: '*=',\n  [SyntaxKind.AsteriskAsteriskEqualsToken]: '**=',\n  [SyntaxKind.SlashEqualsToken]: '/=',\n  [SyntaxKind.PercentEqualsToken]: '%=',\n  [SyntaxKind.LessThanLessThanEqualsToken]: '<<=',\n  [SyntaxKind.GreaterThanGreaterThanEqualsToken]: '>>=',\n  [SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken]: '>>>=',\n  [SyntaxKind.AmpersandEqualsToken]: '&=',\n  [SyntaxKind.BarEqualsToken]: '|=',\n  [SyntaxKind.CaretEqualsToken]: '^=',\n  [SyntaxKind.AtToken]: '@',\n  [SyntaxKind.InKeyword]: 'in',\n  [SyntaxKind.UniqueKeyword]: 'unique',\n  [SyntaxKind.KeyOfKeyword]: 'keyof',\n  [SyntaxKind.NewKeyword]: 'new',\n  [SyntaxKind.ImportKeyword]: 'import',\n  [SyntaxKind.ReadonlyKeyword]: 'readonly'\n};\n\n/**\n * Returns the string form of the given TSToken SyntaxKind\n * @param kind the token's SyntaxKind\n * @returns the token applicable token as a string\n */\nexport function getTextForTokenKind(kind: ts.SyntaxKind): string | undefined {\n  return TOKEN_TO_TEXT[kind];\n}","import type { Rule } from 'eslint';\nimport ts from 'typescript';\nimport { stencilComponentContext } from '../utils';\nimport { isThenableType } from 'tsutils';\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: 'This rule catches Stencil public methods that are not async.',\n      category: 'Possible Errors',\n      recommended: true\n    },\n    schema: [],\n    type: 'problem',\n    fixable: 'code'\n  },\n\n  create(context): Rule.RuleListener {\n    const stencil = stencilComponentContext();\n    const parserServices = context.sourceCode.parserServices;\n    const typeChecker = parserServices.program.getTypeChecker() as ts.TypeChecker;\n\n    return {\n      ...stencil.rules,\n      'MethodDefinition > Decorator[expression.callee.name=Method]': (decoratorNode: any) => {\n        if (!stencil.isComponent()) {\n          return;\n        }\n        const node = decoratorNode.parent;\n        const method = parserServices.esTreeNodeToTSNodeMap.get(node);\n        const signature = typeChecker.getSignatureFromDeclaration(method);\n        const returnType = typeChecker.getReturnTypeOfSignature(signature!);\n        if (!isThenableType(typeChecker, method, returnType)) {\n          const originalNode = parserServices.esTreeNodeToTSNodeMap.get(node) as ts.Node;\n          const text = String(originalNode.getFullText());\n          context.report({\n            node: node.key,\n            message: `External @Method() ${node.key.name}() must return a Promise. Consider prefixing the method with async, such as @Method() async ${node.key.name}().`,\n            fix(fixer) {\n              const result = text\n                  // a newline + whitespace preceding `@Method` may be captured, remove it\n                  .trimLeft()\n                  // capture the number of following the decorator to know how far to indent the `async` method\n                  .replace(/@Method\\(\\)\\n(\\s*)/, '@Method()\\n$1async ')\n                  // replace any inlined @Method decorators\n                  .replace('@Method() ', '@Method() async')\n                  // swap the order of the `async` and `public` keywords\n                  .replace('async public', 'public async')\n                  // swap the order of the `async` and `private` keywords\n                  .replace('async private', 'private async');\n              return fixer.replaceText(node, result);\n            }\n          });\n        }\n      }\n    };\n  }\n};\n\nexport default rule;\n","import type { Rule } from 'eslint';\nimport { getDecorator, stencilComponentContext } from '../utils';\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: 'This rule catches Stencil Props defaulting to true.',\n      category: 'Possible Errors',\n      recommended: true\n    },\n    schema: [],\n    type: 'problem',\n  },\n\n  create(context): Rule.RuleListener {\n    const stencil = stencilComponentContext();\n\n    return {\n      ...stencil.rules,\n      'PropertyDefinition': (node: any) => {\n        const propDecorator = getDecorator(node, 'Prop');\n        if (!(stencil.isComponent() && propDecorator)) {\n          return;\n        }\n\n        if (node.value?.value === true) {\n          context.report({\n            node: node,\n            message: `Boolean properties decorated with @Prop() should default to false`\n          });\n        }\n      }\n    };\n  }\n};\n\nexport default rule;\n","import type { Rule } from 'eslint';\nimport { getDecorator, parseDecorator, stencilComponentContext } from '../utils';\n\nconst DEFAULTS = ['stencil', 'stnl', 'st'];\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: 'This rule catches usages banned prefix in component tag name.',\n      category: 'Possible Errors',\n      recommended: true\n    },\n    schema: [\n      {\n        type: 'array',\n        items: {\n          type: 'string'\n        },\n        minLength: 1,\n        additionalProperties: false\n      }\n    ],\n    type: 'problem'\n  },\n\n  create(context): Rule.RuleListener {\n    const stencil = stencilComponentContext();\n\n    return {\n      ...stencil.rules,\n      'ClassDeclaration': (node: any) => {\n        const component = getDecorator(node, 'Component');\n        if (!component) {\n          return;\n        }\n        const [opts] = parseDecorator(component);\n        if (!opts || !opts.tag) {\n          return;\n        }\n        const tag = opts.tag;\n        const options = context.options[0] || DEFAULTS;\n        const match = options.some((t: string) => tag.startsWith(`${t}-`));\n\n        if (match) {\n          context.report({\n            node: node,\n            message: `The component with tag name ${tag} have a banned prefix.`\n          });\n        }\n      }\n    };\n  }\n};\n\nexport default rule;\n","import type { Rule } from 'eslint';\nimport { getDecorator, parseDecorator, stencilComponentContext } from '../utils';\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: 'This rule catches usages of non valid class names.',\n      category: 'Possible Errors',\n      recommended: false\n    },\n    schema: [\n      {\n        type: 'object',\n        properties: {\n          pattern: {\n            type: 'string'\n          },\n          ignoreCase: {\n            type: 'boolean'\n          }\n        },\n        additionalProperties: false\n      }],\n    type: 'problem'\n\n  },\n\n  create(context): Rule.RuleListener {\n    const stencil = stencilComponentContext();\n    const parserServices = context.sourceCode.parserServices;\n\n    return {\n      ...stencil.rules,\n      'ClassDeclaration': (node: any) => {\n        const component = getDecorator(node, 'Component');\n        const options = context.options[0];\n        const { pattern, ignoreCase } = options || {};\n        if (!component || !options || !pattern) {\n          return;\n        }\n        const originalNode = parserServices.esTreeNodeToTSNodeMap.get(node);\n        const className = originalNode.symbol.escapedName;\n        const regExp = new RegExp(pattern, ignoreCase ? 'i' : undefined);\n\n        if (!regExp.test(className)) {\n          const [opts] = parseDecorator(component);\n          if (!opts || !opts.tag) {\n            return;\n          }\n          context.report({\n            node: node,\n            message: `The class name in component with tag name ${opts.tag} is not valid (${regExp}).`\n          });\n        }\n      }\n    };\n  }\n};\n\nexport default rule;\n","import type { Rule } from 'eslint';\nimport { stencilComponentContext } from '../utils';\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: 'This rule catches Stencil Decorators used in incorrect locations.',\n      category: 'Possible Errors',\n      recommended: true\n    },\n    schema: [],\n    type: 'problem'\n  },\n\n  create(context): Rule.RuleListener {\n    const stencil = stencilComponentContext();\n\n    return {\n      ...stencil.rules,\n      'Decorator': (node: any) => {\n        if (!stencil.isComponent()) {\n          return;\n        }\n        if (node.expression && node.expression.callee) {\n          const decName = node.expression.callee.name;\n          if (\n              decName === 'Prop' ||\n              decName === 'State' ||\n              decName === 'Element' ||\n              decName === 'Event'\n          ) {\n            if (\n              node.parent.type !== 'PropertyDefinition' && \n              (\n                node.parent.type === 'MethodDefinition' && \n                ['get', 'set'].indexOf(node.parent.kind) < 0\n              )\n            ) {              \n              context.report({\n                node: node,\n                message: `The @${decName} decorator can only be applied to class properties.`\n              });\n            }\n          } else if (\n              decName === 'Method' ||\n              decName === 'Watch' ||\n              decName === 'Listen'\n          ) {\n            if (node.parent.type !== 'MethodDefinition') {\n              context.report({\n                node: node,\n                message: `The @${decName} decorator can only be applied to class methods.`\n              });\n            }\n          } else if (decName === 'Component') {\n            if (node.parent.type !== 'ClassDeclaration') {\n              context.report({\n                node: node,\n                message: `The @${decName} decorator can only be applied to a class.`\n              });\n            }\n          }\n        }\n      }\n    };\n  }\n};\n\nexport default rule;\n","import type { Rule } from 'eslint';\nimport ts from 'typescript';\nimport { decoratorName, getDecorator, stencilComponentContext, stencilDecorators } from '../utils';\n\ntype DecoratorsStyleOptionsEnum = 'inline' | 'multiline' | 'ignore';\n\ninterface DecoratorsStyleOptions {\n  prop?: DecoratorsStyleOptionsEnum;\n  state?: DecoratorsStyleOptionsEnum;\n  element?: DecoratorsStyleOptionsEnum;\n  event?: DecoratorsStyleOptionsEnum;\n  method?: DecoratorsStyleOptionsEnum;\n  watch?: DecoratorsStyleOptionsEnum;\n  listen?: DecoratorsStyleOptionsEnum;\n}\n\nconst ENUMERATE = ['inline', 'multiline', 'ignore'];\nconst DEFAULTS: DecoratorsStyleOptions = {\n  prop: 'ignore',\n  state: 'ignore',\n  element: 'ignore',\n  event: 'ignore',\n  method: 'ignore',\n  watch: 'ignore',\n  listen: 'ignore'\n};\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: 'This rule catches Stencil Decorators not used in consistent style.',\n      category: 'Possible Errors',\n      recommended: true\n    },\n    schema: [\n      {\n        type: 'object',\n        properties: {\n          prop: {\n            type: 'string',\n            enum: ENUMERATE\n          },\n          state: {\n            type: 'string',\n            enum: ENUMERATE\n          },\n          element: {\n            type: 'string',\n            enum: ENUMERATE\n          },\n          event: {\n            type: 'string',\n            enum: ENUMERATE\n          },\n          method: {\n            type: 'string',\n            enum: ENUMERATE\n          },\n          watch: {\n            type: 'string',\n            enum: ENUMERATE\n          },\n          listen: {\n            type: 'string',\n            enum: ENUMERATE\n          }\n        }\n      }],\n    type: 'layout'\n  },\n\n  create(context): Rule.RuleListener {\n    const stencil = stencilComponentContext();\n\n    const parserServices = context.sourceCode.parserServices;\n    const opts = context.options[0] || {};\n    const options = { ...DEFAULTS, ...opts };\n\n    function checkStyle(decorator: any) {\n      const decName = decoratorName(decorator);\n      const config = options[decName.toLowerCase()];\n      if (!config || config === 'ignore') {\n        return;\n      }\n      const decoratorNode = parserServices.esTreeNodeToTSNodeMap.get(decorator) as ts.Node;\n      const decoratorText = decoratorNode.getText()\n        .replace('(', '\\\\(')\n        .replace(')', '\\\\)');\n      const text = decoratorNode.parent.getText();\n      const separator = config === 'multiline' ? '\\\\r?\\\\n' : ' ';\n      const regExp = new RegExp(`${decoratorText}${separator}`, 'i');\n      if (!regExp.test(text)) {\n        const node = decorator.parent;\n        context.report({\n          node: node,\n          message: `The @${decName} decorator can only be applied as ${config}.`,\n        });\n      }\n    }\n\n    function getStyle(node: any) {\n      if (!stencil.isComponent() || !options || !Object.keys(options).length) {\n        return;\n      }\n      const decorators: any[] = getDecorator(node);\n      decorators.filter((dec) => stencilDecorators.includes(decoratorName(dec))).forEach(checkStyle);\n    }\n\n    return {\n      ...stencil.rules,\n      'PropertyDefinition': getStyle,\n      'MethodDefinition[kind=method]': getStyle\n    };\n  }\n};\n\nexport default rule;\n","import type { Rule } from 'eslint';\nimport { getDecorator, getType, parseDecorator, stencilComponentContext } from '../utils';\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: 'This rule catches Stencil Element type not matching tag name.',\n      category: 'Possible Errors',\n      recommended: true\n    },\n    schema: [],\n    type: 'problem',\n    fixable: 'code'\n  },\n\n  create(context): Rule.RuleListener {\n    const stencil = stencilComponentContext();\n\n    function parseTag(tag: string) {\n      let result = tag[0].toUpperCase() + tag.slice(1);\n      const tagBody = tag.split('-');\n      if (tagBody.length > 1) {\n        result = tagBody.map((tpart) => tpart[0].toUpperCase() + tpart.slice(1)).join('');\n      }\n      return result;\n    }\n\n    return {\n      ...stencil.rules,\n      'PropertyDefinition > Decorator[expression.callee.name=Element]': (node: any) => {\n        if (stencil.isComponent()) {\n          const tagType = getType(node.parent);\n          const component = getDecorator(node.parent.parent.parent, 'Component');\n          const [opts] = parseDecorator(component);\n          if (!opts || !opts.tag) {\n            return;\n          }\n          const parsedTag = `HTML${parseTag(opts.tag)}Element`;\n\n          if (tagType !== parsedTag) {\n            context.report({\n              node: node.parent.typeAnnotation ?? node.parent,\n              message: `@Element type is not matching tag for component (${parsedTag})`,\n              fix(fixer) {\n                // If the property has a type annotation, we can replace just that node with the parsed tag\n                // @Element() elm: HTMLElement; -> @Element() elm: HTMLSampleTagElement;\n                if (node.parent.typeAnnotation?.typeAnnotation) {\n                  return fixer.replaceText(node.parent.typeAnnotation.typeAnnotation, parsedTag);\n                }\n\n                // If no type annotation exists on the property, we'll do some string manipulation to insert one.\n                // @Element() elm; -> @Element() elm: HTMLSampleTagElement;\n                const text = context.sourceCode.getText(node.parent).replace(';', '').concat(`: ${parsedTag};`)\n                return fixer.replaceText(node.parent, text);\n              }\n            });\n          }\n        }\n      }\n    };\n  }\n};\n\nexport default rule;\n","/**\n * @fileoverview ESLint rules specific to Stencil JS projects.\n * @author Tom Chinery <tom.chinery@addtoevent.co.uk>\n */\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\nimport type { Rule } from 'eslint';\nimport { stencilComponentContext } from '../utils';\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: 'This rule catches usage of hostData method.',\n      category: 'Possible Errors',\n      recommended: true\n    },\n    schema: [],\n    type: 'problem'\n  },\n\n  create(context): Rule.RuleListener {\n\n    //----------------------------------------------------------------------\n    // Public\n    //----------------------------------------------------------------------\n    const stencil = stencilComponentContext();\n    return {\n      ...stencil.rules,\n      'MethodDefinition[key.name=hostData]': (node: any) => {\n        if (stencil.isComponent()) {\n          context.report({\n            node: node.key,\n            message: `hostData() is deprecated and <Host> should be used in the render function instead.`\n          });\n        }\n      }\n    };\n  }\n};\n\nexport default rule;\n","import type { Rule } from 'eslint';\nimport ts from 'typescript';\nimport { getDecorator, isPrivate, stencilComponentContext } from '../utils';\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: 'This rule catches Stencil Methods marked as private or protected.',\n      category: 'Possible Errors',\n      recommended: true\n    },\n    schema: [],\n    type: 'problem'\n  },\n\n  create(context): Rule.RuleListener {\n    const stencil = stencilComponentContext();\n    const parserServices = context.sourceCode.parserServices;\n    return {\n      ...stencil.rules,\n      'MethodDefinition[kind=method]': (node: any) => {\n        if (stencil.isComponent() && getDecorator(node, 'Method')) {\n          const originalNode = parserServices.esTreeNodeToTSNodeMap.get(node) as ts.Node;\n          if (isPrivate(originalNode)) {\n            context.report({\n              node: node,\n              message: `Class methods decorated with @Method() cannot be private nor protected`\n            });\n          }\n        }\n      }\n    };\n  }\n};\n\nexport default rule;\n","import type { Rule } from 'eslint';\nimport ts from 'typescript';\nimport { getDecorator, isPrivate, stencilComponentContext } from '../utils';\n\nconst varsList = new Set<string>();\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: 'This rule catches Stencil Watch for not defined variables in Prop or State.',\n      category: 'Possible Errors',\n      recommended: true\n    },\n    schema: [],\n    type: 'suggestion'\n  },\n\n  create(context): Rule.RuleListener {\n    const stencil = stencilComponentContext();\n\n    const parserServices = context.sourceCode.parserServices;\n\n    function getVars(node: any) {\n      if (!stencil.isComponent()) {\n        return;\n      }\n      const originalNode = parserServices.esTreeNodeToTSNodeMap.get(node);\n      const varName = originalNode.parent.name.escapedText;\n      varsList.add(varName);\n    }\n\n    function checkWatch(node: any) {\n      if (!stencil.isComponent()) {\n        return;\n      }\n      const originalNode = parserServices.esTreeNodeToTSNodeMap.get(node);\n      const varName = originalNode.expression.arguments[0].text;\n      if (!varsList.has(varName) && !isReservedAttribute(varName.toLowerCase())) {\n        context.report({\n          node: node,\n          message: `Watch decorator @Watch(\"${varName}\") is not matching with any @Prop() or @State()`,\n        });\n      }\n    }\n\n    return {\n      ClassDeclaration: stencil.rules.ClassDeclaration,\n      'PropertyDefinition > Decorator[expression.callee.name=Prop]': getVars,\n      'MethodDefinition[kind=get] > Decorator[expression.callee.name=Prop]': getVars,\n      'MethodDefinition[kind=set] > Decorator[expression.callee.name=Prop]': getVars,\n      'PropertyDefinition > Decorator[expression.callee.name=State]': getVars,      \n      'MethodDefinition[kind=method] > Decorator[expression.callee.name=Watch]': checkWatch,\n      'ClassDeclaration:exit': (node: any) => {\n        if (!stencil.isComponent()) {\n          return;\n        }\n        stencil.rules['ClassDeclaration:exit'](node);\n        varsList.clear();\n      }\n    };\n  }\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes\nconst GLOBAL_ATTRIBUTES = [\n  'about',\n  'accessKey',\n  'autocapitalize',\n  'autofocus',\n  'class',\n  'contenteditable',\n  'contextmenu',\n  'dir',\n  'draggable',\n  'enterkeyhint',\n  'hidden',\n  'id',\n  'inert',\n  'inputmode',\n  'id',\n  'itemid',\n  'itemprop',\n  'itemref',\n  'itemscope',\n  'itemtype',\n  'lang',\n  'nonce',\n  'part',\n  'popover',\n  'role',\n  'slot',\n  'spellcheck',\n  'style',\n  'tabindex',\n  'title',\n  'translate',\n  'virtualkeyboardpolicy',\n];\n\nconst RESERVED_PUBLIC_ATTRIBUTES = new Set([\n  ...GLOBAL_ATTRIBUTES,\n].map(p => p.toLowerCase()));\n\nfunction isReservedAttribute(attributeName: string) {\n  return RESERVED_PUBLIC_ATTRIBUTES.has(attributeName.toLowerCase());\n}\n\nexport default rule;\n","import type { Rule } from 'eslint';\nimport ts from 'typescript';\nimport {\n  getDecoratorList,\n  isPrivate,\n  stencilComponentContext,\n  stencilDecorators,\n  stencilLifecycle,\n} from \"../utils\";\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: \"This rule catches own class methods marked as public.\",\n      category: \"Possible Errors\",\n      recommended: true,\n    },\n    schema: [],\n    type: 'problem',\n    fixable: 'code',\n  },\n\n  create(context): Rule.RuleListener {\n    const stencil = stencilComponentContext();\n\n    const parserServices = context.sourceCode.parserServices;\n    return {\n      ...stencil.rules,\n      \"MethodDefinition[kind=method]\": (node: any) => {\n        if (!stencil.isComponent()) {\n          return;\n        }\n        const originalNode = parserServices.esTreeNodeToTSNodeMap.get(node);\n\n        const decorators = getDecoratorList(originalNode);\n        const stencilDecorator =\n          decorators &&\n          decorators.some((dec: any) =>\n            stencilDecorators.includes(dec.expression.expression.escapedText)\n          );\n        const stencilCycle = stencilLifecycle.includes(\n          originalNode.name.escapedText\n        );\n        if (!stencilDecorator && !stencilCycle && !isPrivate(originalNode)) {\n          context.report({\n            node: node,\n            message: `Own class methods cannot be public`,\n            fix(fixer) {\n              const sourceCode = context.sourceCode;\n              const tokens = sourceCode.getTokens(node);\n              const publicToken = tokens.find(token => token.value === 'public');\n\n              if (publicToken) {\n                return fixer.replaceText(publicToken, 'private');\n              } else {\n                return fixer.insertTextBefore(node.key, 'private ');\n              }\n            }\n          });\n        }\n      },\n    };\n  },\n};\n\nexport default rule;\n","import type { Rule } from \"eslint\";\nimport {\n  getDecoratorList,\n  isPrivate,\n  stencilComponentContext,\n  stencilDecorators,\n} from \"../utils\";\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: \"This rule catches own class attributes marked as public.\",\n      category: \"Possible Errors\",\n      recommended: true,\n    },\n    schema: [],\n    type: 'problem',\n    fixable: 'code',\n  },\n\n  create(context): Rule.RuleListener {\n    const stencil = stencilComponentContext();\n\n    const parserServices = context.sourceCode.parserServices;\n    return {\n      ...stencil.rules,\n      PropertyDefinition: (node: any) => {\n        if (!stencil.isComponent()) {\n          return;\n        }\n\n        const originalNode = parserServices.esTreeNodeToTSNodeMap.get(node);\n        const decorators = getDecoratorList(originalNode);\n\n        const stencilDecorator =\n          decorators &&\n          decorators.some((dec: any) =>\n            stencilDecorators.includes(dec.expression.expression.escapedText)\n          );\n\n        if (!stencilDecorator && !isPrivate(originalNode)) {\n          context.report({\n            node: node,\n            message: `Own class properties cannot be public`,\n            fix(fixer) {\n              const sourceCode = context.sourceCode;\n              const tokens = sourceCode.getTokens(node);\n              const publicToken = tokens.find(token => token.value === 'public');\n\n              if (publicToken) {\n                return fixer.replaceText(publicToken, 'private');\n              } else {\n                return fixer.insertTextBefore(node.key, 'private ');\n              }\n            }\n          });\n        }\n      },\n    };\n  },\n};\n\nexport default rule;\n","import type { Rule } from 'eslint';\nimport { getDecorator, parseDecorator, stencilComponentContext } from '../utils';\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: 'This rule catches usages of events using @Listen decorator.',\n      category: 'Possible Errors',\n      recommended: true\n    },\n    schema: [],\n    type: 'problem'\n  },\n\n  create(context): Rule.RuleListener {\n    const stencil = stencilComponentContext();\n    return {\n      ...stencil.rules,\n      'MethodDefinition[kind=method]': (node: any) => {\n        if (!stencil.isComponent()) {\n          return;\n        }\n        const listenDec = getDecorator(node, 'Listen');\n        if (listenDec) {\n          const [eventName, opts] = parseDecorator(listenDec);\n          if (typeof eventName === 'string' && opts === undefined) {\n            const eventName = listenDec.expression.arguments[0].value;\n            if (PREFER_VDOM_LISTENER.includes(eventName)) {\n              context.report({\n                node: listenDec,\n                message: `Use vDOM listener instead.`\n              });\n            }\n          }\n        }\n      }\n    };\n  }\n};\n\nconst PREFER_VDOM_LISTENER = [\n  'click',\n  'touchstart',\n  'touchend',\n  'touchmove',\n  'mousedown',\n  'mouseup',\n  'mousemove',\n  'keyup',\n  'keydown',\n  'focusin',\n  'focusout',\n  'focus',\n  'blur'\n];\n\nexport default rule;\n","import type { Rule } from 'eslint';\nimport ts from 'typescript';\nimport { getDecorator, isPrivate, stencilComponentContext } from '../utils';\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: 'This rule catches Stencil Props marked as private or protected.',\n      category: 'Possible Errors',\n      recommended: true\n    },\n    schema: [],\n    type: 'problem',\n  },\n\n  create(context): Rule.RuleListener {\n    const stencil = stencilComponentContext();\n\n    const parserServices = context.sourceCode.parserServices;\n    return {\n      ...stencil.rules,\n      'PropertyDefinition': (node: any) => {\n        if (stencil.isComponent() && getDecorator(node, 'Prop')) {\n          const originalNode = parserServices.esTreeNodeToTSNodeMap.get(node) as ts.Node;\n          if (isPrivate(originalNode)) {\n            context.report({\n              node: node,\n              message: `Class properties decorated with @Prop() cannot be private nor protected`\n            });\n          }\n        }\n      }\n    };\n  }\n};\n\nexport default rule;\n","import type { Rule } from 'eslint';\nimport ts from 'typescript';\nimport { getDecorator, parseDecorator, stencilComponentContext } from '../utils';\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: 'This rule catches Stencil Props marked as non readonly.',\n      category: 'Possible Errors',\n      recommended: true\n    },\n    schema: [],\n    type: 'layout',\n    fixable: 'code'\n  },\n\n  create(context): Rule.RuleListener {\n    const stencil = stencilComponentContext();\n\n    const parserServices = context.sourceCode.parserServices;\n    return {\n      ...stencil.rules,\n      'PropertyDefinition': (node: any) => {\n        const propDecorator = getDecorator(node, 'Prop');\n        if (stencil.isComponent() && propDecorator) {\n          const [opts] = parseDecorator(propDecorator);\n          if (opts && opts.mutable === true) {\n            return;\n          }\n\n          const originalNode = parserServices.esTreeNodeToTSNodeMap.get(node) as ts.Node;\n          const hasReadonly = !!(\n              ts.canHaveModifiers(originalNode) &&\n              ts.getModifiers(originalNode)?.some(m => m.kind === ts.SyntaxKind.ReadonlyKeyword)\n          );\n          if (!hasReadonly) {\n            context.report({\n              node: node.key,\n              message: `Class properties decorated with @Prop() should be readonly`,\n              fix(fixer) {\n                return fixer.insertTextBefore(node.key, 'readonly ');\n              }\n            });\n          }\n        }\n      }\n    };\n  }\n};\n\nexport default rule;\n","/**\n * @fileoverview ESLint rules specific to Stencil JS projects.\n * @author Tom Chinery <tom.chinery@addtoevent.co.uk>\n */\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\nimport ts from 'typescript';\nimport type { Rule } from 'eslint';\nimport { stencilComponentContext } from '../utils';\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: 'This rule catches Stencil Prop names that share names of Global HTML Attributes.',\n      category: 'Possible Errors',\n      recommended: true\n    },\n    schema: [],\n    type: 'problem'\n  },\n\n  create(context): Rule.RuleListener {\n\n    //----------------------------------------------------------------------\n    // Public\n    //----------------------------------------------------------------------\n\n    const stencil = stencilComponentContext();\n    const parserServices = context.sourceCode.parserServices;\n    const typeChecker = parserServices.program.getTypeChecker() as ts.TypeChecker;\n\n    return {\n      ...stencil.rules,\n      'MethodDefinition[kind=method][key.name=render] ReturnStatement': (node: any) => {\n        if (!stencil.isComponent()) {\n          return;\n        }\n        const originalNode = parserServices.esTreeNodeToTSNodeMap.get(node.argument) as ts.MethodDeclaration;\n        const type = typeChecker.getTypeAtLocation(originalNode);\n        if (type && type.symbol && type.symbol.escapedName === 'Array') {\n          context.report({\n            node: node,\n            message: `Avoid returning an array in the render() function, use <Host> instead.`\n          });\n        }\n      }\n    };\n  }\n};\n\nexport default rule;\n","import type { Rule } from 'eslint';\nimport { getDecorator, stencilComponentContext } from '../utils';\n\nconst DECORATORS = ['Prop', 'Method', 'Event'];\nconst INVALID_TAGS = ['type', 'memberof'];\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: 'This rule catches Stencil Props and Methods using jsdoc.',\n      category: 'Possible Errors',\n      recommended: true\n    },\n    schema: [],\n    type: 'layout'\n  },\n\n  create(context): Rule.RuleListener {\n    const stencil = stencilComponentContext();\n\n    const parserServices = context.sourceCode.parserServices;\n\n    function getJSDoc(node: any) {\n      if (!stencil.isComponent()) {\n        return;\n      }\n\n      DECORATORS.forEach((decName) => {\n        if (getDecorator(node, decName)) {\n          const originalNode = parserServices.esTreeNodeToTSNodeMap.get(node);\n          const jsDoc = originalNode.jsDoc;\n          const isValid = jsDoc && jsDoc.length;\n          const haveTags = isValid &&\n              jsDoc.some((jsdoc: any) => jsdoc.tags && jsdoc.tags.length && jsdoc.tags.some(\n                  (tag: any) => INVALID_TAGS.includes(tag.tagName.escapedText.toLowerCase())));\n          if (!isValid) {\n            context.report({\n              node: node,\n              message: `The @${decName} decorator must be documented.`\n            });\n          } else if (haveTags) {\n            context.report({\n              node: node,\n              message: `The @${decName} decorator have not valid tags (${INVALID_TAGS.join(', ')}).`\n            });\n          }\n        }\n      });\n    }\n\n    return {\n      ...stencil.rules,\n      'PropertyDefinition': getJSDoc,\n      'MethodDefinition[kind=method]': getJSDoc\n    };\n  }\n};\n\nexport default rule;\n","import type { Rule } from 'eslint';\nimport { getDecorator, parseDecorator, stencilComponentContext } from '../utils';\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: 'This rule catches required prefix in component tag name.',\n      category: 'Possible Errors',\n      recommended: false\n    },\n    schema: [\n      {\n        type: 'array',\n        minLength: 1,\n        additionalProperties: false\n      }\n    ],\n    type: 'layout'\n  },\n\n  create(context): Rule.RuleListener {\n    const stencil = stencilComponentContext();\n\n    return {\n      ...stencil.rules,\n      'ClassDeclaration': (node: any) => {\n        const component = getDecorator(node, 'Component');\n        if (!component) {\n          return;\n        }\n        const [{ tag }] = parseDecorator(component);\n        const options = context.options[0];\n        const match = options.some((t: string) => tag.startsWith(t));\n\n        if (!match) {\n          context.report({\n            node: node,\n            message: `The component with tagName ${tag} have not a valid prefix.`\n          });\n        }\n      }\n    };\n  }\n};\n\nexport default rule;\n","/**\n * @fileoverview ESLint rules specific to Stencil JS projects.\n * @author Tom Chinery <tom.chinery@addtoevent.co.uk>\n */\n\n//------------------------------------------------------------------------------\n// Rule Definition\n//------------------------------------------------------------------------------\n\nimport type { Rule } from 'eslint';\nimport { stencilComponentContext } from '../utils';\nimport { JSDOM } from 'jsdom';\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: 'This rule catches Stencil Prop names that share names of Global HTML Attributes.',\n      category: 'Possible Errors',\n      recommended: true\n    },\n    schema: [],\n    type: 'problem'\n  },\n\n  create(context): Rule.RuleListener {\n\n    //----------------------------------------------------------------------\n    // Public\n    //----------------------------------------------------------------------\n    const stencil = stencilComponentContext();\n\n    const checkName = (node: any) => {\n      if (!stencil.isComponent()) {\n        return;\n      }\n      const decoratorName = node.expression.callee.name;\n      if (decoratorName === 'Prop' || decoratorName === 'Method') {\n        const propName = node.parent.key.name;\n        if (isReservedMember(propName)) {\n          context.report({\n            node: node.parent.key,\n            message: `The @${decoratorName} name \"${propName} conflicts with a key in the HTMLElement prototype. Please choose a different name.`\n          });\n        }\n        if (propName.startsWith('data-')) {\n          context.report({\n            node: node.parent.key,\n            message: 'Avoid using Global HTML Attributes as Prop names.'\n          });\n        }\n      }\n    };\n    return {\n      ...stencil.rules,\n      'PropertyDefinition > Decorator[expression.callee.name=Prop]': checkName,\n      'MethodDefinition[kind=method] > Decorator[expression.callee.name=Method]': checkName\n    };\n  }\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes\nconst GLOBAL_ATTRIBUTES = [\n  'about',\n  'accessKey',\n  'autocapitalize',\n  'autofocus',\n  'class',\n  'contenteditable',\n  'contextmenu',\n  'dir',\n  'draggable',\n  'enterkeyhint',\n  'hidden',\n  'id',\n  'inert',\n  'inputmode',\n  'id',\n  'itemid',\n  'itemprop',\n  'itemref',\n  'itemscope',\n  'itemtype',\n  'lang',\n  'nonce',\n  'part',\n  'popover',\n  'role',\n  'slot',\n  'spellcheck',\n  'style',\n  'tabindex',\n  'title',\n  'translate',\n  'virtualkeyboardpolicy',\n];\n\nconst JSX_KEYS = [\n  'ref',\n  'key'\n];\n\nfunction getHtmlElementProperties(): string[] {\n  const { window: win } = new JSDOM();\n  const { document: doc } = win;\n  const htmlElement = doc.createElement(\"tester-component\"); // creates a custom element base (HTMLElement)\n  const relevantInterfaces = [win.HTMLElement, win.Element, win.Node, win.EventTarget];\n  const props = new Set<string>();\n\n  let currentInstance = htmlElement;\n  while (currentInstance && relevantInterfaces.some(relevantInterface => currentInstance instanceof relevantInterface)) {\n    Object.getOwnPropertyNames(currentInstance).forEach((prop: string) => props.add(prop));\n    currentInstance = Object.getPrototypeOf(currentInstance);\n  }\n\n  return Array.from(props);\n}\n\nconst RESERVED_PUBLIC_MEMBERS = new Set([\n  ...GLOBAL_ATTRIBUTES,\n  ...getHtmlElementProperties(),\n  ...JSX_KEYS\n].map(p => p.toLowerCase()));\n\nfunction isReservedMember(memberName: string) {\n  return RESERVED_PUBLIC_MEMBERS.has(memberName.toLowerCase());\n}\n\nexport default rule;\n","import type { Rule } from 'eslint';\nimport ts from 'typescript';\nimport { getDecorator } from '../utils';\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: 'This rule catches modules that expose more than just the Stencil Component itself.',\n      category: 'Possible Errors',\n      recommended: true\n    },\n    schema: [],\n    type: 'problem'\n  },\n\n  create(context): Rule.RuleListener {\n    const parserServices = context.sourceCode.parserServices;\n    const typeChecker = parserServices.program.getTypeChecker() as ts.TypeChecker;\n    return {\n      'ClassDeclaration': (node: any) => {\n        const component = getDecorator(node, 'Component');\n        if (component) {\n          const originalNode = parserServices.esTreeNodeToTSNodeMap.get(node);\n          const nonTypeExports = typeChecker.getExportsOfModule(\n              typeChecker.getSymbolAtLocation(originalNode.getSourceFile())!)\n              .filter(symbol => (symbol.flags & (ts.SymbolFlags.Interface | ts.SymbolFlags.TypeAlias)) === 0)\n              .filter(symbol => symbol.name !== originalNode.name.text);\n\n          nonTypeExports.forEach(symbol => {\n            const errorNode = (symbol.valueDeclaration)\n                ? parserServices.tsNodeToESTreeNodeMap.get(symbol.valueDeclaration).id\n                : parserServices.tsNodeToESTreeNodeMap.get(symbol.declarations?.[0]);\n\n            context.report({\n              node: errorNode,\n              message: `To allow efficient bundling, modules using @Component() can only have a single export which is the component class itself. Any other exports should be moved to a separate file. For further information check out: https://stenciljs.com/docs/module-bundling`\n            });\n          });\n        }\n      }\n    };\n  }\n};\n\nexport default rule;\n","import type { Rule } from 'eslint';\nimport { parseDecorator, stencilComponentContext } from '../utils';\n\nconst mutableProps = new Map<string, any>();\nconst mutableAssigned = new Set<string>();\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: 'This rule catches mutable Props that not need to be mutable.',\n      category: 'Possible Errors',\n      recommended: true\n    },\n    schema: [],\n    type: 'layout',\n  },\n\n  create(context): Rule.RuleListener {\n    const stencil = stencilComponentContext();\n\n    function getMutable(node: any) {\n      if (!stencil.isComponent()) {\n        return;\n      }\n      const parsed = parseDecorator(node);\n      const mutable = parsed && parsed.length && parsed[0].mutable || false;\n\n      if (mutable) {\n        const varName = node.parent.key.name;\n        mutableProps.set(varName, node);\n      }\n    }\n\n    function checkAssigment(node: any) {\n      if (!stencil.isComponent()) {\n        return;\n      }\n      const propName = node.left.property.name;\n      mutableAssigned.add(propName);\n    }\n\n    stencil.rules[\"ClassDeclaration:exit\"]\n    return {\n      'ClassDeclaration': stencil.rules.ClassDeclaration,\n      'PropertyDefinition > Decorator[expression.callee.name=Prop]': getMutable,\n      'AssignmentExpression[left.object.type=ThisExpression][left.property.type=Identifier]': checkAssigment,\n      'ClassDeclaration:exit': (node: any) => {\n        const isCmp = stencil.isComponent();\n        stencil.rules[\"ClassDeclaration:exit\"](node);\n\n        if (isCmp) {\n          mutableAssigned.forEach((propName) => mutableProps.delete(propName));\n          mutableProps.forEach((varNode, varName) => {\n            context.report({\n              node: varNode.parent,\n              message: `@Prop() \"${varName}\" should not be mutable`,\n            });\n          });\n\n          mutableAssigned.clear();\n          mutableProps.clear();\n        }\n      }\n    };\n  }\n};\n\nexport default rule;\n","import type { Rule } from 'eslint';\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: 'This rule catches function calls at the top level',\n      category: 'Possible Errors',\n      recommended: false\n    },\n    schema: [\n      {\n        type: 'array',\n        items: {\n          type: 'string'\n        },\n        minLength: 0,\n        additionalProperties: false\n      }\n    ],\n    type: 'suggestion'\n  },\n\n  create(context): Rule.RuleListener {\n    const shouldSkip = /\\b(spec|e2e|test)\\./.test(context.filename);\n    const skipFunctions = context.options[0] || DEFAULTS;\n    if (shouldSkip) {\n      return {};\n    }\n    return {\n      'CallExpression': (node: any) => {\n        if (skipFunctions.includes(node.callee.name)) {\n          return;\n        }\n        if (!isInScope(node)) {\n          context.report({\n            node: node,\n            message: `Call expressions at the top-level should be avoided.`\n          });\n        }\n      }\n    };\n  }\n};\n\nconst isInScope = (n: any): boolean => {\n  const type = n.type;\n  if (\n    type === 'ArrowFunctionExpression' ||\n    type === 'FunctionDeclaration' ||\n    type === 'ClassDeclaration' ||\n    type === 'ExportNamedDeclaration'\n  ) {\n    return true;\n  }\n  n = n.parent;\n  if (n) {\n    return isInScope(n);\n  }\n  return false;\n}\n\nconst DEFAULTS = ['describe', 'test', 'bind', 'createStore'];\n\nexport default rule;\n\n","/**\n * @license\n * Copyright 2016 Palantir Technologies, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as ts from \"typescript\";\n\nimport type { Rule } from 'eslint';\n\nconst OPTION_ALLOW_NULL_UNION = \"allow-null-union\";\nconst OPTION_ALLOW_UNDEFINED_UNION = \"allow-undefined-union\";\nconst OPTION_ALLOW_STRING = \"allow-string\";\nconst OPTION_ALLOW_ENUM = \"allow-enum\";\nconst OPTION_ALLOW_NUMBER = \"allow-number\";\nconst OPTION_ALLOW_MIX = \"allow-mix\";\nconst OPTION_ALLOW_BOOLEAN_OR_UNDEFINED = \"allow-boolean-or-undefined\";\nconst OPTION_ALLOW_ANY_RHS = \"allow-any-rhs\";\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: `Restricts the types allowed in boolean expressions. By default only booleans are allowed.\n      The following nodes are checked:\n      * Arguments to the \\`!\\`, \\`&&\\`, and \\`||\\` operators\n      * The condition in a conditional expression (\\`cond ? x : y\\`)\n      * Conditions for \\`if\\`, \\`for\\`, \\`while\\`, and \\`do-while\\` statements.`,\n      category: 'Possible Errors',\n      recommended: true\n    },\n    schema: [{\n      type: \"array\",\n      items: {\n        type: \"string\",\n        enum: [\n          OPTION_ALLOW_NULL_UNION,\n          OPTION_ALLOW_UNDEFINED_UNION,\n          OPTION_ALLOW_STRING,\n          OPTION_ALLOW_ENUM,\n          OPTION_ALLOW_NUMBER,\n          OPTION_ALLOW_BOOLEAN_OR_UNDEFINED,\n          OPTION_ALLOW_ANY_RHS\n        ],\n      },\n      minLength: 0,\n      maxLength: 5,\n    }],\n    type: 'problem'\n  },\n\n  create(context): Rule.RuleListener {\n    const parserServices = context.sourceCode.parserServices;\n    const program = parserServices.program;\n    const rawOptions = context.options[0] || ['allow-null-union', 'allow-undefined-union', 'allow-boolean-or-undefined']\n    const options = parseOptions(rawOptions, true);\n    const checker = program.getTypeChecker() as ts.TypeChecker;\n\n    function walk(sourceFile: ts.SourceFile): void {\n      ts.forEachChild(sourceFile, function cb(node: ts.Node): void {\n        switch (node.kind) {\n          case ts.SyntaxKind.PrefixUnaryExpression: {\n            const {\n              operator,\n              operand\n            } = node as ts.PrefixUnaryExpression;\n            if (operator === ts.SyntaxKind.ExclamationToken) {\n              checkExpression(operand, node as ts.PrefixUnaryExpression);\n            }\n            break;\n          }\n\n          case ts.SyntaxKind.IfStatement:\n          case ts.SyntaxKind.WhileStatement:\n          case ts.SyntaxKind.DoStatement: {\n            const c = node as ts.IfStatement | ts.WhileStatement | ts.DoStatement;\n            // If it's a boolean binary expression, we'll check it when recursing.\n            checkExpression(c.expression, c);\n            break;\n          }\n\n          case ts.SyntaxKind.ConditionalExpression:\n            checkExpression((node as ts.ConditionalExpression).condition, node as ts.ConditionalExpression);\n            break;\n\n          case ts.SyntaxKind.ForStatement: {\n            const {\n              condition\n            } = node as ts.ForStatement;\n            if (condition !== undefined) {\n              checkExpression(condition, node as ts.ForStatement);\n            }\n          }\n        }\n\n        return ts.forEachChild(node, cb);\n      });\n\n      function checkExpression(node: ts.Expression, location: Location): void {\n        const type = checker.getTypeAtLocation(node);\n        const failure = getTypeFailure(type, options);\n        if (failure !== undefined) {\n          if (failure === TypeFailure.AlwaysTruthy &&\n            !options.strictNullChecks &&\n            (options.allowNullUnion || options.allowUndefinedUnion)) {\n            // OK; It might be null/undefined.\n            return;\n          }\n          const originalNode = parserServices.tsNodeToESTreeNodeMap.get(node);\n          context.report({\n            node: originalNode,\n            message: showFailure(location, failure, isUnionType(type), options),\n          })\n        }\n      }\n    }\n\n    return {\n      'Program': (node: any) => {\n        const sourceFile = parserServices.esTreeNodeToTSNodeMap.get(node);\n        walk(sourceFile);\n      }\n    };\n  }\n};\n\n\n\ninterface Options {\n  strictNullChecks: boolean;\n  allowNullUnion: boolean;\n  allowUndefinedUnion: boolean;\n  allowString: boolean;\n  allowEnum: boolean;\n  allowNumber: boolean;\n  allowMix: boolean;\n  allowBooleanOrUndefined: boolean;\n  allowAnyRhs: boolean;\n}\n\nfunction parseOptions(ruleArguments: string[], strictNullChecks: boolean): Options {\n  return {\n    strictNullChecks,\n    allowNullUnion: has(OPTION_ALLOW_NULL_UNION),\n    allowUndefinedUnion: has(OPTION_ALLOW_UNDEFINED_UNION),\n    allowString: has(OPTION_ALLOW_STRING),\n    allowEnum: has(OPTION_ALLOW_ENUM),\n    allowNumber: has(OPTION_ALLOW_NUMBER),\n    allowMix: has(OPTION_ALLOW_MIX),\n    allowBooleanOrUndefined: has(OPTION_ALLOW_BOOLEAN_OR_UNDEFINED),\n    allowAnyRhs: has(OPTION_ALLOW_ANY_RHS),\n  };\n\n  function has(name: string): boolean {\n    return ruleArguments.indexOf(name) !== -1;\n  }\n}\n\nfunction getTypeFailure(type: ts.Type, options: Options): TypeFailure | undefined {\n  if (isUnionType(type)) {\n    return handleUnion(type, options);\n  }\n\n  const kind = getKind(type);\n  const failure = failureForKind(kind, /*isInUnion*/ false, options);\n  if (failure !== undefined) {\n    return failure;\n  }\n\n  switch (triState(kind)) {\n    case true:\n      // Allow 'any'. Allow 'true' itself, but not any other always-truthy type.\n      // tslint:disable-next-line no-bitwise\n      return isTypeFlagSet(type, ts.TypeFlags.Any | ts.TypeFlags.BooleanLiteral) ? undefined : TypeFailure.AlwaysTruthy;\n    case false:\n      // Allow 'false' itself, but not any other always-falsy type\n      return isTypeFlagSet(type, ts.TypeFlags.BooleanLiteral) ? undefined : TypeFailure.AlwaysFalsy;\n    case undefined:\n      return undefined;\n  }\n}\n\nfunction isBooleanUndefined(type: ts.UnionType): boolean | undefined {\n  let isTruthy = false;\n  for (const ty of type.types) {\n    if (isTypeFlagSet(ty, ts.TypeFlags.Boolean)) {\n      isTruthy = true;\n    } else if (isTypeFlagSet(ty, ts.TypeFlags.BooleanLiteral)) {\n      isTruthy = isTruthy || (ty as ts.IntrinsicType).intrinsicName === \"true\";\n    } else if (!isTypeFlagSet(ty, ts.TypeFlags.Void | ts.TypeFlags.Undefined)) { // tslint:disable-line:no-bitwise\n      return undefined;\n    }\n  }\n  return isTruthy;\n}\n\nfunction handleUnion(type: ts.UnionType, options: Options): TypeFailure | undefined {\n  if (options.allowBooleanOrUndefined) {\n    switch (isBooleanUndefined(type)) {\n      case true:\n        return undefined;\n      case false:\n        return TypeFailure.AlwaysFalsy;\n    }\n  }\n\n  for (const ty of type.types) {\n    const kind = getKind(ty);\n    const failure = failureForKind(kind, /*isInUnion*/ true, options);\n    if (failure !== undefined) {\n      return failure;\n    }\n  }\n  return undefined;\n}\n\n/** Fails if a kind of falsiness is not allowed. */\nfunction failureForKind(kind: TypeKind, isInUnion: boolean, options: Options): TypeFailure | undefined {\n  switch (kind) {\n    case TypeKind.String:\n    case TypeKind.FalseStringLiteral:\n      return options.allowString ? undefined : TypeFailure.String;\n    case TypeKind.Number:\n    case TypeKind.FalseNumberLiteral:\n      return options.allowNumber ? undefined : TypeFailure.Number;\n    case TypeKind.Enum:\n      return options.allowEnum ? undefined : TypeFailure.Enum;\n    case TypeKind.Promise:\n      return TypeFailure.Promise;\n    case TypeKind.Null:\n      return isInUnion && !options.allowNullUnion ? TypeFailure.Null : undefined;\n    case TypeKind.Undefined:\n      return isInUnion && !options.allowUndefinedUnion ? TypeFailure.Undefined : undefined;\n    default:\n      return undefined;\n  }\n}\n\nexport type Location = |\n  ts.PrefixUnaryExpression |\n  ts.IfStatement |\n  ts.WhileStatement |\n  ts.DoStatement |\n  ts.ForStatement |\n  ts.ConditionalExpression |\n  ts.BinaryExpression;\n\nexport const enum TypeFailure {\n  AlwaysTruthy,\n  AlwaysFalsy,\n  String,\n  Number,\n  Null,\n  Undefined,\n  Enum,\n  Mixes,\n  Promise\n}\n\nconst enum TypeKind {\n  String,\n  FalseStringLiteral,\n  Number,\n  FalseNumberLiteral,\n  Boolean,\n  FalseBooleanLiteral,\n  Null,\n  Undefined,\n  Enum,\n  AlwaysTruthy,\n  Promise\n}\n\n/** Divides a type into always true, always false, or unknown. */\nfunction triState(kind: TypeKind): boolean | undefined {\n  switch (kind) {\n    case TypeKind.String:\n    case TypeKind.Number:\n    case TypeKind.Boolean:\n    case TypeKind.Enum:\n      return undefined;\n\n    case TypeKind.Null:\n    case TypeKind.Undefined:\n    case TypeKind.FalseNumberLiteral:\n    case TypeKind.FalseStringLiteral:\n    case TypeKind.FalseBooleanLiteral:\n      return false;\n\n    case TypeKind.AlwaysTruthy:\n    case TypeKind.Promise:\n      return true;\n  }\n}\n\nfunction getKind(type: ts.Type): TypeKind {\n  return is(ts.TypeFlags.StringLike) ? TypeKind.String :\n    is(ts.TypeFlags.NumberLike) ? TypeKind.Number :\n    is(ts.TypeFlags.Boolean) ? TypeKind.Boolean :\n    isObject('Promise') ? TypeKind.Promise :\n    is(ts.TypeFlags.Null) ? TypeKind.Null :\n    is(ts.TypeFlags.Undefined | ts.TypeFlags.Void) ? TypeKind.Undefined // tslint:disable-line:no-bitwise\n    :\n    is(ts.TypeFlags.EnumLike) ? TypeKind.Enum :\n    is(ts.TypeFlags.BooleanLiteral) ?\n    ((type as ts.IntrinsicType).intrinsicName === \"true\" ? TypeKind.AlwaysTruthy : TypeKind.FalseBooleanLiteral) :\n    TypeKind.AlwaysTruthy;\n\n  function is(flags: ts.TypeFlags) {\n    return isTypeFlagSet(type, flags);\n  }\n\n  function isObject(name: string) {\n    const symbol = type.getSymbol();\n    return (symbol && symbol.getName() === name)\n  }\n}\n\n\nfunction binaryBooleanExpressionKind(node: ts.BinaryExpression): \"&&\" | \"||\" | undefined {\n  switch (node.operatorToken.kind) {\n    case ts.SyntaxKind.AmpersandAmpersandToken:\n      return \"&&\";\n    case ts.SyntaxKind.BarBarToken:\n      return \"||\";\n    default:\n      return undefined;\n  }\n}\n\nfunction stringOr(parts: string[]): string {\n  switch (parts.length) {\n    case 1:\n      return parts[0];\n    case 2:\n      return `${parts[0]} or ${parts[1]}`;\n    default:\n      let res = \"\";\n      for (let i = 0; i < parts.length - 1; i++) {\n        res += `${parts[i]}, `;\n      }\n      return `${res}or ${parts[parts.length - 1]}`;\n  }\n}\n\nfunction isUnionType(type: ts.Type): type is ts.UnionType {\n  return isTypeFlagSet(type, ts.TypeFlags.Union) && !isTypeFlagSet(type, ts.TypeFlags.Enum);\n}\n\nfunction showLocation(n: Location): string {\n  switch (n.kind) {\n    case ts.SyntaxKind.PrefixUnaryExpression:\n      return \"operand for the '!' operator\";\n    case ts.SyntaxKind.ConditionalExpression:\n      return \"condition\";\n    case ts.SyntaxKind.ForStatement:\n      return \"'for' condition\";\n    case ts.SyntaxKind.IfStatement:\n      return \"'if' condition\";\n    case ts.SyntaxKind.WhileStatement:\n      return \"'while' condition\";\n    case ts.SyntaxKind.DoStatement:\n      return \"'do-while' condition\";\n    case ts.SyntaxKind.BinaryExpression:\n      return `operand for the '${binaryBooleanExpressionKind(n)}' operator`;\n  }\n}\n\nfunction showFailure(location: Location, ty: TypeFailure, unionType: boolean, options: Options): string {\n  const expectedTypes = showExpectedTypes(options);\n  const expected = expectedTypes.length === 1 ?\n    `Only ${expectedTypes[0]}s are allowed` :\n    `Allowed types are ${stringOr(expectedTypes)}`;\n  const tyFail = showTypeFailure(ty, unionType, options.strictNullChecks);\n  return `This type is not allowed in the ${showLocation(location)} because it ${tyFail}. ${expected}.`;\n}\n\nfunction showExpectedTypes(options: Options): string[] {\n  const parts = [\"boolean\"];\n  if (options.allowNullUnion) {\n    parts.push(\"null-union\");\n  }\n  if (options.allowUndefinedUnion) {\n    parts.push(\"undefined-union\");\n  }\n  if (options.allowString) {\n    parts.push(\"string\");\n  }\n  if (options.allowEnum) {\n    parts.push(\"enum\");\n  }\n  if (options.allowNumber) {\n    parts.push(\"number\");\n  }\n  if (options.allowBooleanOrUndefined) {\n    parts.push(\"boolean-or-undefined\");\n  }\n  return parts;\n}\n\nfunction showTypeFailure(ty: TypeFailure, unionType: boolean, strictNullChecks: boolean) {\n  const is = unionType ? \"could be\" : \"is\";\n  switch (ty) {\n    case TypeFailure.AlwaysTruthy:\n      return strictNullChecks ?\n        \"is always truthy\" :\n        \"is always truthy. It may be null/undefined, but neither \" +\n        `'${OPTION_ALLOW_NULL_UNION}' nor '${OPTION_ALLOW_UNDEFINED_UNION}' is set`;\n    case TypeFailure.AlwaysFalsy:\n      return \"is always falsy\";\n    case TypeFailure.String:\n      return `${is} a string`;\n    case TypeFailure.Number:\n      return `${is} a number`;\n    case TypeFailure.Null:\n      return `${is} null`;\n    case TypeFailure.Undefined:\n      return `${is} undefined`;\n    case TypeFailure.Enum:\n      return `${is} an enum`;\n    case TypeFailure.Promise:\n      return \"promise handled as boolean expression\";\n    case TypeFailure.Mixes:\n      return \"unions more than one truthy/falsy type\";\n  }\n}\n\nfunction isTypeFlagSet(obj: any, flag: any) {\n  return (obj.flags & flag) !== 0;\n}\n\ndeclare module \"typescript\" {\n  // No other way to distinguish boolean literal true from boolean literal false\n  export interface IntrinsicType extends ts.Type {\n    intrinsicName: string;\n  }\n}\n\nexport default rule;\n","import type { Rule } from 'eslint';\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: 'This rule catches exports of const enums',\n      category: 'Possible Errors',\n      recommended: true\n    },\n    schema: [],\n    type: 'problem'\n  },\n\n  create(context): Rule.RuleListener {\n    return {\n      'ExportNamedDeclaration > TSEnumDeclaration[const]': (node: any) => {\n        context.report({\n          node: node,\n          message: `Exported const enums are not allowed`\n        });\n      }\n    };\n  }\n};\n\nexport default rule;\n","import type { Rule } from 'eslint';\nimport ts from 'typescript';\nimport { stencilComponentContext } from '../utils';\nimport * as tsutils from 'tsutils';\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    docs: {\n      description: 'This rule can provide suggestions about dependencies in stencil apps',\n      recommended: true\n    },\n    schema: [],\n    type: 'suggestion',\n  },\n\n  create(context): Rule.RuleListener {\n    return {\n      'ImportDeclaration': (node: any) => {\n        const importName = node.source.value;\n        const message = SUGGESTIONS[importName];\n        if (message) {\n          context.report({\n            node,\n            message\n          });\n        }\n      }\n    };\n  }\n};\n\nconst SUGGESTIONS: {[importName: string]: string} = {\n  'classnames': `Stencil can already render conditional classes:\n  <div class={{disabled: condition}}>`,\n  'lodash': `\"lodash\" will bloat your build, use \"lodash-es\" instead: https://www.npmjs.com/package/lodash-es`,\n  'moment': `\"moment\" will bloat your build, use \"dayjs\", \"date-fns\" or other modern lightweight alternaitve`,\n  'core-js': `Stencil already include the core-js polyfills only when needed`,\n}\n\nexport default rule;\n","import asyncMethods from './async-methods';\nimport banDefaultTrue from './ban-default-true';\nimport banPrefix from './ban-prefix';\nimport classPattern from './class-pattern';\nimport decoratorsContext from './decorators-context';\nimport decoratorsStyle from './decorators-style';\nimport elementType from './element-type';\nimport hostDataDeprecated from './host-data-deprecated';\nimport methodsMustBePublic from './methods-must-be-public';\nimport noUnusedWatch from './no-unused-watch';\nimport ownMethodsMustBePrivate from './own-methods-must-be-private';\nimport ownPropsMustBePrivate from './own-props-must-be-private';\nimport preferVdomListener from './prefer-vdom-listener';\nimport propsMustBePublic from './props-must-be-public';\nimport propsMustBeReadonly from './props-must-be-readonly';\nimport renderReturnsHost from './render-returns-host';\nimport requiredJsdoc from './required-jsdoc';\nimport requiredPrefix from './required-prefix';\nimport reservedMemberNames from './reserved-member-names';\nimport singleExport from './single-export';\nimport strictMutable from './strict-mutable';\nimport banSideEffects from './ban-side-effects';\nimport strictBooleanConditions from './strict-boolean-conditions';\nimport banExportedConstEnums from './ban-exported-const-enums';\nimport dependencySuggestions from './dependency-suggestions';\n\nexport default {\n  'ban-side-effects': banSideEffects,\n  'ban-default-true': banDefaultTrue,\n  'ban-exported-const-enums': banExportedConstEnums,\n  'dependency-suggestions': dependencySuggestions,\n  'strict-boolean-conditions': strictBooleanConditions,\n  'async-methods': asyncMethods,\n  'ban-prefix': banPrefix,\n  'class-pattern': classPattern,\n  'decorators-context': decoratorsContext,\n  'decorators-style': decoratorsStyle,\n  'element-type': elementType,\n  'host-data-deprecated': hostDataDeprecated,\n  'methods-must-be-public': methodsMustBePublic,\n  'no-unused-watch': noUnusedWatch,\n  'own-methods-must-be-private': ownMethodsMustBePrivate,\n  'own-props-must-be-private': ownPropsMustBePrivate,\n  'prefer-vdom-listener': preferVdomListener,\n  'props-must-be-public': propsMustBePublic,\n  'props-must-be-readonly': propsMustBeReadonly,\n  'render-returns-host': renderReturnsHost,\n  'required-jsdoc': requiredJsdoc,\n  'required-prefix': requiredPrefix,\n  'reserved-member-names': reservedMemberNames,\n  'single-export': singleExport,\n  'strict-mutable': strictMutable\n};\n","import type { Linter } from 'eslint';\n\nexport default {\n  overrides: [\n    {\n      files: ['*.ts', '*.tsx'],\n      parser: '@typescript-eslint/parser',\n      parserOptions: {\n        ecmaVersion: 2018,\n        sourceType: 'module',\n        ecmaFeatures: {\n          'jsx': true\n        }\n      },\n      env: {\n        es2020: true,\n        browser: true,\n      },\n      plugins: [\n        'stencil'\n      ],\n      rules: {\n        'stencil/async-methods': 2,\n        'stencil/ban-prefix': [2, ['stencil', 'stnl', 'st']],\n        'stencil/decorators-context': 2,\n        'stencil/element-type': 2,\n        'stencil/host-data-deprecated': 2,\n        'stencil/methods-must-be-public': 2,\n        'stencil/no-unused-watch': 2,\n        'stencil/prefer-vdom-listener': 2,\n        'stencil/props-must-be-public': 2,\n        'stencil/render-returns-host': 2,\n        'stencil/reserved-member-names': 2,\n        'stencil/single-export': 2,\n      }\n    }\n  ],\n  settings: {\n    \"react\": {\n      // intentionally fill the version field with an invalid semver string. this appears to remove the error/warning\n      // emitted to the console when this key/value pair is not in place, but does not tie us to a version of React,\n      // even superficially\n      \"version\": \"stencil-maintainers-put-an-invalid-version-intentionally-if-this-errors-please-raise-an-issue-https://github.com/stenciljs/eslint-plugin/issues\",\n    }\n  },\n} satisfies Linter.BaseConfig;\n","import type { Linter } from 'eslint';\n\nexport default {\n  plugins: [\n    \"react\"\n  ],\n  extends: [\n    \"plugin:stencil/base\",\n  ],\n  rules: {\n    'stencil/strict-boolean-conditions': 1,\n    'stencil/ban-default-true': 1,\n    'stencil/ban-exported-const-enums': 2,\n    'stencil/ban-side-effects': 2,\n    'stencil/strict-mutable': 2,\n    'stencil/decorators-style': [\n      'error', {\n        prop: 'inline',\n        state: 'inline',\n        element: 'inline',\n        event: 'inline',\n        method: 'multiline',\n        watch: 'multiline',\n        listen: 'multiline'\n      }\n    ],\n    'stencil/own-methods-must-be-private': 1,\n    'stencil/own-props-must-be-private': 1,\n    'stencil/dependency-suggestions': 1,\n    'stencil/required-jsdoc': 1,\n    \"react/jsx-no-bind\": [1, {\n      \"ignoreRefs\": true\n    }]\n  }\n} satisfies Linter.BaseConfig;\n","import type { Linter } from 'eslint';\n\nexport default {\n  extends: [\n    \"eslint:recommended\",\n    \"plugin:@typescript-eslint/eslint-recommended\",\n    \"plugin:@typescript-eslint/recommended\",\n    \"plugin:stencil/recommended\",\n  ],\n  rules: {\n    'stencil/ban-default-true': 2,\n    'stencil/strict-boolean-conditions': 2,\n\n    // Resets\n    \"@typescript-eslint/camelcase\": 0,\n    \"@typescript-eslint/explicit-function-return-type\": 0,\n    \"@typescript-eslint/ban-ts-ignore\": 0,\n    \"@typescript-eslint/no-this-alias\": 0,\n    \"@typescript-eslint/no-non-null-assertion\": 0,\n    \"@typescript-eslint/no-unused-vars\": 0,\n    \"@typescript-eslint/no-empty-interface\": 0,\n    \"@typescript-eslint/no-use-before-define\": 0,\n    \"@typescript-eslint/no-explicit-any\": 0,\n    \"no-constant-condition\": 0,\n\n\n    // Best practices\n    \"no-shadow\": 2,\n    \"no-var\": 2,\n    \"prefer-object-spread\": 2,\n    \"no-nested-ternary\": 2,\n    \"no-duplicate-imports\": 2,\n\n    // General formatting\n    \"indent\": [2, 2],\n    \"no-trailing-spaces\": 2,\n    \"curly\": [2, \"all\"],\n    \"comma-spacing\": 2,\n    \"comma-style\": 2,\n    \"computed-property-spacing\": 2,\n    \"comma-dangle\": [2, {\n      'objects': 'always-multiline'\n    }],\n    \"func-style\": [2, \"expression\", { \"allowArrowFunctions\": true }],\n    \"multiline-ternary\": [2, \"always-multiline\"],\n    \"operator-linebreak\": [2, \"after\", { \"overrides\": { \"?\": \"before\", \":\": \"before\" } }],\n    \"linebreak-style\": 2,\n    \"space-in-parens\": 2,\n    \"@typescript-eslint/semi\": 2,\n    \"@typescript-eslint/brace-style\": 2,\n    \"@typescript-eslint/func-call-spacing\": 2,\n\n    // JSX formatting\n    \"react/jsx-closing-tag-location\": 2,\n    \"react/jsx-curly-newline\": [2, \"never\"],\n    \"react/jsx-closing-bracket-location\": 2,\n    \"react/jsx-curly-spacing\": [2, {\"when\": \"never\", \"children\": true}],\n    \"react/jsx-boolean-value\": [2, \"never\"],\n    \"react/jsx-child-element-spacing\": 2,\n    \"react/jsx-indent-props\": [2, \"first\"],\n    \"react/jsx-props-no-multi-spaces\": 2,\n    \"react/jsx-equals-spacing\": [2, \"never\"],\n  }\n} satisfies Linter.BaseConfig;\n","import type { Linter } from 'eslint';\n\nimport base from './base';\nimport recommended from './recommended';\nimport strict from './strict';\n\nexport default {\n  base,\n  recommended,\n  strict,\n  /**\n   * will be populated in `/src/index.ts`\n   * For backward compatibility\n   */\n  flat: {} as Record<string, Linter.Config>\n};\n","/**\n * @fileoverview ESLint rules specific to Stencil JS projects.\n * @author Tom Chinery &lt;tom.chinery@addtoevent.co.uk&gt;\n */\n\nimport type { Linter } from 'eslint';\nimport react from 'eslint-plugin-react';\nimport rules from './rules';\nimport configs from './configs';\n\nconst plugin = {\n  rules,\n  configs\n};\n\nconst flatBase: Linter.Config = {\n  plugins: { 'stencil': plugin },\n  rules: configs.base.overrides[0].rules,\n  languageOptions: { parserOptions: configs.base.overrides[0].parserOptions },\n}\n\nconst flatRecommended: Linter.Config = {\n  plugins: { \n    react: react, \n    'stencil': plugin \n  },\n  rules: configs.recommended.rules,\n  languageOptions: { parserOptions: configs.base.overrides[0].parserOptions },\n}\n\nconst flatStrict: Linter.Config = {\n  plugins: { \n    react: react, \n    'stencil': plugin \n  },\n  rules: configs.strict.rules,\n  languageOptions: { parserOptions: configs.base.overrides[0].parserOptions },\n}\n\nconfigs.flat = {\n  base: flatBase,\n  recommended: flatRecommended,\n  strict: flatStrict,\n}\n\nexport default plugin;\n"],"mappings":"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"}