@o3r/eslint-plugin 14.0.0-next.0 → 14.0.0-next.10

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-plugin",
3
- "version": "14.0.0-next.0",
3
+ "version": "14.0.0-next.10",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -24,12 +24,11 @@
24
24
  "prepare:build:builders": "yarn cpy 'schematics/**/*.json' 'schematics/**/templates/**' dist/schematics && yarn cpy './collection.json' dist"
25
25
  },
26
26
  "dependencies": {
27
- "@typescript-eslint/utils": "~8.43.0",
27
+ "@typescript-eslint/utils": "~8.51.0",
28
28
  "globby": "^11.1.0",
29
29
  "semver": "^7.5.2",
30
- "ts-node": "~10.9.2",
31
30
  "tslib": "^2.6.2",
32
- "type-fest": "^4.30.1"
31
+ "type-fest": "^5.3.1"
33
32
  },
34
33
  "peerDependenciesMeta": {
35
34
  "@angular-eslint/template-parser": {
@@ -53,49 +52,48 @@
53
52
  "yaml-eslint-parser": "^1.2.2"
54
53
  },
55
54
  "devDependencies": {
56
- "@angular-devkit/core": "~20.2.0",
57
- "@angular-eslint/test-utils": "~20.2.0",
58
- "@angular/compiler": "~20.2.0",
55
+ "@angular-devkit/core": "~20.3.13",
56
+ "@angular-eslint/test-utils": "~20.6.0",
57
+ "@angular/compiler": "~20.3.15",
59
58
  "@babel/core": "~7.28.0",
60
- "@babel/preset-typescript": "~7.27.0",
61
- "@compodoc/compodoc": "^1.1.19",
59
+ "@babel/preset-typescript": "~7.28.0",
60
+ "@compodoc/compodoc": "^1.1.32",
62
61
  "@eslint-community/eslint-plugin-eslint-comments": "^4.4.0",
63
62
  "@eslint/eslintrc": "^3.0.0",
64
- "@nx/eslint-plugin": "~21.5.0",
65
- "@nx/jest": "~21.5.0",
66
- "@o3r/build-helpers": "^14.0.0-next.0",
67
- "@o3r/eslint-config": "^14.0.0-next.0",
68
- "@o3r/test-helpers": "^14.0.0-next.0",
69
- "@stylistic/eslint-plugin": "~5.3.0",
63
+ "@nx/eslint-plugin": "~21.6.0",
64
+ "@nx/jest": "~21.6.0",
65
+ "@o3r/build-helpers": "~14.0.0-next.10",
66
+ "@o3r/eslint-config": "~14.0.0-next.10",
67
+ "@o3r/test-helpers": "~14.0.0-next.10",
68
+ "@stylistic/eslint-plugin": "~5.6.0",
70
69
  "@types/eslint": "~9.6.0",
71
- "@types/jest": "~29.5.2",
72
- "@types/node": "^22.0.0",
70
+ "@types/jest": "~30.0.0",
71
+ "@types/node": "~24.10.0",
73
72
  "@types/semver": "^7.3.13",
74
- "@typescript-eslint/parser": "~8.43.0",
75
- "@typescript-eslint/rule-tester": "~8.43.0",
76
- "angular-eslint": "~20.2.0",
73
+ "@typescript-eslint/parser": "~8.51.0",
74
+ "@typescript-eslint/rule-tester": "~8.51.0",
75
+ "angular-eslint": "~20.6.0",
77
76
  "cpy-cli": "^6.0.0",
78
- "eslint": "~9.35.0",
77
+ "eslint": "~9.39.0",
79
78
  "eslint-plugin-import": "~2.32.0",
80
79
  "eslint-plugin-import-newlines": "~1.4.0",
81
- "eslint-plugin-jest": "~29.0.0",
82
- "eslint-plugin-jsdoc": "~54.7.0",
80
+ "eslint-plugin-jest": "~29.11.0",
81
+ "eslint-plugin-jsdoc": "~61.5.0",
83
82
  "eslint-plugin-prefer-arrow": "~1.2.3",
84
- "eslint-plugin-unicorn": "~60.0.0",
85
- "eslint-plugin-unused-imports": "~4.2.0",
83
+ "eslint-plugin-unicorn": "~62.0.0",
84
+ "eslint-plugin-unused-imports": "~4.3.0",
86
85
  "globals": "^16.0.0",
87
- "jest": "~29.7.0",
86
+ "jest": "~30.2.0",
88
87
  "jest-junit": "~16.0.0",
89
- "jest-util": "~29.7.0",
88
+ "jest-util": "~30.2.0",
90
89
  "jsonc-eslint-parser": "~2.4.0",
91
- "nx": "~21.5.0",
92
- "pid-from-port": "^1.1.3",
90
+ "nx": "~21.6.0",
93
91
  "rimraf": "^6.0.1",
94
92
  "semver": "^7.5.2",
95
93
  "ts-jest": "~29.4.0",
96
- "type-fest": "^4.30.1",
94
+ "type-fest": "^5.3.1",
97
95
  "typescript": "~5.9.2",
98
- "typescript-eslint": "~8.43.0",
96
+ "typescript-eslint": "~8.51.0",
99
97
  "yaml-eslint-parser": "^1.2.2"
100
98
  },
101
99
  "schematics": "./collection.json",
package/src/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const json_dependency_versions_harmonize_1 = require("./rules/json/json-dependency-versions-harmonize/json-dependency-versions-harmonize");
4
+ const project_json_tags_1 = require("./rules/json/project-json-tags/project-json-tags");
4
5
  const no_inner_html_1 = require("./rules/template/no-inner-html/no-inner-html");
5
6
  const template_async_number_limitation_1 = require("./rules/template/template-async-number-limitation/template-async-number-limitation");
6
7
  const matching_configuration_name_1 = require("./rules/typescript/matching-configuration-name/matching-configuration-name");
@@ -21,7 +22,8 @@ module.exports = {
21
22
  'yarnrc-package-extensions-harmonize': yarnrc_package_extensions_harmonize_1.default,
22
23
  'no-multiple-type-configuration-property': no_multiple_type_configuration_property_1.default,
23
24
  'o3r-categories-tags': o3r_categories_tags_1.default,
24
- 'o3r-restriction-key-tags': o3r_restriction_key_tags_1.default
25
+ 'o3r-restriction-key-tags': o3r_restriction_key_tags_1.default,
26
+ 'project-json-tags': project_json_tags_1.default
25
27
  },
26
28
  configs: {
27
29
  '@o3r/no-folder-import-for-module': 'error',
@@ -1,4 +1,4 @@
1
- /** Options for the ESLint rule @o3r/json-dependency-versions-harmonize */
1
+ /** Options for the ESLint rule `@o3r/json-dependency-versions-harmonize` */
2
2
  export interface VersionsHarmonizeOptions {
3
3
  /** List of package name to ignore when determining the dependencies versions */
4
4
  ignoredPackages?: string[];
@@ -16,5 +16,7 @@ export interface VersionsHarmonizeOptions {
16
16
  /** Align the Engines versions */
17
17
  alignEngines?: boolean;
18
18
  }
19
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<"error" | "versionUpdate", [VersionsHarmonizeOptions, ...any[]], unknown, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener>;
19
+ declare const _default: import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<"error" | "versionUpdate", [VersionsHarmonizeOptions, ...any[]], unknown, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener> & {
20
+ name: string;
21
+ };
20
22
  export default _default;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Options for the linter rules `@o3r/project-json-tags`
3
+ */
4
+ export interface ProjectJsonTagsOptions {
5
+ /**
6
+ * Allowed tags in project.json files
7
+ */
8
+ allowedTags: string[];
9
+ }
10
+ declare const _default: import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<"unsupportedTag" | "invalidTag" | "tagsNotArray", [ProjectJsonTagsOptions, ...any[]], unknown, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener> & {
11
+ name: string;
12
+ };
13
+ export default _default;
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("../../utils");
4
+ const defaultOptions = [{
5
+ allowedTags: []
6
+ }];
7
+ exports.default = (0, utils_1.createRule)({
8
+ name: 'project-json-tags',
9
+ meta: {
10
+ type: 'problem',
11
+ docs: {
12
+ description: 'Ensure tags in project.json contain only allowed values'
13
+ },
14
+ schema: [
15
+ {
16
+ type: 'object',
17
+ properties: {
18
+ allowedTags: {
19
+ type: 'array',
20
+ items: { type: 'string' },
21
+ uniqueItems: true
22
+ }
23
+ },
24
+ additionalProperties: false
25
+ }
26
+ ],
27
+ messages: {
28
+ tagsNotArray: '"tags" should be an array',
29
+ unsupportedTag: 'Unsupported tag type "{{tagType}}". Only string is supported',
30
+ invalidTag: 'Invalid tag "{{tag}}". Allowed tags are: {{allowedTags}}'
31
+ }
32
+ },
33
+ defaultOptions,
34
+ create: (context, [options]) => {
35
+ const allowedTags = new Set(options.allowedTags);
36
+ const rule = (node) => {
37
+ if (node.key.type !== 'JSONLiteral' || node.key?.value !== 'tags') {
38
+ return;
39
+ }
40
+ if (node.value.type === 'JSONArrayExpression') {
41
+ for (const element of node.value.elements) {
42
+ if (!!element && element.type === 'JSONLiteral' && typeof element.value === 'string') {
43
+ if (!allowedTags.has(element.value)) {
44
+ context.report({
45
+ loc: element.loc,
46
+ messageId: 'invalidTag',
47
+ data: {
48
+ tag: element.value,
49
+ allowedTags: Array.from(allowedTags.values()).join(', ')
50
+ }
51
+ });
52
+ }
53
+ }
54
+ else {
55
+ const tagType = element?.type === 'JSONLiteral' ? typeof element.value : (element?.type ?? 'unknown');
56
+ context.report({
57
+ loc: element?.loc || node.value.loc,
58
+ messageId: 'unsupportedTag',
59
+ data: {
60
+ tagType
61
+ }
62
+ });
63
+ }
64
+ }
65
+ }
66
+ else {
67
+ context.report({
68
+ loc: node.loc,
69
+ messageId: 'tagsNotArray'
70
+ });
71
+ }
72
+ };
73
+ return {
74
+ JSONProperty: rule
75
+ };
76
+ }
77
+ });
@@ -1,5 +1,7 @@
1
1
  /** Rule Name */
2
2
  export declare const name = "no-inner-html";
3
3
  type Messages = 'error' | 'fix';
4
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<Messages, [], unknown, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener>;
4
+ declare const _default: import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<Messages, [], unknown, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener> & {
5
+ name: string;
6
+ };
5
7
  export default _default;
@@ -3,5 +3,7 @@ export interface TemplateAsyncNumberLimitationOptions {
3
3
  }
4
4
  /** Rule Name */
5
5
  export declare const name = "template-async-number-limitation";
6
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<"tooManyAsyncOnTag", [TemplateAsyncNumberLimitationOptions, ...any[]], unknown, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener>;
6
+ declare const _default: import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<"tooManyAsyncOnTag", [TemplateAsyncNumberLimitationOptions, ...any[]], unknown, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener> & {
7
+ name: string;
8
+ };
7
9
  export default _default;
@@ -12,7 +12,7 @@ interface SourceSpan {
12
12
  col: any;
13
13
  };
14
14
  }
15
- /** Basic interface for the Parser Services object provided by @angular-eslint/template-parser */
15
+ /** Basic interface for the Parser Services object provided by `@angular-eslint/template-parser` */
16
16
  type TemplateParserServices = ParserServices & {
17
17
  /** Set body visitor rule runner */
18
18
  convertElementSourceSpanToLoc: (listenerObj: any) => any;
@@ -20,7 +20,7 @@ type TemplateParserServices = ParserServices & {
20
20
  convertNodeSourceSpanToLoc: (sourceSpan: SourceSpan) => any;
21
21
  };
22
22
  /**
23
- * Determine if @angular-eslint/template-parser is used
23
+ * Determine if `@angular-eslint/template-parser` is used
24
24
  * @param parserServices Parser services object
25
25
  */
26
26
  export declare function isTemplateParserServices(parserServices: any): parserServices is TemplateParserServices;
@@ -30,8 +30,8 @@ export declare function isTemplateParserServices(parserServices: any): parserSer
30
30
  */
31
31
  export declare function getTemplateParserServices(context: Readonly<TSESLint.RuleContext<string, readonly unknown[]>>): TemplateParserServices;
32
32
  /**
33
- * Utility for rule authors to ensure that their rule is correctly being used with @angular-eslint/template-parser
34
- * If @angular-eslint/template-parser is not the configured parser when the function is invoked it will throw
33
+ * Utility for rule authors to ensure that their rule is correctly being used with `@angular-eslint/template-parser`
34
+ * If `@angular-eslint/template-parser` is not the configured parser when the function is invoked it will throw
35
35
  * @param context
36
36
  */
37
37
  export declare function ensureTemplateParser(context: Readonly<TSESLint.RuleContext<string, readonly unknown[]>>): void;
@@ -4,7 +4,7 @@ exports.isTemplateParserServices = isTemplateParserServices;
4
4
  exports.getTemplateParserServices = getTemplateParserServices;
5
5
  exports.ensureTemplateParser = ensureTemplateParser;
6
6
  /**
7
- * Determine if @angular-eslint/template-parser is used
7
+ * Determine if `@angular-eslint/template-parser` is used
8
8
  * @param parserServices Parser services object
9
9
  */
10
10
  function isTemplateParserServices(parserServices) {
@@ -27,8 +27,8 @@ function getTemplateParserServices(context) {
27
27
  return parserService;
28
28
  }
29
29
  /**
30
- * Utility for rule authors to ensure that their rule is correctly being used with @angular-eslint/template-parser
31
- * If @angular-eslint/template-parser is not the configured parser when the function is invoked it will throw
30
+ * Utility for rule authors to ensure that their rule is correctly being used with `@angular-eslint/template-parser`
31
+ * If `@angular-eslint/template-parser` is not the configured parser when the function is invoked it will throw
32
32
  * @param context
33
33
  */
34
34
  function ensureTemplateParser(context) {
@@ -1,2 +1,4 @@
1
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<"suggestion" | "error", [], unknown, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener>;
1
+ declare const _default: import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<"suggestion" | "error", [], unknown, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };
2
4
  export default _default;
@@ -1,2 +1,4 @@
1
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<"error" | "indexFile", [], unknown, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener>;
1
+ declare const _default: import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<"error" | "indexFile", [], unknown, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener> & {
2
+ name: string;
3
+ };
2
4
  export default _default;
@@ -1,5 +1,7 @@
1
1
  export interface NoMultipleTypeConfigurationPropertyOption {
2
2
  supportedInterfaceNames?: string[];
3
3
  }
4
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<"suggestion" | "error", [Required<NoMultipleTypeConfigurationPropertyOption>, ...any[]], unknown, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener>;
4
+ declare const _default: import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<"suggestion" | "error", [Required<NoMultipleTypeConfigurationPropertyOption>, ...any[]], unknown, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener> & {
5
+ name: string;
6
+ };
5
7
  export default _default;
@@ -3,5 +3,7 @@ export interface O3rCategoriesTagsRuleOption {
3
3
  globalConfigCategories?: string[];
4
4
  }
5
5
  type Messages = 'alreadyDefined' | 'undefinedCategory' | 'onlyOneCategoryAllowed' | 'notInConfigurationInterface' | 'suggestReplaceO3rCategory';
6
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<Messages, readonly [O3rCategoriesTagsRuleOption, ...any[]], unknown, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener>;
6
+ declare const _default: import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<Messages, readonly [O3rCategoriesTagsRuleOption, ...any[]], unknown, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener> & {
7
+ name: string;
8
+ };
7
9
  export default _default;
@@ -4,5 +4,7 @@ export interface O3rRestrictionKeyTagsRuleOption {
4
4
  supportedKeys?: string[];
5
5
  }
6
6
  type O3rWidgetRuleErrorId = 'notSupportedKey' | 'notWrapWithQuotes' | 'suggestWrapWithQuotes' | 'suggestUseSupportedKey' | 'noRestrictionKeyProvided' | 'notInConfigurationInterface';
7
- declare const _default: TSESLint.RuleModule<O3rWidgetRuleErrorId, [Readonly<O3rRestrictionKeyTagsRuleOption>, ...any[]], unknown, TSESLint.RuleListener>;
7
+ declare const _default: TSESLint.RuleModule<O3rWidgetRuleErrorId, [Readonly<O3rRestrictionKeyTagsRuleOption>, ...any[]], unknown, TSESLint.RuleListener> & {
8
+ name: string;
9
+ };
8
10
  export default _default;
@@ -12,5 +12,7 @@ export interface O3rWidgetTagsRuleOption {
12
12
  };
13
13
  }
14
14
  type O3rWidgetRuleErrorId = 'notInConfigurationInterface' | 'notSupportedType' | 'notSupportedParamForType' | 'invalidParamValueType' | 'noParamWithoutWidget' | 'onlyOneWidgetAllowed' | 'duplicatedParam' | 'requiredParamMissing' | 'suggestParamMissing' | 'suggestRemoveDuplicatedO3rWidget' | 'suggestRemoveDuplicatedO3rWidgetParam' | 'suggestAddO3rWidgetTag' | 'suggestReplaceO3rWidgetType';
15
- declare const _default: TSESLint.RuleModule<O3rWidgetRuleErrorId, [Readonly<O3rWidgetTagsRuleOption>, ...any[]], unknown, TSESLint.RuleListener>;
15
+ declare const _default: TSESLint.RuleModule<O3rWidgetRuleErrorId, [Readonly<O3rWidgetTagsRuleOption>, ...any[]], unknown, TSESLint.RuleListener> & {
16
+ name: string;
17
+ };
16
18
  export default _default;
@@ -1,6 +1,8 @@
1
1
  import { ESLintUtils, TSESLint, TSESTree } from '@typescript-eslint/utils';
2
2
  /** ESLint rule generator */
3
- export declare const createRule: <Options extends readonly unknown[], MessageIds extends string>({ meta, name, ...rule }: Readonly<ESLintUtils.RuleWithMetaAndName<Options, MessageIds, unknown>>) => ESLintUtils.RuleModule<MessageIds, Options, unknown, ESLintUtils.RuleListener>;
3
+ export declare const createRule: <Options extends readonly unknown[], MessageIds extends string>({ meta, name, ...rule }: Readonly<ESLintUtils.RuleWithMetaAndName<Options, MessageIds, unknown>>) => ESLintUtils.RuleModule<MessageIds, Options, unknown, ESLintUtils.RuleListener> & {
4
+ name: string;
5
+ };
4
6
  /** Default supported interface names */
5
7
  export declare const defaultSupportedInterfaceNames: string[];
6
8
  /**
@@ -8,5 +8,7 @@ export interface YarnrcPackageExtensionsHarmonizeOptions {
8
8
  /** List of dependency types to validate in .yarnrc.yml */
9
9
  yarnrcDependencyTypes: string[];
10
10
  }
11
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<"error" | "versionUpdate", [YarnrcPackageExtensionsHarmonizeOptions, ...any[]], unknown, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener>;
11
+ declare const _default: import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<"error" | "versionUpdate", [YarnrcPackageExtensionsHarmonizeOptions, ...any[]], unknown, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener> & {
12
+ name: string;
13
+ };
12
14
  export default _default;