@trackunit/eslint-plugin-trackunit 0.0.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.
Files changed (147) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +117 -0
  3. package/package.json +31 -0
  4. package/src/index.d.ts +8 -0
  5. package/src/index.js +20 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/config/fragments/ignores.d.ts +2 -0
  8. package/src/lib/config/fragments/ignores.js +18 -0
  9. package/src/lib/config/fragments/ignores.js.map +1 -0
  10. package/src/lib/config/fragments/import-rules.d.ts +3 -0
  11. package/src/lib/config/fragments/import-rules.js +58 -0
  12. package/src/lib/config/fragments/import-rules.js.map +1 -0
  13. package/src/lib/config/fragments/jest-overrides.d.ts +2 -0
  14. package/src/lib/config/fragments/jest-overrides.js +30 -0
  15. package/src/lib/config/fragments/jest-overrides.js.map +1 -0
  16. package/src/lib/config/fragments/jsdoc-rules.d.ts +3 -0
  17. package/src/lib/config/fragments/jsdoc-rules.js +71 -0
  18. package/src/lib/config/fragments/jsdoc-rules.js.map +1 -0
  19. package/src/lib/config/fragments/module-boundaries.d.ts +2 -0
  20. package/src/lib/config/fragments/module-boundaries.js +92 -0
  21. package/src/lib/config/fragments/module-boundaries.js.map +1 -0
  22. package/src/lib/config/fragments/react-rules.d.ts +5 -0
  23. package/src/lib/config/fragments/react-rules.js +137 -0
  24. package/src/lib/config/fragments/react-rules.js.map +1 -0
  25. package/src/lib/config/fragments/restricted-imports.d.ts +2 -0
  26. package/src/lib/config/fragments/restricted-imports.js +58 -0
  27. package/src/lib/config/fragments/restricted-imports.js.map +1 -0
  28. package/src/lib/config/fragments/testing-library.d.ts +2 -0
  29. package/src/lib/config/fragments/testing-library.js +7 -0
  30. package/src/lib/config/fragments/testing-library.js.map +1 -0
  31. package/src/lib/config/fragments/typescript-rules.d.ts +2 -0
  32. package/src/lib/config/fragments/typescript-rules.js +97 -0
  33. package/src/lib/config/fragments/typescript-rules.js.map +1 -0
  34. package/src/lib/config/index.d.ts +863 -0
  35. package/src/lib/config/index.js +10 -0
  36. package/src/lib/config/index.js.map +1 -0
  37. package/src/lib/config/plugins.d.ts +90 -0
  38. package/src/lib/config/plugins.js +44 -0
  39. package/src/lib/config/plugins.js.map +1 -0
  40. package/src/lib/config/presets/base.d.ts +265 -0
  41. package/src/lib/config/presets/base.js +145 -0
  42. package/src/lib/config/presets/base.js.map +1 -0
  43. package/src/lib/config/presets/e2e.d.ts +10 -0
  44. package/src/lib/config/presets/e2e.js +19 -0
  45. package/src/lib/config/presets/e2e.js.map +1 -0
  46. package/src/lib/config/presets/public-api.d.ts +147 -0
  47. package/src/lib/config/presets/public-api.js +62 -0
  48. package/src/lib/config/presets/public-api.js.map +1 -0
  49. package/src/lib/config/presets/react.d.ts +598 -0
  50. package/src/lib/config/presets/react.js +97 -0
  51. package/src/lib/config/presets/react.js.map +1 -0
  52. package/src/lib/config/presets/server.d.ts +36 -0
  53. package/src/lib/config/presets/server.js +37 -0
  54. package/src/lib/config/presets/server.js.map +1 -0
  55. package/src/lib/config/utils.d.ts +6 -0
  56. package/src/lib/config/utils.js +28 -0
  57. package/src/lib/config/utils.js.map +1 -0
  58. package/src/lib/config-helpers/create-skip-when.d.ts +35 -0
  59. package/src/lib/config-helpers/create-skip-when.js +54 -0
  60. package/src/lib/config-helpers/create-skip-when.js.map +1 -0
  61. package/src/lib/rules/cva-merge-base-classes-as-array/cva-merge-base-classes-as-array.d.ts +16 -0
  62. package/src/lib/rules/cva-merge-base-classes-as-array/cva-merge-base-classes-as-array.js +83 -0
  63. package/src/lib/rules/cva-merge-base-classes-as-array/cva-merge-base-classes-as-array.js.map +1 -0
  64. package/src/lib/rules/design-guideline-button-icon-size-match/design-guideline-button-icon-size-match.d.ts +4 -0
  65. package/src/lib/rules/design-guideline-button-icon-size-match/design-guideline-button-icon-size-match.js +297 -0
  66. package/src/lib/rules/design-guideline-button-icon-size-match/design-guideline-button-icon-size-match.js.map +1 -0
  67. package/src/lib/rules/no-internal-barrel-files/examples.d.ts +80 -0
  68. package/src/lib/rules/no-internal-barrel-files/examples.js +84 -0
  69. package/src/lib/rules/no-internal-barrel-files/examples.js.map +1 -0
  70. package/src/lib/rules/no-internal-barrel-files/no-internal-barrel-files.d.ts +29 -0
  71. package/src/lib/rules/no-internal-barrel-files/no-internal-barrel-files.js +178 -0
  72. package/src/lib/rules/no-internal-barrel-files/no-internal-barrel-files.js.map +1 -0
  73. package/src/lib/rules/no-internal-graphql-when-tagged-with-gql-public/no-internal-graphql-when-tagged-with-gql-public.d.ts +5 -0
  74. package/src/lib/rules/no-internal-graphql-when-tagged-with-gql-public/no-internal-graphql-when-tagged-with-gql-public.js +67 -0
  75. package/src/lib/rules/no-internal-graphql-when-tagged-with-gql-public/no-internal-graphql-when-tagged-with-gql-public.js.map +1 -0
  76. package/src/lib/rules/no-jest-mock-trackunit-react-core-hooks/no-jest-mock-trackunit-react-core-hooks.d.ts +2 -0
  77. package/src/lib/rules/no-jest-mock-trackunit-react-core-hooks/no-jest-mock-trackunit-react-core-hooks.js +34 -0
  78. package/src/lib/rules/no-jest-mock-trackunit-react-core-hooks/no-jest-mock-trackunit-react-core-hooks.js.map +1 -0
  79. package/src/lib/rules/no-template-strings-in-classname-prop/no-template-strings-in-classname-prop.d.ts +16 -0
  80. package/src/lib/rules/no-template-strings-in-classname-prop/no-template-strings-in-classname-prop.js +55 -0
  81. package/src/lib/rules/no-template-strings-in-classname-prop/no-template-strings-in-classname-prop.js.map +1 -0
  82. package/src/lib/rules/no-typescript-assertion/examples.d.ts +1 -0
  83. package/src/lib/rules/no-typescript-assertion/examples.js +45 -0
  84. package/src/lib/rules/no-typescript-assertion/examples.js.map +1 -0
  85. package/src/lib/rules/no-typescript-assertion/no-typescript-assertion.d.ts +20 -0
  86. package/src/lib/rules/no-typescript-assertion/no-typescript-assertion.js +83 -0
  87. package/src/lib/rules/no-typescript-assertion/no-typescript-assertion.js.map +1 -0
  88. package/src/lib/rules/prefer-destructured-imports/prefer-destructured-imports.d.ts +73 -0
  89. package/src/lib/rules/prefer-destructured-imports/prefer-destructured-imports.js +333 -0
  90. package/src/lib/rules/prefer-destructured-imports/prefer-destructured-imports.js.map +1 -0
  91. package/src/lib/rules/prefer-event-specific-callback-naming/name-suggestion-strategies.d.ts +56 -0
  92. package/src/lib/rules/prefer-event-specific-callback-naming/name-suggestion-strategies.js +225 -0
  93. package/src/lib/rules/prefer-event-specific-callback-naming/name-suggestion-strategies.js.map +1 -0
  94. package/src/lib/rules/prefer-event-specific-callback-naming/prefer-event-specific-callback-naming.d.ts +49 -0
  95. package/src/lib/rules/prefer-event-specific-callback-naming/prefer-event-specific-callback-naming.js +75 -0
  96. package/src/lib/rules/prefer-event-specific-callback-naming/prefer-event-specific-callback-naming.js.map +1 -0
  97. package/src/lib/rules/prefer-event-specific-callback-naming/strategies/string-based.d.ts +32 -0
  98. package/src/lib/rules/prefer-event-specific-callback-naming/strategies/string-based.js +143 -0
  99. package/src/lib/rules/prefer-event-specific-callback-naming/strategies/string-based.js.map +1 -0
  100. package/src/lib/rules/prefer-event-specific-callback-naming/strategies/type-based.d.ts +27 -0
  101. package/src/lib/rules/prefer-event-specific-callback-naming/strategies/type-based.js +196 -0
  102. package/src/lib/rules/prefer-event-specific-callback-naming/strategies/type-based.js.map +1 -0
  103. package/src/lib/rules/prefer-event-specific-callback-naming/utils.d.ts +76 -0
  104. package/src/lib/rules/prefer-event-specific-callback-naming/utils.js +245 -0
  105. package/src/lib/rules/prefer-event-specific-callback-naming/utils.js.map +1 -0
  106. package/src/lib/rules/prefer-field-components/prefer-field-components.d.ts +4 -0
  107. package/src/lib/rules/prefer-field-components/prefer-field-components.js +289 -0
  108. package/src/lib/rules/prefer-field-components/prefer-field-components.js.map +1 -0
  109. package/src/lib/rules/prefer-mouse-event-handler-in-react-props/prefer-mouse-event-handler-in-react-props.d.ts +26 -0
  110. package/src/lib/rules/prefer-mouse-event-handler-in-react-props/prefer-mouse-event-handler-in-react-props.js +402 -0
  111. package/src/lib/rules/prefer-mouse-event-handler-in-react-props/prefer-mouse-event-handler-in-react-props.js.map +1 -0
  112. package/src/lib/rules/require-classname-alternatives/require-classname-alternatives.d.ts +13 -0
  113. package/src/lib/rules/require-classname-alternatives/require-classname-alternatives.js +271 -0
  114. package/src/lib/rules/require-classname-alternatives/require-classname-alternatives.js.map +1 -0
  115. package/src/lib/rules/require-list-item-virtualization-props/require-list-item-virtualization-props.d.ts +15 -0
  116. package/src/lib/rules/require-list-item-virtualization-props/require-list-item-virtualization-props.js +245 -0
  117. package/src/lib/rules/require-list-item-virtualization-props/require-list-item-virtualization-props.js.map +1 -0
  118. package/src/lib/rules/require-optional-prop-initialization/require-optional-prop-initialization.d.ts +17 -0
  119. package/src/lib/rules/require-optional-prop-initialization/require-optional-prop-initialization.js +133 -0
  120. package/src/lib/rules/require-optional-prop-initialization/require-optional-prop-initialization.js.map +1 -0
  121. package/src/lib/rules/require-optional-prop-initialization/suggestion-utils.d.ts +12 -0
  122. package/src/lib/rules/require-optional-prop-initialization/suggestion-utils.js +128 -0
  123. package/src/lib/rules/require-optional-prop-initialization/suggestion-utils.js.map +1 -0
  124. package/src/lib/rules-map.d.ts +66 -0
  125. package/src/lib/rules-map.js +34 -0
  126. package/src/lib/rules-map.js.map +1 -0
  127. package/src/lib/utils/ast-utils.d.ts +85 -0
  128. package/src/lib/utils/ast-utils.js +530 -0
  129. package/src/lib/utils/ast-utils.js.map +1 -0
  130. package/src/lib/utils/classname-utils.d.ts +150 -0
  131. package/src/lib/utils/classname-utils.js +492 -0
  132. package/src/lib/utils/classname-utils.js.map +1 -0
  133. package/src/lib/utils/file-utils.d.ts +14 -0
  134. package/src/lib/utils/file-utils.js +106 -0
  135. package/src/lib/utils/file-utils.js.map +1 -0
  136. package/src/lib/utils/import-utils.d.ts +85 -0
  137. package/src/lib/utils/import-utils.js +193 -0
  138. package/src/lib/utils/import-utils.js.map +1 -0
  139. package/src/lib/utils/nx-utils.d.ts +59 -0
  140. package/src/lib/utils/nx-utils.js +103 -0
  141. package/src/lib/utils/nx-utils.js.map +1 -0
  142. package/src/lib/utils/package-utils.d.ts +38 -0
  143. package/src/lib/utils/package-utils.js +74 -0
  144. package/src/lib/utils/package-utils.js.map +1 -0
  145. package/src/lib/utils/typescript-utils.d.ts +29 -0
  146. package/src/lib/utils/typescript-utils.js +213 -0
  147. package/src/lib/utils/typescript-utils.js.map +1 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,9 @@
1
+ ## 0.0.2 (2026-03-02)
2
+
3
+ ### 🧱 Updated Dependencies
4
+
5
+ - Updated css-class-variance-utilities to 1.11.49
6
+ - Updated react-core-contexts-test to 1.12.32
7
+ - Updated react-form-components to 1.14.37
8
+ - Updated react-components to 1.17.34
9
+ - Updated shared-utils to 1.13.49
package/README.md ADDED
@@ -0,0 +1,117 @@
1
+ # @trackunit/eslint-plugin-trackunit
2
+
3
+ A shared ESLint plugin and configuration preset for Trackunit projects. It bundles Trackunit-specific custom rules alongside curated third-party plugin configurations into ready-to-use flat-config presets for ESLint 9+.
4
+
5
+ ## Quick Start
6
+
7
+ This plugin ships **flat-config presets** for common and client-side code. Compose them in your ESLint config:
8
+
9
+ ```js
10
+ // eslint.config.cjs
11
+ const { configs } = require("@trackunit/eslint-plugin-trackunit");
12
+
13
+ // Pick the presets that match your project:
14
+ module.exports = [...configs.base, ...configs.react];
15
+ ```
16
+
17
+ > For server, public API, and E2E presets see `@trackunit/eslint-plugin-trackunit-internal` (internal, not published to npm).
18
+
19
+ ## Presets
20
+
21
+ | Preset | Purpose | Includes |
22
+ |--------|---------|----------|
23
+ | `configs.base` | Foundation for every project | TypeScript, import, module-boundary, JSDoc, and custom Trackunit rules |
24
+ | `configs.react` | React / browser applications | React, React Hooks, Storybook, Jest + Testing Library overrides |
25
+
26
+ ### Combining Presets
27
+
28
+ Presets are arrays of flat-config objects — spread them in the order you need:
29
+
30
+ ```js
31
+ // React application
32
+ module.exports = [...configs.base, ...configs.react];
33
+ ```
34
+
35
+ `configs.base` should always come first.
36
+
37
+ ## Custom Rules
38
+
39
+ All custom rules are enabled automatically through the presets under the `@trackunit/` prefix. Below is a summary of every rule shipped with the plugin.
40
+
41
+ ### Code Quality
42
+
43
+ | Rule | Severity | Auto-fix | Description |
44
+ |------|----------|----------|-------------|
45
+ | `@trackunit/no-typescript-assertion` | warn | — | Disallows `as`, angle-bracket, and `!` type assertions. `as const` and `as unknown` are allowed. |
46
+ | `@trackunit/no-internal-barrel-files` | error | — | Prevents internal `index.ts` barrel files that are not at the library root. |
47
+ | `@trackunit/prefer-destructured-imports` | — | yes | Converts namespace imports (`import * as Foo`) to named imports for configured packages. |
48
+
49
+ ### React & JSX
50
+
51
+ | Rule | Severity | Auto-fix | Description |
52
+ |------|----------|----------|-------------|
53
+ | `@trackunit/no-template-strings-in-classname-prop` | — | — | Disallows template literals in `className`. Use `twMerge()` or `cvaMerge()` instead. |
54
+ | `@trackunit/require-classname-alternatives` | — | yes | Replaces banned class names with approved alternatives. |
55
+ | `@trackunit/cva-merge-base-classes-as-array` | — | yes | Enforces array syntax for `cvaMerge` base classes when more than one class is used. |
56
+ | `@trackunit/design-guideline-button-icon-size-match` | — | yes | Ensures `Icon` inside `Button` uses the correct `size` prop. |
57
+ | `@trackunit/prefer-field-components` | — | yes | Prefers `SelectField`/`TextField` over manually combining `Label` + base input components. |
58
+ | `@trackunit/prefer-mouse-event-handler-in-react-props` | — | — | Enforces `MouseEventHandler<T>` typing for `onClick*` props. |
59
+ | `@trackunit/prefer-event-specific-callback-naming` | — | — | Enforces event-specific naming (e.g. `onClickClose` over `onClose`) for click handlers. |
60
+ | `@trackunit/require-optional-prop-initialization` | — | — | Requires optional component props to be initialized inside the component. |
61
+ | `@trackunit/require-list-item-virtualization-props` | — | — | Requires `VirtualizationListItemProps` on list items inside `<List>`. |
62
+
63
+ ### Testing
64
+
65
+ | Rule | Severity | Auto-fix | Description |
66
+ |------|----------|----------|-------------|
67
+ | `@trackunit/no-jest-mock-trackunit-react-core-hooks` | — | — | Disallows `jest.mock("@trackunit/react-core-hooks")`. Use `trackunitProviders()` mock builders instead. |
68
+
69
+ ### NX / Monorepo
70
+
71
+ | Rule | Severity | Auto-fix | Description |
72
+ |------|----------|----------|-------------|
73
+ | `@trackunit/no-internal-graphql-when-tagged-with-gql-public` | error | — | Prevents internal GraphQL usage in projects tagged with `gql-public`. Applied to `project.json` files. |
74
+
75
+ ## Utilities
76
+
77
+ ### `createSkipWhen`
78
+
79
+ Wraps rules so they are skipped for projects matching NX workspace criteria (e.g. specific tags):
80
+
81
+ ```js
82
+ const { createSkipWhen } = require("@trackunit/eslint-plugin-trackunit");
83
+
84
+ createSkipWhen({
85
+ when: { tags: ["scope:tool"] },
86
+ plugins: {
87
+ "import-x": importXPlugin,
88
+ },
89
+ rules: {
90
+ "import-x/no-extraneous-dependencies": ["error", { /* ... */ }],
91
+ },
92
+ });
93
+ ```
94
+
95
+ ### `findMonorepoRoot`
96
+
97
+ Resolves the NX monorepo root by walking up from the plugin directory until `nx.json` is found. Useful when rule options need an absolute path to the workspace root.
98
+
99
+ ```js
100
+ const { findMonorepoRoot } = require("@trackunit/eslint-plugin-trackunit");
101
+
102
+ const root = findMonorepoRoot();
103
+ ```
104
+
105
+ ## Requirements
106
+
107
+ - Node.js >= 24
108
+ - ESLint 9+
109
+ - TypeScript 5.9+
110
+
111
+ For more info and a full guide on Iris App SDK Development, please visit our [Developer Hub](https://developers.trackunit.com/).
112
+
113
+ ## Trackunit
114
+ This package was developed by Trackunit ApS.
115
+ Trackunit is the leading SaaS-based IoT solution for the construction industry, offering an ecosystem of hardware, fleet management software & telematics.
116
+
117
+ ![The Trackunit logo](https://trackunit.com/wp-content/uploads/2022/03/top-logo.svg)
package/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "@trackunit/eslint-plugin-trackunit",
3
+ "version": "0.0.2",
4
+ "license": "SEE LICENSE IN LICENSE.txt",
5
+ "repository": "https://github.com/Trackunit/manager",
6
+ "engines": {
7
+ "node": ">=24.x"
8
+ },
9
+ "dependencies": {
10
+ "eslint": "^9.33.0",
11
+ "@nx/eslint-plugin": "22.4.4",
12
+ "@typescript-eslint/eslint-plugin": "8.54.0",
13
+ "@typescript-eslint/parser": "8.54.0",
14
+ "@typescript-eslint/utils": "8.54.0",
15
+ "eslint-config-prettier": "^10.1.8",
16
+ "eslint-plugin-import": "2.32.0",
17
+ "eslint-plugin-jest": "^29.5.0",
18
+ "eslint-plugin-jsdoc": "^61.2.1",
19
+ "eslint-plugin-no-null": "^1.0.2",
20
+ "eslint-plugin-react": "7.37.5",
21
+ "eslint-plugin-react-hooks": "7.0.1",
22
+ "eslint-plugin-storybook": "^10.2.4",
23
+ "eslint-plugin-testing-library": "^7.6.6",
24
+ "globals": "^15.13.0",
25
+ "typescript": "5.9.3",
26
+ "tslib": "^2.6.2"
27
+ },
28
+ "types": "./src/index.d.ts",
29
+ "main": "./src/index.js",
30
+ "type": "commonjs"
31
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ import { rulesMap } from "./lib/rules-map";
2
+ export default rulesMap;
3
+ export { configs } from "./lib/config";
4
+ export { createSkipWhen } from "./lib/config-helpers/create-skip-when";
5
+ export { findMonorepoRoot } from "./lib/config/utils";
6
+ export type { MatchCriteria, ProjectMetadata } from "./lib/utils/nx-utils";
7
+ export { strictJsdocRules } from "./lib/config/fragments/jsdoc-rules";
8
+ export { globals, jsdoc, nx, reactHooks, tsParser } from "./lib/config/plugins";
package/src/index.js ADDED
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tsParser = exports.reactHooks = exports.nx = exports.jsdoc = exports.globals = exports.strictJsdocRules = exports.findMonorepoRoot = exports.createSkipWhen = exports.configs = void 0;
4
+ const rules_map_1 = require("./lib/rules-map");
5
+ exports.default = rules_map_1.rulesMap;
6
+ var config_1 = require("./lib/config");
7
+ Object.defineProperty(exports, "configs", { enumerable: true, get: function () { return config_1.configs; } });
8
+ var create_skip_when_1 = require("./lib/config-helpers/create-skip-when");
9
+ Object.defineProperty(exports, "createSkipWhen", { enumerable: true, get: function () { return create_skip_when_1.createSkipWhen; } });
10
+ var utils_1 = require("./lib/config/utils");
11
+ Object.defineProperty(exports, "findMonorepoRoot", { enumerable: true, get: function () { return utils_1.findMonorepoRoot; } });
12
+ var jsdoc_rules_1 = require("./lib/config/fragments/jsdoc-rules");
13
+ Object.defineProperty(exports, "strictJsdocRules", { enumerable: true, get: function () { return jsdoc_rules_1.strictJsdocRules; } });
14
+ var plugins_1 = require("./lib/config/plugins");
15
+ Object.defineProperty(exports, "globals", { enumerable: true, get: function () { return plugins_1.globals; } });
16
+ Object.defineProperty(exports, "jsdoc", { enumerable: true, get: function () { return plugins_1.jsdoc; } });
17
+ Object.defineProperty(exports, "nx", { enumerable: true, get: function () { return plugins_1.nx; } });
18
+ Object.defineProperty(exports, "reactHooks", { enumerable: true, get: function () { return plugins_1.reactHooks; } });
19
+ Object.defineProperty(exports, "tsParser", { enumerable: true, get: function () { return plugins_1.tsParser; } });
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/eslint/plugin-trackunit/src/index.ts"],"names":[],"mappings":";;;AAAA,+CAA2C;AAE3C,kBAAe,oBAAQ,CAAC;AAExB,uCAAuC;AAA9B,iGAAA,OAAO,OAAA;AAChB,0EAAuE;AAA9D,kHAAA,cAAc,OAAA;AACvB,4CAAsD;AAA7C,yGAAA,gBAAgB,OAAA;AAGzB,kEAAsE;AAA7D,+GAAA,gBAAgB,OAAA;AACzB,gDAAgF;AAAvE,kGAAA,OAAO,OAAA;AAAE,gGAAA,KAAK,OAAA;AAAE,6FAAA,EAAE,OAAA;AAAE,qGAAA,UAAU,OAAA;AAAE,mGAAA,QAAQ,OAAA","sourcesContent":["import { rulesMap } from \"./lib/rules-map\";\n\nexport default rulesMap;\n\nexport { configs } from \"./lib/config\";\nexport { createSkipWhen } from \"./lib/config-helpers/create-skip-when\";\nexport { findMonorepoRoot } from \"./lib/config/utils\";\nexport type { MatchCriteria, ProjectMetadata } from \"./lib/utils/nx-utils\";\n\nexport { strictJsdocRules } from \"./lib/config/fragments/jsdoc-rules\";\nexport { globals, jsdoc, nx, reactHooks, tsParser } from \"./lib/config/plugins\";\n"]}
@@ -0,0 +1,2 @@
1
+ import type { Linter } from "eslint";
2
+ export declare const globalIgnores: Linter.Config;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.globalIgnores = void 0;
4
+ exports.globalIgnores = {
5
+ ignores: [
6
+ "**/src/gql-api.tsx",
7
+ "**/src/typings/**/*",
8
+ "**/testUtils.tsx",
9
+ "**/webpack.config.js",
10
+ "**/jest.config.*",
11
+ "**/jest.setup.*",
12
+ "**/src/**/generated/**/*.*",
13
+ "**/src/**/generated.*",
14
+ "**/dist/**/*",
15
+ "**/*.docs.mdx",
16
+ ],
17
+ };
18
+ //# sourceMappingURL=ignores.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ignores.js","sourceRoot":"","sources":["../../../../../../../../libs/eslint/plugin-trackunit/src/lib/config/fragments/ignores.ts"],"names":[],"mappings":";;;AAEa,QAAA,aAAa,GAAkB;IAC1C,OAAO,EAAE;QACP,oBAAoB;QACpB,qBAAqB;QACrB,kBAAkB;QAClB,sBAAsB;QACtB,kBAAkB;QAClB,iBAAiB;QACjB,4BAA4B;QAC5B,uBAAuB;QACvB,cAAc;QACd,eAAe;KAChB;CACF,CAAC","sourcesContent":["import type { Linter } from \"eslint\";\n\nexport const globalIgnores: Linter.Config = {\n ignores: [\n \"**/src/gql-api.tsx\",\n \"**/src/typings/**/*\",\n \"**/testUtils.tsx\",\n \"**/webpack.config.js\",\n \"**/jest.config.*\",\n \"**/jest.setup.*\",\n \"**/src/**/generated/**/*.*\",\n \"**/src/**/generated.*\",\n \"**/dist/**/*\",\n \"**/*.docs.mdx\",\n ],\n};\n"]}
@@ -0,0 +1,3 @@
1
+ import type { Linter } from "eslint";
2
+ export declare const importRules: Linter.RulesRecord;
3
+ export declare const createImportExtraneousDependenciesConfig: (rootDir: string) => Linter.Config;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createImportExtraneousDependenciesConfig = exports.importRules = void 0;
4
+ const create_skip_when_1 = require("../../config-helpers/create-skip-when");
5
+ const plugins_1 = require("../plugins");
6
+ exports.importRules = {
7
+ "import-x/no-cycle": [
8
+ "error",
9
+ {
10
+ ignoreExternal: true,
11
+ },
12
+ ],
13
+ "import-x/first": "off",
14
+ };
15
+ const createImportExtraneousDependenciesConfig = (rootDir) => (0, create_skip_when_1.createSkipWhen)({
16
+ when: { tags: ["scope:tool"] },
17
+ plugins: {
18
+ "import-x": plugins_1.importPlugin,
19
+ },
20
+ rules: {
21
+ "import-x/no-extraneous-dependencies": [
22
+ "error",
23
+ {
24
+ packageDir: rootDir,
25
+ devDependencies: [
26
+ "**/*.cy.{ts,tsx}",
27
+ "**/cypress/**",
28
+ "**/*.spec.{ts,tsx}",
29
+ "**/*.test.{ts,tsx}",
30
+ "**/jest.setup.*",
31
+ "**/test/**",
32
+ "**/tests/**",
33
+ "**/testing/**",
34
+ "**/test-setup/**",
35
+ "**/test-utils/**",
36
+ "**/__tests__/**",
37
+ "**/__mocks__/**",
38
+ "**/mocks.{ts,tsx}",
39
+ "**/core-contexts-test/**",
40
+ "**/*.stories.{ts,tsx}",
41
+ "**/storybookUtils.{ts,tsx}",
42
+ "**/.storybook/**",
43
+ "**/scripts/**",
44
+ "**/tools/**",
45
+ "**/*.config.{ts,js,cjs,mjs}",
46
+ "**/css/tailwind/**",
47
+ "**/css/tailwind-custom-properties-plugin/**",
48
+ "**/css/component-tokens/**",
49
+ ],
50
+ optionalDependencies: false,
51
+ peerDependencies: true,
52
+ bundledDependencies: true,
53
+ },
54
+ ],
55
+ },
56
+ });
57
+ exports.createImportExtraneousDependenciesConfig = createImportExtraneousDependenciesConfig;
58
+ //# sourceMappingURL=import-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-rules.js","sourceRoot":"","sources":["../../../../../../../../libs/eslint/plugin-trackunit/src/lib/config/fragments/import-rules.ts"],"names":[],"mappings":";;;AACA,4EAAuE;AACvE,wCAA0C;AAE7B,QAAA,WAAW,GAAuB;IAC7C,mBAAmB,EAAE;QACnB,OAAO;QACP;YACE,cAAc,EAAE,IAAI;SACrB;KACF;IACD,gBAAgB,EAAE,KAAK;CACxB,CAAC;AAEK,MAAM,wCAAwC,GAAG,CAAC,OAAe,EAAiB,EAAE,CACzF,IAAA,iCAAc,EAAC;IACb,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE;IAC9B,OAAO,EAAE;QACP,UAAU,EAAE,sBAAY;KACzB;IACD,KAAK,EAAE;QACL,qCAAqC,EAAE;YACrC,OAAO;YACP;gBACE,UAAU,EAAE,OAAO;gBACnB,eAAe,EAAE;oBACf,kBAAkB;oBAClB,eAAe;oBACf,oBAAoB;oBACpB,oBAAoB;oBACpB,iBAAiB;oBACjB,YAAY;oBACZ,aAAa;oBACb,eAAe;oBACf,kBAAkB;oBAClB,kBAAkB;oBAClB,iBAAiB;oBACjB,iBAAiB;oBACjB,mBAAmB;oBACnB,0BAA0B;oBAC1B,uBAAuB;oBACvB,4BAA4B;oBAC5B,kBAAkB;oBAClB,eAAe;oBACf,aAAa;oBACb,6BAA6B;oBAC7B,oBAAoB;oBACpB,6CAA6C;oBAC7C,4BAA4B;iBAC7B;gBACD,oBAAoB,EAAE,KAAK;gBAC3B,gBAAgB,EAAE,IAAI;gBACtB,mBAAmB,EAAE,IAAI;aAC1B;SACF;KACF;CACF,CAAC,CAAC;AA1CQ,QAAA,wCAAwC,4CA0ChD","sourcesContent":["import type { Linter } from \"eslint\";\nimport { createSkipWhen } from \"../../config-helpers/create-skip-when\";\nimport { importPlugin } from \"../plugins\";\n\nexport const importRules: Linter.RulesRecord = {\n \"import-x/no-cycle\": [\n \"error\",\n {\n ignoreExternal: true,\n },\n ],\n \"import-x/first\": \"off\",\n};\n\nexport const createImportExtraneousDependenciesConfig = (rootDir: string): Linter.Config =>\n createSkipWhen({\n when: { tags: [\"scope:tool\"] },\n plugins: {\n \"import-x\": importPlugin,\n },\n rules: {\n \"import-x/no-extraneous-dependencies\": [\n \"error\",\n {\n packageDir: rootDir,\n devDependencies: [\n \"**/*.cy.{ts,tsx}\",\n \"**/cypress/**\",\n \"**/*.spec.{ts,tsx}\",\n \"**/*.test.{ts,tsx}\",\n \"**/jest.setup.*\",\n \"**/test/**\",\n \"**/tests/**\",\n \"**/testing/**\",\n \"**/test-setup/**\",\n \"**/test-utils/**\",\n \"**/__tests__/**\",\n \"**/__mocks__/**\",\n \"**/mocks.{ts,tsx}\",\n \"**/core-contexts-test/**\",\n \"**/*.stories.{ts,tsx}\",\n \"**/storybookUtils.{ts,tsx}\",\n \"**/.storybook/**\",\n \"**/scripts/**\",\n \"**/tools/**\",\n \"**/*.config.{ts,js,cjs,mjs}\",\n \"**/css/tailwind/**\",\n \"**/css/tailwind-custom-properties-plugin/**\",\n \"**/css/component-tokens/**\",\n ],\n optionalDependencies: false,\n peerDependencies: true,\n bundledDependencies: true,\n },\n ],\n },\n });\n"]}
@@ -0,0 +1,2 @@
1
+ import type { Linter } from "eslint";
2
+ export declare const baseJestOverrides: Linter.Config;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.baseJestOverrides = void 0;
4
+ const plugins_1 = require("../plugins");
5
+ exports.baseJestOverrides = {
6
+ files: ["**/*.spec.ts", "**/*.spec.tsx"],
7
+ languageOptions: {
8
+ ecmaVersion: 5,
9
+ sourceType: "script",
10
+ parserOptions: {
11
+ project: ["./tsconfig.*?.json"],
12
+ },
13
+ },
14
+ plugins: {
15
+ jest: plugins_1.jest,
16
+ "testing-library": plugins_1.testingLibrary,
17
+ },
18
+ rules: {
19
+ ...plugins_1.jest.configs.recommended.rules,
20
+ ...plugins_1.jest.configs.style.rules,
21
+ "@typescript-eslint/no-explicit-any": "off",
22
+ "@typescript-eslint/no-empty-function": "off",
23
+ "@typescript-eslint/no-non-null-assertion": "off",
24
+ "@trackunit/no-typescript-assertion": "off",
25
+ "@trackunit/no-jest-mock-trackunit-react-core-hooks": "error",
26
+ "no-console": "off",
27
+ "@typescript-eslint/strict-boolean-expressions": "off",
28
+ },
29
+ };
30
+ //# sourceMappingURL=jest-overrides.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest-overrides.js","sourceRoot":"","sources":["../../../../../../../../libs/eslint/plugin-trackunit/src/lib/config/fragments/jest-overrides.ts"],"names":[],"mappings":";;;AACA,wCAAkD;AAErC,QAAA,iBAAiB,GAAkB;IAC9C,KAAK,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;IACxC,eAAe,EAAE;QACf,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,QAAQ;QACpB,aAAa,EAAE;YACb,OAAO,EAAE,CAAC,oBAAoB,CAAC;SAChC;KACF;IAED,OAAO,EAAE;QACP,IAAI,EAAJ,cAAI;QACJ,iBAAiB,EAAE,wBAAc;KAClC;IAED,KAAK,EAAE;QACL,GAAG,cAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK;QACjC,GAAG,cAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK;QAC3B,oCAAoC,EAAE,KAAK;QAC3C,sCAAsC,EAAE,KAAK;QAC7C,0CAA0C,EAAE,KAAK;QACjD,oCAAoC,EAAE,KAAK;QAC3C,oDAAoD,EAAE,OAAO;QAC7D,YAAY,EAAE,KAAK;QACnB,+CAA+C,EAAE,KAAK;KACvD;CACF,CAAC","sourcesContent":["import type { Linter } from \"eslint\";\nimport { jest, testingLibrary } from \"../plugins\";\n\nexport const baseJestOverrides: Linter.Config = {\n files: [\"**/*.spec.ts\", \"**/*.spec.tsx\"],\n languageOptions: {\n ecmaVersion: 5,\n sourceType: \"script\",\n parserOptions: {\n project: [\"./tsconfig.*?.json\"],\n },\n },\n\n plugins: {\n jest,\n \"testing-library\": testingLibrary,\n },\n\n rules: {\n ...jest.configs.recommended.rules,\n ...jest.configs.style.rules,\n \"@typescript-eslint/no-explicit-any\": \"off\",\n \"@typescript-eslint/no-empty-function\": \"off\",\n \"@typescript-eslint/no-non-null-assertion\": \"off\",\n \"@trackunit/no-typescript-assertion\": \"off\",\n \"@trackunit/no-jest-mock-trackunit-react-core-hooks\": \"error\",\n \"no-console\": \"off\",\n \"@typescript-eslint/strict-boolean-expressions\": \"off\",\n },\n};\n"]}
@@ -0,0 +1,3 @@
1
+ import type { Linter } from "eslint";
2
+ export declare const basicJsdocRules: Linter.RulesRecord;
3
+ export declare const strictJsdocRules: Linter.RulesRecord;
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.strictJsdocRules = exports.basicJsdocRules = void 0;
4
+ exports.basicJsdocRules = {
5
+ "jsdoc/tag-lines": [
6
+ "error",
7
+ "never",
8
+ {
9
+ startLines: 1,
10
+ },
11
+ ],
12
+ "jsdoc/check-alignment": "error",
13
+ "prefer-arrow-functions": "off",
14
+ "jsdoc/check-indentation": "off",
15
+ "jsdoc/no-restricted-syntax": [
16
+ "error",
17
+ {
18
+ contexts: [
19
+ {
20
+ comment: "JsdocBlock:has(JsdocTag[tag=/type/])",
21
+ context: "any",
22
+ message: "Projects should not use @type annotation in JSDocs.",
23
+ },
24
+ ],
25
+ },
26
+ ],
27
+ };
28
+ exports.strictJsdocRules = {
29
+ "jsdoc/require-jsdoc": [
30
+ "error",
31
+ {
32
+ publicOnly: true,
33
+ require: {
34
+ ArrowFunctionExpression: true,
35
+ ClassDeclaration: true,
36
+ FunctionDeclaration: true,
37
+ FunctionExpression: true,
38
+ MethodDefinition: true,
39
+ },
40
+ },
41
+ ],
42
+ "jsdoc/no-undefined-types": [
43
+ "error",
44
+ {
45
+ definedTypes: ["JSX"],
46
+ },
47
+ ],
48
+ "jsdoc/check-param-names": "error",
49
+ "jsdoc/require-returns-type": "error",
50
+ "jsdoc/valid-types": "error",
51
+ "jsdoc/require-param-description": "error",
52
+ "jsdoc/check-access": "error",
53
+ "jsdoc/check-property-names": "error",
54
+ "jsdoc/check-tag-names": "error",
55
+ "jsdoc/check-types": "error",
56
+ "jsdoc/check-values": "error",
57
+ "jsdoc/check-alignment": "error",
58
+ "jsdoc/empty-tags": "error",
59
+ "jsdoc/implements-on-classes": "error",
60
+ "jsdoc/multiline-blocks": "error",
61
+ "jsdoc/no-multi-asterisks": "error",
62
+ "jsdoc/require-property": "error",
63
+ "jsdoc/require-property-description": "error",
64
+ "jsdoc/require-property-name": "error",
65
+ "jsdoc/require-property-type": "error",
66
+ "jsdoc/require-returns-check": "error",
67
+ "jsdoc/require-returns-description": "error",
68
+ "jsdoc/require-yields": "error",
69
+ "jsdoc/require-yields-check": "error",
70
+ };
71
+ //# sourceMappingURL=jsdoc-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsdoc-rules.js","sourceRoot":"","sources":["../../../../../../../../libs/eslint/plugin-trackunit/src/lib/config/fragments/jsdoc-rules.ts"],"names":[],"mappings":";;;AAEa,QAAA,eAAe,GAAuB;IACjD,iBAAiB,EAAE;QACjB,OAAO;QACP,OAAO;QACP;YACE,UAAU,EAAE,CAAC;SACd;KACF;IACD,uBAAuB,EAAE,OAAO;IAChC,wBAAwB,EAAE,KAAK;IAC/B,yBAAyB,EAAE,KAAK;IAChC,4BAA4B,EAAE;QAC5B,OAAO;QACP;YACE,QAAQ,EAAE;gBACR;oBACE,OAAO,EAAE,sCAAsC;oBAC/C,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,qDAAqD;iBAC/D;aACF;SACF;KACF;CACF,CAAC;AAEW,QAAA,gBAAgB,GAAuB;IAClD,qBAAqB,EAAE;QACrB,OAAO;QACP;YACE,UAAU,EAAE,IAAI;YAEhB,OAAO,EAAE;gBACP,uBAAuB,EAAE,IAAI;gBAC7B,gBAAgB,EAAE,IAAI;gBACtB,mBAAmB,EAAE,IAAI;gBACzB,kBAAkB,EAAE,IAAI;gBACxB,gBAAgB,EAAE,IAAI;aACvB;SACF;KACF;IAED,0BAA0B,EAAE;QAC1B,OAAO;QACP;YACE,YAAY,EAAE,CAAC,KAAK,CAAC;SACtB;KACF;IAED,yBAAyB,EAAE,OAAO;IAClC,4BAA4B,EAAE,OAAO;IACrC,mBAAmB,EAAE,OAAO;IAC5B,iCAAiC,EAAE,OAAO;IAC1C,oBAAoB,EAAE,OAAO;IAC7B,4BAA4B,EAAE,OAAO;IACrC,uBAAuB,EAAE,OAAO;IAChC,mBAAmB,EAAE,OAAO;IAC5B,oBAAoB,EAAE,OAAO;IAC7B,uBAAuB,EAAE,OAAO;IAChC,kBAAkB,EAAE,OAAO;IAC3B,6BAA6B,EAAE,OAAO;IACtC,wBAAwB,EAAE,OAAO;IACjC,0BAA0B,EAAE,OAAO;IACnC,wBAAwB,EAAE,OAAO;IACjC,oCAAoC,EAAE,OAAO;IAC7C,6BAA6B,EAAE,OAAO;IACtC,6BAA6B,EAAE,OAAO;IACtC,6BAA6B,EAAE,OAAO;IACtC,mCAAmC,EAAE,OAAO;IAC5C,sBAAsB,EAAE,OAAO;IAC/B,4BAA4B,EAAE,OAAO;CACtC,CAAC","sourcesContent":["import type { Linter } from \"eslint\";\n\nexport const basicJsdocRules: Linter.RulesRecord = {\n \"jsdoc/tag-lines\": [\n \"error\",\n \"never\",\n {\n startLines: 1,\n },\n ],\n \"jsdoc/check-alignment\": \"error\",\n \"prefer-arrow-functions\": \"off\",\n \"jsdoc/check-indentation\": \"off\",\n \"jsdoc/no-restricted-syntax\": [\n \"error\",\n {\n contexts: [\n {\n comment: \"JsdocBlock:has(JsdocTag[tag=/type/])\",\n context: \"any\",\n message: \"Projects should not use @type annotation in JSDocs.\",\n },\n ],\n },\n ],\n};\n\nexport const strictJsdocRules: Linter.RulesRecord = {\n \"jsdoc/require-jsdoc\": [\n \"error\",\n {\n publicOnly: true,\n\n require: {\n ArrowFunctionExpression: true,\n ClassDeclaration: true,\n FunctionDeclaration: true,\n FunctionExpression: true,\n MethodDefinition: true,\n },\n },\n ],\n\n \"jsdoc/no-undefined-types\": [\n \"error\",\n {\n definedTypes: [\"JSX\"],\n },\n ],\n\n \"jsdoc/check-param-names\": \"error\",\n \"jsdoc/require-returns-type\": \"error\",\n \"jsdoc/valid-types\": \"error\",\n \"jsdoc/require-param-description\": \"error\",\n \"jsdoc/check-access\": \"error\",\n \"jsdoc/check-property-names\": \"error\",\n \"jsdoc/check-tag-names\": \"error\",\n \"jsdoc/check-types\": \"error\",\n \"jsdoc/check-values\": \"error\",\n \"jsdoc/check-alignment\": \"error\",\n \"jsdoc/empty-tags\": \"error\",\n \"jsdoc/implements-on-classes\": \"error\",\n \"jsdoc/multiline-blocks\": \"error\",\n \"jsdoc/no-multi-asterisks\": \"error\",\n \"jsdoc/require-property\": \"error\",\n \"jsdoc/require-property-description\": \"error\",\n \"jsdoc/require-property-name\": \"error\",\n \"jsdoc/require-property-type\": \"error\",\n \"jsdoc/require-returns-check\": \"error\",\n \"jsdoc/require-returns-description\": \"error\",\n \"jsdoc/require-yields\": \"error\",\n \"jsdoc/require-yields-check\": \"error\",\n};\n"]}
@@ -0,0 +1,2 @@
1
+ import type { Linter } from "eslint";
2
+ export declare const moduleBoundaryRules: Linter.RulesRecord;
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.moduleBoundaryRules = void 0;
4
+ exports.moduleBoundaryRules = {
5
+ "@nx/enforce-module-boundaries": [
6
+ "error",
7
+ {
8
+ allow: [],
9
+ depConstraints: [
10
+ {
11
+ sourceTag: "type:app",
12
+ onlyDependOnLibsWithTags: ["type:extension", "type:react", "type:vanilla"],
13
+ bannedExternalImports: ["i18next", "react-i18next"],
14
+ },
15
+ {
16
+ sourceTag: "type:extension",
17
+ onlyDependOnLibsWithTags: ["type:react", "type:vanilla"],
18
+ bannedExternalImports: ["i18next", "react-i18next"],
19
+ },
20
+ {
21
+ sourceTag: "type:react",
22
+ onlyDependOnLibsWithTags: ["type:react", "type:vanilla"],
23
+ bannedExternalImports: ["i18next", "react-i18next"],
24
+ },
25
+ {
26
+ sourceTag: "type:vanilla",
27
+ onlyDependOnLibsWithTags: ["type:vanilla"],
28
+ bannedExternalImports: ["i18next", "react*"],
29
+ },
30
+ {
31
+ sourceTag: "scope:app",
32
+ onlyDependOnLibsWithTags: ["scope:client", "scope:server"],
33
+ },
34
+ {
35
+ sourceTag: "scope:client",
36
+ onlyDependOnLibsWithTags: ["scope:client"],
37
+ },
38
+ {
39
+ sourceTag: "scope:tool",
40
+ onlyDependOnLibsWithTags: ["scope:tool"],
41
+ },
42
+ {
43
+ sourceTag: "scope:server",
44
+ onlyDependOnLibsWithTags: ["scope:server"],
45
+ },
46
+ {
47
+ sourceTag: "visibility:host",
48
+ onlyDependOnLibsWithTags: ["visibility:host", "visibility:shared"],
49
+ },
50
+ {
51
+ sourceTag: "visibility:iris-app",
52
+ onlyDependOnLibsWithTags: ["visibility:iris-app", "visibility:shared"],
53
+ },
54
+ {
55
+ sourceTag: "visibility:shared",
56
+ onlyDependOnLibsWithTags: ["visibility:shared"],
57
+ },
58
+ {
59
+ sourceTag: "dependencies:no-deprecated",
60
+ notDependOnLibsWithTags: ["deprecated"],
61
+ },
62
+ {
63
+ sourceTag: "gql:internal",
64
+ },
65
+ {
66
+ sourceTag: "gql:public",
67
+ },
68
+ {
69
+ sourceTag: "tier1",
70
+ },
71
+ {
72
+ sourceTag: "tier2",
73
+ },
74
+ {
75
+ sourceTag: "tier3",
76
+ },
77
+ {
78
+ sourceTag: "tier4",
79
+ },
80
+ {
81
+ sourceTag: "publish:npm",
82
+ onlyDependOnLibsWithTags: ["publish:npm"],
83
+ bannedExternalImports: ["@sentry/*"],
84
+ notDependOnLibsWithTags: ["deprecated"],
85
+ },
86
+ ],
87
+ enforceBuildableLibDependency: true,
88
+ banTransitiveDependencies: true,
89
+ },
90
+ ],
91
+ };
92
+ //# sourceMappingURL=module-boundaries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-boundaries.js","sourceRoot":"","sources":["../../../../../../../../libs/eslint/plugin-trackunit/src/lib/config/fragments/module-boundaries.ts"],"names":[],"mappings":";;;AAEa,QAAA,mBAAmB,GAAuB;IACrD,+BAA+B,EAAE;QAC/B,OAAO;QACP;YACE,KAAK,EAAE,EAAE;YAET,cAAc,EAAE;gBACd;oBACE,SAAS,EAAE,UAAU;oBACrB,wBAAwB,EAAE,CAAC,gBAAgB,EAAE,YAAY,EAAE,cAAc,CAAC;oBAC1E,qBAAqB,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC;iBACpD;gBACD;oBACE,SAAS,EAAE,gBAAgB;oBAC3B,wBAAwB,EAAE,CAAC,YAAY,EAAE,cAAc,CAAC;oBACxD,qBAAqB,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC;iBACpD;gBACD;oBACE,SAAS,EAAE,YAAY;oBACvB,wBAAwB,EAAE,CAAC,YAAY,EAAE,cAAc,CAAC;oBACxD,qBAAqB,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC;iBACpD;gBACD;oBACE,SAAS,EAAE,cAAc;oBACzB,wBAAwB,EAAE,CAAC,cAAc,CAAC;oBAC1C,qBAAqB,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;iBAC7C;gBACD;oBACE,SAAS,EAAE,WAAW;oBACtB,wBAAwB,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC;iBAC3D;gBACD;oBACE,SAAS,EAAE,cAAc;oBACzB,wBAAwB,EAAE,CAAC,cAAc,CAAC;iBAC3C;gBACD;oBACE,SAAS,EAAE,YAAY;oBACvB,wBAAwB,EAAE,CAAC,YAAY,CAAC;iBACzC;gBACD;oBACE,SAAS,EAAE,cAAc;oBACzB,wBAAwB,EAAE,CAAC,cAAc,CAAC;iBAC3C;gBACD;oBACE,SAAS,EAAE,iBAAiB;oBAC5B,wBAAwB,EAAE,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;iBACnE;gBACD;oBACE,SAAS,EAAE,qBAAqB;oBAChC,wBAAwB,EAAE,CAAC,qBAAqB,EAAE,mBAAmB,CAAC;iBACvE;gBACD;oBACE,SAAS,EAAE,mBAAmB;oBAC9B,wBAAwB,EAAE,CAAC,mBAAmB,CAAC;iBAChD;gBACD;oBACE,SAAS,EAAE,4BAA4B;oBACvC,uBAAuB,EAAE,CAAC,YAAY,CAAC;iBACxC;gBACD;oBACE,SAAS,EAAE,cAAc;iBAC1B;gBACD;oBACE,SAAS,EAAE,YAAY;iBACxB;gBACD;oBACE,SAAS,EAAE,OAAO;iBACnB;gBACD;oBACE,SAAS,EAAE,OAAO;iBACnB;gBACD;oBACE,SAAS,EAAE,OAAO;iBACnB;gBACD;oBACE,SAAS,EAAE,OAAO;iBACnB;gBACD;oBACE,SAAS,EAAE,aAAa;oBACxB,wBAAwB,EAAE,CAAC,aAAa,CAAC;oBACzC,qBAAqB,EAAE,CAAC,WAAW,CAAC;oBACpC,uBAAuB,EAAE,CAAC,YAAY,CAAC;iBACxC;aACF;YAED,6BAA6B,EAAE,IAAI;YACnC,yBAAyB,EAAE,IAAI;SAChC;KACF;CACF,CAAC","sourcesContent":["import type { Linter } from \"eslint\";\n\nexport const moduleBoundaryRules: Linter.RulesRecord = {\n \"@nx/enforce-module-boundaries\": [\n \"error\",\n {\n allow: [],\n\n depConstraints: [\n {\n sourceTag: \"type:app\",\n onlyDependOnLibsWithTags: [\"type:extension\", \"type:react\", \"type:vanilla\"],\n bannedExternalImports: [\"i18next\", \"react-i18next\"],\n },\n {\n sourceTag: \"type:extension\",\n onlyDependOnLibsWithTags: [\"type:react\", \"type:vanilla\"],\n bannedExternalImports: [\"i18next\", \"react-i18next\"],\n },\n {\n sourceTag: \"type:react\",\n onlyDependOnLibsWithTags: [\"type:react\", \"type:vanilla\"],\n bannedExternalImports: [\"i18next\", \"react-i18next\"],\n },\n {\n sourceTag: \"type:vanilla\",\n onlyDependOnLibsWithTags: [\"type:vanilla\"],\n bannedExternalImports: [\"i18next\", \"react*\"],\n },\n {\n sourceTag: \"scope:app\",\n onlyDependOnLibsWithTags: [\"scope:client\", \"scope:server\"],\n },\n {\n sourceTag: \"scope:client\",\n onlyDependOnLibsWithTags: [\"scope:client\"],\n },\n {\n sourceTag: \"scope:tool\",\n onlyDependOnLibsWithTags: [\"scope:tool\"],\n },\n {\n sourceTag: \"scope:server\",\n onlyDependOnLibsWithTags: [\"scope:server\"],\n },\n {\n sourceTag: \"visibility:host\",\n onlyDependOnLibsWithTags: [\"visibility:host\", \"visibility:shared\"],\n },\n {\n sourceTag: \"visibility:iris-app\",\n onlyDependOnLibsWithTags: [\"visibility:iris-app\", \"visibility:shared\"],\n },\n {\n sourceTag: \"visibility:shared\",\n onlyDependOnLibsWithTags: [\"visibility:shared\"],\n },\n {\n sourceTag: \"dependencies:no-deprecated\",\n notDependOnLibsWithTags: [\"deprecated\"],\n },\n {\n sourceTag: \"gql:internal\",\n },\n {\n sourceTag: \"gql:public\",\n },\n {\n sourceTag: \"tier1\",\n },\n {\n sourceTag: \"tier2\",\n },\n {\n sourceTag: \"tier3\",\n },\n {\n sourceTag: \"tier4\",\n },\n {\n sourceTag: \"publish:npm\",\n onlyDependOnLibsWithTags: [\"publish:npm\"],\n bannedExternalImports: [\"@sentry/*\"],\n notDependOnLibsWithTags: [\"deprecated\"],\n },\n ],\n\n enforceBuildableLibDependency: true,\n banTransitiveDependencies: true,\n },\n ],\n};\n"]}
@@ -0,0 +1,5 @@
1
+ import type { Linter } from "eslint";
2
+ export declare const reactRules: Linter.RulesRecord;
3
+ export declare const reactCustomRules: Linter.RulesRecord;
4
+ export declare const reactTestingLibraryOverrides: Linter.Config;
5
+ export declare const reactStoryOverrides: Linter.Config;