eslint-plugin-fast-import 2.2.1 → 2.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.
Files changed (102) hide show
  1. package/.claude/settings.local.json +4 -4
  2. package/CHANGELOG.md +4 -0
  3. package/README.md +3 -0
  4. package/dist/module/computePackageInfo.d.ts +2 -0
  5. package/dist/module/computePackageInfo.js +4 -0
  6. package/dist/module/computePackageInfo.js.map +1 -0
  7. package/dist/module/computeRepoInfo.d.ts +5 -0
  8. package/dist/module/computeRepoInfo.js +100 -0
  9. package/dist/module/computeRepoInfo.js.map +1 -0
  10. package/dist/plugin.d.ts +1 -1
  11. package/dist/plugin.js +3 -0
  12. package/dist/plugin.js.map +1 -1
  13. package/dist/rules/alias/alias.d.ts +1 -1
  14. package/dist/rules/no-cycle/cycle.d.ts +4 -0
  15. package/dist/rules/no-cycle/cycle.js +140 -0
  16. package/dist/rules/no-cycle/cycle.js.map +1 -0
  17. package/dist/rules/no-cycle/rule.d.ts +4 -0
  18. package/dist/rules/no-cycle/rule.js +319 -0
  19. package/dist/rules/no-cycle/rule.js.map +1 -0
  20. package/dist/rules/no-empty-entry-points/rule.d.ts +3 -0
  21. package/dist/rules/no-empty-entry-points/rule.js +57 -0
  22. package/dist/rules/no-empty-entry-points/rule.js.map +1 -0
  23. package/dist/rules/no-entry-point-imports/entryPoint.d.ts +3 -0
  24. package/dist/rules/no-entry-point-imports/entryPoint.js +57 -0
  25. package/dist/rules/no-entry-point-imports/entryPoint.js.map +1 -0
  26. package/dist/rules/no-entry-point-imports/rule.d.ts +3 -0
  27. package/dist/rules/no-entry-point-imports/rule.js +60 -0
  28. package/dist/rules/no-entry-point-imports/rule.js.map +1 -0
  29. package/dist/rules/no-external-barrel-reexports/externalBarrelReexports.d.ts +3 -0
  30. package/dist/rules/no-external-barrel-reexports/externalBarrelReexports.js +42 -0
  31. package/dist/rules/no-external-barrel-reexports/externalBarrelReexports.js.map +1 -0
  32. package/dist/rules/no-external-barrel-reexports/rule.d.ts +3 -0
  33. package/dist/rules/no-external-barrel-reexports/rule.js +42 -0
  34. package/dist/rules/no-external-barrel-reexports/rule.js.map +1 -0
  35. package/dist/rules/no-named-as-default/namedAsDefault.d.ts +3 -0
  36. package/dist/rules/no-named-as-default/namedAsDefault.js +77 -0
  37. package/dist/rules/no-named-as-default/namedAsDefault.js.map +1 -0
  38. package/dist/rules/no-named-as-default/rule.d.ts +3 -0
  39. package/dist/rules/no-named-as-default/rule.js +79 -0
  40. package/dist/rules/no-named-as-default/rule.js.map +1 -0
  41. package/dist/rules/no-node-builtins/nodeBuiltins.d.ts +3 -0
  42. package/dist/rules/no-node-builtins/nodeBuiltins.js +48 -0
  43. package/dist/rules/no-node-builtins/nodeBuiltins.js.map +1 -0
  44. package/dist/rules/no-node-builtins/rule.d.ts +3 -0
  45. package/dist/rules/no-node-builtins/rule.js +49 -0
  46. package/dist/rules/no-node-builtins/rule.js.map +1 -0
  47. package/dist/rules/no-restricted-imports/restricted.d.ts +31 -0
  48. package/dist/rules/no-restricted-imports/restricted.js +196 -0
  49. package/dist/rules/no-restricted-imports/restricted.js.map +1 -0
  50. package/dist/rules/no-restricted-imports/rule.d.ts +31 -0
  51. package/dist/rules/no-restricted-imports/rule.js +204 -0
  52. package/dist/rules/no-restricted-imports/rule.js.map +1 -0
  53. package/dist/rules/no-test-imports-in-prod/rule.d.ts +3 -0
  54. package/dist/rules/no-test-imports-in-prod/rule.js +57 -0
  55. package/dist/rules/no-test-imports-in-prod/rule.js.map +1 -0
  56. package/dist/rules/no-test-imports-in-prod/testInProd.d.ts +3 -0
  57. package/dist/rules/no-test-imports-in-prod/testInProd.js +49 -0
  58. package/dist/rules/no-test-imports-in-prod/testInProd.js.map +1 -0
  59. package/dist/rules/no-test-only-imports/rule.d.ts +3 -0
  60. package/dist/rules/no-test-only-imports/rule.js +69 -0
  61. package/dist/rules/no-test-only-imports/rule.js.map +1 -0
  62. package/dist/rules/no-unnamed-entry-point-exports/rule.d.ts +3 -0
  63. package/dist/rules/no-unnamed-entry-point-exports/rule.js +41 -0
  64. package/dist/rules/no-unnamed-entry-point-exports/rule.js.map +1 -0
  65. package/dist/rules/no-unresolved-imports/rule.d.ts +3 -0
  66. package/dist/rules/no-unresolved-imports/rule.js +139 -0
  67. package/dist/rules/no-unresolved-imports/rule.js.map +1 -0
  68. package/dist/rules/no-unresolved-imports/unresolved.d.ts +3 -0
  69. package/dist/rules/no-unresolved-imports/unresolved.js +135 -0
  70. package/dist/rules/no-unresolved-imports/unresolved.js.map +1 -0
  71. package/dist/rules/no-unused-exports/rule.d.ts +3 -0
  72. package/dist/rules/no-unused-exports/rule.js +60 -0
  73. package/dist/rules/no-unused-exports/rule.js.map +1 -0
  74. package/dist/rules/no-unused-package-exports/rule.d.ts +3 -0
  75. package/dist/rules/no-unused-package-exports/rule.js +57 -0
  76. package/dist/rules/no-unused-package-exports/rule.js.map +1 -0
  77. package/dist/rules/prefer-alias-imports/alias.d.ts +6 -0
  78. package/dist/rules/prefer-alias-imports/alias.js +210 -0
  79. package/dist/rules/prefer-alias-imports/alias.js.map +1 -0
  80. package/dist/rules/prefer-alias-imports/rule.d.ts +6 -0
  81. package/dist/rules/prefer-alias-imports/rule.js +214 -0
  82. package/dist/rules/prefer-alias-imports/rule.js.map +1 -0
  83. package/dist/rules/require-node-prefix/nodePrefix.d.ts +3 -0
  84. package/dist/rules/require-node-prefix/nodePrefix.js +59 -0
  85. package/dist/rules/require-node-prefix/nodePrefix.js.map +1 -0
  86. package/dist/rules/require-node-prefix/rule.d.ts +3 -0
  87. package/dist/rules/require-node-prefix/rule.js +60 -0
  88. package/dist/rules/require-node-prefix/rule.js.map +1 -0
  89. package/dist/settings/framework.d.ts +3 -0
  90. package/dist/settings/framework.js +91 -0
  91. package/dist/settings/framework.js.map +1 -0
  92. package/dist/settings/package.d.ts +6 -0
  93. package/dist/settings/package.js +64 -0
  94. package/dist/settings/package.js.map +1 -0
  95. package/dist/settings/repo.d.ts +1 -0
  96. package/dist/settings/repo.js +6 -0
  97. package/dist/settings/repo.js.map +1 -0
  98. package/dist/settings/user.d.ts +1 -1
  99. package/dist/util/getSubpathEntry.d.ts +4 -0
  100. package/dist/util/getSubpathEntry.js +22 -0
  101. package/dist/util/getSubpathEntry.js.map +1 -0
  102. package/package.json +6 -8
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "permissions": {
3
3
  "allow": [
4
- "Bash(npm run lint:*)",
4
+ "Bash(npm i)",
5
5
  "Bash(npm run build:*)",
6
- "Bash(npx eslint:*)",
7
- "Bash(npm test:*)",
8
- "Bash(node -e:*)"
6
+ "Bash(npm run lint:*)",
7
+ "Bash(npm run test:*)",
8
+ "Bash(ln:*)"
9
9
  ]
10
10
  }
11
11
  }
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 2.2.2 (5/16/2026)
4
+
5
+ - Deprecated `eslint-plugin-fast-import` in favor of `import-integrity-lint`, a partial rewrite of Fast Import that brings first class monorepo support and Oxlint support
6
+
3
7
  ## 2.2.1 (10/13/2025)
4
8
 
5
9
  - Added missing export for `getLocFromRange`
package/README.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # eslint-plugin-fast-import
2
2
 
3
+ > [!WARNING]
4
+ > This plugin has been deprecated in favor of [Import Integrity](https://github.com/nebrius/import-integrity-lint). Import Integrity is a partial rewrite and rebrand that brings first class Oxlint support and new monorepo-specific rules. See the migration guide [on the docs site](https://nebrius.github.io/import-integrity-lint/guide/migration.html) or in [Markdown](https://github.com/nebrius/import-integrity-lint/blob/7cc026e7298ded64371c7b6772cf2c814a314c56/docs/guide/migration.md) for AI-friendly details.
5
+
3
6
  [![npm version](https://badge.fury.io/js/eslint-plugin-fast-import.svg)](https://badge.fury.io/js/eslint-plugin-fast-import) ![ci workflow](https://github.com/nebrius/eslint-plugin-fast-import/actions/workflows/ci.yml/badge.svg) [![codecov](https://codecov.io/gh/nebrius/eslint-plugin-fast-import/graph/badge.svg?token=T6O54TXTKU)](https://codecov.io/gh/nebrius/eslint-plugin-fast-import)
4
7
 
5
8
  - [Installation](#installation)
@@ -0,0 +1,2 @@
1
+ import type { AnalyzedProjectInfo } from '../types/analyzed.js';
2
+ export declare function computePackageInfo(_resolvedProjectInfo: AnalyzedProjectInfo): AnalyzedProjectInfo;
@@ -0,0 +1,4 @@
1
+ export function computePackageInfo(_resolvedProjectInfo) {
2
+ // TODO: Implement package info computation
3
+ }
4
+ //# sourceMappingURL=computePackageInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computePackageInfo.js","sourceRoot":"","sources":["../../src/module/computePackageInfo.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAChC,oBAAyC;IAEzC,2CAA2C;AAC7C,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { AnalyzedPackageInfo } from '../types/analyzed.js';
2
+ /**
3
+ * Computes cross-package import info.
4
+ */
5
+ export declare function computeRepoInfo(analyzedPackageInfos: Map<string, AnalyzedPackageInfo>): void;
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Computes cross-package import info.
3
+ */
4
+ export function computeRepoInfo(analyzedPackageInfos) {
5
+ const packageImportMap = new Map();
6
+ // Initialize the package dependencies map
7
+ for (const [, analyzedPackageInfo] of analyzedPackageInfos) {
8
+ if (analyzedPackageInfo.packageName) {
9
+ for (const [, fileDetails,] of analyzedPackageInfo.packageEntryPointExports) {
10
+ if (fileDetails.entryPointSpecifier) {
11
+ packageImportMap.set(fileDetails.entryPointSpecifier, fileDetails);
12
+ }
13
+ }
14
+ }
15
+ }
16
+ // Reset externallyImportedBy arrays. Since we don't do more intelligent cache
17
+ // updates for package info, we have to first reset externallyImportedBy
18
+ // arrays, otherwise we end up with duplicates.
19
+ for (const [, analyzedPackageInfo] of analyzedPackageInfos) {
20
+ for (const [, fileDetails] of analyzedPackageInfo.files) {
21
+ if (fileDetails.fileType !== 'code') {
22
+ continue;
23
+ }
24
+ for (const exportEntry of fileDetails.exports) {
25
+ exportEntry.externallyImportedBy = [];
26
+ }
27
+ }
28
+ }
29
+ // Mark entry points as imported in the monorepo
30
+ for (const [, analyzedPackageInfo] of analyzedPackageInfos) {
31
+ for (const [filePath, fileDetails] of analyzedPackageInfo.files) {
32
+ if (fileDetails.fileType !== 'code') {
33
+ continue;
34
+ }
35
+ // We don't include side effect imports because they don't import any
36
+ // actual exports, and thus we should make any of them as exprted
37
+ for (const importEntry of [
38
+ ...fileDetails.singleImports,
39
+ ...fileDetails.barrelImports,
40
+ ...fileDetails.dynamicImports,
41
+ ]) {
42
+ if (importEntry.resolvedModuleType !== 'thirdParty') {
43
+ continue;
44
+ }
45
+ // We can't analyze dynamic import specifiers that can't be resolve
46
+ // statically (aka moduleSpecifier is undefined), so we skip them
47
+ if (!importEntry.moduleSpecifier) {
48
+ continue;
49
+ }
50
+ // Check if this is a known package in the monorepo or not. If it's not
51
+ // then that means it's a true third party module from npm
52
+ const fileDetails = packageImportMap.get(importEntry.moduleSpecifier);
53
+ if (!fileDetails) {
54
+ continue;
55
+ }
56
+ switch (importEntry.type) {
57
+ // For single imports, we need to find the specific export so we can
58
+ // mark it as externally imported
59
+ case 'singleImport': {
60
+ for (const exportEntry of [
61
+ ...fileDetails.exports,
62
+ ...fileDetails.singleReexports,
63
+ ...fileDetails.barrelReexports,
64
+ ]) {
65
+ if (exportEntry.exportName === importEntry.importName) {
66
+ exportEntry.externallyImportedBy.push({
67
+ packageRootDir: analyzedPackageInfo.packageRootDir,
68
+ filePath,
69
+ importEntry,
70
+ });
71
+ break;
72
+ }
73
+ }
74
+ break;
75
+ }
76
+ // For barrel imports and dynamic imports, we mark all exports as externally imported
77
+ case 'dynamicImport':
78
+ case 'barrelImport': {
79
+ for (const exportEntry of [
80
+ ...fileDetails.exports,
81
+ ...fileDetails.singleReexports,
82
+ ...fileDetails.barrelReexports,
83
+ ]) {
84
+ if (!exportEntry.exportName) {
85
+ continue;
86
+ }
87
+ exportEntry.externallyImportedBy.push({
88
+ packageRootDir: analyzedPackageInfo.packageRootDir,
89
+ filePath,
90
+ importEntry,
91
+ });
92
+ }
93
+ break;
94
+ }
95
+ }
96
+ }
97
+ }
98
+ }
99
+ }
100
+ //# sourceMappingURL=computeRepoInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computeRepoInfo.js","sourceRoot":"","sources":["../../src/module/computeRepoInfo.ts"],"names":[],"mappings":"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"}
package/dist/plugin.d.ts CHANGED
@@ -63,7 +63,7 @@ declare const plugin: {
63
63
  name: string;
64
64
  };
65
65
  'prefer-alias-imports': TSESLint.RuleModule<"preferAlias" | "preferRelative", [{
66
- mode?: "relative-if-local" | "always" | undefined;
66
+ mode?: "always" | "relative-if-local" | undefined;
67
67
  minSharedPathDepth?: number | undefined;
68
68
  } | undefined], unknown, TSESLint.RuleListener> & {
69
69
  name: string;
package/dist/plugin.js CHANGED
@@ -13,6 +13,9 @@ import { noRestrictedImports } from './rules/restricted/restricted.js';
13
13
  import { noTestImportsInProd } from './rules/testInProd/testInProd.js';
14
14
  import { noUnresolvedImports } from './rules/unresolved/unresolved.js';
15
15
  import { noUnusedExports } from './rules/unused/unused.js';
16
+ import { warn } from './util/logging.js';
17
+ warn('This package is deprecated. Please migrate to "import-integrity-lint": ' +
18
+ 'https://github.com/nebrius/import-integrity-lint');
16
19
  // Helper exports
17
20
  export { getESMInfo, registerUpdateListener, isNonTestFile, getLocFromRange, } from './rules/util.js';
18
21
  // Plugin export
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export declare const preferAliasImports: import("@typescript-eslint/utils/ts-eslint").RuleModule<"preferAlias" | "preferRelative", [{
2
- mode?: "relative-if-local" | "always" | undefined;
2
+ mode?: "always" | "relative-if-local" | undefined;
3
3
  minSharedPathDepth?: number | undefined;
4
4
  } | undefined], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
5
5
  name: string;
@@ -0,0 +1,4 @@
1
+ export declare function _resetCycleMap(): void;
2
+ export declare const noCycle: import("@typescript-eslint/utils/ts-eslint").RuleModule<"noCycles", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
3
+ name: string;
4
+ };
@@ -0,0 +1,140 @@
1
+ import { InternalError } from '../../util/error.js';
2
+ import { createRule, getESMInfo, getLocFromRange, registerUpdateListener } from '../util.js';
3
+ // Map of packageRootDirs to filepaths to imports/reexports with cycle dependencies
4
+ const cycleMaps = new Map();
5
+ function checkFile(originalFilePath, currentFilePath, projectInfo, importStack) {
6
+ const fileDetails = projectInfo.files.get(currentFilePath);
7
+ /* istanbul ignore if */
8
+ if (!fileDetails) {
9
+ throw new InternalError(`Could not get file info for "${currentFilePath}"`);
10
+ }
11
+ // Non-JS files by definition can't be circilar, since they can't import JS
12
+ if (fileDetails.fileType !== 'code') {
13
+ return;
14
+ }
15
+ let cycleMap = cycleMaps.get(projectInfo.packageRootDir);
16
+ if (!cycleMap) {
17
+ cycleMap = new Map();
18
+ cycleMaps.set(projectInfo.packageRootDir, cycleMap);
19
+ }
20
+ // Now check if this file is part of a cycle
21
+ const firstInstanceIndex = importStack.indexOf(currentFilePath);
22
+ if (firstInstanceIndex !== -1) {
23
+ const filesInCycle = importStack.slice(firstInstanceIndex);
24
+ for (let i = 0; i < filesInCycle.length; i++) {
25
+ const currentFile = filesInCycle[i];
26
+ const nextFile = i === filesInCycle.length - 1 ? filesInCycle[0] : filesInCycle[i + 1];
27
+ const currentCycleMapEntry = cycleMap.get(currentFile);
28
+ if (!currentCycleMapEntry) {
29
+ throw new InternalError(`Cycle map entry is undefined for ${currentFile}`);
30
+ }
31
+ currentCycleMapEntry.add(nextFile);
32
+ }
33
+ // Stop traversing since we'd otherwise traverse forever
34
+ return;
35
+ }
36
+ // Otherwise, check if we've already analyzed this file
37
+ if (cycleMap.has(currentFilePath)) {
38
+ return;
39
+ }
40
+ // Initialize this file
41
+ cycleMap.set(currentFilePath, new Set());
42
+ // If this wasn't a cycle, then keep exploring
43
+ for (const importEntry of [
44
+ ...fileDetails.singleImports,
45
+ ...fileDetails.singleReexports,
46
+ ...fileDetails.barrelImports,
47
+ ...fileDetails.singleReexports,
48
+ ...fileDetails.barrelReexports,
49
+ ]) {
50
+ if (
51
+ // We allow type imports to be cyclicle since they are compiled out
52
+ ('isTypeImport' in importEntry && importEntry.isTypeImport) ||
53
+ ('isTypeReexport' in importEntry && importEntry.isTypeReexport) ||
54
+ importEntry.resolvedModuleType !== 'firstPartyCode') {
55
+ continue;
56
+ }
57
+ checkFile(originalFilePath, importEntry.resolvedModulePath, projectInfo, [
58
+ ...importStack,
59
+ currentFilePath,
60
+ ]);
61
+ }
62
+ return;
63
+ }
64
+ registerUpdateListener((root) => {
65
+ cycleMaps.delete(root);
66
+ });
67
+ // This is only used in tests, since update listeners aren't guaranteed to
68
+ // be called on each run
69
+ // eslint-disable-next-line fast-import/no-unused-exports
70
+ export function _resetCycleMap() {
71
+ cycleMaps.clear();
72
+ }
73
+ export const noCycle = createRule({
74
+ name: 'no-cycle',
75
+ meta: {
76
+ docs: {
77
+ description: 'Ensures that there are no cycles in imports/reexports',
78
+ },
79
+ schema: [],
80
+ fixable: undefined,
81
+ type: 'problem',
82
+ messages: {
83
+ noCycles: 'Imports/reexports cannot form a cycle',
84
+ },
85
+ },
86
+ defaultOptions: [],
87
+ create(context) {
88
+ const esmInfo = getESMInfo(context);
89
+ // No project info means this file wasn't found as part of the project, e.g.
90
+ // because it's ignored
91
+ /* istanbul ignore if */
92
+ if (!esmInfo) {
93
+ return {};
94
+ }
95
+ const { fileInfo, projectInfo } = esmInfo;
96
+ /* istanbul ignore if */
97
+ if (fileInfo.fileType !== 'code') {
98
+ return {};
99
+ }
100
+ let cycleMap = cycleMaps.get(projectInfo.packageRootDir);
101
+ if (!cycleMap) {
102
+ cycleMap = new Map();
103
+ cycleMaps.set(projectInfo.packageRootDir, cycleMap);
104
+ }
105
+ let cycleImports = cycleMap.get(context.filename);
106
+ if (!cycleImports) {
107
+ checkFile(context.filename, context.filename, projectInfo, []);
108
+ cycleImports = cycleMap.get(context.filename);
109
+ }
110
+ /* istanbul ignore if */
111
+ if (!cycleImports) {
112
+ throw new InternalError(`Cycle list is undefined for ${context.filename}`);
113
+ }
114
+ // Dedupe imports, since we mark cycle imports on a per-file basis, not on a
115
+ // per-import basis
116
+ const visitedImports = new Set();
117
+ for (const cycleImport of cycleImports) {
118
+ for (const importEntry of [
119
+ ...fileInfo.singleImports,
120
+ ...fileInfo.singleReexports,
121
+ ...fileInfo.barrelImports,
122
+ ...fileInfo.singleReexports,
123
+ ...fileInfo.barrelReexports,
124
+ ]) {
125
+ if (importEntry.resolvedModuleType === 'firstPartyCode' &&
126
+ importEntry.resolvedModulePath === cycleImport &&
127
+ !visitedImports.has(importEntry.resolvedModulePath)) {
128
+ visitedImports.add(importEntry.resolvedModulePath);
129
+ context.report({
130
+ messageId: 'noCycles',
131
+ loc: getLocFromRange(context, importEntry.statementNodeRange),
132
+ });
133
+ continue;
134
+ }
135
+ }
136
+ }
137
+ return {};
138
+ },
139
+ });
140
+ //# sourceMappingURL=cycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cycle.js","sourceRoot":"","sources":["../../../src/rules/no-cycle/cycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function _testOnlyResetCycleMap(): void;
2
+ export declare const noCycle: import("@typescript-eslint/utils/ts-eslint").RuleModule<"noCycles", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
3
+ name: string;
4
+ };