@tony.ganchev/eslint-plugin-header 3.4.2 → 3.4.4

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/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
  The native ESLint 9/10 standard header-validating plugin. A zero-bloat, drop-in
8
8
  replacement for [eslint-plugin-header](https://github.com/Stuk/eslint-plugin-header)
9
9
  with first-class Flat Config & TypeScript support. Auto-fix copyright, license,
10
- and banner comments in JavaScript, TypeScript, Vue, Svelte, CSS, HTML, and
10
+ and banner comments in JavaScript, TypeScript, Vue, Svelte, CSS, HTML, YAML, and
11
11
  Markdown files. Supports _oxlint_.
12
12
 
13
13
  ## Table of Contents
@@ -33,6 +33,7 @@ Markdown files. Supports _oxlint_.
33
33
  7. [Linting Vue](#linting-vue)
34
34
  8. [Linting Svelte](#linting-svelte)
35
35
  9. [Linting Markdown](#linting-markdown)
36
+ 10. [Linting YAML](#linting-yaml)
36
37
  5. [Comparison to Alternatives](#comparison-to-alternatives)
37
38
  1. [Compared to eslint-plugin-headers](#compared-to-eslint-plugin-headers)
38
39
  1. [Health Scans](#health-scans)
@@ -78,8 +79,14 @@ consistent header structures. Notable adopters include:
78
79
     
79
80
  [![Salesforce](https://github.com/forcedotcom.png?size=48)](./docs/consumers.md#salesforce)
80
81
     
82
+ [![Google](https://github.com/google.png?size=48)](./docs/consumers.md#google)
83
+    
81
84
  [![Angular](https://github.com/angular.png?size=48)](./docs/consumers.md#angular)
82
85
     
86
+ [![Broadcom](https://github.com/broadcom.png?size=48)](./docs/consumers.md#broadcom)
87
+    
88
+ [![VMware](https://github.com/vmware.png?size=48)](./docs/consumers.md#vmware)
89
+    
83
90
  [![Amazon](https://github.com/aws.png?size=48)](./docs/consumers.md#amazon)
84
91
     
85
92
  [![Amazon Cloudscape Design System](https://github.com/cloudscape-design.png?size=48)](./docs/consumers.md#cloudscape-design-system)
@@ -94,6 +101,8 @@ consistent header structures. Notable adopters include:
94
101
     
95
102
  [![FlowCrypt Browser Extensions](https://github.com/flowcrypt.png?size=48)](./docs/consumers.md#flowcrypt)
96
103
     
104
+ [![Frontify](https://github.com/Frontify.png?size=48)](./docs/consumers.md#frontify)
105
+    
97
106
  [![Cratis](https://github.com/Cratis.png?size=48)](./docs/consumers.md#cratis)
98
107
     
99
108
  [![Mysten Labs](https://github.com/MystenLabs.png?size=48)](./docs/consumers.md#mysten-labs)
@@ -134,9 +143,10 @@ statements. Smoke tests cover this support as well.
134
143
  ### Languages
135
144
 
136
145
  Currently the plugin supports linting copyright headers in JavaScript,
137
- TypeScript and their JSX / TSX flavors; Vue, Svelte, CSS, HTML, and Markdown
138
- files. As mentioned in the previous sections, not all languages are supported
139
- for oxlint or ESLint older than 9. Refer to the table below for more details.
146
+ TypeScript and their JSX / TSX flavors; Vue, Svelte, CSS, HTML, YAML, and
147
+ Markdown files. As mentioned in the previous sections, not all languages are
148
+ supported for oxlint or ESLint older than 9. Refer to the table below for more
149
+ details.
140
150
 
141
151
  | Language | ESLint 7 / 8 | ESLint 9 / 10 | oxlint |
142
152
  |------------|---------------|---------------|--------|
@@ -148,6 +158,7 @@ for oxlint or ESLint older than 9. Refer to the table below for more details.
148
158
  | Svelte | ✅ Yes | ✅ Yes | ❌ No |
149
159
  | CSS | ❌ No | ✅ Yes | ❌ No |
150
160
  | HTML | ❌ No | ✅ Yes | ❌ No |
161
+ | YAML | ❌ No | ✅ Yes | ❌ No |
151
162
  | Markdown | ❌ No | ✅ Yes | ❌ No |
152
163
 
153
164
  ## Usage
@@ -1488,6 +1499,50 @@ Markdown (`**/*.md/*.js`). Same applies to `*.ts`, `*.jsx`, `*.tsx`, etc.
1488
1499
 
1489
1500
  As with CSS, only block comments are supported - no line- or shebang comments.
1490
1501
 
1502
+ ### Linting YAML
1503
+
1504
+ The rule supports linting copyright notices in YAML files. The rule works with
1505
+ the _eslint-plugin-yml_ plugin and its parser.
1506
+
1507
+ Similar to CSS and Markdown, all you need to do to turn on header validation is
1508
+ to configure the _eslint-plugin-yml_ plugin, the correct language, and the rule:
1509
+
1510
+ ```ts
1511
+ import header from "@tony.ganchev/eslint-plugin-header";
1512
+ import yml from "eslint-plugin-yml";
1513
+
1514
+ export default [
1515
+ {
1516
+ files: ["**/*.yaml", "**/*.yml"],
1517
+ plugins: {
1518
+ "@tony.ganchev": header,
1519
+ yml
1520
+ },
1521
+ language: "yml/yaml",
1522
+ rules: {
1523
+ "@tony.ganchev/header": [
1524
+ "error",
1525
+ {
1526
+ header: {
1527
+ commentType: "line",
1528
+ lines: [" Copyright 2025 "]
1529
+ }
1530
+ }
1531
+ ]
1532
+ }
1533
+ }
1534
+ ];
1535
+ ```
1536
+
1537
+ ```yaml
1538
+ # Copyright 2025
1539
+
1540
+ foo: bar
1541
+ ```
1542
+
1543
+ As YAML only supports line comments, be sure to use `commentType: "line"`. If
1544
+ `commentType: "block"` is used, the rule will report a violation.
1545
+
1491
1546
  ## Comparison to Alternatives
1492
1547
 
1493
1548
  A number of projects have been aiming to solve problems similar to
@@ -1583,20 +1638,25 @@ migrate to _\@tony.ganchev/eslint-plugin-header_.
1583
1638
 
1584
1639
  ### Compared to [eslint-plugin-notice](https://github.com/earl-man/eslint-plugin-notice)
1585
1640
 
1586
- _eslint-plugin-notice_ is another alternative that uses a template-based approach
1587
- (powered by Lodash templates) to manage headers. This makes it quite powerful for
1588
- dynamic content but also brings in more dependencies and a more complex
1589
- configuration schema that doesn't always feel "native" to the new ESLint Flat
1590
- Config era.
1641
+ _eslint-plugin-notice_ is another alternative that uses a template-based
1642
+ approach (powered by Lodash templates) to manage headers. This makes it quite
1643
+ powerful for dynamic content but also brings in more dependencies and a more
1644
+ complex configuration schema that doesn't always feel "native" to the new ESLint
1645
+ Flat Config era.
1591
1646
 
1592
1647
  Key differences:
1593
1648
 
1649
+ - **Compatibility**: _eslint-plugin-notice_ **does not support ESLint 10** and
1650
+ **does not provide TypeScript bindings**.
1651
+ - **Support**: _eslint-plugin-notice_ has **not seen its code updated in 2
1652
+ years** and has pull request published by the project's owner dangling for
1653
+ over 2 years.
1594
1654
  - **Philosophy**: _\@tony.ganchev/eslint-plugin-header_ focuses on a zero-bloat,
1595
1655
  native ESLint feel with first-class support for Flat Config and TypeScript.
1596
- - **ESLint 9/10**: Our plugin is built from the ground up to support the latest
1597
- ESLint versions and their core features.
1656
+ The project offers much more features and includes a much larger list of
1657
+ supported languages.
1598
1658
  - **Languages**: We provide native support for linting headers in HTML, CSS,
1599
- and Markdown via their respective ESLint ecosystem plugins.
1659
+ Vue, Svelte, YAML, Markdown via their respective ESLint plugins and parsers.
1600
1660
  - **Simplicity**: No need for external template engines or complex variable
1601
1661
  mappings. Use standard JavaScript template literals in your `eslint.config.ts`
1602
1662
  to handle dynamic years or other variables.
@@ -35,7 +35,6 @@ const { lineEndingOptions, commentTypeOptions, schema } = require("./header.sche
35
35
  /**
36
36
  * @import { JSSyntaxElement, Linter, Rule, SourceCode } from "eslint"
37
37
  * @import { Comment, SourceLocation } from "estree"
38
- * @import { ViolationReport } from "@eslint/core";
39
38
  * @typedef {Rule.NodeListener} NodeListener
40
39
  * @typedef {Rule.ReportFixer} ReportFixer
41
40
  * @typedef {Rule.RuleFixer} RuleFixer
@@ -206,7 +205,7 @@ function match(actual, expected) {
206
205
 
207
206
  /**
208
207
  * @typedef {object} Language
209
- * @property { BlockComment } blockComment The tokens delimiting a block
208
+ * @property { BlockComment } [blockComment] The tokens delimiting a block
210
209
  * comment.
211
210
  * @property { LineComment } [lineComment] The tokens delimiting a line comment
212
211
  * if such is allowed.
@@ -348,7 +347,8 @@ function getLeadingComments(sourceCode, language) {
348
347
  */
349
348
  function genCommentBody(commentType, textArray, eol, language) {
350
349
  if (commentType === commentTypeOptions.block) {
351
- return language.blockComment.startDelimiter + textArray.join(eol) + language.blockComment.endDelimiter;
350
+ const blockComment = /** @type {BlockComment} */ (language.blockComment);
351
+ return blockComment.startDelimiter + textArray.join(eol) + blockComment.endDelimiter;
352
352
  } else {
353
353
  const lineStartDelimiter = /** @type {LineComment} */ (language.lineComment).startDelimiter;
354
354
  // We need one trailing EOL on line comments to ensure the fixed source
@@ -413,8 +413,15 @@ function genPrependFixer(commentType, sourceCode, headerLines, eol, numNewlines,
413
413
  newHeader = eol + newHeader;
414
414
  }
415
415
  }
416
- const numEmptyLines = leadingEmptyLines(sourceCode.text.substring(insertPos));
417
- const additionalEmptyLines = Math.max(0, numNewlines - numEmptyLines);
416
+ const existingSourceCodeFromInsertPos = sourceCode.text.substring(insertPos);
417
+ const numEmptyLines = leadingEmptyLines(existingSourceCodeFromInsertPos);
418
+ const additionalEmptyLines = Math.max(numNewlines - numEmptyLines,
419
+ (commentType === commentTypeOptions.line
420
+ && existingSourceCodeFromInsertPos.startsWith(
421
+ /** @type {{ startDelimiter: string }} */(language.lineComment).startDelimiter))
422
+ ? 1
423
+ : 0
424
+ );
418
425
  newHeader += eol.repeat(additionalEmptyLines);
419
426
  return fixer.insertTextBeforeRange(
420
427
  [insertPos, insertPos /* don't care */],
@@ -700,19 +707,14 @@ class CommentMatcher {
700
707
  this.language = language;
701
708
  }
702
709
 
703
- /**
704
- * @typedef {ViolationReport<JSSyntaxElement, string>} ViolationReportBad
705
- * @typedef {ViolationReportBad & { messageId: string }} ViolationReportEx
706
- */
707
-
708
710
  /**
709
711
  * Performs a validation of a comment against a header matching
710
712
  * configuration.
711
713
  * @param {CommentEx[]} leadingComments The block comment or sequence of
712
714
  * line comments to test.
713
715
  * @param {SourceCode} sourceCode The source code AST.
714
- * @returns {ViolationReportEx | null} If set a
715
- * violation report to pass back to ESLint or interpret as necessary.
716
+ * @returns {Rule.ReportDescriptor | null} If set a violation report to pass
717
+ * back to ESLint or interpret as necessary.
716
718
  */
717
719
  validate(leadingComments, sourceCode) {
718
720
 
@@ -833,7 +835,7 @@ class CommentMatcher {
833
835
  }
834
836
  }
835
837
 
836
- const commentRange = leadingComments[this.headerLines.length - 1].range;
838
+ const commentRange = leadingComments[leadingComments.length - 1].range;
837
839
  const actualLeadingEmptyLines = leadingEmptyLines(sourceCode.text.substring(commentRange[1]));
838
840
  const missingEmptyLines = this.numLines - actualLeadingEmptyLines;
839
841
  if (missingEmptyLines > 0) {
@@ -849,6 +851,7 @@ class CommentMatcher {
849
851
 
850
852
  return null;
851
853
  }
854
+
852
855
  // if block comment pattern has more than 1 line, we also split the
853
856
  // comment
854
857
  let leadingLines = [leadingComments[0].value];
@@ -862,8 +865,9 @@ class CommentMatcher {
862
865
  let errorMessageData;
863
866
  /** @type {null | SourceLocation} */
864
867
  let errorMessageLoc = null;
865
- const blockStartLen = this.language.blockComment.startDelimiter.length;
866
- const blockEndLen = this.language.blockComment.endDelimiter.length;
868
+ const blockComment = /** @type {BlockComment} */(this.language.blockComment);
869
+ const blockStartLen = blockComment.startDelimiter.length;
870
+ const blockEndLen = blockComment.endDelimiter.length;
867
871
 
868
872
  for (let i = 0; i < this.headerLines.length; i++) {
869
873
  if (leadingLines.length - 1 < i) {
@@ -1017,7 +1021,8 @@ const headerRule = {
1017
1021
  // messages only applicable to header validation.
1018
1022
  missingHeader: "missing header",
1019
1023
  noNewlineAfterHeader: "not enough newlines after header: expected: {{expected}}, actual: {{actual}}",
1020
- unsupportedLineHeader: "line header configured but not supported for this language"
1024
+ unsupportedBlockHeader: "block-comment header configured but not supported for this language",
1025
+ unsupportedLineHeader: "line-comment header configured but not supported for this language"
1021
1026
  }
1022
1027
  },
1023
1028
 
@@ -1030,6 +1035,7 @@ const headerRule = {
1030
1035
 
1031
1036
  const newStyleOptions = transformLegacyOptions(/** @type {AllHeaderOptions} */(context.options));
1032
1037
  const sourceCode = contextSourceCode(context);
1038
+ // console.log(sourceCode);
1033
1039
 
1034
1040
  /**
1035
1041
  * Hooks into the processing of the overall script node to do the
@@ -1051,7 +1057,7 @@ const headerRule = {
1051
1057
  });
1052
1058
  const numLines = /** @type {number} */ (options.trailingEmptyLines?.minimum);
1053
1059
 
1054
- if (!language.lineComment && (/** @type {InlineConfig} */ (options.header)).commentType === "line") {
1060
+ if (!language.lineComment && header.commentType === "line") {
1055
1061
  context.report({
1056
1062
  messageId: "unsupportedLineHeader",
1057
1063
  loc: {
@@ -1062,6 +1068,17 @@ const headerRule = {
1062
1068
  return;
1063
1069
  }
1064
1070
 
1071
+ if (!language.blockComment && header.commentType === "block") {
1072
+ context.report({
1073
+ messageId: "unsupportedBlockHeader",
1074
+ loc: {
1075
+ start: sourceCode.getLocFromIndex(0),
1076
+ end: sourceCode.getLocFromIndex(1),
1077
+ },
1078
+ });
1079
+ return;
1080
+ }
1081
+
1065
1082
  const headerMatcher = new CommentMatcher(header, eol, numLines, language);
1066
1083
  const allowedLeadingComments = /** @type {LeadingComments} */ (options.leadingComments).comments;
1067
1084
  const allowedCommentsMatchers =
@@ -1205,6 +1222,13 @@ const headerRule = {
1205
1222
  }
1206
1223
  };
1207
1224
 
1225
+ /** @type {Language} */
1226
+ const yamlStyleLanguage = {
1227
+ lineComment: {
1228
+ startDelimiter: "#"
1229
+ }
1230
+ };
1231
+
1208
1232
  /**
1209
1233
  * Tests if the source code was parsed by _@html-eslint/eslint-plugin_'s
1210
1234
  * parser.
@@ -1243,8 +1267,29 @@ const headerRule = {
1243
1267
  return isHtmlParser() || isVueParser() || isSvelteParser();
1244
1268
  };
1245
1269
 
1270
+ /**
1271
+ * Tests if the source code was parsed by _yaml-eslint-parser_.
1272
+ * @returns {boolean} `true` if the source code is parsed by the parser.
1273
+ */
1274
+ function isYamlStyleLanguage() {
1275
+ // YAML parser has distinct identity from JS parset but also has an
1276
+ // identifier in its `parserServices` section and that check is
1277
+ // faster.
1278
+ return sourceCode.parserServices.isYAML;
1279
+ }
1280
+
1281
+ const programLanguageSearchMap = [
1282
+ { test: isHtmlStyleLanguage, language: htmlStyleLanguage },
1283
+ { test: isYamlStyleLanguage, language: yamlStyleLanguage },
1284
+ { test: () => true, language: jsStyleLanguage }
1285
+ ];
1286
+
1246
1287
  const hooks = {
1247
- Program: () => onRootNode(isHtmlStyleLanguage() ? htmlStyleLanguage : jsStyleLanguage),
1288
+ Program: () => onRootNode(
1289
+ /** @type {{ test: () => boolean, language: Language}} */(
1290
+ programLanguageSearchMap.find((item) => item.test())
1291
+ ).language
1292
+ ),
1248
1293
  StyleSheet: () => onRootNode(cssStyleLanguage),
1249
1294
  // eslint/markdown
1250
1295
  root: () => onRootNode(htmlStyleLanguage),
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tony.ganchev/eslint-plugin-header",
3
- "version": "3.4.2",
4
- "description": "The native ESLint 9/10 header plugin. A zero-bloat, drop-in replacement for 'eslint-plugin-header' with first-class Flat Config & TypeScript support. Auto-fix Copyright, License, and banner comments in JavaScript, TypeScript, Vue, Svelte, CSS, HTML, and Markdown files. Supports oxlint.",
3
+ "version": "3.4.4",
4
+ "description": "The native ESLint 9/10 header plugin. A zero-bloat, drop-in replacement for 'eslint-plugin-header' with first-class Flat Config & TypeScript support. Auto-fix Copyright, License, and banner comments in JavaScript, TypeScript, Vue, Svelte, CSS, HTML, YAML, and Markdown files. Supports oxlint.",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
7
7
  "exports": {
@@ -18,29 +18,29 @@
18
18
  "CONTRIBUTING.md"
19
19
  ],
20
20
  "devDependencies": {
21
- "@eslint/core": "^1.2.0",
22
21
  "@eslint/css": "^1.1.0",
23
22
  "@eslint/js": "^10.0.1",
24
- "@eslint/markdown": "^7.5.1",
25
- "@html-eslint/eslint-plugin": "^0.58.1",
23
+ "@eslint/markdown": "^8.0.1",
24
+ "@html-eslint/eslint-plugin": "^0.59.0",
26
25
  "@stylistic/eslint-plugin": "^5.10.0",
27
26
  "@types/estree": "^1.0.8",
28
27
  "@types/json-schema": "^7.0.15",
29
- "@types/node": "^25.5.2",
28
+ "@types/node": "^25.6.0",
30
29
  "c8": "^11.0.0",
31
- "eslint": "^10.1.0",
30
+ "eslint": "^10.2.1",
32
31
  "eslint-plugin-eslint-plugin": "^7.3.2",
33
32
  "eslint-plugin-jsdoc": "^62.9.0",
34
33
  "eslint-plugin-n": "^17.24.0",
35
- "eslint-plugin-svelte": "^3.17.0",
36
- "eslint-plugin-vue": "^10.8.0",
37
- "globals": "^17.4.0",
34
+ "eslint-plugin-svelte": "^3.17.1",
35
+ "eslint-plugin-vue": "^10.9.0",
36
+ "eslint-plugin-yml": "^3.3.1",
37
+ "globals": "^17.5.0",
38
38
  "markdownlint-cli": "^0.48.0",
39
39
  "mocha": "12.0.0-beta-10",
40
40
  "svelte-eslint-parser": "^1.6.0",
41
41
  "testdouble": "^3.20.2",
42
- "typescript": "^5.9.3",
43
- "typescript-eslint": "^8.58.0",
42
+ "typescript": "^6.0.3",
43
+ "typescript-eslint": "^8.59.0",
44
44
  "vue-eslint-parser": "^10.4.0"
45
45
  },
46
46
  "peerDependencies": {
@@ -84,7 +84,9 @@
84
84
  "typescript",
85
85
  "vue",
86
86
  "vuejs",
87
- "vue-js"
87
+ "vue-js",
88
+ "yaml",
89
+ "yml"
88
90
  ],
89
91
  "repository": {
90
92
  "type": "git",
@@ -188,7 +188,7 @@ export type Language = {
188
188
  * The tokens delimiting a block
189
189
  * comment.
190
190
  */
191
- blockComment: BlockComment;
191
+ blockComment?: BlockComment | undefined;
192
192
  /**
193
193
  * The tokens delimiting a line comment
194
194
  * if such is allowed.
@@ -1 +1 @@
1
- {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../lib/rules/header.js"],"names":[],"mappings":"2BAsCa,iBAAiB;0BACjB,gBAAgB;wBAChB,cAAc;0BACd,gBAAgB;;;;;yBAIhB,IAAI,GAAG,MAAM;;;;;;;;;;aAOZ,MAAM,GAAG,MAAM;;;;;;;;;;;;yBAOhB,MAAM,GAAG,MAAM,GAAG,iBAAiB;;;;;0BAGnC,UAAU,GAAG,UAAU,EAAE;;;;;;+BAEzB,IAAI,GAAG,MAAM,GAAG,SAAS;;;;;6BAGzB;IAAE,WAAW,CAAC,EAAE,gBAAgB,CAAA;CAAE;;;;;0BAElC,OAAO,GAAG,MAAM;;;;;;;;;;UAOf,MAAM;;;;;;;;;;;;;;;iBASN,WAAW;;;;;;WACX,UAAU,EAAE;;;;;;;;;;;;cAQZ,CAAC,eAAe,GAAG,YAAY,CAAC,EAAE;;;;;;;;;;;;;;;;;;YAclC,eAAe,GAAG,YAAY;;;;;;;;;;;;;;;;;4BAU/B,4BAA4B,GAAG,cAAc;oCAK7C,CAAC,QAAQ,EAAE,MAAM,CAAC;4CAClB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC;iCAE5C,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC;yCACvC,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,CAAC;yCAEjE,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC;iDAEzD,CACV,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,cAAc,CACvB;;;;+BACS,CAAC,aAAa,CAAC,GACvB,qBAAqB,GACrB,6BAA6B,GAC7B,kBAAkB,GAClB,0BAA0B,GAC1B,0BAA0B,GAC1B,kCAAkC;;;;;+BAK1B,iBAAiB,gBAAgB,CAAC;oBAiClC,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;UAKf,SAAS,GAAG,OAAO,GAAG,MAAM;;;;WAC5B,MAAM;;;;WACN,KAAK;;;;SACL,cAAc;;;;;;;oBAKd,MAAM;;;;;kBAEN,MAAM;;;;;;;oBAMN,MAAM;;;;;;;kBAML,YAAY;;;;;;;;;;;;AAmwB3B,8BAA8B;AAC9B,0BADW,eAAe,CAkRxB;AAhqBF,2EAA2E;AAC3E,+BADW,MAAM,CAAC,MAAM,EAAE;IAAE,WAAW,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAC,CAAC,CAC3C;0BAniBkC,QAAQ;4BAAR,QAAQ;oCAC1B,QAAQ"}
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../lib/rules/header.js"],"names":[],"mappings":"2BAqCa,iBAAiB;0BACjB,gBAAgB;wBAChB,cAAc;0BACd,gBAAgB;;;;;yBAIhB,IAAI,GAAG,MAAM;;;;;;;;;;aAOZ,MAAM,GAAG,MAAM;;;;;;;;;;;;yBAOhB,MAAM,GAAG,MAAM,GAAG,iBAAiB;;;;;0BAGnC,UAAU,GAAG,UAAU,EAAE;;;;;;+BAEzB,IAAI,GAAG,MAAM,GAAG,SAAS;;;;;6BAGzB;IAAE,WAAW,CAAC,EAAE,gBAAgB,CAAA;CAAE;;;;;0BAElC,OAAO,GAAG,MAAM;;;;;;;;;;UAOf,MAAM;;;;;;;;;;;;;;;iBASN,WAAW;;;;;;WACX,UAAU,EAAE;;;;;;;;;;;;cAQZ,CAAC,eAAe,GAAG,YAAY,CAAC,EAAE;;;;;;;;;;;;;;;;;;YAclC,eAAe,GAAG,YAAY;;;;;;;;;;;;;;;;;4BAU/B,4BAA4B,GAAG,cAAc;oCAK7C,CAAC,QAAQ,EAAE,MAAM,CAAC;4CAClB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC;iCAE5C,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC;yCACvC,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,CAAC;yCAEjE,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC;iDAEzD,CACV,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,cAAc,CACvB;;;;+BACS,CAAC,aAAa,CAAC,GACvB,qBAAqB,GACrB,6BAA6B,GAC7B,kBAAkB,GAClB,0BAA0B,GAC1B,0BAA0B,GAC1B,kCAAkC;;;;;+BAK1B,iBAAiB,gBAAgB,CAAC;oBAiClC,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;UAKf,SAAS,GAAG,OAAO,GAAG,MAAM;;;;WAC5B,MAAM;;;;WACN,KAAK;;;;SACL,cAAc;;;;;;;oBAKd,MAAM;;;;;kBAEN,MAAM;;;;;;;oBAMN,MAAM;;;;;;;;;;;;;;;;;;;AA8wBpB,8BAA8B;AAC9B,0BADW,eAAe,CA2TxB;AAtsBF,2EAA2E;AAC3E,+BADW,MAAM,CAAC,MAAM,EAAE;IAAE,WAAW,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAC,CAAC,CAC3C;0BA1iBkC,QAAQ;4BAAR,QAAQ;oCAC1B,QAAQ"}