@tony.ganchev/eslint-plugin-header 3.2.1 → 3.2.2

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
@@ -1,49 +1,63 @@
1
- # eslint-plugin-header
1
+ # @tony.ganchev/eslint-plugin-header
2
2
 
3
- ESLint plugin / rule to ensure that files begin with a given comment - usually a
4
- copyright notice.
3
+ [![npm version](https://img.shields.io/npm/v/@tony.ganchev/eslint-plugin-header.svg)](https://www.npmjs.com/package/@tony.ganchev/eslint-plugin-header)
4
+ [![Downloads/month](https://img.shields.io/npm/dm/@tony.ganchev/eslint-plugin-header.svg)](http://www.npmtrends.com/@tony.ganchev/eslint-plugin-header)
5
+ [![Build Status](https://github.com/tonyganchev/eslint-plugin-header/workflows/Test/badge.svg)](https://github.com/tonyganchev/eslint-plugin-header)
5
6
 
6
- Often you will want to have a copyright notice at the top of every file. This
7
- ESLint plugin checks that the first comment in every file has the contents
8
- defined in the rule settings.
7
+ The native ESLint 9/10 standard header-validating plugin. A zero-bloat, drop-in
8
+ replacement for [eslint-plugin-header](https://github.com/Stuk/eslint-plugin-header)
9
+ with first-class Flat Config & TypeScript support. Auto-fix copyright, license,
10
+ and banner comments in JavaScript and TypeScript files.
9
11
 
10
12
  ## Table of Contents
11
13
 
12
- 1. [Scope and Acknowledgements](#scope-and-acknowledgements)
14
+ 1. [Motivation and Acknowledgements](#motivation-and-acknowledgements)
13
15
  2. [Compatibility](#compatibility)
14
16
  3. [Usage](#usage)
15
17
  1. [File-based Configuration](#file-based-configuration)
16
18
  2. [Inline Configuration](#inline-configuration)
17
19
  1. [Header Contents Configuration](#header-contents-configuration)
18
- 2. [Trailing Empty Lines Configuration](#trailing-empty-lines-configuration)
19
- 3. [Line Endings](#line-endings)
20
- 4. [Examples](#examples)
20
+ 2. [Providing To-year in Auto-fix](#providing-to-year-in-auto-fix)
21
+ 3. [Trailing Empty Lines Configuration](#trailing-empty-lines-configuration)
22
+ 4. [Line Endings](#line-endings)
23
+ 3. [Examples](#examples)
24
+ 4. [Comparison to Alternatives](#comparison-to-alternatives)
25
+ 1. [Compared to eslint-plugin-headers](#compared-to-eslint-plugin-headers)
26
+ 1. [Health Scans](#health-scans)
27
+ 2. [Compared to eslint-plugin-license-header](#compared-to-eslint-plugin-license-header)
21
28
  5. [Versioning](#versioning)
22
29
  1. [What is a Feature?](#what-is-a-feature)
23
30
  2. [What is Backward-compatibility?](#what-is-backward-compatibility)
24
31
  6. [License](#license)
25
32
 
26
- ## Scope and Acknowledgements
33
+ ## Motivation and Acknowledgements
27
34
 
28
- This is a fork of <https://github.com/Stuk/eslint-plugin-header>.
35
+ The plugin started as a fork of [eslint-plugin-header](https://github.com/Stuk/eslint-plugin-header)
36
+ to address missing ESLint 9 compatibility.
29
37
 
30
- It addresses the following issus:
38
+ Today it addresses the following issues:
31
39
 
32
- - Adds bugfixes where the original project has not been updated in the last
33
- three years.
34
- - Adds support for ESLint 9 with a fully-validated configuration schema.
35
- - Addresses a number of bugs on Windows and adds significant amount of tests to
36
- verify there are no future regressions.
40
+ - Support for ESLint 9/10 with a fully-validated configuration schema.
41
+ - Continued support for ESLint 7/8.
42
+ - Complete Windows support.
43
+ - New object-based configuration providing the bases for future enhancements.
44
+ - Continued support for _eslint-plugin-header_ array configuration.
45
+ - Bugfixes where the original project has not been updated for the three
46
+ years before the fork.
37
47
  - Fixes issues with she-bangs and empty lines before the header. See PR history
38
48
  for more details.
39
- - Provides the foundation to evolve the plugin to add more capabilities moving
40
- forward. This would come at the expense of plugin compatibility and the
41
- portability of fixes to the upstream repository.
49
+ - Good error reporting and improved auto-fixes.
50
+ - Complete drop-in-replacement compatibility with existing projects using
51
+ _eslint-plugin-header_.
52
+
53
+ Multiple other projects took from where _eslint-plugin-header_ left off. A
54
+ comparison of the current project to these alternatives is available in a
55
+ dedicated section.
42
56
 
43
57
  ## Compatibility
44
58
 
45
- The plugin supports ESLint 7 / 8 / 9 / 10rc0 (check package.json for details).
46
- Both flat config and legacy, hierarchical config can be used.
59
+ The plugin supports ESLint 7 / 8 / 9 / 10. Both flat config and legacy,
60
+ hierarchical config can be used.
47
61
 
48
62
  The NPM package provides TypeScript type definitions and can be used with
49
63
  TypeScript-based ESLint flat configuration without the need for `@ts-ignore`
@@ -447,6 +461,44 @@ There are a number of things to consider:
447
461
  - Templates are hardcoded strings therefore it may be better to hand-fix a bad
448
462
  header in order not to lose the from- and to-years in the copyright notice.
449
463
 
464
+ #### Providing To-year in Auto-fix
465
+
466
+ A common request across similar plugins is to provide for `{year}` variable to
467
+ not change the ESLint configuration every year. While such special requests were
468
+ relevant to old JSON-based configuration, this can be handled with JavaScript in
469
+ the flat configuration format:
470
+
471
+ ```ts
472
+ import header, { HeaderOptions } from "@tony.ganchev/eslint-plugin-header";
473
+ import { defineConfig } from "eslint/config";
474
+
475
+ export default defineConfig([
476
+ {
477
+ files: ["**/*.js"],
478
+ plugins: {
479
+ "@tony.ganchev": header
480
+ },
481
+ rules: {
482
+ "@tony.ganchev/header": [
483
+ "error",
484
+ {
485
+ header: {
486
+ commentType: "line",
487
+ lines: [
488
+ {
489
+ pattern: / Copyright \(c\) (\d{4}-)?\d{4}/,
490
+ template: ` Copyright ${new Date().getFullYear()}`,
491
+ },
492
+ " My Company"
493
+ ]
494
+ }
495
+ } as HeaderOptions
496
+ ]
497
+ }
498
+ }
499
+ ]);
500
+ ```
501
+
450
502
  #### Trailing Empty Lines Configuration
451
503
 
452
504
  The third argument of the rule configuration which defaults to 1 specifies the
@@ -607,7 +659,7 @@ export default defineConfig([
607
659
  Possible values are `"unix"` for `\n` and `"windows"` for `\r\n` line endings.
608
660
  The default value is `"os"` which means assume the system-specific line endings.
609
661
 
610
- ## Examples
662
+ ### Examples
611
663
 
612
664
  The following examples are all valid.
613
665
 
@@ -749,6 +801,70 @@ export default defineConfig([
749
801
  console.log(1);
750
802
  ```
751
803
 
804
+ ## Comparison to Alternatives
805
+
806
+ A number of projects have been aiming to solve problems similar to
807
+ _\@tony.ganchev/eslint-plugin-header_ - mainly with respect to providing ESLint
808
+ 9 support. The section below tries to outline why developers may choose either.
809
+ The evaluation is based on the versions of each project as of the time of
810
+ publishing the current version of _\@tony.ganchev/eslint-plugin-header_.
811
+
812
+ Further iterations of this document would add migration information.
813
+
814
+ ### Compared to [eslint-plugin-headers](https://github.com/robmisasi/eslint-plugin-headers)
815
+
816
+ _\@tony.ganchev/eslint-plugin-header_ is a drop-in replacement for
817
+ _eslint-plugin-header_ and all plugins that already use the latter can migrate
818
+ to the fork right away. At the same time, it provides improved user experience
819
+ and windows support.
820
+
821
+ eslint-plugin-headers is not a drop-in replacement. It offers additional
822
+ features. Some of them, such as support for Vue templates do not have an
823
+ analogue in the current version of _\@tony.ganchev/eslint-plugin-header_ while
824
+ others such as `{year}` variable placeholders are redundant in the world of
825
+ ESLint 9's flat, JavaScript-based configuration as [already pointed out in this
826
+ document](#providing-to-year-in-auto-fix).
827
+
828
+ The configuration format philosophy of the two plugin differs.
829
+ _\@tony.ganchev/eslint-plugin-header_ supports both the legacy model inherited
830
+ from _eslint-plugin-header_ and a new object-based configuration that is easy to
831
+ adopt and offers both a lot of power to the user as to what the headers should
832
+ look like, and keeps the configuration compact - just a few lines defining the
833
+ content inside the comment. At the same time, the configuration is structured in
834
+ a way that can evolve without breaking compatibility, which is critical for a
835
+ tool that is not differentiating for the critical delivery of teams.
836
+
837
+ _eslint-plugin-headers_ also offers an object-based format, but the content is
838
+ flat and may need breaking changes to be kept concise as new features come
839
+ about. Further, it makes assumption that then need to be corrected such as a
840
+ block comment starting with `/**` instead of `/*` by default. The correction
841
+ needs to happen not by adjusting the header template but through a separate
842
+ confusing configuration properties.
843
+ Overall, the configuration tends to be noisier nad harder to read than that of
844
+ _\@tony.ganchev/eslint-plugin-header_.
845
+
846
+ #### Health Scans
847
+
848
+ - _\@tony.ganchev/eslint-plugin-header_</th> -
849
+ [snyk.io](https://security.snyk.io/package/npm/%40tony.ganchev%2Feslint-plugin-header),
850
+ [socket.dev](https://socket.dev/npm/package/@tony.ganchev/eslint-plugin-header/overview/3.2.2)
851
+
852
+ - _eslint-plugin-headers_ -
853
+ [snyk.io](https://security.snyk.io/package/npm/eslint-plugin-headers),
854
+ [socket.dev](https://socket.dev/npm/package/eslint-plugin-headers/overview/1.3.4)
855
+
856
+ At the time of the publishing of the current version of
857
+ _\@tony.ganchev/eslint-plugin-header_, the latter has a slight edge in both
858
+ scans against _eslint-plugin-headers_.
859
+
860
+ ### Compared to [eslint-plugin-license-header](https://github.com/nikku/eslint-plugin-license-header)
861
+
862
+ _eslint-plugin-license-header_ per its limited documentation does not have a lot
863
+ of features including not matching arbitrary from-years in the copyright notice.
864
+ This on one hand leads to it having a nice, dead-simple configuration, but means
865
+ no complex multi-year project would be happy with it. Surprisingly, given the
866
+ limited feature set, the plugin has more peer dependencies than the competition.
867
+
752
868
  ## Versioning
753
869
 
754
870
  The project follows standard [NPM semantic versioning policy](
@@ -37,6 +37,7 @@ module.exports = {
37
37
  * @returns {SourceCode} the source-code object.
38
38
  */
39
39
  contextSourceCode: function(context) {
40
- return context.sourceCode || context.getSourceCode();
40
+ return context.sourceCode
41
+ || /** @type {RuleContext & { getSourceCode: () => SourceCode }} */(context).getSourceCode();
41
42
  }
42
43
  };
@@ -25,16 +25,5 @@
25
25
 
26
26
  "use strict";
27
27
 
28
- const assert = require("node:assert");
29
- const fs = require("node:fs");
30
- const path = require("node:path");
31
-
32
- const packageJsonContent = fs.readFileSync(path.resolve(__dirname, "../../package.json"), "utf8");
33
- const packageJson = JSON.parse(packageJsonContent);
34
- assert.equal(Object.prototype.hasOwnProperty.call(packageJson, "version"), true,
35
- "The plugin's package.json should be available two directories above the rule.");
36
- const pluginVersion = packageJson.version;
37
-
38
- exports.description = "";
28
+ exports.description = "The rule validates that the source file starts with a specific header comment pattern.";
39
29
  exports.recommended = true;
40
- exports.url = "https://www.npmjs.com/package/@tony.ganchev/eslint-plugin-header/v/" + pluginVersion;
@@ -29,7 +29,7 @@ const fs = require("node:fs");
29
29
  const os = require("node:os");
30
30
  const commentParser = require("../comment-parser");
31
31
  const { contextSourceCode } = require("./eslint-utils");
32
- const { description, recommended, url } = require("./header.docs");
32
+ const { description, recommended } = require("./header.docs");
33
33
  const { lineEndingOptions, commentTypeOptions, schema } = require("./header.schema");
34
34
 
35
35
  /**
@@ -525,8 +525,7 @@ const headerRule = {
525
525
  type: "layout",
526
526
  docs: {
527
527
  description,
528
- recommended,
529
- url
528
+ recommended
530
529
  },
531
530
  fixable: "whitespace",
532
531
  schema,
@@ -803,7 +802,7 @@ const headerRule = {
803
802
  },
804
803
  messageId: "incorrectHeaderLine",
805
804
  data: {
806
- pattern: headerLine
805
+ pattern: headerLine.toString()
807
806
  },
808
807
  fix: canFix
809
808
  ? genReplaceFixer(
@@ -847,7 +846,7 @@ const headerRule = {
847
846
 
848
847
  /** @type {null | string} */
849
848
  let errorMessageId = null;
850
- /** @type {undefined | Record<string, string | RegExp>} */
849
+ /** @type {undefined | Record<string, string>} */
851
850
  let errorMessageData;
852
851
  /** @type {null | SourceLocation} */
853
852
  let errorMessageLoc = null;
@@ -921,7 +920,7 @@ const headerRule = {
921
920
  if (!match(leadingLine, headerLine)) {
922
921
  errorMessageId = "incorrectHeaderLine";
923
922
  errorMessageData = {
924
- pattern: headerLine
923
+ pattern: headerLine.toString()
925
924
  };
926
925
  const columnOffset = i === 0 ? "/*".length : 0;
927
926
  assertDefined(firstLeadingCommentLoc);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tony.ganchev/eslint-plugin-header",
3
- "version": "3.2.1",
4
- "description": "ESLint plugin to ensure files begin with a given comment, usually a copyright or license notice.",
3
+ "version": "3.2.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 JavaScrip and TypeScript files.",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
7
7
  "exports": {
@@ -14,8 +14,7 @@
14
14
  "files": [
15
15
  "lib/**/*.js",
16
16
  "index.d.ts*",
17
- "types",
18
- "!lib/rules/test-utils.js"
17
+ "types"
19
18
  ],
20
19
  "scripts": {
21
20
  "build": "npx tsc",
@@ -28,35 +27,63 @@
28
27
  },
29
28
  "devDependencies": {
30
29
  "@eslint/eslintrc": "^3.3.3",
31
- "@eslint/js": "^9.39.2",
30
+ "@eslint/js": "^10.0.1",
32
31
  "@eslint/markdown": "^7.5.1",
33
- "@stylistic/eslint-plugin": "^5.7.1",
34
- "@types/node": "^25.2.1",
35
- "eslint": "^9.39.2",
32
+ "@stylistic/eslint-plugin": "^5.8.0",
33
+ "@types/node": "^25.2.3",
34
+ "eslint": "^10.0.0",
36
35
  "eslint-plugin-eslint-plugin": "^7.3.0",
37
- "eslint-plugin-jsdoc": "^62.5.2",
36
+ "eslint-plugin-jsdoc": "^62.5.4",
38
37
  "eslint-plugin-n": "^17.23.2",
39
38
  "markdownlint-cli": "^0.47.0",
40
- "mocha": "^12.0.0-beta-6",
39
+ "mocha": "^12.0.0-beta-9",
41
40
  "nyc": "^17.1.0",
42
41
  "testdouble": "^3.20.2",
43
42
  "typescript": "^5.9.3",
44
- "typescript-eslint": "^8.54.0"
43
+ "typescript-eslint": "^8.56.0"
45
44
  },
46
45
  "peerDependencies": {
47
46
  "eslint": ">=7.7.0"
48
47
  },
48
+ "overrides": {
49
+ "eslint": "^10.0.0"
50
+ },
49
51
  "keywords": [
50
52
  "eslint",
51
- "eslintplugin"
53
+ "eslint-plugin",
54
+ "eslint9",
55
+ "flat-config",
56
+ "header",
57
+ "copyright",
58
+ "license",
59
+ "banner",
60
+ "notice",
61
+ "license-header",
62
+ "copyright-header",
63
+ "legal",
64
+ "gdpr",
65
+ "source-header",
66
+ "typescript",
67
+ "react",
68
+ "check",
69
+ "fix"
52
70
  ],
53
71
  "repository": {
54
72
  "type": "git",
55
- "url": "git+https://github.com/tonyganchev/eslint-plugin-header.git"
73
+ "url": "https://github.com/tonyganchev/eslint-plugin-header.git"
74
+ },
75
+ "homepage": "https://github.com/tonyganchev/eslint-plugin-header#readme",
76
+ "bugs": {
77
+ "url": "https://github.com/tonyganchev/eslint-plugin-header/issues"
56
78
  },
57
- "author": "Stuart Knightley",
58
79
  "license": "MIT",
80
+ "author": "Tony Ganchev",
59
81
  "maintainers": [
82
+ "Gyokan Syuleymanov",
60
83
  "Tony Ganchev"
84
+ ],
85
+ "contributors": [
86
+ "Josh Kelley",
87
+ "Stuart Knightley"
61
88
  ]
62
89
  }
@@ -1 +1 @@
1
- {"version":3,"file":"eslint-utils.d.ts","sourceRoot":"","sources":["../../../lib/rules/eslint-utils.js"],"names":[],"mappings":";;;;IAsCuB,oCAHR,WAAW,GACT,UAAU,CAItB;;;mBAbQ,OAAO,QAAQ,EAAE,IAAI,CAAC,WAAW;kBACjC,OAAO,QAAQ,EAAE,UAAU"}
1
+ {"version":3,"file":"eslint-utils.d.ts","sourceRoot":"","sources":["../../../lib/rules/eslint-utils.js"],"names":[],"mappings":";;;;IAsCuB,oCAHR,WAAW,GACT,UAAU,CAKtB;;;mBAdQ,OAAO,QAAQ,EAAE,IAAI,CAAC,WAAW;kBACjC,OAAO,QAAQ,EAAE,UAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../lib/rules/header.js"],"names":[],"mappings":";;;;kBAoCa,OAAO,QAAQ,EAAE,IAAI,CAAC,GAAG;;;;2BACzB,OAAO,QAAQ,EAAE,IAAI,CAAC,YAAY;;;;0BAClC,OAAO,QAAQ,EAAE,IAAI,CAAC,WAAW;;;;wBACjC,OAAO,QAAQ,EAAE,IAAI,CAAC,SAAS;;;;0BAC/B,OAAO,QAAQ,EAAE,IAAI,CAAC,WAAW;;;;sBACjC,OAAO,QAAQ,EAAE,OAAO;;;;sBACxB,OAAO,QAAQ,EAAE,OAAO;;;;6BACxB,OAAO,QAAQ,EAAE,cAAc;;;;gCAK/B;IAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE;;;;yBAC/C,MAAM,GAAG,MAAM,GAAG,iBAAiB;;;;0BACnC,UAAU,GAAG,UAAU,EAAE;;;;+BACzB,IAAI,GAAG,MAAM,GAAG,SAAS;;;;6BACzB;IAAE,WAAW,CAAC,EAAE,gBAAgB,CAAA;CAAE;;;;0BAClC,OAAO,GAAG,MAAM;;;;8BAChB;IACL,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,cAAc,CAAA;CAC5B;;;;2BAEQ;IACL,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,UAAU,EAAE,CAAA;CACtB;;;;iCAEQ;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE;;;;4BACpB;IACL,MAAM,EAAE,eAAe,GAAG,YAAY,CAAC;IACvC,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;CAC1C,GACC,cAAc;;;;+BAEP,CAAC,aAAa,CAAC,GAC3B,CAAI,QAAQ,EAAE,MAAM,CAAC,GACrB,CAAI,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,GAC/C,CAAI,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC,GAC1C,CAAI,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,CAAC,GACpE,CAAI,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,GAC5D,CACM,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,cAAc,CAC1B;;;;+BAEQ,OAAO,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC;AAqbhE,+CAA+C;AAC/C,0BADW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU,CA+dzC"}
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../lib/rules/header.js"],"names":[],"mappings":";;;;kBAoCa,OAAO,QAAQ,EAAE,IAAI,CAAC,GAAG;;;;2BACzB,OAAO,QAAQ,EAAE,IAAI,CAAC,YAAY;;;;0BAClC,OAAO,QAAQ,EAAE,IAAI,CAAC,WAAW;;;;wBACjC,OAAO,QAAQ,EAAE,IAAI,CAAC,SAAS;;;;0BAC/B,OAAO,QAAQ,EAAE,IAAI,CAAC,WAAW;;;;sBACjC,OAAO,QAAQ,EAAE,OAAO;;;;sBACxB,OAAO,QAAQ,EAAE,OAAO;;;;6BACxB,OAAO,QAAQ,EAAE,cAAc;;;;gCAK/B;IAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE;;;;yBAC/C,MAAM,GAAG,MAAM,GAAG,iBAAiB;;;;0BACnC,UAAU,GAAG,UAAU,EAAE;;;;+BACzB,IAAI,GAAG,MAAM,GAAG,SAAS;;;;6BACzB;IAAE,WAAW,CAAC,EAAE,gBAAgB,CAAA;CAAE;;;;0BAClC,OAAO,GAAG,MAAM;;;;8BAChB;IACL,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,cAAc,CAAA;CAC5B;;;;2BAEQ;IACL,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,UAAU,EAAE,CAAA;CACtB;;;;iCAEQ;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE;;;;4BACpB;IACL,MAAM,EAAE,eAAe,GAAG,YAAY,CAAC;IACvC,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;CAC1C,GACC,cAAc;;;;+BAEP,CAAC,aAAa,CAAC,GAC3B,CAAI,QAAQ,EAAE,MAAM,CAAC,GACrB,CAAI,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,GAC/C,CAAI,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC,GAC1C,CAAI,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,CAAC,GACpE,CAAI,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,GAC5D,CACM,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,cAAc,CAC1B;;;;+BAEQ,OAAO,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC;AAqbhE,+CAA+C;AAC/C,0BADW,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAU,CA8dzC"}
@@ -1,4 +1,3 @@
1
- export const description: "";
1
+ export const description: "The rule validates that the source file starts with a specific header comment pattern.";
2
2
  export const recommended: true;
3
- export const url: string;
4
3
  //# sourceMappingURL=header.docs.d.ts.map
@@ -1,10 +0,0 @@
1
- declare namespace _exports {
2
- export { InvalidTestCase, TestCaseError };
3
- }
4
- declare namespace _exports {
5
- function generateInvalidTestCaseNames(invalidTests: InvalidTestCase[]): InvalidTestCase[];
6
- }
7
- export = _exports;
8
- type InvalidTestCase = import("eslint").RuleTester.InvalidTestCase;
9
- type TestCaseError = import("eslint").RuleTester.TestCaseError;
10
- //# sourceMappingURL=test-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../lib/rules/test-utils.js"],"names":[],"mappings":";;;;IA4EkC,oDAJnB,eAAe,EAAE,GACf,eAAe,EAAE,CA2C7B;;;uBAvFQ,OAAO,QAAQ,EAAE,UAAU,CAAC,eAAe;qBAC3C,OAAO,QAAQ,EAAE,UAAU,CAAC,aAAa"}