@o3r/eslint-config 14.6.0-prerelease.1 → 14.6.0-prerelease.11

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@o3r/eslint-config",
3
- "version": "14.6.0-prerelease.1",
3
+ "version": "14.6.0-prerelease.11",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -37,7 +37,7 @@
37
37
  "build:builders": "tsc -b tsconfig.builders.json --pretty && yarn generate-cjs-manifest"
38
38
  },
39
39
  "dependencies": {
40
- "@o3r/schematics": "~14.6.0-prerelease.1"
40
+ "@o3r/schematics": "~14.6.0-prerelease.11"
41
41
  },
42
42
  "peerDependencies": {
43
43
  "@angular-devkit/core": "^21.0.0",
@@ -45,9 +45,10 @@
45
45
  "@angular-eslint/builder": "^21.0.0",
46
46
  "@angular/compiler": "^21.0.0",
47
47
  "@eslint-community/eslint-plugin-eslint-comments": "^4.4.0",
48
+ "@eslint/compat": "^2.0.4",
48
49
  "@eslint/js": "^8.57.0 || ^9.22.0",
49
- "@o3r/eslint-plugin": "~14.6.0-prerelease.1",
50
- "@o3r/schematics": "~14.6.0-prerelease.1",
50
+ "@o3r/eslint-plugin": "~14.6.0-prerelease.11",
51
+ "@o3r/schematics": "~14.6.0-prerelease.11",
51
52
  "@schematics/angular": "^21.0.0",
52
53
  "@stylistic/eslint-plugin": "~5.10.0",
53
54
  "@typescript-eslint/parser": "^8.15.0",
@@ -79,11 +80,12 @@
79
80
  "@angular/cli": "~21.2.0",
80
81
  "@angular/compiler": "~21.2.17",
81
82
  "@eslint-community/eslint-plugin-eslint-comments": "^4.4.0",
83
+ "@eslint/compat": "~2.0.4",
82
84
  "@eslint/js": "~9.39.0",
83
85
  "@nx/eslint-plugin": "~22.7.0",
84
- "@o3r/build-helpers": "~14.6.0-prerelease.1",
85
- "@o3r/eslint-plugin": "~14.6.0-prerelease.1",
86
- "@o3r/test-helpers": "~14.6.0-prerelease.1",
86
+ "@o3r/build-helpers": "~14.6.0-prerelease.11",
87
+ "@o3r/eslint-plugin": "~14.6.0-prerelease.11",
88
+ "@o3r/test-helpers": "~14.6.0-prerelease.11",
87
89
  "@schematics/angular": "~21.2.0",
88
90
  "@stylistic/eslint-plugin": "~5.10.0",
89
91
  "@types/jest": "~30.0.0",
@@ -128,6 +130,9 @@
128
130
  "@angular/compiler": {
129
131
  "optional": true
130
132
  },
133
+ "@eslint/compat": {
134
+ "optional": true
135
+ },
131
136
  "@o3r/schematics": {
132
137
  "optional": true
133
138
  },
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../schematics/ng-add/index.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,IAAI,EAIV,MAAM,4BAA4B,CAAC;AAcpC,OAAO,KAAK,EACV,qBAAqB,EACtB,MAAM,UAAU,CAAC;AA+HlB;;;GAGG;AACH,eAAO,MAAM,KAAK,GAAI,SAAS,qBAAqB,SAA2C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../schematics/ng-add/index.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,IAAI,EAIV,MAAM,4BAA4B,CAAC;AAcpC,OAAO,KAAK,EACV,qBAAqB,EACtB,MAAM,UAAU,CAAC;AAgIlB;;;GAGG;AACH,eAAO,MAAM,KAAK,GAAI,SAAS,qBAAqB,SAA2C,CAAC"}
@@ -14,6 +14,7 @@ const dependenciesToInstall = [];
14
14
  * List of external dependencies to be added to the project as dev dependencies
15
15
  */
16
16
  const devDependenciesToInstall = [
17
+ '@eslint/compat',
17
18
  '@eslint/js',
18
19
  '@eslint-community/eslint-plugin-eslint-comments',
19
20
  '@stylistic/eslint-plugin',
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../schematics/ng-add/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../schematics/ng-add/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
- const { dirname, posix, relative, sep } = require('node:path');
2
+ const { readFileSync } = require('node:fs');
3
+ const { dirname, posix, relative, sep, isAbsolute } = require('node:path');
3
4
  const { pathToFileURL } = require('node:url');
4
5
  const { defineConfig } = require('eslint/config');
5
6
  const { sync } = require('globby');
@@ -50,6 +51,78 @@ const mergeESLintFlatConfigs = async (localDirname, globs, ...additionalConfigs)
50
51
  ]);
51
52
  };
52
53
 
54
+ /**
55
+ * Checks if a gitattributes attribute entry matches the requested attribute.
56
+ * @param {string} entry The attribute entry from the line (e.g., "attr", "-attr", "attr=value").
57
+ * @param {string} attrName The attribute name to match.
58
+ * @param {string|undefined} attrValue The expected value, or undefined for bare name matching.
59
+ * @returns {boolean} Whether the entry matches.
60
+ */
61
+ function matchesAttribute(entry, attrName, attrValue) {
62
+ // Unset: -attr
63
+ if (entry.startsWith('-')) {
64
+ return false;
65
+ }
66
+
67
+ const [entryName, entryValue] = entry.split('=');
68
+
69
+ if (entryValue === undefined) {
70
+ // Bare entry: "attr" — matches bare name queries only
71
+ return attrValue === undefined && entryName === attrName;
72
+ }
73
+
74
+ if (entryName !== attrName) {
75
+ return false;
76
+ }
77
+
78
+ if (attrValue !== undefined) {
79
+ // name=value query: exact match
80
+ return entryValue === attrValue;
81
+ }
82
+
83
+ // Bare name query with value entry: only "true" is truthy
84
+ return entryValue === 'true';
85
+ }
86
+
87
+ /**
88
+ * Reads a .gitattributes file and returns an object with ignore patterns
89
+ * for files matching the specified attribute.
90
+ * @param {string} gitattributesPath The absolute path to the .gitattributes file.
91
+ * @param {string} attribute The attribute to match. Either a bare name or "name=value".
92
+ * @param {string} name The name of the config.
93
+ * @returns {import('@typescript-eslint/utils').TSESLint.FlatConfig} An object with `name` and `ignores` properties.
94
+ * @throws {Error} If the path is not an absolute path.
95
+ */
96
+ function ignoreFilesWithGitAttribute(gitattributesPath, attribute, name) {
97
+ if (!isAbsolute(gitattributesPath)) {
98
+ throw new Error('The ignore file location must be an absolute path.');
99
+ }
100
+
101
+ const { convertIgnorePatternToMinimatch } = require('@eslint/compat');
102
+ const [attrName, attrValue] = attribute.split('=');
103
+
104
+ const file = readFileSync(gitattributesPath, 'utf8');
105
+ const lines = file
106
+ .split(/\r?\n/u)
107
+ .map((line) => line.trim())
108
+ .filter((line) => line && !line.startsWith('#'));
109
+
110
+ return {
111
+ name: name || `Ignore files based on .gitattributes patterns for ${attribute}`,
112
+ ignores: lines
113
+ .map((line) => line.split(/\s+/u))
114
+ .filter((parts) =>
115
+ parts
116
+ .slice(1)
117
+ .some((entry) =>
118
+ matchesAttribute(entry, attrName, attrValue)
119
+ )
120
+ )
121
+ .map((parts) => convertIgnorePatternToMinimatch(parts[0]))
122
+ };
123
+ }
124
+
53
125
  module.exports = {
54
- mergeESLintFlatConfigs
126
+ mergeESLintFlatConfigs,
127
+ ignoreFilesWithGitAttribute
55
128
  };